Theory Eq is Bisimulation
Cslib.Logic.HML.theoryEq_isBisimulation
Plain-language statement
Theory equivalence is a bisimulation.
Exact Lean statement
@[scoped grind ⇒]
theorem theoryEq_isBisimulation (lts : LTS State Label)
[image_finite : ∀ s μ, Finite (lts.image s μ)] :
lts.IsHomBisimulation (TheoryEq lts)Formal artifact
Lean source
@[scoped grind ⇒]theorem theoryEq_isBisimulation (lts : LTS State Label) [image_finite : ∀ s μ, Finite (lts.image s μ)] : lts.IsHomBisimulation (TheoryEq lts) := by intro s1 s2 h μ let (s : State) := @Fintype.ofFinite (lts.image s μ) (image_finite s μ) constructor case left => intro s1' htr by_contra have hdist : ∀ s2' : lts.image s2 μ, ∃ a, Satisfies lts s1' a ∧ ¬Satisfies lts s2'.val a := by intro ⟨s2', hs2'⟩ apply not_theoryEq_satisfies grind choose dist_formula hdist_spec using hdist let conjunction := Proposition.finiteAnd (propositions dist_formula) have hs1_diamond : Satisfies lts s1 (.diamond μ conjunction) := by grind [propositions_satisfies_conjunction] cases (theoryEq_satisfies h hs1_diamond) with | @diamond _ s2'' _ _ htr2 hsat => grind [propositions_complete dist_formula ⟨s2'', htr2⟩] case right => -- Symmetric to left case intro s2' htr by_contra have hdist : ∀ s1' : lts.image s1 μ, ∃ a, Satisfies lts s2' a ∧ ¬Satisfies lts s1'.val a := by intro ⟨s1', hs1'⟩ apply not_theoryEq_satisfies grind choose dist_formula hdist_spec using hdist let conjunction := Proposition.finiteAnd (propositions dist_formula) have hs2_diamond : Satisfies lts s2 (.diamond μ conjunction) := by grind [propositions_satisfies_conjunction] cases (theoryEq_satisfies h.symm hs2_diamond) with | @diamond _ s1'' _ _ htr1 hsat => grind [propositions_complete dist_formula ⟨s1'', htr1⟩]- Project
- Lean Computer Science Library
- License
- Apache-2.0
- Commit
- f36649cff2c9
- Source
- Cslib/Logics/HML/Basic.lean:201-234
Reuse this declaration
Bring the exact result into your workflow
The import identifies the source module. Your project still needs the pinned package dependency shown on this page.
What this badge means
This completion status comes from the project or community source. It has not yet been represented here as an independent rebuild and axiom audit.
Continue in this project
Related declarations
Unique minimal
Cslib.Automata.DA.FinAcc.unique_minimal
Plain-language statement
The minimal DFA M accepting the language l is unique up to unique isomorphism.
Source project: Lean Computer Science Library
Person-level attribution pending.
Buchi Family cover
Cslib.Automata.NA.Buchi.buchiFamily_cover
Project documentation
na.buchiFamily is a cover if na has only finitely many states. This theorem uses the Ramsey theorem for infinite graphs and does not depend on any details of na.BuchiCongruence other than that it is of finite index.
Source project: Lean Computer Science Library
Person-level attribution pending.
Buchi Family saturation
Cslib.Automata.NA.Buchi.buchiFamily_saturation
Plain-language statement
na.buchiFamily saturates the ω-language accepted by na.
Source project: Lean Computer Science Library
Person-level attribution pending.