Distance between states #
This is used for the correctness of cluster interpolants in Section 7.
Walks #
noncomputable def
Walk.cons'
{W✝ : Type}
{M : KripkeModel W✝}
{α : Program}
{w x v : W✝}
(h : relate M α w x)
(p : Walk M α x v)
:
Walk M α w v
Equations
- Walk.cons' h p = if c : w = x then match x, c, h, p with | .(w), ⋯, h, p => p else Walk.cons h p c
Instances For
theorem
Reachable.trans
{W : Type}
{M : KripkeModel W}
{α : Program}
{w v u : W}
(hwv : Reachable M α w v)
(hvu : Reachable M α v u)
:
Reachable M α w u
theorem
star_relate_of_Chain
{W : Type}
{M : KripkeModel W}
{α : Program}
{w : W}
{l : List W}
{v : W}
:
Distance #
Equations
- distance M (·a) w v = if relate M (·a) w v then 1 else ⊤
- distance M (?'a) w v = if relate M (?'a) w v then 0 else ⊤
- distance M (α_2⋓β) w v = distance M α_2 w v ⊓ distance M β w v
- distance M (∗α_2) w v = fdist' M α_2 w v fun (x1 x2 : W) => (distance M α_2 x1 x2).toNat
- distance M (α_2;'β) w v = ⨅ (x : W), distance M α_2 w x + distance M β x v
Instances For
Equations
- distance_list M w v [] = if w = v then 0 else ⊤
- distance_list M w v (α :: δ) = ⨅ (x : W), distance M α w x + distance_list M x v δ
Instances For
7.47 (a)
theorem
eq_of_distance_nil
{W : Type}
{M : KripkeModel W}
{w v : W}
(h : distance_list M w v [] ≠ ⊤)
:
Equations
- WithTop.domain f a = ∃ (i : ι), f i = ↑a
Instances For
theorem
distance_list_cons
{W : Type}
{M : KripkeModel W}
{w v : W}
{α : Program}
{δ : List Program}
:
theorem
distance_list_concat
{W : Type}
{M : KripkeModel W}
{w v : W}
{δ : List Program}
{α : Program}
:
theorem
distance_list_eq_distance_steps
{W : Type}
(M : KripkeModel W)
(v w : W)
(δ : List Program)
:
7.47 (b)
like 7.47 (a) but for lists
theorem
dist_le_of_distList_le
{W : Type}
{M : KripkeModel W}
{α : Program}
{v : W}
{δ γ : List Program}
(h : ∀ (u : W), distance M α v u ≤ distance_list M v u δ)
(u : W)
:
7.47 (c)
theorem
rel_existsH_dist
{W : Type}
{M : KripkeModel W}
{α : Program}
{w v : W}
(w_α_v : relate M α w v)
:
7.47 (f)
theorem
relateSeq_existsH_dist
{W : Type}
{M : KripkeModel W}
{α : Program}
{γ : List Program}
{v w : W}
(v_αγ_w : relateSeq M (α :: γ) v w)
:
∃ Xδ ∈ H α, evaluate M v (Con Xδ.1) ∧ distance_list M v w (Xδ.2 ++ γ) = distance_list M v w (α :: γ)
7.47 (g)
theorem
distanceProps
{γ : List Program}
{X : List Formula}
{Xδ : List Formula × List Program}
{ψ : Formula}
(W : Type)
(M : KripkeModel W)
(α : Program)
{w v : W}
(δ : List Program)
:
(distance M α w v ≠ ⊤ ↔ relate M α w v) ∧ distance_list M v w δ = distance M (Program.steps δ) v w ∧ ((∀ (u : W), distance M α v u ≤ distance_list M v u δ) →
∀ (u : W), distance_list M v u (α :: γ) ≤ distance_list M v u (δ ++ γ)) ∧ ((X, δ) ∈ H α → (M, w)⊨Con X → distance M α w v ≤ distance_list M w v δ) ∧ (Xδ ∈ H α → evaluate M v (Con Xδ.1) → distance_list M v w (α :: γ) ≤ distance_list M v w (Xδ.2 ++ γ)) ∧ (relate M α w v → ∃ Xδ ∈ H α, evaluate M w (Con Xδ.1) ∧ distance_list M w v Xδ.2 = distance M α w v) ∧ (relateSeq M (α :: γ) v w →
∃ Xδ ∈ H α, evaluate M v (Con Xδ.1) ∧ distance_list M v w (Xδ.2 ++ γ) = distance_list M v w (α :: γ)) ∧ (evaluate M v (~⌈⌈α :: γ⌉⌉ψ) →
∃ Xδ ∈ H α,
evaluate M v (Con Xδ.1) ∧ evaluate M v (~⌈⌈Xδ.2⌉⌉⌈⌈γ⌉⌉ψ) ∧ ⨅ (w : { w : W // evaluate M w (~ψ) }), distance_list M v (↑w) (Xδ.2 ++ γ) = ⨅ (w : { w : W // evaluate M w (~ψ) }), distance_list M v (↑w) (α :: γ))
Summary definition of Lemma 7.47