Given a model (the symbolic representation of the statespace and the transition relation) build an object able to symbolically compute the set of states satistfying a formula (CTL, Fair CTL, wip : ACTL and ARCTL).
Given a model (the symbolic representation of the statespace and the transition relation) build an object able to symbolically compute the set of states satistfying an (FAR)CTL formula.
-`pyddd`[https://github.com/fpom/pyddd](https://github.com/fpom/pyddd)(Python binding for libDDD)
-`pytl`[https://github.com/fpom/pytl](https://github.com/fpom/pytl)(Python parser and translator for varied temporal logics)
## Usage
The symbolic representation of the model must be :
- a sdd for the state space (see [pyddd](https://github.com/fpom/pyddd))
- a shom for the precedence relation (see [pyddd](https://github.com/fpom/pyddd))
- a shom (for CTL) or a dict linking list of label strings to shoms (for (F)ARCTL) for the precedence relation (see [pyddd](https://github.com/fpom/pyddd))
Instantiated with such symbolic representation, the object can be called with the method check on a formula (represented by a string which will be parsed by [pytl](https://github.com/fpom/pytl) or by a `pytl.Phi` object).
The method `check` returns the sdd representing the states that satisfy the formula.
...
...
@@ -18,72 +18,52 @@ The method `check` returns the sdd representing the states that satisfy the form
Example :
from pymc import CTL_model_checker, FairCTL_model_checker
The syntax of FARCTL formula is defined by [pytl](https://github.com/fpom/pytl) :
phi ::= quantifier unarymod phi
| quantifier phi binarymod phi
| phi boolop phi
phi ::= "(" phi ")"
| "~" phi
| "(" phi ")"
| atom
quantifier ::= "A" | "E"
unarymod ::= "X" | "F" | "G"
boolop ::= "&" | "|" | "=>" | "<=>"
binarymod ::= "U" | "R"
atom ::= /\w+|"[^"]+"|'[^']+'/
### Fair CTL
Implement the algorithm of Symbolic Model Checking, McMillan 1993, section 6.4 and Symbolic model checking: 1020 states and beyond, Burch et al 1992, section 6.2.
The evaluation of the formula is restricter to the trajectoriers verifying fairness constraints of the form `AND([GF f for f in fairness])`.
An additional argument must be given at initialization, representing the fairness constraints :
- a list of strings, Phi objects or sdd, representing the list of fairness constraints : [f1, f2,...]
- a single string, Phi or sdd, representing a single fairness constraint
### ARCTL
The syntax of formulae is described at [pytl](https://github.com/fpom/pytl) :