Computation tree logic: Difference between revisions

Content deleted Content added
m Operators: html math
Line 34:
===Logical operators===
 
The [[Logical connective|logical operators]] are the usual ones: <math>\neg&not;,\&or;,\&and;,\Rightarrow</math>&rArr; and <math>\Leftrightarrow</math>&lArr;. Along with these operators CTL formulas can also make use of the boolean constants [[Truth|true]] and [[False (logic)|false]].
 
===Temporal operators===
The temporal operators are the following:
* Quantifiers over paths
**'''A''' <math>\phi</math>''φ''&nbsp;&ndash; '''A'''ll: <math>\phi</math>''φ'' has to hold on all paths starting from the current state.
**'''E''' <math>\phi</math>''φ''&nbsp;&ndash; '''E'''xists: there exists at least one path starting from the current state where <math>\phi</math>''φ'' holds.
* Path-specific quantifiers
**'''X''' <math>\phi</math>''φ''&nbsp;&ndash; Ne'''x'''t: <math>\phi</math>''φ'' has to hold at the next state (this operator is sometimes noted '''N''' instead of '''X''').
**'''G''' <math>\phi</math>''φ''&nbsp;&ndash; '''G'''lobally: <math>\phi</math>''φ'' has to hold on the entire subsequent path.
**'''F''' <math>\phi</math>''φ''&nbsp;&ndash; '''F'''inally: <math>\phi</math>''φ'' eventually has to hold (somewhere on the subsequent path).
**<math>\phi</math>''φ'' '''U''' <math>\psi</math>''ψ''&nbsp;&ndash; '''U'''ntil: <math>\phi</math>''φ'' has to hold ''at least'' until at some position <math>\psi</math>''ψ'' holds. This implies that <math>\psi</math>''ψ'' will be verified in the future.
**<math>\phi</math>''φ'' '''W''' <math>\psi</math>''ψ''&nbsp;&ndash; '''W'''eak until: <math>\phi</math>''φ'' has to hold until <math>\psi</math>''ψ'' holds. The difference with '''U''' is that there is no guarantee that <math>\psi</math>''ψ'' will ever be verified. The '''W''' operator is sometimes called "unless".
 
In [[CTL*]], the temporal operators can be freely mixed. In CTL, the operator must always be grouped in two: one path operator followed by a state operator. See the examples below. [[CTL*]] is strictly more expressive than CTL.
 
===Minimal set of operators===
In CTL there is a minimal set of operators. All CTL formulas can be transformed to use only those operators. This is useful in [[model checking]]. One minimal set of operators is: {true, <math>\&or;, \neg</math>&not;, '''EG''', '''EU''', '''EX'''}.
 
Some of the transformation used for temporal operator are:
*'''EF'''<math>\phi</math>''φ'' == '''E'''[true'''U'''(<math>\phi</math>''φ'')] ( because '''F'''<math>\phi</math>''φ'' == [true'''U'''(<math>\phi</math>''φ'')] )
*'''AX'''<math>\phi</math>''φ'' == <math>\neg</math>&not;'''EX'''(<math>\neg</math><math>\phi</math>&not;''φ'')
*'''AG'''<math>\phi</math>''φ'' == <math>\neg</math>&not;'''EF'''(<math>\neg</math><math>\phi</math>&not;''φ'') == <math>\neg</math>&not; '''E'''[true'''U'''(<math>\neg</math><math>\phi</math>&not;''φ'')]
*'''AF'''<math>\phi</math>''φ'' == '''A'''[true'''U'''<math>\phi</math>''φ''] == <math>\neg</math>&not;'''EG'''(<math>\neg</math><math>\phi</math>&not;''φ'')
*'''A'''[<math>\phi</math>''φ'''''U'''<math>\psi</math>''ψ''] == <math>\neg</math>&not;( '''E'''[(<math>\neg</math><math>\psi</math>&not;''ψ'')'''U'''<math>\neg</math>&not;(<math>\phi</math><math>\''φ''&or</math><math>\psi</math>;''ψ'')] <math>\&or</math>; '''EG'''(<math>\neg</math><math>\psi</math>&not;''ψ'') )
<!---
*'''F''' <math>\phi</math>''φ'' = '''true''' '''U''' <math>\phi</math>''φ''
*'''G''' <math>\phi</math>''φ'' = <math>\neg</math>&not; '''F''' <math>\neg</math><math>\phi</math>&not;''φ''
--->