From 6525146264c6bf0b94f557e2bd3db26dab75f4c8 Mon Sep 17 00:00:00 2001 From: Dave Parker Date: Tue, 17 Mar 2020 15:11:42 +0000 Subject: [PATCH] Bugfix (and typo fix) in results testing for parametric mode. If the result is a single parameter (p in the included test case), findAllConstants returns a new Expression, not a modified one. --- .../verify/param/param-simple.prism | 16 ++++++++++++++++ .../verify/param/param-simple.prism.props | 5 +++++ .../verify/param/param-simple.prism.props.args | 1 + prism/src/param/ParamResult.java | 2 +- 4 files changed, 23 insertions(+), 1 deletion(-) create mode 100644 prism-tests/functionality/verify/param/param-simple.prism create mode 100644 prism-tests/functionality/verify/param/param-simple.prism.props create mode 100644 prism-tests/functionality/verify/param/param-simple.prism.props.args diff --git a/prism-tests/functionality/verify/param/param-simple.prism b/prism-tests/functionality/verify/param/param-simple.prism new file mode 100644 index 00000000..e4d5fbf9 --- /dev/null +++ b/prism-tests/functionality/verify/param/param-simple.prism @@ -0,0 +1,16 @@ +// Trivial test of parametric model checking +// (also tests a bugfix in the results testing when the result is just a lone parameter) + +dtmc + +const double p; + +module M + + // local state + s : [0..7] init 0; + + [] s=0 -> p : (s'=1) + 1-p : (s'=2); + [] s>0 -> true; + +endmodule diff --git a/prism-tests/functionality/verify/param/param-simple.prism.props b/prism-tests/functionality/verify/param/param-simple.prism.props new file mode 100644 index 00000000..0ed5ab32 --- /dev/null +++ b/prism-tests/functionality/verify/param/param-simple.prism.props @@ -0,0 +1,5 @@ +// RESULT: p +P=? [ F s=1 ]; + +// RESULT: 1-p +P=? [ F s=2 ]; diff --git a/prism-tests/functionality/verify/param/param-simple.prism.props.args b/prism-tests/functionality/verify/param/param-simple.prism.props.args new file mode 100644 index 00000000..7210805c --- /dev/null +++ b/prism-tests/functionality/verify/param/param-simple.prism.props.args @@ -0,0 +1 @@ +-param p diff --git a/prism/src/param/ParamResult.java b/prism/src/param/ParamResult.java index 931dff01..5e738f86 100644 --- a/prism/src/param/ParamResult.java +++ b/prism/src/param/ParamResult.java @@ -148,7 +148,7 @@ public class ParamResult for (String p : modelBuilder.getParameterNames()) { constantList.addConstant(new ExpressionIdent(p), null, TypeDouble.getInstance()); } - exprExpected.findAllConstants(constantList); + exprExpected = (Expression) exprExpected.findAllConstants(constantList); exprExpected.typeCheck(); // replace constants in the expression that have a value