Browse Source

(exact / parametric) ParamModelChecker: fix missing support for formula references in properties

E.g., 'formula foo = (state = 1)' in model file, use in property 'P=?[ F foo ]'.

Analogous to how it's done in explicit / symbolic StateModelCheckers.
master
Joachim Klein 8 years ago
parent
commit
1801fcba70
  1. 7
      prism/src/param/ParamModelChecker.java

7
prism/src/param/ParamModelChecker.java

@ -68,6 +68,7 @@ import parser.ast.ExpressionExists;
import parser.ast.ExpressionFilter; import parser.ast.ExpressionFilter;
import parser.ast.ExpressionFilter.FilterOperator; import parser.ast.ExpressionFilter.FilterOperator;
import parser.ast.ExpressionForAll; import parser.ast.ExpressionForAll;
import parser.ast.ExpressionFormula;
import parser.ast.ExpressionFunc; import parser.ast.ExpressionFunc;
import parser.ast.ExpressionLabel; import parser.ast.ExpressionLabel;
import parser.ast.ExpressionLiteral; import parser.ast.ExpressionLiteral;
@ -372,6 +373,12 @@ final public class ParamModelChecker extends PrismComponent
res = checkExpressionBinaryOp(model, (ExpressionBinaryOp) expr, needStates); res = checkExpressionBinaryOp(model, (ExpressionBinaryOp) expr, needStates);
} else if (expr instanceof ExpressionLabel) { } else if (expr instanceof ExpressionLabel) {
res = checkExpressionLabel(model, (ExpressionLabel) expr, needStates); res = checkExpressionLabel(model, (ExpressionLabel) expr, needStates);
} else if (expr instanceof ExpressionFormula) {
// This should have been defined or expanded by now.
if (((ExpressionFormula) expr).getDefinition() != null)
res = checkExpression(model, ((ExpressionFormula) expr).getDefinition(), needStates);
else
throw new PrismException("Unexpanded formula \"" + ((ExpressionFormula) expr).getName() + "\"");
} else if (expr instanceof ExpressionProp) { } else if (expr instanceof ExpressionProp) {
res = checkExpressionProp(model, (ExpressionProp) expr, needStates); res = checkExpressionProp(model, (ExpressionProp) expr, needStates);
} else if (expr instanceof ExpressionFilter) { } else if (expr instanceof ExpressionFilter) {

Loading…
Cancel
Save