Documentation

LeanPool.ClassificationOfSurfaces.Moise.PlaneComplex

Finite simplicial complexes in the plane #

The shared geometric foundation for the Moise route (Moise, Geometric Topology in Dimensions 2 and 3, Ch. 0 and Ch. 7 conventions): finite complexes of genuine affine simplexes in the Euclidean plane.

The support of a PlaneComplex is defined as the union of the convex hulls of its faces, vertex positions are actual points, faces are affinely independent, and distinct faces meet in the hull of their shared vertex set. None of these fields is satisfiable by bookkeeping alone: face_inter is a genuine geometric constraint (it fails, for example, for two triangles that overlap in an open region).

IsAffineOn/IsPLOn give the honest piecewise-linear predicates: a map is PL on a complex when it is affine on every face of some subdivision. A generic continuous map is not PL on any complex with a 2-face, in contrast to the vacuous IsPLOnSimplexes this replaces.

@[reducible, inline]

The Euclidean plane used throughout the Moise route.

Equations
Instances For

    A closed triangle in the plane: the convex hull of three affinely independent points.

    Equations
    Instances For
      theorem LeanEval.Topology.ClassificationOfSurfaces.Moise.plane_ext {p q : Plane} (h0 : p.ofLp 0 = q.ofLp 0) (h1 : p.ofLp 1 = q.ofLp 1) :
      p = q

      Two plane points with equal coordinates are equal.

      Affine independence transports to the inclusion of a finite set of points contained in the range of the independent family.

      Every finite set of at most two distinct plane points is affinely independent.

      Adjacent edges of an affinely independent triple meet exactly in the shared vertex.

      Every positive ball about one endpoint of a nondegenerate segment contains a relative interior point of that segment.

      An endpoint of a nondegenerate segment cannot lie strictly between two distinct points of that segment.

      theorem LeanEval.Topology.ClassificationOfSurfaces.Moise.segment_subset_of_midpoint_mem_openSegment {P Q A B : Plane} (hPQ : P Q) (hAline : A line[, P, Q]) (hBline : B line[, P, Q]) (hmid : (AffineMap.lineMap P Q) (1 / 2) openSegment A B) (hAoutside : AopenSegment P Q) (hBoutside : BopenSegment P Q) :
      segment P Qsegment A B

      If two collinear points bracket the midpoint of a segment and neither lies in its relative interior, then they bracket the whole segment.

      theorem LeanEval.Topology.ClassificationOfSurfaces.Moise.endpoint_secondCoords_eq_zero_of_two_axis_points {a b x y : Plane} :
      a b∀ (hxy : x y) (hx : x segment a b) (hy : y segment a b) (hx0 : x.ofLp 1 = 0) (hy0 : y.ofLp 1 = 0), a.ofLp 1 = 0 b.ofLp 1 = 0

      If a nondegenerate segment contains two distinct points on the horizontal axis, then both endpoints lie on that axis.

      A finite simplicial complex of affine simplexes in the plane: finitely many vertices at genuine positions, faces of at most three affinely independent vertices, closed under nonempty subsets, with any two face carriers meeting exactly in the carrier of their shared vertex set.

      Instances For

        A finite mesh specified only by its maximal triangles. This is the convenient construction interface for line subdivision: all vertices, edges, and singleton faces are generated by TriangleMesh.toPlaneComplex.

        Instances For

          The mesh consisting of one geometric triangle.

          Equations
          • One or more equations did not get rendered due to their size.
          Instances For
            @[reducible, inline]

            Transport a triangle mesh by an affine equivalence of the plane.

            Equations
            • One or more equations did not get rendered due to their size.
            Instances For
              noncomputable def LeanEval.Topology.ClassificationOfSurfaces.Moise.TriangleMesh.reposition (M : TriangleMesh) (position' : M.VertexPlane) (hposition_injective : Function.Injective position') (haffineIndependent : tM.triangles, AffineIndependent fun (v : t) => position' v) (htriangle_inter : sM.triangles, tM.triangles, (convexHull ) (position' '' s) (convexHull ) (position' '' t) = (convexHull ) (position' '' ↑(s t))) :

              Reposition the vertices of a triangle mesh while retaining its abstract triangles. The caller supplies the geometric nondegeneracy and face-to-face proofs for the new positions.

              Equations
              • One or more equations did not get rendered due to their size.
              Instances For
                @[simp]
                theorem LeanEval.Topology.ClassificationOfSurfaces.Moise.TriangleMesh.reposition_triangles (M : TriangleMesh) (position' : M.VertexPlane) (hposition_injective : Function.Injective position') (haffineIndependent : tM.triangles, AffineIndependent fun (v : t) => position' v) (htriangle_inter : sM.triangles, tM.triangles, (convexHull ) (position' '' s) (convexHull ) (position' '' t) = (convexHull ) (position' '' ↑(s t))) :
                (M.reposition position' hposition_injective haffineIndependent htriangle_inter).triangles = M.triangles

                Delete one maximal triangle from a mesh. Vertices no longer used by any triangle are retained; this keeps the vertex type and geometric positions definitionally unchanged.

                Equations
                • One or more equations did not get rendered due to their size.
                Instances For
                  noncomputable def LeanEval.Topology.ClassificationOfSurfaces.Moise.TriangleMesh.reindex (M : TriangleMesh) {V' : Type} [Fintype V'] [DecidableEq V'] (position' : V'Plane) (hposition_injective : Function.Injective position') (e : M.Vertex V') (hposition : ∀ (v : M.Vertex), position' (e v) = M.position v) :

                  Reindex a triangle mesh inside a larger finite vertex type without changing any geometric positions. Extra vertices of the target type may be unused.

                  Equations
                  • One or more equations did not get rendered due to their size.
                  Instances For
                    @[reducible, inline]

                    Keep a selected collection of maximal triangles. Unused vertices remain in the ambient finite vertex type; they do not contribute faces or support.

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

                      The nonempty subfaces of all maximal triangles in a triangle mesh.

                      Equations
                      Instances For
                        @[reducible, inline]

                        Every finite triangle mesh determines a finite plane complex.

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

                          The carrier of a face: the convex hull of its vertex positions.

                          Equations
                          Instances For

                            The support of the complex: the union of its face carriers.

                            Equations
                            Instances For

                              Transport a finite plane complex through an affine equivalence.

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

                                The two-dimensional faces.

                                Equations
                                Instances For

                                  The edges (one-dimensional faces).

                                  Equations
                                  Instances For
                                    @[reducible, inline]

                                    The subcomplex consisting of the vertices and edges of K.

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

                                      Keep the faces of L which lie in a face of K. This is the standard way to turn an ambient line arrangement into a subdivision subordinate to a pre-existing complex.

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

                                        Keep precisely the faces whose carriers lie in a prescribed geometric set.

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

                                          A complex is purely two-dimensional when every face lies in a two-dimensional one.

                                          Equations
                                          Instances For

                                            The support of a mesh is the union of one maximal triangle and the support left after deleting it.

                                            The two-dimensional cells generated by a triangle mesh are exactly its listed maximal triangles.

                                            Affine transport carries the support of a triangle mesh to the affine image of its original support.

                                            theorem LeanEval.Topology.ClassificationOfSurfaces.Moise.TriangleMesh.reindex_support (M : TriangleMesh) {V' : Type} [Fintype V'] [DecidableEq V'] (position' : V'Plane) (hposition_injective : Function.Injective position') (e : M.Vertex V') (hposition : ∀ (v : M.Vertex), position' (e v) = M.position v) :
                                            (M.reindex position' hposition_injective e hposition).toPlaneComplex.support = M.toPlaneComplex.support

                                            Reindexing without changing positions preserves support.

                                            K' subdivides K: same support, and every face carrier of K' lies inside some face carrier of K.

                                            Equations
                                            Instances For
                                              theorem LeanEval.Topology.ClassificationOfSurfaces.Moise.PlaneComplex.Subdivides.trans {K₂ K₁ K₀ : PlaneComplex} (h₂₁ : K₂.Subdivides K₁) (h₁₀ : K₁.Subdivides K₀) :
                                              K₂.Subdivides K₀

                                              f agrees with an affine map on A.

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

                                                f is piecewise linear on the complex K: affine on every face of some subdivision.

                                                This is the honest PL predicate: a map that is not affine on any neighborhood of a point interior to a 2-cell of K cannot satisfy it, in contrast to the vacuous IsPLOnSimplexes of the retiring PL.lean layer.

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

                                                  A function is PL on a geometric set when the set is the support of a finite plane complex on which the function is PL.

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

                                                    Restrict an affine-on-set witness to a smaller set.

                                                    Composition of affine-on-set maps is affine when the first map carries the source set into the set on which the second map is affine.

                                                    A function agreeing with an affine map on a set is continuous there.

                                                    theorem LeanEval.Topology.ClassificationOfSurfaces.Moise.IsAffineOn.image_segment {f : PlanePlane} {A : Set Plane} (hf : IsAffineOn f A) {x y : Plane} (hsegment : segment x yA) :
                                                    f '' segment x y = segment (f x) (f y)

                                                    An affine-on-set map sends every segment contained in the set to the segment between the endpoint images.

                                                    An affine-on-hull map carries a finite convex hull to the convex hull of the images.

                                                    A map affine on the support is PL without further subdivision.

                                                    A PL witness on a subdivision is also a PL witness on the original complex.

                                                    A PL map is continuous on the support of its complex.

                                                    theorem LeanEval.Topology.ClassificationOfSurfaces.Moise.IsPLOn.affineConjugate {K : PlaneComplex} {f : PlanePlane} (hf : IsPLOn K f) (source target : Plane ≃ᵃ[] Plane) :
                                                    IsPLOn (K.mapAffineEquiv source) fun (x : Plane) => target (f (source.symm x))

                                                    PL maps remain PL after affine changes of coordinates in source and target.

                                                    Barycentric evaluation: the point of the plane with the given barycentric weights.

                                                    Equations
                                                    Instances For
                                                      theorem LeanEval.Topology.ClassificationOfSurfaces.Moise.PlaneComplex.baryEval_eq_sum_of_support (K : PlaneComplex) {x : K.Vertex} {t : Finset K.Vertex} (hsupp : vt, x v = 0) :
                                                      K.baryEval x = vt, x v K.position v
                                                      theorem LeanEval.Topology.ClassificationOfSurfaces.Moise.PlaneComplex.sum_eq_sum_of_support (K : PlaneComplex) {x : K.Vertex} {t : Finset K.Vertex} (hsupp : vt, x v = 0) :
                                                      v : K.Vertex, x v = vt, x v
                                                      theorem LeanEval.Topology.ClassificationOfSurfaces.Moise.PlaneComplex.baryEval_mem_cellCarrier (K : PlaneComplex) {x : K.Vertex} {t : Finset K.Vertex} (hsupp : vt, x v = 0) (h0 : ∀ (v : K.Vertex), 0 x v) (h1 : v : K.Vertex, x v = 1) :

                                                      Barycentric evaluation of weights supported on a face lands in that face's carrier.

                                                      theorem LeanEval.Topology.ClassificationOfSurfaces.Moise.PlaneComplex.exists_weights_of_mem_cellCarrier (K : PlaneComplex) {p : Plane} {t : Finset K.Vertex} (hp : p K.cellCarrier t) :
                                                      ∃ (x : K.Vertex), (∀ vt, x v = 0) (∀ (v : K.Vertex), 0 x v) v : K.Vertex, x v = 1 K.baryEval x = p

                                                      Every point of a face carrier has barycentric weights supported on that face.

                                                      theorem LeanEval.Topology.ClassificationOfSurfaces.Moise.PlaneComplex.baryEval_injOn_face (K : PlaneComplex) {t : Finset K.Vertex} (ht : t K.simplexes) {x y : K.Vertex} (hx : vt, x v = 0) (hy : vt, y v = 0) (hx1 : v : K.Vertex, x v = 1) (hy1 : v : K.Vertex, y v = 1) (heq : K.baryEval x = K.baryEval y) :
                                                      x = y

                                                      Barycentric weights on an affinely independent face are unique.

                                                      The canonical barycentric homeomorphism from the abstract realization of a pure plane complex to its geometric support.

                                                      Equations
                                                      Instances For

                                                        Realization bridge (elementary): a purely two-dimensional plane complex induces a geometric triangulation of its support, by barycentric coordinates in the face containing each point. Injectivity is the uniqueness of barycentric coordinates on each affinely independent face, glued across faces by the face-to-face intersection condition.