Documentation

Transfer.Hierarchy.ParamLevel

The level lattice + the minimal-(m,n) solver core #

The synthesizer (ParamSynth) composes Param witnesses at a fixed level. The full engine picks the minimal (m,n) a goal needs and synthesizes there. This module supplies the solver's mathematical core:

What remains for the full solver is the resolution wiring (variable-level HasParam with these tables driving instance selection), built on this substrate.

The lattice order on MapClass #

m' ⊑ m: m' carries no more structure than m (the lattice order).

Equations
Instances For
    theorem Transfer.Param.MapClass.le_refl (m : MapClass) :
    (fun (a b : MapClass) => a.le b = true) m m

    Reflexivity.

    theorem Transfer.Param.MapClass.le_trans {a b c : MapClass} (h1 : a.le b = true) (h2 : b.le c = true) :
    (fun (a b : MapClass) => a.le b = true) a c

    Transitivity.

    theorem Transfer.Param.MapClass.le_antisymm {a b : MapClass} (h1 : a.le b = true) (h2 : b.le a = true) :
    a = b

    Antisymmetry.

    theorem Transfer.Param.MapClass.meet_le_left (a b : MapClass) :
    (fun (a b : MapClass) => a.le b = true) (a.meet b) a

    The meet is a lower bound (left).

    theorem Transfer.Param.MapClass.meet_le_right (a b : MapClass) :
    (fun (a b : MapClass) => a.le b = true) (a.meet b) b

    The meet is a lower bound (right).

    The level-arithmetic decision tables (the solver's dispatch core) #

    For a desired output forward level of the arrow/forall combinator, these give the exact (m,n) the two arguments must have — read directly off ParamArrow.lean / ParamForall.lean. A level-directed resolver consults these to choose which Map_k_{arrow,forall} to apply.

    Required domain level for Map_k_forall at a given output forward level (the codomain family is at (k, map0)). From ParamForall.lean: Map1_forall needs the domain at Param02a (backward map2a); Map2a_forall needs the domain at Param04 (backward map4 = univalence) — the localized UA boundary.

    Equations
    Instances For

      The univalence-free forall fragment: output levels whose domain requirement stays below map4. Exactly {map0, map1} — matching the localization in ParamForall.

      Equations
      Instances For

        Map1_forall is univalence-free; Map2a_forall is not (needs map4 domain).