Documentation

Projects.AP.Defense.Edge.Basic

@[instance_reducible]
Equations
theorem AP.Edge.points_inj {e₁ e₂ : Edge} (h : e₁.points = e₂.points) :
e₁ = e₂
@[simp]
theorem AP.Edge.points_eq_points_iff {e₁ e₂ : Edge} :
e₁.points = e₂.points ↔ e₁ = e₂
@[simp]
@[simp]
theorem AP.Edge.getBorderPoint_inj {e : Edge} {p : PointZ} {z₁ z₂ : ℤ} :
e.getBorderPoint p z₁ = e.getBorderPoint p z₂ ↔ z₁ = z₂
theorem AP.Edge.mem_cndMp_of_cnd_eq_false {d : ℤ} {f : ℕ → Bool} (h : cnd d f = false) :
@[simp]
theorem AP.Edge.mem_cndMp_iff {d : ℤ} :
d ∈ cndMp ↔ 1 ≤ d ∧ d ≤ 5
theorem AP.Edge.f₅_le_6_of {g : ℕ → Bool} {m : Option ℕ} (h : ∀ (n : ℕ), m = some n → n ≤ 6) :
f₅ g m ≤ 6
@[simp]
theorem AP.Edge.f₄_le_6 {d : ℤ} {g : ℕ → Bool} :
f₄ d g ≤ 6
theorem AP.Edge.of_f₁_eq_some {e : Edge} {s : State} {p : PointZ} (h : e.f₁ s = some p) :
0 < e.dist s.aPos ∧ e.dist s.aPos ≤ 5 ∧ ∃ (z : ℤ), |z| ≤ 3 ∧ e.getBorderPoint s.aPos z = p
theorem AP.Edge.of_f_eq_some {e : Edge} {s : State} {p : PointZ} (h : e.defense.f s = some p) :
0 < e.dist s.aPos ∧ e.dist s.aPos ≤ 5 ∧ p ∉ s.taken ∧ ∃ (z : ℤ), |z| ≤ 3 ∧ e.getBorderPoint s.aPos z = p
theorem AP.Edge.dist_eq_zero_of_f_eq_some {e : Edge} {s : State} {p : PointZ} (h : e.defense.f s = some p) :
e.dist p = 0
theorem AP.Edge.not_mem_taken_of_f_eq_some {e : Edge} {s : State} {p : PointZ} (h : e.defense.f s = some p) :
p ∉ s.taken
@[simp]
theorem AP.Edge.cnd_congr {d : ℤ} {f₁ f₂ : ℕ → Bool} (h : ∀ i < 7, f₁ i = f₂ i) :
cnd d f₁ = cnd d f₂
theorem AP.Edge.f₁_eq_of_f_eq_some {e : Edge} {s : State} {p : PointZ} (h : e.f s = some p) :
e.f₁ s = some p
theorem AP.Edge.of_f₃_eq_some {d : ℤ} {g : ℕ → Bool} {k : ℕ} (h : f₃ d g = some k) :
1 ≤ d ∧ d ≤ 6 ∧ k ≤ 6
theorem AP.Edge.of_f₂_eq_some {d : ℤ} {arr : Array Bool} {offset k : ℕ} (h : f₂ d arr offset = some k) :
1 ≤ d ∧ d ≤ 6 ∧ k ≤ 6
@[simp]
theorem AP.Edge.cnd_const_true {d : ℤ} :
(cnd d fun (x : ℕ) => true) = true
theorem AP.Edge.f_eq_none_of_6_le_dist {e : Edge} {s : State} (h : 6 ≤ e.dist s.aPos) :
e.f s = none