Browse Source

Utility function to create an Expression from an LTL formula represented as a jltl2ba SimpleLTL object (i.e., the reverse of Expression.convertForJltl2ba()).

git-svn-id: https://www.prismmodelchecker.org/svn/prism/prism/trunk@10538 bbc10eb1-c90d-0410-af57-cb519fbb1720
master
Dave Parker 10 years ago
parent
commit
fe305344df
  1. 39
      prism/src/parser/ast/Expression.java

39
prism/src/parser/ast/Expression.java

@ -26,9 +26,11 @@
package parser.ast; package parser.ast;
import jltl2ba.SimpleLTL;
import parser.*; import parser.*;
import parser.visitor.*; import parser.visitor.*;
import prism.ModelType; import prism.ModelType;
import prism.PrismException;
import prism.PrismLangException; import prism.PrismLangException;
import parser.type.*; import parser.type.*;
@ -899,6 +901,43 @@ public abstract class Expression extends ASTElement
return expr; return expr;
} }
/**
* Create a property expression (an LTL formula) from the classes used by the jltl2ba (and jltl2dstar) libraries.
*/
public static Expression createFromJltl2ba(SimpleLTL ltl) throws PrismException
{
switch (ltl.kind) {
case AND:
return Expression.And(createFromJltl2ba(ltl.left), createFromJltl2ba(ltl.right));
case AP:
return new ExpressionLabel(ltl.ap);
case EQUIV:
return Expression.Iff(createFromJltl2ba(ltl.left), createFromJltl2ba(ltl.right));
case FALSE:
return Expression.False();
case FINALLY:
return new ExpressionTemporal(ExpressionTemporal.P_F, null, createFromJltl2ba(ltl.right));
case GLOBALLY:
return new ExpressionTemporal(ExpressionTemporal.P_G, null, createFromJltl2ba(ltl.right));
case IMPLIES:
return Expression.Implies(createFromJltl2ba(ltl.left), createFromJltl2ba(ltl.right));
case NEXT:
return new ExpressionTemporal(ExpressionTemporal.P_X, null, createFromJltl2ba(ltl.right));
case NOT:
return Expression.Not(createFromJltl2ba(ltl.left));
case OR:
return Expression.Or(createFromJltl2ba(ltl.left), createFromJltl2ba(ltl.right));
case RELEASE:
return new ExpressionTemporal(ExpressionTemporal.P_R, createFromJltl2ba(ltl.left), createFromJltl2ba(ltl.right));
case TRUE:
return Expression.True();
case UNTIL:
return new ExpressionTemporal(ExpressionTemporal.P_U, createFromJltl2ba(ltl.left), createFromJltl2ba(ltl.right));
default:
throw new PrismException("Cannot convert jltl2ba formula " + ltl);
}
}
} }
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
Loading…
Cancel
Save