Bisimulation #
structure
IsBisim
{W W2 : Type}
(M : KripkeModel W)
(M2 : KripkeModel W2)
(Z : W → W2 → Prop)
(vo : Vocab)
:
A bisimulation between M and M2, for the given vocabulary.
Instances For
theorem
IsBisim.symm
{W✝ : Type}
{M : KripkeModel W✝}
{W✝¹ : Type}
{M2 : KripkeModel W✝¹}
{Z : W✝ → W✝¹ → Prop}
{vo : Vocab}
(hZ : IsBisim M M2 Z vo)
:
theorem
IsBisim.relate
{W✝ : Type}
{M : KripkeModel W✝}
{W✝¹ : Type}
{M2 : KripkeModel W✝¹}
{Z : W✝ → W✝¹ → Prop}
{vo : Vocab}
(hZ : IsBisim M M2 Z vo)
(α : Program)
:
α.voc ⊆ vo →
∀ (x : W✝) (y : W✝¹) (x' : W✝), Z x y → _root_.relate M α x x' → ∃ (y' : W✝¹), _root_.relate M2 α y y' ∧ Z x' y'
Extend IsBisim.zig from atomic programs to all programs.
theorem
IsBisim.evaluate
{W✝ : Type}
{M : KripkeModel W✝}
{W✝¹ : Type}
{M2 : KripkeModel W✝¹}
{Z : W✝ → W✝¹ → Prop}
{vo : Vocab}
(hZ : IsBisim M M2 Z vo)
(φ : Formula)
:
φ.voc ⊆ vo → ∀ (x : W✝) (y : W✝¹), Z x y → (_root_.evaluate M x φ ↔ _root_.evaluate M2 y φ)
Bisimilar states agree on all formulas in the given vocabulary.