Content deleted Content added
No edit summary |
No edit summary |
||
Line 5:
== Syntax of CTL ==
The [[Regular Language|language]] of [[well
:<math>\begin{align}
Line 14:
\end{align}</math>
where <math>p</math> ranges over a set of [[atomic formula]]s. It is not necessary to use all connectives
<math>\{\neg, \land, \mbox{AX}, \mbox{AU}, \mbox{EU}\}</math> comprises a complete set of connectives, and the others can be defined using them.
*<math>\mbox{A}</math> means 'along All paths' ''(
*<math>\mbox{E}</math> means 'along at least (there Exists) one path' ''(possibly)''
Line 28:
:<math>\mbox{EF }\big(r \mbox{ U } q\big) </math>
The problem with this string is that <math>U</math> can occur only when paired with an <math>A</math> or an <math>E</math>. <!-- TODO: explain it is evaluated over multiple paths /// here is a copy-paste from the LTL page: build up from proposition variables p1,p2,..., LTL formulas are generally evaluated over paths and a position on that path. A LTL formula as such is satisfied if and only if it is satisfied for position 0 on that path. -->
CTL uses [[First-order logic#Vocabulary|atomic propositions]] as its building blocks to make statements about the states of a system. <!-- TODO: give an example of an atomic proposition. --> ==Operators==
Line 34 ⟶ 36:
===Logical operators===
The [[Logical connective|logical operators]] are the usual ones: ¬, ∨, ∧, ⇒ and ⇔. 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'''
**'''E'''
* Path-specific quantifiers
**'''X''' ''φ'' – Ne'''x'''t: ''φ'' has to hold at the next state (this operator is sometimes noted '''N''' instead of '''X''').
Line 51 ⟶ 53:
===Minimal set of operators===
In CTL there
Some of the transformations used for temporal operators are:
Line 67 ⟶ 69:
===Definition===
CTL formulae are interpreted over [[
:with <math>s \in S, \phi \in F</math> where F is the set of [[Well formed formula|wffs]] over the [[Regular Language|language]] of <math>\mathcal{M}</math>.
Line 96 ⟶ 98:
It can be seen that A and E are duals, being universal and existential computation path quantifiers respectively:
<math>\neg A\
Furthermore, so are G and F.
Hence an instance of [[De Morgan's
:<math>\neg AF\phi \equiv EG\neg\phi</math>
:<math>\neg EF\phi \equiv AG\neg\phi</math>
Line 107 ⟶ 109:
It can be shown using such identities that a subset of the CTL temporal connectives is adequate if it contains <math>EU</math>, at least one of <math>\{AX,EX\}</math> and at least one of <math>\{EG,AF,AU\}</math> and the boolean connectives.
The important equivalences below are called the '''expansion laws'''; they allow to unfold the verification of a CTL connective towards its successors in time.
:<math>AG\phi \equiv \phi \land AX AG \phi</math>
:<math>EG\phi \equiv \phi \land EX EG \phi</math>
Line 125 ⟶ 127:
:"It's always possible (AF) that I will suddenly start liking chocolate for the rest of time." (Note: not just the rest of my life, since my life is finite, while '''G''' is infinite).
*'''EG'''.'''AF'''.P
:"
The two following examples show the difference between CTL and CTL*, as they allow for the until operator to not be qualified with any path operator ('''A''' or '''E'''):
Line 136 ⟶ 138:
==Relations with other logics==
<!-- CTL is a subset of CTL* -->
Computation tree logic (CTL) is a subset of CTL* as well as of the [[modal mu calculus|modal μ calculus]]. CTL is also a fragment of Alur, Henzinger and Kupferman's [[
<!-- CTL is complementary to LTL -->
Computation tree logic (CTL) and [[
*'''FG'''.P exists in LTL but not in CTL.
*'''AG'''(P<math>\Rightarrow</math>(('''EX'''.Q)<math>\land</math>('''EX'''¬Q))) and '''AG.EF'''.P exist in CTL but not in LTL.
== Extensions ==
CTL has been extended with second
* the tree semantics. We label nodes of the computation tree. QCTL* = QCTL = [[monadic second-order logic|MSO]] over trees. Model checking and satisfiability are tower
* the structure semantics. We label states. QCTL* = QCTL = MSO over
A reduction from the model
==See also==
*[[Probabilistic CTL]]
*[[Fair
*[[Linear temporal logic]]
|