Documentation

LeanPool.Monsky.SegmentTriangle

LeanPool.Monsky.SegmentTriangle #

Imported Lean Pool material for LeanPool.Monsky.SegmentTriangle.

The determinant (signed area form) attached to a triangle's three vertices.

Equations
Instances For

    The 2×2 determinant of two plane vectors.

    Equations
    Instances For
      noncomputable def LeanPool.Monsky.segVec (L : Fin 2EuclideanSpace (Fin 2)) :

      The direction vector of a segment, from its first to its second endpoint.

      Equations
      Instances For

        The sign of the determinant of a triangle, as an element of .

        Equations
        Instances For

          The segment with the two given endpoints.

          Equations
          Instances For

            The segment with its two endpoints swapped.

            Equations
            Instances For

              colin u v w states that v lies strictly between the distinct points u and w.

              Equations
              Instances For

                The i-th side of a triangle, as a segment.

                Equations
                Instances For
                  noncomputable def LeanPool.Monsky.Tco (T : Fin 3EuclideanSpace (Fin 2)) (x : EuclideanSpace (Fin 2)) :
                  Fin 3

                  The i-th barycentric coordinate of a point with respect to a triangle.

                  Equations
                  Instances For
                    noncomputable def LeanPool.Monsky.Oside (T : Fin 3EuclideanSpace (Fin 2)) (i : Fin 3) :

                    The opposite-side normal vector used in the barycentric coordinate formula.

                    Equations
                    Instances For
                      theorem LeanPool.Monsky.aux_det₂ {L : EuclideanSpace (Fin 2)} (hL : L 0) (hi : ∃ (i : Fin 2), L.ofLp i = 0) :
                      det₂ L (v 1 1) 0
                      theorem LeanPool.Monsky.open_segment_sub {L₁ L₂ : Fin 2EuclideanSpace (Fin 2)} (hsub : ∀ (i : Fin 2), L₁ i closedHull L₂) (hL₁ : L₁ 0 L₁ 1) :
                      theorem LeanPool.Monsky.open_segment_sub' {L₁ L₂ : Fin 2EuclideanSpace (Fin 2)} (hsub : closedHull L₁ closedHull L₂) (hL₁ : L₁ 0 L₁ 1) :
                      theorem LeanPool.Monsky.boundary_seg {L : Fin 2EuclideanSpace (Fin 2)} (hL : L 0 L 1) :
                      boundary L = (Finset.image (fun (i : Fin 2) => L i) Finset.univ)
                      theorem LeanPool.Monsky.boundary_seg' {L : Fin 2EuclideanSpace (Fin 2)} (hL : L 0 L 1) (i : Fin 2) :
                      theorem LeanPool.Monsky.boundary_seg_set {L : Fin 2EuclideanSpace (Fin 2)} (hL : L 0 L 1) :
                      boundary L = {L 0, L 1}
                      theorem LeanPool.Monsky.signSeg_line (L : Fin 2EuclideanSpace (Fin 2)) (x y : EuclideanSpace (Fin 2)) (a : ) :
                      signSeg L (x + a y) = signSeg L x + a * det₂ (segVec L) y
                      theorem LeanPool.Monsky.seg_dir_sub {L : Fin 2EuclideanSpace (Fin 2)} {x : EuclideanSpace (Fin 2)} (hxL : x openHull L) :
                      δ > 0, ∀ (a : ), |a| δx + a segVec L openHull L
                      theorem LeanPool.Monsky.segVec_co {L : Fin 2EuclideanSpace (Fin 2)} {x y : EuclideanSpace (Fin 2)} (hx : x closedHull L) (hy : y closedHull L) :
                      ∃ (a : ), y = x + a segVec L
                      theorem LeanPool.Monsky.perp_vec_exists (Lset : Finset (Fin 2EuclideanSpace (Fin 2))) (hLset : LLset, L 0 L 1) :
                      ∃ (y : EuclideanSpace (Fin 2)), LLset, det₂ (segVec L) y 0
                      @[simp]
                      theorem LeanPool.Monsky.segment_rfl {L : Fin 2EuclideanSpace (Fin 2)} :
                      toSegment (L 0) (L 1) = L
                      theorem LeanPool.Monsky.segment_triv {L : Fin 2EuclideanSpace (Fin 2)} :
                      L 0 = L 1 ∃ (x : EuclideanSpace (Fin 2)), closedHull L = {x}
                      theorem LeanPool.Monsky.seg_nontriv_sub {L₁ L₂ : Fin 2EuclideanSpace (Fin 2)} (h : closedHull L₁ closedHull L₂) (hneq : L₁ 0 L₁ 1) :
                      L₂ 0 L₂ 1

                      The remaining index of Fin 3 distinct from two given indices.

                      Equations
                      Instances For
                        theorem LeanPool.Monsky.linearCombinationDetLast {n : } {x y : EuclideanSpace (Fin 2)} {P : Fin nEuclideanSpace (Fin 2)} {α : Fin n} ( : i : Fin n, α i = 1) :
                        (det fun (x_1 : Fin 3) => match x_1 with | 0 => x | 1 => y | 2 => i : Fin n, α i P i) = i : Fin n, α i * det fun (x_1 : Fin 3) => match x_1 with | 0 => x | 1 => y | 2 => P i
                        theorem LeanPool.Monsky.Tco_sum {T : Fin 3EuclideanSpace (Fin 2)} (hdet : det T 0) (x : EuclideanSpace (Fin 2)) :
                        i : Fin 3, Tco T x i = 1
                        theorem LeanPool.Monsky.Tco_linear {n : } {T : Fin 3EuclideanSpace (Fin 2)} {P : Fin nEuclideanSpace (Fin 2)} {α : Fin n} ( : i : Fin n, α i = 1) (k : Fin 3) :
                        Tco T (∑ i : Fin n, α i P i) k = i : Fin n, α i * Tco T (P i) k
                        theorem LeanPool.Monsky.Tco_basis_diag {T : Fin 3EuclideanSpace (Fin 2)} (hdet : det T 0) {i : Fin 3} :
                        Tco T (T i) i = 1
                        theorem LeanPool.Monsky.Tco_basis_off_diag {T : Fin 3EuclideanSpace (Fin 2)} {i j : Fin 3} (hij : i j) :
                        Tco T (T i) j = 0
                        theorem LeanPool.Monsky.Tco_sum_val {T : Fin 3EuclideanSpace (Fin 2)} (hdet : det T 0) {α : Fin 3} ( : i : Fin 3, α i = 1) (k : Fin 3) :
                        Tco T (∑ i : Fin 3, α i T i) k = α k
                        theorem LeanPool.Monsky.Tco_sum_self {T : Fin 3EuclideanSpace (Fin 2)} (hdet : det T 0) (x : EuclideanSpace (Fin 2)) :
                        i : Fin 3, Tco T x i T i = x
                        theorem LeanPool.Monsky.closed_triangle_iff {T : Fin 3EuclideanSpace (Fin 2)} (hdet : det T 0) {x : EuclideanSpace (Fin 2)} :
                        x closedHull T ∀ (i : Fin 3), 0 Tco T x i
                        theorem LeanPool.Monsky.open_triangle_iff {T : Fin 3EuclideanSpace (Fin 2)} (hdet : det T 0) {x : EuclideanSpace (Fin 2)} :
                        x openHull T ∀ (i : Fin 3), 0 < Tco T x i
                        theorem LeanPool.Monsky.two_co_zero_imp_corner_co {T : Fin 3EuclideanSpace (Fin 2)} {i j : Fin 3} {x : EuclideanSpace (Fin 2)} (hdet : det T 0) (hij : i j) (hi : Tco T x i = 0) (hj : Tco T x j = 0) :
                        Tco T x (lastIndex i j) = 1
                        theorem LeanPool.Monsky.two_co_zero_imp_corner {T : Fin 3EuclideanSpace (Fin 2)} {i j : Fin 3} {x : EuclideanSpace (Fin 2)} (hdet : det T 0) (hij : i j) (hi : Tco T x i = 0) (hj : Tco T x j = 0) :
                        x = T (lastIndex i j)
                        theorem LeanPool.Monsky.Tco_line {T : Fin 3EuclideanSpace (Fin 2)} {i : Fin 3} (x y : EuclideanSpace (Fin 2)) (a : ) :
                        Tco T (x + a y) i = Tco T x i + a * det₂ (Oside T i) y / det T
                        theorem LeanPool.Monsky.nondegen_triangle_imp_nondegen_side {T : Fin 3EuclideanSpace (Fin 2)} (i : Fin 3) (hdet : det T 0) :
                        Tside T i 0 Tside T i 1
                        theorem LeanPool.Monsky.mem_closed_side {T : Fin 3EuclideanSpace (Fin 2)} (hdet : det T 0) {x : EuclideanSpace (Fin 2)} (hx : x closedHull T) (i : Fin 3) :
                        Tco T x i = 0 x closedHull (Tside T i)
                        theorem LeanPool.Monsky.closed_side_to_co {T : Fin 3EuclideanSpace (Fin 2)} (hdet : det T 0) {x : EuclideanSpace (Fin 2)} {i : Fin 3} (hx : x closedHull (Tside T i)) :
                        Tco T x i = 0
                        theorem LeanPool.Monsky.mem_open_side {T : Fin 3EuclideanSpace (Fin 2)} (hdet : det T 0) {x : EuclideanSpace (Fin 2)} (hx : x closedHull T) (i : Fin 3) :
                        (Tco T x i = 0 ∀ (j : Fin 3), j i0 < Tco T x j) x openHull (Tside T i)
                        theorem LeanPool.Monsky.mem_open_side_other_co {T : Fin 3EuclideanSpace (Fin 2)} (hdet : det T 0) {x : EuclideanSpace (Fin 2)} {i : Fin 3} (hxOpen : x openHull (Tside T i)) (j : Fin 3) :
                        j i0 < Tco T x j
                        theorem LeanPool.Monsky.boundary_iff {T : Fin 3EuclideanSpace (Fin 2)} (hdet : det T 0) {x : EuclideanSpace (Fin 2)} (hx : x closedHull T) :
                        x boundary T ∃ (i : Fin 3), Tco T x i = 0
                        theorem LeanPool.Monsky.side_in_boundary {T : Fin 3EuclideanSpace (Fin 2)} (hdet : det T 0) (i : Fin 3) :
                        theorem LeanPool.Monsky.boundary_is_union_sides {T : Fin 3EuclideanSpace (Fin 2)} (hdet : det T 0) :
                        boundary T = ⋃ (i : Fin 3), closedHull (Tside T i)
                        theorem LeanPool.Monsky.el_boundary_imp_side {T : Fin 3EuclideanSpace (Fin 2)} (hdet : det T 0) {x : EuclideanSpace (Fin 2)} (hx : x boundary T) :
                        ∃ (i : Fin 3), x closedHull (Tside T i)
                        theorem LeanPool.Monsky.el_in_boundary_imp_side {T : Fin 3EuclideanSpace (Fin 2)} {x : EuclideanSpace (Fin 2)} (hdet : det T 0) (hx : x boundary T) (hv : ∀ (i : Fin 3), x T i) :
                        ∃ (i : Fin 3), x openHull (Tside T i)
                        theorem LeanPool.Monsky.seg_inter_open {T : Fin 3EuclideanSpace (Fin 2)} {x y : EuclideanSpace (Fin 2)} {i : Fin 3} (hxT : x openHull (Tside T i)) (hdet : det T 0) (hdet₂ : det₂ (segVec (Tside T i)) y 0) :
                        σ{-1, 1}, (∃ δ > 0, ∀ (a : ), 0 < aa δx + a σ y openHull T) ∀ (a : ), 0 < ax + a -σ yclosedHull T
                        theorem LeanPool.Monsky.seg_sub_side {T : Fin 3EuclideanSpace (Fin 2)} {L : Fin 2EuclideanSpace (Fin 2)} {x : EuclideanSpace (Fin 2)} {i : Fin 3} (hdet : det T 0) (hxL : x openHull L) (hxT : x openHull (Tside T i)) (hInter : openHull T closedHull L = ) (hv : ∀ (i : Fin 3), T iopenHull L) :
                        theorem LeanPool.Monsky.colin_reverse {u v w : EuclideanSpace (Fin 2)} (h : colin u v w) :
                        colin w v u
                        theorem LeanPool.Monsky.middle_not_boundary_colin {u v w : EuclideanSpace (Fin 2)} (hcolin : colin u v w) :
                        u v v w
                        noncomputable def LeanPool.Monsky.makeNewTwoSimplex (a b : Fin 2) :
                        Fin 2

                        The two-simplex used to express a point of one segment inside another.

                        Equations
                        Instances For
                          theorem LeanPool.Monsky.makeNewTwoSimplex_lem (a b : Fin 2) (ha_simplex : a openSimplex 2) (hb_simplex : b openSimplex 2) :
                          theorem LeanPool.Monsky.two_colin_in_openHull {u v w x : EuclideanSpace (Fin 2)} (h₁ : colin u v w) (h₂ : colin v w x) :
                          theorem LeanPool.Monsky.colin_trans_right {u v w x : EuclideanSpace (Fin 2)} (h₁ : colin u v w) (h₂ : colin v w x) :
                          colin u w x
                          theorem LeanPool.Monsky.colin_trans_left {u v w x : EuclideanSpace (Fin 2)} (h₁ : colin u v w) (h₂ : colin v w x) :
                          colin u v x
                          theorem LeanPool.Monsky.sub_collinear_left {u v w t : EuclideanSpace (Fin 2)} (hc : colin u v w) (ht : t openHull (toSegment u v)) :
                          colin u t v
                          theorem LeanPool.Monsky.sub_collinear_right {u v w t : EuclideanSpace (Fin 2)} (hc : colin u v w) (ht : t openHull (toSegment u v)) :
                          colin t v w
                          theorem LeanPool.Monsky.sub_collinear_right' {u v w t : EuclideanSpace (Fin 2)} (hc : colin u v w) (ht : t closedHull (toSegment u v)) (htv : t v) :
                          colin t v w
                          theorem LeanPool.Monsky.sub_collinear_right_symm' {u v w t : EuclideanSpace (Fin 2)} (hc : colin u v w) (ht : t closedHull (toSegment v w)) (htv : t v) :
                          colin u v t
                          theorem LeanPool.Monsky.colin_sub_aux {u v w x : EuclideanSpace (Fin 2)} {L : Fin 2EuclideanSpace (Fin 2)} (hc : colin u v w) (hLsub : closedHull L closedHull (toSegment u w)) (hv : vopenHull L) (hxL : x openHull L) (hx : x closedHull (toSegment u v)) :

                          The closed hull of the segment associated to an unordered pair of points.

                          Equations
                          Instances For
                            theorem LeanPool.Monsky.closedHull_eq_imp_eq_triv {u v x y : EuclideanSpace (Fin 2)} (huv : u = v) (h : closedHull (toSegment u v) = closedHull (toSegment x y)) :
                            u = x u = y
                            theorem LeanPool.Monsky.closedHull_eq_imp_eq_or_rev {L₁ L₂ : Fin 2EuclideanSpace (Fin 2)} (h : closedHull L₁ = closedHull L₂) :
                            L₁ = L₂ L₁ = reverseSegment L₂
                            noncomputable def LeanPool.Monsky.linePar (v₁ v₂ : EuclideanSpace (Fin 2)) :

                            The parametrization of the line through v₁ in direction v₂.

                            Equations
                            Instances For
                              theorem LeanPool.Monsky.seg_par_injective {v₁ v₂ : EuclideanSpace (Fin 2)} (h : v₂ 0) :
                              theorem LeanPool.Monsky.seg_par₀ {v₁ v₂ : EuclideanSpace (Fin 2)} :
                              linePar v₁ v₂ 0 = v₁
                              theorem LeanPool.Monsky.linePar_scalar_Icc {a b t : } {v₁ v₂ : EuclideanSpace (Fin 2)} (ht : 0 < t) :
                              linePar v₁ (t v₂) '' Set.Icc a b = linePar v₁ v₂ '' Set.Icc (t * a) (t * b)
                              theorem LeanPool.Monsky.linePar_neg {a b : } {v₁ v₂ : EuclideanSpace (Fin 2)} :
                              linePar v₁ v₂ '' Set.Icc a b = linePar v₁ (-v₂) '' Set.Icc (-b) (-a)
                              theorem LeanPool.Monsky.linePar_scalar_Icc' {a b t : } {v₁ v₂ : EuclideanSpace (Fin 2)} (ht : t < 0) :
                              linePar v₁ (t v₂) '' Set.Icc a b = linePar v₁ v₂ '' Set.Icc (t * b) (t * a)
                              theorem LeanPool.Monsky.linePar_trans_Icc {a b t : } {v₁ v₂ : EuclideanSpace (Fin 2)} :
                              linePar (v₁ + t v₂) v₂ '' Set.Icc a b = linePar v₁ v₂ '' Set.Icc (a + t) (b + t)
                              theorem LeanPool.Monsky.linePar_closed {a b : } {v₁ v₂ : EuclideanSpace (Fin 2)} (hab : a b) :
                              linePar v₁ v₂ '' Set.Icc a b = closedHull (toSegment (v₁ + a v₂) (v₁ + b v₂))
                              theorem LeanPool.Monsky.linePar_open {a b : } {v₁ v₂ : EuclideanSpace (Fin 2)} (hab : a < b) :
                              linePar v₁ v₂ '' Set.Ioo a b = openHull (toSegment (v₁ + a v₂) (v₁ + b v₂))
                              theorem LeanPool.Monsky.segVec_mul {L₁ L₂ : Fin 2EuclideanSpace (Fin 2)} (h : closedHull L₁ closedHull L₂) :
                              ∃ (t : ), segVec L₁ = t segVec L₂
                              theorem LeanPool.Monsky.seg_par {L₁ L₂ : Fin 2EuclideanSpace (Fin 2)} (h₁ : L₁ 0 L₁ 1) (h₂ : closedHull L₁ closedHull L₂) :
                              ∃ (a : ) (b : ), closedHull L₂ = linePar (L₁ 0) (segVec L₁) '' Set.Icc a b
                              theorem LeanPool.Monsky.seg_par_openHull {L : Fin 2EuclideanSpace (Fin 2)} {a b : } {v₁ v₂ : EuclideanSpace (Fin 2)} (hab : a < b) (hc : closedHull L = linePar v₁ v₂ '' Set.Icc a b) :
                              openHull L = linePar v₁ v₂ '' Set.Ioo a b
                              theorem LeanPool.Monsky.seg_par_boundary {L : Fin 2EuclideanSpace (Fin 2)} {a b : } {v₁ v₂ : EuclideanSpace (Fin 2)} (hab : a < b) (h : v₂ 0) (hc : closedHull L = linePar v₁ v₂ '' Set.Icc a b) :
                              boundary L = linePar v₁ v₂ '' {a, b}
                              theorem LeanPool.Monsky.seg_par_nontrivial {L : Fin 2EuclideanSpace (Fin 2)} {a b : } {v₁ v₂ : EuclideanSpace (Fin 2)} (hL : L 0 L 1) (hc : closedHull L = linePar v₁ v₂ '' Set.Icc a b) :
                              a < b
                              theorem LeanPool.Monsky.interval_intersection {a₁ a₂ b₁ b₂ : } (hx₁ : Set.Icc 0 1 Set.Icc a₁ b₁) (hx₂ : Set.Icc 0 1 Set.Icc a₂ b₂) (ha : a₂Set.Ioo a₁ b₁) (hb : b₂Set.Ioo a₁ b₁) :
                              Set.Icc a₁ b₁ Set.Icc a₂ b₂
                              theorem LeanPool.Monsky.seg_sub_seg {L₁ L₂ L₃ : Fin 2EuclideanSpace (Fin 2)} (h₁ : L₁ 0 L₁ 1) (h₂ : closedHull L₁ closedHull L₂) (h₃ : closedHull L₁ closedHull L₃) (h₂₃ : Disjoint (openHull L₂) (boundary L₃)) :
                              theorem LeanPool.Monsky.closed_segment_sub_union_segment {A : Finset (Fin 2EuclideanSpace (Fin 2))} {L : Fin 2EuclideanSpace (Fin 2)} (hL : L 0 L 1) (hSub : closedHull L SA, closedHull S) (hA : SA, Disjoint (openHull L) (boundary S)) :
                              SA, closedHull L closedHull S
                              noncomputable def LeanPool.Monsky.segmentAroundX (x y : EuclideanSpace (Fin 2)) (ε₁ ε₂ : ) :

                              A small segment centered at x in the direction of a given vector.

                              Equations
                              Instances For
                                theorem LeanPool.Monsky.openHull_segment_around {x y : EuclideanSpace (Fin 2)} {ε₁ ε₂ : } (h₁ : 0 < ε₁) (h₂ : 0 < ε₂) :
                                x openHull (segmentAroundX x y ε₁ ε₂)
                                theorem LeanPool.Monsky.openHull_segment_around_non_trivial {x y : EuclideanSpace (Fin 2)} {ε₁ ε₂ : } (hy : y 0) ( : ε₁ + ε₂ 0) :
                                segVec (segmentAroundX x y ε₁ ε₂) 0
                                theorem LeanPool.Monsky.real_number_bound_aux {n : } {f g : Fin n} (h₁ : ∀ (i : Fin n), 0 < f i) (h₂ : ε > 0, ∃ (i : Fin n), ε * g i -f i) :
                                theorem LeanPool.Monsky.triangle_openHull_open {T : Fin 3EuclideanSpace (Fin 2)} (hnonDeg : det T 0) {x : EuclideanSpace (Fin 2)} (y : EuclideanSpace (Fin 2)) (hx : x openHull T) :
                                ε > 0, x + ε y openHull T
                                theorem LeanPool.Monsky.triangle_direction_sub {T : Fin 3EuclideanSpace (Fin 2)} {x : EuclideanSpace (Fin 2)} (hx : x closedHull T) (hn : ∀ (i : Fin 3), x T i) :
                                ∃ (L : Fin 2EuclideanSpace (Fin 2)), L 0 L 1 x openHull L closedHull L closedHull T
                                theorem LeanPool.Monsky.inward_pointing_vector_exists {T : Fin 3EuclideanSpace (Fin 2)} {x : EuclideanSpace (Fin 2)} (hx : x closedHull T) (hT : ¬∀ (i j : Fin 3), T i = T j) :
                                theorem LeanPool.Monsky.disjoint_opens_implies_disjoint_open_closed {T₁ T₂ : Fin 3EuclideanSpace (Fin 2)} (hT : Disjoint (openHull T₁) (openHull T₂)) (hDet : det T₂ 0) :