Linear temporal logic
InductiveFormulas of linear temporal logic#✓fully proved
For a type \(A\) of atoms, the formulas of linear temporal logic (LTL) over \(A\) are generated inductively: every atom \(a \in A\) is a formula, the truth constant \(\top\) is a formula, and if \(\varphi\) and \(\psi\) are formulas then so are the negation \(\neg\varphi\), the conjunction \(\varphi \wedge \psi\), the next formula \(\mathbf{X}\,\varphi\) and the until formula \(\varphi \mathbin{\mathbf{U}} \psi\).
inductive Formula (Atom : Type u) : Type u where
| atom (a : Atom) : Formula Atom
| top : Formula Atom
| not (φ : Formula Atom) : Formula Atom
| and (φ ψ : Formula Atom) : Formula Atom
| next (φ : Formula Atom) : Formula Atom
| until (φ ψ : Formula Atom) : Formula Atom
deriving DecidableEq, Repr
Used by 58
DefinitionFalsity in LTL#✓fully proved
The LTL formula \(\bot\) (falsity) is defined as \(\neg\top\), the negation of the truth constant \(\top\).
def bot : Formula Atom := .not .top
inductive Formula (Atom : Type u) : Type u where
| atom (a : Atom) : Formula Atom
| top : Formula Atom
| not (φ : Formula Atom) : Formula Atom
| and (φ ψ : Formula Atom) : Formula Atom
| next (φ : Formula Atom) : Formula Atom
| until (φ ψ : Formula Atom) : Formula Atom
deriving DecidableEq, Repr
CSLibExt/Logics/LTL/Syntax.lean:37
Uses 1 · Used by 1
DefinitionDisjunction in LTL#✓fully proved
For LTL formulas \(\varphi\) and \(\psi\), the disjunction \(\varphi \vee \psi\) is defined as \(\neg(\neg\varphi \wedge \neg\psi)\).
def or (φ ψ : Formula Atom) : Formula Atom := .not (.and (.not φ) (.not ψ))
inductive Formula (Atom : Type u) : Type u where
| atom (a : Atom) : Formula Atom
| top : Formula Atom
| not (φ : Formula Atom) : Formula Atom
| and (φ ψ : Formula Atom) : Formula Atom
| next (φ : Formula Atom) : Formula Atom
| until (φ ψ : Formula Atom) : Formula Atom
deriving DecidableEq, Repr
CSLibExt/Logics/LTL/Syntax.lean:37
Uses 1 · Used by 3
DefinitionImplication in LTL#✓fully proved
For LTL formulas \(\varphi\) and \(\psi\), the implication \(\varphi \to \psi\) is defined as the disjunction \(\neg\varphi \vee \psi\).
def imp (φ ψ : Formula Atom) : Formula Atom := or (.not φ) ψ
inductive Formula (Atom : Type u) : Type u where
| atom (a : Atom) : Formula Atom
| top : Formula Atom
| not (φ : Formula Atom) : Formula Atom
| and (φ ψ : Formula Atom) : Formula Atom
| next (φ : Formula Atom) : Formula Atom
| until (φ ψ : Formula Atom) : Formula Atom
deriving DecidableEq, Repr
CSLibExt/Logics/LTL/Syntax.lean:37
def or (φ ψ : Formula Atom) : Formula Atom := .not (.and (.not φ) (.not ψ))
CSLibExt/Logics/LTL/Syntax.lean:54
Uses 2 · Used by 1
DefinitionBi-implication in LTL#✓fully proved
For LTL formulas \(\varphi\) and \(\psi\), the bi-implication \(\varphi \leftrightarrow \psi\) is defined as the conjunction \((\varphi \to \psi) \wedge (\psi \to \varphi)\) of the two implications.
def iff (φ ψ : Formula Atom) : Formula Atom := .and (imp φ ψ) (imp ψ φ)
inductive Formula (Atom : Type u) : Type u where
| atom (a : Atom) : Formula Atom
| top : Formula Atom
| not (φ : Formula Atom) : Formula Atom
| and (φ ψ : Formula Atom) : Formula Atom
| next (φ : Formula Atom) : Formula Atom
| until (φ ψ : Formula Atom) : Formula Atom
deriving DecidableEq, Repr
CSLibExt/Logics/LTL/Syntax.lean:37
def imp (φ ψ : Formula Atom) : Formula Atom := or (.not φ) ψ
CSLibExt/Logics/LTL/Syntax.lean:57
Uses 2
DefinitionThe eventually operator of LTL#✓fully proved
For an LTL formula \(\varphi\), the formula \(\mathbf{F}\,\varphi\) ("eventually \(\varphi\)") is defined as the until formula \(\top \mathbin{\mathbf{U}} \varphi\).
On an ω-word, \(\mathbf{F}\,\varphi\) holds at a position exactly when \(\varphi\) holds at that position or at some later one.
def eventually (φ : Formula Atom) : Formula Atom := .until .top φ
inductive Formula (Atom : Type u) : Type u where
| atom (a : Atom) : Formula Atom
| top : Formula Atom
| not (φ : Formula Atom) : Formula Atom
| and (φ ψ : Formula Atom) : Formula Atom
| next (φ : Formula Atom) : Formula Atom
| until (φ ψ : Formula Atom) : Formula Atom
deriving DecidableEq, Repr
CSLibExt/Logics/LTL/Syntax.lean:37
Uses 1 · Used by 8
DefinitionThe always operator of LTL#✓fully proved
For an LTL formula \(\varphi\), the formula \(\mathbf{G}\,\varphi\) ("always \(\varphi\)") is defined as \(\neg\,\mathbf{F}\,\neg\varphi\), the negation of "eventually \(\neg\varphi\)".
On an ω-word, \(\mathbf{G}\,\varphi\) holds at a position exactly when \(\varphi\) holds at that position and at every later one.
def always (φ : Formula Atom) : Formula Atom := .not (eventually (.not φ))
inductive Formula (Atom : Type u) : Type u where
| atom (a : Atom) : Formula Atom
| top : Formula Atom
| not (φ : Formula Atom) : Formula Atom
| and (φ ψ : Formula Atom) : Formula Atom
| next (φ : Formula Atom) : Formula Atom
| until (φ ψ : Formula Atom) : Formula Atom
deriving DecidableEq, Repr
CSLibExt/Logics/LTL/Syntax.lean:37
def eventually (φ : Formula Atom) : Formula Atom := .until .top φ
CSLibExt/Logics/LTL/Syntax.lean:63
Uses 2 · Used by 7
DefinitionThe release operator of LTL#✓fully proved
For LTL formulas \(\varphi\) and \(\psi\), the release formula \(\varphi \mathbin{\mathbf{R}} \psi\) is defined as \(\neg(\neg\varphi \mathbin{\mathbf{U}} \neg\psi)\), the dual of until.
On an ω-word, \(\varphi \mathbin{\mathbf{R}} \psi\) holds at a position when, from that position on, \(\psi\) holds up to and including the first position where \(\varphi\) holds, or forever if there is no such position.
def release (φ ψ : Formula Atom) : Formula Atom := .not (.until (.not φ) (.not ψ))
inductive Formula (Atom : Type u) : Type u where
| atom (a : Atom) : Formula Atom
| top : Formula Atom
| not (φ : Formula Atom) : Formula Atom
| and (φ ψ : Formula Atom) : Formula Atom
| next (φ : Formula Atom) : Formula Atom
| until (φ ψ : Formula Atom) : Formula Atom
deriving DecidableEq, Repr
CSLibExt/Logics/LTL/Syntax.lean:37
Uses 1 · Used by 2
DefinitionSatisfaction of LTL formulas on ω-words#✓fully proved
Let \(v\) be a valuation that says which atoms are true at each letter, and for an ω-word \(w\) and a natural number \(k\) let \(w^{(k)}\) be the suffix \(i \mapsto w(k + i)\). Whether \(w\) satisfies an LTL formula \(\varphi\) under \(v\), written \(w \models \varphi\), is defined by recursion on \(\varphi\): an atom \(a\) holds when \(v\) makes \(a\) true at the first letter \(w(0)\); truth always holds; \(\neg \varphi\) holds when \(\varphi\) does not; \(\varphi \wedge \psi\) holds when both \(\varphi\) and \(\psi\) do; \(\mathsf{X}\, \varphi\) (next \(\varphi\)) holds when \(w^{(1)} \models \varphi\); and \(\varphi \mathbin{\mathsf{U}} \psi\) (\(\varphi\) until \(\psi\)) holds when there is a \(k\) with \(w^{(k)} \models \psi\) and \(w^{(j)} \models \varphi\) for all \(j < k\).
def Satisfies (valuation : Symbol → Atom → Prop) (w : ωSequence Symbol) :
Formula Atom → Prop
| .atom a => valuation (w 0) a
| .top => True
| .not φ => ¬ Satisfies valuation w φ
| .and φ ψ => Satisfies valuation w φ ∧ Satisfies valuation w ψ
| .next φ => Satisfies valuation w.tail φ
| .until φ ψ =>
∃ k, Satisfies valuation (w.drop k) ψ ∧ ∀ j < k, Satisfies valuation (w.drop j) φ
inductive Formula (Atom : Type u) : Type u where
| atom (a : Atom) : Formula Atom
| top : Formula Atom
| not (φ : Formula Atom) : Formula Atom
| and (φ ψ : Formula Atom) : Formula Atom
| next (φ : Formula Atom) : Formula Atom
| until (φ ψ : Formula Atom) : Formula Atom
deriving DecidableEq, Repr
CSLibExt/Logics/LTL/Syntax.lean:37
Uses 1 · Used by 30
DefinitionSatisfaction at a position#✓fully proved
Let \(v\) be a valuation of atoms on letters, \(w\) an ω-word, \(k\) a natural number and \(\varphi\) an LTL formula. Then \(\varphi\) holds at position \(k\) of \(w\) under \(v\) when the suffix of \(w\) starting at position \(k\), the ω-word \(i \mapsto w(k + i)\), satisfies \(\varphi\) under \(v\).
def SatisfiesAt (valuation : Symbol → Atom → Prop) (w : ωSequence Symbol) (k : ℕ)
(φ : Formula Atom) : Prop :=
Satisfies valuation (w.drop k) φ
inductive Formula (Atom : Type u) : Type u where
| atom (a : Atom) : Formula Atom
| top : Formula Atom
| not (φ : Formula Atom) : Formula Atom
| and (φ ψ : Formula Atom) : Formula Atom
| next (φ : Formula Atom) : Formula Atom
| until (φ ψ : Formula Atom) : Formula Atom
deriving DecidableEq, Repr
CSLibExt/Logics/LTL/Syntax.lean:37
def Satisfies (valuation : Symbol → Atom → Prop) (w : ωSequence Symbol) :
Formula Atom → Prop
| .atom a => valuation (w 0) a
| .top => True
| .not φ => ¬ Satisfies valuation w φ
| .and φ ψ => Satisfies valuation w φ ∧ Satisfies valuation w ψ
| .next φ => Satisfies valuation w.tail φ
| .until φ ψ =>
∃ k, Satisfies valuation (w.drop k) ψ ∧ ∀ j < k, Satisfies valuation (w.drop j) φ
CSLibExt/Logics/LTL/OmegaWord.lean:66
Uses 2 · Used by 16
DefinitionLanguage of an LTL formula#✓fully proved
Given a valuation \(v\) of atoms on letters, the ω-language of an LTL formula \(\varphi\) is the set of ω-words that satisfy \(\varphi\) under \(v\).
def language (valuation : Symbol → Atom → Prop) (φ : Formula Atom) : ωLanguage Symbol :=
{ w : ωSequence Symbol | Satisfies valuation w φ }
inductive Formula (Atom : Type u) : Type u where
| atom (a : Atom) : Formula Atom
| top : Formula Atom
| not (φ : Formula Atom) : Formula Atom
| and (φ ψ : Formula Atom) : Formula Atom
| next (φ : Formula Atom) : Formula Atom
| until (φ ψ : Formula Atom) : Formula Atom
deriving DecidableEq, Repr
CSLibExt/Logics/LTL/Syntax.lean:37
def Satisfies (valuation : Symbol → Atom → Prop) (w : ωSequence Symbol) :
Formula Atom → Prop
| .atom a => valuation (w 0) a
| .top => True
| .not φ => ¬ Satisfies valuation w φ
| .and φ ψ => Satisfies valuation w φ ∧ Satisfies valuation w ψ
| .next φ => Satisfies valuation w.tail φ
| .until φ ψ =>
∃ k, Satisfies valuation (w.drop k) ψ ∧ ∀ j < k, Satisfies valuation (w.drop j) φ
CSLibExt/Logics/LTL/OmegaWord.lean:66
Uses 2 · Used by 10
TheoremSatisfaction at position zero#✓fully proved
For every valuation of atoms on letters, ω-word \(w\) and LTL formula \(\varphi\), \(\varphi\) holds at position \(0\) of \(w\) if and only if \(w\) satisfies \(\varphi\).
@[simp]
theorem satisfiesAt_zero : SatisfiesAt valuation w 0 φ ↔ Satisfies valuation w φ
def SatisfiesAt (valuation : Symbol → Atom → Prop) (w : ωSequence Symbol) (k : ℕ)
(φ : Formula Atom) : Prop :=
Satisfies valuation (w.drop k) φ
CSLibExt/Logics/LTL/OmegaWord.lean:77
def Satisfies (valuation : Symbol → Atom → Prop) (w : ωSequence Symbol) :
Formula Atom → Prop
| .atom a => valuation (w 0) a
| .top => True
| .not φ => ¬ Satisfies valuation w φ
| .and φ ψ => Satisfies valuation w φ ∧ Satisfies valuation w ψ
| .next φ => Satisfies valuation w.tail φ
| .until φ ψ =>
∃ k, Satisfies valuation (w.drop k) ψ ∧ ∀ j < k, Satisfies valuation (w.drop j) φ
CSLibExt/Logics/LTL/OmegaWord.lean:66
Uses 3
TheoremSatisfaction on a suffix#✓fully proved
Let \(w\) be an ω-word and, for a natural number \(k\), let \(w^{(k)}\) be its suffix starting at position \(k\), the ω-word \(i \mapsto w(k + i)\). For every valuation of atoms on letters, every LTL formula \(\varphi\) and every natural number \(j\), \(\varphi\) holds at position \(j\) of \(w^{(k)}\) if and only if \(\varphi\) holds at position \(k + j\) of \(w\).
theorem satisfiesAt_drop {k j : ℕ} :
SatisfiesAt valuation (w.drop k) j φ ↔ SatisfiesAt valuation w (k + j) φ
def SatisfiesAt (valuation : Symbol → Atom → Prop) (w : ωSequence Symbol) (k : ℕ)
(φ : Formula Atom) : Prop :=
Satisfies valuation (w.drop k) φ
CSLibExt/Logics/LTL/OmegaWord.lean:77
Uses 3 · Used by 4
TheoremSatisfaction of an atom#✓fully proved
For every valuation \(v\) of atoms on letters, every ω-word \(w\) and every atom \(a\), the word \(w\) satisfies the atomic formula \(a\) under \(v\) if and only if \(v\) makes \(a\) true at the first letter \(w_0\) of \(w\).
theorem atom_iff : Satisfies valuation w (.atom a) ↔ valuation (w 0) a
def Satisfies (valuation : Symbol → Atom → Prop) (w : ωSequence Symbol) :
Formula Atom → Prop
| .atom a => valuation (w 0) a
| .top => True
| .not φ => ¬ Satisfies valuation w φ
| .and φ ψ => Satisfies valuation w φ ∧ Satisfies valuation w ψ
| .next φ => Satisfies valuation w.tail φ
| .until φ ψ =>
∃ k, Satisfies valuation (w.drop k) ψ ∧ ∀ j < k, Satisfies valuation (w.drop j) φ
CSLibExt/Logics/LTL/OmegaWord.lean:66
Uses 2
TheoremFalsity is never satisfied#✓fully proved
For every valuation \(v\) of atoms on letters and every ω-word \(w\), the word \(w\) does not satisfy the LTL formula \(\bot\) (falsity) under \(v\).
theorem bot_iff : Satisfies valuation w (Formula.bot : Formula Atom) ↔ False
def Satisfies (valuation : Symbol → Atom → Prop) (w : ωSequence Symbol) :
Formula Atom → Prop
| .atom a => valuation (w 0) a
| .top => True
| .not φ => ¬ Satisfies valuation w φ
| .and φ ψ => Satisfies valuation w φ ∧ Satisfies valuation w ψ
| .next φ => Satisfies valuation w.tail φ
| .until φ ψ =>
∃ k, Satisfies valuation (w.drop k) ψ ∧ ∀ j < k, Satisfies valuation (w.drop j) φ
CSLibExt/Logics/LTL/OmegaWord.lean:66
def bot : Formula Atom := .not .top
CSLibExt/Logics/LTL/Syntax.lean:51
inductive Formula (Atom : Type u) : Type u where
| atom (a : Atom) : Formula Atom
| top : Formula Atom
| not (φ : Formula Atom) : Formula Atom
| and (φ ψ : Formula Atom) : Formula Atom
| next (φ : Formula Atom) : Formula Atom
| until (φ ψ : Formula Atom) : Formula Atom
deriving DecidableEq, Repr
CSLibExt/Logics/LTL/Syntax.lean:37
Uses 3
TheoremSemantics of eventually#✓fully proved
For every valuation \(v\) of atoms on letters, every ω-word \(w\) and every LTL formula \(\varphi\), the word \(w\) satisfies \(\mathbf{F}\,\varphi\) (eventually \(\varphi\)) under \(v\) if and only if for some \(k \in \mathbb{N}\) the suffix of \(w\) starting at position \(k\) satisfies \(\varphi\) under \(v\).
theorem eventually_iff :
Satisfies valuation w (Formula.eventually φ) ↔ ∃ k, SatisfiesAt valuation w k φ
def Satisfies (valuation : Symbol → Atom → Prop) (w : ωSequence Symbol) :
Formula Atom → Prop
| .atom a => valuation (w 0) a
| .top => True
| .not φ => ¬ Satisfies valuation w φ
| .and φ ψ => Satisfies valuation w φ ∧ Satisfies valuation w ψ
| .next φ => Satisfies valuation w.tail φ
| .until φ ψ =>
∃ k, Satisfies valuation (w.drop k) ψ ∧ ∀ j < k, Satisfies valuation (w.drop j) φ
CSLibExt/Logics/LTL/OmegaWord.lean:66
def eventually (φ : Formula Atom) : Formula Atom := .until .top φ
CSLibExt/Logics/LTL/Syntax.lean:63
def SatisfiesAt (valuation : Symbol → Atom → Prop) (w : ωSequence Symbol) (k : ℕ)
(φ : Formula Atom) : Prop :=
Satisfies valuation (w.drop k) φ
CSLibExt/Logics/LTL/OmegaWord.lean:77
Uses 4 · Used by 4
TheoremSemantics of release#✓fully proved
For a valuation of atoms on letters, an ω-word \(w\) and LTL formulas \(\varphi\) and \(\psi\), \(w\) satisfies \(\varphi \mathbin{\mathsf{R}} \psi\) (\(\varphi\) releases \(\psi\)) if and only if for every position \(k\), either \(\psi\) holds at position \(k\) of \(w\) or \(\varphi\) holds at some position \(j < k\) of \(w\).
theorem release_iff :
Satisfies valuation w (Formula.release φ ψ) ↔
∀ k, SatisfiesAt valuation w k ψ ∨ ∃ j < k, SatisfiesAt valuation w j φ
def Satisfies (valuation : Symbol → Atom → Prop) (w : ωSequence Symbol) :
Formula Atom → Prop
| .atom a => valuation (w 0) a
| .top => True
| .not φ => ¬ Satisfies valuation w φ
| .and φ ψ => Satisfies valuation w φ ∧ Satisfies valuation w ψ
| .next φ => Satisfies valuation w.tail φ
| .until φ ψ =>
∃ k, Satisfies valuation (w.drop k) ψ ∧ ∀ j < k, Satisfies valuation (w.drop j) φ
CSLibExt/Logics/LTL/OmegaWord.lean:66
def release (φ ψ : Formula Atom) : Formula Atom := .not (.until (.not φ) (.not ψ))
CSLibExt/Logics/LTL/Syntax.lean:70
def SatisfiesAt (valuation : Symbol → Atom → Prop) (w : ωSequence Symbol) (k : ℕ)
(φ : Formula Atom) : Prop :=
Satisfies valuation (w.drop k) φ
CSLibExt/Logics/LTL/OmegaWord.lean:77
TheoremNext is self-dual#✓fully proved
For every valuation \(v\) of atoms on letters, every ω-word \(w\) and every LTL formula \(\varphi\), the word \(w\) satisfies \(\neg\mathbf{X}\,\varphi\) under \(v\) if and only if it satisfies \(\mathbf{X}\,\neg\varphi\) under \(v\), where \(\mathbf{X}\) is the next operator.
theorem not_next :
Satisfies valuation w (.not (.next φ)) ↔ Satisfies valuation w (.next (.not φ))
def Satisfies (valuation : Symbol → Atom → Prop) (w : ωSequence Symbol) :
Formula Atom → Prop
| .atom a => valuation (w 0) a
| .top => True
| .not φ => ¬ Satisfies valuation w φ
| .and φ ψ => Satisfies valuation w φ ∧ Satisfies valuation w ψ
| .next φ => Satisfies valuation w.tail φ
| .until φ ψ =>
∃ k, Satisfies valuation (w.drop k) ψ ∧ ∀ j < k, Satisfies valuation (w.drop j) φ
CSLibExt/Logics/LTL/OmegaWord.lean:66
Uses 2
TheoremExpansion law for until#✓fully proved
For every valuation of atoms on letters, ω-word \(w\) and LTL formulas \(\varphi\) and \(\psi\), \(w\) satisfies \(\varphi \mathbin{\mathsf{U}} \psi\) (\(\varphi\) until \(\psi\)) if and only if either \(w\) satisfies \(\psi\), or \(w\) satisfies \(\varphi\) and also satisfies \(\mathsf{X}(\varphi \mathbin{\mathsf{U}} \psi)\), that is, next (\(\varphi\) until \(\psi\)).
theorem until_expansion :
Satisfies valuation w (.until φ ψ) ↔
Satisfies valuation w ψ ∨
(Satisfies valuation w φ ∧ Satisfies valuation w (.next (.until φ ψ)))
def Satisfies (valuation : Symbol → Atom → Prop) (w : ωSequence Symbol) :
Formula Atom → Prop
| .atom a => valuation (w 0) a
| .top => True
| .not φ => ¬ Satisfies valuation w φ
| .and φ ψ => Satisfies valuation w φ ∧ Satisfies valuation w ψ
| .next φ => Satisfies valuation w.tail φ
| .until φ ψ =>
∃ k, Satisfies valuation (w.drop k) ψ ∧ ∀ j < k, Satisfies valuation (w.drop j) φ
CSLibExt/Logics/LTL/OmegaWord.lean:66
Uses 4 · Used by 2
TheoremExpansion law for release#✓fully proved
For every valuation \(v\) of atoms on letters, every ω-word \(w\) and all LTL formulas \(\varphi\) and \(\psi\), the word \(w\) satisfies \(\varphi \mathbin{\mathcal{R}} \psi\) (\(\varphi\) releases \(\psi\)) under \(v\) if and only if it satisfies \(\psi\) and it satisfies \(\varphi\) or \(\mathbf{X}(\varphi \mathbin{\mathcal{R}} \psi)\), all under \(v\), where \(\mathbf{X}\) is the next operator.
theorem release_expansion :
Satisfies valuation w (Formula.release φ ψ) ↔
Satisfies valuation w ψ ∧
(Satisfies valuation w φ ∨ Satisfies valuation w (.next (Formula.release φ ψ)))
def Satisfies (valuation : Symbol → Atom → Prop) (w : ωSequence Symbol) :
Formula Atom → Prop
| .atom a => valuation (w 0) a
| .top => True
| .not φ => ¬ Satisfies valuation w φ
| .and φ ψ => Satisfies valuation w φ ∧ Satisfies valuation w ψ
| .next φ => Satisfies valuation w.tail φ
| .until φ ψ =>
∃ k, Satisfies valuation (w.drop k) ψ ∧ ∀ j < k, Satisfies valuation (w.drop j) φ
CSLibExt/Logics/LTL/OmegaWord.lean:66
def release (φ ψ : Formula Atom) : Formula Atom := .not (.until (.not φ) (.not ψ))
CSLibExt/Logics/LTL/Syntax.lean:70
Uses 4
TheoremIdempotence of always#✓fully proved
For every valuation \(v\) of atoms on letters, every ω-word \(w\) and every LTL formula \(\varphi\), the word \(w\) satisfies \(\mathbf{G}\,\mathbf{G}\,\varphi\) under \(v\) if and only if it satisfies \(\mathbf{G}\,\varphi\) under \(v\), where \(\mathbf{G}\) is the always operator.
theorem always_always :
Satisfies valuation w (Formula.always (Formula.always φ)) ↔
Satisfies valuation w (Formula.always φ)
def Satisfies (valuation : Symbol → Atom → Prop) (w : ωSequence Symbol) :
Formula Atom → Prop
| .atom a => valuation (w 0) a
| .top => True
| .not φ => ¬ Satisfies valuation w φ
| .and φ ψ => Satisfies valuation w φ ∧ Satisfies valuation w ψ
| .next φ => Satisfies valuation w.tail φ
| .until φ ψ =>
∃ k, Satisfies valuation (w.drop k) ψ ∧ ∀ j < k, Satisfies valuation (w.drop j) φ
CSLibExt/Logics/LTL/OmegaWord.lean:66
def always (φ : Formula Atom) : Formula Atom := .not (eventually (.not φ))
CSLibExt/Logics/LTL/Syntax.lean:66
TheoremAlways eventually means infinitely often#✓fully proved
For every valuation \(v\) of atoms on letters, every ω-word \(w\) and every LTL formula \(\varphi\), the word \(w\) satisfies \(\mathbf{G}\,\mathbf{F}\,\varphi\) (always eventually \(\varphi\)) under \(v\) if and only if there are infinitely many \(k \in \mathbb{N}\) such that the suffix of \(w\) starting at position \(k\) satisfies \(\varphi\) under \(v\).
theorem always_eventually_iff :
Satisfies valuation w (Formula.always (Formula.eventually φ)) ↔
∃ᶠ k in atTop, SatisfiesAt valuation w k φ
def Satisfies (valuation : Symbol → Atom → Prop) (w : ωSequence Symbol) :
Formula Atom → Prop
| .atom a => valuation (w 0) a
| .top => True
| .not φ => ¬ Satisfies valuation w φ
| .and φ ψ => Satisfies valuation w φ ∧ Satisfies valuation w ψ
| .next φ => Satisfies valuation w.tail φ
| .until φ ψ =>
∃ k, Satisfies valuation (w.drop k) ψ ∧ ∀ j < k, Satisfies valuation (w.drop j) φ
CSLibExt/Logics/LTL/OmegaWord.lean:66
def always (φ : Formula Atom) : Formula Atom := .not (eventually (.not φ))
CSLibExt/Logics/LTL/Syntax.lean:66
def eventually (φ : Formula Atom) : Formula Atom := .until .top φ
CSLibExt/Logics/LTL/Syntax.lean:63
def SatisfiesAt (valuation : Symbol → Atom → Prop) (w : ωSequence Symbol) (k : ℕ)
(φ : Formula Atom) : Prop :=
Satisfies valuation (w.drop k) φ
CSLibExt/Logics/LTL/OmegaWord.lean:77
Uses 7 · Used by 1
TheoremEventually always means from some point on#✓fully proved
For every valuation \(v\) of atoms on letters, every ω-word \(w\) and every LTL formula \(\varphi\), the word \(w\) satisfies \(\mathbf{F}\,\mathbf{G}\,\varphi\) (eventually always \(\varphi\)) under \(v\) if and only if there is \(n \in \mathbb{N}\) such that for every \(k \ge n\) the suffix of \(w\) starting at position \(k\) satisfies \(\varphi\) under \(v\).
theorem eventually_always_iff :
Satisfies valuation w (Formula.eventually (Formula.always φ)) ↔
∀ᶠ k in atTop, SatisfiesAt valuation w k φ
def Satisfies (valuation : Symbol → Atom → Prop) (w : ωSequence Symbol) :
Formula Atom → Prop
| .atom a => valuation (w 0) a
| .top => True
| .not φ => ¬ Satisfies valuation w φ
| .and φ ψ => Satisfies valuation w φ ∧ Satisfies valuation w ψ
| .next φ => Satisfies valuation w.tail φ
| .until φ ψ =>
∃ k, Satisfies valuation (w.drop k) ψ ∧ ∀ j < k, Satisfies valuation (w.drop j) φ
CSLibExt/Logics/LTL/OmegaWord.lean:66
def eventually (φ : Formula Atom) : Formula Atom := .until .top φ
CSLibExt/Logics/LTL/Syntax.lean:63
def always (φ : Formula Atom) : Formula Atom := .not (eventually (.not φ))
CSLibExt/Logics/LTL/Syntax.lean:66
def SatisfiesAt (valuation : Symbol → Atom → Prop) (w : ωSequence Symbol) (k : ℕ)
(φ : Formula Atom) : Prop :=
Satisfies valuation (w.drop k) φ
CSLibExt/Logics/LTL/OmegaWord.lean:77
Uses 7 · Used by 1
TheoremSatisfaction of an atom at a position#✓fully proved
Let \(v\) be a valuation of atoms on letters, \(w\) an ω-word, \(a\) an atom and \(k\) a natural number. The atomic formula \(a\) holds at position \(k\) of \(w\) under \(v\) if and only if \(v\) makes \(a\) true at the letter \(w(k)\).
theorem satisfiesAt_atom {k : ℕ} : SatisfiesAt valuation w k (.atom a) ↔ valuation (w k) a
def SatisfiesAt (valuation : Symbol → Atom → Prop) (w : ωSequence Symbol) (k : ℕ)
(φ : Formula Atom) : Prop :=
Satisfies valuation (w.drop k) φ
CSLibExt/Logics/LTL/OmegaWord.lean:77
Uses 2 · Used by 1
TheoremRelabelling the letters of an ω-word#✓fully proved
Let \(v\) be a valuation of atoms on letters of an alphabet \(\Sigma\), let \(f \colon \Sigma' \to \Sigma\) be a map, and let \(w\) be an ω-word over \(\Sigma'\). For every LTL formula \(\varphi\), the relabelled word \(i \mapsto f(w(i))\) satisfies \(\varphi\) under \(v\) if and only if \(w\) satisfies \(\varphi\) under the valuation that makes an atom \(a\) true at a letter \(s\) of \(\Sigma'\) exactly when \(v\) makes \(a\) true at \(f(s)\).
theorem satisfies_map {Symbol' : Type*} (f : Symbol' → Symbol) :
∀ (φ : Formula Atom) (w : ωSequence Symbol'),
Satisfies valuation (w.map f) φ ↔ Satisfies (fun s a => valuation (f s) a) w φ
inductive Formula (Atom : Type u) : Type u where
| atom (a : Atom) : Formula Atom
| top : Formula Atom
| not (φ : Formula Atom) : Formula Atom
| and (φ ψ : Formula Atom) : Formula Atom
| next (φ : Formula Atom) : Formula Atom
| until (φ ψ : Formula Atom) : Formula Atom
deriving DecidableEq, Repr
CSLibExt/Logics/LTL/Syntax.lean:37
def Satisfies (valuation : Symbol → Atom → Prop) (w : ωSequence Symbol) :
Formula Atom → Prop
| .atom a => valuation (w 0) a
| .top => True
| .not φ => ¬ Satisfies valuation w φ
| .and φ ψ => Satisfies valuation w φ ∧ Satisfies valuation w ψ
| .next φ => Satisfies valuation w.tail φ
| .until φ ψ =>
∃ k, Satisfies valuation (w.drop k) ψ ∧ ∀ j < k, Satisfies valuation (w.drop j) φ
CSLibExt/Logics/LTL/OmegaWord.lean:66
Uses 2
TheoremMembership in the language of a formula#✓fully proved
For every valuation \(v\) of atoms on letters, every ω-word \(w\) and every LTL formula \(\varphi\), the word \(w\) belongs to the ω-language of \(\varphi\) under \(v\) if and only if \(w\) satisfies \(\varphi\) under \(v\).
@[simp]
theorem mem_language : w ∈ language valuation φ ↔ Satisfies valuation w φ
def language (valuation : Symbol → Atom → Prop) (φ : Formula Atom) : ωLanguage Symbol :=
{ w : ωSequence Symbol | Satisfies valuation w φ }
CSLibExt/Logics/LTL/OmegaWord.lean:82
def Satisfies (valuation : Symbol → Atom → Prop) (w : ωSequence Symbol) :
Formula Atom → Prop
| .atom a => valuation (w 0) a
| .top => True
| .not φ => ¬ Satisfies valuation w φ
| .and φ ψ => Satisfies valuation w φ ∧ Satisfies valuation w ψ
| .next φ => Satisfies valuation w.tail φ
| .until φ ψ =>
∃ k, Satisfies valuation (w.drop k) ψ ∧ ∀ j < k, Satisfies valuation (w.drop j) φ
CSLibExt/Logics/LTL/OmegaWord.lean:66
Uses 3 · Used by 6
Loading dependency explorer…
The dependency explorer needs JavaScript and its graph data.