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
rel_existsH_dist
{W : Type}
{M : KripkeModel W}
{α : Program}
{w v : W}
(w_α_v : relate M α w v)
:
7.47 (f)
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
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)