def
definition
Reaches
show as:
view math explainer →
open explainer
Generate a durable explainer page for this declaration.
open lean source
IndisputableMonolith.Causality.Reach on GitHub at line 24.
browse module
All declarations in this module, on Recognition.
explainer page
depends on
-
Kinematics -
Reaches -
ReachN -
Kinematics -
Kinematics -
ReachN -
K -
K -
Kinematics -
Reaches -
ReachN -
Kinematics -
ReachN
used by
formal source
21lemma reach_le_in_ball {K : Kinematics α} {x y : α} {k n : Nat}
22 (hk : k ≤ n) (h : ReachN K k x y) : inBall K x n y := ⟨k, hk, h⟩
23
24def Reaches (K : Kinematics α) (x y : α) : Prop := ∃ n, ReachN K n x y
25
26lemma reaches_of_reachN {K : Kinematics α} {x y : α} {n : Nat}
27 (h : ReachN K n x y) : Reaches K x y := ⟨n, h⟩
28
29lemma inBall_mono {K : Kinematics α} {x y : α} {n m : Nat}
30 (hnm : n ≤ m) : inBall K x n y → inBall K x m y := by
31 intro ⟨k, hk, hkreach⟩
32 exact ⟨k, le_trans hk hnm, hkreach⟩
33
34def ballP (K : Kinematics α) (x : α) : Nat → α → Prop
35| 0, y => y = x
36| Nat.succ n, y => ballP K x n y ∨ ∃ z, ballP K x n z ∧ K.step z y
37
38lemma ballP_mono {K : Kinematics α} {x : α} {n m : Nat}
39 (hnm : n ≤ m) : {y | ballP K x n y} ⊆ {y | ballP K x m y} := by
40 induction hnm with
41 | refl => intro y hy; simpa using hy
42 | @step m hm ih =>
43 intro y hy
44 exact Or.inl (ih hy)
45
46lemma reach_mem_ballP {K : Kinematics α} {x y : α} :
47 ∀ {n}, ReachN K n x y → ballP K x n y := by
48 intro n h; induction h with
49 | zero => simp [ballP]
50 | @succ n x y z hxy hyz ih =>
51 exact Or.inr ⟨y, ih, hyz⟩
52
53lemma inBall_subset_ballP {K : Kinematics α} {x y : α} {n : Nat} :
54 inBall K x n y → ballP K x n y := by