Documentation

LeanPool.BrillNoetherGraphs.Utilities.Subdivision.TwoPoleSubdivision

A subdivision split into two factors and two connector slots #

The data are finite incidence tables. They contain no divisors or rank hypotheses. The first connector is oriented from the left factor to the right; the second may be stored in either orientation.

Values of an arbitrary script along a slot, extended constantly past its last endpoint. This lets us reuse the existing slot-value Laplacian API.

Evaluate a firing script along a slot: coordinate zero is the tail, interior coordinates select subdivision vertices, and coordinates at or beyond the length use the head.

Equations
  • One or more equations did not get rendered due to their size.
Instances For
    @[simp]
    theorem Utilities.Certificate.TwoPoleSubdivision.pathValue_interior {n p : ℕ} (s : SubdivisionGraph.Spec n p) (f : firingScript s.graph) (e : Fin p) (k : Fin (s.length e - 1)) :
    pathValue s f e (↑k + 1) = f (s.interiorVertex e k)
    structure Utilities.Certificate.TwoPoleSubdivision.Data {n p : ℕ} (core : ExplicitPotential.Core n p) (nA pA nB pB : ℕ) :

    An orientation-aware partition of a core into two factors and two slots.

    Instances For

      The left factor retains its own vertices and its five (in the application) internal slots, with the original subdivision lengths.

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

        The corresponding right factor.

        Equations
        • One or more equations did not get rendered due to their size.
        Instances For
          @[simp]
          theorem Utilities.Certificate.TwoPoleSubdivision.Data.leftSpec_core {n p nA pA nB pB : ℕ} (s : SubdivisionGraph.Spec n p) (d : Data s.core nA pA nB pB) :
          @[simp]
          @[simp]
          theorem Utilities.Certificate.TwoPoleSubdivision.Data.leftSpec_length {n p nA pA nB pB : ℕ} (s : SubdivisionGraph.Spec n p) (d : Data s.core nA pA nB pB) (e : Fin pA) :
          @[simp]
          theorem Utilities.Certificate.TwoPoleSubdivision.Data.rightSpec_length {n p nA pA nB pB : ℕ} (s : SubdivisionGraph.Spec n p) (d : Data s.core nA pA nB pB) (e : Fin pB) :
          def Utilities.Certificate.TwoPoleSubdivision.Data.left {n p nA pA nB pB : ℕ} (s : SubdivisionGraph.Spec n p) (d : Data s.core nA pA nB pB) :
          (leftSpec s d).Vertex → s.Vertex

          Embed the left factor's subdivision vertices into the full subdivision, preserving core vertices and interior slot coordinates.

          Equations
          Instances For
            def Utilities.Certificate.TwoPoleSubdivision.Data.right {n p nA pA nB pB : ℕ} (s : SubdivisionGraph.Spec n p) (d : Data s.core nA pA nB pB) :
            (rightSpec s d).Vertex → s.Vertex

            Embed the right factor's subdivision vertices into the full subdivision, preserving core vertices and interior slot coordinates.

            Equations
            Instances For
              @[simp]
              theorem Utilities.Certificate.TwoPoleSubdivision.Data.left_core {n p nA pA nB pB : ℕ} (s : SubdivisionGraph.Spec n p) (d : Data s.core nA pA nB pB) (a : Fin nA) :
              @[simp]
              theorem Utilities.Certificate.TwoPoleSubdivision.Data.right_core {n p nA pA nB pB : ℕ} (s : SubdivisionGraph.Spec n p) (d : Data s.core nA pA nB pB) (b : Fin nB) :
              @[simp]
              theorem Utilities.Certificate.TwoPoleSubdivision.Data.left_interior {n p nA pA nB pB : ℕ} (s : SubdivisionGraph.Spec n p) (d : Data s.core nA pA nB pB) (e : Fin pA) (k : Fin ((leftSpec s d).length e - 1)) :
              @[simp]
              theorem Utilities.Certificate.TwoPoleSubdivision.Data.right_interior {n p nA pA nB pB : ℕ} (s : SubdivisionGraph.Spec n p) (d : Data s.core nA pA nB pB) (e : Fin pB) (k : Fin ((rightSpec s d).length e - 1)) :
              theorem Utilities.Certificate.TwoPoleSubdivision.Data.disjoint {n p nA pA nB pB : ℕ} (s : SubdivisionGraph.Spec n p) (d : Data s.core nA pA nB pB) (a : (leftSpec s d).Vertex) (b : (rightSpec s d).Vertex) :
              left s d a ≠ right s d b
              def Utilities.Certificate.TwoPoleSubdivision.Data.potential {n p nA pA nB pB : ℕ} (s : SubdivisionGraph.Spec n p) (d : Data s.core nA pA nB pB) (f : firingScript (leftSpec s d).graph) (g : firingScript (rightSpec s d).graph) (v : Fin n) :

              The core potential obtained by reading the left or right firing script according to the vertex partition.

              Equations
              • One or more equations did not get rendered due to their size.
              Instances For
                def Utilities.Certificate.TwoPoleSubdivision.Data.values {n p nA pA nB pB : ℕ} (s : SubdivisionGraph.Spec n p) (d : Data s.core nA pA nB pB) (f : firingScript (leftSpec s d).graph) (g : firingScript (rightSpec s d).graph) (h : ℕ → ℤ) (e : Fin p) (k : ℕ) :

                Slot values assembled from the two factor scripts, the supplied first-connector profile, and a constant value at the second left pole on the other connector.

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

                  The firing script on the full subdivision assembled from the factor core potentials and connector slot profiles.

                  Equations
                  • One or more equations did not get rendered due to their size.
                  Instances For
                    theorem Utilities.Certificate.TwoPoleSubdivision.Data.compatible {n p nA pA nB pB : ℕ} (s : SubdivisionGraph.Spec n p) (d : Data s.core nA pA nB pB) (f : firingScript (leftSpec s d).graph) (g : firingScript (rightSpec s d).graph) (h : ℕ → ℤ) (h0 : h 0 = f ((leftSpec s d).coreVertex (d.leftPole 0))) (hL : h (s.length (d.slots (Sum.inr 0))) = g ((rightSpec s d).coreVertex (d.rightPole 0))) (hsecond : f ((leftSpec s d).coreVertex (d.leftPole 1)) = g ((rightSpec s d).coreVertex (d.rightPole 1))) :
                    s.SlotValueCompatible (potential s d f g) (values s d f g h)
                    theorem Utilities.Certificate.TwoPoleSubdivision.Data.slope {n p nA pA nB pB : ℕ} (s : SubdivisionGraph.Spec n p) (d : Data s.core nA pA nB pB) (f : firingScript (leftSpec s d).graph) (g : firingScript (rightSpec s d).graph) (h : ℕ → ℤ) (hCompat : s.SlotValueCompatible (potential s d f g) (values s d f g h)) :
                    s.IsStepSlope (script s d f g h) fun (e : Fin p) (k : ℕ) => values s d f g h e (k + 1) - values s d f g h e k