Documentation

LeanPool.ClassificationOfSurfaces.Moise.LineSubdivision

Subdividing finite plane complexes by affine lines #

Moise Chapter 2 cuts a polygonal region by the finitely many lines containing its edges. This file develops that construction from its local primitive: when an affine functional has opposite signs at the endpoints of an edge, its zero gives the new subdivision vertex on that edge.

Three affinely independent points form an affine basis of the plane.

Equations
Instances For

    The affine equivalence carrying one ordered nondegenerate plane triangle to another.

    Equations
    • One or more equations did not get rendered due to their size.
    Instances For

      The affine equivalence between ordered triangles carries corresponding line-map points to corresponding line-map points.

      theorem LeanEval.Topology.ClassificationOfSurfaces.Moise.affineIndependent_plane_triple_of_det_ne_zero {p₀ p₁ p₂ : Plane} (hdet : (p₁ - p₀).ofLp 0 * (p₂ - p₀).ofLp 1 - (p₁ - p₀).ofLp 1 * (p₂ - p₀).ofLp 0 0) :

      The determinant criterion for three points in the Euclidean plane.

      An affine supporting hyperplane cuts a finite convex hull in precisely the hull of the vertices lying on that hyperplane.

      Set-valued version of the supporting-hyperplane face formula. Convex-hull membership uses only finitely many points, so the finite formula above applies to each witness.

      theorem LeanEval.Topology.ClassificationOfSurfaces.Moise.convexHull_inter_of_affine_separation (s t u : Finset Plane) (f : Plane →ᵃ[] ) (hs : xs, 0 f x) (ht : xt, f x 0) (hszero : {xs | f x = 0} = u) (htzero : {xt | f x = 0} = u) :

      Two finite convex hulls lying on opposite sides of an affine hyperplane intersect in their common zero face.

      theorem LeanEval.Topology.ClassificationOfSurfaces.Moise.convexHull_image_inter_of_affine_separation {V : Type u_1} [DecidableEq V] (position : VPlane) :
      Function.Injective position∀ (s t : Finset V) (f : Plane →ᵃ[] ) (hs : vs, 0 f (position v)) (ht : vt, f (position v) 0) (hszero : vs, f (position v) = 0 v s t) (htzero : vt, f (position v) = 0 v s t), (convexHull ) (position '' s) (convexHull ) (position '' t) = (convexHull ) (position '' ↑(s t))

      Vertex-indexed form of convexHull_inter_of_affine_separation. This is the form used when checking the maximal triangles of a mesh.

      The reference split of a triangle #

      A point of the Euclidean plane with the displayed Cartesian coordinates.

      Equations
      Instances For

        Vertices of the reference line split: the standard triangle vertices followed by one point on each edge issuing from the origin.

        Equations
        • One or more equations did not get rendered due to their size.
        Instances For

          The first Cartesian coordinate, regarded as an affine functional.

          Equations
          Instances For

            The second Cartesian coordinate, regarded as an affine functional.

            Equations
            Instances For

              The affine line through the two new edge points in the reference split.

              Equations
              • One or more equations did not get rendered due to their size.
              Instances For

                The affine line through (a,0) and (0,1) in the reference split.

                Equations
                • One or more equations did not get rendered due to their size.
                Instances For

                  A line through (a,0) lying strictly between the other two rays of the reference split. Its second coefficient is chosen between a and a / b.

                  Equations
                  • One or more equations did not get rendered due to their size.
                  Instances For
                    noncomputable def LeanEval.Topology.ClassificationOfSurfaces.Moise.referenceSplitMesh (a b : ) (ha0 : 0 < a) (ha1 : a < 1) (hb0 : 0 < b) (hb1 : b < 1) :

                    The three triangles produced when a line meets the two edges issuing from the origin of the standard triangle.

                    Equations
                    • One or more equations did not get rendered due to their size.
                    Instances For
                      theorem LeanEval.Topology.ClassificationOfSurfaces.Moise.mem_convexHull_range_fin3_of_weights (p : Fin 3Plane) (x : Plane) (w : Fin 3) (hw : ∀ (i : Fin 3), 0 w i) (hsum : w 0 + w 1 + w 2 = 1) (hx : w 0 p 0 + w 1 p 1 + w 2 p 2 = x) :

                      A three-term nonnegative affine combination belongs to the corresponding triangle.

                      Cartesian membership criterion for the standard closed triangle.

                      The three reference triangles cover exactly the standard triangle.

                      The reference line split preserves the support of the standard triangle.

                      The reference split through one vertex #

                      The referenceEdgeSplitPosition declaration.

                      Equations
                      • One or more equations did not get rendered due to their size.
                      Instances For

                        The two-triangle reference mesh used when the cutting line passes through vertex 2.

                        Equations
                        • One or more equations did not get rendered due to their size.
                        Instances For

                          The point where the affine functional f vanishes along the oriented edge from p to q. The useful case is f p > 0 > f q.

                          Equations
                          Instances For

                            The cut point is the unique zero of f on an oppositely signed edge.

                            Negating the affine functional does not change its geometric cut point.

                            The transported split of an arbitrary triangle #

                            The ordered vertices of the standard triangle.

                            Equations
                            • One or more equations did not get rendered due to their size.
                            Instances For

                              The parameter at which a line cuts the edge from the positive vertex to a negative vertex.

                              Equations
                              Instances For
                                noncomputable def LeanEval.Topology.ClassificationOfSurfaces.Moise.triangleLineSplitMesh (p : Fin 3Plane) (hp : AffineIndependent p) (f : Plane →ᵃ[] ) (hp0 : 0 < f (p 0)) (hp1 : f (p 1) < 0) (hp2 : f (p 2) < 0) :

                                The reference split transported to an arbitrary ordered triangle. The first vertex is on the positive side of the line and the other two are on its negative side.

                                Equations
                                • One or more equations did not get rendered due to their size.
                                Instances For
                                  theorem LeanEval.Topology.ClassificationOfSurfaces.Moise.triangleLineSplitMesh_support (p : Fin 3Plane) (hp : AffineIndependent p) (f : Plane →ᵃ[] ) (hp0 : 0 < f (p 0)) (hp1 : f (p 1) < 0) (hp2 : f (p 2) < 0) :

                                  Splitting a triangle along an affine line preserves its support.

                                  Coherent cut vertices for a finite mesh #

                                  @[reducible, inline]

                                  The maximal triangles, packaged with their membership proof.

                                  Equations
                                  Instances For

                                    A proof-independent ordering of the three vertices of a maximal triangle.

                                    Equations
                                    Instances For

                                      A proof-independent ordering of the three vertices of a maximal triangle.

                                      Equations
                                      Instances For

                                        Ordered pairs of old vertices whose values under f have opposite signs. Both orientations are retained; their geometric cut positions are equal and are deduplicated in refinementPoints.

                                        Equations
                                        Instances For

                                          The geometric zero of f on an oppositely signed pair of old vertices.

                                          Equations
                                          Instances For

                                            All old vertex positions together with all possible cut positions. Using geometric points as the new vertex labels automatically identifies the cut computed from the two orientations of one edge, and the same edge as seen from its two incident triangles.

                                            Equations
                                            Instances For
                                              @[reducible, inline]

                                              Vertex type used by the coherent refinement.

                                              Equations
                                              Instances For

                                                An old vertex as a vertex of the coherent refinement.

                                                Equations
                                                Instances For

                                                  The cut point of an oppositely signed pair as a vertex of the coherent refinement.

                                                  Equations
                                                  Instances For

                                                    Identifying the coherent vertex pools for f and -f; geometrically this is the identity.

                                                    Equations
                                                    Instances For
                                                      noncomputable def LeanEval.Topology.ClassificationOfSurfaces.Moise.TriangleMesh.strictModelVertex (M : TriangleMesh) (f : Plane →ᵃ[] ) (t : M.Triangle) (h0 : 0 < f (M.position (M.orderedVertex t 0))) (h1 : f (M.position (M.orderedVertex t 1)) < 0) (h2 : f (M.position (M.orderedVertex t 2)) < 0) :
                                                      Fin 5M.RefinedVertex f

                                                      The five vertices of the strict +-- model in the coherent global vertex pool.

                                                      Equations
                                                      • One or more equations did not get rendered due to their size.
                                                      Instances For

                                                        The geometric five-point list underlying a strict split.

                                                        Equations
                                                        • One or more equations did not get rendered due to their size.
                                                        Instances For

                                                          Geometric identification of the strict five-point list with the affine image of the reference split.

                                                          The strict local model embedded into the shared refinement vertex type.

                                                          Equations
                                                          Instances For

                                                            The strict local split, now using the coherent global vertex pool.

                                                            Equations
                                                            • One or more equations did not get rendered due to their size.
                                                            Instances For

                                                              The strict -++ local split, obtained by applying the +-- model to -f and identifying the two coherent vertex pools.

                                                              Equations
                                                              Instances For

                                                                The same strict model for an arbitrary ordering of three vertices.

                                                                noncomputable def LeanEval.Topology.ClassificationOfSurfaces.Moise.TriangleMesh.strictVertices (M : TriangleMesh) (f : Plane →ᵃ[] ) (v : Fin 3M.Vertex) (h0 : 0 < f (M.position (v 0))) (h1 : f (M.position (v 1)) < 0) (h2 : f (M.position (v 2)) < 0) :
                                                                Fin 5M.RefinedVertex f

                                                                The strictVertices declaration.

                                                                Equations
                                                                Instances For
                                                                  theorem LeanEval.Topology.ClassificationOfSurfaces.Moise.TriangleMesh.strictVertices_val (M : TriangleMesh) (f : Plane →ᵃ[] ) (v : Fin 3M.Vertex) (h0 : 0 < f (M.position (v 0))) (h1 : f (M.position (v 1)) < 0) (h2 : f (M.position (v 2)) < 0) (i : Fin 5) :
                                                                  (M.strictVertices f v h0 h1 h2 i) = strictModelPosition (M.position v) f i
                                                                  noncomputable def LeanEval.Topology.ClassificationOfSurfaces.Moise.TriangleMesh.strictVerticesEmbedding (M : TriangleMesh) (f : Plane →ᵃ[] ) (v : Fin 3M.Vertex) (hv : AffineIndependent (M.position v)) (h0 : 0 < f (M.position (v 0))) (h1 : f (M.position (v 1)) < 0) (h2 : f (M.position (v 2)) < 0) :

                                                                  The strictVerticesEmbedding declaration.

                                                                  Equations
                                                                  Instances For
                                                                    noncomputable def LeanEval.Topology.ClassificationOfSurfaces.Moise.TriangleMesh.strictMeshFor (M : TriangleMesh) (f : Plane →ᵃ[] ) (v : Fin 3M.Vertex) (hv : AffineIndependent (M.position v)) (h0 : 0 < f (M.position (v 0))) (h1 : f (M.position (v 1)) < 0) (h2 : f (M.position (v 2)) < 0) :

                                                                    The strictMeshFor declaration.

                                                                    Equations
                                                                    • One or more equations did not get rendered due to their size.
                                                                    Instances For
                                                                      noncomputable def LeanEval.Topology.ClassificationOfSurfaces.Moise.TriangleMesh.strictNegativeMeshFor (M : TriangleMesh) (f : Plane →ᵃ[] ) (v : Fin 3M.Vertex) (hv : AffineIndependent (M.position v)) (h0 : f (M.position (v 0)) < 0) (h1 : 0 < f (M.position (v 1))) (h2 : 0 < f (M.position (v 2))) :

                                                                      The strictNegativeMeshFor declaration.

                                                                      Equations
                                                                      Instances For

                                                                        The two-triangle model when vertex 2 lies on the cutting line.

                                                                        noncomputable def LeanEval.Topology.ClassificationOfSurfaces.Moise.TriangleMesh.edgeVertices (M : TriangleMesh) (f : Plane →ᵃ[] ) (v : Fin 3M.Vertex) (h0 : 0 < f (M.position (v 0))) (h1 : f (M.position (v 1)) < 0) :
                                                                        Fin 4M.RefinedVertex f

                                                                        The edgeVertices declaration.

                                                                        Equations
                                                                        Instances For
                                                                          theorem LeanEval.Topology.ClassificationOfSurfaces.Moise.TriangleMesh.edgeVertices_val (M : TriangleMesh) (f : Plane →ᵃ[] ) (v : Fin 3M.Vertex) (h0 : 0 < f (M.position (v 0))) (h1 : f (M.position (v 1)) < 0) (i : Fin 4) :
                                                                          (M.edgeVertices f v h0 h1 i) = edgeModelPosition (M.position v) f i

                                                                          The edgeVerticesEmbedding declaration.

                                                                          Equations
                                                                          Instances For

                                                                            The edgeMeshFor declaration.

                                                                            Equations
                                                                            • One or more equations did not get rendered due to their size.
                                                                            Instances For

                                                                              The edgeNegativeMeshFor declaration.

                                                                              Equations
                                                                              Instances For

                                                                                Choosing the local model from the signs #

                                                                                A vertex ordering with one positive value followed by two negative values.

                                                                                Instances For

                                                                                  A vertex ordering with one negative value followed by two positive values.

                                                                                  Instances For

                                                                                    A vertex ordering with one positive, one negative, and one zero value.

                                                                                    Instances For

                                                                                      A vertex ordering with one negative, one positive, and one zero value.

                                                                                      Instances For

                                                                                        The oldVerticesEmbedding declaration.

                                                                                        Equations
                                                                                        Instances For

                                                                                          The canonical local refinement mesh for one old triangle.

                                                                                          Equations
                                                                                          • One or more equations did not get rendered due to their size.
                                                                                          Instances For

                                                                                            Every maximal triangle lies wholly on one closed side of the cutting line.

                                                                                            Equations
                                                                                            Instances For
                                                                                              theorem LeanEval.Topology.ClassificationOfSurfaces.Moise.TriangleMesh.IsMonochromatic.reindex {N : TriangleMesh} {V' : Type} [Fintype V'] [DecidableEq V'] (position' : V'Plane) (hposition_injective : Function.Injective position') (e : N.Vertex V') (hposition : ∀ (v : N.Vertex), position' (e v) = N.position v) (g : Plane →ᵃ[] ) (hN : N.IsMonochromatic g) :
                                                                                              (N.reindex position' hposition_injective e hposition).IsMonochromatic g
                                                                                              theorem LeanEval.Topology.ClassificationOfSurfaces.Moise.TriangleMesh.strictVertices_f (M : TriangleMesh) (f : Plane →ᵃ[] ) (v : Fin 3M.Vertex) (h0 : 0 < f (M.position (v 0))) (h1 : f (M.position (v 1)) < 0) (h2 : f (M.position (v 2)) < 0) (i : Fin 5) :
                                                                                              f (M.strictVertices f v h0 h1 h2 i) = ![f (M.position (v 0)), f (M.position (v 1)), f (M.position (v 2)), 0, 0] i
                                                                                              theorem LeanEval.Topology.ClassificationOfSurfaces.Moise.TriangleMesh.edgeVertices_f (M : TriangleMesh) (f : Plane →ᵃ[] ) (v : Fin 3M.Vertex) (h0 : 0 < f (M.position (v 0))) (h1 : f (M.position (v 1)) < 0) (hzero : f (M.position (v 2)) = 0) (i : Fin 4) :
                                                                                              f (M.edgeVertices f v h0 h1 i) = ![f (M.position (v 0)), f (M.position (v 1)), 0, 0] i

                                                                                              Monochromaticity stated directly for triangles in the shared refined vertex pool.

                                                                                              Equations
                                                                                              Instances For

                                                                                                The abstract three-triangle combinatorial pattern of a strict cut.

                                                                                                Equations
                                                                                                Instances For

                                                                                                  The abstract two-triangle combinatorial pattern of a cut through vertex 2.

                                                                                                  Equations
                                                                                                  Instances For
                                                                                                    theorem LeanEval.Topology.ClassificationOfSurfaces.Moise.TriangleMesh.exists_index_of_mem_edgePattern {V : Type u_1} [DecidableEq V] (z : Fin 4V) {s : Finset V} (hs : s edgePatternTriangles z) {x : V} (hx : x s) :
                                                                                                    ∃ (i : Fin 4), x = z i
                                                                                                    theorem LeanEval.Topology.ClassificationOfSurfaces.Moise.TriangleMesh.strictMeshFor_triangles (M : TriangleMesh) (f : Plane →ᵃ[] ) (v : Fin 3M.Vertex) (hv : AffineIndependent (M.position v)) (h0 : 0 < f (M.position (v 0))) (h1 : f (M.position (v 1)) < 0) (h2 : f (M.position (v 2)) < 0) :
                                                                                                    (M.strictMeshFor f v hv h0 h1 h2).triangles = strictPatternTriangles (M.strictVertices f v h0 h1 h2)
                                                                                                    theorem LeanEval.Topology.ClassificationOfSurfaces.Moise.TriangleMesh.strictPattern_monochromatic_positive (M : TriangleMesh) (f : Plane →ᵃ[] ) (z : Fin 5M.RefinedVertex f) (h0 : 0 f (z 0)) (h1 : f (z 1) 0) (h2 : f (z 2) 0) (h3 : f (z 3) = 0) (h4 : f (z 4) = 0) :
                                                                                                    theorem LeanEval.Topology.ClassificationOfSurfaces.Moise.TriangleMesh.strictPattern_monochromatic_negative (M : TriangleMesh) (f : Plane →ᵃ[] ) (z : Fin 5M.RefinedVertex f) (h0 : f (z 0) 0) (h1 : 0 f (z 1)) (h2 : 0 f (z 2)) (h3 : f (z 3) = 0) (h4 : f (z 4) = 0) :

                                                                                                    The old vertex numbered i in a triangle, regarded as a refined vertex.

                                                                                                    Equations
                                                                                                    Instances For

                                                                                                      The cut vertex on the pair of locally numbered vertices i,j.

                                                                                                      Equations
                                                                                                      Instances For

                                                                                                        Canonical local triangulation after cutting one old triangle by f. There are three triangles when one vertex is strictly separated from the other two, two triangles when the line passes through one vertex and cuts the opposite edge, and the old triangle when the line already meets it in a face.

                                                                                                        Equations
                                                                                                        • One or more equations did not get rendered due to their size.
                                                                                                        Instances For

                                                                                                          Cutting one old triangle by an affine line produces triangles contained in the two closed half-planes.

                                                                                                          View a mesh whose vertex type is identified with the refined vertex pool as a family of triangles on that fixed pool.

                                                                                                          Equations
                                                                                                          Instances For

                                                                                                            The maximal triangles selected by the certified local model, exposed on the fixed shared vertex pool.

                                                                                                            Equations
                                                                                                            • One or more equations did not get rendered due to their size.
                                                                                                            Instances For

                                                                                                              A vertex used by a local line refinement is either an old vertex of its parent triangle or lies on the cutting line.

                                                                                                              Barycentric traces on old parent edges #

                                                                                                              The barycentric coordinate opposite the k-th edge of an old triangle.

                                                                                                              Equations
                                                                                                              Instances For

                                                                                                                The two old geometric vertices of the edge opposite k.

                                                                                                                Equations
                                                                                                                Instances For

                                                                                                                  Vertices of a child triangle lying on the old edge opposite k.

                                                                                                                  Equations
                                                                                                                  Instances For

                                                                                                                    An affine functional taking different values at the endpoints of a segment is injective on that segment.

                                                                                                                    theorem LeanEval.Topology.ClassificationOfSurfaces.Moise.TriangleMesh.eq_endpoint_of_mem_segment_apply_zero_of_mul_nonneg {g : Plane →ᵃ[] } {p q x : Plane} (hprod : 0 g p * g q) (hnotboth : ¬(g p = 0 g q = 0)) (hx : x segment p q) (hzero : g x = 0) :
                                                                                                                    x = p x = q
                                                                                                                    theorem LeanEval.Topology.ClassificationOfSurfaces.Moise.TriangleMesh.trace_vertex_eq_endpoint_or_cut (M : TriangleMesh) (f : Plane →ᵃ[] ) (t : M.Triangle) (k : Fin 3) {a b : M.Vertex} (hab : a b) (hedge : M.oppositeEdgePoints t k = Finset.image M.position {a, b}) {s : Finset (M.RefinedVertex f)} (hs : s M.localMeshTriangles f t) (ha : 0 < f (M.position a)) (hb : f (M.position b) < 0) {x : M.RefinedVertex f} (hx : x M.childEdgeTrace f t k s) :
                                                                                                                    theorem LeanEval.Topology.ClassificationOfSurfaces.Moise.TriangleMesh.trace_vertex_eq_endpoint_of_mul_nonneg (M : TriangleMesh) (f : Plane →ᵃ[] ) (t : M.Triangle) (k : Fin 3) {a b : M.Vertex} (hab : a b) (hedge : M.oppositeEdgePoints t k = Finset.image M.position {a, b}) {s : Finset (M.RefinedVertex f)} (hs : s M.localMeshTriangles f t) (hprod : 0 f (M.position a) * f (M.position b)) (hnotboth : ¬(f (M.position a) = 0 f (M.position b) = 0)) {x : M.RefinedVertex f} (hx : x M.childEdgeTrace f t k s) :
                                                                                                                    theorem LeanEval.Topology.ClassificationOfSurfaces.Moise.TriangleMesh.convexHull_inter_of_signed_three_point_subsets (M : TriangleMesh) (f : Plane →ᵃ[] ) {a b z : M.RefinedVertex f} (ha : 0 < f a) (hb : f b < 0) (hz : f z = 0) {A B : Finset (M.RefinedVertex f)} (hAclass : xA, x = a x = b x = z) (hBclass : xB, x = a x = b x = z) (hAmono : (∀ xA, 0 f x) xA, f x 0) (hBmono : (∀ xB, 0 f x) xB, f x 0) :

                                                                                                                    The finite one-dimensional calculation behind compatibility on a cut edge.

                                                                                                                    theorem LeanEval.Topology.ClassificationOfSurfaces.Moise.TriangleMesh.convexHull_inter_of_two_point_subsets (M : TriangleMesh) (f : Plane →ᵃ[] ) {a b : M.RefinedVertex f} (hab : a b) {A B : Finset (M.RefinedVertex f)} (hA : xA, x = a x = b) (hB : xB, x = a x = b) :

                                                                                                                    The cutting line contains no old edge of the mesh.

                                                                                                                    Equations
                                                                                                                    Instances For

                                                                                                                      A nonnegative affine functional vanishing only at the i-th old vertex.

                                                                                                                      Equations
                                                                                                                      Instances For

                                                                                                                        All maximal triangles of the coherent line refinement.

                                                                                                                        Equations
                                                                                                                        Instances For

                                                                                                                          Subdivision of a finite triangle mesh by one affine line transverse to its old edges.

                                                                                                                          Equations
                                                                                                                          • One or more equations did not get rendered due to their size.
                                                                                                                          Instances For

                                                                                                                            Cutting every triangle of a mesh by one affine line gives a subdivision of the original plane complex.

                                                                                                                            Successively subdivide a mesh by a finite list of affine lines.

                                                                                                                            Equations
                                                                                                                            Instances For