Charged current: Difference between revisions

From formulasearchengine
Jump to navigation Jump to search
No edit summary
 
en>Addbot
m Bot: Migrating 3 interwiki links, now provided by Wikidata on d:q4115391
 
Line 1: Line 1:
Friends call him Royal Seyler. Managing people is what I do in my day occupation. Alabama has usually been his home. The preferred pastime for him and his kids is to drive and now he is attempting to earn cash with it.<br><br>Also visit my webpage :: [http://Vozdemujer.net/index.php?mod=users&action=view&id=5527 http://Vozdemujer.net]
'''CTL*''' is a superset of [[computational tree logic]] (CTL) and [[linear temporal logic]] (LTL). It freely combines path quantifiers and temporal operators. Like CTL, CTL* is a branching time logic. The formal semantics of CTL* formulae are defined with respect to a given [[Kripke structure]].
 
== History ==
 
LTL has been proposed for the verification of computer programs first by [[Amir Pnueli]] in 1977. Four years later in 1981 [[E. M. Clarke]] and [[E. A. Emerson]] invented CTL and CTL model checking. CTL* was defined by [[E. A. Emerson]] and [[Joseph Halpern|Joseph Y. Halpern]] in 1986.
 
Interestingly, CTL and LTL have been developed independently before CTL*. Both sublogics have become very important in the [[model checking]] community, while CTL* is not yet of practical importance. This is surprising because the [[computational complexity]] of model checking in CTL* is not worse than that of LTL: they both lie in [[PSPACE]].
 
== Syntax ==
The [[formal language|language]] of [[well formed formula|well-formed CTL* formulae]] is generated by the following unambiguous (wrt bracketing) [[context-free grammar]]:
 
:<math>\Phi::=\bot  \mid \top  \mid p \mid (\neg\Phi) \mid (\Phi\and\Phi) \mid (\Phi\or\Phi) \mid
(\Phi\Rightarrow\Phi) \mid (\Phi\Leftrightarrow\Phi) \mid A\phi \mid E\phi</math>
:<math>\phi::=\Phi \mid (\neg\phi) \mid (\phi\and\phi) \mid (\phi\or\phi) \mid
(\phi\Rightarrow\phi) \mid (\phi\Leftrightarrow\phi) \mid X\phi \mid F\phi \mid G\phi \mid [\phi U \phi]
</math>
 
where <math>p</math> ranges over a set of [[atomic formula]]s. Valid CTL*-formulae are built using the nonterminal <math>\Phi</math>. These formulae are called ''state formulae'', while those created by the symbol <math>\phi</math> are called ''path formulae''. (The above grammar contains some redundancies; for example <math>\Phi\or\Phi</math> as well as implication and equivalence can be defined as just for [[Boolean algebras]] (or [[propositional logic]]) from negation and conjunction, and the temporal operators '''X''' and '''U''' are [[Temporal logic#Temporal operators|sufficient to define the other two]].)
 
The operators basically are the same as in [[Computation tree logic#Operators|CTL]]. However, in CTL, every temporal operator (<math>X, F, G, U</math>) has to be directly preceded by a quantifier, while in  CTL* this is not required. The universal path quantifier may be defined in CTL* in the same way as for classical [[predicate calculus]] <math>A\phi = \neg E \neg \phi</math>, although this in not possible in the CTL fragment.
 
=== Examples of formulae ===
 
* CTL* formula that is neither in LTL or in CTL: <math>EX(p) \and AFG(p)</math>
* LTL formula that is not in CTL: <math>\ AFG(p)</math>
* CTL formula that is not in LTL: <math>\ EX(p)</math>
* CTL* formula that is in CTL and LTL: <math>\ AG(p)</math>
 
Remark: When taking LTL as subset of CTL*, any LTL formula is implicitly prefixed with the universal path quantifier <math>\ A</math>
 
== Semantics ==
The semantics of CTL* are defined with respect to some [[Kripke structure]]. As the names imply, state formulae are interpreted with respect to the states of this structure, while path formulae are interpreted over paths on it.
 
=== State formulae ===
If a state <math>s</math> of the Kripke structure satisfies a state formula <math>\Phi</math> it is denoted <math>s\models\Phi</math>. This relation is defined inductively as follows:
 
# <math>\Big( (\mathcal{M}, s) \models \top \Big) \land \Big( (\mathcal{M}, s) \not\models \bot \Big)</math>
# <math>\Big( (\mathcal{M}, s) \models p \Big) \Leftrightarrow \Big( p \in L(s) \Big)</math>
# <math>\Big( (\mathcal{M}, s) \models \neg\Phi \Big) \Leftrightarrow \Big( (\mathcal{M}, s) \not\models \Phi \Big)</math>
# <math>\Big( (\mathcal{M}, s) \models \Phi_1 \land \Phi_2 \Big) \Leftrightarrow \Big( \big((\mathcal{M}, s) \models \Phi_1 \big) \land \big((\mathcal{M}, s) \models \Phi_2 \big) \Big)</math>
# <math>\Big( (\mathcal{M}, s) \models \Phi_1 \lor \Phi_2 \Big) \Leftrightarrow \Big( \big((\mathcal{M}, s) \models \Phi_1 \big) \lor \big((\mathcal{M}, s) \models \Phi_2 \big) \Big)</math>
# <math>\Big( (\mathcal{M}, s) \models \Phi_1 \Rightarrow \Phi_2 \Big) \Leftrightarrow \Big( \big((\mathcal{M}, s) \not\models \Phi_1 \big) \lor \big((\mathcal{M}, s) \models \Phi_2 \big) \Big)</math>
# <math>\bigg( (\mathcal{M}, s) \models \Phi_1 \Leftrightarrow \Phi_2 \bigg) \Leftrightarrow \bigg( \Big( \big((\mathcal{M}, s) \models \Phi_1 \big) \land \big((\mathcal{M}, s) \models \Phi_2 \big) \Big) \lor \Big( \neg \big((\mathcal{M}, s) \models \Phi_1 \big) \land \neg \big((\mathcal{M}, s) \models \Phi_2 \big) \Big) \bigg)</math>
# <math>\Big( (\mathcal{M}, s) \models A\phi \Big) \Leftrightarrow \Big(\pi\models\phi</math> for all paths <math>\ \pi</math> starting in <math>s\Big)</math>
# <math>\Big( (\mathcal{M}, s) \models E\phi \Big) \Leftrightarrow \Big(\pi\models\phi</math> for some path <math>\ \pi</math> starting in <math>s\Big)</math>
 
=== Path formulae ===
The satisfaction relation <math>\pi\models\phi</math> for path formulae <math>\ \phi</math> and a path <math>\pi = s_0 \to s_1 \to \cdots</math> is also defined inductively. For this, let <math>\ \pi[n]</math> denote the sub-path <math>s_n \to s_{n+1} \to \cdots</math>:
 
# <math>\Big( \pi \models \Phi \Big) \Leftrightarrow \Big((\mathcal{M}, s_0) \models \Phi\Big)</math>
# <math>\Big( \pi \models \neg\phi \Big) \Leftrightarrow \Big( \pi \not\models \phi \Big)</math>
# <math>\Big( \pi \models \phi_1 \land \phi_2 \Big) \Leftrightarrow \Big( \big(\pi \models \phi_1 \big) \land \big(\pi \models \phi_2 \big) \Big)</math>
# <math>\Big( \pi \models \phi_1 \lor \phi_2 \Big) \Leftrightarrow \Big( \big(\pi \models \phi_1 \big) \lor \big(\pi \models \phi_2 \big) \Big)</math>
# <math>\Big( \pi \models \phi_1 \Rightarrow \phi_2 \Big) \Leftrightarrow \Big( \big(\pi \not\models \phi_1 \big) \lor \big(\pi \models \phi_2 \big) \Big)</math>
# <math>\bigg( \pi \models \phi_1 \Leftrightarrow \phi_2 \bigg) \Leftrightarrow \bigg( \Big( \big(\pi \models \phi_1 \big) \land \big(\pi \models \phi_2 \big) \Big) \lor \Big( \neg \big(\pi \models \phi_1 \big) \land \neg \big(\pi \models \phi_2 \big) \Big) \bigg)</math>
# <math>\Big( \pi \models X\phi \Big) \Leftrightarrow \Big( \pi[1] \models \phi \Big)</math>
# <math>\Big( \pi \models F\phi \Big) \Leftrightarrow \Big( \exists n\geqslant 0: \pi[n] \models \phi \Big)</math>
# <math>\Big( \pi \models G\phi \Big) \Leftrightarrow \Big( \forall n\geqslant 0: \pi[n] \models \phi \Big)</math>
# <math>\Big( \pi \models [\phi_1U\phi_2] \Big) \Leftrightarrow \Big( \exists n\geqslant 0: \big(\pi[n] \models \phi_2 \land \forall 0\leqslant k < n:~ \pi[k] \models \phi_1 \big)\Big)</math>
 
== See also ==
 
* [[Temporal logic]]
* [[Kripke structure]]
* [[Model checking]]
* [[Reo Coordination Language]]
 
== References ==
 
* [[Amir Pnueli]]: The temporal logic of programs. Proceedings of the 18th Annual Symposium on Foundations of Computer Science (FOCS), 1977, 46–57. DOI= 10.1109/SFCS.1977.32
* [[E. Allen Emerson]], [[Joseph Halpern|Joseph Y. Halpern]]: "Sometimes" and "not never" revisited: on branching versus linear time temporal logic. J. ACM 33, 1 (Jan. 1986), 151–178. DOI= http://doi.acm.org/10.1145/4904.4999
* Ph. Schnoebelen: The Complexity of Temporal Logic Model Checking. Advances in Modal Logic 2002: 393–436
 
== External links ==
*[http://www.inf.unibz.it/~artale/FM/slide4.pdf CTL Teaching slides] of professor [[Alessandro Artale]] at the [[Free University of Bozen-Bolzano]]
 
[[Category:Logic in computer science]]
[[Category:Temporal logic]]

Latest revision as of 19:20, 2 March 2013

CTL* is a superset of computational tree logic (CTL) and linear temporal logic (LTL). It freely combines path quantifiers and temporal operators. Like CTL, CTL* is a branching time logic. The formal semantics of CTL* formulae are defined with respect to a given Kripke structure.

History

LTL has been proposed for the verification of computer programs first by Amir Pnueli in 1977. Four years later in 1981 E. M. Clarke and E. A. Emerson invented CTL and CTL model checking. CTL* was defined by E. A. Emerson and Joseph Y. Halpern in 1986.

Interestingly, CTL and LTL have been developed independently before CTL*. Both sublogics have become very important in the model checking community, while CTL* is not yet of practical importance. This is surprising because the computational complexity of model checking in CTL* is not worse than that of LTL: they both lie in PSPACE.

Syntax

The language of well-formed CTL* formulae is generated by the following unambiguous (wrt bracketing) context-free grammar:

Φ::=p(¬Φ)(ΦΦ)(ΦΦ)(ΦΦ)(ΦΦ)AϕEϕ
ϕ::=Φ(¬ϕ)(ϕϕ)(ϕϕ)(ϕϕ)(ϕϕ)XϕFϕGϕ[ϕUϕ]

where p ranges over a set of atomic formulas. Valid CTL*-formulae are built using the nonterminal Φ. These formulae are called state formulae, while those created by the symbol ϕ are called path formulae. (The above grammar contains some redundancies; for example ΦΦ as well as implication and equivalence can be defined as just for Boolean algebras (or propositional logic) from negation and conjunction, and the temporal operators X and U are sufficient to define the other two.)

The operators basically are the same as in CTL. However, in CTL, every temporal operator (X,F,G,U) has to be directly preceded by a quantifier, while in CTL* this is not required. The universal path quantifier may be defined in CTL* in the same way as for classical predicate calculus Aϕ=¬E¬ϕ, although this in not possible in the CTL fragment.

Examples of formulae

  • CTL* formula that is neither in LTL or in CTL: EX(p)AFG(p)
  • LTL formula that is not in CTL: AFG(p)
  • CTL formula that is not in LTL: EX(p)
  • CTL* formula that is in CTL and LTL: AG(p)

Remark: When taking LTL as subset of CTL*, any LTL formula is implicitly prefixed with the universal path quantifier A

Semantics

The semantics of CTL* are defined with respect to some Kripke structure. As the names imply, state formulae are interpreted with respect to the states of this structure, while path formulae are interpreted over paths on it.

State formulae

If a state s of the Kripke structure satisfies a state formula Φ it is denoted sΦ. This relation is defined inductively as follows:

  1. ((,s))((,s)⊭)
  2. ((,s)p)(pL(s))
  3. ((,s)¬Φ)((,s)⊭Φ)
  4. ((,s)Φ1Φ2)(((,s)Φ1)((,s)Φ2))
  5. ((,s)Φ1Φ2)(((,s)Φ1)((,s)Φ2))
  6. ((,s)Φ1Φ2)(((,s)⊭Φ1)((,s)Φ2))
  7. ((,s)Φ1Φ2)((((,s)Φ1)((,s)Φ2))(¬((,s)Φ1)¬((,s)Φ2)))
  8. ((,s)Aϕ)(πϕ for all paths π starting in s)
  9. ((,s)Eϕ)(πϕ for some path π starting in s)

Path formulae

The satisfaction relation πϕ for path formulae ϕ and a path π=s0s1 is also defined inductively. For this, let π[n] denote the sub-path snsn+1:

  1. (πΦ)((,s0)Φ)
  2. (π¬ϕ)(π⊭ϕ)
  3. (πϕ1ϕ2)((πϕ1)(πϕ2))
  4. (πϕ1ϕ2)((πϕ1)(πϕ2))
  5. (πϕ1ϕ2)((π⊭ϕ1)(πϕ2))
  6. (πϕ1ϕ2)(((πϕ1)(πϕ2))(¬(πϕ1)¬(πϕ2)))
  7. (πXϕ)(π[1]ϕ)
  8. (πFϕ)(n0:π[n]ϕ)
  9. (πGϕ)(n0:π[n]ϕ)
  10. (π[ϕ1Uϕ2])(n0:(π[n]ϕ20k<n:π[k]ϕ1))

See also

References

  • Amir Pnueli: The temporal logic of programs. Proceedings of the 18th Annual Symposium on Foundations of Computer Science (FOCS), 1977, 46–57. DOI= 10.1109/SFCS.1977.32
  • E. Allen Emerson, Joseph Y. Halpern: "Sometimes" and "not never" revisited: on branching versus linear time temporal logic. J. ACM 33, 1 (Jan. 1986), 151–178. DOI= http://doi.acm.org/10.1145/4904.4999
  • Ph. Schnoebelen: The Complexity of Temporal Logic Model Checking. Advances in Modal Logic 2002: 393–436

External links