Documentation

LeanPool.BrillNoetherGraphs.Utilities.Subdivision.AffineCoverData

List-backed affine-cover tree data #

AffineCover.CoverTree uses a function Fin arity → CoverTree m for the children of a branch. That representation is convenient for the checker and its soundness proof, but awkward for generated certificate files. This module provides a small passive input type whose branch children are ordinary lists.

Decoding is a fuelled structural traversal and returns an Option. Consequently no claim about an external emitter or parser enters the trusted argument: under-fuelled data is rejected, and an accepted value is first converted to the already-proved CoverTree checker. An emitter may use any easy upper bound on tree depth, such as the number of witness commands.

Passive, emitter-friendly covering-tree data with list-backed branches.

Instances For

    Fuelled structural conversion from list-backed data to the function-backed trusted tree. Every recursive child conversion consumes one unit of fuel.

    Equations
    Instances For

      Attempt to decode list-backed data using the advertised depth bound.

      Equations
      Instances For

        Direct propositional validity of list-backed data under the currently active rows. Fuel is consumed once at every level, exactly as in decodeFuel, but no intermediate function-backed tree is constructed.

        Equations
        Instances For

          Direct Boolean replay of list-backed data. This deliberately fuses decoding and checking: generated trees remain ordinary lists all the way down, so kernel reduction never materializes a large function-backed tree.

          Equations
          Instances For

            Propositional validity of list-backed data, stated directly on the passive representation checked by the kernel.

            Equations
            Instances For

              Executable checker for list-backed covering data.

              Equations
              Instances For
                @[simp]
                theorem Utilities.Certificate.AffineCover.CoverTreeData.check_eq_true_iff {m : ℕ} (data : CoverTreeData) (fuel : ℕ) (base : List (AffineForm m)) (cones : List (List (AffineForm m))) :
                data.check fuel base cones = true ↔ data.Valid fuel base cones

                The list-backed checker implements exactly CoverTreeData.Valid.

                theorem Utilities.Certificate.AffineCover.CoverTreeData.covers_of_check_eq_true {m : ℕ} (data : CoverTreeData) (fuel : ℕ) (base : List (AffineForm m)) (cones : List (List (AffineForm m))) (hCheck : data.check fuel base cones = true) :
                Covers base cones

                Soundness of the passive list-backed layer: accepted data proves integral coverage through the existing CoverTree soundness theorem.

                A small closed example #

                List-backed spelling of the strict two-cone partition example from AffineCover. Child-list position is the corresponding cone-form index.

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

                  An out-of-range cone index is rejected before it can use getD's default empty cone.

                  An out-of-range form index is rejected before it can use getD's default zero form.

                  Kernel-checked coverage obtained through the list-backed data layer.