Documentation

MiscYD.Book.SylvesterChvatal

inductive Set.collinearTriple {V : Type u_1} [MetricSpace V] :
Set VProp
Instances For
    theorem Set.collinearTriple_iff {V : Type u_1} [MetricSpace V] (a✝ : Set V) :
    a✝.collinearTriple ∃ (u : V) (v : V) (w : V), sbtw u v w a✝ = {u, v, w}
    inductive GenerateLine {V : Type u_1} [MetricSpace V] (s : Set V) :
    Set V
    Instances For
      theorem subset_generateLine {V : Type u_1} [MetricSpace V] (s : Set V) :
      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 generateLine_minimal {V : Type u_1} [MetricSpace V] {S L : Set V} (hL₀ : S L) (out_closed : ∀ {x y z : V}, x Ly Lsbtw x y zz L) (in_closed : ∀ {x y z : V}, x Ly Lsbtw x z yz L) :
      def Line {V : Type u_1} [MetricSpace V] (a b : V) :
      Set V
      Equations
      Instances For
        @[simp]
        theorem left_mem_Line {V : Type u_1} [MetricSpace V] {a b : V} :
        a Line a b
        @[simp]
        theorem right_mem_Line {V : Type u_1} [MetricSpace V] {a b : V} :
        b Line a b
        theorem left_extend_mem_Line {V : Type u_1} [MetricSpace V] {a b c : V} (h : sbtw c a b) :
        c Line a b
        theorem middle_extend_mem_Line {V : Type u_1} [MetricSpace V] {a b c : V} (h : sbtw a c b) :
        c Line a b
        theorem right_extend_mem_Line {V : Type u_1} [MetricSpace V] {a b c : V} (h : sbtw a b c) :
        c Line a b
        theorem Line_comm {V : Type u_1} [MetricSpace V] {u v : V} :
        Line u v = Line v u
        def Set.IsLine {V : Type u_1} [MetricSpace V] (l : Set V) :
        Equations
        Instances For
          theorem Line_isLine {V : Type u_1} [MetricSpace V] {a b : V} (h : a b) :
          (Line a b).IsLine
          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) :
          c L
          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) :
          c L
          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) :
          c L
          theorem Set.IsLine.generateLine_subset {V : Type u_1} [MetricSpace V] {S L : Set V} (hL₀ : S L) (hL : L.IsLine) :
          def NotCollinear {V : Type u_1} [MetricSpace V] (x y z : V) :
          Equations
          Instances For
            theorem notCollinear_iff {V : Type u_1} [MetricSpace V] {x y z : V} :
            NotCollinear x y z x y x z y z ∀ (l : Set V), l.IsLine¬{x, y, z} l
            theorem NotCollinear.rotate {V : Type u_1} [MetricSpace V] {u v w : V} (h : NotCollinear u v w) :
            theorem NotCollinear.swap {V : Type u_1} [MetricSpace V] {u v w : V} (h : NotCollinear u v w) :
            theorem exists_isLine {V : Type u_1} [MetricSpace V] [Nontrivial V] (a b : V) :
            ∃ (L : Set V), L.IsLine {a, b} L
            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) :
            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) :
            ∃ (l : Set V), l = Set.univ l.IsLine
            Equations
            Instances For
              @[simp]
              theorem simpleEdges_adj {V : Type u_1} [MetricSpace V] (a b : V) :
              simpleEdges.Adj a b = (a b ∀ (x : V), ¬sbtw a x b)
              def IsSimpleTriangle {V : Type u_1} [MetricSpace V] (x y z : V) :
              Equations
              Instances For
                theorem IsSimpleTriangle.swap {V : Type u_1} [MetricSpace V] {u v w : V} (h : IsSimpleTriangle u v w) :
                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
                def Delta {V : Type u_1} [MetricSpace V] (u v w : V) :
                Equations
                Instances For
                  theorem Delta_comm {V : Type u_1} [MetricSpace V] {u v w : V} :
                  Delta u v w = Delta w v u
                  theorem Delta_pos_of {V : Type u_1} [MetricSpace V] {u v w : V} (h : NotCollinear u v w) :
                  0 < Delta u v w
                  theorem exists_third {V : Type u_1} [MetricSpace V] {a b : V} (hab : a b) (h : Line a b {a, b}) :
                  cLine a b, sbtw c a b sbtw a c b sbtw a b c
                  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) :
                  theorem eqn_8 {V : Type u_1} [MetricSpace V] {a b c d : V} (habc : IsSimpleTriangle a b c) (hacd : sbtw a c d) :
                  dist a b + dist b d < dist a d + Delta a b c
                  def List.pathLength {V : Type u_1} [MetricSpace V] :
                  List V
                  Equations
                  Instances For
                    theorem List.pathLength_nonneg {V : Type u_1} [MetricSpace V] (l : List V) :
                    theorem List.pathLength_cons_le {V : Type u_1} [MetricSpace V] (x : V) {l : List V} :
                    theorem List.pathLength_triangle_left {V : Type u_1} [MetricSpace V] {v x : V} {l : List V} :
                    (v :: l).pathLength dist v x + (x :: l).pathLength
                    @[irreducible]
                    theorem List.Sublist.pathLength_sublist {V : Type u_1} [MetricSpace V] {l₁ l₂ : List V} :
                    l₁.Sublist l₂l₁.pathLength l₂.pathLength
                    def List.Special {V : Type u_1} [MetricSpace V] (a b d : V) :
                    List VProp
                    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 PP.pathLength [a, b, d].pathLength
                      theorem List.Special.chain_ne {V : Type u_1} [MetricSpace V] {a b d : V} {P : List V} :
                      Special a b d PIsChain (fun (x1 x2 : V) => x1 x2) P
                      theorem exists_min_dist (V : Type u_2) [MetricSpace V] [Finite V] :
                      ∃ (r : ), 0 < r ∀ (x y : V), x yr dist x y
                      theorem length_mul_le_pathLength_add {V : Type u_1} [MetricSpace V] {r : } (hr : 0 r) (h : ∀ (x y : V), x yr dist x y) {l : List V} :
                      List.IsChain (fun (x1 x2 : V) => x1 x2) ll.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) ll.pathLength Rl.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) :
                      P.pathLength < dist a d + Delta a b c
                      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) ( : 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) ( : 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) ( : 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) :
                      ∃ (a : V) (b : V), a b Line a b = {a, b}
                      theorem sylvester_chvatal (V : Type u_2) [MetricSpace V] [Nontrivial V] [Finite V] :
                      ∃ (a : V) (b : V), a b (Line a b = {a, b} Line a b = Set.univ)