- mk {V : Type u_1} [MetricSpace V] {u v w : V} (h : sbtw u v w) : {u, v, w}.collinearTriple
Instances For
- basic {V : Type u_1} [MetricSpace V] {s : Set V} {x : V} : x ∈ s → GenerateLine s x
- extend_out {V : Type u_1} [MetricSpace V] {s : Set V} (u v w : V) : GenerateLine s u → GenerateLine s v → sbtw u v w → GenerateLine s w
- extend_in {V : Type u_1} [MetricSpace V] {s : Set V} (u v w : V) : GenerateLine s u → GenerateLine s v → sbtw u w v → GenerateLine s w
Instances For
theorem
generateLine_close_right
{V : Type u_1}
[MetricSpace V]
{s : Set V}
{x y z : V}
(hx : x ∈ GenerateLine s)
(hy : y ∈ GenerateLine s)
(h : sbtw x y z)
:
theorem
generateLine_close_left
{V : Type u_1}
[MetricSpace V]
{s : Set V}
{x y z : V}
(hx : x ∈ GenerateLine s)
(hy : y ∈ GenerateLine s)
(h : sbtw z x y)
:
theorem
generateLine_close_middle
{V : Type u_1}
[MetricSpace V]
{s : Set V}
{x y z : V}
(hx : x ∈ GenerateLine s)
(hy : y ∈ GenerateLine s)
(h : sbtw x z y)
:
theorem
Set.IsLine.close_right
{V : Type u_1}
[MetricSpace V]
{L : Set V}
(hL : L.IsLine)
{a b c : V}
(ha : a ∈ L)
(hb : b ∈ L)
(hc : sbtw a b c)
:
theorem
Set.IsLine.close_left
{V : Type u_1}
[MetricSpace V]
{L : Set V}
(hL : L.IsLine)
{a b c : V}
(ha : a ∈ L)
(hb : b ∈ L)
(hc : sbtw c a b)
:
theorem
Set.IsLine.close_middle
{V : Type u_1}
[MetricSpace V]
{L : Set V}
(hL : L.IsLine)
{a b c : V}
(ha : a ∈ L)
(hb : b ∈ L)
(hc : sbtw a c b)
:
theorem
Set.IsLine.generateLine_subset
{V : Type u_1}
[MetricSpace V]
{S L : Set V}
(hL₀ : S ⊆ L)
(hL : L.IsLine)
:
theorem
NotCollinear.rotate
{V : Type u_1}
[MetricSpace V]
{u v w : V}
(h : NotCollinear u v w)
:
NotCollinear v w u
theorem
NotCollinear.swap
{V : Type u_1}
[MetricSpace V]
{u v w : V}
(h : NotCollinear u v w)
:
NotCollinear w v u
theorem
NotCollinear.mk
{V : Type u_1}
[MetricSpace V]
{x y z : V}
[Nontrivial V]
(hl : ∀ (l : Set V), l.IsLine → ¬{x, y, z} ⊆ l)
:
NotCollinear x y z
theorem
thm_two
{V : Type u_1}
[MetricSpace V]
[Nontrivial V]
[Finite V]
(h : ∀ (x y z : V), ¬NotCollinear x y z)
:
theorem
thm_two'
{V : Type u_1}
[MetricSpace V]
[Nontrivial V]
[Finite V]
(h : ∀ (x y z : V), ¬NotCollinear x y z)
:
Equations
Instances For
@[simp]
Equations
- IsSimpleTriangle x y z = (simpleEdges.Adj x y ∧ simpleEdges.Adj y z ∧ simpleEdges.Adj z x ∧ NotCollinear x y z)
Instances For
theorem
IsSimpleTriangle.swap
{V : Type u_1}
[MetricSpace V]
{u v w : V}
(h : IsSimpleTriangle u v w)
:
IsSimpleTriangle w v u
theorem
one_implies_two
{V : Type u_1}
[MetricSpace V]
[Finite V]
(h : ∃ (x : V) (y : V) (z : V), NotCollinear x y z)
:
∃ (x : V) (y : V) (z : V), IsSimpleTriangle x y z
theorem
eqn_7
{V : Type u_1}
[MetricSpace V]
{a b c d : V}
(habc : IsSimpleTriangle a b c)
(habc_min : ∀ (a' b' c' : V), IsSimpleTriangle a' b' c' → Delta a b c ≤ Delta a' b' c')
(hacd : sbtw a c d)
(hcd : simpleEdges.Adj c d)
:
¬simpleEdges.Adj b d
Equations
- [].pathLength = 0
- [head].pathLength = 0
- (x_1 :: y :: xs).pathLength = dist x_1 y + (y :: xs).pathLength
Instances For
@[irreducible]
theorem
List.Sublist.pathLength_sublist
{V : Type u_1}
[MetricSpace V]
{l₁ l₂ : List V}
:
l₁.Sublist l₂ → l₁.pathLength ≤ l₂.pathLength
Equations
Instances For
theorem
List.Special.pathLength_le
{V : Type u_1}
[MetricSpace V]
{a b d : V}
{P : List V}
:
Special a b d P → P.pathLength ≤ [a, b, d].pathLength
theorem
length_mul_le_pathLength_add
{V : Type u_1}
[MetricSpace V]
{r : ℝ}
(hr : 0 ≤ r)
(h : ∀ (x y : V), x ≠ y → r ≤ dist x y)
{l : List V}
:
List.IsChain (fun (x1 x2 : V) => x1 ≠ x2) l → ↑l.length * r ≤ l.pathLength + r
theorem
uniformly_bounded_of_chain_ne_of_pathLength_le
(V : Type u_2)
[MetricSpace V]
[Finite V]
(R : ℝ)
:
∃ (n : ℕ), ∀ (l : List V), List.IsChain (fun (x1 x2 : V) => x1 ≠ x2) l → l.pathLength ≤ R → l.length ≤ n
theorem
abd_special
{V : Type u_1}
[MetricSpace V]
{a b c d : V}
(habc : IsSimpleTriangle a b c)
(hacd : sbtw a c d)
(hbd' : b ≠ d)
(hbd : ¬simpleEdges.Adj b d)
:
List.Special a b d [a, b, d]
theorem
eqn_9
{V : Type u_1}
[MetricSpace V]
{a b c d : V}
{P : List V}
(habc : IsSimpleTriangle a b c)
(hacd : sbtw a c d)
(hbd' : b ≠ d)
(hbd : ¬simpleEdges.Adj b d)
(hP' : ∀ (P' : List V), List.Special a b d P' → P.pathLength ≤ P'.pathLength)
:
theorem
exists_simple_split_right
{V : Type u_1}
[MetricSpace V]
[Finite V]
{a b : V}
(hab : a ≠ b)
(hab' : ¬simpleEdges.Adj a b)
:
∃ (c : V), sbtw a c b ∧ simpleEdges.Adj c b
theorem
exists_simple_split_left
{V : Type u_1}
[MetricSpace V]
[Finite V]
{a b : V}
(hab : a ≠ b)
(hab' : ¬simpleEdges.Adj a b)
:
∃ (c : V), sbtw a c b ∧ simpleEdges.Adj a c
theorem
case1
{V : Type u_1}
[MetricSpace V]
[Finite V]
[Nontrivial V]
{a b c d a₁ a₂ a₃ : V}
{l : List V}
(habc : IsSimpleTriangle a b c)
(habc_min : ∀ (a' b' c' : V), IsSimpleTriangle a' b' c' → Delta a b c ≤ Delta a' b' c')
(hacd : sbtw a c d)
(hbd' : b ≠ d)
(hbd : ¬simpleEdges.Adj b d)
(hPmin : ∀ (P' : List V), List.Special a b d P' → (a₁ :: a₂ :: a₃ :: l).pathLength ≤ P'.pathLength)
(ha₁ : a₁ = a)
(hα : NotCollinear a₁ a₂ a₃)
(hPd : (a₁ :: a₂ :: a₃ :: l).getLast ⋯ = d)
(hPc : List.IsChain (fun (x1 x2 : V) => x1 ≠ x2) (a₁ :: a₂ :: a₃ :: l))
(c₁1 : ¬simpleEdges.Adj a₁ a₂)
(c₁2 : ¬simpleEdges.Adj a₂ a₃)
:
theorem
case2
{V : Type u_1}
[MetricSpace V]
[Finite V]
[Nontrivial V]
{a b c d a₁ a₂ a₃ : V}
{l : List V}
(habc : IsSimpleTriangle a b c)
(habc_min : ∀ (a' b' c' : V), IsSimpleTriangle a' b' c' → Delta a b c ≤ Delta a' b' c')
(hacd : sbtw a c d)
(hbd' : b ≠ d)
(hbd : ¬simpleEdges.Adj b d)
(hPmin : ∀ (P' : List V), List.Special a b d P' → (a₁ :: a₂ :: a₃ :: l).pathLength ≤ P'.pathLength)
(ha₁ : a₁ = a)
(hα : NotCollinear a₁ a₂ a₃)
(hPd : (a₁ :: a₂ :: a₃ :: l).getLast ⋯ = d)
(hPc : List.IsChain (fun (x1 x2 : V) => x1 ≠ x2) (a₁ :: a₂ :: a₃ :: l))
(c₁1 : simpleEdges.Adj a₁ a₂)
(c₁2 : ¬simpleEdges.Adj a₂ a₃)
:
theorem
case3
{V : Type u_1}
[MetricSpace V]
[Finite V]
[Nontrivial V]
{a b c d a₁ a₂ a₃ : V}
{l : List V}
(habc : IsSimpleTriangle a b c)
(habc_min : ∀ (a' b' c' : V), IsSimpleTriangle a' b' c' → Delta a b c ≤ Delta a' b' c')
(hacd : sbtw a c d)
(hbd' : b ≠ d)
(hbd : ¬simpleEdges.Adj b d)
(hPmin : ∀ (P' : List V), List.Special a b d P' → (a₁ :: a₂ :: a₃ :: l).pathLength ≤ P'.pathLength)
(ha₁ : a₁ = a)
(hα : NotCollinear a₁ a₂ a₃)
(hPd : (a₁ :: a₂ :: a₃ :: l).getLast ⋯ = d)
(hPc : List.IsChain (fun (x1 x2 : V) => x1 ≠ x2) (a₁ :: a₂ :: a₃ :: l))
(c₁1 : ¬simpleEdges.Adj a₁ a₂)
(c₁2 : simpleEdges.Adj a₂ a₃)
:
theorem
two_implies_three
{V : Type u_1}
[MetricSpace V]
[Finite V]
[Nontrivial V]
(h : ∃ (x : V) (y : V) (z : V), IsSimpleTriangle x y z)
: