Documentation

LeanPool.BrillNoetherGraphs.Utilities.Subdivision.CoreVertexCut

Checked core vertex cuts and subdivision lifts #

The input data name an articulation vertex and one side of the cut on the core vertices. The other side is the complement, with the articulation reinserted. This module checks that finite data occurrence by occurrence, and lifts it uniformly to every positive-length subdivision.

An interior path vertex belongs to the named side exactly when both core endpoints of its slot belong to that side. Thus a path from the articulation to the complementary side is assigned wholly to the complementary factor; there is no length-dependent case split and parallel slots are retained.

Proof-free articulation data on an ordered finite core. left contains the articulation; right is derived rather than redundantly emitted.

  • glue : Fin n

    The proposed articulation vertex shared by the two sides of the cut.

  • left : Finset (Fin n)

    The chosen left vertex set; validity includes the articulation, which is also inserted into the complementary right side.

Instances For

    The complementary core side, retaining the articulation in both sides.

    Equations
    Instances For

      A core slot whose two non-articulation endpoints lie on opposite sides. Both orientations are included, since slots are stored as ordered pairs while the graph is undirected.

      Equations
      Instances For
        @[instance_reducible]
        Equations

        Exact mathematical validity of passive core-cut data.

        Equations
        Instances For

          Transparent finite replay of Valid.

          Equations
          Instances For
            theorem Utilities.Certificate.CoreVertexCut.Data.mem_right_of_not_mem_left {n p : ℕ} {core : ExplicitPotential.Core n p} (c : Data core) {vertex : Fin n} (hNotLeft : vertex ∉ c.left) :
            vertex ∈ c.right

            A core vertex outside the named side is in the derived complementary side.

            theorem Utilities.Certificate.CoreVertexCut.Data.ne_glue_of_not_mem_left {n p : ℕ} {core : ExplicitPotential.Core n p} (c : Data core) (h : c.Valid) {vertex : Fin n} (hNotLeft : vertex ∉ c.left) :
            vertex ≠ c.glue

            The articulation cannot be outside the named side of valid data.

            The named factor in a subdivision. An interior is admitted precisely when both endpoints of its original slot are admitted by the core cut.

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

              The complementary subdivision factor. It is literally the complement of leftVertices, with the embedded articulation reinserted.

              Equations
              Instances For
                @[simp]
                theorem Utilities.Certificate.CoreVertexCut.Data.mem_leftVertices_core {n p : ℕ} (spec : SubdivisionGraph.Spec n p) (c : Data spec.core) (vertex : Fin n) :
                spec.coreVertex vertex ∈ leftVertices spec c ↔ vertex ∈ c.left
                @[simp]
                theorem Utilities.Certificate.CoreVertexCut.Data.mem_leftVertices_interior {n p : ℕ} (spec : SubdivisionGraph.Spec n p) (c : Data spec.core) (edge : Fin p) (offset : Fin (spec.length edge - 1)) :
                spec.interiorVertex edge offset ∈ leftVertices spec c ↔ spec.core.tail edge ∈ c.left ∧ spec.core.head edge ∈ c.left
                @[simp]
                theorem Utilities.Certificate.CoreVertexCut.Data.mem_rightVertices_iff {n p : ℕ} (spec : SubdivisionGraph.Spec n p) (c : Data spec.core) (vertex : spec.Vertex) :
                vertex ∈ rightVertices spec c ↔ vertex = spec.coreVertex c.glue ∨ vertex ∉ leftVertices spec c
                theorem Utilities.Certificate.CoreVertexCut.Data.stepLeft_eq_glue_of_mem_not_mem {n p : ℕ} (spec : SubdivisionGraph.Spec n p) (c : Data spec.core) (h : c.Valid) (edge : Fin p) (offset : Fin (spec.length edge)) (hLeft : spec.stepLeft edge offset ∈ leftVertices spec c) (hRight : spec.stepRight edge offset ∉ leftVertices spec c) :
                spec.stepLeft edge offset = spec.coreVertex c.glue

                A unit step cannot leave the named subdivision side except through the embedded articulation. This is the key length-independent lift lemma.

                theorem Utilities.Certificate.CoreVertexCut.Data.stepRight_eq_glue_of_mem_not_mem {n p : ℕ} (spec : SubdivisionGraph.Spec n p) (c : Data spec.core) (h : c.Valid) (edge : Fin p) (offset : Fin (spec.length edge)) (hRight : spec.stepRight edge offset ∈ leftVertices spec c) (hLeft : spec.stepLeft edge offset ∉ leftVertices spec c) :
                spec.stepRight edge offset = spec.coreVertex c.glue

                The symmetric unit-step statement: a step cannot enter the named side except through the embedded articulation.

                Lift valid finite core data to a literal one-vertex cut of every positive subdivision of that core.

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

                  Brill--Noether existence on a subdivided core is equivalent to existence on the vertex wedge extracted from valid core-cut data.

                  theorem Utilities.Certificate.CoreVertexCut.Data.BNExists_rank_one_of_factors {n p : ℕ} (spec : SubdivisionGraph.Spec n p) (c : Data spec.core) (h : c.Valid) (dLeft dRight : ℤ) (hLeft : BNExists (toOneVertexCut spec c h).leftGraph 1 dLeft) (hRight : BNExists (toOneVertexCut spec c h).rightGraph 1 dRight) :
                  BNExists spec.graph 1 (dLeft + dRight)

                  Rank-one pencils on the two factors of a valid core cut glue to a pencil on the full subdivision, with degrees adding.

                  theorem Utilities.Certificate.CoreVertexCut.Data.transmissionExists_of_profile {n p : ℕ} (spec : SubdivisionGraph.Spec n p) (c : Data spec.core) (h : c.Valid) (u : (toOneVertexCut spec c h).leftGraph.V) (v : (toOneVertexCut spec c h).rightGraph.V) (tau : AspPerm) (D : CFDiv (toOneVertexCut spec c h).leftGraph) (E : CFDiv (toOneVertexCut spec c h).rightGraph) (hProfile : WedgeTransmissionProfile (toOneVertexCut spec c h).leftGraph (toOneVertexCut spec c h).rightGraph (toOneVertexCut spec c h).leftGlue (toOneVertexCut spec c h).rightGlue D E u v tau) :
                  TransmissionExists spec.graph (↑u) (↑v) tau

                  An arbitrary-ASP transmission profile on the two induced factors of a valid core cut transfers directly to the subdivided graph.

                  A same-left arbitrary-ASP profile on the factors of a valid core cut transfers to the full subdivision.

                  Explicit subdivided-core divisor supplied by a same-left profile.

                  A same-right arbitrary-ASP profile on the factors of a valid core cut transfers to the full subdivision.

                  Explicit subdivided-core divisor supplied by a same-right profile.

                  Accepted finite core data immediately yields a checked cut of any positive subdivision.

                  Equations
                  Instances For

                    The generic core-cut lift can be fed straight into the existing proof-carrying one-vertex-cut interface.

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

                      Closed regression #

                      The two core slots below meet at vertex 1. Their lengths are deliberately different and greater than one, so the accepted lift exercises the rule that every interior is assigned from both endpoints of its parent slot.