Blueprint (GPT formalization): a profinite presentation of the absolute Galois group of ℚ₂

8. Central covers, affine fibres, and Fourier inversion🔗

Definition 8.1 of the paper (Exact-image lower maps).

For a boundary-framed lower target C, let X_\Gamma(C) denote the finite set of boundary-framed exact-image epimorphisms \rho:\Gamma\twoheadrightarrow C at the current lower stage. All sums over X_\Gamma(C) are over exact-image lower maps; proper-image contributions are subtracted separately by induction.

Lean code for Definition8.11 theorem
  • theoremdefined in Q2Presentation/Induction/CandidateLiftPartitionCardinality.lean
    complete
    theorem Q2Presentation.Induction.centralCover_candidateRLiftSemanticData
      {pQ2Presentation.Induction.FramedPair : Q2Presentation.Induction.FramedPairQ2Presentation.Induction.FramedPair : Type 1A **framed pair** `(𝒴, F)`: a boundary-framed marked target together with a
    boundary frame for it (manuscript Definition 4.1 + `eq:beta`).  This is the index of
    Theorem 4.2: the boundary-framed surjection count `e_Γ^β` is a function of the pair.
    The induction of `sec:induction` ranges over *all* such pairs simultaneously
    ("the induction is stated globally", l.1213), ordered by `|L_Y|`. }
      (BQ2Presentation.Induction.MinimalBlock p : Q2Presentation.Induction.MinimalBlockQ2Presentation.Induction.MinimalBlock (p : Q2Presentation.Induction.FramedPair) : Type 1**The §7 minimal non-scalar block.**  Source-uniform module-level data of the
    manuscript tower (`eq:targettower`), with the deep group/representation inputs of
    `lem:simplehead`/`lem:collapse`/`prop:simpleheaddet` isolated as documented fields.  pQ2Presentation.Induction.FramedPair)
      (TQ2Presentation.Induction.CentralCoverElementaryQuotientTowerData B :
        Q2Presentation.Induction.CentralCoverElementaryQuotientTowerDataQ2Presentation.Induction.CentralCoverElementaryQuotientTowerData {p : Q2Presentation.Induction.FramedPair}
      (B : Q2Presentation.Induction.MinimalBlock p) : Type 1A realized elementary quotient tower for `eq:targettower`.
    
    This is the missing target-side finite group datum behind the lower term in
    `eq:Mstage`: the middle quotient `B = Y/R`, the lower quotient `C = Y/K`, and the
    map `B -> C`.  The cardinal equations record the two quotient steps in a form
    that proves strict decrease.
    
    The current `MinimalBlock` supplies the abstract modules, but not this realized
    quotient tower. 
          BQ2Presentation.Induction.MinimalBlock p) :
      NonemptyNonempty.{u} (α : Sort u) : Prop`Nonempty α` is a typeclass that says that `α` is not an empty type,
    that is, there exists an element in the type. It differs from `Inhabited α`
    in that `Nonempty α` is a `Prop`, which means that it does not actually carry
    an element of `α`, only a proof that *there exists* such an element.
    Given `Nonempty α`, you can construct an element of `α` *nonconstructively*
    using `Classical.choice`.
    
        (Q2Presentation.Induction.CentralCoverCandidateRLiftSemanticDataQ2Presentation.Induction.CentralCoverCandidateRLiftSemanticData {p : Q2Presentation.Induction.FramedPair}
      (B : Q2Presentation.Induction.MinimalBlock p)
      (T : Q2Presentation.Induction.CentralCoverElementaryQuotientTowerData B) : Type 1Semantic candidate-side final `R`-lift packet.
    
    The exact-image partition used by the recursion is not merely an abstract
    cardinality equivalence.  In the manuscript it comes from the central
    `R = Phi(K)` cover over the realized quotient tower
    `Y -> B = Y/R -> C = Y/K`, the obstruction map of `lem:covertransform`, the
    affine lift equation of `lem:affinelifting`, and the Frattini-surjectivity
    argument in `prop:finalfourier`.
    
    The packet is now split into the four manuscript-facing pieces above: exact-image
    base quotient, obstruction-index-to-base map, affine fibre torsor, and Frattini
    exact-image surjectivity.  BQ2Presentation.Induction.MinimalBlock p
          TQ2Presentation.Induction.CentralCoverElementaryQuotientTowerData B)
    theorem Q2Presentation.Induction.centralCover_candidateRLiftSemanticData
      {pQ2Presentation.Induction.FramedPair :
        Q2Presentation.Induction.FramedPairQ2Presentation.Induction.FramedPair : Type 1A **framed pair** `(𝒴, F)`: a boundary-framed marked target together with a
    boundary frame for it (manuscript Definition 4.1 + `eq:beta`).  This is the index of
    Theorem 4.2: the boundary-framed surjection count `e_Γ^β` is a function of the pair.
    The induction of `sec:induction` ranges over *all* such pairs simultaneously
    ("the induction is stated globally", l.1213), ordered by `|L_Y|`. }
      (BQ2Presentation.Induction.MinimalBlock p :
        Q2Presentation.Induction.MinimalBlockQ2Presentation.Induction.MinimalBlock (p : Q2Presentation.Induction.FramedPair) : Type 1**The §7 minimal non-scalar block.**  Source-uniform module-level data of the
    manuscript tower (`eq:targettower`), with the deep group/representation inputs of
    `lem:simplehead`/`lem:collapse`/`prop:simpleheaddet` isolated as documented fields. 
          pQ2Presentation.Induction.FramedPair)
      (TQ2Presentation.Induction.CentralCoverElementaryQuotientTowerData B :
        Q2Presentation.Induction.CentralCoverElementaryQuotientTowerDataQ2Presentation.Induction.CentralCoverElementaryQuotientTowerData {p : Q2Presentation.Induction.FramedPair}
      (B : Q2Presentation.Induction.MinimalBlock p) : Type 1A realized elementary quotient tower for `eq:targettower`.
    
    This is the missing target-side finite group datum behind the lower term in
    `eq:Mstage`: the middle quotient `B = Y/R`, the lower quotient `C = Y/K`, and the
    map `B -> C`.  The cardinal equations record the two quotient steps in a form
    that proves strict decrease.
    
    The current `MinimalBlock` supplies the abstract modules, but not this realized
    quotient tower. 
          BQ2Presentation.Induction.MinimalBlock p) :
      NonemptyNonempty.{u} (α : Sort u) : Prop`Nonempty α` is a typeclass that says that `α` is not an empty type,
    that is, there exists an element in the type. It differs from `Inhabited α`
    in that `Nonempty α` is a `Prop`, which means that it does not actually carry
    an element of `α`, only a proof that *there exists* such an element.
    Given `Nonempty α`, you can construct an element of `α` *nonconstructively*
    using `Classical.choice`.
    
        (Q2Presentation.Induction.CentralCoverCandidateRLiftSemanticDataQ2Presentation.Induction.CentralCoverCandidateRLiftSemanticData {p : Q2Presentation.Induction.FramedPair}
      (B : Q2Presentation.Induction.MinimalBlock p)
      (T : Q2Presentation.Induction.CentralCoverElementaryQuotientTowerData B) : Type 1Semantic candidate-side final `R`-lift packet.
    
    The exact-image partition used by the recursion is not merely an abstract
    cardinality equivalence.  In the manuscript it comes from the central
    `R = Phi(K)` cover over the realized quotient tower
    `Y -> B = Y/R -> C = Y/K`, the obstruction map of `lem:covertransform`, the
    affine lift equation of `lem:affinelifting`, and the Frattini-surjectivity
    argument in `prop:finalfourier`.
    
    The packet is now split into the four manuscript-facing pieces above: exact-image
    base quotient, obstruction-index-to-base map, affine fibre torsor, and Frattini
    exact-image surjectivity. 
          BQ2Presentation.Induction.MinimalBlock p TQ2Presentation.Induction.CentralCoverElementaryQuotientTowerData B)
    **REFINED CANDIDATE R-LIFT INPUT.**
    
    Manuscript anchors: `def:Xgamma`, `lem:covertransform`,
    `lem:affinelifting`, and `prop:finalfourier`.  This theorem-level packet now
    reassembles the smaller residuals above instead of hiding them in one axiom. 

Lemma 8.2 of the paper (Common scalar character group).

For both sources \Gamma\in\{\GA,\GQ\} one has

|\Hom_{\mathrm{cont}}(\Gamma,\F_2)|=8.

Moreover scalar twisting by any such character preserves the boundary-framed condition for the central double covers used below.

Lean code for Lemma8.23 theorems
  • theoremdefined in Q2Presentation/Induction/CoverEightLocal.lean
    complete
    theorem Q2Presentation.Induction.cover_Z1_card_gq2
      {YtQ2Presentation.BoundaryFramedTarget : Q2Presentation.BoundaryFramedTargetQ2Presentation.BoundaryFramedTarget : Type 1A **boundary-framed marked target** `𝒴 = (Y, L_Y, π_Y, θ_Y)` (manuscript
    Definition 4.1, `def:framed`): a finite group `Y` with a normal finite `2`-subgroup
    `L_Y`, a surjection `π_Y : Y ↠ H` onto a finite *tame* quotient with kernel exactly
    `L_Y`, and an *elementary decoration* `θ_Y : Y → Multiplicative E` into the
    multiplicative image of a finite `𝔽₂`-vector space `E`.  The pair
    `q_Y = (π_Y, θ_Y)` fixes both the tame quotient `Y / L_Y ≅ H` and the decoration. } [FiniteFinite.{u_3} (α : Sort u_3) : PropA type is `Finite` if it is in bijective correspondence to some `Fin n`.
    
    This is similar to `Fintype`, but `Finite` is a proposition rather than data.
    A particular benefit to this is that `Finite` instances are definitionally equal to one another
    (due to proof irrelevance) rather than being merely propositionally equal,
    and, furthermore, `Finite` instances generally avoid the need for `Decidable` instances.
    One other notable difference is that `Finite` allows there to be `Finite p` instances
    for all `p : Prop`, which is not allowed by `Fintype` due to universe constraints.
    An application of this is that `Finite (x ∈ s → β x)` follows from the general instance for pi
    types, assuming `[∀ x, Finite (β x)]`.
    Implementation note: this is a reason `Finite α` is not defined as `Nonempty (Fintype α)`.
    
    Every `Fintype` instance provides a `Finite` instance via `Finite.of_fintype`.
    Conversely, one can noncomputably create a `Fintype` instance from a `Finite` instance
    via `Fintype.ofFinite`. In a proof one might write
    ```lean
      have := Fintype.ofFinite α
    ```
    to obtain such an instance.
    
    Do not write noncomputable `Fintype` instances; instead write `Finite` instances
    and use this `Fintype.ofFinite` interface.
    The `Fintype` instances should be relied upon to be computable for evaluation purposes.
    
    Theorems should use `Finite` instead of `Fintype`, unless definitions in the theorem statement
    require `Fintype`.
    Definitions should prefer `Finite` as well, unless it is important that the definitions
    are meant to be computable in the reduction or `#eval` sense.
     YtQ2Presentation.BoundaryFramedTarget.YQ2Presentation.BoundaryFramedTarget.Y (self : Q2Presentation.BoundaryFramedTarget) : TypeThe finite target group `Y`. ]
      (EQ2Presentation.Lifting.ElementaryKernel Yt : Q2Presentation.Lifting.ElementaryKernelQ2Presentation.Lifting.ElementaryKernel (Yt : Q2Presentation.BoundaryFramedTarget) : TypeA normal subgroup of a framed target that is killed by the decoration,
    contained in the wild kernel, **abelian**, and of **exponent 2** — the shape
    of the chief kernels the cochain keeps quantify over.  YtQ2Presentation.BoundaryFramedTarget)
      (FQ2Presentation.BoundaryFrame Yt : Q2Presentation.BoundaryFrameQ2Presentation.BoundaryFrame (Yt : Q2Presentation.BoundaryFramedTarget) : TypeA **boundary frame** on a boundary-framed target `𝒴` (manuscript `eq:beta`):
    the fixed compatible data `α : 𝕋_tame ↠ H`, `ψ : Π → Multiplicative E`, and the
    induced `β : ∂_bd → H × Multiplicative E`.  Surjectivity of `α` records that `H`
    really is a tame quotient (manuscript: "Fix a finite tame quotient `H`, an
    epimorphism `α : 𝕋_A ↠ H`").  YtQ2Presentation.BoundaryFramedTarget)
      (hcardNat.card (Q2Presentation.Lifting.NAdd E) = 2 : Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number.
    If `α` is infinite, `Nat.card α = 0`.  (Q2Presentation.Lifting.NAddQ2Presentation.Lifting.NAdd {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) : TypeThe additive `F₂`-carrier of an elementary kernel.  EQ2Presentation.Lifting.ElementaryKernel Yt) =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`. 2)
      (gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GQ2
      (Q2Presentation.TorsorProgram.quotientFramedTarget Yt E.N ⋯ ⋯)
      (Q2Presentation.TorsorProgram.quotientFrame Yt E.N ⋯ ⋯ F) :
        Q2Presentation.boundaryFramedSurjQ2Presentation.boundaryFramedSurj {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ)
      (Yt : Q2Presentation.BoundaryFramedTarget) (F : Q2Presentation.BoundaryFrame Yt) : TypeThe **boundary-framed surjections** `e_Γ^β(𝒴)` (manuscript `eq:eGamma`): the
    continuous surjections `f : Γ ↠ Y` whose induced map to `H × E` is the prescribed
    `β ∘ b_Γ`, i.e. `q_Y ∘ f = β ∘ b_Γ`.  This is the subtype counted in Theorem 4.2;
    its cardinality is `e_Γ^β(𝒴)`.  Q2Presentation.boundaryPackage_GQ2Q2Presentation.boundaryPackage_GQ2 : Q2Presentation.BoundaryPackage Q2Presentation.GQ2Profinite**The local boundary package** `boundaryPackage_GQ2 : BoundaryPackage G_{ℚ₂}`
    (manuscript Prop 3.14 `prop:compatiblemarking` for `Γ = G_{ℚ₂}`; plan Turn 4 §6),
    the `G_{ℚ₂}`-side instance of the uniform Stage-C boundary datum.
    
    * `tameMap`/`tame_surj`/`tame_nu` — the local tame quotient `G_{ℚ₂} ↠ T_A` with
      unramified marking `ν_loc`, from the axiom `gq2_tame_quotient` (Prop 3.2 + the
      local half of Prop `compatiblemarking`);
    * `pro2Map`/`pro2_surj`/`pro2_nu` — the local maximal pro-`2` quotient
      `G_{ℚ₂} ↠ Π` with the *same* unramified marking `ν_loc`, proved from the fully
      marked Labute comparison `labute_GQ2_maxPro2_marked` (`pro2Map_loc`,
      `pro2Map_loc_surjective`, `pro2Map_loc_nu`);
    * `nu := ν_loc` — the common unramified character through which both factor. 
          (Q2Presentation.TorsorProgram.quotientFramedTargetQ2Presentation.TorsorProgram.quotientFramedTarget (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y)
      [hNn : N.Normal] (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) : Q2Presentation.BoundaryFramedTarget**The quotient framed target** `Y/N` (same `H`, same `E`, image wild kernel).  YtQ2Presentation.BoundaryFramedTarget EQ2Presentation.Lifting.ElementaryKernel Yt.NQ2Presentation.Lifting.ElementaryKernel.N {Yt : Q2Presentation.BoundaryFramedTarget}
      (self : Q2Presentation.Lifting.ElementaryKernel Yt) : Subgroup Yt.Y  )
          (Q2Presentation.TorsorProgram.quotientFrameQ2Presentation.TorsorProgram.quotientFrame (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y)
      [hNn : N.Normal] (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) (F : Q2Presentation.BoundaryFrame Yt) :
      Q2Presentation.BoundaryFrame (Q2Presentation.TorsorProgram.quotientFramedTarget Yt N hNLY hNθ)The frame transports verbatim (`H`, `E`, `α`, `ψ`, `β` unchanged).  YtQ2Presentation.BoundaryFramedTarget EQ2Presentation.Lifting.ElementaryKernel Yt.NQ2Presentation.Lifting.ElementaryKernel.N {Yt : Q2Presentation.BoundaryFramedTarget}
      (self : Q2Presentation.Lifting.ElementaryKernel Yt) : Subgroup Yt.Y   FQ2Presentation.BoundaryFrame Yt))
      (f₀Q2Presentation.TorsorProgram.liftHom Yt E.N ⋯ ⋯ Q2Presentation.boundaryPackage_GQ2 F g :
        Q2Presentation.TorsorProgram.liftHomQ2Presentation.TorsorProgram.liftHom (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y) [hNn : N.Normal]
      (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ)
      (F : Q2Presentation.BoundaryFrame Yt)
      (g :
        Q2Presentation.boundaryFramedSurj B (Q2Presentation.TorsorProgram.quotientFramedTarget Yt N hNLY hNθ)
          (Q2Presentation.TorsorProgram.quotientFrame Yt N hNLY hNθ F)) :
      Type**All framed lifts** of a child-framed surjection (surjectivity NOT imposed;
    the Frattini argument recovers it per use-site).  YtQ2Presentation.BoundaryFramedTarget EQ2Presentation.Lifting.ElementaryKernel Yt.NQ2Presentation.Lifting.ElementaryKernel.N {Yt : Q2Presentation.BoundaryFramedTarget}
      (self : Q2Presentation.Lifting.ElementaryKernel Yt) : Subgroup Yt.Y  
          Q2Presentation.boundaryPackage_GQ2Q2Presentation.boundaryPackage_GQ2 : Q2Presentation.BoundaryPackage Q2Presentation.GQ2Profinite**The local boundary package** `boundaryPackage_GQ2 : BoundaryPackage G_{ℚ₂}`
    (manuscript Prop 3.14 `prop:compatiblemarking` for `Γ = G_{ℚ₂}`; plan Turn 4 §6),
    the `G_{ℚ₂}`-side instance of the uniform Stage-C boundary datum.
    
    * `tameMap`/`tame_surj`/`tame_nu` — the local tame quotient `G_{ℚ₂} ↠ T_A` with
      unramified marking `ν_loc`, from the axiom `gq2_tame_quotient` (Prop 3.2 + the
      local half of Prop `compatiblemarking`);
    * `pro2Map`/`pro2_surj`/`pro2_nu` — the local maximal pro-`2` quotient
      `G_{ℚ₂} ↠ Π` with the *same* unramified marking `ν_loc`, proved from the fully
      marked Labute comparison `labute_GQ2_maxPro2_marked` (`pro2Map_loc`,
      `pro2Map_loc_surjective`, `pro2Map_loc_nu`);
    * `nu := ν_loc` — the common unramified character through which both factor.  FQ2Presentation.BoundaryFrame Yt gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GQ2
      (Q2Presentation.TorsorProgram.quotientFramedTarget Yt E.N ⋯ ⋯)
      (Q2Presentation.TorsorProgram.quotientFrame Yt E.N ⋯ ⋯ F)) :
      Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number.
    If `α` is infinite, `Nat.card α = 0`. 
          (Q2Presentation.TorsorProgram.Z1Q2Presentation.TorsorProgram.Z1 (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y) [hNn : N.Normal]
      (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ)
      (F : Q2Presentation.BoundaryFrame Yt)
      (g :
        Q2Presentation.boundaryFramedSurj B (Q2Presentation.TorsorProgram.quotientFramedTarget Yt N hNLY hNθ)
          (Q2Presentation.TorsorProgram.quotientFrame Yt N hNLY hNθ F))
      (f₀ : Q2Presentation.TorsorProgram.liftHom Yt N hNLY hNθ B F g) : Type**The twisted cocycle set** relative to a base lift.  YtQ2Presentation.BoundaryFramedTarget EQ2Presentation.Lifting.ElementaryKernel Yt.NQ2Presentation.Lifting.ElementaryKernel.N {Yt : Q2Presentation.BoundaryFramedTarget}
      (self : Q2Presentation.Lifting.ElementaryKernel Yt) : Subgroup Yt.Y  
            Q2Presentation.boundaryPackage_GQ2Q2Presentation.boundaryPackage_GQ2 : Q2Presentation.BoundaryPackage Q2Presentation.GQ2Profinite**The local boundary package** `boundaryPackage_GQ2 : BoundaryPackage G_{ℚ₂}`
    (manuscript Prop 3.14 `prop:compatiblemarking` for `Γ = G_{ℚ₂}`; plan Turn 4 §6),
    the `G_{ℚ₂}`-side instance of the uniform Stage-C boundary datum.
    
    * `tameMap`/`tame_surj`/`tame_nu` — the local tame quotient `G_{ℚ₂} ↠ T_A` with
      unramified marking `ν_loc`, from the axiom `gq2_tame_quotient` (Prop 3.2 + the
      local half of Prop `compatiblemarking`);
    * `pro2Map`/`pro2_surj`/`pro2_nu` — the local maximal pro-`2` quotient
      `G_{ℚ₂} ↠ Π` with the *same* unramified marking `ν_loc`, proved from the fully
      marked Labute comparison `labute_GQ2_maxPro2_marked` (`pro2Map_loc`,
      `pro2Map_loc_surjective`, `pro2Map_loc_nu`);
    * `nu := ν_loc` — the common unramified character through which both factor.  FQ2Presentation.BoundaryFrame Yt gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GQ2
      (Q2Presentation.TorsorProgram.quotientFramedTarget Yt E.N ⋯ ⋯)
      (Q2Presentation.TorsorProgram.quotientFrame Yt E.N ⋯ ⋯ F) f₀Q2Presentation.TorsorProgram.liftHom Yt E.N ⋯ ⋯ Q2Presentation.boundaryPackage_GQ2 F g) =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`.
        8
    theorem Q2Presentation.Induction.cover_Z1_card_gq2
      {YtQ2Presentation.BoundaryFramedTarget :
        Q2Presentation.BoundaryFramedTargetQ2Presentation.BoundaryFramedTarget : Type 1A **boundary-framed marked target** `𝒴 = (Y, L_Y, π_Y, θ_Y)` (manuscript
    Definition 4.1, `def:framed`): a finite group `Y` with a normal finite `2`-subgroup
    `L_Y`, a surjection `π_Y : Y ↠ H` onto a finite *tame* quotient with kernel exactly
    `L_Y`, and an *elementary decoration* `θ_Y : Y → Multiplicative E` into the
    multiplicative image of a finite `𝔽₂`-vector space `E`.  The pair
    `q_Y = (π_Y, θ_Y)` fixes both the tame quotient `Y / L_Y ≅ H` and the decoration. }
      [FiniteFinite.{u_3} (α : Sort u_3) : PropA type is `Finite` if it is in bijective correspondence to some `Fin n`.
    
    This is similar to `Fintype`, but `Finite` is a proposition rather than data.
    A particular benefit to this is that `Finite` instances are definitionally equal to one another
    (due to proof irrelevance) rather than being merely propositionally equal,
    and, furthermore, `Finite` instances generally avoid the need for `Decidable` instances.
    One other notable difference is that `Finite` allows there to be `Finite p` instances
    for all `p : Prop`, which is not allowed by `Fintype` due to universe constraints.
    An application of this is that `Finite (x ∈ s → β x)` follows from the general instance for pi
    types, assuming `[∀ x, Finite (β x)]`.
    Implementation note: this is a reason `Finite α` is not defined as `Nonempty (Fintype α)`.
    
    Every `Fintype` instance provides a `Finite` instance via `Finite.of_fintype`.
    Conversely, one can noncomputably create a `Fintype` instance from a `Finite` instance
    via `Fintype.ofFinite`. In a proof one might write
    ```lean
      have := Fintype.ofFinite α
    ```
    to obtain such an instance.
    
    Do not write noncomputable `Fintype` instances; instead write `Finite` instances
    and use this `Fintype.ofFinite` interface.
    The `Fintype` instances should be relied upon to be computable for evaluation purposes.
    
    Theorems should use `Finite` instead of `Fintype`, unless definitions in the theorem statement
    require `Fintype`.
    Definitions should prefer `Finite` as well, unless it is important that the definitions
    are meant to be computable in the reduction or `#eval` sense.
     YtQ2Presentation.BoundaryFramedTarget.YQ2Presentation.BoundaryFramedTarget.Y (self : Q2Presentation.BoundaryFramedTarget) : TypeThe finite target group `Y`. ]
      (EQ2Presentation.Lifting.ElementaryKernel Yt :
        Q2Presentation.Lifting.ElementaryKernelQ2Presentation.Lifting.ElementaryKernel (Yt : Q2Presentation.BoundaryFramedTarget) : TypeA normal subgroup of a framed target that is killed by the decoration,
    contained in the wild kernel, **abelian**, and of **exponent 2** — the shape
    of the chief kernels the cochain keeps quantify over. 
          YtQ2Presentation.BoundaryFramedTarget)
      (FQ2Presentation.BoundaryFrame Yt : Q2Presentation.BoundaryFrameQ2Presentation.BoundaryFrame (Yt : Q2Presentation.BoundaryFramedTarget) : TypeA **boundary frame** on a boundary-framed target `𝒴` (manuscript `eq:beta`):
    the fixed compatible data `α : 𝕋_tame ↠ H`, `ψ : Π → Multiplicative E`, and the
    induced `β : ∂_bd → H × Multiplicative E`.  Surjectivity of `α` records that `H`
    really is a tame quotient (manuscript: "Fix a finite tame quotient `H`, an
    epimorphism `α : 𝕋_A ↠ H`").  YtQ2Presentation.BoundaryFramedTarget)
      (hcardNat.card (Q2Presentation.Lifting.NAdd E) = 2 :
        Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number.
    If `α` is infinite, `Nat.card α = 0`. 
            (Q2Presentation.Lifting.NAddQ2Presentation.Lifting.NAdd {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) : TypeThe additive `F₂`-carrier of an elementary kernel.  EQ2Presentation.Lifting.ElementaryKernel Yt) =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`.
          2)
      (gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GQ2
      (Q2Presentation.TorsorProgram.quotientFramedTarget Yt E.N ⋯ ⋯)
      (Q2Presentation.TorsorProgram.quotientFrame Yt E.N ⋯ ⋯ F) :
        Q2Presentation.boundaryFramedSurjQ2Presentation.boundaryFramedSurj {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ)
      (Yt : Q2Presentation.BoundaryFramedTarget) (F : Q2Presentation.BoundaryFrame Yt) : TypeThe **boundary-framed surjections** `e_Γ^β(𝒴)` (manuscript `eq:eGamma`): the
    continuous surjections `f : Γ ↠ Y` whose induced map to `H × E` is the prescribed
    `β ∘ b_Γ`, i.e. `q_Y ∘ f = β ∘ b_Γ`.  This is the subtype counted in Theorem 4.2;
    its cardinality is `e_Γ^β(𝒴)`. 
          Q2Presentation.boundaryPackage_GQ2Q2Presentation.boundaryPackage_GQ2 : Q2Presentation.BoundaryPackage Q2Presentation.GQ2Profinite**The local boundary package** `boundaryPackage_GQ2 : BoundaryPackage G_{ℚ₂}`
    (manuscript Prop 3.14 `prop:compatiblemarking` for `Γ = G_{ℚ₂}`; plan Turn 4 §6),
    the `G_{ℚ₂}`-side instance of the uniform Stage-C boundary datum.
    
    * `tameMap`/`tame_surj`/`tame_nu` — the local tame quotient `G_{ℚ₂} ↠ T_A` with
      unramified marking `ν_loc`, from the axiom `gq2_tame_quotient` (Prop 3.2 + the
      local half of Prop `compatiblemarking`);
    * `pro2Map`/`pro2_surj`/`pro2_nu` — the local maximal pro-`2` quotient
      `G_{ℚ₂} ↠ Π` with the *same* unramified marking `ν_loc`, proved from the fully
      marked Labute comparison `labute_GQ2_maxPro2_marked` (`pro2Map_loc`,
      `pro2Map_loc_surjective`, `pro2Map_loc_nu`);
    * `nu := ν_loc` — the common unramified character through which both factor. 
          (Q2Presentation.TorsorProgram.quotientFramedTargetQ2Presentation.TorsorProgram.quotientFramedTarget (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y)
      [hNn : N.Normal] (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) : Q2Presentation.BoundaryFramedTarget**The quotient framed target** `Y/N` (same `H`, same `E`, image wild kernel). 
            YtQ2Presentation.BoundaryFramedTarget EQ2Presentation.Lifting.ElementaryKernel Yt.NQ2Presentation.Lifting.ElementaryKernel.N {Yt : Q2Presentation.BoundaryFramedTarget}
      (self : Q2Presentation.Lifting.ElementaryKernel Yt) : Subgroup Yt.Y  )
          (Q2Presentation.TorsorProgram.quotientFrameQ2Presentation.TorsorProgram.quotientFrame (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y)
      [hNn : N.Normal] (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) (F : Q2Presentation.BoundaryFrame Yt) :
      Q2Presentation.BoundaryFrame (Q2Presentation.TorsorProgram.quotientFramedTarget Yt N hNLY hNθ)The frame transports verbatim (`H`, `E`, `α`, `ψ`, `β` unchanged). 
            YtQ2Presentation.BoundaryFramedTarget EQ2Presentation.Lifting.ElementaryKernel Yt.NQ2Presentation.Lifting.ElementaryKernel.N {Yt : Q2Presentation.BoundaryFramedTarget}
      (self : Q2Presentation.Lifting.ElementaryKernel Yt) : Subgroup Yt.Y   FQ2Presentation.BoundaryFrame Yt))
      (f₀Q2Presentation.TorsorProgram.liftHom Yt E.N ⋯ ⋯ Q2Presentation.boundaryPackage_GQ2 F g :
        Q2Presentation.TorsorProgram.liftHomQ2Presentation.TorsorProgram.liftHom (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y) [hNn : N.Normal]
      (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ)
      (F : Q2Presentation.BoundaryFrame Yt)
      (g :
        Q2Presentation.boundaryFramedSurj B (Q2Presentation.TorsorProgram.quotientFramedTarget Yt N hNLY hNθ)
          (Q2Presentation.TorsorProgram.quotientFrame Yt N hNLY hNθ F)) :
      Type**All framed lifts** of a child-framed surjection (surjectivity NOT imposed;
    the Frattini argument recovers it per use-site). 
          YtQ2Presentation.BoundaryFramedTarget EQ2Presentation.Lifting.ElementaryKernel Yt.NQ2Presentation.Lifting.ElementaryKernel.N {Yt : Q2Presentation.BoundaryFramedTarget}
      (self : Q2Presentation.Lifting.ElementaryKernel Yt) : Subgroup Yt.Y  
          Q2Presentation.boundaryPackage_GQ2Q2Presentation.boundaryPackage_GQ2 : Q2Presentation.BoundaryPackage Q2Presentation.GQ2Profinite**The local boundary package** `boundaryPackage_GQ2 : BoundaryPackage G_{ℚ₂}`
    (manuscript Prop 3.14 `prop:compatiblemarking` for `Γ = G_{ℚ₂}`; plan Turn 4 §6),
    the `G_{ℚ₂}`-side instance of the uniform Stage-C boundary datum.
    
    * `tameMap`/`tame_surj`/`tame_nu` — the local tame quotient `G_{ℚ₂} ↠ T_A` with
      unramified marking `ν_loc`, from the axiom `gq2_tame_quotient` (Prop 3.2 + the
      local half of Prop `compatiblemarking`);
    * `pro2Map`/`pro2_surj`/`pro2_nu` — the local maximal pro-`2` quotient
      `G_{ℚ₂} ↠ Π` with the *same* unramified marking `ν_loc`, proved from the fully
      marked Labute comparison `labute_GQ2_maxPro2_marked` (`pro2Map_loc`,
      `pro2Map_loc_surjective`, `pro2Map_loc_nu`);
    * `nu := ν_loc` — the common unramified character through which both factor.  FQ2Presentation.BoundaryFrame Yt
          gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GQ2
      (Q2Presentation.TorsorProgram.quotientFramedTarget Yt E.N ⋯ ⋯)
      (Q2Presentation.TorsorProgram.quotientFrame Yt E.N ⋯ ⋯ F)) :
      Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number.
    If `α` is infinite, `Nat.card α = 0`. 
          (Q2Presentation.TorsorProgram.Z1Q2Presentation.TorsorProgram.Z1 (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y) [hNn : N.Normal]
      (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ)
      (F : Q2Presentation.BoundaryFrame Yt)
      (g :
        Q2Presentation.boundaryFramedSurj B (Q2Presentation.TorsorProgram.quotientFramedTarget Yt N hNLY hNθ)
          (Q2Presentation.TorsorProgram.quotientFrame Yt N hNLY hNθ F))
      (f₀ : Q2Presentation.TorsorProgram.liftHom Yt N hNLY hNθ B F g) : Type**The twisted cocycle set** relative to a base lift.  YtQ2Presentation.BoundaryFramedTarget
            EQ2Presentation.Lifting.ElementaryKernel Yt.NQ2Presentation.Lifting.ElementaryKernel.N {Yt : Q2Presentation.BoundaryFramedTarget}
      (self : Q2Presentation.Lifting.ElementaryKernel Yt) : Subgroup Yt.Y  
            Q2Presentation.boundaryPackage_GQ2Q2Presentation.boundaryPackage_GQ2 : Q2Presentation.BoundaryPackage Q2Presentation.GQ2Profinite**The local boundary package** `boundaryPackage_GQ2 : BoundaryPackage G_{ℚ₂}`
    (manuscript Prop 3.14 `prop:compatiblemarking` for `Γ = G_{ℚ₂}`; plan Turn 4 §6),
    the `G_{ℚ₂}`-side instance of the uniform Stage-C boundary datum.
    
    * `tameMap`/`tame_surj`/`tame_nu` — the local tame quotient `G_{ℚ₂} ↠ T_A` with
      unramified marking `ν_loc`, from the axiom `gq2_tame_quotient` (Prop 3.2 + the
      local half of Prop `compatiblemarking`);
    * `pro2Map`/`pro2_surj`/`pro2_nu` — the local maximal pro-`2` quotient
      `G_{ℚ₂} ↠ Π` with the *same* unramified marking `ν_loc`, proved from the fully
      marked Labute comparison `labute_GQ2_maxPro2_marked` (`pro2Map_loc`,
      `pro2Map_loc_surjective`, `pro2Map_loc_nu`);
    * `nu := ν_loc` — the common unramified character through which both factor. 
            FQ2Presentation.BoundaryFrame Yt gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GQ2
      (Q2Presentation.TorsorProgram.quotientFramedTarget Yt E.N ⋯ ⋯)
      (Q2Presentation.TorsorProgram.quotientFrame Yt E.N ⋯ ⋯ F) f₀Q2Presentation.TorsorProgram.liftHom Yt E.N ⋯ ⋯ Q2Presentation.boundaryPackage_GQ2 F g) =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`.
        8
    **`lem:commonscalars` (l.3791–3815), local half, at ANY order-2 elementary
    kernel**, as a THEOREM from the citable `q2_localduality_general` count clause
    (`localObstruction_count`): `|Z¹| = |N|² · |𝒳| = 2² · 2 = 8`.  See the module
    docstring for the provenance note (Euler–Poincaré route, content-equal to the
    manuscript's `labute_GQ2_maxPro2_marked` route). 
  • theoremdefined in Q2Presentation/Lifting/CoverEight.lean
    complete
    theorem Q2Presentation.Lifting.cover_Z1_card_gammaA
      {YtQ2Presentation.BoundaryFramedTarget : Q2Presentation.BoundaryFramedTargetQ2Presentation.BoundaryFramedTarget : Type 1A **boundary-framed marked target** `𝒴 = (Y, L_Y, π_Y, θ_Y)` (manuscript
    Definition 4.1, `def:framed`): a finite group `Y` with a normal finite `2`-subgroup
    `L_Y`, a surjection `π_Y : Y ↠ H` onto a finite *tame* quotient with kernel exactly
    `L_Y`, and an *elementary decoration* `θ_Y : Y → Multiplicative E` into the
    multiplicative image of a finite `𝔽₂`-vector space `E`.  The pair
    `q_Y = (π_Y, θ_Y)` fixes both the tame quotient `Y / L_Y ≅ H` and the decoration. } [FiniteFinite.{u_3} (α : Sort u_3) : PropA type is `Finite` if it is in bijective correspondence to some `Fin n`.
    
    This is similar to `Fintype`, but `Finite` is a proposition rather than data.
    A particular benefit to this is that `Finite` instances are definitionally equal to one another
    (due to proof irrelevance) rather than being merely propositionally equal,
    and, furthermore, `Finite` instances generally avoid the need for `Decidable` instances.
    One other notable difference is that `Finite` allows there to be `Finite p` instances
    for all `p : Prop`, which is not allowed by `Fintype` due to universe constraints.
    An application of this is that `Finite (x ∈ s → β x)` follows from the general instance for pi
    types, assuming `[∀ x, Finite (β x)]`.
    Implementation note: this is a reason `Finite α` is not defined as `Nonempty (Fintype α)`.
    
    Every `Fintype` instance provides a `Finite` instance via `Finite.of_fintype`.
    Conversely, one can noncomputably create a `Fintype` instance from a `Finite` instance
    via `Fintype.ofFinite`. In a proof one might write
    ```lean
      have := Fintype.ofFinite α
    ```
    to obtain such an instance.
    
    Do not write noncomputable `Fintype` instances; instead write `Finite` instances
    and use this `Fintype.ofFinite` interface.
    The `Fintype` instances should be relied upon to be computable for evaluation purposes.
    
    Theorems should use `Finite` instead of `Fintype`, unless definitions in the theorem statement
    require `Fintype`.
    Definitions should prefer `Finite` as well, unless it is important that the definitions
    are meant to be computable in the reduction or `#eval` sense.
     YtQ2Presentation.BoundaryFramedTarget.YQ2Presentation.BoundaryFramedTarget.Y (self : Q2Presentation.BoundaryFramedTarget) : TypeThe finite target group `Y`. ]
      (EQ2Presentation.Lifting.ElementaryKernel Yt : Q2Presentation.Lifting.ElementaryKernelQ2Presentation.Lifting.ElementaryKernel (Yt : Q2Presentation.BoundaryFramedTarget) : TypeA normal subgroup of a framed target that is killed by the decoration,
    contained in the wild kernel, **abelian**, and of **exponent 2** — the shape
    of the chief kernels the cochain keeps quantify over.  YtQ2Presentation.BoundaryFramedTarget)
      (hcardNat.card (Q2Presentation.Lifting.NAdd E) = 2 : Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number.
    If `α` is infinite, `Nat.card α = 0`.  (Q2Presentation.Lifting.NAddQ2Presentation.Lifting.NAdd {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) : TypeThe additive `F₂`-carrier of an elementary kernel.  EQ2Presentation.Lifting.ElementaryKernel Yt) =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`. 2)
      (FQ2Presentation.BoundaryFrame Yt : Q2Presentation.BoundaryFrameQ2Presentation.BoundaryFrame (Yt : Q2Presentation.BoundaryFramedTarget) : TypeA **boundary frame** on a boundary-framed target `𝒴` (manuscript `eq:beta`):
    the fixed compatible data `α : 𝕋_tame ↠ H`, `ψ : Π → Multiplicative E`, and the
    induced `β : ∂_bd → H × Multiplicative E`.  Surjectivity of `α` records that `H`
    really is a tame quotient (manuscript: "Fix a finite tame quotient `H`, an
    epimorphism `α : 𝕋_A ↠ H`").  YtQ2Presentation.BoundaryFramedTarget)
      (gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GammaA
      (Q2Presentation.TorsorProgram.quotientFramedTarget Yt E.N ⋯ ⋯)
      (Q2Presentation.TorsorProgram.quotientFrame Yt E.N ⋯ ⋯ F) :
        Q2Presentation.boundaryFramedSurjQ2Presentation.boundaryFramedSurj {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ)
      (Yt : Q2Presentation.BoundaryFramedTarget) (F : Q2Presentation.BoundaryFrame Yt) : TypeThe **boundary-framed surjections** `e_Γ^β(𝒴)` (manuscript `eq:eGamma`): the
    continuous surjections `f : Γ ↠ Y` whose induced map to `H × E` is the prescribed
    `β ∘ b_Γ`, i.e. `q_Y ∘ f = β ∘ b_Γ`.  This is the subtype counted in Theorem 4.2;
    its cardinality is `e_Γ^β(𝒴)`. 
          Q2Presentation.boundaryPackage_GammaAQ2Presentation.boundaryPackage_GammaA : Q2Presentation.BoundaryPackage Q2Presentation.GammaA**The candidate boundary package** (manuscript Prop 3.14, `prop:compatiblemarking`;
    plan Turn 4 §6).  The Stage-C data of `Γ_A`: the common tame quotient `gammaTameMap`,
    the maximal pro-`2` quotient `p : Γ_A ⟶ Π`, and the common unramified character
    `ν = gammaTameMap ≫ ν_t`, through which both factor. 
          (Q2Presentation.TorsorProgram.quotientFramedTargetQ2Presentation.TorsorProgram.quotientFramedTarget (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y)
      [hNn : N.Normal] (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) : Q2Presentation.BoundaryFramedTarget**The quotient framed target** `Y/N` (same `H`, same `E`, image wild kernel).  YtQ2Presentation.BoundaryFramedTarget EQ2Presentation.Lifting.ElementaryKernel Yt.NQ2Presentation.Lifting.ElementaryKernel.N {Yt : Q2Presentation.BoundaryFramedTarget}
      (self : Q2Presentation.Lifting.ElementaryKernel Yt) : Subgroup Yt.Y  )
          (Q2Presentation.TorsorProgram.quotientFrameQ2Presentation.TorsorProgram.quotientFrame (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y)
      [hNn : N.Normal] (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) (F : Q2Presentation.BoundaryFrame Yt) :
      Q2Presentation.BoundaryFrame (Q2Presentation.TorsorProgram.quotientFramedTarget Yt N hNLY hNθ)The frame transports verbatim (`H`, `E`, `α`, `ψ`, `β` unchanged).  YtQ2Presentation.BoundaryFramedTarget EQ2Presentation.Lifting.ElementaryKernel Yt.NQ2Presentation.Lifting.ElementaryKernel.N {Yt : Q2Presentation.BoundaryFramedTarget}
      (self : Q2Presentation.Lifting.ElementaryKernel Yt) : Subgroup Yt.Y   FQ2Presentation.BoundaryFrame Yt))
      (f₀Q2Presentation.TorsorProgram.liftHom Yt E.N ⋯ ⋯ Q2Presentation.boundaryPackage_GammaA F g :
        Q2Presentation.TorsorProgram.liftHomQ2Presentation.TorsorProgram.liftHom (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y) [hNn : N.Normal]
      (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ)
      (F : Q2Presentation.BoundaryFrame Yt)
      (g :
        Q2Presentation.boundaryFramedSurj B (Q2Presentation.TorsorProgram.quotientFramedTarget Yt N hNLY hNθ)
          (Q2Presentation.TorsorProgram.quotientFrame Yt N hNLY hNθ F)) :
      Type**All framed lifts** of a child-framed surjection (surjectivity NOT imposed;
    the Frattini argument recovers it per use-site).  YtQ2Presentation.BoundaryFramedTarget EQ2Presentation.Lifting.ElementaryKernel Yt.NQ2Presentation.Lifting.ElementaryKernel.N {Yt : Q2Presentation.BoundaryFramedTarget}
      (self : Q2Presentation.Lifting.ElementaryKernel Yt) : Subgroup Yt.Y  
          Q2Presentation.boundaryPackage_GammaAQ2Presentation.boundaryPackage_GammaA : Q2Presentation.BoundaryPackage Q2Presentation.GammaA**The candidate boundary package** (manuscript Prop 3.14, `prop:compatiblemarking`;
    plan Turn 4 §6).  The Stage-C data of `Γ_A`: the common tame quotient `gammaTameMap`,
    the maximal pro-`2` quotient `p : Γ_A ⟶ Π`, and the common unramified character
    `ν = gammaTameMap ≫ ν_t`, through which both factor.  FQ2Presentation.BoundaryFrame Yt gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GammaA
      (Q2Presentation.TorsorProgram.quotientFramedTarget Yt E.N ⋯ ⋯)
      (Q2Presentation.TorsorProgram.quotientFrame Yt E.N ⋯ ⋯ F)) :
      Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number.
    If `α` is infinite, `Nat.card α = 0`. 
          (Q2Presentation.TorsorProgram.Z1Q2Presentation.TorsorProgram.Z1 (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y) [hNn : N.Normal]
      (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ)
      (F : Q2Presentation.BoundaryFrame Yt)
      (g :
        Q2Presentation.boundaryFramedSurj B (Q2Presentation.TorsorProgram.quotientFramedTarget Yt N hNLY hNθ)
          (Q2Presentation.TorsorProgram.quotientFrame Yt N hNLY hNθ F))
      (f₀ : Q2Presentation.TorsorProgram.liftHom Yt N hNLY hNθ B F g) : Type**The twisted cocycle set** relative to a base lift.  YtQ2Presentation.BoundaryFramedTarget EQ2Presentation.Lifting.ElementaryKernel Yt.NQ2Presentation.Lifting.ElementaryKernel.N {Yt : Q2Presentation.BoundaryFramedTarget}
      (self : Q2Presentation.Lifting.ElementaryKernel Yt) : Subgroup Yt.Y  
            Q2Presentation.boundaryPackage_GammaAQ2Presentation.boundaryPackage_GammaA : Q2Presentation.BoundaryPackage Q2Presentation.GammaA**The candidate boundary package** (manuscript Prop 3.14, `prop:compatiblemarking`;
    plan Turn 4 §6).  The Stage-C data of `Γ_A`: the common tame quotient `gammaTameMap`,
    the maximal pro-`2` quotient `p : Γ_A ⟶ Π`, and the common unramified character
    `ν = gammaTameMap ≫ ν_t`, through which both factor.  FQ2Presentation.BoundaryFrame Yt gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GammaA
      (Q2Presentation.TorsorProgram.quotientFramedTarget Yt E.N ⋯ ⋯)
      (Q2Presentation.TorsorProgram.quotientFrame Yt E.N ⋯ ⋯ F) f₀Q2Presentation.TorsorProgram.liftHom Yt E.N ⋯ ⋯ Q2Presentation.boundaryPackage_GammaA F g) =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`.
        8
    theorem Q2Presentation.Lifting.cover_Z1_card_gammaA
      {YtQ2Presentation.BoundaryFramedTarget :
        Q2Presentation.BoundaryFramedTargetQ2Presentation.BoundaryFramedTarget : Type 1A **boundary-framed marked target** `𝒴 = (Y, L_Y, π_Y, θ_Y)` (manuscript
    Definition 4.1, `def:framed`): a finite group `Y` with a normal finite `2`-subgroup
    `L_Y`, a surjection `π_Y : Y ↠ H` onto a finite *tame* quotient with kernel exactly
    `L_Y`, and an *elementary decoration* `θ_Y : Y → Multiplicative E` into the
    multiplicative image of a finite `𝔽₂`-vector space `E`.  The pair
    `q_Y = (π_Y, θ_Y)` fixes both the tame quotient `Y / L_Y ≅ H` and the decoration. }
      [FiniteFinite.{u_3} (α : Sort u_3) : PropA type is `Finite` if it is in bijective correspondence to some `Fin n`.
    
    This is similar to `Fintype`, but `Finite` is a proposition rather than data.
    A particular benefit to this is that `Finite` instances are definitionally equal to one another
    (due to proof irrelevance) rather than being merely propositionally equal,
    and, furthermore, `Finite` instances generally avoid the need for `Decidable` instances.
    One other notable difference is that `Finite` allows there to be `Finite p` instances
    for all `p : Prop`, which is not allowed by `Fintype` due to universe constraints.
    An application of this is that `Finite (x ∈ s → β x)` follows from the general instance for pi
    types, assuming `[∀ x, Finite (β x)]`.
    Implementation note: this is a reason `Finite α` is not defined as `Nonempty (Fintype α)`.
    
    Every `Fintype` instance provides a `Finite` instance via `Finite.of_fintype`.
    Conversely, one can noncomputably create a `Fintype` instance from a `Finite` instance
    via `Fintype.ofFinite`. In a proof one might write
    ```lean
      have := Fintype.ofFinite α
    ```
    to obtain such an instance.
    
    Do not write noncomputable `Fintype` instances; instead write `Finite` instances
    and use this `Fintype.ofFinite` interface.
    The `Fintype` instances should be relied upon to be computable for evaluation purposes.
    
    Theorems should use `Finite` instead of `Fintype`, unless definitions in the theorem statement
    require `Fintype`.
    Definitions should prefer `Finite` as well, unless it is important that the definitions
    are meant to be computable in the reduction or `#eval` sense.
     YtQ2Presentation.BoundaryFramedTarget.YQ2Presentation.BoundaryFramedTarget.Y (self : Q2Presentation.BoundaryFramedTarget) : TypeThe finite target group `Y`. ]
      (EQ2Presentation.Lifting.ElementaryKernel Yt :
        Q2Presentation.Lifting.ElementaryKernelQ2Presentation.Lifting.ElementaryKernel (Yt : Q2Presentation.BoundaryFramedTarget) : TypeA normal subgroup of a framed target that is killed by the decoration,
    contained in the wild kernel, **abelian**, and of **exponent 2** — the shape
    of the chief kernels the cochain keeps quantify over. 
          YtQ2Presentation.BoundaryFramedTarget)
      (hcardNat.card (Q2Presentation.Lifting.NAdd E) = 2 :
        Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number.
    If `α` is infinite, `Nat.card α = 0`. 
            (Q2Presentation.Lifting.NAddQ2Presentation.Lifting.NAdd {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) : TypeThe additive `F₂`-carrier of an elementary kernel.  EQ2Presentation.Lifting.ElementaryKernel Yt) =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`.
          2)
      (FQ2Presentation.BoundaryFrame Yt : Q2Presentation.BoundaryFrameQ2Presentation.BoundaryFrame (Yt : Q2Presentation.BoundaryFramedTarget) : TypeA **boundary frame** on a boundary-framed target `𝒴` (manuscript `eq:beta`):
    the fixed compatible data `α : 𝕋_tame ↠ H`, `ψ : Π → Multiplicative E`, and the
    induced `β : ∂_bd → H × Multiplicative E`.  Surjectivity of `α` records that `H`
    really is a tame quotient (manuscript: "Fix a finite tame quotient `H`, an
    epimorphism `α : 𝕋_A ↠ H`").  YtQ2Presentation.BoundaryFramedTarget)
      (gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GammaA
      (Q2Presentation.TorsorProgram.quotientFramedTarget Yt E.N ⋯ ⋯)
      (Q2Presentation.TorsorProgram.quotientFrame Yt E.N ⋯ ⋯ F) :
        Q2Presentation.boundaryFramedSurjQ2Presentation.boundaryFramedSurj {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ)
      (Yt : Q2Presentation.BoundaryFramedTarget) (F : Q2Presentation.BoundaryFrame Yt) : TypeThe **boundary-framed surjections** `e_Γ^β(𝒴)` (manuscript `eq:eGamma`): the
    continuous surjections `f : Γ ↠ Y` whose induced map to `H × E` is the prescribed
    `β ∘ b_Γ`, i.e. `q_Y ∘ f = β ∘ b_Γ`.  This is the subtype counted in Theorem 4.2;
    its cardinality is `e_Γ^β(𝒴)`. 
          Q2Presentation.boundaryPackage_GammaAQ2Presentation.boundaryPackage_GammaA : Q2Presentation.BoundaryPackage Q2Presentation.GammaA**The candidate boundary package** (manuscript Prop 3.14, `prop:compatiblemarking`;
    plan Turn 4 §6).  The Stage-C data of `Γ_A`: the common tame quotient `gammaTameMap`,
    the maximal pro-`2` quotient `p : Γ_A ⟶ Π`, and the common unramified character
    `ν = gammaTameMap ≫ ν_t`, through which both factor. 
          (Q2Presentation.TorsorProgram.quotientFramedTargetQ2Presentation.TorsorProgram.quotientFramedTarget (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y)
      [hNn : N.Normal] (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) : Q2Presentation.BoundaryFramedTarget**The quotient framed target** `Y/N` (same `H`, same `E`, image wild kernel). 
            YtQ2Presentation.BoundaryFramedTarget EQ2Presentation.Lifting.ElementaryKernel Yt.NQ2Presentation.Lifting.ElementaryKernel.N {Yt : Q2Presentation.BoundaryFramedTarget}
      (self : Q2Presentation.Lifting.ElementaryKernel Yt) : Subgroup Yt.Y  )
          (Q2Presentation.TorsorProgram.quotientFrameQ2Presentation.TorsorProgram.quotientFrame (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y)
      [hNn : N.Normal] (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) (F : Q2Presentation.BoundaryFrame Yt) :
      Q2Presentation.BoundaryFrame (Q2Presentation.TorsorProgram.quotientFramedTarget Yt N hNLY hNθ)The frame transports verbatim (`H`, `E`, `α`, `ψ`, `β` unchanged). 
            YtQ2Presentation.BoundaryFramedTarget EQ2Presentation.Lifting.ElementaryKernel Yt.NQ2Presentation.Lifting.ElementaryKernel.N {Yt : Q2Presentation.BoundaryFramedTarget}
      (self : Q2Presentation.Lifting.ElementaryKernel Yt) : Subgroup Yt.Y   FQ2Presentation.BoundaryFrame Yt))
      (f₀Q2Presentation.TorsorProgram.liftHom Yt E.N ⋯ ⋯ Q2Presentation.boundaryPackage_GammaA F g :
        Q2Presentation.TorsorProgram.liftHomQ2Presentation.TorsorProgram.liftHom (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y) [hNn : N.Normal]
      (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ)
      (F : Q2Presentation.BoundaryFrame Yt)
      (g :
        Q2Presentation.boundaryFramedSurj B (Q2Presentation.TorsorProgram.quotientFramedTarget Yt N hNLY hNθ)
          (Q2Presentation.TorsorProgram.quotientFrame Yt N hNLY hNθ F)) :
      Type**All framed lifts** of a child-framed surjection (surjectivity NOT imposed;
    the Frattini argument recovers it per use-site). 
          YtQ2Presentation.BoundaryFramedTarget EQ2Presentation.Lifting.ElementaryKernel Yt.NQ2Presentation.Lifting.ElementaryKernel.N {Yt : Q2Presentation.BoundaryFramedTarget}
      (self : Q2Presentation.Lifting.ElementaryKernel Yt) : Subgroup Yt.Y  
          Q2Presentation.boundaryPackage_GammaAQ2Presentation.boundaryPackage_GammaA : Q2Presentation.BoundaryPackage Q2Presentation.GammaA**The candidate boundary package** (manuscript Prop 3.14, `prop:compatiblemarking`;
    plan Turn 4 §6).  The Stage-C data of `Γ_A`: the common tame quotient `gammaTameMap`,
    the maximal pro-`2` quotient `p : Γ_A ⟶ Π`, and the common unramified character
    `ν = gammaTameMap ≫ ν_t`, through which both factor. 
          FQ2Presentation.BoundaryFrame Yt gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GammaA
      (Q2Presentation.TorsorProgram.quotientFramedTarget Yt E.N ⋯ ⋯)
      (Q2Presentation.TorsorProgram.quotientFrame Yt E.N ⋯ ⋯ F)) :
      Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number.
    If `α` is infinite, `Nat.card α = 0`. 
          (Q2Presentation.TorsorProgram.Z1Q2Presentation.TorsorProgram.Z1 (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y) [hNn : N.Normal]
      (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ)
      (F : Q2Presentation.BoundaryFrame Yt)
      (g :
        Q2Presentation.boundaryFramedSurj B (Q2Presentation.TorsorProgram.quotientFramedTarget Yt N hNLY hNθ)
          (Q2Presentation.TorsorProgram.quotientFrame Yt N hNLY hNθ F))
      (f₀ : Q2Presentation.TorsorProgram.liftHom Yt N hNLY hNθ B F g) : Type**The twisted cocycle set** relative to a base lift.  YtQ2Presentation.BoundaryFramedTarget
            EQ2Presentation.Lifting.ElementaryKernel Yt.NQ2Presentation.Lifting.ElementaryKernel.N {Yt : Q2Presentation.BoundaryFramedTarget}
      (self : Q2Presentation.Lifting.ElementaryKernel Yt) : Subgroup Yt.Y  
            Q2Presentation.boundaryPackage_GammaAQ2Presentation.boundaryPackage_GammaA : Q2Presentation.BoundaryPackage Q2Presentation.GammaA**The candidate boundary package** (manuscript Prop 3.14, `prop:compatiblemarking`;
    plan Turn 4 §6).  The Stage-C data of `Γ_A`: the common tame quotient `gammaTameMap`,
    the maximal pro-`2` quotient `p : Γ_A ⟶ Π`, and the common unramified character
    `ν = gammaTameMap ≫ ν_t`, through which both factor. 
            FQ2Presentation.BoundaryFrame Yt gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GammaA
      (Q2Presentation.TorsorProgram.quotientFramedTarget Yt E.N ⋯ ⋯)
      (Q2Presentation.TorsorProgram.quotientFrame Yt E.N ⋯ ⋯ F) f₀Q2Presentation.TorsorProgram.liftHom Yt E.N ⋯ ⋯ Q2Presentation.boundaryPackage_GammaA F g) =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`.
        8
    **`lem:commonscalars` (l.3791–3815), candidate half, at ANY order-2
    elementary kernel** (the generic form of `scalarCover_Z1_card`, needed at
    P4's stratum covers and P7's phase covers): the framed twisted-cocycle count
    of `Γ_A` through a card-2 kernel is `|Hom(Γ_A, 𝔽₂)| = 2³ = 8` — the row-map
    kernel at the diagonal rows is the τ-vanishing tuple space `N³`. 
  • theoremdefined in Q2Presentation/Lifting/ScalarObstruction.lean
    complete
    theorem Q2Presentation.Lifting.scalarCover_Z1_card
      {YtQ2Presentation.BoundaryFramedTarget : Q2Presentation.BoundaryFramedTargetQ2Presentation.BoundaryFramedTarget : Type 1A **boundary-framed marked target** `𝒴 = (Y, L_Y, π_Y, θ_Y)` (manuscript
    Definition 4.1, `def:framed`): a finite group `Y` with a normal finite `2`-subgroup
    `L_Y`, a surjection `π_Y : Y ↠ H` onto a finite *tame* quotient with kernel exactly
    `L_Y`, and an *elementary decoration* `θ_Y : Y → Multiplicative E` into the
    multiplicative image of a finite `𝔽₂`-vector space `E`.  The pair
    `q_Y = (π_Y, θ_Y)` fixes both the tame quotient `Y / L_Y ≅ H` and the decoration. } [FiniteFinite.{u_3} (α : Sort u_3) : PropA type is `Finite` if it is in bijective correspondence to some `Fin n`.
    
    This is similar to `Fintype`, but `Finite` is a proposition rather than data.
    A particular benefit to this is that `Finite` instances are definitionally equal to one another
    (due to proof irrelevance) rather than being merely propositionally equal,
    and, furthermore, `Finite` instances generally avoid the need for `Decidable` instances.
    One other notable difference is that `Finite` allows there to be `Finite p` instances
    for all `p : Prop`, which is not allowed by `Fintype` due to universe constraints.
    An application of this is that `Finite (x ∈ s → β x)` follows from the general instance for pi
    types, assuming `[∀ x, Finite (β x)]`.
    Implementation note: this is a reason `Finite α` is not defined as `Nonempty (Fintype α)`.
    
    Every `Fintype` instance provides a `Finite` instance via `Finite.of_fintype`.
    Conversely, one can noncomputably create a `Fintype` instance from a `Finite` instance
    via `Fintype.ofFinite`. In a proof one might write
    ```lean
      have := Fintype.ofFinite α
    ```
    to obtain such an instance.
    
    Do not write noncomputable `Fintype` instances; instead write `Finite` instances
    and use this `Fintype.ofFinite` interface.
    The `Fintype` instances should be relied upon to be computable for evaluation purposes.
    
    Theorems should use `Finite` instead of `Fintype`, unless definitions in the theorem statement
    require `Fintype`.
    Definitions should prefer `Finite` as well, unless it is important that the definitions
    are meant to be computable in the reduction or `#eval` sense.
     YtQ2Presentation.BoundaryFramedTarget.YQ2Presentation.BoundaryFramedTarget.Y (self : Q2Presentation.BoundaryFramedTarget) : TypeThe finite target group `Y`. ]
      (EQ2Presentation.Lifting.ElementaryKernel Yt : Q2Presentation.Lifting.ElementaryKernelQ2Presentation.Lifting.ElementaryKernel (Yt : Q2Presentation.BoundaryFramedTarget) : TypeA normal subgroup of a framed target that is killed by the decoration,
    contained in the wild kernel, **abelian**, and of **exponent 2** — the shape
    of the chief kernels the cochain keeps quantify over.  YtQ2Presentation.BoundaryFramedTarget)
      (FQ2Presentation.BoundaryFrame Yt : Q2Presentation.BoundaryFrameQ2Presentation.BoundaryFrame (Yt : Q2Presentation.BoundaryFramedTarget) : TypeA **boundary frame** on a boundary-framed target `𝒴` (manuscript `eq:beta`):
    the fixed compatible data `α : 𝕋_tame ↠ H`, `ψ : Π → Multiplicative E`, and the
    induced `β : ∂_bd → H × Multiplicative E`.  Surjectivity of `α` records that `H`
    really is a tame quotient (manuscript: "Fix a finite tame quotient `H`, an
    epimorphism `α : 𝕋_A ↠ H`").  YtQ2Presentation.BoundaryFramedTarget)
      (gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GammaA
      (Q2Presentation.TorsorProgram.quotientFramedTarget Yt E.N ⋯ ⋯)
      (Q2Presentation.TorsorProgram.quotientFrame Yt E.N ⋯ ⋯ F) :
        Q2Presentation.boundaryFramedSurjQ2Presentation.boundaryFramedSurj {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ)
      (Yt : Q2Presentation.BoundaryFramedTarget) (F : Q2Presentation.BoundaryFrame Yt) : TypeThe **boundary-framed surjections** `e_Γ^β(𝒴)` (manuscript `eq:eGamma`): the
    continuous surjections `f : Γ ↠ Y` whose induced map to `H × E` is the prescribed
    `β ∘ b_Γ`, i.e. `q_Y ∘ f = β ∘ b_Γ`.  This is the subtype counted in Theorem 4.2;
    its cardinality is `e_Γ^β(𝒴)`. 
          Q2Presentation.boundaryPackage_GammaAQ2Presentation.boundaryPackage_GammaA : Q2Presentation.BoundaryPackage Q2Presentation.GammaA**The candidate boundary package** (manuscript Prop 3.14, `prop:compatiblemarking`;
    plan Turn 4 §6).  The Stage-C data of `Γ_A`: the common tame quotient `gammaTameMap`,
    the maximal pro-`2` quotient `p : Γ_A ⟶ Π`, and the common unramified character
    `ν = gammaTameMap ≫ ν_t`, through which both factor. 
          (Q2Presentation.TorsorProgram.quotientFramedTargetQ2Presentation.TorsorProgram.quotientFramedTarget (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y)
      [hNn : N.Normal] (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) : Q2Presentation.BoundaryFramedTarget**The quotient framed target** `Y/N` (same `H`, same `E`, image wild kernel).  YtQ2Presentation.BoundaryFramedTarget EQ2Presentation.Lifting.ElementaryKernel Yt.NQ2Presentation.Lifting.ElementaryKernel.N {Yt : Q2Presentation.BoundaryFramedTarget}
      (self : Q2Presentation.Lifting.ElementaryKernel Yt) : Subgroup Yt.Y  )
          (Q2Presentation.TorsorProgram.quotientFrameQ2Presentation.TorsorProgram.quotientFrame (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y)
      [hNn : N.Normal] (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) (F : Q2Presentation.BoundaryFrame Yt) :
      Q2Presentation.BoundaryFrame (Q2Presentation.TorsorProgram.quotientFramedTarget Yt N hNLY hNθ)The frame transports verbatim (`H`, `E`, `α`, `ψ`, `β` unchanged).  YtQ2Presentation.BoundaryFramedTarget EQ2Presentation.Lifting.ElementaryKernel Yt.NQ2Presentation.Lifting.ElementaryKernel.N {Yt : Q2Presentation.BoundaryFramedTarget}
      (self : Q2Presentation.Lifting.ElementaryKernel Yt) : Subgroup Yt.Y   FQ2Presentation.BoundaryFrame Yt))
      (lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E) : Module.DualModule.Dual.{u_4, u_5} (R : Type u_4) (M : Type u_5) [Semiring R] [AddCommMonoid M] [Module R M] : Type (max u_5 u_4)The left dual space of an R-module M is the R-module of linear maps `M → R`.  (ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2) (Q2Presentation.Lifting.NAddQ2Presentation.Lifting.NAdd {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) : TypeThe additive `F₂`-carrier of an elementary kernel.  EQ2Presentation.Lifting.ElementaryKernel Yt))
      (hinvlam ∈ Q2Presentation.Lifting.conjInvDuals E : lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E) Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. Q2Presentation.Lifting.conjInvDualsQ2Presentation.Lifting.conjInvDuals {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) :
      Submodule (ZMod 2) (Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E))The conjugation-invariant duals `X = (R^∨)^Y = (R^∨)^C` of an
    elementary kernel (consumer spelling of the manuscript's `𝒳_R`,
    §7 l.3720–3723).  EQ2Presentation.Lifting.ElementaryKernel Yt) (hnelam ≠ 0 : lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E) Ne.{u} {α : Sort u} (a b : α) : Prop`a ≠ b`, or `Ne a b` is defined as `¬ (a = b)` or `a = b → False`,
    and asserts that `a` and `b` are not equal.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≠` in identifiers is `ne`. 0)
      (f₀Q2Presentation.Lifting.scalarCoverLiftHom E lam hinv Q2Presentation.boundaryPackage_GammaA F g :
        Q2Presentation.Lifting.scalarCoverLiftHomQ2Presentation.Lifting.scalarCoverLiftHom {Yt : Q2Presentation.BoundaryFramedTarget} [Finite Yt.Y]
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals E) {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ)
      (F : Q2Presentation.BoundaryFrame Yt)
      (g :
        Q2Presentation.boundaryFramedSurj B (Q2Presentation.TorsorProgram.quotientFramedTarget Yt E.N ⋯ ⋯)
          (Q2Presentation.TorsorProgram.quotientFrame Yt E.N ⋯ ⋯ F)) :
      Type**Cover lifts of `g`** (`lem:obstructionseparation` l.4219–4223):
    framed homs `Γ ⟶ B_λ` over `g` — surjectivity NOT imposed (the
    manuscript's compatible lifts: `λ_*o` measures weak liftability; images
    are stratified by `eq:recursionR2`/`R3` later).  EQ2Presentation.Lifting.ElementaryKernel Yt lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals E
          Q2Presentation.boundaryPackage_GammaAQ2Presentation.boundaryPackage_GammaA : Q2Presentation.BoundaryPackage Q2Presentation.GammaA**The candidate boundary package** (manuscript Prop 3.14, `prop:compatiblemarking`;
    plan Turn 4 §6).  The Stage-C data of `Γ_A`: the common tame quotient `gammaTameMap`,
    the maximal pro-`2` quotient `p : Γ_A ⟶ Π`, and the common unramified character
    `ν = gammaTameMap ≫ ν_t`, through which both factor.  FQ2Presentation.BoundaryFrame Yt gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GammaA
      (Q2Presentation.TorsorProgram.quotientFramedTarget Yt E.N ⋯ ⋯)
      (Q2Presentation.TorsorProgram.quotientFrame Yt E.N ⋯ ⋯ F)) :
      Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number.
    If `α` is infinite, `Nat.card α = 0`. 
          (Q2Presentation.TorsorProgram.Z1Q2Presentation.TorsorProgram.Z1 (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y) [hNn : N.Normal]
      (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ)
      (F : Q2Presentation.BoundaryFrame Yt)
      (g :
        Q2Presentation.boundaryFramedSurj B (Q2Presentation.TorsorProgram.quotientFramedTarget Yt N hNLY hNθ)
          (Q2Presentation.TorsorProgram.quotientFrame Yt N hNLY hNθ F))
      (f₀ : Q2Presentation.TorsorProgram.liftHom Yt N hNLY hNθ B F g) : Type**The twisted cocycle set** relative to a base lift. 
            (Q2Presentation.Lifting.scalarCoverTargetQ2Presentation.Lifting.scalarCoverTarget {Yt : Q2Presentation.BoundaryFramedTarget} [Finite Yt.Y]
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals E) : Q2Presentation.BoundaryFramedTarget**The scalar pushout target** `B_λ = Y/ker λ` as a framed target
    (same `H`, `E`, frame; `eq:targettower` refined by l.4219–4223).  EQ2Presentation.Lifting.ElementaryKernel Yt lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals E)
            (Q2Presentation.Lifting.scalarRelKernelQ2Presentation.Lifting.scalarRelKernel {Yt : Q2Presentation.BoundaryFramedTarget} [Finite Yt.Y]
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals E) :
      Q2Presentation.Lifting.ElementaryKernel (Q2Presentation.Lifting.scalarCoverTarget E lam hinv)**The relative kernel** `R/ker λ ≤ B_λ` — the deck kernel of the
    central double cover, as an elementary kernel of the cover target.  It
    is `Subgroup.map`-spelled so Noether III applies on the nose.  EQ2Presentation.Lifting.ElementaryKernel Yt lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals E).NQ2Presentation.Lifting.ElementaryKernel.N {Yt : Q2Presentation.BoundaryFramedTarget}
      (self : Q2Presentation.Lifting.ElementaryKernel Yt) : Subgroup Yt.Y  
            Q2Presentation.boundaryPackage_GammaAQ2Presentation.boundaryPackage_GammaA : Q2Presentation.BoundaryPackage Q2Presentation.GammaA**The candidate boundary package** (manuscript Prop 3.14, `prop:compatiblemarking`;
    plan Turn 4 §6).  The Stage-C data of `Γ_A`: the common tame quotient `gammaTameMap`,
    the maximal pro-`2` quotient `p : Γ_A ⟶ Π`, and the common unramified character
    `ν = gammaTameMap ≫ ν_t`, through which both factor. 
            (Q2Presentation.Lifting.scalarCoverFrameQ2Presentation.Lifting.scalarCoverFrame {Yt : Q2Presentation.BoundaryFramedTarget} [Finite Yt.Y]
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals E) (F : Q2Presentation.BoundaryFrame Yt) :
      Q2Presentation.BoundaryFrame (Q2Presentation.Lifting.scalarCoverTarget E lam hinv)The frame transports verbatim to the scalar pushout target.  EQ2Presentation.Lifting.ElementaryKernel Yt lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals E FQ2Presentation.BoundaryFrame Yt)
            (Q2Presentation.Lifting.scalarCoverChildQ2Presentation.Lifting.scalarCoverChild {Yt : Q2Presentation.BoundaryFramedTarget} [Finite Yt.Y]
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals E) {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ)
      (F : Q2Presentation.BoundaryFrame Yt)
      (g :
        Q2Presentation.boundaryFramedSurj B (Q2Presentation.TorsorProgram.quotientFramedTarget Yt E.N ⋯ ⋯)
          (Q2Presentation.TorsorProgram.quotientFrame Yt E.N ⋯ ⋯ F)) :
      Q2Presentation.boundaryFramedSurj B
        (Q2Presentation.TorsorProgram.quotientFramedTarget (Q2Presentation.Lifting.scalarCoverTarget E lam hinv)
          (Q2Presentation.Lifting.scalarRelKernel E lam hinv).N ⋯ ⋯)
        (Q2Presentation.TorsorProgram.quotientFrame (Q2Presentation.Lifting.scalarCoverTarget E lam hinv)
          (Q2Presentation.Lifting.scalarRelKernel E lam hinv).N ⋯ ⋯ (Q2Presentation.Lifting.scalarCoverFrame E lam hinv F))**The child seen below the cover**: transport a child-framed
    surjection across the collapse `(B_λ)/(R/ker λ) ≃* Y/R`.  EQ2Presentation.Lifting.ElementaryKernel Yt lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals E
              Q2Presentation.boundaryPackage_GammaAQ2Presentation.boundaryPackage_GammaA : Q2Presentation.BoundaryPackage Q2Presentation.GammaA**The candidate boundary package** (manuscript Prop 3.14, `prop:compatiblemarking`;
    plan Turn 4 §6).  The Stage-C data of `Γ_A`: the common tame quotient `gammaTameMap`,
    the maximal pro-`2` quotient `p : Γ_A ⟶ Π`, and the common unramified character
    `ν = gammaTameMap ≫ ν_t`, through which both factor.  FQ2Presentation.BoundaryFrame Yt gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GammaA
      (Q2Presentation.TorsorProgram.quotientFramedTarget Yt E.N ⋯ ⋯)
      (Q2Presentation.TorsorProgram.quotientFrame Yt E.N ⋯ ⋯ F))
            f₀Q2Presentation.Lifting.scalarCoverLiftHom E lam hinv Q2Presentation.boundaryPackage_GammaA F g) =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`.
        8
    theorem Q2Presentation.Lifting.scalarCover_Z1_card
      {YtQ2Presentation.BoundaryFramedTarget :
        Q2Presentation.BoundaryFramedTargetQ2Presentation.BoundaryFramedTarget : Type 1A **boundary-framed marked target** `𝒴 = (Y, L_Y, π_Y, θ_Y)` (manuscript
    Definition 4.1, `def:framed`): a finite group `Y` with a normal finite `2`-subgroup
    `L_Y`, a surjection `π_Y : Y ↠ H` onto a finite *tame* quotient with kernel exactly
    `L_Y`, and an *elementary decoration* `θ_Y : Y → Multiplicative E` into the
    multiplicative image of a finite `𝔽₂`-vector space `E`.  The pair
    `q_Y = (π_Y, θ_Y)` fixes both the tame quotient `Y / L_Y ≅ H` and the decoration. }
      [FiniteFinite.{u_3} (α : Sort u_3) : PropA type is `Finite` if it is in bijective correspondence to some `Fin n`.
    
    This is similar to `Fintype`, but `Finite` is a proposition rather than data.
    A particular benefit to this is that `Finite` instances are definitionally equal to one another
    (due to proof irrelevance) rather than being merely propositionally equal,
    and, furthermore, `Finite` instances generally avoid the need for `Decidable` instances.
    One other notable difference is that `Finite` allows there to be `Finite p` instances
    for all `p : Prop`, which is not allowed by `Fintype` due to universe constraints.
    An application of this is that `Finite (x ∈ s → β x)` follows from the general instance for pi
    types, assuming `[∀ x, Finite (β x)]`.
    Implementation note: this is a reason `Finite α` is not defined as `Nonempty (Fintype α)`.
    
    Every `Fintype` instance provides a `Finite` instance via `Finite.of_fintype`.
    Conversely, one can noncomputably create a `Fintype` instance from a `Finite` instance
    via `Fintype.ofFinite`. In a proof one might write
    ```lean
      have := Fintype.ofFinite α
    ```
    to obtain such an instance.
    
    Do not write noncomputable `Fintype` instances; instead write `Finite` instances
    and use this `Fintype.ofFinite` interface.
    The `Fintype` instances should be relied upon to be computable for evaluation purposes.
    
    Theorems should use `Finite` instead of `Fintype`, unless definitions in the theorem statement
    require `Fintype`.
    Definitions should prefer `Finite` as well, unless it is important that the definitions
    are meant to be computable in the reduction or `#eval` sense.
     YtQ2Presentation.BoundaryFramedTarget.YQ2Presentation.BoundaryFramedTarget.Y (self : Q2Presentation.BoundaryFramedTarget) : TypeThe finite target group `Y`. ]
      (EQ2Presentation.Lifting.ElementaryKernel Yt :
        Q2Presentation.Lifting.ElementaryKernelQ2Presentation.Lifting.ElementaryKernel (Yt : Q2Presentation.BoundaryFramedTarget) : TypeA normal subgroup of a framed target that is killed by the decoration,
    contained in the wild kernel, **abelian**, and of **exponent 2** — the shape
    of the chief kernels the cochain keeps quantify over. 
          YtQ2Presentation.BoundaryFramedTarget)
      (FQ2Presentation.BoundaryFrame Yt : Q2Presentation.BoundaryFrameQ2Presentation.BoundaryFrame (Yt : Q2Presentation.BoundaryFramedTarget) : TypeA **boundary frame** on a boundary-framed target `𝒴` (manuscript `eq:beta`):
    the fixed compatible data `α : 𝕋_tame ↠ H`, `ψ : Π → Multiplicative E`, and the
    induced `β : ∂_bd → H × Multiplicative E`.  Surjectivity of `α` records that `H`
    really is a tame quotient (manuscript: "Fix a finite tame quotient `H`, an
    epimorphism `α : 𝕋_A ↠ H`").  YtQ2Presentation.BoundaryFramedTarget)
      (gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GammaA
      (Q2Presentation.TorsorProgram.quotientFramedTarget Yt E.N ⋯ ⋯)
      (Q2Presentation.TorsorProgram.quotientFrame Yt E.N ⋯ ⋯ F) :
        Q2Presentation.boundaryFramedSurjQ2Presentation.boundaryFramedSurj {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ)
      (Yt : Q2Presentation.BoundaryFramedTarget) (F : Q2Presentation.BoundaryFrame Yt) : TypeThe **boundary-framed surjections** `e_Γ^β(𝒴)` (manuscript `eq:eGamma`): the
    continuous surjections `f : Γ ↠ Y` whose induced map to `H × E` is the prescribed
    `β ∘ b_Γ`, i.e. `q_Y ∘ f = β ∘ b_Γ`.  This is the subtype counted in Theorem 4.2;
    its cardinality is `e_Γ^β(𝒴)`. 
          Q2Presentation.boundaryPackage_GammaAQ2Presentation.boundaryPackage_GammaA : Q2Presentation.BoundaryPackage Q2Presentation.GammaA**The candidate boundary package** (manuscript Prop 3.14, `prop:compatiblemarking`;
    plan Turn 4 §6).  The Stage-C data of `Γ_A`: the common tame quotient `gammaTameMap`,
    the maximal pro-`2` quotient `p : Γ_A ⟶ Π`, and the common unramified character
    `ν = gammaTameMap ≫ ν_t`, through which both factor. 
          (Q2Presentation.TorsorProgram.quotientFramedTargetQ2Presentation.TorsorProgram.quotientFramedTarget (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y)
      [hNn : N.Normal] (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) : Q2Presentation.BoundaryFramedTarget**The quotient framed target** `Y/N` (same `H`, same `E`, image wild kernel). 
            YtQ2Presentation.BoundaryFramedTarget EQ2Presentation.Lifting.ElementaryKernel Yt.NQ2Presentation.Lifting.ElementaryKernel.N {Yt : Q2Presentation.BoundaryFramedTarget}
      (self : Q2Presentation.Lifting.ElementaryKernel Yt) : Subgroup Yt.Y  )
          (Q2Presentation.TorsorProgram.quotientFrameQ2Presentation.TorsorProgram.quotientFrame (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y)
      [hNn : N.Normal] (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) (F : Q2Presentation.BoundaryFrame Yt) :
      Q2Presentation.BoundaryFrame (Q2Presentation.TorsorProgram.quotientFramedTarget Yt N hNLY hNθ)The frame transports verbatim (`H`, `E`, `α`, `ψ`, `β` unchanged). 
            YtQ2Presentation.BoundaryFramedTarget EQ2Presentation.Lifting.ElementaryKernel Yt.NQ2Presentation.Lifting.ElementaryKernel.N {Yt : Q2Presentation.BoundaryFramedTarget}
      (self : Q2Presentation.Lifting.ElementaryKernel Yt) : Subgroup Yt.Y   FQ2Presentation.BoundaryFrame Yt))
      (lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E) :
        Module.DualModule.Dual.{u_4, u_5} (R : Type u_4) (M : Type u_5) [Semiring R] [AddCommMonoid M] [Module R M] : Type (max u_5 u_4)The left dual space of an R-module M is the R-module of linear maps `M → R`.  (ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2)
          (Q2Presentation.Lifting.NAddQ2Presentation.Lifting.NAdd {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) : TypeThe additive `F₂`-carrier of an elementary kernel.  EQ2Presentation.Lifting.ElementaryKernel Yt))
      (hinvlam ∈ Q2Presentation.Lifting.conjInvDuals E :
        lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E) Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`.
          Q2Presentation.Lifting.conjInvDualsQ2Presentation.Lifting.conjInvDuals {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) :
      Submodule (ZMod 2) (Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E))The conjugation-invariant duals `X = (R^∨)^Y = (R^∨)^C` of an
    elementary kernel (consumer spelling of the manuscript's `𝒳_R`,
    §7 l.3720–3723). 
            EQ2Presentation.Lifting.ElementaryKernel Yt)
      (hnelam ≠ 0 : lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E) Ne.{u} {α : Sort u} (a b : α) : Prop`a ≠ b`, or `Ne a b` is defined as `¬ (a = b)` or `a = b → False`,
    and asserts that `a` and `b` are not equal.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≠` in identifiers is `ne`. 0)
      (f₀Q2Presentation.Lifting.scalarCoverLiftHom E lam hinv Q2Presentation.boundaryPackage_GammaA F g :
        Q2Presentation.Lifting.scalarCoverLiftHomQ2Presentation.Lifting.scalarCoverLiftHom {Yt : Q2Presentation.BoundaryFramedTarget} [Finite Yt.Y]
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals E) {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ)
      (F : Q2Presentation.BoundaryFrame Yt)
      (g :
        Q2Presentation.boundaryFramedSurj B (Q2Presentation.TorsorProgram.quotientFramedTarget Yt E.N ⋯ ⋯)
          (Q2Presentation.TorsorProgram.quotientFrame Yt E.N ⋯ ⋯ F)) :
      Type**Cover lifts of `g`** (`lem:obstructionseparation` l.4219–4223):
    framed homs `Γ ⟶ B_λ` over `g` — surjectivity NOT imposed (the
    manuscript's compatible lifts: `λ_*o` measures weak liftability; images
    are stratified by `eq:recursionR2`/`R3` later). 
          EQ2Presentation.Lifting.ElementaryKernel Yt lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals E
          Q2Presentation.boundaryPackage_GammaAQ2Presentation.boundaryPackage_GammaA : Q2Presentation.BoundaryPackage Q2Presentation.GammaA**The candidate boundary package** (manuscript Prop 3.14, `prop:compatiblemarking`;
    plan Turn 4 §6).  The Stage-C data of `Γ_A`: the common tame quotient `gammaTameMap`,
    the maximal pro-`2` quotient `p : Γ_A ⟶ Π`, and the common unramified character
    `ν = gammaTameMap ≫ ν_t`, through which both factor. 
          FQ2Presentation.BoundaryFrame Yt gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GammaA
      (Q2Presentation.TorsorProgram.quotientFramedTarget Yt E.N ⋯ ⋯)
      (Q2Presentation.TorsorProgram.quotientFrame Yt E.N ⋯ ⋯ F)) :
      Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number.
    If `α` is infinite, `Nat.card α = 0`. 
          (Q2Presentation.TorsorProgram.Z1Q2Presentation.TorsorProgram.Z1 (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y) [hNn : N.Normal]
      (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ)
      (F : Q2Presentation.BoundaryFrame Yt)
      (g :
        Q2Presentation.boundaryFramedSurj B (Q2Presentation.TorsorProgram.quotientFramedTarget Yt N hNLY hNθ)
          (Q2Presentation.TorsorProgram.quotientFrame Yt N hNLY hNθ F))
      (f₀ : Q2Presentation.TorsorProgram.liftHom Yt N hNLY hNθ B F g) : Type**The twisted cocycle set** relative to a base lift. 
            (Q2Presentation.Lifting.scalarCoverTargetQ2Presentation.Lifting.scalarCoverTarget {Yt : Q2Presentation.BoundaryFramedTarget} [Finite Yt.Y]
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals E) : Q2Presentation.BoundaryFramedTarget**The scalar pushout target** `B_λ = Y/ker λ` as a framed target
    (same `H`, `E`, frame; `eq:targettower` refined by l.4219–4223). 
              EQ2Presentation.Lifting.ElementaryKernel Yt lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals E)
            (Q2Presentation.Lifting.scalarRelKernelQ2Presentation.Lifting.scalarRelKernel {Yt : Q2Presentation.BoundaryFramedTarget} [Finite Yt.Y]
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals E) :
      Q2Presentation.Lifting.ElementaryKernel (Q2Presentation.Lifting.scalarCoverTarget E lam hinv)**The relative kernel** `R/ker λ ≤ B_λ` — the deck kernel of the
    central double cover, as an elementary kernel of the cover target.  It
    is `Subgroup.map`-spelled so Noether III applies on the nose. 
                EQ2Presentation.Lifting.ElementaryKernel Yt lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals E).NQ2Presentation.Lifting.ElementaryKernel.N {Yt : Q2Presentation.BoundaryFramedTarget}
      (self : Q2Presentation.Lifting.ElementaryKernel Yt) : Subgroup Yt.Y
             
            Q2Presentation.boundaryPackage_GammaAQ2Presentation.boundaryPackage_GammaA : Q2Presentation.BoundaryPackage Q2Presentation.GammaA**The candidate boundary package** (manuscript Prop 3.14, `prop:compatiblemarking`;
    plan Turn 4 §6).  The Stage-C data of `Γ_A`: the common tame quotient `gammaTameMap`,
    the maximal pro-`2` quotient `p : Γ_A ⟶ Π`, and the common unramified character
    `ν = gammaTameMap ≫ ν_t`, through which both factor. 
            (Q2Presentation.Lifting.scalarCoverFrameQ2Presentation.Lifting.scalarCoverFrame {Yt : Q2Presentation.BoundaryFramedTarget} [Finite Yt.Y]
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals E) (F : Q2Presentation.BoundaryFrame Yt) :
      Q2Presentation.BoundaryFrame (Q2Presentation.Lifting.scalarCoverTarget E lam hinv)The frame transports verbatim to the scalar pushout target. 
              EQ2Presentation.Lifting.ElementaryKernel Yt lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals E FQ2Presentation.BoundaryFrame Yt)
            (Q2Presentation.Lifting.scalarCoverChildQ2Presentation.Lifting.scalarCoverChild {Yt : Q2Presentation.BoundaryFramedTarget} [Finite Yt.Y]
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals E) {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ)
      (F : Q2Presentation.BoundaryFrame Yt)
      (g :
        Q2Presentation.boundaryFramedSurj B (Q2Presentation.TorsorProgram.quotientFramedTarget Yt E.N ⋯ ⋯)
          (Q2Presentation.TorsorProgram.quotientFrame Yt E.N ⋯ ⋯ F)) :
      Q2Presentation.boundaryFramedSurj B
        (Q2Presentation.TorsorProgram.quotientFramedTarget (Q2Presentation.Lifting.scalarCoverTarget E lam hinv)
          (Q2Presentation.Lifting.scalarRelKernel E lam hinv).N ⋯ ⋯)
        (Q2Presentation.TorsorProgram.quotientFrame (Q2Presentation.Lifting.scalarCoverTarget E lam hinv)
          (Q2Presentation.Lifting.scalarRelKernel E lam hinv).N ⋯ ⋯ (Q2Presentation.Lifting.scalarCoverFrame E lam hinv F))**The child seen below the cover**: transport a child-framed
    surjection across the collapse `(B_λ)/(R/ker λ) ≃* Y/R`. 
              EQ2Presentation.Lifting.ElementaryKernel Yt lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals E
              Q2Presentation.boundaryPackage_GammaAQ2Presentation.boundaryPackage_GammaA : Q2Presentation.BoundaryPackage Q2Presentation.GammaA**The candidate boundary package** (manuscript Prop 3.14, `prop:compatiblemarking`;
    plan Turn 4 §6).  The Stage-C data of `Γ_A`: the common tame quotient `gammaTameMap`,
    the maximal pro-`2` quotient `p : Γ_A ⟶ Π`, and the common unramified character
    `ν = gammaTameMap ≫ ν_t`, through which both factor. 
              FQ2Presentation.BoundaryFrame Yt gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GammaA
      (Q2Presentation.TorsorProgram.quotientFramedTarget Yt E.N ⋯ ⋯)
      (Q2Presentation.TorsorProgram.quotientFrame Yt E.N ⋯ ⋯ F))
            f₀Q2Presentation.Lifting.scalarCoverLiftHom E lam hinv Q2Presentation.boundaryPackage_GammaA F g) =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`.
        8
    Optional P2 prep (`lem:commonscalars` l.3791–3815, candidate half):
    the cover-lift torsor has size `|Hom(Γ_A, 𝔽₂)| = 8` — the row-map
    kernel at the diagonal rows is the τ-vanishing tuple space
    `(R/ker λ)³`. 

Lemma 8.3 of the paper (Central-cover exact-image transform).

Let \mathcal Y=(Y,L_Y,\pi_Y,\theta_Y) be boundary-framed and let

p:\widetilde Y\twoheadrightarrow Y

be a central double cover. Give it the pulled-back structure

\widetilde L=p^{-1}(L_Y), \qquad \widetilde\pi=\pi_Yp, \qquad \widetilde\theta=\theta_Yp,

and assume the central kernel lies in \ker(\widetilde\pi,\widetilde\theta). Fix an exact-image subgroup J\le Y projecting onto H. If u_\Gamma^\beta(p,J) counts boundary-framed exact-image maps to J whose pullback cover is split, then

8u_\Gamma^\beta(p,J) =\sum_{\substack{\widetilde J\le p^{-1}(J)\\p(\widetilde J)=J}} e_\Gamma^\beta(\widetilde J,\widetilde J\cap\widetilde L, \widetilde\pi|_{\widetilde J}, \widetilde\theta|_{\widetilde J}).

Every term on the right is therefore an ordinary exact-image object in the same global boundary-framed category.

Lean code for Lemma8.35 declarations
  • theoremdefined in Q2Presentation/Induction/CandidateLiftPartitionCardinality.lean
    complete
    theorem Q2Presentation.Induction.liftPartitionCardinality_of_liftPartition
      {pQ2Presentation.Induction.FramedPair : Q2Presentation.Induction.FramedPairQ2Presentation.Induction.FramedPair : Type 1A **framed pair** `(𝒴, F)`: a boundary-framed marked target together with a
    boundary frame for it (manuscript Definition 4.1 + `eq:beta`).  This is the index of
    Theorem 4.2: the boundary-framed surjection count `e_Γ^β` is a function of the pair.
    The induction of `sec:induction` ranges over *all* such pairs simultaneously
    ("the induction is stated globally", l.1213), ordered by `|L_Y|`. }
      (BQ2Presentation.Induction.MinimalBlock p : Q2Presentation.Induction.MinimalBlockQ2Presentation.Induction.MinimalBlock (p : Q2Presentation.Induction.FramedPair) : Type 1**The §7 minimal non-scalar block.**  Source-uniform module-level data of the
    manuscript tower (`eq:targettower`), with the deep group/representation inputs of
    `lem:simplehead`/`lem:collapse`/`prop:simpleheaddet` isolated as documented fields.  pQ2Presentation.Induction.FramedPair) (SType : TypeA type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. )
      (OQ2Presentation.Induction.CentralCoverSourceObstructionData B S : Q2Presentation.Induction.CentralCoverSourceObstructionDataQ2Presentation.Induction.CentralCoverSourceObstructionData {p : Q2Presentation.Induction.FramedPair}
      (B : Q2Presentation.Induction.MinimalBlock p) (S : Type) : Type 1Source-specific exact-image obstruction index and obstruction map.
    
    Manuscript anchors: `def:Xgamma`, `lem:obstructionseparation`, and the
    `o_R : X_Gamma(B) -> O_R` input to `prop:finalfourier`.  BQ2Presentation.Induction.MinimalBlock p SType)
      (ZQ2Presentation.Induction.CentralCoverSourceCocycleData B : Q2Presentation.Induction.CentralCoverSourceCocycleDataQ2Presentation.Induction.CentralCoverSourceCocycleData {p : Q2Presentation.Induction.FramedPair}
      (B : Q2Presentation.Induction.MinimalBlock p) : Type 1Source-specific `Z^1_Gamma(R)` group with the common size `z_R`.
    
    Manuscript anchors: `lem:affinelifting`, `eq:mumultiplicity`, and the
    source-interface lift-multiplicity comparison.  BQ2Presentation.Induction.MinimalBlock p)
      (FQ2Presentation.Induction.CentralCoverSourceLiftFibers B S O Z : Q2Presentation.Induction.CentralCoverSourceLiftFibersQ2Presentation.Induction.CentralCoverSourceLiftFibers {p : Q2Presentation.Induction.FramedPair}
      (B : Q2Presentation.Induction.MinimalBlock p) (S : Type)
      (O : Q2Presentation.Induction.CentralCoverSourceObstructionData B S)
      (Z : Q2Presentation.Induction.CentralCoverSourceCocycleData B) : Type 1Lift fibres over unobstructed points, before partitioning the global
    boundary-framed surjection set.
    
    Manuscript anchor: `lem:affinelifting`.  BQ2Presentation.Induction.MinimalBlock p SType OQ2Presentation.Induction.CentralCoverSourceObstructionData B S ZQ2Presentation.Induction.CentralCoverSourceCocycleData B)
      (PQ2Presentation.Induction.CentralCoverSourceLiftPartition B S O Z F :
        Q2Presentation.Induction.CentralCoverSourceLiftPartitionQ2Presentation.Induction.CentralCoverSourceLiftPartition {p : Q2Presentation.Induction.FramedPair}
      (B : Q2Presentation.Induction.MinimalBlock p) (S : Type)
      (O : Q2Presentation.Induction.CentralCoverSourceObstructionData B S)
      (Z : Q2Presentation.Induction.CentralCoverSourceCocycleData B)
      (F : Q2Presentation.Induction.CentralCoverSourceLiftFibers B S O Z) : TypeExact-image partition of the global surjection set by the unobstructed lift
    fibres.
    
    Manuscript anchors: `lem:covertransform` and `prop:finalfourier`, including
    Frattini surjectivity of the final `R`-lifts.  BQ2Presentation.Induction.MinimalBlock p SType OQ2Presentation.Induction.CentralCoverSourceObstructionData B S ZQ2Presentation.Induction.CentralCoverSourceCocycleData B
          FQ2Presentation.Induction.CentralCoverSourceLiftFibers B S O Z) :
      Q2Presentation.Induction.CentralCoverSourceLiftPartitionCardinalityQ2Presentation.Induction.CentralCoverSourceLiftPartitionCardinality {p : Q2Presentation.Induction.FramedPair}
      (B : Q2Presentation.Induction.MinimalBlock p) (S : Type)
      (O : Q2Presentation.Induction.CentralCoverSourceObstructionData B S)
      (Z : Q2Presentation.Induction.CentralCoverSourceCocycleData B)
      (F : Q2Presentation.Induction.CentralCoverSourceLiftFibers B S O Z) : PropCardinal form of the exact-image lift partition.  This is the remaining
    candidate finite bookkeeping statement: the actual maps and the disjoint union
    of unobstructed lift fibres have the same finite cardinality.  BQ2Presentation.Induction.MinimalBlock p
        SType OQ2Presentation.Induction.CentralCoverSourceObstructionData B S ZQ2Presentation.Induction.CentralCoverSourceCocycleData B FQ2Presentation.Induction.CentralCoverSourceLiftFibers B S O Z
    theorem Q2Presentation.Induction.liftPartitionCardinality_of_liftPartition
      {pQ2Presentation.Induction.FramedPair :
        Q2Presentation.Induction.FramedPairQ2Presentation.Induction.FramedPair : Type 1A **framed pair** `(𝒴, F)`: a boundary-framed marked target together with a
    boundary frame for it (manuscript Definition 4.1 + `eq:beta`).  This is the index of
    Theorem 4.2: the boundary-framed surjection count `e_Γ^β` is a function of the pair.
    The induction of `sec:induction` ranges over *all* such pairs simultaneously
    ("the induction is stated globally", l.1213), ordered by `|L_Y|`. }
      (BQ2Presentation.Induction.MinimalBlock p :
        Q2Presentation.Induction.MinimalBlockQ2Presentation.Induction.MinimalBlock (p : Q2Presentation.Induction.FramedPair) : Type 1**The §7 minimal non-scalar block.**  Source-uniform module-level data of the
    manuscript tower (`eq:targettower`), with the deep group/representation inputs of
    `lem:simplehead`/`lem:collapse`/`prop:simpleheaddet` isolated as documented fields. 
          pQ2Presentation.Induction.FramedPair)
      (SType : TypeA type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. )
      (OQ2Presentation.Induction.CentralCoverSourceObstructionData B S :
        Q2Presentation.Induction.CentralCoverSourceObstructionDataQ2Presentation.Induction.CentralCoverSourceObstructionData {p : Q2Presentation.Induction.FramedPair}
      (B : Q2Presentation.Induction.MinimalBlock p) (S : Type) : Type 1Source-specific exact-image obstruction index and obstruction map.
    
    Manuscript anchors: `def:Xgamma`, `lem:obstructionseparation`, and the
    `o_R : X_Gamma(B) -> O_R` input to `prop:finalfourier`. 
          BQ2Presentation.Induction.MinimalBlock p SType)
      (ZQ2Presentation.Induction.CentralCoverSourceCocycleData B :
        Q2Presentation.Induction.CentralCoverSourceCocycleDataQ2Presentation.Induction.CentralCoverSourceCocycleData {p : Q2Presentation.Induction.FramedPair}
      (B : Q2Presentation.Induction.MinimalBlock p) : Type 1Source-specific `Z^1_Gamma(R)` group with the common size `z_R`.
    
    Manuscript anchors: `lem:affinelifting`, `eq:mumultiplicity`, and the
    source-interface lift-multiplicity comparison. 
          BQ2Presentation.Induction.MinimalBlock p)
      (FQ2Presentation.Induction.CentralCoverSourceLiftFibers B S O Z :
        Q2Presentation.Induction.CentralCoverSourceLiftFibersQ2Presentation.Induction.CentralCoverSourceLiftFibers {p : Q2Presentation.Induction.FramedPair}
      (B : Q2Presentation.Induction.MinimalBlock p) (S : Type)
      (O : Q2Presentation.Induction.CentralCoverSourceObstructionData B S)
      (Z : Q2Presentation.Induction.CentralCoverSourceCocycleData B) : Type 1Lift fibres over unobstructed points, before partitioning the global
    boundary-framed surjection set.
    
    Manuscript anchor: `lem:affinelifting`. 
          BQ2Presentation.Induction.MinimalBlock p SType OQ2Presentation.Induction.CentralCoverSourceObstructionData B S ZQ2Presentation.Induction.CentralCoverSourceCocycleData B)
      (PQ2Presentation.Induction.CentralCoverSourceLiftPartition B S O Z F :
        Q2Presentation.Induction.CentralCoverSourceLiftPartitionQ2Presentation.Induction.CentralCoverSourceLiftPartition {p : Q2Presentation.Induction.FramedPair}
      (B : Q2Presentation.Induction.MinimalBlock p) (S : Type)
      (O : Q2Presentation.Induction.CentralCoverSourceObstructionData B S)
      (Z : Q2Presentation.Induction.CentralCoverSourceCocycleData B)
      (F : Q2Presentation.Induction.CentralCoverSourceLiftFibers B S O Z) : TypeExact-image partition of the global surjection set by the unobstructed lift
    fibres.
    
    Manuscript anchors: `lem:covertransform` and `prop:finalfourier`, including
    Frattini surjectivity of the final `R`-lifts. 
          BQ2Presentation.Induction.MinimalBlock p SType OQ2Presentation.Induction.CentralCoverSourceObstructionData B S ZQ2Presentation.Induction.CentralCoverSourceCocycleData B FQ2Presentation.Induction.CentralCoverSourceLiftFibers B S O Z) :
      Q2Presentation.Induction.CentralCoverSourceLiftPartitionCardinalityQ2Presentation.Induction.CentralCoverSourceLiftPartitionCardinality {p : Q2Presentation.Induction.FramedPair}
      (B : Q2Presentation.Induction.MinimalBlock p) (S : Type)
      (O : Q2Presentation.Induction.CentralCoverSourceObstructionData B S)
      (Z : Q2Presentation.Induction.CentralCoverSourceCocycleData B)
      (F : Q2Presentation.Induction.CentralCoverSourceLiftFibers B S O Z) : PropCardinal form of the exact-image lift partition.  This is the remaining
    candidate finite bookkeeping statement: the actual maps and the disjoint union
    of unobstructed lift fibres have the same finite cardinality. 
        BQ2Presentation.Induction.MinimalBlock p SType OQ2Presentation.Induction.CentralCoverSourceObstructionData B S ZQ2Presentation.Induction.CentralCoverSourceCocycleData B FQ2Presentation.Induction.CentralCoverSourceLiftFibers B S O Z
    The cardinality shadow of an actual exact-image lift partition.
    
    This is the provable direction of `lem:covertransform` / `prop:finalfourier` at
    the level currently exposed by `CentralCoverFineResiduals`: once the manuscript
    has supplied the genuine bijection from boundary-framed surjections to the
    dependent sum of unobstructed lift fibres, the cardinal equality is immediate.
    
  • theoremdefined in Q2Presentation/Induction/ScalarCoverPartition.lean
    complete
    theorem Q2Presentation.Induction.sec7_scalarCoverPartition_gammaA
      {pQ2Presentation.Induction.FramedPair : Q2Presentation.Induction.FramedPairQ2Presentation.Induction.FramedPair : Type 1A **framed pair** `(𝒴, F)`: a boundary-framed marked target together with a
    boundary frame for it (manuscript Definition 4.1 + `eq:beta`).  This is the index of
    Theorem 4.2: the boundary-framed surjection count `e_Γ^β` is a function of the pair.
    The induction of `sec:induction` ranges over *all* such pairs simultaneously
    ("the induction is stated globally", l.1213), ordered by `|L_Y|`. }
      (chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p : Q2Presentation.Induction.FirstNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor (p : Q2Presentation.Induction.FramedPair) : TypeA non-scalar chief factor of `L_Y` that is **first**: every chief factor strictly
    below it (i.e. with upper term contained in `lower`) is scalar.  This is the manuscript's
    choice `S ◁ P` at l.3616–3623 ("all chief factors below `S` are scalar and `V` is the
    first non-scalar simple factor"), which `lem:collapse` requires for the coprime step
    `[S, Ñ] = 1`.  pQ2Presentation.Induction.FramedPair)
      (KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor :
        Q2Presentation.Induction.KernelMinimalQ2Presentation.Induction.KernelMinimal {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.NonScalarChiefFactor p) : TypeThe manuscript's kernel choice (l.3623): `K ◁ Y`, `K ≤ P`, `KS = P`, and `K` is
    **⊆-minimal** with these properties — stated as: any `Y`-normal `K' ≤ K` still joining
    with `S` to `P` equals `K`.  (This, not leastness among all candidates, is what
    `lem:simplehead` and `lem:collapse` use: both apply it to subgroups of `K`.)  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p.toNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor.toNonScalarChiefFactor {p : Q2Presentation.Induction.FramedPair}
      (self : Q2Presentation.Induction.FirstNonScalarChiefFactor p) : Q2Presentation.Induction.NonScalarChiefFactor p)
      (lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) :
        Module.DualModule.Dual.{u_4, u_5} (R : Type u_4) (M : Type u_5) [Semiring R] [AddCommMonoid M] [Module R M] : Type (max u_5 u_4)The left dual space of an R-module M is the R-module of linear maps `M → R`.  (ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2)
          (Q2Presentation.Lifting.NAddQ2Presentation.Lifting.NAdd {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) : TypeThe additive `F₂`-carrier of an elementary kernel. 
            (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)))
      (hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K) :
        lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`.
          Q2Presentation.Lifting.conjInvDualsQ2Presentation.Lifting.conjInvDuals {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) :
      Submodule (ZMod 2) (Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E))The conjugation-invariant duals `X = (R^∨)^Y = (R^∨)^C` of an
    elementary kernel (consumer spelling of the manuscript's `𝒳_R`,
    §7 l.3720–3723). 
            (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor))
      (hnelam ≠ 0 : lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) Ne.{u} {α : Sort u} (a b : α) : Prop`a ≠ b`, or `Ne a b` is defined as `¬ (a = b)` or `a = b → False`,
    and asserts that `a` and `b` are not equal.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≠` in identifiers is `ne`. 0) :
      8 *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
          Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number.
    If `α` is infinite, `Nat.card α = 0`. 
            {Subtype.{u} {α : Sort u} (p : α → Prop) : Sort (max 1 u)All the elements of a type that satisfy a predicate.
    
    `Subtype p`, usually written `{ x : α // p x }` or `{ x // p x }`, contains all elements `x : α` for
    which `p x` is true. Its constructor is a pair of the value and the proof that it satisfies the
    predicate. In run-time code, `{ x : α // p x }` is represented identically to `α`.
    
    There is a coercion from `{ x : α // p x }` to `α`, so elements of a subtype may be used where the
    underlying type is expected.
    
    Examples:
     * `{ n : Nat // n % 2 = 0 }` is the type of even numbers.
     * `{ xs : Array String // xs.size = 5 }` is the type of arrays with five `String`s.
     * Given `xs : List α`, `List { x : α // x ∈ xs }` is the type of lists in which all elements are
       contained in `xs`.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `{ x // p x }` in identifiers is `subtype`. gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GammaA
      (Q2Presentation.Induction.XRZero.xrChild chief K).fst (Q2Presentation.Induction.XRZero.xrChild chief K).snd //Subtype.{u} {α : Sort u} (p : α → Prop) : Sort (max 1 u)All the elements of a type that satisfy a predicate.
    
    `Subtype p`, usually written `{ x : α // p x }` or `{ x // p x }`, contains all elements `x : α` for
    which `p x` is true. Its constructor is a pair of the value and the proof that it satisfies the
    predicate. In run-time code, `{ x : α // p x }` is represented identically to `α`.
    
    There is a coercion from `{ x : α // p x }` to `α`, so elements of a subtype may be used where the
    underlying type is expected.
    
    Examples:
     * `{ n : Nat // n % 2 = 0 }` is the type of even numbers.
     * `{ xs : Array String // xs.size = 5 }` is the type of arrays with five `String`s.
     * Given `xs : List α`, `List { x : α // x ∈ xs }` is the type of lists in which all elements are
       contained in `xs`.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `{ x // p x }` in identifiers is `subtype`.
              NonemptyNonempty.{u} (α : Sort u) : Prop`Nonempty α` is a typeclass that says that `α` is not an empty type,
    that is, there exists an element in the type. It differs from `Inhabited α`
    in that `Nonempty α` is a `Prop`, which means that it does not actually carry
    an element of `α`, only a proof that *there exists* such an element.
    Given `Nonempty α`, you can construct an element of `α` *nonconstructively*
    using `Classical.choice`.
    
                (Q2Presentation.Lifting.scalarCoverLiftHomQ2Presentation.Lifting.scalarCoverLiftHom {Yt : Q2Presentation.BoundaryFramedTarget} [Finite Yt.Y]
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals E) {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ)
      (F : Q2Presentation.BoundaryFrame Yt)
      (g :
        Q2Presentation.boundaryFramedSurj B (Q2Presentation.TorsorProgram.quotientFramedTarget Yt E.N ⋯ ⋯)
          (Q2Presentation.TorsorProgram.quotientFrame Yt E.N ⋯ ⋯ F)) :
      Type**Cover lifts of `g`** (`lem:obstructionseparation` l.4219–4223):
    framed homs `Γ ⟶ B_λ` over `g` — surjectivity NOT imposed (the
    manuscript's compatible lifts: `λ_*o` measures weak liftability; images
    are stratified by `eq:recursionR2`/`R3` later). 
                  (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)
                  Q2Presentation.boundaryPackage_GammaAQ2Presentation.boundaryPackage_GammaA : Q2Presentation.BoundaryPackage Q2Presentation.GammaA**The candidate boundary package** (manuscript Prop 3.14, `prop:compatiblemarking`;
    plan Turn 4 §6).  The Stage-C data of `Γ_A`: the common tame quotient `gammaTameMap`,
    the maximal pro-`2` quotient `p : Γ_A ⟶ Π`, and the common unramified character
    `ν = gammaTameMap ≫ ν_t`, through which both factor.  pQ2Presentation.Induction.FramedPair.sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.
     gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GammaA
      (Q2Presentation.Induction.XRZero.xrChild chief K).fst (Q2Presentation.Induction.XRZero.xrChild chief K).snd) }Subtype.{u} {α : Sort u} (p : α → Prop) : Sort (max 1 u)All the elements of a type that satisfy a predicate.
    
    `Subtype p`, usually written `{ x : α // p x }` or `{ x // p x }`, contains all elements `x : α` for
    which `p x` is true. Its constructor is a pair of the value and the proof that it satisfies the
    predicate. In run-time code, `{ x : α // p x }` is represented identically to `α`.
    
    There is a coercion from `{ x : α // p x }` to `α`, so elements of a subtype may be used where the
    underlying type is expected.
    
    Examples:
     * `{ n : Nat // n % 2 = 0 }` is the type of even numbers.
     * `{ xs : Array String // xs.size = 5 }` is the type of arrays with five `String`s.
     * Given `xs : List α`, `List { x : α // x ∈ xs }` is the type of lists in which all elements are
       contained in `xs`.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `{ x // p x }` in identifiers is `subtype`. =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`.
         JQ2Presentation.Induction.scalarCoverStrata chief K lam hinv,
          Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number.
    If `α` is infinite, `Nat.card α = 0`. 
            (Q2Presentation.boundaryFramedSurjQ2Presentation.boundaryFramedSurj {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ)
      (Yt : Q2Presentation.BoundaryFramedTarget) (F : Q2Presentation.BoundaryFrame Yt) : TypeThe **boundary-framed surjections** `e_Γ^β(𝒴)` (manuscript `eq:eGamma`): the
    continuous surjections `f : Γ ↠ Y` whose induced map to `H × E` is the prescribed
    `β ∘ b_Γ`, i.e. `q_Y ∘ f = β ∘ b_Γ`.  This is the subtype counted in Theorem 4.2;
    its cardinality is `e_Γ^β(𝒴)`. 
              Q2Presentation.boundaryPackage_GammaAQ2Presentation.boundaryPackage_GammaA : Q2Presentation.BoundaryPackage Q2Presentation.GammaA**The candidate boundary package** (manuscript Prop 3.14, `prop:compatiblemarking`;
    plan Turn 4 §6).  The Stage-C data of `Γ_A`: the common tame quotient `gammaTameMap`,
    the maximal pro-`2` quotient `p : Γ_A ⟶ Π`, and the common unramified character
    `ν = gammaTameMap ≫ ν_t`, through which both factor. 
              (Q2Presentation.Induction.scalarCoverStratumPairQ2Presentation.Induction.scalarCoverStratumPair {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K))
      (J : Q2Presentation.Induction.scalarCoverStrata chief K lam hinv) : Q2Presentation.Induction.FramedPair**The stratum framed pair** `(J̃, J̃ ∩ L̃, π̃|_J̃, θ̃|_J̃; same frame)` —
    an ordinary exact-image object in the same global boundary-framed category
    (same `H`, same `E`, `p.2`'s frame verbatim), ready for the engine's children
    lists.  Its measure is `|J̃ ∩ L̃|`, `lem:strictdecrease`'s quantity.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))
                  hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K) JQ2Presentation.Induction.scalarCoverStrata chief K lam hinv).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.
    
              (Q2Presentation.Induction.scalarCoverStratumPairQ2Presentation.Induction.scalarCoverStratumPair {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K))
      (J : Q2Presentation.Induction.scalarCoverStrata chief K lam hinv) : Q2Presentation.Induction.FramedPair**The stratum framed pair** `(J̃, J̃ ∩ L̃, π̃|_J̃, θ̃|_J̃; same frame)` —
    an ordinary exact-image object in the same global boundary-framed category
    (same `H`, same `E`, `p.2`'s frame verbatim), ready for the engine's children
    lists.  Its measure is `|J̃ ∩ L̃|`, `lem:strictdecrease`'s quantity.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))
                  hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K) JQ2Presentation.Induction.scalarCoverStrata chief K lam hinv).sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.
    )
    theorem Q2Presentation.Induction.sec7_scalarCoverPartition_gammaA
      {pQ2Presentation.Induction.FramedPair :
        Q2Presentation.Induction.FramedPairQ2Presentation.Induction.FramedPair : Type 1A **framed pair** `(𝒴, F)`: a boundary-framed marked target together with a
    boundary frame for it (manuscript Definition 4.1 + `eq:beta`).  This is the index of
    Theorem 4.2: the boundary-framed surjection count `e_Γ^β` is a function of the pair.
    The induction of `sec:induction` ranges over *all* such pairs simultaneously
    ("the induction is stated globally", l.1213), ordered by `|L_Y|`. }
      (chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p :
        Q2Presentation.Induction.FirstNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor (p : Q2Presentation.Induction.FramedPair) : TypeA non-scalar chief factor of `L_Y` that is **first**: every chief factor strictly
    below it (i.e. with upper term contained in `lower`) is scalar.  This is the manuscript's
    choice `S ◁ P` at l.3616–3623 ("all chief factors below `S` are scalar and `V` is the
    first non-scalar simple factor"), which `lem:collapse` requires for the coprime step
    `[S, Ñ] = 1`. 
          pQ2Presentation.Induction.FramedPair)
      (KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor :
        Q2Presentation.Induction.KernelMinimalQ2Presentation.Induction.KernelMinimal {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.NonScalarChiefFactor p) : TypeThe manuscript's kernel choice (l.3623): `K ◁ Y`, `K ≤ P`, `KS = P`, and `K` is
    **⊆-minimal** with these properties — stated as: any `Y`-normal `K' ≤ K` still joining
    with `S` to `P` equals `K`.  (This, not leastness among all candidates, is what
    `lem:simplehead` and `lem:collapse` use: both apply it to subgroups of `K`.) 
          chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p.toNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor.toNonScalarChiefFactor {p : Q2Presentation.Induction.FramedPair}
      (self : Q2Presentation.Induction.FirstNonScalarChiefFactor p) : Q2Presentation.Induction.NonScalarChiefFactor p)
      (lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) :
        Module.DualModule.Dual.{u_4, u_5} (R : Type u_4) (M : Type u_5) [Semiring R] [AddCommMonoid M] [Module R M] : Type (max u_5 u_4)The left dual space of an R-module M is the R-module of linear maps `M → R`.  (ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2)
          (Q2Presentation.Lifting.NAddQ2Presentation.Lifting.NAdd {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) : TypeThe additive `F₂`-carrier of an elementary kernel. 
            (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian. 
              chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)))
      (hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K) :
        lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`.
          Q2Presentation.Lifting.conjInvDualsQ2Presentation.Lifting.conjInvDuals {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) :
      Submodule (ZMod 2) (Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E))The conjugation-invariant duals `X = (R^∨)^Y = (R^∨)^C` of an
    elementary kernel (consumer spelling of the manuscript's `𝒳_R`,
    §7 l.3720–3723). 
            (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian. 
              chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor))
      (hnelam ≠ 0 : lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) Ne.{u} {α : Sort u} (a b : α) : Prop`a ≠ b`, or `Ne a b` is defined as `¬ (a = b)` or `a = b → False`,
    and asserts that `a` and `b` are not equal.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≠` in identifiers is `ne`. 0) :
      8 *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
          Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number.
    If `α` is infinite, `Nat.card α = 0`. 
            {Subtype.{u} {α : Sort u} (p : α → Prop) : Sort (max 1 u)All the elements of a type that satisfy a predicate.
    
    `Subtype p`, usually written `{ x : α // p x }` or `{ x // p x }`, contains all elements `x : α` for
    which `p x` is true. Its constructor is a pair of the value and the proof that it satisfies the
    predicate. In run-time code, `{ x : α // p x }` is represented identically to `α`.
    
    There is a coercion from `{ x : α // p x }` to `α`, so elements of a subtype may be used where the
    underlying type is expected.
    
    Examples:
     * `{ n : Nat // n % 2 = 0 }` is the type of even numbers.
     * `{ xs : Array String // xs.size = 5 }` is the type of arrays with five `String`s.
     * Given `xs : List α`, `List { x : α // x ∈ xs }` is the type of lists in which all elements are
       contained in `xs`.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `{ x // p x }` in identifiers is `subtype`. gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GammaA
      (Q2Presentation.Induction.XRZero.xrChild chief K).fst (Q2Presentation.Induction.XRZero.xrChild chief K).snd //Subtype.{u} {α : Sort u} (p : α → Prop) : Sort (max 1 u)All the elements of a type that satisfy a predicate.
    
    `Subtype p`, usually written `{ x : α // p x }` or `{ x // p x }`, contains all elements `x : α` for
    which `p x` is true. Its constructor is a pair of the value and the proof that it satisfies the
    predicate. In run-time code, `{ x : α // p x }` is represented identically to `α`.
    
    There is a coercion from `{ x : α // p x }` to `α`, so elements of a subtype may be used where the
    underlying type is expected.
    
    Examples:
     * `{ n : Nat // n % 2 = 0 }` is the type of even numbers.
     * `{ xs : Array String // xs.size = 5 }` is the type of arrays with five `String`s.
     * Given `xs : List α`, `List { x : α // x ∈ xs }` is the type of lists in which all elements are
       contained in `xs`.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `{ x // p x }` in identifiers is `subtype`.
              NonemptyNonempty.{u} (α : Sort u) : Prop`Nonempty α` is a typeclass that says that `α` is not an empty type,
    that is, there exists an element in the type. It differs from `Inhabited α`
    in that `Nonempty α` is a `Prop`, which means that it does not actually carry
    an element of `α`, only a proof that *there exists* such an element.
    Given `Nonempty α`, you can construct an element of `α` *nonconstructively*
    using `Classical.choice`.
    
                (Q2Presentation.Lifting.scalarCoverLiftHomQ2Presentation.Lifting.scalarCoverLiftHom {Yt : Q2Presentation.BoundaryFramedTarget} [Finite Yt.Y]
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals E) {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ)
      (F : Q2Presentation.BoundaryFrame Yt)
      (g :
        Q2Presentation.boundaryFramedSurj B (Q2Presentation.TorsorProgram.quotientFramedTarget Yt E.N ⋯ ⋯)
          (Q2Presentation.TorsorProgram.quotientFrame Yt E.N ⋯ ⋯ F)) :
      Type**Cover lifts of `g`** (`lem:obstructionseparation` l.4219–4223):
    framed homs `Γ ⟶ B_λ` over `g` — surjectivity NOT imposed (the
    manuscript's compatible lifts: `λ_*o` measures weak liftability; images
    are stratified by `eq:recursionR2`/`R3` later). 
                  (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian. 
                    chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
                  lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)
                  Q2Presentation.boundaryPackage_GammaAQ2Presentation.boundaryPackage_GammaA : Q2Presentation.BoundaryPackage Q2Presentation.GammaA**The candidate boundary package** (manuscript Prop 3.14, `prop:compatiblemarking`;
    plan Turn 4 §6).  The Stage-C data of `Γ_A`: the common tame quotient `gammaTameMap`,
    the maximal pro-`2` quotient `p : Γ_A ⟶ Π`, and the common unramified character
    `ν = gammaTameMap ≫ ν_t`, through which both factor. 
                  pQ2Presentation.Induction.FramedPair.sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.
     gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GammaA
      (Q2Presentation.Induction.XRZero.xrChild chief K).fst (Q2Presentation.Induction.XRZero.xrChild chief K).snd) }Subtype.{u} {α : Sort u} (p : α → Prop) : Sort (max 1 u)All the elements of a type that satisfy a predicate.
    
    `Subtype p`, usually written `{ x : α // p x }` or `{ x // p x }`, contains all elements `x : α` for
    which `p x` is true. Its constructor is a pair of the value and the proof that it satisfies the
    predicate. In run-time code, `{ x : α // p x }` is represented identically to `α`.
    
    There is a coercion from `{ x : α // p x }` to `α`, so elements of a subtype may be used where the
    underlying type is expected.
    
    Examples:
     * `{ n : Nat // n % 2 = 0 }` is the type of even numbers.
     * `{ xs : Array String // xs.size = 5 }` is the type of arrays with five `String`s.
     * Given `xs : List α`, `List { x : α // x ∈ xs }` is the type of lists in which all elements are
       contained in `xs`.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `{ x // p x }` in identifiers is `subtype`. =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`.
         JQ2Presentation.Induction.scalarCoverStrata chief K lam hinv,
          Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number.
    If `α` is infinite, `Nat.card α = 0`. 
            (Q2Presentation.boundaryFramedSurjQ2Presentation.boundaryFramedSurj {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ)
      (Yt : Q2Presentation.BoundaryFramedTarget) (F : Q2Presentation.BoundaryFrame Yt) : TypeThe **boundary-framed surjections** `e_Γ^β(𝒴)` (manuscript `eq:eGamma`): the
    continuous surjections `f : Γ ↠ Y` whose induced map to `H × E` is the prescribed
    `β ∘ b_Γ`, i.e. `q_Y ∘ f = β ∘ b_Γ`.  This is the subtype counted in Theorem 4.2;
    its cardinality is `e_Γ^β(𝒴)`. 
              Q2Presentation.boundaryPackage_GammaAQ2Presentation.boundaryPackage_GammaA : Q2Presentation.BoundaryPackage Q2Presentation.GammaA**The candidate boundary package** (manuscript Prop 3.14, `prop:compatiblemarking`;
    plan Turn 4 §6).  The Stage-C data of `Γ_A`: the common tame quotient `gammaTameMap`,
    the maximal pro-`2` quotient `p : Γ_A ⟶ Π`, and the common unramified character
    `ν = gammaTameMap ≫ ν_t`, through which both factor. 
              (Q2Presentation.Induction.scalarCoverStratumPairQ2Presentation.Induction.scalarCoverStratumPair {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K))
      (J : Q2Presentation.Induction.scalarCoverStrata chief K lam hinv) : Q2Presentation.Induction.FramedPair**The stratum framed pair** `(J̃, J̃ ∩ L̃, π̃|_J̃, θ̃|_J̃; same frame)` —
    an ordinary exact-image object in the same global boundary-framed category
    (same `H`, same `E`, `p.2`'s frame verbatim), ready for the engine's children
    lists.  Its measure is `|J̃ ∩ L̃|`, `lem:strictdecrease`'s quantity. 
                  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K) JQ2Presentation.Induction.scalarCoverStrata chief K lam hinv).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.
    
              (Q2Presentation.Induction.scalarCoverStratumPairQ2Presentation.Induction.scalarCoverStratumPair {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K))
      (J : Q2Presentation.Induction.scalarCoverStrata chief K lam hinv) : Q2Presentation.Induction.FramedPair**The stratum framed pair** `(J̃, J̃ ∩ L̃, π̃|_J̃, θ̃|_J̃; same frame)` —
    an ordinary exact-image object in the same global boundary-framed category
    (same `H`, same `E`, `p.2`'s frame verbatim), ready for the engine's children
    lists.  Its measure is `|J̃ ∩ L̃|`, `lem:strictdecrease`'s quantity. 
                  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K) JQ2Presentation.Induction.scalarCoverStrata chief K lam hinv).sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.
    )
    **`lem:covertransform` at the scalar cover, candidate source**
    (`eq:covertransform` l.3834–3840 at `J = B`): eight times the weak-lift count
    `m_{A,λ}(B)` — the keep `sec7_scalarCoverCountAgreement`'s LHS — is the sum of
    the boundary-framed exact-image counts of the cover strata. 
  • theoremdefined in Q2Presentation/Induction/ScalarCoverPartition.lean
    complete
    theorem Q2Presentation.Induction.sec7_scalarCoverPartition_gq2
      {pQ2Presentation.Induction.FramedPair : Q2Presentation.Induction.FramedPairQ2Presentation.Induction.FramedPair : Type 1A **framed pair** `(𝒴, F)`: a boundary-framed marked target together with a
    boundary frame for it (manuscript Definition 4.1 + `eq:beta`).  This is the index of
    Theorem 4.2: the boundary-framed surjection count `e_Γ^β` is a function of the pair.
    The induction of `sec:induction` ranges over *all* such pairs simultaneously
    ("the induction is stated globally", l.1213), ordered by `|L_Y|`. }
      (chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p : Q2Presentation.Induction.FirstNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor (p : Q2Presentation.Induction.FramedPair) : TypeA non-scalar chief factor of `L_Y` that is **first**: every chief factor strictly
    below it (i.e. with upper term contained in `lower`) is scalar.  This is the manuscript's
    choice `S ◁ P` at l.3616–3623 ("all chief factors below `S` are scalar and `V` is the
    first non-scalar simple factor"), which `lem:collapse` requires for the coprime step
    `[S, Ñ] = 1`.  pQ2Presentation.Induction.FramedPair)
      (KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor :
        Q2Presentation.Induction.KernelMinimalQ2Presentation.Induction.KernelMinimal {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.NonScalarChiefFactor p) : TypeThe manuscript's kernel choice (l.3623): `K ◁ Y`, `K ≤ P`, `KS = P`, and `K` is
    **⊆-minimal** with these properties — stated as: any `Y`-normal `K' ≤ K` still joining
    with `S` to `P` equals `K`.  (This, not leastness among all candidates, is what
    `lem:simplehead` and `lem:collapse` use: both apply it to subgroups of `K`.)  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p.toNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor.toNonScalarChiefFactor {p : Q2Presentation.Induction.FramedPair}
      (self : Q2Presentation.Induction.FirstNonScalarChiefFactor p) : Q2Presentation.Induction.NonScalarChiefFactor p)
      (lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) :
        Module.DualModule.Dual.{u_4, u_5} (R : Type u_4) (M : Type u_5) [Semiring R] [AddCommMonoid M] [Module R M] : Type (max u_5 u_4)The left dual space of an R-module M is the R-module of linear maps `M → R`.  (ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2)
          (Q2Presentation.Lifting.NAddQ2Presentation.Lifting.NAdd {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) : TypeThe additive `F₂`-carrier of an elementary kernel. 
            (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)))
      (hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K) :
        lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`.
          Q2Presentation.Lifting.conjInvDualsQ2Presentation.Lifting.conjInvDuals {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) :
      Submodule (ZMod 2) (Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E))The conjugation-invariant duals `X = (R^∨)^Y = (R^∨)^C` of an
    elementary kernel (consumer spelling of the manuscript's `𝒳_R`,
    §7 l.3720–3723). 
            (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor))
      (hnelam ≠ 0 : lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) Ne.{u} {α : Sort u} (a b : α) : Prop`a ≠ b`, or `Ne a b` is defined as `¬ (a = b)` or `a = b → False`,
    and asserts that `a` and `b` are not equal.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≠` in identifiers is `ne`. 0) :
      8 *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
          Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number.
    If `α` is infinite, `Nat.card α = 0`. 
            {Subtype.{u} {α : Sort u} (p : α → Prop) : Sort (max 1 u)All the elements of a type that satisfy a predicate.
    
    `Subtype p`, usually written `{ x : α // p x }` or `{ x // p x }`, contains all elements `x : α` for
    which `p x` is true. Its constructor is a pair of the value and the proof that it satisfies the
    predicate. In run-time code, `{ x : α // p x }` is represented identically to `α`.
    
    There is a coercion from `{ x : α // p x }` to `α`, so elements of a subtype may be used where the
    underlying type is expected.
    
    Examples:
     * `{ n : Nat // n % 2 = 0 }` is the type of even numbers.
     * `{ xs : Array String // xs.size = 5 }` is the type of arrays with five `String`s.
     * Given `xs : List α`, `List { x : α // x ∈ xs }` is the type of lists in which all elements are
       contained in `xs`.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `{ x // p x }` in identifiers is `subtype`. gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GQ2
      (Q2Presentation.Induction.XRZero.xrChild chief K).fst (Q2Presentation.Induction.XRZero.xrChild chief K).snd //Subtype.{u} {α : Sort u} (p : α → Prop) : Sort (max 1 u)All the elements of a type that satisfy a predicate.
    
    `Subtype p`, usually written `{ x : α // p x }` or `{ x // p x }`, contains all elements `x : α` for
    which `p x` is true. Its constructor is a pair of the value and the proof that it satisfies the
    predicate. In run-time code, `{ x : α // p x }` is represented identically to `α`.
    
    There is a coercion from `{ x : α // p x }` to `α`, so elements of a subtype may be used where the
    underlying type is expected.
    
    Examples:
     * `{ n : Nat // n % 2 = 0 }` is the type of even numbers.
     * `{ xs : Array String // xs.size = 5 }` is the type of arrays with five `String`s.
     * Given `xs : List α`, `List { x : α // x ∈ xs }` is the type of lists in which all elements are
       contained in `xs`.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `{ x // p x }` in identifiers is `subtype`.
              NonemptyNonempty.{u} (α : Sort u) : Prop`Nonempty α` is a typeclass that says that `α` is not an empty type,
    that is, there exists an element in the type. It differs from `Inhabited α`
    in that `Nonempty α` is a `Prop`, which means that it does not actually carry
    an element of `α`, only a proof that *there exists* such an element.
    Given `Nonempty α`, you can construct an element of `α` *nonconstructively*
    using `Classical.choice`.
    
                (Q2Presentation.Lifting.scalarCoverLiftHomQ2Presentation.Lifting.scalarCoverLiftHom {Yt : Q2Presentation.BoundaryFramedTarget} [Finite Yt.Y]
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals E) {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ)
      (F : Q2Presentation.BoundaryFrame Yt)
      (g :
        Q2Presentation.boundaryFramedSurj B (Q2Presentation.TorsorProgram.quotientFramedTarget Yt E.N ⋯ ⋯)
          (Q2Presentation.TorsorProgram.quotientFrame Yt E.N ⋯ ⋯ F)) :
      Type**Cover lifts of `g`** (`lem:obstructionseparation` l.4219–4223):
    framed homs `Γ ⟶ B_λ` over `g` — surjectivity NOT imposed (the
    manuscript's compatible lifts: `λ_*o` measures weak liftability; images
    are stratified by `eq:recursionR2`/`R3` later). 
                  (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)
                  Q2Presentation.boundaryPackage_GQ2Q2Presentation.boundaryPackage_GQ2 : Q2Presentation.BoundaryPackage Q2Presentation.GQ2Profinite**The local boundary package** `boundaryPackage_GQ2 : BoundaryPackage G_{ℚ₂}`
    (manuscript Prop 3.14 `prop:compatiblemarking` for `Γ = G_{ℚ₂}`; plan Turn 4 §6),
    the `G_{ℚ₂}`-side instance of the uniform Stage-C boundary datum.
    
    * `tameMap`/`tame_surj`/`tame_nu` — the local tame quotient `G_{ℚ₂} ↠ T_A` with
      unramified marking `ν_loc`, from the axiom `gq2_tame_quotient` (Prop 3.2 + the
      local half of Prop `compatiblemarking`);
    * `pro2Map`/`pro2_surj`/`pro2_nu` — the local maximal pro-`2` quotient
      `G_{ℚ₂} ↠ Π` with the *same* unramified marking `ν_loc`, proved from the fully
      marked Labute comparison `labute_GQ2_maxPro2_marked` (`pro2Map_loc`,
      `pro2Map_loc_surjective`, `pro2Map_loc_nu`);
    * `nu := ν_loc` — the common unramified character through which both factor.  pQ2Presentation.Induction.FramedPair.sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.
     gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GQ2
      (Q2Presentation.Induction.XRZero.xrChild chief K).fst (Q2Presentation.Induction.XRZero.xrChild chief K).snd) }Subtype.{u} {α : Sort u} (p : α → Prop) : Sort (max 1 u)All the elements of a type that satisfy a predicate.
    
    `Subtype p`, usually written `{ x : α // p x }` or `{ x // p x }`, contains all elements `x : α` for
    which `p x` is true. Its constructor is a pair of the value and the proof that it satisfies the
    predicate. In run-time code, `{ x : α // p x }` is represented identically to `α`.
    
    There is a coercion from `{ x : α // p x }` to `α`, so elements of a subtype may be used where the
    underlying type is expected.
    
    Examples:
     * `{ n : Nat // n % 2 = 0 }` is the type of even numbers.
     * `{ xs : Array String // xs.size = 5 }` is the type of arrays with five `String`s.
     * Given `xs : List α`, `List { x : α // x ∈ xs }` is the type of lists in which all elements are
       contained in `xs`.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `{ x // p x }` in identifiers is `subtype`. =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`.
         JQ2Presentation.Induction.scalarCoverStrata chief K lam hinv,
          Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number.
    If `α` is infinite, `Nat.card α = 0`. 
            (Q2Presentation.boundaryFramedSurjQ2Presentation.boundaryFramedSurj {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ)
      (Yt : Q2Presentation.BoundaryFramedTarget) (F : Q2Presentation.BoundaryFrame Yt) : TypeThe **boundary-framed surjections** `e_Γ^β(𝒴)` (manuscript `eq:eGamma`): the
    continuous surjections `f : Γ ↠ Y` whose induced map to `H × E` is the prescribed
    `β ∘ b_Γ`, i.e. `q_Y ∘ f = β ∘ b_Γ`.  This is the subtype counted in Theorem 4.2;
    its cardinality is `e_Γ^β(𝒴)`. 
              Q2Presentation.boundaryPackage_GQ2Q2Presentation.boundaryPackage_GQ2 : Q2Presentation.BoundaryPackage Q2Presentation.GQ2Profinite**The local boundary package** `boundaryPackage_GQ2 : BoundaryPackage G_{ℚ₂}`
    (manuscript Prop 3.14 `prop:compatiblemarking` for `Γ = G_{ℚ₂}`; plan Turn 4 §6),
    the `G_{ℚ₂}`-side instance of the uniform Stage-C boundary datum.
    
    * `tameMap`/`tame_surj`/`tame_nu` — the local tame quotient `G_{ℚ₂} ↠ T_A` with
      unramified marking `ν_loc`, from the axiom `gq2_tame_quotient` (Prop 3.2 + the
      local half of Prop `compatiblemarking`);
    * `pro2Map`/`pro2_surj`/`pro2_nu` — the local maximal pro-`2` quotient
      `G_{ℚ₂} ↠ Π` with the *same* unramified marking `ν_loc`, proved from the fully
      marked Labute comparison `labute_GQ2_maxPro2_marked` (`pro2Map_loc`,
      `pro2Map_loc_surjective`, `pro2Map_loc_nu`);
    * `nu := ν_loc` — the common unramified character through which both factor. 
              (Q2Presentation.Induction.scalarCoverStratumPairQ2Presentation.Induction.scalarCoverStratumPair {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K))
      (J : Q2Presentation.Induction.scalarCoverStrata chief K lam hinv) : Q2Presentation.Induction.FramedPair**The stratum framed pair** `(J̃, J̃ ∩ L̃, π̃|_J̃, θ̃|_J̃; same frame)` —
    an ordinary exact-image object in the same global boundary-framed category
    (same `H`, same `E`, `p.2`'s frame verbatim), ready for the engine's children
    lists.  Its measure is `|J̃ ∩ L̃|`, `lem:strictdecrease`'s quantity.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))
                  hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K) JQ2Presentation.Induction.scalarCoverStrata chief K lam hinv).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.
    
              (Q2Presentation.Induction.scalarCoverStratumPairQ2Presentation.Induction.scalarCoverStratumPair {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K))
      (J : Q2Presentation.Induction.scalarCoverStrata chief K lam hinv) : Q2Presentation.Induction.FramedPair**The stratum framed pair** `(J̃, J̃ ∩ L̃, π̃|_J̃, θ̃|_J̃; same frame)` —
    an ordinary exact-image object in the same global boundary-framed category
    (same `H`, same `E`, `p.2`'s frame verbatim), ready for the engine's children
    lists.  Its measure is `|J̃ ∩ L̃|`, `lem:strictdecrease`'s quantity.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))
                  hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K) JQ2Presentation.Induction.scalarCoverStrata chief K lam hinv).sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.
    )
    theorem Q2Presentation.Induction.sec7_scalarCoverPartition_gq2
      {pQ2Presentation.Induction.FramedPair :
        Q2Presentation.Induction.FramedPairQ2Presentation.Induction.FramedPair : Type 1A **framed pair** `(𝒴, F)`: a boundary-framed marked target together with a
    boundary frame for it (manuscript Definition 4.1 + `eq:beta`).  This is the index of
    Theorem 4.2: the boundary-framed surjection count `e_Γ^β` is a function of the pair.
    The induction of `sec:induction` ranges over *all* such pairs simultaneously
    ("the induction is stated globally", l.1213), ordered by `|L_Y|`. }
      (chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p :
        Q2Presentation.Induction.FirstNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor (p : Q2Presentation.Induction.FramedPair) : TypeA non-scalar chief factor of `L_Y` that is **first**: every chief factor strictly
    below it (i.e. with upper term contained in `lower`) is scalar.  This is the manuscript's
    choice `S ◁ P` at l.3616–3623 ("all chief factors below `S` are scalar and `V` is the
    first non-scalar simple factor"), which `lem:collapse` requires for the coprime step
    `[S, Ñ] = 1`. 
          pQ2Presentation.Induction.FramedPair)
      (KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor :
        Q2Presentation.Induction.KernelMinimalQ2Presentation.Induction.KernelMinimal {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.NonScalarChiefFactor p) : TypeThe manuscript's kernel choice (l.3623): `K ◁ Y`, `K ≤ P`, `KS = P`, and `K` is
    **⊆-minimal** with these properties — stated as: any `Y`-normal `K' ≤ K` still joining
    with `S` to `P` equals `K`.  (This, not leastness among all candidates, is what
    `lem:simplehead` and `lem:collapse` use: both apply it to subgroups of `K`.) 
          chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p.toNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor.toNonScalarChiefFactor {p : Q2Presentation.Induction.FramedPair}
      (self : Q2Presentation.Induction.FirstNonScalarChiefFactor p) : Q2Presentation.Induction.NonScalarChiefFactor p)
      (lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) :
        Module.DualModule.Dual.{u_4, u_5} (R : Type u_4) (M : Type u_5) [Semiring R] [AddCommMonoid M] [Module R M] : Type (max u_5 u_4)The left dual space of an R-module M is the R-module of linear maps `M → R`.  (ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2)
          (Q2Presentation.Lifting.NAddQ2Presentation.Lifting.NAdd {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) : TypeThe additive `F₂`-carrier of an elementary kernel. 
            (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian. 
              chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)))
      (hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K) :
        lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`.
          Q2Presentation.Lifting.conjInvDualsQ2Presentation.Lifting.conjInvDuals {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) :
      Submodule (ZMod 2) (Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E))The conjugation-invariant duals `X = (R^∨)^Y = (R^∨)^C` of an
    elementary kernel (consumer spelling of the manuscript's `𝒳_R`,
    §7 l.3720–3723). 
            (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian. 
              chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor))
      (hnelam ≠ 0 : lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) Ne.{u} {α : Sort u} (a b : α) : Prop`a ≠ b`, or `Ne a b` is defined as `¬ (a = b)` or `a = b → False`,
    and asserts that `a` and `b` are not equal.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≠` in identifiers is `ne`. 0) :
      8 *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
          Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number.
    If `α` is infinite, `Nat.card α = 0`. 
            {Subtype.{u} {α : Sort u} (p : α → Prop) : Sort (max 1 u)All the elements of a type that satisfy a predicate.
    
    `Subtype p`, usually written `{ x : α // p x }` or `{ x // p x }`, contains all elements `x : α` for
    which `p x` is true. Its constructor is a pair of the value and the proof that it satisfies the
    predicate. In run-time code, `{ x : α // p x }` is represented identically to `α`.
    
    There is a coercion from `{ x : α // p x }` to `α`, so elements of a subtype may be used where the
    underlying type is expected.
    
    Examples:
     * `{ n : Nat // n % 2 = 0 }` is the type of even numbers.
     * `{ xs : Array String // xs.size = 5 }` is the type of arrays with five `String`s.
     * Given `xs : List α`, `List { x : α // x ∈ xs }` is the type of lists in which all elements are
       contained in `xs`.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `{ x // p x }` in identifiers is `subtype`. gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GQ2
      (Q2Presentation.Induction.XRZero.xrChild chief K).fst (Q2Presentation.Induction.XRZero.xrChild chief K).snd //Subtype.{u} {α : Sort u} (p : α → Prop) : Sort (max 1 u)All the elements of a type that satisfy a predicate.
    
    `Subtype p`, usually written `{ x : α // p x }` or `{ x // p x }`, contains all elements `x : α` for
    which `p x` is true. Its constructor is a pair of the value and the proof that it satisfies the
    predicate. In run-time code, `{ x : α // p x }` is represented identically to `α`.
    
    There is a coercion from `{ x : α // p x }` to `α`, so elements of a subtype may be used where the
    underlying type is expected.
    
    Examples:
     * `{ n : Nat // n % 2 = 0 }` is the type of even numbers.
     * `{ xs : Array String // xs.size = 5 }` is the type of arrays with five `String`s.
     * Given `xs : List α`, `List { x : α // x ∈ xs }` is the type of lists in which all elements are
       contained in `xs`.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `{ x // p x }` in identifiers is `subtype`.
              NonemptyNonempty.{u} (α : Sort u) : Prop`Nonempty α` is a typeclass that says that `α` is not an empty type,
    that is, there exists an element in the type. It differs from `Inhabited α`
    in that `Nonempty α` is a `Prop`, which means that it does not actually carry
    an element of `α`, only a proof that *there exists* such an element.
    Given `Nonempty α`, you can construct an element of `α` *nonconstructively*
    using `Classical.choice`.
    
                (Q2Presentation.Lifting.scalarCoverLiftHomQ2Presentation.Lifting.scalarCoverLiftHom {Yt : Q2Presentation.BoundaryFramedTarget} [Finite Yt.Y]
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals E) {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ)
      (F : Q2Presentation.BoundaryFrame Yt)
      (g :
        Q2Presentation.boundaryFramedSurj B (Q2Presentation.TorsorProgram.quotientFramedTarget Yt E.N ⋯ ⋯)
          (Q2Presentation.TorsorProgram.quotientFrame Yt E.N ⋯ ⋯ F)) :
      Type**Cover lifts of `g`** (`lem:obstructionseparation` l.4219–4223):
    framed homs `Γ ⟶ B_λ` over `g` — surjectivity NOT imposed (the
    manuscript's compatible lifts: `λ_*o` measures weak liftability; images
    are stratified by `eq:recursionR2`/`R3` later). 
                  (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian. 
                    chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
                  lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)
                  Q2Presentation.boundaryPackage_GQ2Q2Presentation.boundaryPackage_GQ2 : Q2Presentation.BoundaryPackage Q2Presentation.GQ2Profinite**The local boundary package** `boundaryPackage_GQ2 : BoundaryPackage G_{ℚ₂}`
    (manuscript Prop 3.14 `prop:compatiblemarking` for `Γ = G_{ℚ₂}`; plan Turn 4 §6),
    the `G_{ℚ₂}`-side instance of the uniform Stage-C boundary datum.
    
    * `tameMap`/`tame_surj`/`tame_nu` — the local tame quotient `G_{ℚ₂} ↠ T_A` with
      unramified marking `ν_loc`, from the axiom `gq2_tame_quotient` (Prop 3.2 + the
      local half of Prop `compatiblemarking`);
    * `pro2Map`/`pro2_surj`/`pro2_nu` — the local maximal pro-`2` quotient
      `G_{ℚ₂} ↠ Π` with the *same* unramified marking `ν_loc`, proved from the fully
      marked Labute comparison `labute_GQ2_maxPro2_marked` (`pro2Map_loc`,
      `pro2Map_loc_surjective`, `pro2Map_loc_nu`);
    * `nu := ν_loc` — the common unramified character through which both factor. 
                  pQ2Presentation.Induction.FramedPair.sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.
     gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GQ2
      (Q2Presentation.Induction.XRZero.xrChild chief K).fst (Q2Presentation.Induction.XRZero.xrChild chief K).snd) }Subtype.{u} {α : Sort u} (p : α → Prop) : Sort (max 1 u)All the elements of a type that satisfy a predicate.
    
    `Subtype p`, usually written `{ x : α // p x }` or `{ x // p x }`, contains all elements `x : α` for
    which `p x` is true. Its constructor is a pair of the value and the proof that it satisfies the
    predicate. In run-time code, `{ x : α // p x }` is represented identically to `α`.
    
    There is a coercion from `{ x : α // p x }` to `α`, so elements of a subtype may be used where the
    underlying type is expected.
    
    Examples:
     * `{ n : Nat // n % 2 = 0 }` is the type of even numbers.
     * `{ xs : Array String // xs.size = 5 }` is the type of arrays with five `String`s.
     * Given `xs : List α`, `List { x : α // x ∈ xs }` is the type of lists in which all elements are
       contained in `xs`.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `{ x // p x }` in identifiers is `subtype`. =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`.
         JQ2Presentation.Induction.scalarCoverStrata chief K lam hinv,
          Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number.
    If `α` is infinite, `Nat.card α = 0`. 
            (Q2Presentation.boundaryFramedSurjQ2Presentation.boundaryFramedSurj {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ)
      (Yt : Q2Presentation.BoundaryFramedTarget) (F : Q2Presentation.BoundaryFrame Yt) : TypeThe **boundary-framed surjections** `e_Γ^β(𝒴)` (manuscript `eq:eGamma`): the
    continuous surjections `f : Γ ↠ Y` whose induced map to `H × E` is the prescribed
    `β ∘ b_Γ`, i.e. `q_Y ∘ f = β ∘ b_Γ`.  This is the subtype counted in Theorem 4.2;
    its cardinality is `e_Γ^β(𝒴)`. 
              Q2Presentation.boundaryPackage_GQ2Q2Presentation.boundaryPackage_GQ2 : Q2Presentation.BoundaryPackage Q2Presentation.GQ2Profinite**The local boundary package** `boundaryPackage_GQ2 : BoundaryPackage G_{ℚ₂}`
    (manuscript Prop 3.14 `prop:compatiblemarking` for `Γ = G_{ℚ₂}`; plan Turn 4 §6),
    the `G_{ℚ₂}`-side instance of the uniform Stage-C boundary datum.
    
    * `tameMap`/`tame_surj`/`tame_nu` — the local tame quotient `G_{ℚ₂} ↠ T_A` with
      unramified marking `ν_loc`, from the axiom `gq2_tame_quotient` (Prop 3.2 + the
      local half of Prop `compatiblemarking`);
    * `pro2Map`/`pro2_surj`/`pro2_nu` — the local maximal pro-`2` quotient
      `G_{ℚ₂} ↠ Π` with the *same* unramified marking `ν_loc`, proved from the fully
      marked Labute comparison `labute_GQ2_maxPro2_marked` (`pro2Map_loc`,
      `pro2Map_loc_surjective`, `pro2Map_loc_nu`);
    * `nu := ν_loc` — the common unramified character through which both factor. 
              (Q2Presentation.Induction.scalarCoverStratumPairQ2Presentation.Induction.scalarCoverStratumPair {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K))
      (J : Q2Presentation.Induction.scalarCoverStrata chief K lam hinv) : Q2Presentation.Induction.FramedPair**The stratum framed pair** `(J̃, J̃ ∩ L̃, π̃|_J̃, θ̃|_J̃; same frame)` —
    an ordinary exact-image object in the same global boundary-framed category
    (same `H`, same `E`, `p.2`'s frame verbatim), ready for the engine's children
    lists.  Its measure is `|J̃ ∩ L̃|`, `lem:strictdecrease`'s quantity. 
                  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K) JQ2Presentation.Induction.scalarCoverStrata chief K lam hinv).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.
    
              (Q2Presentation.Induction.scalarCoverStratumPairQ2Presentation.Induction.scalarCoverStratumPair {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K))
      (J : Q2Presentation.Induction.scalarCoverStrata chief K lam hinv) : Q2Presentation.Induction.FramedPair**The stratum framed pair** `(J̃, J̃ ∩ L̃, π̃|_J̃, θ̃|_J̃; same frame)` —
    an ordinary exact-image object in the same global boundary-framed category
    (same `H`, same `E`, `p.2`'s frame verbatim), ready for the engine's children
    lists.  Its measure is `|J̃ ∩ L̃|`, `lem:strictdecrease`'s quantity. 
                  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K) JQ2Presentation.Induction.scalarCoverStrata chief K lam hinv).sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.
    )
    **`lem:covertransform` at the scalar cover, local source**: the mirror of
    `sec7_scalarCoverPartition_gammaA` for `G_{ℚ₂}`; the uniform 8 is
    `cover_Z1_card_gq2`, derived from the citable `q2_localduality_general`. 
  • defdefined in Q2Presentation/Lifting/CocycleCover.lean
    complete
    def Q2Presentation.Lifting.cocycleCoverTarget
      (YtQ2Presentation.BoundaryFramedTarget : Q2Presentation.BoundaryFramedTargetQ2Presentation.BoundaryFramedTarget : Type 1A **boundary-framed marked target** `𝒴 = (Y, L_Y, π_Y, θ_Y)` (manuscript
    Definition 4.1, `def:framed`): a finite group `Y` with a normal finite `2`-subgroup
    `L_Y`, a surjection `π_Y : Y ↠ H` onto a finite *tame* quotient with kernel exactly
    `L_Y`, and an *elementary decoration* `θ_Y : Y → Multiplicative E` into the
    multiplicative image of a finite `𝔽₂`-vector space `E`.  The pair
    `q_Y = (π_Y, θ_Y)` fixes both the tame quotient `Y / L_Y ≅ H` and the decoration. )
      (zetaYt.Y → Yt.Y → ZMod 2 : YtQ2Presentation.BoundaryFramedTarget.YQ2Presentation.BoundaryFramedTarget.Y (self : Q2Presentation.BoundaryFramedTarget) : TypeThe finite target group `Y`.   YtQ2Presentation.BoundaryFramedTarget.YQ2Presentation.BoundaryFramedTarget.Y (self : Q2Presentation.BoundaryFramedTarget) : TypeThe finite target group `Y`.   ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2) (hz1∀ (y : Yt.Y), zeta 1 y = 0 :  (yYt.Y : YtQ2Presentation.BoundaryFramedTarget.YQ2Presentation.BoundaryFramedTarget.Y (self : Q2Presentation.BoundaryFramedTarget) : TypeThe finite target group `Y`. ), zetaYt.Y → Yt.Y → ZMod 2 1 yYt.Y =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`. 0)
      (hz2∀ (y : Yt.Y), zeta y 1 = 0 :  (yYt.Y : YtQ2Presentation.BoundaryFramedTarget.YQ2Presentation.BoundaryFramedTarget.Y (self : Q2Presentation.BoundaryFramedTarget) : TypeThe finite target group `Y`. ), zetaYt.Y → Yt.Y → ZMod 2 yYt.Y 1 =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`. 0)
      (hzc∀ (a b c : Yt.Y), zeta a b + zeta (a * b) c = zeta b c + zeta a (b * c) :
         (aYt.Y bYt.Y cYt.Y : YtQ2Presentation.BoundaryFramedTarget.YQ2Presentation.BoundaryFramedTarget.Y (self : Q2Presentation.BoundaryFramedTarget) : TypeThe finite target group `Y`. ),
          zetaYt.Y → Yt.Y → ZMod 2 aYt.Y bYt.Y +HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`. zetaYt.Y → Yt.Y → ZMod 2 (HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.aYt.Y *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. bYt.Y)HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. cYt.Y =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`. zetaYt.Y → Yt.Y → ZMod 2 bYt.Y cYt.Y +HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`. zetaYt.Y → Yt.Y → ZMod 2 aYt.Y (HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.bYt.Y *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. cYt.Y)HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.) :
      Q2Presentation.BoundaryFramedTargetQ2Presentation.BoundaryFramedTarget : Type 1A **boundary-framed marked target** `𝒴 = (Y, L_Y, π_Y, θ_Y)` (manuscript
    Definition 4.1, `def:framed`): a finite group `Y` with a normal finite `2`-subgroup
    `L_Y`, a surjection `π_Y : Y ↠ H` onto a finite *tame* quotient with kernel exactly
    `L_Y`, and an *elementary decoration* `θ_Y : Y → Multiplicative E` into the
    multiplicative image of a finite `𝔽₂`-vector space `E`.  The pair
    `q_Y = (π_Y, θ_Y)` fixes both the tame quotient `Y / L_Y ≅ H` and the decoration. 
    def Q2Presentation.Lifting.cocycleCoverTarget
      (YtQ2Presentation.BoundaryFramedTarget :
        Q2Presentation.BoundaryFramedTargetQ2Presentation.BoundaryFramedTarget : Type 1A **boundary-framed marked target** `𝒴 = (Y, L_Y, π_Y, θ_Y)` (manuscript
    Definition 4.1, `def:framed`): a finite group `Y` with a normal finite `2`-subgroup
    `L_Y`, a surjection `π_Y : Y ↠ H` onto a finite *tame* quotient with kernel exactly
    `L_Y`, and an *elementary decoration* `θ_Y : Y → Multiplicative E` into the
    multiplicative image of a finite `𝔽₂`-vector space `E`.  The pair
    `q_Y = (π_Y, θ_Y)` fixes both the tame quotient `Y / L_Y ≅ H` and the decoration. )
      (zetaYt.Y → Yt.Y → ZMod 2 : YtQ2Presentation.BoundaryFramedTarget.YQ2Presentation.BoundaryFramedTarget.Y (self : Q2Presentation.BoundaryFramedTarget) : TypeThe finite target group `Y`.   YtQ2Presentation.BoundaryFramedTarget.YQ2Presentation.BoundaryFramedTarget.Y (self : Q2Presentation.BoundaryFramedTarget) : TypeThe finite target group `Y`.   ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2)
      (hz1∀ (y : Yt.Y), zeta 1 y = 0 :  (yYt.Y : YtQ2Presentation.BoundaryFramedTarget.YQ2Presentation.BoundaryFramedTarget.Y (self : Q2Presentation.BoundaryFramedTarget) : TypeThe finite target group `Y`. ), zetaYt.Y → Yt.Y → ZMod 2 1 yYt.Y =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`. 0)
      (hz2∀ (y : Yt.Y), zeta y 1 = 0 :  (yYt.Y : YtQ2Presentation.BoundaryFramedTarget.YQ2Presentation.BoundaryFramedTarget.Y (self : Q2Presentation.BoundaryFramedTarget) : TypeThe finite target group `Y`. ), zetaYt.Y → Yt.Y → ZMod 2 yYt.Y 1 =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`. 0)
      (hzc∀ (a b c : Yt.Y), zeta a b + zeta (a * b) c = zeta b c + zeta a (b * c) :
         (aYt.Y bYt.Y cYt.Y : YtQ2Presentation.BoundaryFramedTarget.YQ2Presentation.BoundaryFramedTarget.Y (self : Q2Presentation.BoundaryFramedTarget) : TypeThe finite target group `Y`. ),
          zetaYt.Y → Yt.Y → ZMod 2 aYt.Y bYt.Y +HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`. zetaYt.Y → Yt.Y → ZMod 2 (HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.aYt.Y *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. bYt.Y)HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. cYt.Y =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`.
            zetaYt.Y → Yt.Y → ZMod 2 bYt.Y cYt.Y +HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`. zetaYt.Y → Yt.Y → ZMod 2 aYt.Y (HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.bYt.Y *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. cYt.Y)HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.) :
      Q2Presentation.BoundaryFramedTargetQ2Presentation.BoundaryFramedTarget : Type 1A **boundary-framed marked target** `𝒴 = (Y, L_Y, π_Y, θ_Y)` (manuscript
    Definition 4.1, `def:framed`): a finite group `Y` with a normal finite `2`-subgroup
    `L_Y`, a surjection `π_Y : Y ↠ H` onto a finite *tame* quotient with kernel exactly
    `L_Y`, and an *elementary decoration* `θ_Y : Y → Multiplicative E` into the
    multiplicative image of a finite `𝔽₂`-vector space `E`.  The pair
    `q_Y = (π_Y, θ_Y)` fixes both the tame quotient `Y / L_Y ≅ H` and the decoration. 
    **The cocycle-cover framed target**: the extension carries the
    PULLED-BACK boundary framing of `lem:covertransform` (l.3822–3830):
    `L̃ = p_ζ⁻¹(L)`, `π̃ = π ∘ p_ζ`, `θ̃ = θ ∘ p_ζ`, same `H` and `E`. 
  • defdefined in Q2Presentation/Lifting/CoverLiftPartition.lean
    complete
    def Q2Presentation.TorsorProgram.coverLiftTotal
      (YtQ2Presentation.BoundaryFramedTarget : Q2Presentation.BoundaryFramedTargetQ2Presentation.BoundaryFramedTarget : Type 1A **boundary-framed marked target** `𝒴 = (Y, L_Y, π_Y, θ_Y)` (manuscript
    Definition 4.1, `def:framed`): a finite group `Y` with a normal finite `2`-subgroup
    `L_Y`, a surjection `π_Y : Y ↠ H` onto a finite *tame* quotient with kernel exactly
    `L_Y`, and an *elementary decoration* `θ_Y : Y → Multiplicative E` into the
    multiplicative image of a finite `𝔽₂`-vector space `E`.  The pair
    `q_Y = (π_Y, θ_Y)` fixes both the tame quotient `Y / L_Y ≅ H` and the decoration. ) (NSubgroup Yt.Y : SubgroupSubgroup.{u_3} (G : Type u_3) [Group G] : Type u_3A subgroup of a group `G` is a subset containing 1, closed under multiplication
    and closed under multiplicative inverse.  YtQ2Presentation.BoundaryFramedTarget.YQ2Presentation.BoundaryFramedTarget.Y (self : Q2Presentation.BoundaryFramedTarget) : TypeThe finite target group `Y`. )
      [hNnN.Normal : NSubgroup Yt.Y.NormalSubgroup.Normal.{u_1} {G : Type u_1} [Group G] (H : Subgroup G) : PropA subgroup `H` is normal if whenever `n ∈ H`, then `g * n * g⁻¹ ∈ H` for every `g : G` ] {ΓProfiniteGrp.{0} : ProfiniteGrp.{0}ProfiniteGrp.{u_1} : Type (u_1 + 1)The category of profinite groups. A term of this type consists of a profinite
    set with a topological group structure.
    }
      (BQ2Presentation.BoundaryPackage Γ : Q2Presentation.BoundaryPackageQ2Presentation.BoundaryPackage (Γ : ProfiniteGrp.{0}) : TypeA **boundary package** on a profinite group `Γ`: the uniform Stage-C data of a tame
    quotient, a maximal pro-`2` quotient, and a common unramified character `ℤ₂` through which
    both factor (manuscript Prop 3.14, `prop:compatiblemarking`; plan Turn 4 §6).  The
    compatibility `tameMap ≫ ν_t = ν = pro2Map ≫ ν_2` records that the two markings agree on
    the full unramified coordinate, not merely modulo `2`.  ΓProfiniteGrp.{0})
      (FQ2Presentation.BoundaryFrame Yt : Q2Presentation.BoundaryFrameQ2Presentation.BoundaryFrame (Yt : Q2Presentation.BoundaryFramedTarget) : TypeA **boundary frame** on a boundary-framed target `𝒴` (manuscript `eq:beta`):
    the fixed compatible data `α : 𝕋_tame ↠ H`, `ψ : Π → Multiplicative E`, and the
    induced `β : ∂_bd → H × Multiplicative E`.  Surjectivity of `α` records that `H`
    really is a tame quotient (manuscript: "Fix a finite tame quotient `H`, an
    epimorphism `α : 𝕋_A ↠ H`").  YtQ2Presentation.BoundaryFramedTarget) : TypeA type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. 
    def Q2Presentation.TorsorProgram.coverLiftTotal
      (YtQ2Presentation.BoundaryFramedTarget :
        Q2Presentation.BoundaryFramedTargetQ2Presentation.BoundaryFramedTarget : Type 1A **boundary-framed marked target** `𝒴 = (Y, L_Y, π_Y, θ_Y)` (manuscript
    Definition 4.1, `def:framed`): a finite group `Y` with a normal finite `2`-subgroup
    `L_Y`, a surjection `π_Y : Y ↠ H` onto a finite *tame* quotient with kernel exactly
    `L_Y`, and an *elementary decoration* `θ_Y : Y → Multiplicative E` into the
    multiplicative image of a finite `𝔽₂`-vector space `E`.  The pair
    `q_Y = (π_Y, θ_Y)` fixes both the tame quotient `Y / L_Y ≅ H` and the decoration. )
      (NSubgroup Yt.Y : SubgroupSubgroup.{u_3} (G : Type u_3) [Group G] : Type u_3A subgroup of a group `G` is a subset containing 1, closed under multiplication
    and closed under multiplicative inverse.  YtQ2Presentation.BoundaryFramedTarget.YQ2Presentation.BoundaryFramedTarget.Y (self : Q2Presentation.BoundaryFramedTarget) : TypeThe finite target group `Y`. ) [hNnN.Normal : NSubgroup Yt.Y.NormalSubgroup.Normal.{u_1} {G : Type u_1} [Group G] (H : Subgroup G) : PropA subgroup `H` is normal if whenever `n ∈ H`, then `g * n * g⁻¹ ∈ H` for every `g : G` ]
      {ΓProfiniteGrp.{0} : ProfiniteGrp.{0}ProfiniteGrp.{u_1} : Type (u_1 + 1)The category of profinite groups. A term of this type consists of a profinite
    set with a topological group structure.
    }
      (BQ2Presentation.BoundaryPackage Γ : Q2Presentation.BoundaryPackageQ2Presentation.BoundaryPackage (Γ : ProfiniteGrp.{0}) : TypeA **boundary package** on a profinite group `Γ`: the uniform Stage-C data of a tame
    quotient, a maximal pro-`2` quotient, and a common unramified character `ℤ₂` through which
    both factor (manuscript Prop 3.14, `prop:compatiblemarking`; plan Turn 4 §6).  The
    compatibility `tameMap ≫ ν_t = ν = pro2Map ≫ ν_2` records that the two markings agree on
    the full unramified coordinate, not merely modulo `2`.  ΓProfiniteGrp.{0})
      (FQ2Presentation.BoundaryFrame Yt : Q2Presentation.BoundaryFrameQ2Presentation.BoundaryFrame (Yt : Q2Presentation.BoundaryFramedTarget) : TypeA **boundary frame** on a boundary-framed target `𝒴` (manuscript `eq:beta`):
    the fixed compatible data `α : 𝕋_tame ↠ H`, `ψ : Π → Multiplicative E`, and the
    induced `β : ∂_bd → H × Multiplicative E`.  Surjectivity of `α` records that `H`
    really is a tame quotient (manuscript: "Fix a finite tame quotient `H`, an
    epimorphism `α : 𝕋_A ↠ H`").  YtQ2Presentation.BoundaryFramedTarget) :
      TypeA type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. 
    **The cover-lift total space**: framed continuous homs into the AMBIENT
    target whose projection to the child is onto (`lem:covertransform`: all lifts
    of all unobstructed exact-image maps at once; surjectivity onto the ambient
    target NOT imposed — these are the weak lifts). 
Proof

Proved in §8 of the paper. Ingredients: Lemma 8.2.

Lemma 8.4 of the paper (Fourier inversion).

Let \Lambda be the character group of a finite \F_2-obstruction space and let o:X\to \Lambda^\vee. If

m_\lambda=\#\{x\in X:\langle\lambda,o(x)\rangle=0\},

then

\#\{x:o(x)=0\} =\frac1{|\Lambda|}\sum_{\lambda\in \Lambda}(2m_\lambda-|X|).

Lean code for Lemma8.41 theorem
  • theoremdefined in Q2Presentation/Induction/Recursion.lean
    complete
    theorem Q2Presentation.Induction.Fourier.fourier_inversion.{u_1, u_2}
      {WType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } [AddCommGroupAddCommGroup.{u} (G : Type u) : Type uAn additive commutative group is an additive group with commutative `(+)`.  WType u_1] [ModuleModule.{u, v} (R : Type u) (M : Type v) [Semiring R] [AddCommMonoid M] : Type (max u v)A module is a generalization of vector spaces to a scalar semiring.
    It consists of a scalar semiring `R` and an additive monoid of "vectors" `M`,
    connected by a "scalar multiplication" operation `r • x : M`
    (where `r : R` and `x : M`) with some natural associativity and
    distributivity axioms similar to those on a ring.  (ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2) WType u_1] [FintypeFintype.{u_4} (α : Type u_4) : Type u_4`Fintype α` means that `α` is finite, i.e. there are only
    finitely many distinct elements of type `α`. The evidence of this
    is a finset `elems` (a list up to permutation without duplicates),
    together with a proof that everything of type `α` is in the list.  WType u_1]
      [DecidableEqDecidableEq.{u} (α : Sort u) : Sort (max 1 u)Propositional equality is `Decidable` for all elements of a type.
    
    In other words, an instance of `DecidableEq α` is a means of deciding the proposition `a = b` is
    for all `a b : α`.
     WType u_1] {XType u_2 : Type u_2A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } [FintypeFintype.{u_4} (α : Type u_4) : Type u_4`Fintype α` means that `α` is finite, i.e. there are only
    finitely many distinct elements of type `α`. The evidence of this
    is a finset `elems` (a list up to permutation without duplicates),
    together with a proof that everything of type `α` is in the list.  XType u_2] (oX → W : XType u_2  WType u_1) :
      (Fintype.cardFintype.card.{u_4} (α : Type u_4) [Fintype α] : ℕ`card α` is the number of elements in `α`, defined when `α` is a fintype.  (Module.DualModule.Dual.{u_4, u_5} (R : Type u_4) (M : Type u_5) [Semiring R] [AddCommMonoid M] [Module R M] : Type (max u_5 u_4)The left dual space of an R-module M is the R-module of linear maps `M → R`.  (ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2) WType u_1)) *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
          (Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number.
    If `α` is infinite, `Nat.card α = 0`.  {Subtype.{u} {α : Sort u} (p : α → Prop) : Sort (max 1 u)All the elements of a type that satisfy a predicate.
    
    `Subtype p`, usually written `{ x : α // p x }` or `{ x // p x }`, contains all elements `x : α` for
    which `p x` is true. Its constructor is a pair of the value and the proof that it satisfies the
    predicate. In run-time code, `{ x : α // p x }` is represented identically to `α`.
    
    There is a coercion from `{ x : α // p x }` to `α`, so elements of a subtype may be used where the
    underlying type is expected.
    
    Examples:
     * `{ n : Nat // n % 2 = 0 }` is the type of even numbers.
     * `{ xs : Array String // xs.size = 5 }` is the type of arrays with five `String`s.
     * Given `xs : List α`, `List { x : α // x ∈ xs }` is the type of lists in which all elements are
       contained in `xs`.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `{ x // p x }` in identifiers is `subtype`. xX //Subtype.{u} {α : Sort u} (p : α → Prop) : Sort (max 1 u)All the elements of a type that satisfy a predicate.
    
    `Subtype p`, usually written `{ x : α // p x }` or `{ x // p x }`, contains all elements `x : α` for
    which `p x` is true. Its constructor is a pair of the value and the proof that it satisfies the
    predicate. In run-time code, `{ x : α // p x }` is represented identically to `α`.
    
    There is a coercion from `{ x : α // p x }` to `α`, so elements of a subtype may be used where the
    underlying type is expected.
    
    Examples:
     * `{ n : Nat // n % 2 = 0 }` is the type of even numbers.
     * `{ xs : Array String // xs.size = 5 }` is the type of arrays with five `String`s.
     * Given `xs : List α`, `List { x : α // x ∈ xs }` is the type of lists in which all elements are
       contained in `xs`.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `{ x // p x }` in identifiers is `subtype`. oX → W xX =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`. 0 }Subtype.{u} {α : Sort u} (p : α → Prop) : Sort (max 1 u)All the elements of a type that satisfy a predicate.
    
    `Subtype p`, usually written `{ x : α // p x }` or `{ x // p x }`, contains all elements `x : α` for
    which `p x` is true. Its constructor is a pair of the value and the proof that it satisfies the
    predicate. In run-time code, `{ x : α // p x }` is represented identically to `α`.
    
    There is a coercion from `{ x : α // p x }` to `α`, so elements of a subtype may be used where the
    underlying type is expected.
    
    Examples:
     * `{ n : Nat // n % 2 = 0 }` is the type of even numbers.
     * `{ xs : Array String // xs.size = 5 }` is the type of arrays with five `String`s.
     * Given `xs : List α`, `List { x : α // x ∈ xs }` is the type of lists in which all elements are
       contained in `xs`.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `{ x // p x }` in identifiers is `subtype`.) =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`.
         χModule.Dual (ZMod 2) W, (HSub.hSub.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HSub α β γ] : α → β → γ`a - b` computes the difference of `a` and `b`.
    The meaning of this notation is type-dependent.
    * For natural numbers, this operator saturates at 0: `a - b = 0` when `a ≤ b`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `-` in identifiers is `sub` (when used as a binary operator).2 *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. (Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number.
    If `α` is infinite, `Nat.card α = 0`.  {Subtype.{u} {α : Sort u} (p : α → Prop) : Sort (max 1 u)All the elements of a type that satisfy a predicate.
    
    `Subtype p`, usually written `{ x : α // p x }` or `{ x // p x }`, contains all elements `x : α` for
    which `p x` is true. Its constructor is a pair of the value and the proof that it satisfies the
    predicate. In run-time code, `{ x : α // p x }` is represented identically to `α`.
    
    There is a coercion from `{ x : α // p x }` to `α`, so elements of a subtype may be used where the
    underlying type is expected.
    
    Examples:
     * `{ n : Nat // n % 2 = 0 }` is the type of even numbers.
     * `{ xs : Array String // xs.size = 5 }` is the type of arrays with five `String`s.
     * Given `xs : List α`, `List { x : α // x ∈ xs }` is the type of lists in which all elements are
       contained in `xs`.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `{ x // p x }` in identifiers is `subtype`. xX //Subtype.{u} {α : Sort u} (p : α → Prop) : Sort (max 1 u)All the elements of a type that satisfy a predicate.
    
    `Subtype p`, usually written `{ x : α // p x }` or `{ x // p x }`, contains all elements `x : α` for
    which `p x` is true. Its constructor is a pair of the value and the proof that it satisfies the
    predicate. In run-time code, `{ x : α // p x }` is represented identically to `α`.
    
    There is a coercion from `{ x : α // p x }` to `α`, so elements of a subtype may be used where the
    underlying type is expected.
    
    Examples:
     * `{ n : Nat // n % 2 = 0 }` is the type of even numbers.
     * `{ xs : Array String // xs.size = 5 }` is the type of arrays with five `String`s.
     * Given `xs : List α`, `List { x : α // x ∈ xs }` is the type of lists in which all elements are
       contained in `xs`.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `{ x // p x }` in identifiers is `subtype`. χModule.Dual (ZMod 2) W (oX → W xX) =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`. 0 }Subtype.{u} {α : Sort u} (p : α → Prop) : Sort (max 1 u)All the elements of a type that satisfy a predicate.
    
    `Subtype p`, usually written `{ x : α // p x }` or `{ x // p x }`, contains all elements `x : α` for
    which `p x` is true. Its constructor is a pair of the value and the proof that it satisfies the
    predicate. In run-time code, `{ x : α // p x }` is represented identically to `α`.
    
    There is a coercion from `{ x : α // p x }` to `α`, so elements of a subtype may be used where the
    underlying type is expected.
    
    Examples:
     * `{ n : Nat // n % 2 = 0 }` is the type of even numbers.
     * `{ xs : Array String // xs.size = 5 }` is the type of arrays with five `String`s.
     * Given `xs : List α`, `List { x : α // x ∈ xs }` is the type of lists in which all elements are
       contained in `xs`.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `{ x // p x }` in identifiers is `subtype`.) -HSub.hSub.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HSub α β γ] : α → β → γ`a - b` computes the difference of `a` and `b`.
    The meaning of this notation is type-dependent.
    * For natural numbers, this operator saturates at 0: `a - b = 0` when `a ≤ b`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `-` in identifiers is `sub` (when used as a binary operator). (Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number.
    If `α` is infinite, `Nat.card α = 0`.  XType u_2))HSub.hSub.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HSub α β γ] : α → β → γ`a - b` computes the difference of `a` and `b`.
    The meaning of this notation is type-dependent.
    * For natural numbers, this operator saturates at 0: `a - b = 0` when `a ≤ b`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `-` in identifiers is `sub` (when used as a binary operator).
    theorem Q2Presentation.Induction.Fourier.fourier_inversion.{u_1,
        u_2}
      {WType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } [AddCommGroupAddCommGroup.{u} (G : Type u) : Type uAn additive commutative group is an additive group with commutative `(+)`.  WType u_1]
      [ModuleModule.{u, v} (R : Type u) (M : Type v) [Semiring R] [AddCommMonoid M] : Type (max u v)A module is a generalization of vector spaces to a scalar semiring.
    It consists of a scalar semiring `R` and an additive monoid of "vectors" `M`,
    connected by a "scalar multiplication" operation `r • x : M`
    (where `r : R` and `x : M`) with some natural associativity and
    distributivity axioms similar to those on a ring.  (ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2) WType u_1] [FintypeFintype.{u_4} (α : Type u_4) : Type u_4`Fintype α` means that `α` is finite, i.e. there are only
    finitely many distinct elements of type `α`. The evidence of this
    is a finset `elems` (a list up to permutation without duplicates),
    together with a proof that everything of type `α` is in the list.  WType u_1]
      [DecidableEqDecidableEq.{u} (α : Sort u) : Sort (max 1 u)Propositional equality is `Decidable` for all elements of a type.
    
    In other words, an instance of `DecidableEq α` is a means of deciding the proposition `a = b` is
    for all `a b : α`.
     WType u_1] {XType u_2 : Type u_2A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. }
      [FintypeFintype.{u_4} (α : Type u_4) : Type u_4`Fintype α` means that `α` is finite, i.e. there are only
    finitely many distinct elements of type `α`. The evidence of this
    is a finset `elems` (a list up to permutation without duplicates),
    together with a proof that everything of type `α` is in the list.  XType u_2] (oX → W : XType u_2  WType u_1) :
      (Fintype.cardFintype.card.{u_4} (α : Type u_4) [Fintype α] : ℕ`card α` is the number of elements in `α`, defined when `α` is a fintype. 
              (Module.DualModule.Dual.{u_4, u_5} (R : Type u_4) (M : Type u_5) [Semiring R] [AddCommMonoid M] [Module R M] : Type (max u_5 u_4)The left dual space of an R-module M is the R-module of linear maps `M → R`.  (ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2) WType u_1)) *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
          (Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number.
    If `α` is infinite, `Nat.card α = 0`.  {Subtype.{u} {α : Sort u} (p : α → Prop) : Sort (max 1 u)All the elements of a type that satisfy a predicate.
    
    `Subtype p`, usually written `{ x : α // p x }` or `{ x // p x }`, contains all elements `x : α` for
    which `p x` is true. Its constructor is a pair of the value and the proof that it satisfies the
    predicate. In run-time code, `{ x : α // p x }` is represented identically to `α`.
    
    There is a coercion from `{ x : α // p x }` to `α`, so elements of a subtype may be used where the
    underlying type is expected.
    
    Examples:
     * `{ n : Nat // n % 2 = 0 }` is the type of even numbers.
     * `{ xs : Array String // xs.size = 5 }` is the type of arrays with five `String`s.
     * Given `xs : List α`, `List { x : α // x ∈ xs }` is the type of lists in which all elements are
       contained in `xs`.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `{ x // p x }` in identifiers is `subtype`. xX //Subtype.{u} {α : Sort u} (p : α → Prop) : Sort (max 1 u)All the elements of a type that satisfy a predicate.
    
    `Subtype p`, usually written `{ x : α // p x }` or `{ x // p x }`, contains all elements `x : α` for
    which `p x` is true. Its constructor is a pair of the value and the proof that it satisfies the
    predicate. In run-time code, `{ x : α // p x }` is represented identically to `α`.
    
    There is a coercion from `{ x : α // p x }` to `α`, so elements of a subtype may be used where the
    underlying type is expected.
    
    Examples:
     * `{ n : Nat // n % 2 = 0 }` is the type of even numbers.
     * `{ xs : Array String // xs.size = 5 }` is the type of arrays with five `String`s.
     * Given `xs : List α`, `List { x : α // x ∈ xs }` is the type of lists in which all elements are
       contained in `xs`.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `{ x // p x }` in identifiers is `subtype`. oX → W xX =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`. 0 }Subtype.{u} {α : Sort u} (p : α → Prop) : Sort (max 1 u)All the elements of a type that satisfy a predicate.
    
    `Subtype p`, usually written `{ x : α // p x }` or `{ x // p x }`, contains all elements `x : α` for
    which `p x` is true. Its constructor is a pair of the value and the proof that it satisfies the
    predicate. In run-time code, `{ x : α // p x }` is represented identically to `α`.
    
    There is a coercion from `{ x : α // p x }` to `α`, so elements of a subtype may be used where the
    underlying type is expected.
    
    Examples:
     * `{ n : Nat // n % 2 = 0 }` is the type of even numbers.
     * `{ xs : Array String // xs.size = 5 }` is the type of arrays with five `String`s.
     * Given `xs : List α`, `List { x : α // x ∈ xs }` is the type of lists in which all elements are
       contained in `xs`.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `{ x // p x }` in identifiers is `subtype`.) =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`.
         χModule.Dual (ZMod 2) W,
          (HSub.hSub.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HSub α β γ] : α → β → γ`a - b` computes the difference of `a` and `b`.
    The meaning of this notation is type-dependent.
    * For natural numbers, this operator saturates at 0: `a - b = 0` when `a ≤ b`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `-` in identifiers is `sub` (when used as a binary operator).2 *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
              (Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number.
    If `α` is infinite, `Nat.card α = 0`. 
                  {Subtype.{u} {α : Sort u} (p : α → Prop) : Sort (max 1 u)All the elements of a type that satisfy a predicate.
    
    `Subtype p`, usually written `{ x : α // p x }` or `{ x // p x }`, contains all elements `x : α` for
    which `p x` is true. Its constructor is a pair of the value and the proof that it satisfies the
    predicate. In run-time code, `{ x : α // p x }` is represented identically to `α`.
    
    There is a coercion from `{ x : α // p x }` to `α`, so elements of a subtype may be used where the
    underlying type is expected.
    
    Examples:
     * `{ n : Nat // n % 2 = 0 }` is the type of even numbers.
     * `{ xs : Array String // xs.size = 5 }` is the type of arrays with five `String`s.
     * Given `xs : List α`, `List { x : α // x ∈ xs }` is the type of lists in which all elements are
       contained in `xs`.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `{ x // p x }` in identifiers is `subtype`. xX //Subtype.{u} {α : Sort u} (p : α → Prop) : Sort (max 1 u)All the elements of a type that satisfy a predicate.
    
    `Subtype p`, usually written `{ x : α // p x }` or `{ x // p x }`, contains all elements `x : α` for
    which `p x` is true. Its constructor is a pair of the value and the proof that it satisfies the
    predicate. In run-time code, `{ x : α // p x }` is represented identically to `α`.
    
    There is a coercion from `{ x : α // p x }` to `α`, so elements of a subtype may be used where the
    underlying type is expected.
    
    Examples:
     * `{ n : Nat // n % 2 = 0 }` is the type of even numbers.
     * `{ xs : Array String // xs.size = 5 }` is the type of arrays with five `String`s.
     * Given `xs : List α`, `List { x : α // x ∈ xs }` is the type of lists in which all elements are
       contained in `xs`.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `{ x // p x }` in identifiers is `subtype`. χModule.Dual (ZMod 2) W (oX → W xX) =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`. 0 }Subtype.{u} {α : Sort u} (p : α → Prop) : Sort (max 1 u)All the elements of a type that satisfy a predicate.
    
    `Subtype p`, usually written `{ x : α // p x }` or `{ x // p x }`, contains all elements `x : α` for
    which `p x` is true. Its constructor is a pair of the value and the proof that it satisfies the
    predicate. In run-time code, `{ x : α // p x }` is represented identically to `α`.
    
    There is a coercion from `{ x : α // p x }` to `α`, so elements of a subtype may be used where the
    underlying type is expected.
    
    Examples:
     * `{ n : Nat // n % 2 = 0 }` is the type of even numbers.
     * `{ xs : Array String // xs.size = 5 }` is the type of arrays with five `String`s.
     * Given `xs : List α`, `List { x : α // x ∈ xs }` is the type of lists in which all elements are
       contained in `xs`.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `{ x // p x }` in identifiers is `subtype`.) -HSub.hSub.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HSub α β γ] : α → β → γ`a - b` computes the difference of `a` and `b`.
    The meaning of this notation is type-dependent.
    * For natural numbers, this operator saturates at 0: `a - b = 0` when `a ≤ b`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `-` in identifiers is `sub` (when used as a binary operator).
            (Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number.
    If `α` is infinite, `Nat.card α = 0`.  XType u_2))HSub.hSub.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HSub α β γ] : α → β → γ`a - b` computes the difference of `a` and `b`.
    The meaning of this notation is type-dependent.
    * For natural numbers, this operator saturates at 0: `a - b = 0` when `a ≤ b`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `-` in identifiers is `sub` (when used as a binary operator).
    **Finite Fourier inversion over `𝔽₂`** (manuscript `lem:fourier`, `eq:fourier`, l.3866).
    For a finite index set `X` and `o : X → W` into a finite `𝔽₂`-space `W`, the number of
    `x` with `o x = 0`, scaled by `|Ŵ|`, equals the signed sum of the partial counts
    `m_χ = #{x : χ (o x) = 0}`:
    ```
      |Ŵ| · #{x : o x = 0} = Σ_χ (2·m_χ − |X|).
    ```
    The arithmetic heart of the central-Frattini recursion `eq:recursionR1` and the
    phase-cover transform `eq:recursionR5a`.  Proven sorry-free from character
    orthogonality by Fubini. 

Lemma 8.5 of the paper (Constrained quadratic Gauss transform).

Let W,E be finite \F_2-vector spaces, let L:W\twoheadrightarrow E, and let Q:W\to\F_2 be nonsingular with polar form b_Q. For \kappa\in E and \epsilon\in\F_2, put

N(\kappa,\epsilon)=\#\{x\in W:Lx=\kappa,\ Q(x)=\epsilon\}.

For \chi\in E^\vee, let a_\chi be uniquely determined by

b_Q(a_\chi,x)=\chi(Lx).

Then

N(\kappa,\epsilon) =\frac1{2|E|}\left( |W|+G(Q)\sum_{\chi\in E^\vee} (-1)^{\chi(\kappa)+\epsilon+Q(a_\chi)} \right),

where G(Q)=\sum_{x\in W}(-1)^{Q(x)}.

Lean code for Lemma8.56 theorems
  • theoremdefined in Q2Presentation/Quadratic/ConstrainedGauss.lean
    complete
    theorem Q2Presentation.Quadratic.one_add_signChar (aZMod 2 : ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2) :
      1 +HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`. Q2Presentation.Quadratic.Dickson.signCharQ2Presentation.Quadratic.Dickson.signChar (a : ZMod 2) : ℤThe sign character `χ(0) = 1`, `χ(1) = -1`.  aZMod 2 =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`.
        ifite.{u} {α : Sort u} (c : Prop) [h : Decidable c] (t e : α) : α`if c then t else e` is notation for `ite c t e`, "if-then-else", which decides to
    return `t` or `e` depending on whether `c` is true or false. The explicit argument
    `c : Prop` does not have any actual computational content, but there is an additional
    `[Decidable c]` argument synthesized by typeclass inference which actually
    determines how to evaluate `c` to true or false. Write `if h : c then t else e`
    instead for a "dependent if-then-else" `dite`, which allows `t`/`e` to use the fact
    that `c` is true/false.
     aZMod 2 =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`. 0 thenite.{u} {α : Sort u} (c : Prop) [h : Decidable c] (t e : α) : α`if c then t else e` is notation for `ite c t e`, "if-then-else", which decides to
    return `t` or `e` depending on whether `c` is true or false. The explicit argument
    `c : Prop` does not have any actual computational content, but there is an additional
    `[Decidable c]` argument synthesized by typeclass inference which actually
    determines how to evaluate `c` to true or false. Write `if h : c then t else e`
    instead for a "dependent if-then-else" `dite`, which allows `t`/`e` to use the fact
    that `c` is true/false.
     2 elseite.{u} {α : Sort u} (c : Prop) [h : Decidable c] (t e : α) : α`if c then t else e` is notation for `ite c t e`, "if-then-else", which decides to
    return `t` or `e` depending on whether `c` is true or false. The explicit argument
    `c : Prop` does not have any actual computational content, but there is an additional
    `[Decidable c]` argument synthesized by typeclass inference which actually
    determines how to evaluate `c` to true or false. Write `if h : c then t else e`
    instead for a "dependent if-then-else" `dite`, which allows `t`/`e` to use the fact
    that `c` is true/false.
     0
    theorem Q2Presentation.Quadratic.one_add_signChar
      (aZMod 2 : ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2) :
      1 +HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`.
          Q2Presentation.Quadratic.Dickson.signCharQ2Presentation.Quadratic.Dickson.signChar (a : ZMod 2) : ℤThe sign character `χ(0) = 1`, `χ(1) = -1`. 
            aZMod 2 =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`.
        ifite.{u} {α : Sort u} (c : Prop) [h : Decidable c] (t e : α) : α`if c then t else e` is notation for `ite c t e`, "if-then-else", which decides to
    return `t` or `e` depending on whether `c` is true or false. The explicit argument
    `c : Prop` does not have any actual computational content, but there is an additional
    `[Decidable c]` argument synthesized by typeclass inference which actually
    determines how to evaluate `c` to true or false. Write `if h : c then t else e`
    instead for a "dependent if-then-else" `dite`, which allows `t`/`e` to use the fact
    that `c` is true/false.
     aZMod 2 =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`. 0 thenite.{u} {α : Sort u} (c : Prop) [h : Decidable c] (t e : α) : α`if c then t else e` is notation for `ite c t e`, "if-then-else", which decides to
    return `t` or `e` depending on whether `c` is true or false. The explicit argument
    `c : Prop` does not have any actual computational content, but there is an additional
    `[Decidable c]` argument synthesized by typeclass inference which actually
    determines how to evaluate `c` to true or false. Write `if h : c then t else e`
    instead for a "dependent if-then-else" `dite`, which allows `t`/`e` to use the fact
    that `c` is true/false.
     2 elseite.{u} {α : Sort u} (c : Prop) [h : Decidable c] (t e : α) : α`if c then t else e` is notation for `ite c t e`, "if-then-else", which decides to
    return `t` or `e` depending on whether `c` is true or false. The explicit argument
    `c : Prop` does not have any actual computational content, but there is an additional
    `[Decidable c]` argument synthesized by typeclass inference which actually
    determines how to evaluate `c` to true or false. Write `if h : c then t else e`
    instead for a "dependent if-then-else" `dite`, which allows `t`/`e` to use the fact
    that `c` is true/false.
     0
    `1 + χ(a) = 2·[a = 0]` for the sign character (the `ε`-indicator expansion of
    `lem:constrainedgauss`, l.3898–3899). 
  • theoremdefined in Q2Presentation/Quadratic/ConstrainedGauss.lean
    complete
    theorem Q2Presentation.Quadratic.sum_signChar_dual.{u_1} {EType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. }
      [AddCommGroupAddCommGroup.{u} (G : Type u) : Type uAn additive commutative group is an additive group with commutative `(+)`.  EType u_1] [ModuleModule.{u, v} (R : Type u) (M : Type v) [Semiring R] [AddCommMonoid M] : Type (max u v)A module is a generalization of vector spaces to a scalar semiring.
    It consists of a scalar semiring `R` and an additive monoid of "vectors" `M`,
    connected by a "scalar multiplication" operation `r • x : M`
    (where `r : R` and `x : M`) with some natural associativity and
    distributivity axioms similar to those on a ring.  (ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2) EType u_1]
      [FintypeFintype.{u_4} (α : Type u_4) : Type u_4`Fintype α` means that `α` is finite, i.e. there are only
    finitely many distinct elements of type `α`. The evidence of this
    is a finset `elems` (a list up to permutation without duplicates),
    together with a proof that everything of type `α` is in the list.  (Module.DualModule.Dual.{u_4, u_5} (R : Type u_4) (M : Type u_5) [Semiring R] [AddCommMonoid M] [Module R M] : Type (max u_5 u_4)The left dual space of an R-module M is the R-module of linear maps `M → R`.  (ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2) EType u_1)] (vE : EType u_1) :
       χModule.Dual (ZMod 2) E, Q2Presentation.Quadratic.Dickson.signCharQ2Presentation.Quadratic.Dickson.signChar (a : ZMod 2) : ℤThe sign character `χ(0) = 1`, `χ(1) = -1`.  (χModule.Dual (ZMod 2) E vE) =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`.
        ifite.{u} {α : Sort u} (c : Prop) [h : Decidable c] (t e : α) : α`if c then t else e` is notation for `ite c t e`, "if-then-else", which decides to
    return `t` or `e` depending on whether `c` is true or false. The explicit argument
    `c : Prop` does not have any actual computational content, but there is an additional
    `[Decidable c]` argument synthesized by typeclass inference which actually
    determines how to evaluate `c` to true or false. Write `if h : c then t else e`
    instead for a "dependent if-then-else" `dite`, which allows `t`/`e` to use the fact
    that `c` is true/false.
     vE =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`. 0 thenite.{u} {α : Sort u} (c : Prop) [h : Decidable c] (t e : α) : α`if c then t else e` is notation for `ite c t e`, "if-then-else", which decides to
    return `t` or `e` depending on whether `c` is true or false. The explicit argument
    `c : Prop` does not have any actual computational content, but there is an additional
    `[Decidable c]` argument synthesized by typeclass inference which actually
    determines how to evaluate `c` to true or false. Write `if h : c then t else e`
    instead for a "dependent if-then-else" `dite`, which allows `t`/`e` to use the fact
    that `c` is true/false.
     (Fintype.cardFintype.card.{u_4} (α : Type u_4) [Fintype α] : ℕ`card α` is the number of elements in `α`, defined when `α` is a fintype.  (Module.DualModule.Dual.{u_4, u_5} (R : Type u_4) (M : Type u_5) [Semiring R] [AddCommMonoid M] [Module R M] : Type (max u_5 u_4)The left dual space of an R-module M is the R-module of linear maps `M → R`.  (ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2) EType u_1)) elseite.{u} {α : Sort u} (c : Prop) [h : Decidable c] (t e : α) : α`if c then t else e` is notation for `ite c t e`, "if-then-else", which decides to
    return `t` or `e` depending on whether `c` is true or false. The explicit argument
    `c : Prop` does not have any actual computational content, but there is an additional
    `[Decidable c]` argument synthesized by typeclass inference which actually
    determines how to evaluate `c` to true or false. Write `if h : c then t else e`
    instead for a "dependent if-then-else" `dite`, which allows `t`/`e` to use the fact
    that `c` is true/false.
     0
    theorem Q2Presentation.Quadratic.sum_signChar_dual.{u_1}
      {EType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } [AddCommGroupAddCommGroup.{u} (G : Type u) : Type uAn additive commutative group is an additive group with commutative `(+)`.  EType u_1]
      [ModuleModule.{u, v} (R : Type u) (M : Type v) [Semiring R] [AddCommMonoid M] : Type (max u v)A module is a generalization of vector spaces to a scalar semiring.
    It consists of a scalar semiring `R` and an additive monoid of "vectors" `M`,
    connected by a "scalar multiplication" operation `r • x : M`
    (where `r : R` and `x : M`) with some natural associativity and
    distributivity axioms similar to those on a ring.  (ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2) EType u_1]
      [FintypeFintype.{u_4} (α : Type u_4) : Type u_4`Fintype α` means that `α` is finite, i.e. there are only
    finitely many distinct elements of type `α`. The evidence of this
    is a finset `elems` (a list up to permutation without duplicates),
    together with a proof that everything of type `α` is in the list.  (Module.DualModule.Dual.{u_4, u_5} (R : Type u_4) (M : Type u_5) [Semiring R] [AddCommMonoid M] [Module R M] : Type (max u_5 u_4)The left dual space of an R-module M is the R-module of linear maps `M → R`.  (ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2) EType u_1)]
      (vE : EType u_1) :
       χModule.Dual (ZMod 2) E,
          Q2Presentation.Quadratic.Dickson.signCharQ2Presentation.Quadratic.Dickson.signChar (a : ZMod 2) : ℤThe sign character `χ(0) = 1`, `χ(1) = -1`. 
            (χModule.Dual (ZMod 2) E vE) =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`.
        ifite.{u} {α : Sort u} (c : Prop) [h : Decidable c] (t e : α) : α`if c then t else e` is notation for `ite c t e`, "if-then-else", which decides to
    return `t` or `e` depending on whether `c` is true or false. The explicit argument
    `c : Prop` does not have any actual computational content, but there is an additional
    `[Decidable c]` argument synthesized by typeclass inference which actually
    determines how to evaluate `c` to true or false. Write `if h : c then t else e`
    instead for a "dependent if-then-else" `dite`, which allows `t`/`e` to use the fact
    that `c` is true/false.
     vE =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`. 0 thenite.{u} {α : Sort u} (c : Prop) [h : Decidable c] (t e : α) : α`if c then t else e` is notation for `ite c t e`, "if-then-else", which decides to
    return `t` or `e` depending on whether `c` is true or false. The explicit argument
    `c : Prop` does not have any actual computational content, but there is an additional
    `[Decidable c]` argument synthesized by typeclass inference which actually
    determines how to evaluate `c` to true or false. Write `if h : c then t else e`
    instead for a "dependent if-then-else" `dite`, which allows `t`/`e` to use the fact
    that `c` is true/false.
    
          (Fintype.cardFintype.card.{u_4} (α : Type u_4) [Fintype α] : ℕ`card α` is the number of elements in `α`, defined when `α` is a fintype. 
              (Module.DualModule.Dual.{u_4, u_5} (R : Type u_4) (M : Type u_5) [Semiring R] [AddCommMonoid M] [Module R M] : Type (max u_5 u_4)The left dual space of an R-module M is the R-module of linear maps `M → R`.  (ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2) EType u_1))
        elseite.{u} {α : Sort u} (c : Prop) [h : Decidable c] (t e : α) : α`if c then t else e` is notation for `ite c t e`, "if-then-else", which decides to
    return `t` or `e` depending on whether `c` is true or false. The explicit argument
    `c : Prop` does not have any actual computational content, but there is an additional
    `[Decidable c]` argument synthesized by typeclass inference which actually
    determines how to evaluate `c` to true or false. Write `if h : c then t else e`
    instead for a "dependent if-then-else" `dite`, which allows `t`/`e` to use the fact
    that `c` is true/false.
     0
    **Dual orthogonality over `F₂`**: `∑_{χ ∈ E^∨} (-1)^{χ(v)}` is `|E^∨|` at
    `v = 0` and `0` otherwise (the `κ`-indicator expansion of `lem:constrainedgauss`,
    l.3898–3899; nontrivial characters cancel by translation). 
  • theoremdefined in Q2Presentation/Quadratic/ConstrainedGauss.lean
    complete
    theorem Q2Presentation.Quadratic.QuadF2.polar_bijective.{u_1} {VType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. }
      [AddCommGroupAddCommGroup.{u} (G : Type u) : Type uAn additive commutative group is an additive group with commutative `(+)`.  VType u_1] [ModuleModule.{u, v} (R : Type u) (M : Type v) [Semiring R] [AddCommMonoid M] : Type (max u v)A module is a generalization of vector spaces to a scalar semiring.
    It consists of a scalar semiring `R` and an additive monoid of "vectors" `M`,
    connected by a "scalar multiplication" operation `r • x : M`
    (where `r : R` and `x : M`) with some natural associativity and
    distributivity axioms similar to those on a ring.  (ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2) VType u_1] [FiniteFinite.{u_3} (α : Sort u_3) : PropA type is `Finite` if it is in bijective correspondence to some `Fin n`.
    
    This is similar to `Fintype`, but `Finite` is a proposition rather than data.
    A particular benefit to this is that `Finite` instances are definitionally equal to one another
    (due to proof irrelevance) rather than being merely propositionally equal,
    and, furthermore, `Finite` instances generally avoid the need for `Decidable` instances.
    One other notable difference is that `Finite` allows there to be `Finite p` instances
    for all `p : Prop`, which is not allowed by `Fintype` due to universe constraints.
    An application of this is that `Finite (x ∈ s → β x)` follows from the general instance for pi
    types, assuming `[∀ x, Finite (β x)]`.
    Implementation note: this is a reason `Finite α` is not defined as `Nonempty (Fintype α)`.
    
    Every `Fintype` instance provides a `Finite` instance via `Finite.of_fintype`.
    Conversely, one can noncomputably create a `Fintype` instance from a `Finite` instance
    via `Fintype.ofFinite`. In a proof one might write
    ```lean
      have := Fintype.ofFinite α
    ```
    to obtain such an instance.
    
    Do not write noncomputable `Fintype` instances; instead write `Finite` instances
    and use this `Fintype.ofFinite` interface.
    The `Fintype` instances should be relied upon to be computable for evaluation purposes.
    
    Theorems should use `Finite` instead of `Fintype`, unless definitions in the theorem statement
    require `Fintype`.
    Definitions should prefer `Finite` as well, unless it is important that the definitions
    are meant to be computable in the reduction or `#eval` sense.
     VType u_1]
      (qQ2Presentation.Quadratic.QuadF2 V : Q2Presentation.Quadratic.QuadF2Q2Presentation.Quadratic.QuadF2.{u_2} (V : Type u_2) [AddCommGroup V] [Module (ZMod 2) V] : Type u_2A **quadratic form over `F₂`** with its bilinear polar (commutator) form.  VType u_1) (hnsq.Nonsingular : qQ2Presentation.Quadratic.QuadF2 V.NonsingularQ2Presentation.Quadratic.QuadF2.Nonsingular.{u_1} {V : Type u_1} [AddCommGroup V] [Module (ZMod 2) V]
      (q : Q2Presentation.Quadratic.QuadF2 V) : Prop**Nonsingularity** (the polar form is nondegenerate / perfect): the only vector
    pairing to `0` with everything is `0`.  For a nonzero invariant form on a simple
    self-dual `V` this is automatic (`lem:zeropolar`, l.3452). ) :
      Function.BijectiveFunction.Bijective.{u₁, u₂} {α : Sort u₁} {β : Sort u₂} (f : α → β) : PropA function is called bijective if it is both injective and surjective.  qQ2Presentation.Quadratic.QuadF2 V.polarQ2Presentation.Quadratic.QuadF2.polar.{u_2} {V : Type u_2} [AddCommGroup V] [Module (ZMod 2) V]
      (self : Q2Presentation.Quadratic.QuadF2 V) : V →ₗ[ZMod 2] V →ₗ[ZMod 2] ZMod 2the bilinear polar form `b_q`, i.e. the commutator pairing 
    theorem Q2Presentation.Quadratic.QuadF2.polar_bijective.{u_1}
      {VType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } [AddCommGroupAddCommGroup.{u} (G : Type u) : Type uAn additive commutative group is an additive group with commutative `(+)`.  VType u_1]
      [ModuleModule.{u, v} (R : Type u) (M : Type v) [Semiring R] [AddCommMonoid M] : Type (max u v)A module is a generalization of vector spaces to a scalar semiring.
    It consists of a scalar semiring `R` and an additive monoid of "vectors" `M`,
    connected by a "scalar multiplication" operation `r • x : M`
    (where `r : R` and `x : M`) with some natural associativity and
    distributivity axioms similar to those on a ring.  (ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2) VType u_1] [FiniteFinite.{u_3} (α : Sort u_3) : PropA type is `Finite` if it is in bijective correspondence to some `Fin n`.
    
    This is similar to `Fintype`, but `Finite` is a proposition rather than data.
    A particular benefit to this is that `Finite` instances are definitionally equal to one another
    (due to proof irrelevance) rather than being merely propositionally equal,
    and, furthermore, `Finite` instances generally avoid the need for `Decidable` instances.
    One other notable difference is that `Finite` allows there to be `Finite p` instances
    for all `p : Prop`, which is not allowed by `Fintype` due to universe constraints.
    An application of this is that `Finite (x ∈ s → β x)` follows from the general instance for pi
    types, assuming `[∀ x, Finite (β x)]`.
    Implementation note: this is a reason `Finite α` is not defined as `Nonempty (Fintype α)`.
    
    Every `Fintype` instance provides a `Finite` instance via `Finite.of_fintype`.
    Conversely, one can noncomputably create a `Fintype` instance from a `Finite` instance
    via `Fintype.ofFinite`. In a proof one might write
    ```lean
      have := Fintype.ofFinite α
    ```
    to obtain such an instance.
    
    Do not write noncomputable `Fintype` instances; instead write `Finite` instances
    and use this `Fintype.ofFinite` interface.
    The `Fintype` instances should be relied upon to be computable for evaluation purposes.
    
    Theorems should use `Finite` instead of `Fintype`, unless definitions in the theorem statement
    require `Fintype`.
    Definitions should prefer `Finite` as well, unless it is important that the definitions
    are meant to be computable in the reduction or `#eval` sense.
     VType u_1]
      (qQ2Presentation.Quadratic.QuadF2 V : Q2Presentation.Quadratic.QuadF2Q2Presentation.Quadratic.QuadF2.{u_2} (V : Type u_2) [AddCommGroup V] [Module (ZMod 2) V] : Type u_2A **quadratic form over `F₂`** with its bilinear polar (commutator) form.  VType u_1)
      (hnsq.Nonsingular : qQ2Presentation.Quadratic.QuadF2 V.NonsingularQ2Presentation.Quadratic.QuadF2.Nonsingular.{u_1} {V : Type u_1} [AddCommGroup V] [Module (ZMod 2) V]
      (q : Q2Presentation.Quadratic.QuadF2 V) : Prop**Nonsingularity** (the polar form is nondegenerate / perfect): the only vector
    pairing to `0` with everything is `0`.  For a nonzero invariant form on a simple
    self-dual `V` this is automatic (`lem:zeropolar`, l.3452). ) :
      Function.BijectiveFunction.Bijective.{u₁, u₂} {α : Sort u₁} {β : Sort u₂} (f : α → β) : PropA function is called bijective if it is both injective and surjective.  qQ2Presentation.Quadratic.QuadF2 V.polarQ2Presentation.Quadratic.QuadF2.polar.{u_2} {V : Type u_2} [AddCommGroup V] [Module (ZMod 2) V]
      (self : Q2Presentation.Quadratic.QuadF2 V) : V →ₗ[ZMod 2] V →ₗ[ZMod 2] ZMod 2the bilinear polar form `b_q`, i.e. the commutator pairing 
    **Nonsingularity + finiteness make the polar map a bijection onto the dual**
    (existence-uniqueness of the representing vectors `a_χ`, `lem:constrainedgauss`
    l.3883–3885). 
  • theoremdefined in Q2Presentation/Quadratic/ConstrainedGauss.lean
    complete
    theorem Q2Presentation.Quadratic.constrainedGauss_count.{u_1, u_2}
      {WType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } {EType u_2 : Type u_2A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } [AddCommGroupAddCommGroup.{u} (G : Type u) : Type uAn additive commutative group is an additive group with commutative `(+)`.  WType u_1] [ModuleModule.{u, v} (R : Type u) (M : Type v) [Semiring R] [AddCommMonoid M] : Type (max u v)A module is a generalization of vector spaces to a scalar semiring.
    It consists of a scalar semiring `R` and an additive monoid of "vectors" `M`,
    connected by a "scalar multiplication" operation `r • x : M`
    (where `r : R` and `x : M`) with some natural associativity and
    distributivity axioms similar to those on a ring.  (ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2) WType u_1]
      [FintypeFintype.{u_4} (α : Type u_4) : Type u_4`Fintype α` means that `α` is finite, i.e. there are only
    finitely many distinct elements of type `α`. The evidence of this
    is a finset `elems` (a list up to permutation without duplicates),
    together with a proof that everything of type `α` is in the list.  WType u_1] [AddCommGroupAddCommGroup.{u} (G : Type u) : Type uAn additive commutative group is an additive group with commutative `(+)`.  EType u_2] [ModuleModule.{u, v} (R : Type u) (M : Type v) [Semiring R] [AddCommMonoid M] : Type (max u v)A module is a generalization of vector spaces to a scalar semiring.
    It consists of a scalar semiring `R` and an additive monoid of "vectors" `M`,
    connected by a "scalar multiplication" operation `r • x : M`
    (where `r : R` and `x : M`) with some natural associativity and
    distributivity axioms similar to those on a ring.  (ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2) EType u_2] [FiniteFinite.{u_3} (α : Sort u_3) : PropA type is `Finite` if it is in bijective correspondence to some `Fin n`.
    
    This is similar to `Fintype`, but `Finite` is a proposition rather than data.
    A particular benefit to this is that `Finite` instances are definitionally equal to one another
    (due to proof irrelevance) rather than being merely propositionally equal,
    and, furthermore, `Finite` instances generally avoid the need for `Decidable` instances.
    One other notable difference is that `Finite` allows there to be `Finite p` instances
    for all `p : Prop`, which is not allowed by `Fintype` due to universe constraints.
    An application of this is that `Finite (x ∈ s → β x)` follows from the general instance for pi
    types, assuming `[∀ x, Finite (β x)]`.
    Implementation note: this is a reason `Finite α` is not defined as `Nonempty (Fintype α)`.
    
    Every `Fintype` instance provides a `Finite` instance via `Finite.of_fintype`.
    Conversely, one can noncomputably create a `Fintype` instance from a `Finite` instance
    via `Fintype.ofFinite`. In a proof one might write
    ```lean
      have := Fintype.ofFinite α
    ```
    to obtain such an instance.
    
    Do not write noncomputable `Fintype` instances; instead write `Finite` instances
    and use this `Fintype.ofFinite` interface.
    The `Fintype` instances should be relied upon to be computable for evaluation purposes.
    
    Theorems should use `Finite` instead of `Fintype`, unless definitions in the theorem statement
    require `Fintype`.
    Definitions should prefer `Finite` as well, unless it is important that the definitions
    are meant to be computable in the reduction or `#eval` sense.
     EType u_2]
      [FintypeFintype.{u_4} (α : Type u_4) : Type u_4`Fintype α` means that `α` is finite, i.e. there are only
    finitely many distinct elements of type `α`. The evidence of this
    is a finset `elems` (a list up to permutation without duplicates),
    together with a proof that everything of type `α` is in the list.  (Module.DualModule.Dual.{u_4, u_5} (R : Type u_4) (M : Type u_5) [Semiring R] [AddCommMonoid M] [Module R M] : Type (max u_5 u_4)The left dual space of an R-module M is the R-module of linear maps `M → R`.  (ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2) EType u_2)] (LW →ₗ[ZMod 2] E : WType u_1 →ₗ[LinearMap.{u_14, u_15, u_16, u_17} {R : Type u_14} {S : Type u_15} [Semiring R] [Semiring S] (σ : R →+* S)
      (M : Type u_16) (M₂ : Type u_17) [AddCommMonoid M] [AddCommMonoid M₂] [Module R M] [Module S M₂] :
      Type (max u_16 u_17)A map `f` between an `R`-module and an `S`-module over a ring homomorphism `σ : R →+* S`
    is semilinear if it satisfies the two properties `f (x + y) = f x + f y` and
    `f (c • x) = (σ c) • f x`. Elements of `LinearMap σ M M₂` (available under the notation
    `M →ₛₗ[σ] M₂`) are bundled versions of such maps. For plain linear maps (i.e. for which
    `σ = RingHom.id R`), the notation `M →ₗ[R] M₂` is available. An unbundled version of plain linear
    maps is available with the predicate `IsLinearMap`, but it should be avoided most of the time. ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2]LinearMap.{u_14, u_15, u_16, u_17} {R : Type u_14} {S : Type u_15} [Semiring R] [Semiring S] (σ : R →+* S)
      (M : Type u_16) (M₂ : Type u_17) [AddCommMonoid M] [AddCommMonoid M₂] [Module R M] [Module S M₂] :
      Type (max u_16 u_17)A map `f` between an `R`-module and an `S`-module over a ring homomorphism `σ : R →+* S`
    is semilinear if it satisfies the two properties `f (x + y) = f x + f y` and
    `f (c • x) = (σ c) • f x`. Elements of `LinearMap σ M M₂` (available under the notation
    `M →ₛₗ[σ] M₂`) are bundled versions of such maps. For plain linear maps (i.e. for which
    `σ = RingHom.id R`), the notation `M →ₗ[R] M₂` is available. An unbundled version of plain linear
    maps is available with the predicate `IsLinearMap`, but it should be avoided most of the time.  EType u_2)
      (hLFunction.Surjective ⇑L : Function.SurjectiveFunction.Surjective.{u_1, u_2} {α : Sort u_1} {β : Sort u_2} (f : α → β) : PropA function `f : α → β` is called surjective if every `b : β` is equal to `f a`
    for some `a : α`.  LW →ₗ[ZMod 2] E) (QQ2Presentation.Quadratic.QuadF2 W : Q2Presentation.Quadratic.QuadF2Q2Presentation.Quadratic.QuadF2.{u_2} (V : Type u_2) [AddCommGroup V] [Module (ZMod 2) V] : Type u_2A **quadratic form over `F₂`** with its bilinear polar (commutator) form.  WType u_1)
      (lModule.Dual (ZMod 2) W : Module.DualModule.Dual.{u_4, u_5} (R : Type u_4) (M : Type u_5) [Semiring R] [AddCommMonoid M] [Module R M] : Type (max u_5 u_4)The left dual space of an R-module M is the R-module of linear maps `M → R`.  (ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2) WType u_1) (AModule.Dual (ZMod 2) E → W : Module.DualModule.Dual.{u_4, u_5} (R : Type u_4) (M : Type u_5) [Semiring R] [AddCommMonoid M] [Module R M] : Type (max u_5 u_4)The left dual space of an R-module M is the R-module of linear maps `M → R`.  (ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2) EType u_2  WType u_1)
      (hA∀ (χ : Module.Dual (ZMod 2) E) (x : W), (Q.polar (A χ)) x = χ (L x) + l x :
         (χModule.Dual (ZMod 2) E : Module.DualModule.Dual.{u_4, u_5} (R : Type u_4) (M : Type u_5) [Semiring R] [AddCommMonoid M] [Module R M] : Type (max u_5 u_4)The left dual space of an R-module M is the R-module of linear maps `M → R`.  (ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2) EType u_2) (xW : WType u_1),
          (QQ2Presentation.Quadratic.QuadF2 W.polarQ2Presentation.Quadratic.QuadF2.polar.{u_2} {V : Type u_2} [AddCommGroup V] [Module (ZMod 2) V]
      (self : Q2Presentation.Quadratic.QuadF2 V) : V →ₗ[ZMod 2] V →ₗ[ZMod 2] ZMod 2the bilinear polar form `b_q`, i.e. the commutator pairing  (AModule.Dual (ZMod 2) E → W χModule.Dual (ZMod 2) E)) xW =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`. χModule.Dual (ZMod 2) E (LW →ₗ[ZMod 2] E xW) +HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`. lModule.Dual (ZMod 2) W xW)
      (κE : EType u_2) (εZMod 2 : ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2) :
      2 *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. (Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number.
    If `α` is infinite, `Nat.card α = 0`.  EType u_2) *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
          (Q2Presentation.Quadratic.constrainedZerosQ2Presentation.Quadratic.constrainedZeros.{u_1, u_2} {W : Type u_1} {E : Type u_2} [AddCommGroup W] [Module (ZMod 2) W]
      [AddCommGroup E] [Module (ZMod 2) E] (L : W →ₗ[ZMod 2] E) (Q : Q2Presentation.Quadratic.QuadF2 W)
      (l : Module.Dual (ZMod 2) W) (κ : E) (ε : ZMod 2) : ℕ`N(κ, ε)` — the **constrained count** of `lem:constrainedgauss` (l.3879–3882),
    with an affine (linear-term) refinement: `#{x : L x = κ ∧ Q(x) + ℓ(x) = ε}`.
    At `ℓ = 0` this is the manuscript's `N(κ,ε)`; the affine form is what
    `prop:zeroedge` consumes through `eq:Qkappadifference` (the actual pushout form
    `Q_κ` is base-plus-linear, its constant part being absorbed into `ε`).  LW →ₗ[ZMod 2] E QQ2Presentation.Quadratic.QuadF2 W lModule.Dual (ZMod 2) W κE εZMod 2) =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`.
        (Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number.
    If `α` is infinite, `Nat.card α = 0`.  WType u_1) +HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`.
          Q2Presentation.Quadratic.Dickson.gaussSumQ2Presentation.Quadratic.Dickson.gaussSum.{u_1} {V : Type u_1} [AddCommGroup V] [Module (ZMod 2) V] [Fintype V]
      (q : Q2Presentation.Quadratic.QuadF2 V) : ℤThe **Gauss sum** `D(q) = ∑_v χ(q v)`.  QQ2Presentation.Quadratic.QuadF2 W *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
             χModule.Dual (ZMod 2) E,
              Q2Presentation.Quadratic.Dickson.signCharQ2Presentation.Quadratic.Dickson.signChar (a : ZMod 2) : ℤThe sign character `χ(0) = 1`, `χ(1) = -1`. 
                (HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`.χModule.Dual (ZMod 2) E κE +HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`. εZMod 2 +HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`. QQ2Presentation.Quadratic.QuadF2 W.formQ2Presentation.Quadratic.QuadF2.form.{u_2} {V : Type u_2} [AddCommGroup V] [Module (ZMod 2) V]
      (self : Q2Presentation.Quadratic.QuadF2 V) : V → ZMod 2the quadratic map `q : V → F₂`  (AModule.Dual (ZMod 2) E → W χModule.Dual (ZMod 2) E))HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`.
    theorem Q2Presentation.Quadratic.constrainedGauss_count.{u_1,
        u_2}
      {WType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } {EType u_2 : Type u_2A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. }
      [AddCommGroupAddCommGroup.{u} (G : Type u) : Type uAn additive commutative group is an additive group with commutative `(+)`.  WType u_1] [ModuleModule.{u, v} (R : Type u) (M : Type v) [Semiring R] [AddCommMonoid M] : Type (max u v)A module is a generalization of vector spaces to a scalar semiring.
    It consists of a scalar semiring `R` and an additive monoid of "vectors" `M`,
    connected by a "scalar multiplication" operation `r • x : M`
    (where `r : R` and `x : M`) with some natural associativity and
    distributivity axioms similar to those on a ring.  (ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2) WType u_1]
      [FintypeFintype.{u_4} (α : Type u_4) : Type u_4`Fintype α` means that `α` is finite, i.e. there are only
    finitely many distinct elements of type `α`. The evidence of this
    is a finset `elems` (a list up to permutation without duplicates),
    together with a proof that everything of type `α` is in the list.  WType u_1] [AddCommGroupAddCommGroup.{u} (G : Type u) : Type uAn additive commutative group is an additive group with commutative `(+)`.  EType u_2]
      [ModuleModule.{u, v} (R : Type u) (M : Type v) [Semiring R] [AddCommMonoid M] : Type (max u v)A module is a generalization of vector spaces to a scalar semiring.
    It consists of a scalar semiring `R` and an additive monoid of "vectors" `M`,
    connected by a "scalar multiplication" operation `r • x : M`
    (where `r : R` and `x : M`) with some natural associativity and
    distributivity axioms similar to those on a ring.  (ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2) EType u_2] [FiniteFinite.{u_3} (α : Sort u_3) : PropA type is `Finite` if it is in bijective correspondence to some `Fin n`.
    
    This is similar to `Fintype`, but `Finite` is a proposition rather than data.
    A particular benefit to this is that `Finite` instances are definitionally equal to one another
    (due to proof irrelevance) rather than being merely propositionally equal,
    and, furthermore, `Finite` instances generally avoid the need for `Decidable` instances.
    One other notable difference is that `Finite` allows there to be `Finite p` instances
    for all `p : Prop`, which is not allowed by `Fintype` due to universe constraints.
    An application of this is that `Finite (x ∈ s → β x)` follows from the general instance for pi
    types, assuming `[∀ x, Finite (β x)]`.
    Implementation note: this is a reason `Finite α` is not defined as `Nonempty (Fintype α)`.
    
    Every `Fintype` instance provides a `Finite` instance via `Finite.of_fintype`.
    Conversely, one can noncomputably create a `Fintype` instance from a `Finite` instance
    via `Fintype.ofFinite`. In a proof one might write
    ```lean
      have := Fintype.ofFinite α
    ```
    to obtain such an instance.
    
    Do not write noncomputable `Fintype` instances; instead write `Finite` instances
    and use this `Fintype.ofFinite` interface.
    The `Fintype` instances should be relied upon to be computable for evaluation purposes.
    
    Theorems should use `Finite` instead of `Fintype`, unless definitions in the theorem statement
    require `Fintype`.
    Definitions should prefer `Finite` as well, unless it is important that the definitions
    are meant to be computable in the reduction or `#eval` sense.
     EType u_2]
      [FintypeFintype.{u_4} (α : Type u_4) : Type u_4`Fintype α` means that `α` is finite, i.e. there are only
    finitely many distinct elements of type `α`. The evidence of this
    is a finset `elems` (a list up to permutation without duplicates),
    together with a proof that everything of type `α` is in the list.  (Module.DualModule.Dual.{u_4, u_5} (R : Type u_4) (M : Type u_5) [Semiring R] [AddCommMonoid M] [Module R M] : Type (max u_5 u_4)The left dual space of an R-module M is the R-module of linear maps `M → R`.  (ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2) EType u_2)]
      (LW →ₗ[ZMod 2] E : WType u_1 →ₗ[LinearMap.{u_14, u_15, u_16, u_17} {R : Type u_14} {S : Type u_15} [Semiring R] [Semiring S] (σ : R →+* S)
      (M : Type u_16) (M₂ : Type u_17) [AddCommMonoid M] [AddCommMonoid M₂] [Module R M] [Module S M₂] :
      Type (max u_16 u_17)A map `f` between an `R`-module and an `S`-module over a ring homomorphism `σ : R →+* S`
    is semilinear if it satisfies the two properties `f (x + y) = f x + f y` and
    `f (c • x) = (σ c) • f x`. Elements of `LinearMap σ M M₂` (available under the notation
    `M →ₛₗ[σ] M₂`) are bundled versions of such maps. For plain linear maps (i.e. for which
    `σ = RingHom.id R`), the notation `M →ₗ[R] M₂` is available. An unbundled version of plain linear
    maps is available with the predicate `IsLinearMap`, but it should be avoided most of the time. ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2]LinearMap.{u_14, u_15, u_16, u_17} {R : Type u_14} {S : Type u_15} [Semiring R] [Semiring S] (σ : R →+* S)
      (M : Type u_16) (M₂ : Type u_17) [AddCommMonoid M] [AddCommMonoid M₂] [Module R M] [Module S M₂] :
      Type (max u_16 u_17)A map `f` between an `R`-module and an `S`-module over a ring homomorphism `σ : R →+* S`
    is semilinear if it satisfies the two properties `f (x + y) = f x + f y` and
    `f (c • x) = (σ c) • f x`. Elements of `LinearMap σ M M₂` (available under the notation
    `M →ₛₗ[σ] M₂`) are bundled versions of such maps. For plain linear maps (i.e. for which
    `σ = RingHom.id R`), the notation `M →ₗ[R] M₂` is available. An unbundled version of plain linear
    maps is available with the predicate `IsLinearMap`, but it should be avoided most of the time.  EType u_2)
      (hLFunction.Surjective ⇑L : Function.SurjectiveFunction.Surjective.{u_1, u_2} {α : Sort u_1} {β : Sort u_2} (f : α → β) : PropA function `f : α → β` is called surjective if every `b : β` is equal to `f a`
    for some `a : α`.  LW →ₗ[ZMod 2] E)
      (QQ2Presentation.Quadratic.QuadF2 W : Q2Presentation.Quadratic.QuadF2Q2Presentation.Quadratic.QuadF2.{u_2} (V : Type u_2) [AddCommGroup V] [Module (ZMod 2) V] : Type u_2A **quadratic form over `F₂`** with its bilinear polar (commutator) form.  WType u_1)
      (lModule.Dual (ZMod 2) W : Module.DualModule.Dual.{u_4, u_5} (R : Type u_4) (M : Type u_5) [Semiring R] [AddCommMonoid M] [Module R M] : Type (max u_5 u_4)The left dual space of an R-module M is the R-module of linear maps `M → R`.  (ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2) WType u_1)
      (AModule.Dual (ZMod 2) E → W : Module.DualModule.Dual.{u_4, u_5} (R : Type u_4) (M : Type u_5) [Semiring R] [AddCommMonoid M] [Module R M] : Type (max u_5 u_4)The left dual space of an R-module M is the R-module of linear maps `M → R`.  (ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2) EType u_2  WType u_1)
      (hA∀ (χ : Module.Dual (ZMod 2) E) (x : W), (Q.polar (A χ)) x = χ (L x) + l x :
         (χModule.Dual (ZMod 2) E : Module.DualModule.Dual.{u_4, u_5} (R : Type u_4) (M : Type u_5) [Semiring R] [AddCommMonoid M] [Module R M] : Type (max u_5 u_4)The left dual space of an R-module M is the R-module of linear maps `M → R`.  (ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2) EType u_2)
          (xW : WType u_1),
          (QQ2Presentation.Quadratic.QuadF2 W.polarQ2Presentation.Quadratic.QuadF2.polar.{u_2} {V : Type u_2} [AddCommGroup V] [Module (ZMod 2) V]
      (self : Q2Presentation.Quadratic.QuadF2 V) : V →ₗ[ZMod 2] V →ₗ[ZMod 2] ZMod 2the bilinear polar form `b_q`, i.e. the commutator pairing  (AModule.Dual (ZMod 2) E → W χModule.Dual (ZMod 2) E)) xW =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`. χModule.Dual (ZMod 2) E (LW →ₗ[ZMod 2] E xW) +HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`. lModule.Dual (ZMod 2) W xW)
      (κE : EType u_2) (εZMod 2 : ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2) :
      2 *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. (Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number.
    If `α` is infinite, `Nat.card α = 0`.  EType u_2) *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
          (Q2Presentation.Quadratic.constrainedZerosQ2Presentation.Quadratic.constrainedZeros.{u_1, u_2} {W : Type u_1} {E : Type u_2} [AddCommGroup W] [Module (ZMod 2) W]
      [AddCommGroup E] [Module (ZMod 2) E] (L : W →ₗ[ZMod 2] E) (Q : Q2Presentation.Quadratic.QuadF2 W)
      (l : Module.Dual (ZMod 2) W) (κ : E) (ε : ZMod 2) : ℕ`N(κ, ε)` — the **constrained count** of `lem:constrainedgauss` (l.3879–3882),
    with an affine (linear-term) refinement: `#{x : L x = κ ∧ Q(x) + ℓ(x) = ε}`.
    At `ℓ = 0` this is the manuscript's `N(κ,ε)`; the affine form is what
    `prop:zeroedge` consumes through `eq:Qkappadifference` (the actual pushout form
    `Q_κ` is base-plus-linear, its constant part being absorbed into `ε`). 
              LW →ₗ[ZMod 2] E QQ2Presentation.Quadratic.QuadF2 W lModule.Dual (ZMod 2) W κE εZMod 2) =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`.
        (Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number.
    If `α` is infinite, `Nat.card α = 0`.  WType u_1) +HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`.
          Q2Presentation.Quadratic.Dickson.gaussSumQ2Presentation.Quadratic.Dickson.gaussSum.{u_1} {V : Type u_1} [AddCommGroup V] [Module (ZMod 2) V] [Fintype V]
      (q : Q2Presentation.Quadratic.QuadF2 V) : ℤThe **Gauss sum** `D(q) = ∑_v χ(q v)`. 
              QQ2Presentation.Quadratic.QuadF2 W *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
             χModule.Dual (ZMod 2) E,
              Q2Presentation.Quadratic.Dickson.signCharQ2Presentation.Quadratic.Dickson.signChar (a : ZMod 2) : ℤThe sign character `χ(0) = 1`, `χ(1) = -1`. 
                (HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`.χModule.Dual (ZMod 2) E κE +HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`. εZMod 2 +HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`. QQ2Presentation.Quadratic.QuadF2 W.formQ2Presentation.Quadratic.QuadF2.form.{u_2} {V : Type u_2} [AddCommGroup V] [Module (ZMod 2) V]
      (self : Q2Presentation.Quadratic.QuadF2 V) : V → ZMod 2the quadratic map `q : V → F₂`  (AModule.Dual (ZMod 2) E → W χModule.Dual (ZMod 2) E))HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`.
    **The constrained quadratic Gauss transform** (`lem:constrainedgauss`,
    `eq:constrainedgauss` l.3888–3894, in the affine form consumed by
    `eq:pointwiseconstrained` l.4332–4340):
    ```
      2·|E|·N(κ,ε) = |W| + G(Q⁰)·∑_{χ ∈ E^∨} (-1)^{χ(κ) + ε + Q⁰(a_χ)}
    ```
    for `L : W ↠ E`, `Q⁰` a quadratic form with representing vectors
    `b_{Q⁰}(a_χ, ·) = χ∘L + ℓ`, and `N(κ,ε) = #{x : Lx = κ, Q⁰(x) + ℓ(x) = ε}`.
    The Gauss sum `G(Q⁰) = ∑_x (-1)^{Q⁰(x)}` is `Dickson.gaussSum`; the phase
    `Q⁰(a_χ)` is the manuscript's `Θ_q^0(a_{χ,κ})`-value (`eq:Theta0phase`).
    
    Note the hypotheses are *weaker* than the manuscript's: nonsingularity is not
    needed once the representing vectors `A` are supplied (it is needed only for
    their existence — `constrainedGauss_count_exists`), and surjectivity of `L` is
    used only to cancel nontrivial characters. 
  • theoremdefined in Q2Presentation/Quadratic/ConstrainedGauss.lean
    complete
    theorem Q2Presentation.Quadratic.constrainedGauss_count_pure.{u_1, u_2}
      {WType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } {EType u_2 : Type u_2A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } [AddCommGroupAddCommGroup.{u} (G : Type u) : Type uAn additive commutative group is an additive group with commutative `(+)`.  WType u_1] [ModuleModule.{u, v} (R : Type u) (M : Type v) [Semiring R] [AddCommMonoid M] : Type (max u v)A module is a generalization of vector spaces to a scalar semiring.
    It consists of a scalar semiring `R` and an additive monoid of "vectors" `M`,
    connected by a "scalar multiplication" operation `r • x : M`
    (where `r : R` and `x : M`) with some natural associativity and
    distributivity axioms similar to those on a ring.  (ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2) WType u_1]
      [FintypeFintype.{u_4} (α : Type u_4) : Type u_4`Fintype α` means that `α` is finite, i.e. there are only
    finitely many distinct elements of type `α`. The evidence of this
    is a finset `elems` (a list up to permutation without duplicates),
    together with a proof that everything of type `α` is in the list.  WType u_1] [AddCommGroupAddCommGroup.{u} (G : Type u) : Type uAn additive commutative group is an additive group with commutative `(+)`.  EType u_2] [ModuleModule.{u, v} (R : Type u) (M : Type v) [Semiring R] [AddCommMonoid M] : Type (max u v)A module is a generalization of vector spaces to a scalar semiring.
    It consists of a scalar semiring `R` and an additive monoid of "vectors" `M`,
    connected by a "scalar multiplication" operation `r • x : M`
    (where `r : R` and `x : M`) with some natural associativity and
    distributivity axioms similar to those on a ring.  (ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2) EType u_2] [FiniteFinite.{u_3} (α : Sort u_3) : PropA type is `Finite` if it is in bijective correspondence to some `Fin n`.
    
    This is similar to `Fintype`, but `Finite` is a proposition rather than data.
    A particular benefit to this is that `Finite` instances are definitionally equal to one another
    (due to proof irrelevance) rather than being merely propositionally equal,
    and, furthermore, `Finite` instances generally avoid the need for `Decidable` instances.
    One other notable difference is that `Finite` allows there to be `Finite p` instances
    for all `p : Prop`, which is not allowed by `Fintype` due to universe constraints.
    An application of this is that `Finite (x ∈ s → β x)` follows from the general instance for pi
    types, assuming `[∀ x, Finite (β x)]`.
    Implementation note: this is a reason `Finite α` is not defined as `Nonempty (Fintype α)`.
    
    Every `Fintype` instance provides a `Finite` instance via `Finite.of_fintype`.
    Conversely, one can noncomputably create a `Fintype` instance from a `Finite` instance
    via `Fintype.ofFinite`. In a proof one might write
    ```lean
      have := Fintype.ofFinite α
    ```
    to obtain such an instance.
    
    Do not write noncomputable `Fintype` instances; instead write `Finite` instances
    and use this `Fintype.ofFinite` interface.
    The `Fintype` instances should be relied upon to be computable for evaluation purposes.
    
    Theorems should use `Finite` instead of `Fintype`, unless definitions in the theorem statement
    require `Fintype`.
    Definitions should prefer `Finite` as well, unless it is important that the definitions
    are meant to be computable in the reduction or `#eval` sense.
     EType u_2]
      [FintypeFintype.{u_4} (α : Type u_4) : Type u_4`Fintype α` means that `α` is finite, i.e. there are only
    finitely many distinct elements of type `α`. The evidence of this
    is a finset `elems` (a list up to permutation without duplicates),
    together with a proof that everything of type `α` is in the list.  (Module.DualModule.Dual.{u_4, u_5} (R : Type u_4) (M : Type u_5) [Semiring R] [AddCommMonoid M] [Module R M] : Type (max u_5 u_4)The left dual space of an R-module M is the R-module of linear maps `M → R`.  (ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2) EType u_2)] (LW →ₗ[ZMod 2] E : WType u_1 →ₗ[LinearMap.{u_14, u_15, u_16, u_17} {R : Type u_14} {S : Type u_15} [Semiring R] [Semiring S] (σ : R →+* S)
      (M : Type u_16) (M₂ : Type u_17) [AddCommMonoid M] [AddCommMonoid M₂] [Module R M] [Module S M₂] :
      Type (max u_16 u_17)A map `f` between an `R`-module and an `S`-module over a ring homomorphism `σ : R →+* S`
    is semilinear if it satisfies the two properties `f (x + y) = f x + f y` and
    `f (c • x) = (σ c) • f x`. Elements of `LinearMap σ M M₂` (available under the notation
    `M →ₛₗ[σ] M₂`) are bundled versions of such maps. For plain linear maps (i.e. for which
    `σ = RingHom.id R`), the notation `M →ₗ[R] M₂` is available. An unbundled version of plain linear
    maps is available with the predicate `IsLinearMap`, but it should be avoided most of the time. ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2]LinearMap.{u_14, u_15, u_16, u_17} {R : Type u_14} {S : Type u_15} [Semiring R] [Semiring S] (σ : R →+* S)
      (M : Type u_16) (M₂ : Type u_17) [AddCommMonoid M] [AddCommMonoid M₂] [Module R M] [Module S M₂] :
      Type (max u_16 u_17)A map `f` between an `R`-module and an `S`-module over a ring homomorphism `σ : R →+* S`
    is semilinear if it satisfies the two properties `f (x + y) = f x + f y` and
    `f (c • x) = (σ c) • f x`. Elements of `LinearMap σ M M₂` (available under the notation
    `M →ₛₗ[σ] M₂`) are bundled versions of such maps. For plain linear maps (i.e. for which
    `σ = RingHom.id R`), the notation `M →ₗ[R] M₂` is available. An unbundled version of plain linear
    maps is available with the predicate `IsLinearMap`, but it should be avoided most of the time.  EType u_2)
      (hLFunction.Surjective ⇑L : Function.SurjectiveFunction.Surjective.{u_1, u_2} {α : Sort u_1} {β : Sort u_2} (f : α → β) : PropA function `f : α → β` is called surjective if every `b : β` is equal to `f a`
    for some `a : α`.  LW →ₗ[ZMod 2] E) (QQ2Presentation.Quadratic.QuadF2 W : Q2Presentation.Quadratic.QuadF2Q2Presentation.Quadratic.QuadF2.{u_2} (V : Type u_2) [AddCommGroup V] [Module (ZMod 2) V] : Type u_2A **quadratic form over `F₂`** with its bilinear polar (commutator) form.  WType u_1)
      (AModule.Dual (ZMod 2) E → W : Module.DualModule.Dual.{u_4, u_5} (R : Type u_4) (M : Type u_5) [Semiring R] [AddCommMonoid M] [Module R M] : Type (max u_5 u_4)The left dual space of an R-module M is the R-module of linear maps `M → R`.  (ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2) EType u_2  WType u_1)
      (hA∀ (χ : Module.Dual (ZMod 2) E) (x : W), (Q.polar (A χ)) x = χ (L x) :
         (χModule.Dual (ZMod 2) E : Module.DualModule.Dual.{u_4, u_5} (R : Type u_4) (M : Type u_5) [Semiring R] [AddCommMonoid M] [Module R M] : Type (max u_5 u_4)The left dual space of an R-module M is the R-module of linear maps `M → R`.  (ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2) EType u_2) (xW : WType u_1), (QQ2Presentation.Quadratic.QuadF2 W.polarQ2Presentation.Quadratic.QuadF2.polar.{u_2} {V : Type u_2} [AddCommGroup V] [Module (ZMod 2) V]
      (self : Q2Presentation.Quadratic.QuadF2 V) : V →ₗ[ZMod 2] V →ₗ[ZMod 2] ZMod 2the bilinear polar form `b_q`, i.e. the commutator pairing  (AModule.Dual (ZMod 2) E → W χModule.Dual (ZMod 2) E)) xW =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`. χModule.Dual (ZMod 2) E (LW →ₗ[ZMod 2] E xW))
      (κE : EType u_2) (εZMod 2 : ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2) :
      2 *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. (Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number.
    If `α` is infinite, `Nat.card α = 0`.  EType u_2) *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. (Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number.
    If `α` is infinite, `Nat.card α = 0`.  {Subtype.{u} {α : Sort u} (p : α → Prop) : Sort (max 1 u)All the elements of a type that satisfy a predicate.
    
    `Subtype p`, usually written `{ x : α // p x }` or `{ x // p x }`, contains all elements `x : α` for
    which `p x` is true. Its constructor is a pair of the value and the proof that it satisfies the
    predicate. In run-time code, `{ x : α // p x }` is represented identically to `α`.
    
    There is a coercion from `{ x : α // p x }` to `α`, so elements of a subtype may be used where the
    underlying type is expected.
    
    Examples:
     * `{ n : Nat // n % 2 = 0 }` is the type of even numbers.
     * `{ xs : Array String // xs.size = 5 }` is the type of arrays with five `String`s.
     * Given `xs : List α`, `List { x : α // x ∈ xs }` is the type of lists in which all elements are
       contained in `xs`.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `{ x // p x }` in identifiers is `subtype`. xW //Subtype.{u} {α : Sort u} (p : α → Prop) : Sort (max 1 u)All the elements of a type that satisfy a predicate.
    
    `Subtype p`, usually written `{ x : α // p x }` or `{ x // p x }`, contains all elements `x : α` for
    which `p x` is true. Its constructor is a pair of the value and the proof that it satisfies the
    predicate. In run-time code, `{ x : α // p x }` is represented identically to `α`.
    
    There is a coercion from `{ x : α // p x }` to `α`, so elements of a subtype may be used where the
    underlying type is expected.
    
    Examples:
     * `{ n : Nat // n % 2 = 0 }` is the type of even numbers.
     * `{ xs : Array String // xs.size = 5 }` is the type of arrays with five `String`s.
     * Given `xs : List α`, `List { x : α // x ∈ xs }` is the type of lists in which all elements are
       contained in `xs`.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `{ x // p x }` in identifiers is `subtype`. LW →ₗ[ZMod 2] E xW =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`. κE And (a b : Prop) : Prop`And a b`, or `a ∧ b`, is the conjunction of propositions. It can be
    constructed and destructed like a pair: if `ha : a` and `hb : b` then
    `⟨ha, hb⟩ : a ∧ b`, and if `h : a ∧ b` then `h.left : a` and `h.right : b`.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∧` in identifiers is `and`.
    
     * The recommended spelling of `/\` in identifiers is `and` (prefer `∧` over `/\`). QQ2Presentation.Quadratic.QuadF2 W.formQ2Presentation.Quadratic.QuadF2.form.{u_2} {V : Type u_2} [AddCommGroup V] [Module (ZMod 2) V]
      (self : Q2Presentation.Quadratic.QuadF2 V) : V → ZMod 2the quadratic map `q : V → F₂`  xW =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`. εZMod 2 }Subtype.{u} {α : Sort u} (p : α → Prop) : Sort (max 1 u)All the elements of a type that satisfy a predicate.
    
    `Subtype p`, usually written `{ x : α // p x }` or `{ x // p x }`, contains all elements `x : α` for
    which `p x` is true. Its constructor is a pair of the value and the proof that it satisfies the
    predicate. In run-time code, `{ x : α // p x }` is represented identically to `α`.
    
    There is a coercion from `{ x : α // p x }` to `α`, so elements of a subtype may be used where the
    underlying type is expected.
    
    Examples:
     * `{ n : Nat // n % 2 = 0 }` is the type of even numbers.
     * `{ xs : Array String // xs.size = 5 }` is the type of arrays with five `String`s.
     * Given `xs : List α`, `List { x : α // x ∈ xs }` is the type of lists in which all elements are
       contained in `xs`.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `{ x // p x }` in identifiers is `subtype`.) =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`.
        (Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number.
    If `α` is infinite, `Nat.card α = 0`.  WType u_1) +HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`.
          Q2Presentation.Quadratic.Dickson.gaussSumQ2Presentation.Quadratic.Dickson.gaussSum.{u_1} {V : Type u_1} [AddCommGroup V] [Module (ZMod 2) V] [Fintype V]
      (q : Q2Presentation.Quadratic.QuadF2 V) : ℤThe **Gauss sum** `D(q) = ∑_v χ(q v)`.  QQ2Presentation.Quadratic.QuadF2 W *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
             χModule.Dual (ZMod 2) E,
              Q2Presentation.Quadratic.Dickson.signCharQ2Presentation.Quadratic.Dickson.signChar (a : ZMod 2) : ℤThe sign character `χ(0) = 1`, `χ(1) = -1`. 
                (HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`.χModule.Dual (ZMod 2) E κE +HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`. εZMod 2 +HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`. QQ2Presentation.Quadratic.QuadF2 W.formQ2Presentation.Quadratic.QuadF2.form.{u_2} {V : Type u_2} [AddCommGroup V] [Module (ZMod 2) V]
      (self : Q2Presentation.Quadratic.QuadF2 V) : V → ZMod 2the quadratic map `q : V → F₂`  (AModule.Dual (ZMod 2) E → W χModule.Dual (ZMod 2) E))HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`.
    theorem Q2Presentation.Quadratic.constrainedGauss_count_pure.{u_1,
        u_2}
      {WType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } {EType u_2 : Type u_2A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. }
      [AddCommGroupAddCommGroup.{u} (G : Type u) : Type uAn additive commutative group is an additive group with commutative `(+)`.  WType u_1] [ModuleModule.{u, v} (R : Type u) (M : Type v) [Semiring R] [AddCommMonoid M] : Type (max u v)A module is a generalization of vector spaces to a scalar semiring.
    It consists of a scalar semiring `R` and an additive monoid of "vectors" `M`,
    connected by a "scalar multiplication" operation `r • x : M`
    (where `r : R` and `x : M`) with some natural associativity and
    distributivity axioms similar to those on a ring.  (ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2) WType u_1]
      [FintypeFintype.{u_4} (α : Type u_4) : Type u_4`Fintype α` means that `α` is finite, i.e. there are only
    finitely many distinct elements of type `α`. The evidence of this
    is a finset `elems` (a list up to permutation without duplicates),
    together with a proof that everything of type `α` is in the list.  WType u_1] [AddCommGroupAddCommGroup.{u} (G : Type u) : Type uAn additive commutative group is an additive group with commutative `(+)`.  EType u_2]
      [ModuleModule.{u, v} (R : Type u) (M : Type v) [Semiring R] [AddCommMonoid M] : Type (max u v)A module is a generalization of vector spaces to a scalar semiring.
    It consists of a scalar semiring `R` and an additive monoid of "vectors" `M`,
    connected by a "scalar multiplication" operation `r • x : M`
    (where `r : R` and `x : M`) with some natural associativity and
    distributivity axioms similar to those on a ring.  (ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2) EType u_2] [FiniteFinite.{u_3} (α : Sort u_3) : PropA type is `Finite` if it is in bijective correspondence to some `Fin n`.
    
    This is similar to `Fintype`, but `Finite` is a proposition rather than data.
    A particular benefit to this is that `Finite` instances are definitionally equal to one another
    (due to proof irrelevance) rather than being merely propositionally equal,
    and, furthermore, `Finite` instances generally avoid the need for `Decidable` instances.
    One other notable difference is that `Finite` allows there to be `Finite p` instances
    for all `p : Prop`, which is not allowed by `Fintype` due to universe constraints.
    An application of this is that `Finite (x ∈ s → β x)` follows from the general instance for pi
    types, assuming `[∀ x, Finite (β x)]`.
    Implementation note: this is a reason `Finite α` is not defined as `Nonempty (Fintype α)`.
    
    Every `Fintype` instance provides a `Finite` instance via `Finite.of_fintype`.
    Conversely, one can noncomputably create a `Fintype` instance from a `Finite` instance
    via `Fintype.ofFinite`. In a proof one might write
    ```lean
      have := Fintype.ofFinite α
    ```
    to obtain such an instance.
    
    Do not write noncomputable `Fintype` instances; instead write `Finite` instances
    and use this `Fintype.ofFinite` interface.
    The `Fintype` instances should be relied upon to be computable for evaluation purposes.
    
    Theorems should use `Finite` instead of `Fintype`, unless definitions in the theorem statement
    require `Fintype`.
    Definitions should prefer `Finite` as well, unless it is important that the definitions
    are meant to be computable in the reduction or `#eval` sense.
     EType u_2]
      [FintypeFintype.{u_4} (α : Type u_4) : Type u_4`Fintype α` means that `α` is finite, i.e. there are only
    finitely many distinct elements of type `α`. The evidence of this
    is a finset `elems` (a list up to permutation without duplicates),
    together with a proof that everything of type `α` is in the list.  (Module.DualModule.Dual.{u_4, u_5} (R : Type u_4) (M : Type u_5) [Semiring R] [AddCommMonoid M] [Module R M] : Type (max u_5 u_4)The left dual space of an R-module M is the R-module of linear maps `M → R`.  (ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2) EType u_2)]
      (LW →ₗ[ZMod 2] E : WType u_1 →ₗ[LinearMap.{u_14, u_15, u_16, u_17} {R : Type u_14} {S : Type u_15} [Semiring R] [Semiring S] (σ : R →+* S)
      (M : Type u_16) (M₂ : Type u_17) [AddCommMonoid M] [AddCommMonoid M₂] [Module R M] [Module S M₂] :
      Type (max u_16 u_17)A map `f` between an `R`-module and an `S`-module over a ring homomorphism `σ : R →+* S`
    is semilinear if it satisfies the two properties `f (x + y) = f x + f y` and
    `f (c • x) = (σ c) • f x`. Elements of `LinearMap σ M M₂` (available under the notation
    `M →ₛₗ[σ] M₂`) are bundled versions of such maps. For plain linear maps (i.e. for which
    `σ = RingHom.id R`), the notation `M →ₗ[R] M₂` is available. An unbundled version of plain linear
    maps is available with the predicate `IsLinearMap`, but it should be avoided most of the time. ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2]LinearMap.{u_14, u_15, u_16, u_17} {R : Type u_14} {S : Type u_15} [Semiring R] [Semiring S] (σ : R →+* S)
      (M : Type u_16) (M₂ : Type u_17) [AddCommMonoid M] [AddCommMonoid M₂] [Module R M] [Module S M₂] :
      Type (max u_16 u_17)A map `f` between an `R`-module and an `S`-module over a ring homomorphism `σ : R →+* S`
    is semilinear if it satisfies the two properties `f (x + y) = f x + f y` and
    `f (c • x) = (σ c) • f x`. Elements of `LinearMap σ M M₂` (available under the notation
    `M →ₛₗ[σ] M₂`) are bundled versions of such maps. For plain linear maps (i.e. for which
    `σ = RingHom.id R`), the notation `M →ₗ[R] M₂` is available. An unbundled version of plain linear
    maps is available with the predicate `IsLinearMap`, but it should be avoided most of the time.  EType u_2)
      (hLFunction.Surjective ⇑L : Function.SurjectiveFunction.Surjective.{u_1, u_2} {α : Sort u_1} {β : Sort u_2} (f : α → β) : PropA function `f : α → β` is called surjective if every `b : β` is equal to `f a`
    for some `a : α`.  LW →ₗ[ZMod 2] E)
      (QQ2Presentation.Quadratic.QuadF2 W : Q2Presentation.Quadratic.QuadF2Q2Presentation.Quadratic.QuadF2.{u_2} (V : Type u_2) [AddCommGroup V] [Module (ZMod 2) V] : Type u_2A **quadratic form over `F₂`** with its bilinear polar (commutator) form.  WType u_1)
      (AModule.Dual (ZMod 2) E → W : Module.DualModule.Dual.{u_4, u_5} (R : Type u_4) (M : Type u_5) [Semiring R] [AddCommMonoid M] [Module R M] : Type (max u_5 u_4)The left dual space of an R-module M is the R-module of linear maps `M → R`.  (ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2) EType u_2  WType u_1)
      (hA∀ (χ : Module.Dual (ZMod 2) E) (x : W), (Q.polar (A χ)) x = χ (L x) :
         (χModule.Dual (ZMod 2) E : Module.DualModule.Dual.{u_4, u_5} (R : Type u_4) (M : Type u_5) [Semiring R] [AddCommMonoid M] [Module R M] : Type (max u_5 u_4)The left dual space of an R-module M is the R-module of linear maps `M → R`.  (ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2) EType u_2)
          (xW : WType u_1),
          (QQ2Presentation.Quadratic.QuadF2 W.polarQ2Presentation.Quadratic.QuadF2.polar.{u_2} {V : Type u_2} [AddCommGroup V] [Module (ZMod 2) V]
      (self : Q2Presentation.Quadratic.QuadF2 V) : V →ₗ[ZMod 2] V →ₗ[ZMod 2] ZMod 2the bilinear polar form `b_q`, i.e. the commutator pairing  (AModule.Dual (ZMod 2) E → W χModule.Dual (ZMod 2) E)) xW =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`. χModule.Dual (ZMod 2) E (LW →ₗ[ZMod 2] E xW))
      (κE : EType u_2) (εZMod 2 : ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2) :
      2 *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. (Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number.
    If `α` is infinite, `Nat.card α = 0`.  EType u_2) *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
          (Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number.
    If `α` is infinite, `Nat.card α = 0`. 
              {Subtype.{u} {α : Sort u} (p : α → Prop) : Sort (max 1 u)All the elements of a type that satisfy a predicate.
    
    `Subtype p`, usually written `{ x : α // p x }` or `{ x // p x }`, contains all elements `x : α` for
    which `p x` is true. Its constructor is a pair of the value and the proof that it satisfies the
    predicate. In run-time code, `{ x : α // p x }` is represented identically to `α`.
    
    There is a coercion from `{ x : α // p x }` to `α`, so elements of a subtype may be used where the
    underlying type is expected.
    
    Examples:
     * `{ n : Nat // n % 2 = 0 }` is the type of even numbers.
     * `{ xs : Array String // xs.size = 5 }` is the type of arrays with five `String`s.
     * Given `xs : List α`, `List { x : α // x ∈ xs }` is the type of lists in which all elements are
       contained in `xs`.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `{ x // p x }` in identifiers is `subtype`. xW //Subtype.{u} {α : Sort u} (p : α → Prop) : Sort (max 1 u)All the elements of a type that satisfy a predicate.
    
    `Subtype p`, usually written `{ x : α // p x }` or `{ x // p x }`, contains all elements `x : α` for
    which `p x` is true. Its constructor is a pair of the value and the proof that it satisfies the
    predicate. In run-time code, `{ x : α // p x }` is represented identically to `α`.
    
    There is a coercion from `{ x : α // p x }` to `α`, so elements of a subtype may be used where the
    underlying type is expected.
    
    Examples:
     * `{ n : Nat // n % 2 = 0 }` is the type of even numbers.
     * `{ xs : Array String // xs.size = 5 }` is the type of arrays with five `String`s.
     * Given `xs : List α`, `List { x : α // x ∈ xs }` is the type of lists in which all elements are
       contained in `xs`.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `{ x // p x }` in identifiers is `subtype`.
                LW →ₗ[ZMod 2] E xW =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`. κE And (a b : Prop) : Prop`And a b`, or `a ∧ b`, is the conjunction of propositions. It can be
    constructed and destructed like a pair: if `ha : a` and `hb : b` then
    `⟨ha, hb⟩ : a ∧ b`, and if `h : a ∧ b` then `h.left : a` and `h.right : b`.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∧` in identifiers is `and`.
    
     * The recommended spelling of `/\` in identifiers is `and` (prefer `∧` over `/\`). QQ2Presentation.Quadratic.QuadF2 W.formQ2Presentation.Quadratic.QuadF2.form.{u_2} {V : Type u_2} [AddCommGroup V] [Module (ZMod 2) V]
      (self : Q2Presentation.Quadratic.QuadF2 V) : V → ZMod 2the quadratic map `q : V → F₂`  xW =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`. εZMod 2 }Subtype.{u} {α : Sort u} (p : α → Prop) : Sort (max 1 u)All the elements of a type that satisfy a predicate.
    
    `Subtype p`, usually written `{ x : α // p x }` or `{ x // p x }`, contains all elements `x : α` for
    which `p x` is true. Its constructor is a pair of the value and the proof that it satisfies the
    predicate. In run-time code, `{ x : α // p x }` is represented identically to `α`.
    
    There is a coercion from `{ x : α // p x }` to `α`, so elements of a subtype may be used where the
    underlying type is expected.
    
    Examples:
     * `{ n : Nat // n % 2 = 0 }` is the type of even numbers.
     * `{ xs : Array String // xs.size = 5 }` is the type of arrays with five `String`s.
     * Given `xs : List α`, `List { x : α // x ∈ xs }` is the type of lists in which all elements are
       contained in `xs`.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `{ x // p x }` in identifiers is `subtype`.) =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`.
        (Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number.
    If `α` is infinite, `Nat.card α = 0`.  WType u_1) +HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`.
          Q2Presentation.Quadratic.Dickson.gaussSumQ2Presentation.Quadratic.Dickson.gaussSum.{u_1} {V : Type u_1} [AddCommGroup V] [Module (ZMod 2) V] [Fintype V]
      (q : Q2Presentation.Quadratic.QuadF2 V) : ℤThe **Gauss sum** `D(q) = ∑_v χ(q v)`. 
              QQ2Presentation.Quadratic.QuadF2 W *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
             χModule.Dual (ZMod 2) E,
              Q2Presentation.Quadratic.Dickson.signCharQ2Presentation.Quadratic.Dickson.signChar (a : ZMod 2) : ℤThe sign character `χ(0) = 1`, `χ(1) = -1`. 
                (HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`.χModule.Dual (ZMod 2) E κE +HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`. εZMod 2 +HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`. QQ2Presentation.Quadratic.QuadF2 W.formQ2Presentation.Quadratic.QuadF2.form.{u_2} {V : Type u_2} [AddCommGroup V] [Module (ZMod 2) V]
      (self : Q2Presentation.Quadratic.QuadF2 V) : V → ZMod 2the quadratic map `q : V → F₂`  (AModule.Dual (ZMod 2) E → W χModule.Dual (ZMod 2) E))HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`.
    **`lem:constrainedgauss` verbatim** (`eq:constrainedgauss`, l.3888–3894): the
    pure case `ℓ = 0`, i.e. `2·|E|·#{x : Lx = κ, Q(x) = ε} = |W| +
    G(Q)·∑_χ (-1)^{χ(κ)+ε+Q(a_χ)}` with `b_Q(a_χ,·) = χ∘L`. 
  • theoremdefined in Q2Presentation/Quadratic/ConstrainedGauss.lean
    complete
    theorem Q2Presentation.Quadratic.constrainedGauss_count_exists.{u_1, u_2}
      {WType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } {EType u_2 : Type u_2A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } [AddCommGroupAddCommGroup.{u} (G : Type u) : Type uAn additive commutative group is an additive group with commutative `(+)`.  WType u_1] [ModuleModule.{u, v} (R : Type u) (M : Type v) [Semiring R] [AddCommMonoid M] : Type (max u v)A module is a generalization of vector spaces to a scalar semiring.
    It consists of a scalar semiring `R` and an additive monoid of "vectors" `M`,
    connected by a "scalar multiplication" operation `r • x : M`
    (where `r : R` and `x : M`) with some natural associativity and
    distributivity axioms similar to those on a ring.  (ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2) WType u_1]
      [FintypeFintype.{u_4} (α : Type u_4) : Type u_4`Fintype α` means that `α` is finite, i.e. there are only
    finitely many distinct elements of type `α`. The evidence of this
    is a finset `elems` (a list up to permutation without duplicates),
    together with a proof that everything of type `α` is in the list.  WType u_1] [AddCommGroupAddCommGroup.{u} (G : Type u) : Type uAn additive commutative group is an additive group with commutative `(+)`.  EType u_2] [ModuleModule.{u, v} (R : Type u) (M : Type v) [Semiring R] [AddCommMonoid M] : Type (max u v)A module is a generalization of vector spaces to a scalar semiring.
    It consists of a scalar semiring `R` and an additive monoid of "vectors" `M`,
    connected by a "scalar multiplication" operation `r • x : M`
    (where `r : R` and `x : M`) with some natural associativity and
    distributivity axioms similar to those on a ring.  (ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2) EType u_2] [FiniteFinite.{u_3} (α : Sort u_3) : PropA type is `Finite` if it is in bijective correspondence to some `Fin n`.
    
    This is similar to `Fintype`, but `Finite` is a proposition rather than data.
    A particular benefit to this is that `Finite` instances are definitionally equal to one another
    (due to proof irrelevance) rather than being merely propositionally equal,
    and, furthermore, `Finite` instances generally avoid the need for `Decidable` instances.
    One other notable difference is that `Finite` allows there to be `Finite p` instances
    for all `p : Prop`, which is not allowed by `Fintype` due to universe constraints.
    An application of this is that `Finite (x ∈ s → β x)` follows from the general instance for pi
    types, assuming `[∀ x, Finite (β x)]`.
    Implementation note: this is a reason `Finite α` is not defined as `Nonempty (Fintype α)`.
    
    Every `Fintype` instance provides a `Finite` instance via `Finite.of_fintype`.
    Conversely, one can noncomputably create a `Fintype` instance from a `Finite` instance
    via `Fintype.ofFinite`. In a proof one might write
    ```lean
      have := Fintype.ofFinite α
    ```
    to obtain such an instance.
    
    Do not write noncomputable `Fintype` instances; instead write `Finite` instances
    and use this `Fintype.ofFinite` interface.
    The `Fintype` instances should be relied upon to be computable for evaluation purposes.
    
    Theorems should use `Finite` instead of `Fintype`, unless definitions in the theorem statement
    require `Fintype`.
    Definitions should prefer `Finite` as well, unless it is important that the definitions
    are meant to be computable in the reduction or `#eval` sense.
     EType u_2]
      [FintypeFintype.{u_4} (α : Type u_4) : Type u_4`Fintype α` means that `α` is finite, i.e. there are only
    finitely many distinct elements of type `α`. The evidence of this
    is a finset `elems` (a list up to permutation without duplicates),
    together with a proof that everything of type `α` is in the list.  (Module.DualModule.Dual.{u_4, u_5} (R : Type u_4) (M : Type u_5) [Semiring R] [AddCommMonoid M] [Module R M] : Type (max u_5 u_4)The left dual space of an R-module M is the R-module of linear maps `M → R`.  (ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2) EType u_2)] (LW →ₗ[ZMod 2] E : WType u_1 →ₗ[LinearMap.{u_14, u_15, u_16, u_17} {R : Type u_14} {S : Type u_15} [Semiring R] [Semiring S] (σ : R →+* S)
      (M : Type u_16) (M₂ : Type u_17) [AddCommMonoid M] [AddCommMonoid M₂] [Module R M] [Module S M₂] :
      Type (max u_16 u_17)A map `f` between an `R`-module and an `S`-module over a ring homomorphism `σ : R →+* S`
    is semilinear if it satisfies the two properties `f (x + y) = f x + f y` and
    `f (c • x) = (σ c) • f x`. Elements of `LinearMap σ M M₂` (available under the notation
    `M →ₛₗ[σ] M₂`) are bundled versions of such maps. For plain linear maps (i.e. for which
    `σ = RingHom.id R`), the notation `M →ₗ[R] M₂` is available. An unbundled version of plain linear
    maps is available with the predicate `IsLinearMap`, but it should be avoided most of the time. ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2]LinearMap.{u_14, u_15, u_16, u_17} {R : Type u_14} {S : Type u_15} [Semiring R] [Semiring S] (σ : R →+* S)
      (M : Type u_16) (M₂ : Type u_17) [AddCommMonoid M] [AddCommMonoid M₂] [Module R M] [Module S M₂] :
      Type (max u_16 u_17)A map `f` between an `R`-module and an `S`-module over a ring homomorphism `σ : R →+* S`
    is semilinear if it satisfies the two properties `f (x + y) = f x + f y` and
    `f (c • x) = (σ c) • f x`. Elements of `LinearMap σ M M₂` (available under the notation
    `M →ₛₗ[σ] M₂`) are bundled versions of such maps. For plain linear maps (i.e. for which
    `σ = RingHom.id R`), the notation `M →ₗ[R] M₂` is available. An unbundled version of plain linear
    maps is available with the predicate `IsLinearMap`, but it should be avoided most of the time.  EType u_2)
      (hLFunction.Surjective ⇑L : Function.SurjectiveFunction.Surjective.{u_1, u_2} {α : Sort u_1} {β : Sort u_2} (f : α → β) : PropA function `f : α → β` is called surjective if every `b : β` is equal to `f a`
    for some `a : α`.  LW →ₗ[ZMod 2] E) (QQ2Presentation.Quadratic.QuadF2 W : Q2Presentation.Quadratic.QuadF2Q2Presentation.Quadratic.QuadF2.{u_2} (V : Type u_2) [AddCommGroup V] [Module (ZMod 2) V] : Type u_2A **quadratic form over `F₂`** with its bilinear polar (commutator) form.  WType u_1)
      (hnsQ.Nonsingular : QQ2Presentation.Quadratic.QuadF2 W.NonsingularQ2Presentation.Quadratic.QuadF2.Nonsingular.{u_1} {V : Type u_1} [AddCommGroup V] [Module (ZMod 2) V]
      (q : Q2Presentation.Quadratic.QuadF2 V) : Prop**Nonsingularity** (the polar form is nondegenerate / perfect): the only vector
    pairing to `0` with everything is `0`.  For a nonzero invariant form on a simple
    self-dual `V` this is automatic (`lem:zeropolar`, l.3452). ) (lModule.Dual (ZMod 2) W : Module.DualModule.Dual.{u_4, u_5} (R : Type u_4) (M : Type u_5) [Semiring R] [AddCommMonoid M] [Module R M] : Type (max u_5 u_4)The left dual space of an R-module M is the R-module of linear maps `M → R`.  (ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2) WType u_1) (κE : EType u_2)
      (εZMod 2 : ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2) :
       AModule.Dual (ZMod 2) E → W,
        (∀ (χModule.Dual (ZMod 2) E : Module.DualModule.Dual.{u_4, u_5} (R : Type u_4) (M : Type u_5) [Semiring R] [AddCommMonoid M] [Module R M] : Type (max u_5 u_4)The left dual space of an R-module M is the R-module of linear maps `M → R`.  (ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2) EType u_2) (xW : WType u_1),
            (QQ2Presentation.Quadratic.QuadF2 W.polarQ2Presentation.Quadratic.QuadF2.polar.{u_2} {V : Type u_2} [AddCommGroup V] [Module (ZMod 2) V]
      (self : Q2Presentation.Quadratic.QuadF2 V) : V →ₗ[ZMod 2] V →ₗ[ZMod 2] ZMod 2the bilinear polar form `b_q`, i.e. the commutator pairing  (AModule.Dual (ZMod 2) E → W χModule.Dual (ZMod 2) E)) xW =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`. χModule.Dual (ZMod 2) E (LW →ₗ[ZMod 2] E xW) +HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`. lModule.Dual (ZMod 2) W xW) And (a b : Prop) : Prop`And a b`, or `a ∧ b`, is the conjunction of propositions. It can be
    constructed and destructed like a pair: if `ha : a` and `hb : b` then
    `⟨ha, hb⟩ : a ∧ b`, and if `h : a ∧ b` then `h.left : a` and `h.right : b`.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∧` in identifiers is `and`.
    
     * The recommended spelling of `/\` in identifiers is `and` (prefer `∧` over `/\`).
          2 *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. (Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number.
    If `α` is infinite, `Nat.card α = 0`.  EType u_2) *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
              (Q2Presentation.Quadratic.constrainedZerosQ2Presentation.Quadratic.constrainedZeros.{u_1, u_2} {W : Type u_1} {E : Type u_2} [AddCommGroup W] [Module (ZMod 2) W]
      [AddCommGroup E] [Module (ZMod 2) E] (L : W →ₗ[ZMod 2] E) (Q : Q2Presentation.Quadratic.QuadF2 W)
      (l : Module.Dual (ZMod 2) W) (κ : E) (ε : ZMod 2) : ℕ`N(κ, ε)` — the **constrained count** of `lem:constrainedgauss` (l.3879–3882),
    with an affine (linear-term) refinement: `#{x : L x = κ ∧ Q(x) + ℓ(x) = ε}`.
    At `ℓ = 0` this is the manuscript's `N(κ,ε)`; the affine form is what
    `prop:zeroedge` consumes through `eq:Qkappadifference` (the actual pushout form
    `Q_κ` is base-plus-linear, its constant part being absorbed into `ε`).  LW →ₗ[ZMod 2] E QQ2Presentation.Quadratic.QuadF2 W lModule.Dual (ZMod 2) W κE εZMod 2) =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`.
            (Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number.
    If `α` is infinite, `Nat.card α = 0`.  WType u_1) +HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`.
              Q2Presentation.Quadratic.Dickson.gaussSumQ2Presentation.Quadratic.Dickson.gaussSum.{u_1} {V : Type u_1} [AddCommGroup V] [Module (ZMod 2) V] [Fintype V]
      (q : Q2Presentation.Quadratic.QuadF2 V) : ℤThe **Gauss sum** `D(q) = ∑_v χ(q v)`.  QQ2Presentation.Quadratic.QuadF2 W *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
                 χModule.Dual (ZMod 2) E,
                  Q2Presentation.Quadratic.Dickson.signCharQ2Presentation.Quadratic.Dickson.signChar (a : ZMod 2) : ℤThe sign character `χ(0) = 1`, `χ(1) = -1`. 
                    (HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`.χModule.Dual (ZMod 2) E κE +HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`. εZMod 2 +HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`. QQ2Presentation.Quadratic.QuadF2 W.formQ2Presentation.Quadratic.QuadF2.form.{u_2} {V : Type u_2} [AddCommGroup V] [Module (ZMod 2) V]
      (self : Q2Presentation.Quadratic.QuadF2 V) : V → ZMod 2the quadratic map `q : V → F₂`  (AModule.Dual (ZMod 2) E → W χModule.Dual (ZMod 2) E))HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`.
    theorem Q2Presentation.Quadratic.constrainedGauss_count_exists.{u_1,
        u_2}
      {WType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } {EType u_2 : Type u_2A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. }
      [AddCommGroupAddCommGroup.{u} (G : Type u) : Type uAn additive commutative group is an additive group with commutative `(+)`.  WType u_1] [ModuleModule.{u, v} (R : Type u) (M : Type v) [Semiring R] [AddCommMonoid M] : Type (max u v)A module is a generalization of vector spaces to a scalar semiring.
    It consists of a scalar semiring `R` and an additive monoid of "vectors" `M`,
    connected by a "scalar multiplication" operation `r • x : M`
    (where `r : R` and `x : M`) with some natural associativity and
    distributivity axioms similar to those on a ring.  (ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2) WType u_1]
      [FintypeFintype.{u_4} (α : Type u_4) : Type u_4`Fintype α` means that `α` is finite, i.e. there are only
    finitely many distinct elements of type `α`. The evidence of this
    is a finset `elems` (a list up to permutation without duplicates),
    together with a proof that everything of type `α` is in the list.  WType u_1] [AddCommGroupAddCommGroup.{u} (G : Type u) : Type uAn additive commutative group is an additive group with commutative `(+)`.  EType u_2]
      [ModuleModule.{u, v} (R : Type u) (M : Type v) [Semiring R] [AddCommMonoid M] : Type (max u v)A module is a generalization of vector spaces to a scalar semiring.
    It consists of a scalar semiring `R` and an additive monoid of "vectors" `M`,
    connected by a "scalar multiplication" operation `r • x : M`
    (where `r : R` and `x : M`) with some natural associativity and
    distributivity axioms similar to those on a ring.  (ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2) EType u_2] [FiniteFinite.{u_3} (α : Sort u_3) : PropA type is `Finite` if it is in bijective correspondence to some `Fin n`.
    
    This is similar to `Fintype`, but `Finite` is a proposition rather than data.
    A particular benefit to this is that `Finite` instances are definitionally equal to one another
    (due to proof irrelevance) rather than being merely propositionally equal,
    and, furthermore, `Finite` instances generally avoid the need for `Decidable` instances.
    One other notable difference is that `Finite` allows there to be `Finite p` instances
    for all `p : Prop`, which is not allowed by `Fintype` due to universe constraints.
    An application of this is that `Finite (x ∈ s → β x)` follows from the general instance for pi
    types, assuming `[∀ x, Finite (β x)]`.
    Implementation note: this is a reason `Finite α` is not defined as `Nonempty (Fintype α)`.
    
    Every `Fintype` instance provides a `Finite` instance via `Finite.of_fintype`.
    Conversely, one can noncomputably create a `Fintype` instance from a `Finite` instance
    via `Fintype.ofFinite`. In a proof one might write
    ```lean
      have := Fintype.ofFinite α
    ```
    to obtain such an instance.
    
    Do not write noncomputable `Fintype` instances; instead write `Finite` instances
    and use this `Fintype.ofFinite` interface.
    The `Fintype` instances should be relied upon to be computable for evaluation purposes.
    
    Theorems should use `Finite` instead of `Fintype`, unless definitions in the theorem statement
    require `Fintype`.
    Definitions should prefer `Finite` as well, unless it is important that the definitions
    are meant to be computable in the reduction or `#eval` sense.
     EType u_2]
      [FintypeFintype.{u_4} (α : Type u_4) : Type u_4`Fintype α` means that `α` is finite, i.e. there are only
    finitely many distinct elements of type `α`. The evidence of this
    is a finset `elems` (a list up to permutation without duplicates),
    together with a proof that everything of type `α` is in the list.  (Module.DualModule.Dual.{u_4, u_5} (R : Type u_4) (M : Type u_5) [Semiring R] [AddCommMonoid M] [Module R M] : Type (max u_5 u_4)The left dual space of an R-module M is the R-module of linear maps `M → R`.  (ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2) EType u_2)]
      (LW →ₗ[ZMod 2] E : WType u_1 →ₗ[LinearMap.{u_14, u_15, u_16, u_17} {R : Type u_14} {S : Type u_15} [Semiring R] [Semiring S] (σ : R →+* S)
      (M : Type u_16) (M₂ : Type u_17) [AddCommMonoid M] [AddCommMonoid M₂] [Module R M] [Module S M₂] :
      Type (max u_16 u_17)A map `f` between an `R`-module and an `S`-module over a ring homomorphism `σ : R →+* S`
    is semilinear if it satisfies the two properties `f (x + y) = f x + f y` and
    `f (c • x) = (σ c) • f x`. Elements of `LinearMap σ M M₂` (available under the notation
    `M →ₛₗ[σ] M₂`) are bundled versions of such maps. For plain linear maps (i.e. for which
    `σ = RingHom.id R`), the notation `M →ₗ[R] M₂` is available. An unbundled version of plain linear
    maps is available with the predicate `IsLinearMap`, but it should be avoided most of the time. ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2]LinearMap.{u_14, u_15, u_16, u_17} {R : Type u_14} {S : Type u_15} [Semiring R] [Semiring S] (σ : R →+* S)
      (M : Type u_16) (M₂ : Type u_17) [AddCommMonoid M] [AddCommMonoid M₂] [Module R M] [Module S M₂] :
      Type (max u_16 u_17)A map `f` between an `R`-module and an `S`-module over a ring homomorphism `σ : R →+* S`
    is semilinear if it satisfies the two properties `f (x + y) = f x + f y` and
    `f (c • x) = (σ c) • f x`. Elements of `LinearMap σ M M₂` (available under the notation
    `M →ₛₗ[σ] M₂`) are bundled versions of such maps. For plain linear maps (i.e. for which
    `σ = RingHom.id R`), the notation `M →ₗ[R] M₂` is available. An unbundled version of plain linear
    maps is available with the predicate `IsLinearMap`, but it should be avoided most of the time.  EType u_2)
      (hLFunction.Surjective ⇑L : Function.SurjectiveFunction.Surjective.{u_1, u_2} {α : Sort u_1} {β : Sort u_2} (f : α → β) : PropA function `f : α → β` is called surjective if every `b : β` is equal to `f a`
    for some `a : α`.  LW →ₗ[ZMod 2] E)
      (QQ2Presentation.Quadratic.QuadF2 W : Q2Presentation.Quadratic.QuadF2Q2Presentation.Quadratic.QuadF2.{u_2} (V : Type u_2) [AddCommGroup V] [Module (ZMod 2) V] : Type u_2A **quadratic form over `F₂`** with its bilinear polar (commutator) form.  WType u_1)
      (hnsQ.Nonsingular : QQ2Presentation.Quadratic.QuadF2 W.NonsingularQ2Presentation.Quadratic.QuadF2.Nonsingular.{u_1} {V : Type u_1} [AddCommGroup V] [Module (ZMod 2) V]
      (q : Q2Presentation.Quadratic.QuadF2 V) : Prop**Nonsingularity** (the polar form is nondegenerate / perfect): the only vector
    pairing to `0` with everything is `0`.  For a nonzero invariant form on a simple
    self-dual `V` this is automatic (`lem:zeropolar`, l.3452). )
      (lModule.Dual (ZMod 2) W : Module.DualModule.Dual.{u_4, u_5} (R : Type u_4) (M : Type u_5) [Semiring R] [AddCommMonoid M] [Module R M] : Type (max u_5 u_4)The left dual space of an R-module M is the R-module of linear maps `M → R`.  (ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2) WType u_1) (κE : EType u_2)
      (εZMod 2 : ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2) :
       AModule.Dual (ZMod 2) E → W,
        (∀ (χModule.Dual (ZMod 2) E : Module.DualModule.Dual.{u_4, u_5} (R : Type u_4) (M : Type u_5) [Semiring R] [AddCommMonoid M] [Module R M] : Type (max u_5 u_4)The left dual space of an R-module M is the R-module of linear maps `M → R`.  (ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2) EType u_2)
            (xW : WType u_1),
            (QQ2Presentation.Quadratic.QuadF2 W.polarQ2Presentation.Quadratic.QuadF2.polar.{u_2} {V : Type u_2} [AddCommGroup V] [Module (ZMod 2) V]
      (self : Q2Presentation.Quadratic.QuadF2 V) : V →ₗ[ZMod 2] V →ₗ[ZMod 2] ZMod 2the bilinear polar form `b_q`, i.e. the commutator pairing  (AModule.Dual (ZMod 2) E → W χModule.Dual (ZMod 2) E)) xW =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`.
              χModule.Dual (ZMod 2) E (LW →ₗ[ZMod 2] E xW) +HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`. lModule.Dual (ZMod 2) W xW) And (a b : Prop) : Prop`And a b`, or `a ∧ b`, is the conjunction of propositions. It can be
    constructed and destructed like a pair: if `ha : a` and `hb : b` then
    `⟨ha, hb⟩ : a ∧ b`, and if `h : a ∧ b` then `h.left : a` and `h.right : b`.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∧` in identifiers is `and`.
    
     * The recommended spelling of `/\` in identifiers is `and` (prefer `∧` over `/\`).
          2 *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. (Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number.
    If `α` is infinite, `Nat.card α = 0`.  EType u_2) *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
              (Q2Presentation.Quadratic.constrainedZerosQ2Presentation.Quadratic.constrainedZeros.{u_1, u_2} {W : Type u_1} {E : Type u_2} [AddCommGroup W] [Module (ZMod 2) W]
      [AddCommGroup E] [Module (ZMod 2) E] (L : W →ₗ[ZMod 2] E) (Q : Q2Presentation.Quadratic.QuadF2 W)
      (l : Module.Dual (ZMod 2) W) (κ : E) (ε : ZMod 2) : ℕ`N(κ, ε)` — the **constrained count** of `lem:constrainedgauss` (l.3879–3882),
    with an affine (linear-term) refinement: `#{x : L x = κ ∧ Q(x) + ℓ(x) = ε}`.
    At `ℓ = 0` this is the manuscript's `N(κ,ε)`; the affine form is what
    `prop:zeroedge` consumes through `eq:Qkappadifference` (the actual pushout form
    `Q_κ` is base-plus-linear, its constant part being absorbed into `ε`). 
                  LW →ₗ[ZMod 2] E QQ2Presentation.Quadratic.QuadF2 W lModule.Dual (ZMod 2) W κE εZMod 2) =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`.
            (Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number.
    If `α` is infinite, `Nat.card α = 0`.  WType u_1) +HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`.
              Q2Presentation.Quadratic.Dickson.gaussSumQ2Presentation.Quadratic.Dickson.gaussSum.{u_1} {V : Type u_1} [AddCommGroup V] [Module (ZMod 2) V] [Fintype V]
      (q : Q2Presentation.Quadratic.QuadF2 V) : ℤThe **Gauss sum** `D(q) = ∑_v χ(q v)`. 
                  QQ2Presentation.Quadratic.QuadF2 W *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
                 χModule.Dual (ZMod 2) E,
                  Q2Presentation.Quadratic.Dickson.signCharQ2Presentation.Quadratic.Dickson.signChar (a : ZMod 2) : ℤThe sign character `χ(0) = 1`, `χ(1) = -1`. 
                    (HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`.χModule.Dual (ZMod 2) E κE +HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`. εZMod 2 +HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`. QQ2Presentation.Quadratic.QuadF2 W.formQ2Presentation.Quadratic.QuadF2.form.{u_2} {V : Type u_2} [AddCommGroup V] [Module (ZMod 2) V]
      (self : Q2Presentation.Quadratic.QuadF2 V) : V → ZMod 2the quadratic map `q : V → F₂`  (AModule.Dual (ZMod 2) E → W χModule.Dual (ZMod 2) E))HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`.
    `lem:constrainedgauss` in **existential form**: for a *nonsingular* `Q` the
    representing vectors exist (`b_Q(a_χ,·) = χ∘L + ℓ`, unique by
    `QuadF2.polarRep_unique`) and the transform holds for them.  This is the exact
    package `prop:zeroedge` consumes at `W := H¹`-model, `E := H²(T)`-model,
    `L := ∂`, `κ := ρ*e`, `ℓ := ⟨·, ρ*γ_κ⟩` (`eq:pointwiseconstrained`). 

Lemma 8.6 of the paper (Radical edge, variation formula, and descent).

Let 0\to T\to M\to V\to0 be the simple-head sequence, and let

p:\widetilde B\twoheadrightarrow B

be a central double cover whose restriction to M has quadratic form with polar radical T and whose restriction to T is zero. The cover determines a canonical edge class

[\varepsilon]\in H^1(B/T,T^\vee).

Its restriction to V is zero, so it is inflated from a unique class

[\bar\varepsilon]\in H^1(C,T^\vee).

For every lower exact-image epimorphism \rho:\Gamma\twoheadrightarrow C and every unrestricted M-lift f, twisting by u\in Z^1_{\Gamma,\rho}(T) changes the scalar obstruction by

\operatorname{ob}(f_u)=\operatorname{ob}(f) +\bigl\langle [u],\rho^*[\bar\varepsilon]\bigr\rangle_\Gamma.

If [\bar\varepsilon]\ne0, the free Z^1_{\Gamma,\rho}(T)-action partitions the unrestricted M-lifts into orbits in each of which exactly one half satisfy the central relation. If [\bar\varepsilon]=0, the cover descends to a central double cover of B/T; conversely, descent forces the edge class to vanish.

Lean code for Lemma8.621 declarations
  • theoremdefined in Q2Presentation/Induction/BlockRecursionKeeps.lean
    complete
    theorem Q2Presentation.Induction.sec7_edgeTwistFlip_gammaA
      {pQ2Presentation.Induction.FramedPair : Q2Presentation.Induction.FramedPairQ2Presentation.Induction.FramedPair : Type 1A **framed pair** `(𝒴, F)`: a boundary-framed marked target together with a
    boundary frame for it (manuscript Definition 4.1 + `eq:beta`).  This is the index of
    Theorem 4.2: the boundary-framed surjection count `e_Γ^β` is a function of the pair.
    The induction of `sec:induction` ranges over *all* such pairs simultaneously
    ("the induction is stated globally", l.1213), ordered by `|L_Y|`. }
      (chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p : Q2Presentation.Induction.FirstNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor (p : Q2Presentation.Induction.FramedPair) : TypeA non-scalar chief factor of `L_Y` that is **first**: every chief factor strictly
    below it (i.e. with upper term contained in `lower`) is scalar.  This is the manuscript's
    choice `S ◁ P` at l.3616–3623 ("all chief factors below `S` are scalar and `V` is the
    first non-scalar simple factor"), which `lem:collapse` requires for the coprime step
    `[S, Ñ] = 1`.  pQ2Presentation.Induction.FramedPair)
      (KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor :
        Q2Presentation.Induction.KernelMinimalQ2Presentation.Induction.KernelMinimal {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.NonScalarChiefFactor p) : TypeThe manuscript's kernel choice (l.3623): `K ◁ Y`, `K ≤ P`, `KS = P`, and `K` is
    **⊆-minimal** with these properties — stated as: any `Y`-normal `K' ≤ K` still joining
    with `S` to `P` equals `K`.  (This, not leastness among all candidates, is what
    `lem:simplehead` and `lem:collapse` use: both apply it to subgroups of `K`.)  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p.toNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor.toNonScalarChiefFactor {p : Q2Presentation.Induction.FramedPair}
      (self : Q2Presentation.Induction.FirstNonScalarChiefFactor p) : Q2Presentation.Induction.NonScalarChiefFactor p)
      (lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) :
        Module.DualModule.Dual.{u_4, u_5} (R : Type u_4) (M : Type u_5) [Semiring R] [AddCommMonoid M] [Module R M] : Type (max u_5 u_4)The left dual space of an R-module M is the R-module of linear maps `M → R`.  (ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2)
          (Q2Presentation.Lifting.NAddQ2Presentation.Lifting.NAdd {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) : TypeThe additive `F₂`-carrier of an elementary kernel. 
            (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)))
      (hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K) :
        lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`.
          Q2Presentation.Lifting.conjInvDualsQ2Presentation.Lifting.conjInvDuals {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) :
      Submodule (ZMod 2) (Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E))The conjugation-invariant duals `X = (R^∨)^Y = (R^∨)^C` of an
    elementary kernel (consumer spelling of the manuscript's `𝒳_R`,
    §7 l.3720–3723). 
            (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor))
      (hnelam ≠ 0 : lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) Ne.{u} {α : Sort u} (a b : α) : Prop`a ≠ b`, or `Ne a b` is defined as `¬ (a = b)` or `a = b → False`,
    and asserts that `a` and `b` are not equal.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≠` in identifiers is `ne`. 0)
      (hedge¬Q2Presentation.Induction.ZeroEdge chief K lam hinv : ¬Not (a : Prop) : Prop`Not p`, or `¬p`, is the negation of `p`. It is defined to be `p → False`,
    so if your goal is `¬p` you can use `intro h` to turn the goal into
    `h : p ⊢ False`, and if you have `hn : ¬p` and `h : p` then `hn h : False`
    and `(hn h).elim` will prove anything.
    For more information: [Propositional Logic](https://lean-lang.org/theorem_proving_in_lean4/propositions_and_proofs.html#propositional-logic)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `¬` in identifiers is `not`.Q2Presentation.Induction.ZeroEdgeQ2Presentation.Induction.ZeroEdge {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) : Prop**The zero-edge predicate** (`lem:radicaledge`'s `[ε̄] = 0` branch,
    cocycle-free): some edge complement is normal in the whole cover.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) :
      Q2Presentation.Induction.EdgeTwistFlipQ2Presentation.Induction.EdgeTwistFlip {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) (hne : lam ≠ 0) : Prop**The isolated nonvanishing residue** (`lem:radicaledge` step 6's
    `[ε̄] ≠ 0 ⟹` perfect-degree-one-duality clause): over every child
    surjection, SOME weak `M`-lift carries a relator cocycle of nonzero edge
    pairing.  This — not the halving itself — is the remaining content of
    `sec7_edgeHalving_gammaA`; dissolution program in
    `audit/BLOCKR_P8_DESIGN.md` §10-P8D.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K) hnelam ≠ 0
    theorem Q2Presentation.Induction.sec7_edgeTwistFlip_gammaA
      {pQ2Presentation.Induction.FramedPair :
        Q2Presentation.Induction.FramedPairQ2Presentation.Induction.FramedPair : Type 1A **framed pair** `(𝒴, F)`: a boundary-framed marked target together with a
    boundary frame for it (manuscript Definition 4.1 + `eq:beta`).  This is the index of
    Theorem 4.2: the boundary-framed surjection count `e_Γ^β` is a function of the pair.
    The induction of `sec:induction` ranges over *all* such pairs simultaneously
    ("the induction is stated globally", l.1213), ordered by `|L_Y|`. }
      (chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p :
        Q2Presentation.Induction.FirstNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor (p : Q2Presentation.Induction.FramedPair) : TypeA non-scalar chief factor of `L_Y` that is **first**: every chief factor strictly
    below it (i.e. with upper term contained in `lower`) is scalar.  This is the manuscript's
    choice `S ◁ P` at l.3616–3623 ("all chief factors below `S` are scalar and `V` is the
    first non-scalar simple factor"), which `lem:collapse` requires for the coprime step
    `[S, Ñ] = 1`. 
          pQ2Presentation.Induction.FramedPair)
      (KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor :
        Q2Presentation.Induction.KernelMinimalQ2Presentation.Induction.KernelMinimal {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.NonScalarChiefFactor p) : TypeThe manuscript's kernel choice (l.3623): `K ◁ Y`, `K ≤ P`, `KS = P`, and `K` is
    **⊆-minimal** with these properties — stated as: any `Y`-normal `K' ≤ K` still joining
    with `S` to `P` equals `K`.  (This, not leastness among all candidates, is what
    `lem:simplehead` and `lem:collapse` use: both apply it to subgroups of `K`.) 
          chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p.toNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor.toNonScalarChiefFactor {p : Q2Presentation.Induction.FramedPair}
      (self : Q2Presentation.Induction.FirstNonScalarChiefFactor p) : Q2Presentation.Induction.NonScalarChiefFactor p)
      (lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) :
        Module.DualModule.Dual.{u_4, u_5} (R : Type u_4) (M : Type u_5) [Semiring R] [AddCommMonoid M] [Module R M] : Type (max u_5 u_4)The left dual space of an R-module M is the R-module of linear maps `M → R`.  (ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2)
          (Q2Presentation.Lifting.NAddQ2Presentation.Lifting.NAdd {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) : TypeThe additive `F₂`-carrier of an elementary kernel. 
            (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian. 
              chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)))
      (hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K) :
        lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`.
          Q2Presentation.Lifting.conjInvDualsQ2Presentation.Lifting.conjInvDuals {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) :
      Submodule (ZMod 2) (Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E))The conjugation-invariant duals `X = (R^∨)^Y = (R^∨)^C` of an
    elementary kernel (consumer spelling of the manuscript's `𝒳_R`,
    §7 l.3720–3723). 
            (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian. 
              chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor))
      (hnelam ≠ 0 : lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) Ne.{u} {α : Sort u} (a b : α) : Prop`a ≠ b`, or `Ne a b` is defined as `¬ (a = b)` or `a = b → False`,
    and asserts that `a` and `b` are not equal.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≠` in identifiers is `ne`. 0)
      (hedge¬Q2Presentation.Induction.ZeroEdge chief K lam hinv :
        ¬Not (a : Prop) : Prop`Not p`, or `¬p`, is the negation of `p`. It is defined to be `p → False`,
    so if your goal is `¬p` you can use `intro h` to turn the goal into
    `h : p ⊢ False`, and if you have `hn : ¬p` and `h : p` then `hn h : False`
    and `(hn h).elim` will prove anything.
    For more information: [Propositional Logic](https://lean-lang.org/theorem_proving_in_lean4/propositions_and_proofs.html#propositional-logic)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `¬` in identifiers is `not`.Q2Presentation.Induction.ZeroEdgeQ2Presentation.Induction.ZeroEdge {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) : Prop**The zero-edge predicate** (`lem:radicaledge`'s `[ε̄] = 0` branch,
    cocycle-free): some edge complement is normal in the whole cover. 
            chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) :
      Q2Presentation.Induction.EdgeTwistFlipQ2Presentation.Induction.EdgeTwistFlip {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) (hne : lam ≠ 0) : Prop**The isolated nonvanishing residue** (`lem:radicaledge` step 6's
    `[ε̄] ≠ 0 ⟹` perfect-degree-one-duality clause): over every child
    surjection, SOME weak `M`-lift carries a relator cocycle of nonzero edge
    pairing.  This — not the halving itself — is the remaining content of
    `sec7_edgeHalving_gammaA`; dissolution program in
    `audit/BLOCKR_P8_DESIGN.md` §10-P8D. 
        chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K) hnelam ≠ 0
    **R4a flip-cocycle existence, candidate source — DISSOLVED (P8-W).**
    Former keep 1 (design §10-P8D, the strictly smaller residue of §5.2's
    `sec7_edgeHalving_gammaA`), now a THEOREM: the manuscript's degree-one
    duality clause (`lem:radicaledge` step 6, `prop:chainmap` +
    `prop:defduality`-grade) is replaced by the in-tree marked-augmentation
    diamond dévissage of `EdgeTwistWitness.lean` (design §12-P8W): at `hedge`
    the deck generator falls inside the separating-dual window
    (`zeroEdge_of_separating_dual` contrapositive), `diamondAtW_all` +
    `hfaithNT_of_frame` produce a relator-row witness, and deck-valued
    shadows yield a `TwistCocycle` of `edgePairing` exactly `1`.  Guards stay
    load-bearing: at zero edge the flip provably cannot exist, so the
    unconditional statement remains FALSE — the hypotheses are not vestigial. 
  • theoremdefined in Q2Presentation/Induction/BlockRecursionKeeps.lean
    complete
    theorem Q2Presentation.Induction.sec7_edgeHalving_gammaA
      {pQ2Presentation.Induction.FramedPair : Q2Presentation.Induction.FramedPairQ2Presentation.Induction.FramedPair : Type 1A **framed pair** `(𝒴, F)`: a boundary-framed marked target together with a
    boundary frame for it (manuscript Definition 4.1 + `eq:beta`).  This is the index of
    Theorem 4.2: the boundary-framed surjection count `e_Γ^β` is a function of the pair.
    The induction of `sec:induction` ranges over *all* such pairs simultaneously
    ("the induction is stated globally", l.1213), ordered by `|L_Y|`. }
      (chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p : Q2Presentation.Induction.FirstNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor (p : Q2Presentation.Induction.FramedPair) : TypeA non-scalar chief factor of `L_Y` that is **first**: every chief factor strictly
    below it (i.e. with upper term contained in `lower`) is scalar.  This is the manuscript's
    choice `S ◁ P` at l.3616–3623 ("all chief factors below `S` are scalar and `V` is the
    first non-scalar simple factor"), which `lem:collapse` requires for the coprime step
    `[S, Ñ] = 1`.  pQ2Presentation.Induction.FramedPair)
      (KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor :
        Q2Presentation.Induction.KernelMinimalQ2Presentation.Induction.KernelMinimal {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.NonScalarChiefFactor p) : TypeThe manuscript's kernel choice (l.3623): `K ◁ Y`, `K ≤ P`, `KS = P`, and `K` is
    **⊆-minimal** with these properties — stated as: any `Y`-normal `K' ≤ K` still joining
    with `S` to `P` equals `K`.  (This, not leastness among all candidates, is what
    `lem:simplehead` and `lem:collapse` use: both apply it to subgroups of `K`.)  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p.toNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor.toNonScalarChiefFactor {p : Q2Presentation.Induction.FramedPair}
      (self : Q2Presentation.Induction.FirstNonScalarChiefFactor p) : Q2Presentation.Induction.NonScalarChiefFactor p)
      (lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) :
        Module.DualModule.Dual.{u_4, u_5} (R : Type u_4) (M : Type u_5) [Semiring R] [AddCommMonoid M] [Module R M] : Type (max u_5 u_4)The left dual space of an R-module M is the R-module of linear maps `M → R`.  (ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2)
          (Q2Presentation.Lifting.NAddQ2Presentation.Lifting.NAdd {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) : TypeThe additive `F₂`-carrier of an elementary kernel. 
            (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)))
      (hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K) :
        lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`.
          Q2Presentation.Lifting.conjInvDualsQ2Presentation.Lifting.conjInvDuals {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) :
      Submodule (ZMod 2) (Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E))The conjugation-invariant duals `X = (R^∨)^Y = (R^∨)^C` of an
    elementary kernel (consumer spelling of the manuscript's `𝒳_R`,
    §7 l.3720–3723). 
            (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor))
      (hnelam ≠ 0 : lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) Ne.{u} {α : Sort u} (a b : α) : Prop`a ≠ b`, or `Ne a b` is defined as `¬ (a = b)` or `a = b → False`,
    and asserts that `a` and `b` are not equal.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≠` in identifiers is `ne`. 0)
      (hedge¬Q2Presentation.Induction.ZeroEdge chief K lam hinv : ¬Not (a : Prop) : Prop`Not p`, or `¬p`, is the negation of `p`. It is defined to be `p → False`,
    so if your goal is `¬p` you can use `intro h` to turn the goal into
    `h : p ⊢ False`, and if you have `hn : ¬p` and `h : p` then `hn h : False`
    and `(hn h).elim` will prove anything.
    For more information: [Propositional Logic](https://lean-lang.org/theorem_proving_in_lean4/propositions_and_proofs.html#propositional-logic)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `¬` in identifiers is `not`.Q2Presentation.Induction.ZeroEdgeQ2Presentation.Induction.ZeroEdge {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) : Prop**The zero-edge predicate** (`lem:radicaledge`'s `[ε̄] = 0` branch,
    cocycle-free): some edge complement is normal in the whole cover.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) :
      Q2Presentation.Induction.EdgeHalvingGammaAQ2Presentation.Induction.EdgeHalvingGammaA {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) : Prop**The R4a per-fibre halving, candidate source** — THE sharply-scoped
    R4a residual (manuscript `lem:radicaledge` step 6, l.4006–4019: exact
    variation formula + perfect degree-one duality; candidate half =
    `prop:chainmap` l.1687 + `prop:defduality`-grade degree-one content):
    over each `g_C`, exactly half of the weak `M`-lifts are λ-liftable,
    stated division-free per fibre.  Deliberately does NOT assert the fibre
    size `2^{2·dim M}` (that is the separate, PROVEN `lem:elementarystage`
    obligation — design §6.3), and is deliberately NOT conditioned here on
    `¬ ZeroEdge` — the conditioning belongs to its (future, coordinated)
    keep `sec7_edgeHalving_gammaA (hne) (hedge) : EdgeHalvingGammaA …`,
    whose dissolution program is recorded in the design §4.6: (i) the ledger
    variation formula from U3's `edgeDefect` calculus + the weak-base defect
    engine; (ii) `edgeShadow ≠ 0` on the `T`-cocycle space by the
    trivial-chain dévissage over the PROVEN `Sec7TrivialChainData`;
    (iii) the free-orbit torsor bookkeeping.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)
    theorem Q2Presentation.Induction.sec7_edgeHalving_gammaA
      {pQ2Presentation.Induction.FramedPair :
        Q2Presentation.Induction.FramedPairQ2Presentation.Induction.FramedPair : Type 1A **framed pair** `(𝒴, F)`: a boundary-framed marked target together with a
    boundary frame for it (manuscript Definition 4.1 + `eq:beta`).  This is the index of
    Theorem 4.2: the boundary-framed surjection count `e_Γ^β` is a function of the pair.
    The induction of `sec:induction` ranges over *all* such pairs simultaneously
    ("the induction is stated globally", l.1213), ordered by `|L_Y|`. }
      (chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p :
        Q2Presentation.Induction.FirstNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor (p : Q2Presentation.Induction.FramedPair) : TypeA non-scalar chief factor of `L_Y` that is **first**: every chief factor strictly
    below it (i.e. with upper term contained in `lower`) is scalar.  This is the manuscript's
    choice `S ◁ P` at l.3616–3623 ("all chief factors below `S` are scalar and `V` is the
    first non-scalar simple factor"), which `lem:collapse` requires for the coprime step
    `[S, Ñ] = 1`. 
          pQ2Presentation.Induction.FramedPair)
      (KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor :
        Q2Presentation.Induction.KernelMinimalQ2Presentation.Induction.KernelMinimal {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.NonScalarChiefFactor p) : TypeThe manuscript's kernel choice (l.3623): `K ◁ Y`, `K ≤ P`, `KS = P`, and `K` is
    **⊆-minimal** with these properties — stated as: any `Y`-normal `K' ≤ K` still joining
    with `S` to `P` equals `K`.  (This, not leastness among all candidates, is what
    `lem:simplehead` and `lem:collapse` use: both apply it to subgroups of `K`.) 
          chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p.toNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor.toNonScalarChiefFactor {p : Q2Presentation.Induction.FramedPair}
      (self : Q2Presentation.Induction.FirstNonScalarChiefFactor p) : Q2Presentation.Induction.NonScalarChiefFactor p)
      (lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) :
        Module.DualModule.Dual.{u_4, u_5} (R : Type u_4) (M : Type u_5) [Semiring R] [AddCommMonoid M] [Module R M] : Type (max u_5 u_4)The left dual space of an R-module M is the R-module of linear maps `M → R`.  (ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2)
          (Q2Presentation.Lifting.NAddQ2Presentation.Lifting.NAdd {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) : TypeThe additive `F₂`-carrier of an elementary kernel. 
            (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian. 
              chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)))
      (hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K) :
        lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`.
          Q2Presentation.Lifting.conjInvDualsQ2Presentation.Lifting.conjInvDuals {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) :
      Submodule (ZMod 2) (Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E))The conjugation-invariant duals `X = (R^∨)^Y = (R^∨)^C` of an
    elementary kernel (consumer spelling of the manuscript's `𝒳_R`,
    §7 l.3720–3723). 
            (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian. 
              chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor))
      (hnelam ≠ 0 : lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) Ne.{u} {α : Sort u} (a b : α) : Prop`a ≠ b`, or `Ne a b` is defined as `¬ (a = b)` or `a = b → False`,
    and asserts that `a` and `b` are not equal.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≠` in identifiers is `ne`. 0)
      (hedge¬Q2Presentation.Induction.ZeroEdge chief K lam hinv :
        ¬Not (a : Prop) : Prop`Not p`, or `¬p`, is the negation of `p`. It is defined to be `p → False`,
    so if your goal is `¬p` you can use `intro h` to turn the goal into
    `h : p ⊢ False`, and if you have `hn : ¬p` and `h : p` then `hn h : False`
    and `(hn h).elim` will prove anything.
    For more information: [Propositional Logic](https://lean-lang.org/theorem_proving_in_lean4/propositions_and_proofs.html#propositional-logic)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `¬` in identifiers is `not`.Q2Presentation.Induction.ZeroEdgeQ2Presentation.Induction.ZeroEdge {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) : Prop**The zero-edge predicate** (`lem:radicaledge`'s `[ε̄] = 0` branch,
    cocycle-free): some edge complement is normal in the whole cover. 
            chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) :
      Q2Presentation.Induction.EdgeHalvingGammaAQ2Presentation.Induction.EdgeHalvingGammaA {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) : Prop**The R4a per-fibre halving, candidate source** — THE sharply-scoped
    R4a residual (manuscript `lem:radicaledge` step 6, l.4006–4019: exact
    variation formula + perfect degree-one duality; candidate half =
    `prop:chainmap` l.1687 + `prop:defduality`-grade degree-one content):
    over each `g_C`, exactly half of the weak `M`-lifts are λ-liftable,
    stated division-free per fibre.  Deliberately does NOT assert the fibre
    size `2^{2·dim M}` (that is the separate, PROVEN `lem:elementarystage`
    obligation — design §6.3), and is deliberately NOT conditioned here on
    `¬ ZeroEdge` — the conditioning belongs to its (future, coordinated)
    keep `sec7_edgeHalving_gammaA (hne) (hedge) : EdgeHalvingGammaA …`,
    whose dissolution program is recorded in the design §4.6: (i) the ledger
    variation formula from U3's `edgeDefect` calculus + the weak-base defect
    engine; (ii) `edgeShadow ≠ 0` on the `T`-cocycle space by the
    trivial-chain dévissage over the PROVEN `Sec7TrivialChainData`;
    (iii) the free-orbit torsor bookkeeping. 
        chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)
    **The R4a per-fibre halving, candidate source — now a THEOREM** in the
    design §5.2 statement (same name/statement as the pre-P8-D keep shape, zero
    downstream rewiring): recovered from keep 1 through the PROVEN flip
    involution `edgeHalvingGammaA_of_twistFlip` (`lem:radicaledge` steps 1–6
    minus the duality clause, in-tree). 
  • defdefined in Q2Presentation/Induction/EdgeHalvingTwist.lean
    complete
    def Q2Presentation.Induction.tCoverKernel
      {pQ2Presentation.Induction.FramedPair : Q2Presentation.Induction.FramedPairQ2Presentation.Induction.FramedPair : Type 1A **framed pair** `(𝒴, F)`: a boundary-framed marked target together with a
    boundary frame for it (manuscript Definition 4.1 + `eq:beta`).  This is the index of
    Theorem 4.2: the boundary-framed surjection count `e_Γ^β` is a function of the pair.
    The induction of `sec:induction` ranges over *all* such pairs simultaneously
    ("the induction is stated globally", l.1213), ordered by `|L_Y|`. }
      (chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p : Q2Presentation.Induction.FirstNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor (p : Q2Presentation.Induction.FramedPair) : TypeA non-scalar chief factor of `L_Y` that is **first**: every chief factor strictly
    below it (i.e. with upper term contained in `lower`) is scalar.  This is the manuscript's
    choice `S ◁ P` at l.3616–3623 ("all chief factors below `S` are scalar and `V` is the
    first non-scalar simple factor"), which `lem:collapse` requires for the coprime step
    `[S, Ñ] = 1`.  pQ2Presentation.Induction.FramedPair)
      (KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor :
        Q2Presentation.Induction.KernelMinimalQ2Presentation.Induction.KernelMinimal {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.NonScalarChiefFactor p) : TypeThe manuscript's kernel choice (l.3623): `K ◁ Y`, `K ≤ P`, `KS = P`, and `K` is
    **⊆-minimal** with these properties — stated as: any `Y`-normal `K' ≤ K` still joining
    with `S` to `P` equals `K`.  (This, not leastness among all candidates, is what
    `lem:simplehead` and `lem:collapse` use: both apply it to subgroups of `K`.)  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p.toNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor.toNonScalarChiefFactor {p : Q2Presentation.Induction.FramedPair}
      (self : Q2Presentation.Induction.FirstNonScalarChiefFactor p) : Q2Presentation.Induction.NonScalarChiefFactor p)
      (lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) :
        Module.DualModule.Dual.{u_4, u_5} (R : Type u_4) (M : Type u_5) [Semiring R] [AddCommMonoid M] [Module R M] : Type (max u_5 u_4)The left dual space of an R-module M is the R-module of linear maps `M → R`.  (ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2)
          (Q2Presentation.Lifting.NAddQ2Presentation.Lifting.NAdd {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) : TypeThe additive `F₂`-carrier of an elementary kernel. 
            (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)))
      (hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K) :
        lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`.
          Q2Presentation.Lifting.conjInvDualsQ2Presentation.Lifting.conjInvDuals {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) :
      Submodule (ZMod 2) (Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E))The conjugation-invariant duals `X = (R^∨)^Y = (R^∨)^C` of an
    elementary kernel (consumer spelling of the manuscript's `𝒳_R`,
    §7 l.3720–3723). 
            (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor))
      (hnelam ≠ 0 : lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) Ne.{u} {α : Sort u} (a b : α) : Prop`a ≠ b`, or `Ne a b` is defined as `¬ (a = b)` or `a = b → False`,
    and asserts that `a` and `b` are not equal.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≠` in identifiers is `ne`. 0) :
      Q2Presentation.Lifting.ElementaryKernelQ2Presentation.Lifting.ElementaryKernel (Yt : Q2Presentation.BoundaryFramedTarget) : TypeA normal subgroup of a framed target that is killed by the decoration,
    contained in the wild kernel, **abelian**, and of **exponent 2** — the shape
    of the chief kernels the cochain keeps quantify over. 
        (Q2Presentation.Lifting.scalarCoverTargetQ2Presentation.Lifting.scalarCoverTarget {Yt : Q2Presentation.BoundaryFramedTarget} [Finite Yt.Y]
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals E) : Q2Presentation.BoundaryFramedTarget**The scalar pushout target** `B_λ = Y/ker λ` as a framed target
    (same `H`, `E`, frame; `eq:targettower` refined by l.4219–4223). 
          (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K))
    def Q2Presentation.Induction.tCoverKernel
      {pQ2Presentation.Induction.FramedPair :
        Q2Presentation.Induction.FramedPairQ2Presentation.Induction.FramedPair : Type 1A **framed pair** `(𝒴, F)`: a boundary-framed marked target together with a
    boundary frame for it (manuscript Definition 4.1 + `eq:beta`).  This is the index of
    Theorem 4.2: the boundary-framed surjection count `e_Γ^β` is a function of the pair.
    The induction of `sec:induction` ranges over *all* such pairs simultaneously
    ("the induction is stated globally", l.1213), ordered by `|L_Y|`. }
      (chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p :
        Q2Presentation.Induction.FirstNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor (p : Q2Presentation.Induction.FramedPair) : TypeA non-scalar chief factor of `L_Y` that is **first**: every chief factor strictly
    below it (i.e. with upper term contained in `lower`) is scalar.  This is the manuscript's
    choice `S ◁ P` at l.3616–3623 ("all chief factors below `S` are scalar and `V` is the
    first non-scalar simple factor"), which `lem:collapse` requires for the coprime step
    `[S, Ñ] = 1`. 
          pQ2Presentation.Induction.FramedPair)
      (KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor :
        Q2Presentation.Induction.KernelMinimalQ2Presentation.Induction.KernelMinimal {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.NonScalarChiefFactor p) : TypeThe manuscript's kernel choice (l.3623): `K ◁ Y`, `K ≤ P`, `KS = P`, and `K` is
    **⊆-minimal** with these properties — stated as: any `Y`-normal `K' ≤ K` still joining
    with `S` to `P` equals `K`.  (This, not leastness among all candidates, is what
    `lem:simplehead` and `lem:collapse` use: both apply it to subgroups of `K`.) 
          chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p.toNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor.toNonScalarChiefFactor {p : Q2Presentation.Induction.FramedPair}
      (self : Q2Presentation.Induction.FirstNonScalarChiefFactor p) : Q2Presentation.Induction.NonScalarChiefFactor p)
      (lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) :
        Module.DualModule.Dual.{u_4, u_5} (R : Type u_4) (M : Type u_5) [Semiring R] [AddCommMonoid M] [Module R M] : Type (max u_5 u_4)The left dual space of an R-module M is the R-module of linear maps `M → R`.  (ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2)
          (Q2Presentation.Lifting.NAddQ2Presentation.Lifting.NAdd {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) : TypeThe additive `F₂`-carrier of an elementary kernel. 
            (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian. 
              chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)))
      (hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K) :
        lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`.
          Q2Presentation.Lifting.conjInvDualsQ2Presentation.Lifting.conjInvDuals {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) :
      Submodule (ZMod 2) (Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E))The conjugation-invariant duals `X = (R^∨)^Y = (R^∨)^C` of an
    elementary kernel (consumer spelling of the manuscript's `𝒳_R`,
    §7 l.3720–3723). 
            (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian. 
              chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor))
      (hnelam ≠ 0 : lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) Ne.{u} {α : Sort u} (a b : α) : Prop`a ≠ b`, or `Ne a b` is defined as `¬ (a = b)` or `a = b → False`,
    and asserts that `a` and `b` are not equal.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≠` in identifiers is `ne`. 0) :
      Q2Presentation.Lifting.ElementaryKernelQ2Presentation.Lifting.ElementaryKernel (Yt : Q2Presentation.BoundaryFramedTarget) : TypeA normal subgroup of a framed target that is killed by the decoration,
    contained in the wild kernel, **abelian**, and of **exponent 2** — the shape
    of the chief kernels the cochain keeps quantify over. 
        (Q2Presentation.Lifting.scalarCoverTargetQ2Presentation.Lifting.scalarCoverTarget {Yt : Q2Presentation.BoundaryFramedTarget} [Finite Yt.Y]
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals E) : Q2Presentation.BoundaryFramedTarget**The scalar pushout target** `B_λ = Y/ker λ` as a framed target
    (same `H`, `E`, frame; `eq:targettower` refined by l.4219–4223). 
          (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian. 
            chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
          lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K))
    **`T̃ ≤ B_λ` as an elementary kernel** (`lem:radicaledge` step 1 packaged):
    normal, wild, θ-dead, abelian of exponent 2 — the carrier of the twist
    calculus at the cover. 
  • theoremdefined in Q2Presentation/Induction/EdgeHalvingTwist.lean
    complete
    theorem Q2Presentation.Induction.coverLiftableWeak_iff_obRead_zero
      {pQ2Presentation.Induction.FramedPair : Q2Presentation.Induction.FramedPairQ2Presentation.Induction.FramedPair : Type 1A **framed pair** `(𝒴, F)`: a boundary-framed marked target together with a
    boundary frame for it (manuscript Definition 4.1 + `eq:beta`).  This is the index of
    Theorem 4.2: the boundary-framed surjection count `e_Γ^β` is a function of the pair.
    The induction of `sec:induction` ranges over *all* such pairs simultaneously
    ("the induction is stated globally", l.1213), ordered by `|L_Y|`. }
      (chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p : Q2Presentation.Induction.FirstNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor (p : Q2Presentation.Induction.FramedPair) : TypeA non-scalar chief factor of `L_Y` that is **first**: every chief factor strictly
    below it (i.e. with upper term contained in `lower`) is scalar.  This is the manuscript's
    choice `S ◁ P` at l.3616–3623 ("all chief factors below `S` are scalar and `V` is the
    first non-scalar simple factor"), which `lem:collapse` requires for the coprime step
    `[S, Ñ] = 1`.  pQ2Presentation.Induction.FramedPair)
      (KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor :
        Q2Presentation.Induction.KernelMinimalQ2Presentation.Induction.KernelMinimal {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.NonScalarChiefFactor p) : TypeThe manuscript's kernel choice (l.3623): `K ◁ Y`, `K ≤ P`, `KS = P`, and `K` is
    **⊆-minimal** with these properties — stated as: any `Y`-normal `K' ≤ K` still joining
    with `S` to `P` equals `K`.  (This, not leastness among all candidates, is what
    `lem:simplehead` and `lem:collapse` use: both apply it to subgroups of `K`.)  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p.toNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor.toNonScalarChiefFactor {p : Q2Presentation.Induction.FramedPair}
      (self : Q2Presentation.Induction.FirstNonScalarChiefFactor p) : Q2Presentation.Induction.NonScalarChiefFactor p)
      (lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) :
        Module.DualModule.Dual.{u_4, u_5} (R : Type u_4) (M : Type u_5) [Semiring R] [AddCommMonoid M] [Module R M] : Type (max u_5 u_4)The left dual space of an R-module M is the R-module of linear maps `M → R`.  (ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2)
          (Q2Presentation.Lifting.NAddQ2Presentation.Lifting.NAdd {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) : TypeThe additive `F₂`-carrier of an elementary kernel. 
            (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)))
      (hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K) :
        lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`.
          Q2Presentation.Lifting.conjInvDualsQ2Presentation.Lifting.conjInvDuals {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) :
      Submodule (ZMod 2) (Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E))The conjugation-invariant duals `X = (R^∨)^Y = (R^∨)^C` of an
    elementary kernel (consumer spelling of the manuscript's `𝒳_R`,
    §7 l.3720–3723). 
            (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor))
      (hnelam ≠ 0 : lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) Ne.{u} {α : Sort u} (a b : α) : Prop`a ≠ b`, or `Ne a b` is defined as `¬ (a = b)` or `a = b → False`,
    and asserts that `a` and `b` are not equal.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≠` in identifiers is `ne`. 0)
      (fQ2Presentation.TorsorProgram.coverLiftTotal (Q2Presentation.Induction.XRZero.xrChild chief K).fst
      (Q2Presentation.Induction.mChildKernel chief K).N Q2Presentation.boundaryPackage_GammaA
      (Q2Presentation.Induction.XRZero.xrChild chief K).snd :
        Q2Presentation.TorsorProgram.coverLiftTotalQ2Presentation.TorsorProgram.coverLiftTotal (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y)
      [hNn : N.Normal] {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (F : Q2Presentation.BoundaryFrame Yt) :
      Type**The cover-lift total space**: framed continuous homs into the AMBIENT
    target whose projection to the child is onto (`lem:covertransform`: all lifts
    of all unobstructed exact-image maps at once; surjectivity onto the ambient
    target NOT imposed — these are the weak lifts). 
          (Q2Presentation.Induction.XRZero.xrChildQ2Presentation.Induction.XRZero.xrChild {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPairThe `𝒳_R = 0` child: the quotient framed pair at `N = Φ`-layer.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.
    
          (Q2Presentation.Induction.mChildKernelQ2Presentation.Induction.mChildKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel (Q2Presentation.Induction.XRZero.xrChild chief K).fst**The elementary `M`-kernel at the child** `B = Y/Φ(K)`
    (`lem:simplehead` carrier for `lem:elementarystage`): `N = M' = K/Φ(K)`.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).NQ2Presentation.Lifting.ElementaryKernel.N {Yt : Q2Presentation.BoundaryFramedTarget}
      (self : Q2Presentation.Lifting.ElementaryKernel Yt) : Subgroup Yt.Y
          Q2Presentation.boundaryPackage_GammaAQ2Presentation.boundaryPackage_GammaA : Q2Presentation.BoundaryPackage Q2Presentation.GammaA**The candidate boundary package** (manuscript Prop 3.14, `prop:compatiblemarking`;
    plan Turn 4 §6).  The Stage-C data of `Γ_A`: the common tame quotient `gammaTameMap`,
    the maximal pro-`2` quotient `p : Γ_A ⟶ Π`, and the common unramified character
    `ν = gammaTameMap ≫ ν_t`, through which both factor. 
          (Q2Presentation.Induction.XRZero.xrChildQ2Presentation.Induction.XRZero.xrChild {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPairThe `𝒳_R = 0` child: the quotient framed pair at `N = Φ`-layer.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.
    )
      (qQ2Presentation.Marking (Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y :
        Q2Presentation.MarkingQ2Presentation.Marking.{u_1} (G : Type u_1) [Group G] : Type u_1A marking assigns a group element to each of the four generators. 
          (Q2Presentation.Lifting.scalarCoverTargetQ2Presentation.Lifting.scalarCoverTarget {Yt : Q2Presentation.BoundaryFramedTarget} [Finite Yt.Y]
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals E) : Q2Presentation.BoundaryFramedTarget**The scalar pushout target** `B_λ = Y/ker λ` as a framed target
    (same `H`, `E`, frame; `eq:targettower` refined by l.4219–4223). 
              (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)).YQ2Presentation.BoundaryFramedTarget.Y (self : Q2Presentation.BoundaryFramedTarget) : TypeThe finite target group `Y`. )
      (hqQ2Presentation.Induction.CoverMarking chief K lam hinv f q : Q2Presentation.Induction.CoverMarkingQ2Presentation.Induction.CoverMarking {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K))
      (f :
        Q2Presentation.TorsorProgram.coverLiftTotal (Q2Presentation.Induction.XRZero.xrChild chief K).fst
          (Q2Presentation.Induction.mChildKernel chief K).N Q2Presentation.boundaryPackage_GammaA
          (Q2Presentation.Induction.XRZero.xrChild chief K).snd)
      (q :
        Q2Presentation.Marking
          (Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y) :
      Prop**A cover marking over a weak `M`-lift**: generator values in `B_λ`
    projecting to the lift's marking, framed by the parent frame.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K) fQ2Presentation.TorsorProgram.coverLiftTotal (Q2Presentation.Induction.XRZero.xrChild chief K).fst
      (Q2Presentation.Induction.mChildKernel chief K).N Q2Presentation.boundaryPackage_GammaA
      (Q2Presentation.Induction.XRZero.xrChild chief K).snd qQ2Presentation.Marking (Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y) :
      Q2Presentation.Induction.coverLiftableWeakQ2Presentation.Induction.coverLiftableWeak {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) {Γ : ProfiniteGrp.{0}}
      (B : Q2Presentation.BoundaryPackage Γ)
      (f :
        Q2Presentation.TorsorProgram.coverLiftTotal (Q2Presentation.Induction.XRZero.xrChild chief K).fst
          (Q2Presentation.Induction.mChildKernel chief K).N B (Q2Presentation.Induction.XRZero.xrChild chief K).snd) :
      Prop**λ-liftability of a weak `M`-lift** (`lem:properimagesubtraction`
    l.4269–4271): a point of the W2a total space at the child M-kernel is
    λ-liftable when some framed hom into `B_λ` projects to it along
    `p_λ = scalarCoverProj` — surjectivity onto `B_λ` NOT imposed (weak
    solvability; images are stratified by `eq:recursionR2`/`R3`).  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)
          Q2Presentation.boundaryPackage_GammaAQ2Presentation.boundaryPackage_GammaA : Q2Presentation.BoundaryPackage Q2Presentation.GammaA**The candidate boundary package** (manuscript Prop 3.14, `prop:compatiblemarking`;
    plan Turn 4 §6).  The Stage-C data of `Γ_A`: the common tame quotient `gammaTameMap`,
    the maximal pro-`2` quotient `p : Γ_A ⟶ Π`, and the common unramified character
    `ν = gammaTameMap ≫ ν_t`, through which both factor.  fQ2Presentation.TorsorProgram.coverLiftTotal (Q2Presentation.Induction.XRZero.xrChild chief K).fst
      (Q2Presentation.Induction.mChildKernel chief K).N Q2Presentation.boundaryPackage_GammaA
      (Q2Presentation.Induction.XRZero.xrChild chief K).snd Iff (a b : Prop) : PropIf and only if, or logical bi-implication. `a ↔ b` means that `a` implies `b` and vice versa.
    By `propext`, this implies that `a` and `b` are equal and hence any expression involving `a`
    is equivalent to the corresponding expression with `b` instead.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `↔` in identifiers is `iff`.
    
     * The recommended spelling of `<->` in identifiers is `iff` (prefer `↔` over `<->`).
        Q2Presentation.Induction.obReadQ2Presentation.Induction.obRead {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K))
      (q :
        Q2Presentation.Marking
          (Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y) :
      ZMod 2**The obstruction bit of a cover marking**: the `relRead`-sum of the two
    relator defects (`eq:edgevariationobstruction`'s `ob`, in-tree form).  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K) qQ2Presentation.Marking (Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`. 0
    theorem Q2Presentation.Induction.coverLiftableWeak_iff_obRead_zero
      {pQ2Presentation.Induction.FramedPair :
        Q2Presentation.Induction.FramedPairQ2Presentation.Induction.FramedPair : Type 1A **framed pair** `(𝒴, F)`: a boundary-framed marked target together with a
    boundary frame for it (manuscript Definition 4.1 + `eq:beta`).  This is the index of
    Theorem 4.2: the boundary-framed surjection count `e_Γ^β` is a function of the pair.
    The induction of `sec:induction` ranges over *all* such pairs simultaneously
    ("the induction is stated globally", l.1213), ordered by `|L_Y|`. }
      (chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p :
        Q2Presentation.Induction.FirstNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor (p : Q2Presentation.Induction.FramedPair) : TypeA non-scalar chief factor of `L_Y` that is **first**: every chief factor strictly
    below it (i.e. with upper term contained in `lower`) is scalar.  This is the manuscript's
    choice `S ◁ P` at l.3616–3623 ("all chief factors below `S` are scalar and `V` is the
    first non-scalar simple factor"), which `lem:collapse` requires for the coprime step
    `[S, Ñ] = 1`. 
          pQ2Presentation.Induction.FramedPair)
      (KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor :
        Q2Presentation.Induction.KernelMinimalQ2Presentation.Induction.KernelMinimal {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.NonScalarChiefFactor p) : TypeThe manuscript's kernel choice (l.3623): `K ◁ Y`, `K ≤ P`, `KS = P`, and `K` is
    **⊆-minimal** with these properties — stated as: any `Y`-normal `K' ≤ K` still joining
    with `S` to `P` equals `K`.  (This, not leastness among all candidates, is what
    `lem:simplehead` and `lem:collapse` use: both apply it to subgroups of `K`.) 
          chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p.toNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor.toNonScalarChiefFactor {p : Q2Presentation.Induction.FramedPair}
      (self : Q2Presentation.Induction.FirstNonScalarChiefFactor p) : Q2Presentation.Induction.NonScalarChiefFactor p)
      (lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) :
        Module.DualModule.Dual.{u_4, u_5} (R : Type u_4) (M : Type u_5) [Semiring R] [AddCommMonoid M] [Module R M] : Type (max u_5 u_4)The left dual space of an R-module M is the R-module of linear maps `M → R`.  (ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2)
          (Q2Presentation.Lifting.NAddQ2Presentation.Lifting.NAdd {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) : TypeThe additive `F₂`-carrier of an elementary kernel. 
            (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian. 
              chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)))
      (hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K) :
        lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`.
          Q2Presentation.Lifting.conjInvDualsQ2Presentation.Lifting.conjInvDuals {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) :
      Submodule (ZMod 2) (Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E))The conjugation-invariant duals `X = (R^∨)^Y = (R^∨)^C` of an
    elementary kernel (consumer spelling of the manuscript's `𝒳_R`,
    §7 l.3720–3723). 
            (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian. 
              chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor))
      (hnelam ≠ 0 : lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) Ne.{u} {α : Sort u} (a b : α) : Prop`a ≠ b`, or `Ne a b` is defined as `¬ (a = b)` or `a = b → False`,
    and asserts that `a` and `b` are not equal.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≠` in identifiers is `ne`. 0)
      (fQ2Presentation.TorsorProgram.coverLiftTotal (Q2Presentation.Induction.XRZero.xrChild chief K).fst
      (Q2Presentation.Induction.mChildKernel chief K).N Q2Presentation.boundaryPackage_GammaA
      (Q2Presentation.Induction.XRZero.xrChild chief K).snd :
        Q2Presentation.TorsorProgram.coverLiftTotalQ2Presentation.TorsorProgram.coverLiftTotal (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y)
      [hNn : N.Normal] {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (F : Q2Presentation.BoundaryFrame Yt) :
      Type**The cover-lift total space**: framed continuous homs into the AMBIENT
    target whose projection to the child is onto (`lem:covertransform`: all lifts
    of all unobstructed exact-image maps at once; surjectivity onto the ambient
    target NOT imposed — these are the weak lifts). 
          (Q2Presentation.Induction.XRZero.xrChildQ2Presentation.Induction.XRZero.xrChild {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPairThe `𝒳_R = 0` child: the quotient framed pair at `N = Φ`-layer. 
              chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.
    
          (Q2Presentation.Induction.mChildKernelQ2Presentation.Induction.mChildKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel (Q2Presentation.Induction.XRZero.xrChild chief K).fst**The elementary `M`-kernel at the child** `B = Y/Φ(K)`
    (`lem:simplehead` carrier for `lem:elementarystage`): `N = M' = K/Φ(K)`. 
              chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).NQ2Presentation.Lifting.ElementaryKernel.N {Yt : Q2Presentation.BoundaryFramedTarget}
      (self : Q2Presentation.Lifting.ElementaryKernel Yt) : Subgroup Yt.Y
          Q2Presentation.boundaryPackage_GammaAQ2Presentation.boundaryPackage_GammaA : Q2Presentation.BoundaryPackage Q2Presentation.GammaA**The candidate boundary package** (manuscript Prop 3.14, `prop:compatiblemarking`;
    plan Turn 4 §6).  The Stage-C data of `Γ_A`: the common tame quotient `gammaTameMap`,
    the maximal pro-`2` quotient `p : Γ_A ⟶ Π`, and the common unramified character
    `ν = gammaTameMap ≫ ν_t`, through which both factor. 
          (Q2Presentation.Induction.XRZero.xrChildQ2Presentation.Induction.XRZero.xrChild {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPairThe `𝒳_R = 0` child: the quotient framed pair at `N = Φ`-layer. 
              chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.
    )
      (qQ2Presentation.Marking (Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y :
        Q2Presentation.MarkingQ2Presentation.Marking.{u_1} (G : Type u_1) [Group G] : Type u_1A marking assigns a group element to each of the four generators. 
          (Q2Presentation.Lifting.scalarCoverTargetQ2Presentation.Lifting.scalarCoverTarget {Yt : Q2Presentation.BoundaryFramedTarget} [Finite Yt.Y]
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals E) : Q2Presentation.BoundaryFramedTarget**The scalar pushout target** `B_λ = Y/ker λ` as a framed target
    (same `H`, `E`, frame; `eq:targettower` refined by l.4219–4223). 
              (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian. 
                chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
              lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)).YQ2Presentation.BoundaryFramedTarget.Y (self : Q2Presentation.BoundaryFramedTarget) : TypeThe finite target group `Y`. )
      (hqQ2Presentation.Induction.CoverMarking chief K lam hinv f q :
        Q2Presentation.Induction.CoverMarkingQ2Presentation.Induction.CoverMarking {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K))
      (f :
        Q2Presentation.TorsorProgram.coverLiftTotal (Q2Presentation.Induction.XRZero.xrChild chief K).fst
          (Q2Presentation.Induction.mChildKernel chief K).N Q2Presentation.boundaryPackage_GammaA
          (Q2Presentation.Induction.XRZero.xrChild chief K).snd)
      (q :
        Q2Presentation.Marking
          (Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y) :
      Prop**A cover marking over a weak `M`-lift**: generator values in `B_λ`
    projecting to the lift's marking, framed by the parent frame. 
          chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K) fQ2Presentation.TorsorProgram.coverLiftTotal (Q2Presentation.Induction.XRZero.xrChild chief K).fst
      (Q2Presentation.Induction.mChildKernel chief K).N Q2Presentation.boundaryPackage_GammaA
      (Q2Presentation.Induction.XRZero.xrChild chief K).snd qQ2Presentation.Marking (Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y) :
      Q2Presentation.Induction.coverLiftableWeakQ2Presentation.Induction.coverLiftableWeak {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) {Γ : ProfiniteGrp.{0}}
      (B : Q2Presentation.BoundaryPackage Γ)
      (f :
        Q2Presentation.TorsorProgram.coverLiftTotal (Q2Presentation.Induction.XRZero.xrChild chief K).fst
          (Q2Presentation.Induction.mChildKernel chief K).N B (Q2Presentation.Induction.XRZero.xrChild chief K).snd) :
      Prop**λ-liftability of a weak `M`-lift** (`lem:properimagesubtraction`
    l.4269–4271): a point of the W2a total space at the child M-kernel is
    λ-liftable when some framed hom into `B_λ` projects to it along
    `p_λ = scalarCoverProj` — surjectivity onto `B_λ` NOT imposed (weak
    solvability; images are stratified by `eq:recursionR2`/`R3`). 
          chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)
          Q2Presentation.boundaryPackage_GammaAQ2Presentation.boundaryPackage_GammaA : Q2Presentation.BoundaryPackage Q2Presentation.GammaA**The candidate boundary package** (manuscript Prop 3.14, `prop:compatiblemarking`;
    plan Turn 4 §6).  The Stage-C data of `Γ_A`: the common tame quotient `gammaTameMap`,
    the maximal pro-`2` quotient `p : Γ_A ⟶ Π`, and the common unramified character
    `ν = gammaTameMap ≫ ν_t`, through which both factor. 
          fQ2Presentation.TorsorProgram.coverLiftTotal (Q2Presentation.Induction.XRZero.xrChild chief K).fst
      (Q2Presentation.Induction.mChildKernel chief K).N Q2Presentation.boundaryPackage_GammaA
      (Q2Presentation.Induction.XRZero.xrChild chief K).snd Iff (a b : Prop) : PropIf and only if, or logical bi-implication. `a ↔ b` means that `a` implies `b` and vice versa.
    By `propext`, this implies that `a` and `b` are equal and hence any expression involving `a`
    is equivalent to the corresponding expression with `b` instead.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `↔` in identifiers is `iff`.
    
     * The recommended spelling of `<->` in identifiers is `iff` (prefer `↔` over `<->`).
        Q2Presentation.Induction.obReadQ2Presentation.Induction.obRead {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K))
      (q :
        Q2Presentation.Marking
          (Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y) :
      ZMod 2**The obstruction bit of a cover marking**: the `relRead`-sum of the two
    relator defects (`eq:edgevariationobstruction`'s `ob`, in-tree form).  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p
            KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K) qQ2Presentation.Marking (Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`.
          0
    **The marking-level liftability criterion** (`lem:radicaledge`'s
    `ob(f) = 0 ⟺` liftable, in-tree): a weak `M`-lift is λ-liftable iff the
    obstruction bit of any cover marking over it vanishes. 
  • theoremdefined in Q2Presentation/Induction/EdgeHalvingTwist.lean
    complete
    theorem Q2Presentation.Induction.edgePairing_eq_of_fibre
      {pQ2Presentation.Induction.FramedPair : Q2Presentation.Induction.FramedPairQ2Presentation.Induction.FramedPair : Type 1A **framed pair** `(𝒴, F)`: a boundary-framed marked target together with a
    boundary frame for it (manuscript Definition 4.1 + `eq:beta`).  This is the index of
    Theorem 4.2: the boundary-framed surjection count `e_Γ^β` is a function of the pair.
    The induction of `sec:induction` ranges over *all* such pairs simultaneously
    ("the induction is stated globally", l.1213), ordered by `|L_Y|`. }
      (chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p : Q2Presentation.Induction.FirstNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor (p : Q2Presentation.Induction.FramedPair) : TypeA non-scalar chief factor of `L_Y` that is **first**: every chief factor strictly
    below it (i.e. with upper term contained in `lower`) is scalar.  This is the manuscript's
    choice `S ◁ P` at l.3616–3623 ("all chief factors below `S` are scalar and `V` is the
    first non-scalar simple factor"), which `lem:collapse` requires for the coprime step
    `[S, Ñ] = 1`.  pQ2Presentation.Induction.FramedPair)
      (KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor :
        Q2Presentation.Induction.KernelMinimalQ2Presentation.Induction.KernelMinimal {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.NonScalarChiefFactor p) : TypeThe manuscript's kernel choice (l.3623): `K ◁ Y`, `K ≤ P`, `KS = P`, and `K` is
    **⊆-minimal** with these properties — stated as: any `Y`-normal `K' ≤ K` still joining
    with `S` to `P` equals `K`.  (This, not leastness among all candidates, is what
    `lem:simplehead` and `lem:collapse` use: both apply it to subgroups of `K`.)  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p.toNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor.toNonScalarChiefFactor {p : Q2Presentation.Induction.FramedPair}
      (self : Q2Presentation.Induction.FirstNonScalarChiefFactor p) : Q2Presentation.Induction.NonScalarChiefFactor p)
      (lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) :
        Module.DualModule.Dual.{u_4, u_5} (R : Type u_4) (M : Type u_5) [Semiring R] [AddCommMonoid M] [Module R M] : Type (max u_5 u_4)The left dual space of an R-module M is the R-module of linear maps `M → R`.  (ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2)
          (Q2Presentation.Lifting.NAddQ2Presentation.Lifting.NAdd {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) : TypeThe additive `F₂`-carrier of an elementary kernel. 
            (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)))
      (hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K) :
        lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`.
          Q2Presentation.Lifting.conjInvDualsQ2Presentation.Lifting.conjInvDuals {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) :
      Submodule (ZMod 2) (Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E))The conjugation-invariant duals `X = (R^∨)^Y = (R^∨)^C` of an
    elementary kernel (consumer spelling of the manuscript's `𝒳_R`,
    §7 l.3720–3723). 
            (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor))
      (hnelam ≠ 0 : lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) Ne.{u} {α : Sort u} (a b : α) : Prop`a ≠ b`, or `Ne a b` is defined as `¬ (a = b)` or `a = b → False`,
    and asserts that `a` and `b` are not equal.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≠` in identifiers is `ne`. 0)
      (fQ2Presentation.TorsorProgram.coverLiftTotal (Q2Presentation.Induction.XRZero.xrChild chief K).fst
      (Q2Presentation.Induction.mChildKernel chief K).N Q2Presentation.boundaryPackage_GammaA
      (Q2Presentation.Induction.XRZero.xrChild chief K).snd f'Q2Presentation.TorsorProgram.coverLiftTotal (Q2Presentation.Induction.XRZero.xrChild chief K).fst
      (Q2Presentation.Induction.mChildKernel chief K).N Q2Presentation.boundaryPackage_GammaA
      (Q2Presentation.Induction.XRZero.xrChild chief K).snd :
        Q2Presentation.TorsorProgram.coverLiftTotalQ2Presentation.TorsorProgram.coverLiftTotal (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y)
      [hNn : N.Normal] {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (F : Q2Presentation.BoundaryFrame Yt) :
      Type**The cover-lift total space**: framed continuous homs into the AMBIENT
    target whose projection to the child is onto (`lem:covertransform`: all lifts
    of all unobstructed exact-image maps at once; surjectivity onto the ambient
    target NOT imposed — these are the weak lifts). 
          (Q2Presentation.Induction.XRZero.xrChildQ2Presentation.Induction.XRZero.xrChild {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPairThe `𝒳_R = 0` child: the quotient framed pair at `N = Φ`-layer.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.
    
          (Q2Presentation.Induction.mChildKernelQ2Presentation.Induction.mChildKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel (Q2Presentation.Induction.XRZero.xrChild chief K).fst**The elementary `M`-kernel at the child** `B = Y/Φ(K)`
    (`lem:simplehead` carrier for `lem:elementarystage`): `N = M' = K/Φ(K)`.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).NQ2Presentation.Lifting.ElementaryKernel.N {Yt : Q2Presentation.BoundaryFramedTarget}
      (self : Q2Presentation.Lifting.ElementaryKernel Yt) : Subgroup Yt.Y
          Q2Presentation.boundaryPackage_GammaAQ2Presentation.boundaryPackage_GammaA : Q2Presentation.BoundaryPackage Q2Presentation.GammaA**The candidate boundary package** (manuscript Prop 3.14, `prop:compatiblemarking`;
    plan Turn 4 §6).  The Stage-C data of `Γ_A`: the common tame quotient `gammaTameMap`,
    the maximal pro-`2` quotient `p : Γ_A ⟶ Π`, and the common unramified character
    `ν = gammaTameMap ≫ ν_t`, through which both factor. 
          (Q2Presentation.Induction.XRZero.xrChildQ2Presentation.Induction.XRZero.xrChild {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPairThe `𝒳_R = 0` child: the quotient framed pair at `N = Φ`-layer.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.
    )
      (qQ2Presentation.Marking (Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y q'Q2Presentation.Marking (Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y :
        Q2Presentation.MarkingQ2Presentation.Marking.{u_1} (G : Type u_1) [Group G] : Type u_1A marking assigns a group element to each of the four generators. 
          (Q2Presentation.Lifting.scalarCoverTargetQ2Presentation.Lifting.scalarCoverTarget {Yt : Q2Presentation.BoundaryFramedTarget} [Finite Yt.Y]
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals E) : Q2Presentation.BoundaryFramedTarget**The scalar pushout target** `B_λ = Y/ker λ` as a framed target
    (same `H`, `E`, frame; `eq:targettower` refined by l.4219–4223). 
              (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)).YQ2Presentation.BoundaryFramedTarget.Y (self : Q2Presentation.BoundaryFramedTarget) : TypeThe finite target group `Y`. )
      (hqQ2Presentation.Induction.CoverMarking chief K lam hinv f q : Q2Presentation.Induction.CoverMarkingQ2Presentation.Induction.CoverMarking {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K))
      (f :
        Q2Presentation.TorsorProgram.coverLiftTotal (Q2Presentation.Induction.XRZero.xrChild chief K).fst
          (Q2Presentation.Induction.mChildKernel chief K).N Q2Presentation.boundaryPackage_GammaA
          (Q2Presentation.Induction.XRZero.xrChild chief K).snd)
      (q :
        Q2Presentation.Marking
          (Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y) :
      Prop**A cover marking over a weak `M`-lift**: generator values in `B_λ`
    projecting to the lift's marking, framed by the parent frame.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K) fQ2Presentation.TorsorProgram.coverLiftTotal (Q2Presentation.Induction.XRZero.xrChild chief K).fst
      (Q2Presentation.Induction.mChildKernel chief K).N Q2Presentation.boundaryPackage_GammaA
      (Q2Presentation.Induction.XRZero.xrChild chief K).snd qQ2Presentation.Marking (Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y)
      (hq'Q2Presentation.Induction.CoverMarking chief K lam hinv f' q' : Q2Presentation.Induction.CoverMarkingQ2Presentation.Induction.CoverMarking {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K))
      (f :
        Q2Presentation.TorsorProgram.coverLiftTotal (Q2Presentation.Induction.XRZero.xrChild chief K).fst
          (Q2Presentation.Induction.mChildKernel chief K).N Q2Presentation.boundaryPackage_GammaA
          (Q2Presentation.Induction.XRZero.xrChild chief K).snd)
      (q :
        Q2Presentation.Marking
          (Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y) :
      Prop**A cover marking over a weak `M`-lift**: generator values in `B_λ`
    projecting to the lift's marking, framed by the parent frame.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K) f'Q2Presentation.TorsorProgram.coverLiftTotal (Q2Presentation.Induction.XRZero.xrChild chief K).fst
      (Q2Presentation.Induction.mChildKernel chief K).N Q2Presentation.boundaryPackage_GammaA
      (Q2Presentation.Induction.XRZero.xrChild chief K).snd q'Q2Presentation.Marking (Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y)
      (hbase∀ (a : Q2Presentation.Gen),
      (QuotientGroup.mk' (Q2Presentation.Induction.mChildKernel chief K).N)
          ((ProfiniteGrp.Hom.hom ↑f) (Q2Presentation.gammaGen a)) =
        (QuotientGroup.mk' (Q2Presentation.Induction.mChildKernel chief K).N)
          ((ProfiniteGrp.Hom.hom ↑f') (Q2Presentation.gammaGen a)) :
         (aQ2Presentation.Gen : Q2Presentation.GenQ2Presentation.Gen : TypeThe four marked generators of the candidate presentation. ),
          (QuotientGroup.mk'QuotientGroup.mk'.{u_1} {G : Type u_1} [Group G] (N : Subgroup G) [nN : N.Normal] : G →* G ⧸ NThe group homomorphism from `G` to `G/N`. 
                (Q2Presentation.Induction.mChildKernelQ2Presentation.Induction.mChildKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel (Q2Presentation.Induction.XRZero.xrChild chief K).fst**The elementary `M`-kernel at the child** `B = Y/Φ(K)`
    (`lem:simplehead` carrier for `lem:elementarystage`): `N = M' = K/Φ(K)`.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).NQ2Presentation.Lifting.ElementaryKernel.N {Yt : Q2Presentation.BoundaryFramedTarget}
      (self : Q2Presentation.Lifting.ElementaryKernel Yt) : Subgroup Yt.Y)
              ((ProfiniteGrp.Hom.homProfiniteGrp.Hom.hom.{u} {M N : ProfiniteGrp.{u}} (f : M.Hom N) : ↑M.toProfinite.toTop →ₜ* ↑N.toProfinite.toTopThe underlying `ContinuousMonoidHom`.  fQ2Presentation.TorsorProgram.coverLiftTotal (Q2Presentation.Induction.XRZero.xrChild chief K).fst
      (Q2Presentation.Induction.mChildKernel chief K).N Q2Presentation.boundaryPackage_GammaA
      (Q2Presentation.Induction.XRZero.xrChild chief K).snd) (Q2Presentation.gammaGenQ2Presentation.gammaGen (a : Q2Presentation.Gen) : ↑Q2Presentation.GammaA.toProfinite.toTopThe four universal generators `σ, τ, x₀, x₁` of `Γ_A`, as the compatible
    families of marked generators.  aQ2Presentation.Gen)) =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`.
            (QuotientGroup.mk'QuotientGroup.mk'.{u_1} {G : Type u_1} [Group G] (N : Subgroup G) [nN : N.Normal] : G →* G ⧸ NThe group homomorphism from `G` to `G/N`. 
                (Q2Presentation.Induction.mChildKernelQ2Presentation.Induction.mChildKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel (Q2Presentation.Induction.XRZero.xrChild chief K).fst**The elementary `M`-kernel at the child** `B = Y/Φ(K)`
    (`lem:simplehead` carrier for `lem:elementarystage`): `N = M' = K/Φ(K)`.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).NQ2Presentation.Lifting.ElementaryKernel.N {Yt : Q2Presentation.BoundaryFramedTarget}
      (self : Q2Presentation.Lifting.ElementaryKernel Yt) : Subgroup Yt.Y)
              ((ProfiniteGrp.Hom.homProfiniteGrp.Hom.hom.{u} {M N : ProfiniteGrp.{u}} (f : M.Hom N) : ↑M.toProfinite.toTop →ₜ* ↑N.toProfinite.toTopThe underlying `ContinuousMonoidHom`.  f'Q2Presentation.TorsorProgram.coverLiftTotal (Q2Presentation.Induction.XRZero.xrChild chief K).fst
      (Q2Presentation.Induction.mChildKernel chief K).N Q2Presentation.boundaryPackage_GammaA
      (Q2Presentation.Induction.XRZero.xrChild chief K).snd) (Q2Presentation.gammaGenQ2Presentation.gammaGen (a : Q2Presentation.Gen) : ↑Q2Presentation.GammaA.toProfinite.toTopThe four universal generators `σ, τ, x₀, x₁` of `Γ_A`, as the compatible
    families of marked generators.  aQ2Presentation.Gen)))
      (tQ2Presentation.Gen → ↥(Q2Presentation.Induction.tCover chief K lam hinv) :
        Q2Presentation.GenQ2Presentation.Gen : TypeThe four marked generators of the candidate presentation.  
          (Q2Presentation.Induction.tCoverQ2Presentation.Induction.tCover {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) :
      Subgroup (Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).YThe `T`-preimage in the cover: `T̃ = TAmb·(ker λ)/(ker λ) ≤ B_λ`.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K))) :
      Q2Presentation.Induction.edgePairingQ2Presentation.Induction.edgePairing {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) (hne : lam ≠ 0)
      (q :
        Q2Presentation.Marking
          (Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y)
      (t : Q2Presentation.Gen → ↥(Q2Presentation.Induction.tCover chief K lam hinv)) : ZMod 2**The edge pairing** `⟨[u], ρ*[ε̄]⟩` of a `T̃`-tuple against the two
    relators at a cover marking: the `relRead`-sum of the two `T̃`-shadows
    (`eq:edgevariationobstruction`'s correction term, ledger form).  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K) hnelam ≠ 0 q'Q2Presentation.Marking (Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y tQ2Presentation.Gen → ↥(Q2Presentation.Induction.tCover chief K lam hinv) =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`.
        Q2Presentation.Induction.edgePairingQ2Presentation.Induction.edgePairing {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) (hne : lam ≠ 0)
      (q :
        Q2Presentation.Marking
          (Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y)
      (t : Q2Presentation.Gen → ↥(Q2Presentation.Induction.tCover chief K lam hinv)) : ZMod 2**The edge pairing** `⟨[u], ρ*[ε̄]⟩` of a `T̃`-tuple against the two
    relators at a cover marking: the `relRead`-sum of the two `T̃`-shadows
    (`eq:edgevariationobstruction`'s correction term, ledger form).  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K) hnelam ≠ 0 qQ2Presentation.Marking (Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y tQ2Presentation.Gen → ↥(Q2Presentation.Induction.tCover chief K lam hinv)
    theorem Q2Presentation.Induction.edgePairing_eq_of_fibre
      {pQ2Presentation.Induction.FramedPair :
        Q2Presentation.Induction.FramedPairQ2Presentation.Induction.FramedPair : Type 1A **framed pair** `(𝒴, F)`: a boundary-framed marked target together with a
    boundary frame for it (manuscript Definition 4.1 + `eq:beta`).  This is the index of
    Theorem 4.2: the boundary-framed surjection count `e_Γ^β` is a function of the pair.
    The induction of `sec:induction` ranges over *all* such pairs simultaneously
    ("the induction is stated globally", l.1213), ordered by `|L_Y|`. }
      (chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p :
        Q2Presentation.Induction.FirstNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor (p : Q2Presentation.Induction.FramedPair) : TypeA non-scalar chief factor of `L_Y` that is **first**: every chief factor strictly
    below it (i.e. with upper term contained in `lower`) is scalar.  This is the manuscript's
    choice `S ◁ P` at l.3616–3623 ("all chief factors below `S` are scalar and `V` is the
    first non-scalar simple factor"), which `lem:collapse` requires for the coprime step
    `[S, Ñ] = 1`. 
          pQ2Presentation.Induction.FramedPair)
      (KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor :
        Q2Presentation.Induction.KernelMinimalQ2Presentation.Induction.KernelMinimal {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.NonScalarChiefFactor p) : TypeThe manuscript's kernel choice (l.3623): `K ◁ Y`, `K ≤ P`, `KS = P`, and `K` is
    **⊆-minimal** with these properties — stated as: any `Y`-normal `K' ≤ K` still joining
    with `S` to `P` equals `K`.  (This, not leastness among all candidates, is what
    `lem:simplehead` and `lem:collapse` use: both apply it to subgroups of `K`.) 
          chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p.toNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor.toNonScalarChiefFactor {p : Q2Presentation.Induction.FramedPair}
      (self : Q2Presentation.Induction.FirstNonScalarChiefFactor p) : Q2Presentation.Induction.NonScalarChiefFactor p)
      (lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) :
        Module.DualModule.Dual.{u_4, u_5} (R : Type u_4) (M : Type u_5) [Semiring R] [AddCommMonoid M] [Module R M] : Type (max u_5 u_4)The left dual space of an R-module M is the R-module of linear maps `M → R`.  (ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2)
          (Q2Presentation.Lifting.NAddQ2Presentation.Lifting.NAdd {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) : TypeThe additive `F₂`-carrier of an elementary kernel. 
            (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian. 
              chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)))
      (hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K) :
        lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`.
          Q2Presentation.Lifting.conjInvDualsQ2Presentation.Lifting.conjInvDuals {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) :
      Submodule (ZMod 2) (Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E))The conjugation-invariant duals `X = (R^∨)^Y = (R^∨)^C` of an
    elementary kernel (consumer spelling of the manuscript's `𝒳_R`,
    §7 l.3720–3723). 
            (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian. 
              chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor))
      (hnelam ≠ 0 : lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) Ne.{u} {α : Sort u} (a b : α) : Prop`a ≠ b`, or `Ne a b` is defined as `¬ (a = b)` or `a = b → False`,
    and asserts that `a` and `b` are not equal.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≠` in identifiers is `ne`. 0)
      (fQ2Presentation.TorsorProgram.coverLiftTotal (Q2Presentation.Induction.XRZero.xrChild chief K).fst
      (Q2Presentation.Induction.mChildKernel chief K).N Q2Presentation.boundaryPackage_GammaA
      (Q2Presentation.Induction.XRZero.xrChild chief K).snd f'Q2Presentation.TorsorProgram.coverLiftTotal (Q2Presentation.Induction.XRZero.xrChild chief K).fst
      (Q2Presentation.Induction.mChildKernel chief K).N Q2Presentation.boundaryPackage_GammaA
      (Q2Presentation.Induction.XRZero.xrChild chief K).snd :
        Q2Presentation.TorsorProgram.coverLiftTotalQ2Presentation.TorsorProgram.coverLiftTotal (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y)
      [hNn : N.Normal] {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (F : Q2Presentation.BoundaryFrame Yt) :
      Type**The cover-lift total space**: framed continuous homs into the AMBIENT
    target whose projection to the child is onto (`lem:covertransform`: all lifts
    of all unobstructed exact-image maps at once; surjectivity onto the ambient
    target NOT imposed — these are the weak lifts). 
          (Q2Presentation.Induction.XRZero.xrChildQ2Presentation.Induction.XRZero.xrChild {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPairThe `𝒳_R = 0` child: the quotient framed pair at `N = Φ`-layer. 
              chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.
    
          (Q2Presentation.Induction.mChildKernelQ2Presentation.Induction.mChildKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel (Q2Presentation.Induction.XRZero.xrChild chief K).fst**The elementary `M`-kernel at the child** `B = Y/Φ(K)`
    (`lem:simplehead` carrier for `lem:elementarystage`): `N = M' = K/Φ(K)`. 
              chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).NQ2Presentation.Lifting.ElementaryKernel.N {Yt : Q2Presentation.BoundaryFramedTarget}
      (self : Q2Presentation.Lifting.ElementaryKernel Yt) : Subgroup Yt.Y
          Q2Presentation.boundaryPackage_GammaAQ2Presentation.boundaryPackage_GammaA : Q2Presentation.BoundaryPackage Q2Presentation.GammaA**The candidate boundary package** (manuscript Prop 3.14, `prop:compatiblemarking`;
    plan Turn 4 §6).  The Stage-C data of `Γ_A`: the common tame quotient `gammaTameMap`,
    the maximal pro-`2` quotient `p : Γ_A ⟶ Π`, and the common unramified character
    `ν = gammaTameMap ≫ ν_t`, through which both factor. 
          (Q2Presentation.Induction.XRZero.xrChildQ2Presentation.Induction.XRZero.xrChild {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPairThe `𝒳_R = 0` child: the quotient framed pair at `N = Φ`-layer. 
              chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.
    )
      (qQ2Presentation.Marking (Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y q'Q2Presentation.Marking (Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y :
        Q2Presentation.MarkingQ2Presentation.Marking.{u_1} (G : Type u_1) [Group G] : Type u_1A marking assigns a group element to each of the four generators. 
          (Q2Presentation.Lifting.scalarCoverTargetQ2Presentation.Lifting.scalarCoverTarget {Yt : Q2Presentation.BoundaryFramedTarget} [Finite Yt.Y]
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals E) : Q2Presentation.BoundaryFramedTarget**The scalar pushout target** `B_λ = Y/ker λ` as a framed target
    (same `H`, `E`, frame; `eq:targettower` refined by l.4219–4223). 
              (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian. 
                chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
              lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)).YQ2Presentation.BoundaryFramedTarget.Y (self : Q2Presentation.BoundaryFramedTarget) : TypeThe finite target group `Y`. )
      (hqQ2Presentation.Induction.CoverMarking chief K lam hinv f q :
        Q2Presentation.Induction.CoverMarkingQ2Presentation.Induction.CoverMarking {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K))
      (f :
        Q2Presentation.TorsorProgram.coverLiftTotal (Q2Presentation.Induction.XRZero.xrChild chief K).fst
          (Q2Presentation.Induction.mChildKernel chief K).N Q2Presentation.boundaryPackage_GammaA
          (Q2Presentation.Induction.XRZero.xrChild chief K).snd)
      (q :
        Q2Presentation.Marking
          (Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y) :
      Prop**A cover marking over a weak `M`-lift**: generator values in `B_λ`
    projecting to the lift's marking, framed by the parent frame. 
          chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K) fQ2Presentation.TorsorProgram.coverLiftTotal (Q2Presentation.Induction.XRZero.xrChild chief K).fst
      (Q2Presentation.Induction.mChildKernel chief K).N Q2Presentation.boundaryPackage_GammaA
      (Q2Presentation.Induction.XRZero.xrChild chief K).snd qQ2Presentation.Marking (Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y)
      (hq'Q2Presentation.Induction.CoverMarking chief K lam hinv f' q' :
        Q2Presentation.Induction.CoverMarkingQ2Presentation.Induction.CoverMarking {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K))
      (f :
        Q2Presentation.TorsorProgram.coverLiftTotal (Q2Presentation.Induction.XRZero.xrChild chief K).fst
          (Q2Presentation.Induction.mChildKernel chief K).N Q2Presentation.boundaryPackage_GammaA
          (Q2Presentation.Induction.XRZero.xrChild chief K).snd)
      (q :
        Q2Presentation.Marking
          (Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y) :
      Prop**A cover marking over a weak `M`-lift**: generator values in `B_λ`
    projecting to the lift's marking, framed by the parent frame. 
          chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K) f'Q2Presentation.TorsorProgram.coverLiftTotal (Q2Presentation.Induction.XRZero.xrChild chief K).fst
      (Q2Presentation.Induction.mChildKernel chief K).N Q2Presentation.boundaryPackage_GammaA
      (Q2Presentation.Induction.XRZero.xrChild chief K).snd q'Q2Presentation.Marking (Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y)
      (hbase∀ (a : Q2Presentation.Gen),
      (QuotientGroup.mk' (Q2Presentation.Induction.mChildKernel chief K).N)
          ((ProfiniteGrp.Hom.hom ↑f) (Q2Presentation.gammaGen a)) =
        (QuotientGroup.mk' (Q2Presentation.Induction.mChildKernel chief K).N)
          ((ProfiniteGrp.Hom.hom ↑f') (Q2Presentation.gammaGen a)) :
         (aQ2Presentation.Gen : Q2Presentation.GenQ2Presentation.Gen : TypeThe four marked generators of the candidate presentation. ),
          (QuotientGroup.mk'QuotientGroup.mk'.{u_1} {G : Type u_1} [Group G] (N : Subgroup G) [nN : N.Normal] : G →* G ⧸ NThe group homomorphism from `G` to `G/N`. 
                (Q2Presentation.Induction.mChildKernelQ2Presentation.Induction.mChildKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel (Q2Presentation.Induction.XRZero.xrChild chief K).fst**The elementary `M`-kernel at the child** `B = Y/Φ(K)`
    (`lem:simplehead` carrier for `lem:elementarystage`): `N = M' = K/Φ(K)`. 
                    chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).NQ2Presentation.Lifting.ElementaryKernel.N {Yt : Q2Presentation.BoundaryFramedTarget}
      (self : Q2Presentation.Lifting.ElementaryKernel Yt) : Subgroup Yt.Y)
              ((ProfiniteGrp.Hom.homProfiniteGrp.Hom.hom.{u} {M N : ProfiniteGrp.{u}} (f : M.Hom N) : ↑M.toProfinite.toTop →ₜ* ↑N.toProfinite.toTopThe underlying `ContinuousMonoidHom`.  fQ2Presentation.TorsorProgram.coverLiftTotal (Q2Presentation.Induction.XRZero.xrChild chief K).fst
      (Q2Presentation.Induction.mChildKernel chief K).N Q2Presentation.boundaryPackage_GammaA
      (Q2Presentation.Induction.XRZero.xrChild chief K).snd)
                (Q2Presentation.gammaGenQ2Presentation.gammaGen (a : Q2Presentation.Gen) : ↑Q2Presentation.GammaA.toProfinite.toTopThe four universal generators `σ, τ, x₀, x₁` of `Γ_A`, as the compatible
    families of marked generators.  aQ2Presentation.Gen)) =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`.
            (QuotientGroup.mk'QuotientGroup.mk'.{u_1} {G : Type u_1} [Group G] (N : Subgroup G) [nN : N.Normal] : G →* G ⧸ NThe group homomorphism from `G` to `G/N`. 
                (Q2Presentation.Induction.mChildKernelQ2Presentation.Induction.mChildKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel (Q2Presentation.Induction.XRZero.xrChild chief K).fst**The elementary `M`-kernel at the child** `B = Y/Φ(K)`
    (`lem:simplehead` carrier for `lem:elementarystage`): `N = M' = K/Φ(K)`. 
                    chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).NQ2Presentation.Lifting.ElementaryKernel.N {Yt : Q2Presentation.BoundaryFramedTarget}
      (self : Q2Presentation.Lifting.ElementaryKernel Yt) : Subgroup Yt.Y)
              ((ProfiniteGrp.Hom.homProfiniteGrp.Hom.hom.{u} {M N : ProfiniteGrp.{u}} (f : M.Hom N) : ↑M.toProfinite.toTop →ₜ* ↑N.toProfinite.toTopThe underlying `ContinuousMonoidHom`.  f'Q2Presentation.TorsorProgram.coverLiftTotal (Q2Presentation.Induction.XRZero.xrChild chief K).fst
      (Q2Presentation.Induction.mChildKernel chief K).N Q2Presentation.boundaryPackage_GammaA
      (Q2Presentation.Induction.XRZero.xrChild chief K).snd)
                (Q2Presentation.gammaGenQ2Presentation.gammaGen (a : Q2Presentation.Gen) : ↑Q2Presentation.GammaA.toProfinite.toTopThe four universal generators `σ, τ, x₀, x₁` of `Γ_A`, as the compatible
    families of marked generators.  aQ2Presentation.Gen)))
      (tQ2Presentation.Gen → ↥(Q2Presentation.Induction.tCover chief K lam hinv) :
        Q2Presentation.GenQ2Presentation.Gen : TypeThe four marked generators of the candidate presentation.  
          (Q2Presentation.Induction.tCoverQ2Presentation.Induction.tCover {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) :
      Subgroup (Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).YThe `T`-preimage in the cover: `T̃ = TAmb·(ker λ)/(ker λ) ≤ B_λ`. 
              chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K))) :
      Q2Presentation.Induction.edgePairingQ2Presentation.Induction.edgePairing {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) (hne : lam ≠ 0)
      (q :
        Q2Presentation.Marking
          (Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y)
      (t : Q2Presentation.Gen → ↥(Q2Presentation.Induction.tCover chief K lam hinv)) : ZMod 2**The edge pairing** `⟨[u], ρ*[ε̄]⟩` of a `T̃`-tuple against the two
    relators at a cover marking: the `relRead`-sum of the two `T̃`-shadows
    (`eq:edgevariationobstruction`'s correction term, ledger form). 
          chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K) hnelam ≠ 0 q'Q2Presentation.Marking (Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y tQ2Presentation.Gen → ↥(Q2Presentation.Induction.tCover chief K lam hinv) =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`.
        Q2Presentation.Induction.edgePairingQ2Presentation.Induction.edgePairing {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) (hne : lam ≠ 0)
      (q :
        Q2Presentation.Marking
          (Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y)
      (t : Q2Presentation.Gen → ↥(Q2Presentation.Induction.tCover chief K lam hinv)) : ZMod 2**The edge pairing** `⟨[u], ρ*[ε̄]⟩` of a `T̃`-tuple against the two
    relators at a cover marking: the `relRead`-sum of the two `T̃`-shadows
    (`eq:edgevariationobstruction`'s correction term, ledger form). 
          chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K) hnelam ≠ 0 qQ2Presentation.Marking (Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y tQ2Presentation.Gen → ↥(Q2Presentation.Induction.tCover chief K lam hinv)
    **The pairing is fibre-uniform** (`lem:radicaledge` step 4, ledger form):
    markings over lifts with the same child image differ by an `M̃`-tuple, and
    `M̃`-conjugation fixes `T̃`, so the two `T̃`-shadows — hence the pairing —
    agree.  This is the `C`-factorization of the edge class. 
  • defdefined in Q2Presentation/Induction/EdgeHalvingTwist.lean
    complete
    def Q2Presentation.Induction.twistLift
      {pQ2Presentation.Induction.FramedPair : Q2Presentation.Induction.FramedPairQ2Presentation.Induction.FramedPair : Type 1A **framed pair** `(𝒴, F)`: a boundary-framed marked target together with a
    boundary frame for it (manuscript Definition 4.1 + `eq:beta`).  This is the index of
    Theorem 4.2: the boundary-framed surjection count `e_Γ^β` is a function of the pair.
    The induction of `sec:induction` ranges over *all* such pairs simultaneously
    ("the induction is stated globally", l.1213), ordered by `|L_Y|`. }
      (chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p : Q2Presentation.Induction.FirstNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor (p : Q2Presentation.Induction.FramedPair) : TypeA non-scalar chief factor of `L_Y` that is **first**: every chief factor strictly
    below it (i.e. with upper term contained in `lower`) is scalar.  This is the manuscript's
    choice `S ◁ P` at l.3616–3623 ("all chief factors below `S` are scalar and `V` is the
    first non-scalar simple factor"), which `lem:collapse` requires for the coprime step
    `[S, Ñ] = 1`.  pQ2Presentation.Induction.FramedPair)
      (KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor :
        Q2Presentation.Induction.KernelMinimalQ2Presentation.Induction.KernelMinimal {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.NonScalarChiefFactor p) : TypeThe manuscript's kernel choice (l.3623): `K ◁ Y`, `K ≤ P`, `KS = P`, and `K` is
    **⊆-minimal** with these properties — stated as: any `Y`-normal `K' ≤ K` still joining
    with `S` to `P` equals `K`.  (This, not leastness among all candidates, is what
    `lem:simplehead` and `lem:collapse` use: both apply it to subgroups of `K`.)  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p.toNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor.toNonScalarChiefFactor {p : Q2Presentation.Induction.FramedPair}
      (self : Q2Presentation.Induction.FirstNonScalarChiefFactor p) : Q2Presentation.Induction.NonScalarChiefFactor p)
      (lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) :
        Module.DualModule.Dual.{u_4, u_5} (R : Type u_4) (M : Type u_5) [Semiring R] [AddCommMonoid M] [Module R M] : Type (max u_5 u_4)The left dual space of an R-module M is the R-module of linear maps `M → R`.  (ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2)
          (Q2Presentation.Lifting.NAddQ2Presentation.Lifting.NAdd {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) : TypeThe additive `F₂`-carrier of an elementary kernel. 
            (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)))
      (hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K) :
        lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`.
          Q2Presentation.Lifting.conjInvDualsQ2Presentation.Lifting.conjInvDuals {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) :
      Submodule (ZMod 2) (Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E))The conjugation-invariant duals `X = (R^∨)^Y = (R^∨)^C` of an
    elementary kernel (consumer spelling of the manuscript's `𝒳_R`,
    §7 l.3720–3723). 
            (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor))
      (fQ2Presentation.TorsorProgram.coverLiftTotal (Q2Presentation.Induction.XRZero.xrChild chief K).fst
      (Q2Presentation.Induction.mChildKernel chief K).N Q2Presentation.boundaryPackage_GammaA
      (Q2Presentation.Induction.XRZero.xrChild chief K).snd :
        Q2Presentation.TorsorProgram.coverLiftTotalQ2Presentation.TorsorProgram.coverLiftTotal (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y)
      [hNn : N.Normal] {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (F : Q2Presentation.BoundaryFrame Yt) :
      Type**The cover-lift total space**: framed continuous homs into the AMBIENT
    target whose projection to the child is onto (`lem:covertransform`: all lifts
    of all unobstructed exact-image maps at once; surjectivity onto the ambient
    target NOT imposed — these are the weak lifts). 
          (Q2Presentation.Induction.XRZero.xrChildQ2Presentation.Induction.XRZero.xrChild {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPairThe `𝒳_R = 0` child: the quotient framed pair at `N = Φ`-layer.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.
    
          (Q2Presentation.Induction.mChildKernelQ2Presentation.Induction.mChildKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel (Q2Presentation.Induction.XRZero.xrChild chief K).fst**The elementary `M`-kernel at the child** `B = Y/Φ(K)`
    (`lem:simplehead` carrier for `lem:elementarystage`): `N = M' = K/Φ(K)`.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).NQ2Presentation.Lifting.ElementaryKernel.N {Yt : Q2Presentation.BoundaryFramedTarget}
      (self : Q2Presentation.Lifting.ElementaryKernel Yt) : Subgroup Yt.Y
          Q2Presentation.boundaryPackage_GammaAQ2Presentation.boundaryPackage_GammaA : Q2Presentation.BoundaryPackage Q2Presentation.GammaA**The candidate boundary package** (manuscript Prop 3.14, `prop:compatiblemarking`;
    plan Turn 4 §6).  The Stage-C data of `Γ_A`: the common tame quotient `gammaTameMap`,
    the maximal pro-`2` quotient `p : Γ_A ⟶ Π`, and the common unramified character
    `ν = gammaTameMap ≫ ν_t`, through which both factor. 
          (Q2Presentation.Induction.XRZero.xrChildQ2Presentation.Induction.XRZero.xrChild {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPairThe `𝒳_R = 0` child: the quotient framed pair at `N = Φ`-layer.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.
    )
      (tQ2Presentation.Gen → ↥(Q2Presentation.Induction.tCover chief K lam hinv) :
        Q2Presentation.GenQ2Presentation.Gen : TypeThe four marked generators of the candidate presentation.  
          (Q2Presentation.Induction.tCoverQ2Presentation.Induction.tCover {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) :
      Subgroup (Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).YThe `T`-preimage in the cover: `T̃ = TAmb·(ker λ)/(ker λ) ≤ B_λ`.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)))
      (hcocQ2Presentation.Induction.TwistCocycle chief K lam hinv f t : Q2Presentation.Induction.TwistCocycleQ2Presentation.Induction.TwistCocycle {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K))
      (f :
        Q2Presentation.TorsorProgram.coverLiftTotal (Q2Presentation.Induction.XRZero.xrChild chief K).fst
          (Q2Presentation.Induction.mChildKernel chief K).N Q2Presentation.boundaryPackage_GammaA
          (Q2Presentation.Induction.XRZero.xrChild chief K).snd)
      (t : Q2Presentation.Gen → ↥(Q2Presentation.Induction.tCover chief K lam hinv)) : Prop**A relator cocycle**: a `T̃`-tuple whose pushed `M'`-shadow kills both
    relators at the lift's marking — exactly the twists preserving hom-ness
    (the marking form of `Z¹_{Γ,ρ}(T)`).  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K) fQ2Presentation.TorsorProgram.coverLiftTotal (Q2Presentation.Induction.XRZero.xrChild chief K).fst
      (Q2Presentation.Induction.mChildKernel chief K).N Q2Presentation.boundaryPackage_GammaA
      (Q2Presentation.Induction.XRZero.xrChild chief K).snd tQ2Presentation.Gen → ↥(Q2Presentation.Induction.tCover chief K lam hinv)) :
      Q2Presentation.TorsorProgram.coverLiftTotalQ2Presentation.TorsorProgram.coverLiftTotal (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y)
      [hNn : N.Normal] {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (F : Q2Presentation.BoundaryFrame Yt) :
      Type**The cover-lift total space**: framed continuous homs into the AMBIENT
    target whose projection to the child is onto (`lem:covertransform`: all lifts
    of all unobstructed exact-image maps at once; surjectivity onto the ambient
    target NOT imposed — these are the weak lifts). 
        (Q2Presentation.Induction.XRZero.xrChildQ2Presentation.Induction.XRZero.xrChild {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPairThe `𝒳_R = 0` child: the quotient framed pair at `N = Φ`-layer.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.
    
        (Q2Presentation.Induction.mChildKernelQ2Presentation.Induction.mChildKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel (Q2Presentation.Induction.XRZero.xrChild chief K).fst**The elementary `M`-kernel at the child** `B = Y/Φ(K)`
    (`lem:simplehead` carrier for `lem:elementarystage`): `N = M' = K/Φ(K)`.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).NQ2Presentation.Lifting.ElementaryKernel.N {Yt : Q2Presentation.BoundaryFramedTarget}
      (self : Q2Presentation.Lifting.ElementaryKernel Yt) : Subgroup Yt.Y
        Q2Presentation.boundaryPackage_GammaAQ2Presentation.boundaryPackage_GammaA : Q2Presentation.BoundaryPackage Q2Presentation.GammaA**The candidate boundary package** (manuscript Prop 3.14, `prop:compatiblemarking`;
    plan Turn 4 §6).  The Stage-C data of `Γ_A`: the common tame quotient `gammaTameMap`,
    the maximal pro-`2` quotient `p : Γ_A ⟶ Π`, and the common unramified character
    `ν = gammaTameMap ≫ ν_t`, through which both factor. 
        (Q2Presentation.Induction.XRZero.xrChildQ2Presentation.Induction.XRZero.xrChild {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPairThe `𝒳_R = 0` child: the quotient framed pair at `N = Φ`-layer.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.
    
    def Q2Presentation.Induction.twistLift
      {pQ2Presentation.Induction.FramedPair :
        Q2Presentation.Induction.FramedPairQ2Presentation.Induction.FramedPair : Type 1A **framed pair** `(𝒴, F)`: a boundary-framed marked target together with a
    boundary frame for it (manuscript Definition 4.1 + `eq:beta`).  This is the index of
    Theorem 4.2: the boundary-framed surjection count `e_Γ^β` is a function of the pair.
    The induction of `sec:induction` ranges over *all* such pairs simultaneously
    ("the induction is stated globally", l.1213), ordered by `|L_Y|`. }
      (chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p :
        Q2Presentation.Induction.FirstNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor (p : Q2Presentation.Induction.FramedPair) : TypeA non-scalar chief factor of `L_Y` that is **first**: every chief factor strictly
    below it (i.e. with upper term contained in `lower`) is scalar.  This is the manuscript's
    choice `S ◁ P` at l.3616–3623 ("all chief factors below `S` are scalar and `V` is the
    first non-scalar simple factor"), which `lem:collapse` requires for the coprime step
    `[S, Ñ] = 1`. 
          pQ2Presentation.Induction.FramedPair)
      (KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor :
        Q2Presentation.Induction.KernelMinimalQ2Presentation.Induction.KernelMinimal {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.NonScalarChiefFactor p) : TypeThe manuscript's kernel choice (l.3623): `K ◁ Y`, `K ≤ P`, `KS = P`, and `K` is
    **⊆-minimal** with these properties — stated as: any `Y`-normal `K' ≤ K` still joining
    with `S` to `P` equals `K`.  (This, not leastness among all candidates, is what
    `lem:simplehead` and `lem:collapse` use: both apply it to subgroups of `K`.) 
          chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p.toNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor.toNonScalarChiefFactor {p : Q2Presentation.Induction.FramedPair}
      (self : Q2Presentation.Induction.FirstNonScalarChiefFactor p) : Q2Presentation.Induction.NonScalarChiefFactor p)
      (lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) :
        Module.DualModule.Dual.{u_4, u_5} (R : Type u_4) (M : Type u_5) [Semiring R] [AddCommMonoid M] [Module R M] : Type (max u_5 u_4)The left dual space of an R-module M is the R-module of linear maps `M → R`.  (ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2)
          (Q2Presentation.Lifting.NAddQ2Presentation.Lifting.NAdd {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) : TypeThe additive `F₂`-carrier of an elementary kernel. 
            (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian. 
              chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)))
      (hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K) :
        lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`.
          Q2Presentation.Lifting.conjInvDualsQ2Presentation.Lifting.conjInvDuals {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) :
      Submodule (ZMod 2) (Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E))The conjugation-invariant duals `X = (R^∨)^Y = (R^∨)^C` of an
    elementary kernel (consumer spelling of the manuscript's `𝒳_R`,
    §7 l.3720–3723). 
            (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian. 
              chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor))
      (fQ2Presentation.TorsorProgram.coverLiftTotal (Q2Presentation.Induction.XRZero.xrChild chief K).fst
      (Q2Presentation.Induction.mChildKernel chief K).N Q2Presentation.boundaryPackage_GammaA
      (Q2Presentation.Induction.XRZero.xrChild chief K).snd :
        Q2Presentation.TorsorProgram.coverLiftTotalQ2Presentation.TorsorProgram.coverLiftTotal (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y)
      [hNn : N.Normal] {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (F : Q2Presentation.BoundaryFrame Yt) :
      Type**The cover-lift total space**: framed continuous homs into the AMBIENT
    target whose projection to the child is onto (`lem:covertransform`: all lifts
    of all unobstructed exact-image maps at once; surjectivity onto the ambient
    target NOT imposed — these are the weak lifts). 
          (Q2Presentation.Induction.XRZero.xrChildQ2Presentation.Induction.XRZero.xrChild {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPairThe `𝒳_R = 0` child: the quotient framed pair at `N = Φ`-layer. 
              chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.
    
          (Q2Presentation.Induction.mChildKernelQ2Presentation.Induction.mChildKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel (Q2Presentation.Induction.XRZero.xrChild chief K).fst**The elementary `M`-kernel at the child** `B = Y/Φ(K)`
    (`lem:simplehead` carrier for `lem:elementarystage`): `N = M' = K/Φ(K)`. 
              chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).NQ2Presentation.Lifting.ElementaryKernel.N {Yt : Q2Presentation.BoundaryFramedTarget}
      (self : Q2Presentation.Lifting.ElementaryKernel Yt) : Subgroup Yt.Y
          Q2Presentation.boundaryPackage_GammaAQ2Presentation.boundaryPackage_GammaA : Q2Presentation.BoundaryPackage Q2Presentation.GammaA**The candidate boundary package** (manuscript Prop 3.14, `prop:compatiblemarking`;
    plan Turn 4 §6).  The Stage-C data of `Γ_A`: the common tame quotient `gammaTameMap`,
    the maximal pro-`2` quotient `p : Γ_A ⟶ Π`, and the common unramified character
    `ν = gammaTameMap ≫ ν_t`, through which both factor. 
          (Q2Presentation.Induction.XRZero.xrChildQ2Presentation.Induction.XRZero.xrChild {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPairThe `𝒳_R = 0` child: the quotient framed pair at `N = Φ`-layer. 
              chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.
    )
      (tQ2Presentation.Gen → ↥(Q2Presentation.Induction.tCover chief K lam hinv) :
        Q2Presentation.GenQ2Presentation.Gen : TypeThe four marked generators of the candidate presentation.  
          (Q2Presentation.Induction.tCoverQ2Presentation.Induction.tCover {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) :
      Subgroup (Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).YThe `T`-preimage in the cover: `T̃ = TAmb·(ker λ)/(ker λ) ≤ B_λ`. 
              chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)))
      (hcocQ2Presentation.Induction.TwistCocycle chief K lam hinv f t :
        Q2Presentation.Induction.TwistCocycleQ2Presentation.Induction.TwistCocycle {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K))
      (f :
        Q2Presentation.TorsorProgram.coverLiftTotal (Q2Presentation.Induction.XRZero.xrChild chief K).fst
          (Q2Presentation.Induction.mChildKernel chief K).N Q2Presentation.boundaryPackage_GammaA
          (Q2Presentation.Induction.XRZero.xrChild chief K).snd)
      (t : Q2Presentation.Gen → ↥(Q2Presentation.Induction.tCover chief K lam hinv)) : Prop**A relator cocycle**: a `T̃`-tuple whose pushed `M'`-shadow kills both
    relators at the lift's marking — exactly the twists preserving hom-ness
    (the marking form of `Z¹_{Γ,ρ}(T)`). 
          chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K) fQ2Presentation.TorsorProgram.coverLiftTotal (Q2Presentation.Induction.XRZero.xrChild chief K).fst
      (Q2Presentation.Induction.mChildKernel chief K).N Q2Presentation.boundaryPackage_GammaA
      (Q2Presentation.Induction.XRZero.xrChild chief K).snd tQ2Presentation.Gen → ↥(Q2Presentation.Induction.tCover chief K lam hinv)) :
      Q2Presentation.TorsorProgram.coverLiftTotalQ2Presentation.TorsorProgram.coverLiftTotal (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y)
      [hNn : N.Normal] {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (F : Q2Presentation.BoundaryFrame Yt) :
      Type**The cover-lift total space**: framed continuous homs into the AMBIENT
    target whose projection to the child is onto (`lem:covertransform`: all lifts
    of all unobstructed exact-image maps at once; surjectivity onto the ambient
    target NOT imposed — these are the weak lifts). 
        (Q2Presentation.Induction.XRZero.xrChildQ2Presentation.Induction.XRZero.xrChild {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPairThe `𝒳_R = 0` child: the quotient framed pair at `N = Φ`-layer. 
            chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.
    
        (Q2Presentation.Induction.mChildKernelQ2Presentation.Induction.mChildKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel (Q2Presentation.Induction.XRZero.xrChild chief K).fst**The elementary `M`-kernel at the child** `B = Y/Φ(K)`
    (`lem:simplehead` carrier for `lem:elementarystage`): `N = M' = K/Φ(K)`. 
            chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).NQ2Presentation.Lifting.ElementaryKernel.N {Yt : Q2Presentation.BoundaryFramedTarget}
      (self : Q2Presentation.Lifting.ElementaryKernel Yt) : Subgroup Yt.Y
        Q2Presentation.boundaryPackage_GammaAQ2Presentation.boundaryPackage_GammaA : Q2Presentation.BoundaryPackage Q2Presentation.GammaA**The candidate boundary package** (manuscript Prop 3.14, `prop:compatiblemarking`;
    plan Turn 4 §6).  The Stage-C data of `Γ_A`: the common tame quotient `gammaTameMap`,
    the maximal pro-`2` quotient `p : Γ_A ⟶ Π`, and the common unramified character
    `ν = gammaTameMap ≫ ν_t`, through which both factor. 
        (Q2Presentation.Induction.XRZero.xrChildQ2Presentation.Induction.XRZero.xrChild {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPairThe `𝒳_R = 0` child: the quotient framed pair at `N = Φ`-layer. 
            chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.
    
    **The twist of a weak `M`-lift by a relator cocycle** — again a weak
    `M`-lift (the `f ↦ f_u` of `lem:radicaledge` step 5, marking form). 
  • defdefined in Q2Presentation/Induction/EdgeHalvingTwist.lean
    complete
    def Q2Presentation.Induction.EdgeTwistFlip
      {pQ2Presentation.Induction.FramedPair : Q2Presentation.Induction.FramedPairQ2Presentation.Induction.FramedPair : Type 1A **framed pair** `(𝒴, F)`: a boundary-framed marked target together with a
    boundary frame for it (manuscript Definition 4.1 + `eq:beta`).  This is the index of
    Theorem 4.2: the boundary-framed surjection count `e_Γ^β` is a function of the pair.
    The induction of `sec:induction` ranges over *all* such pairs simultaneously
    ("the induction is stated globally", l.1213), ordered by `|L_Y|`. }
      (chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p : Q2Presentation.Induction.FirstNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor (p : Q2Presentation.Induction.FramedPair) : TypeA non-scalar chief factor of `L_Y` that is **first**: every chief factor strictly
    below it (i.e. with upper term contained in `lower`) is scalar.  This is the manuscript's
    choice `S ◁ P` at l.3616–3623 ("all chief factors below `S` are scalar and `V` is the
    first non-scalar simple factor"), which `lem:collapse` requires for the coprime step
    `[S, Ñ] = 1`.  pQ2Presentation.Induction.FramedPair)
      (KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor :
        Q2Presentation.Induction.KernelMinimalQ2Presentation.Induction.KernelMinimal {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.NonScalarChiefFactor p) : TypeThe manuscript's kernel choice (l.3623): `K ◁ Y`, `K ≤ P`, `KS = P`, and `K` is
    **⊆-minimal** with these properties — stated as: any `Y`-normal `K' ≤ K` still joining
    with `S` to `P` equals `K`.  (This, not leastness among all candidates, is what
    `lem:simplehead` and `lem:collapse` use: both apply it to subgroups of `K`.)  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p.toNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor.toNonScalarChiefFactor {p : Q2Presentation.Induction.FramedPair}
      (self : Q2Presentation.Induction.FirstNonScalarChiefFactor p) : Q2Presentation.Induction.NonScalarChiefFactor p)
      (lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) :
        Module.DualModule.Dual.{u_4, u_5} (R : Type u_4) (M : Type u_5) [Semiring R] [AddCommMonoid M] [Module R M] : Type (max u_5 u_4)The left dual space of an R-module M is the R-module of linear maps `M → R`.  (ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2)
          (Q2Presentation.Lifting.NAddQ2Presentation.Lifting.NAdd {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) : TypeThe additive `F₂`-carrier of an elementary kernel. 
            (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)))
      (hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K) :
        lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`.
          Q2Presentation.Lifting.conjInvDualsQ2Presentation.Lifting.conjInvDuals {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) :
      Submodule (ZMod 2) (Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E))The conjugation-invariant duals `X = (R^∨)^Y = (R^∨)^C` of an
    elementary kernel (consumer spelling of the manuscript's `𝒳_R`,
    §7 l.3720–3723). 
            (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor))
      (hnelam ≠ 0 : lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) Ne.{u} {α : Sort u} (a b : α) : Prop`a ≠ b`, or `Ne a b` is defined as `¬ (a = b)` or `a = b → False`,
    and asserts that `a` and `b` are not equal.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≠` in identifiers is `ne`. 0) : PropThe universe of propositions. `Prop ≡ Sort 0`.
    
    Every proposition is propositionally equal to either `True` or `False`. 
    def Q2Presentation.Induction.EdgeTwistFlip
      {pQ2Presentation.Induction.FramedPair :
        Q2Presentation.Induction.FramedPairQ2Presentation.Induction.FramedPair : Type 1A **framed pair** `(𝒴, F)`: a boundary-framed marked target together with a
    boundary frame for it (manuscript Definition 4.1 + `eq:beta`).  This is the index of
    Theorem 4.2: the boundary-framed surjection count `e_Γ^β` is a function of the pair.
    The induction of `sec:induction` ranges over *all* such pairs simultaneously
    ("the induction is stated globally", l.1213), ordered by `|L_Y|`. }
      (chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p :
        Q2Presentation.Induction.FirstNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor (p : Q2Presentation.Induction.FramedPair) : TypeA non-scalar chief factor of `L_Y` that is **first**: every chief factor strictly
    below it (i.e. with upper term contained in `lower`) is scalar.  This is the manuscript's
    choice `S ◁ P` at l.3616–3623 ("all chief factors below `S` are scalar and `V` is the
    first non-scalar simple factor"), which `lem:collapse` requires for the coprime step
    `[S, Ñ] = 1`. 
          pQ2Presentation.Induction.FramedPair)
      (KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor :
        Q2Presentation.Induction.KernelMinimalQ2Presentation.Induction.KernelMinimal {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.NonScalarChiefFactor p) : TypeThe manuscript's kernel choice (l.3623): `K ◁ Y`, `K ≤ P`, `KS = P`, and `K` is
    **⊆-minimal** with these properties — stated as: any `Y`-normal `K' ≤ K` still joining
    with `S` to `P` equals `K`.  (This, not leastness among all candidates, is what
    `lem:simplehead` and `lem:collapse` use: both apply it to subgroups of `K`.) 
          chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p.toNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor.toNonScalarChiefFactor {p : Q2Presentation.Induction.FramedPair}
      (self : Q2Presentation.Induction.FirstNonScalarChiefFactor p) : Q2Presentation.Induction.NonScalarChiefFactor p)
      (lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) :
        Module.DualModule.Dual.{u_4, u_5} (R : Type u_4) (M : Type u_5) [Semiring R] [AddCommMonoid M] [Module R M] : Type (max u_5 u_4)The left dual space of an R-module M is the R-module of linear maps `M → R`.  (ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2)
          (Q2Presentation.Lifting.NAddQ2Presentation.Lifting.NAdd {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) : TypeThe additive `F₂`-carrier of an elementary kernel. 
            (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian. 
              chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)))
      (hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K) :
        lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`.
          Q2Presentation.Lifting.conjInvDualsQ2Presentation.Lifting.conjInvDuals {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) :
      Submodule (ZMod 2) (Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E))The conjugation-invariant duals `X = (R^∨)^Y = (R^∨)^C` of an
    elementary kernel (consumer spelling of the manuscript's `𝒳_R`,
    §7 l.3720–3723). 
            (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian. 
              chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor))
      (hnelam ≠ 0 : lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) Ne.{u} {α : Sort u} (a b : α) : Prop`a ≠ b`, or `Ne a b` is defined as `¬ (a = b)` or `a = b → False`,
    and asserts that `a` and `b` are not equal.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≠` in identifiers is `ne`. 0) : PropThe universe of propositions. `Prop ≡ Sort 0`.
    
    Every proposition is propositionally equal to either `True` or `False`. 
    **The isolated nonvanishing residue** (`lem:radicaledge` step 6's
    `[ε̄] ≠ 0 ⟹` perfect-degree-one-duality clause): over every child
    surjection, SOME weak `M`-lift carries a relator cocycle of nonzero edge
    pairing.  This — not the halving itself — is the remaining content of
    `sec7_edgeHalving_gammaA`; dissolution program in
    `audit/BLOCKR_P8_DESIGN.md` §10-P8D. 
  • theoremdefined in Q2Presentation/Induction/EdgeHalvingTwist.lean
    complete
    theorem Q2Presentation.Induction.edgeHalvingGammaA_of_twistFlip
      {pQ2Presentation.Induction.FramedPair : Q2Presentation.Induction.FramedPairQ2Presentation.Induction.FramedPair : Type 1A **framed pair** `(𝒴, F)`: a boundary-framed marked target together with a
    boundary frame for it (manuscript Definition 4.1 + `eq:beta`).  This is the index of
    Theorem 4.2: the boundary-framed surjection count `e_Γ^β` is a function of the pair.
    The induction of `sec:induction` ranges over *all* such pairs simultaneously
    ("the induction is stated globally", l.1213), ordered by `|L_Y|`. }
      (chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p : Q2Presentation.Induction.FirstNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor (p : Q2Presentation.Induction.FramedPair) : TypeA non-scalar chief factor of `L_Y` that is **first**: every chief factor strictly
    below it (i.e. with upper term contained in `lower`) is scalar.  This is the manuscript's
    choice `S ◁ P` at l.3616–3623 ("all chief factors below `S` are scalar and `V` is the
    first non-scalar simple factor"), which `lem:collapse` requires for the coprime step
    `[S, Ñ] = 1`.  pQ2Presentation.Induction.FramedPair)
      (KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor :
        Q2Presentation.Induction.KernelMinimalQ2Presentation.Induction.KernelMinimal {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.NonScalarChiefFactor p) : TypeThe manuscript's kernel choice (l.3623): `K ◁ Y`, `K ≤ P`, `KS = P`, and `K` is
    **⊆-minimal** with these properties — stated as: any `Y`-normal `K' ≤ K` still joining
    with `S` to `P` equals `K`.  (This, not leastness among all candidates, is what
    `lem:simplehead` and `lem:collapse` use: both apply it to subgroups of `K`.)  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p.toNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor.toNonScalarChiefFactor {p : Q2Presentation.Induction.FramedPair}
      (self : Q2Presentation.Induction.FirstNonScalarChiefFactor p) : Q2Presentation.Induction.NonScalarChiefFactor p)
      (lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) :
        Module.DualModule.Dual.{u_4, u_5} (R : Type u_4) (M : Type u_5) [Semiring R] [AddCommMonoid M] [Module R M] : Type (max u_5 u_4)The left dual space of an R-module M is the R-module of linear maps `M → R`.  (ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2)
          (Q2Presentation.Lifting.NAddQ2Presentation.Lifting.NAdd {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) : TypeThe additive `F₂`-carrier of an elementary kernel. 
            (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)))
      (hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K) :
        lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`.
          Q2Presentation.Lifting.conjInvDualsQ2Presentation.Lifting.conjInvDuals {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) :
      Submodule (ZMod 2) (Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E))The conjugation-invariant duals `X = (R^∨)^Y = (R^∨)^C` of an
    elementary kernel (consumer spelling of the manuscript's `𝒳_R`,
    §7 l.3720–3723). 
            (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor))
      (hnelam ≠ 0 : lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) Ne.{u} {α : Sort u} (a b : α) : Prop`a ≠ b`, or `Ne a b` is defined as `¬ (a = b)` or `a = b → False`,
    and asserts that `a` and `b` are not equal.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≠` in identifiers is `ne`. 0)
      (hflipQ2Presentation.Induction.EdgeTwistFlip chief K lam hinv hne :
        Q2Presentation.Induction.EdgeTwistFlipQ2Presentation.Induction.EdgeTwistFlip {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) (hne : lam ≠ 0) : Prop**The isolated nonvanishing residue** (`lem:radicaledge` step 6's
    `[ε̄] ≠ 0 ⟹` perfect-degree-one-duality clause): over every child
    surjection, SOME weak `M`-lift carries a relator cocycle of nonzero edge
    pairing.  This — not the halving itself — is the remaining content of
    `sec7_edgeHalving_gammaA`; dissolution program in
    `audit/BLOCKR_P8_DESIGN.md` §10-P8D.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K) hnelam ≠ 0) :
      Q2Presentation.Induction.EdgeHalvingGammaAQ2Presentation.Induction.EdgeHalvingGammaA {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) : Prop**The R4a per-fibre halving, candidate source** — THE sharply-scoped
    R4a residual (manuscript `lem:radicaledge` step 6, l.4006–4019: exact
    variation formula + perfect degree-one duality; candidate half =
    `prop:chainmap` l.1687 + `prop:defduality`-grade degree-one content):
    over each `g_C`, exactly half of the weak `M`-lifts are λ-liftable,
    stated division-free per fibre.  Deliberately does NOT assert the fibre
    size `2^{2·dim M}` (that is the separate, PROVEN `lem:elementarystage`
    obligation — design §6.3), and is deliberately NOT conditioned here on
    `¬ ZeroEdge` — the conditioning belongs to its (future, coordinated)
    keep `sec7_edgeHalving_gammaA (hne) (hedge) : EdgeHalvingGammaA …`,
    whose dissolution program is recorded in the design §4.6: (i) the ledger
    variation formula from U3's `edgeDefect` calculus + the weak-base defect
    engine; (ii) `edgeShadow ≠ 0` on the `T`-cocycle space by the
    trivial-chain dévissage over the PROVEN `Sec7TrivialChainData`;
    (iii) the free-orbit torsor bookkeeping.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)
    theorem Q2Presentation.Induction.edgeHalvingGammaA_of_twistFlip
      {pQ2Presentation.Induction.FramedPair :
        Q2Presentation.Induction.FramedPairQ2Presentation.Induction.FramedPair : Type 1A **framed pair** `(𝒴, F)`: a boundary-framed marked target together with a
    boundary frame for it (manuscript Definition 4.1 + `eq:beta`).  This is the index of
    Theorem 4.2: the boundary-framed surjection count `e_Γ^β` is a function of the pair.
    The induction of `sec:induction` ranges over *all* such pairs simultaneously
    ("the induction is stated globally", l.1213), ordered by `|L_Y|`. }
      (chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p :
        Q2Presentation.Induction.FirstNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor (p : Q2Presentation.Induction.FramedPair) : TypeA non-scalar chief factor of `L_Y` that is **first**: every chief factor strictly
    below it (i.e. with upper term contained in `lower`) is scalar.  This is the manuscript's
    choice `S ◁ P` at l.3616–3623 ("all chief factors below `S` are scalar and `V` is the
    first non-scalar simple factor"), which `lem:collapse` requires for the coprime step
    `[S, Ñ] = 1`. 
          pQ2Presentation.Induction.FramedPair)
      (KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor :
        Q2Presentation.Induction.KernelMinimalQ2Presentation.Induction.KernelMinimal {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.NonScalarChiefFactor p) : TypeThe manuscript's kernel choice (l.3623): `K ◁ Y`, `K ≤ P`, `KS = P`, and `K` is
    **⊆-minimal** with these properties — stated as: any `Y`-normal `K' ≤ K` still joining
    with `S` to `P` equals `K`.  (This, not leastness among all candidates, is what
    `lem:simplehead` and `lem:collapse` use: both apply it to subgroups of `K`.) 
          chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p.toNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor.toNonScalarChiefFactor {p : Q2Presentation.Induction.FramedPair}
      (self : Q2Presentation.Induction.FirstNonScalarChiefFactor p) : Q2Presentation.Induction.NonScalarChiefFactor p)
      (lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) :
        Module.DualModule.Dual.{u_4, u_5} (R : Type u_4) (M : Type u_5) [Semiring R] [AddCommMonoid M] [Module R M] : Type (max u_5 u_4)The left dual space of an R-module M is the R-module of linear maps `M → R`.  (ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2)
          (Q2Presentation.Lifting.NAddQ2Presentation.Lifting.NAdd {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) : TypeThe additive `F₂`-carrier of an elementary kernel. 
            (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian. 
              chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)))
      (hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K) :
        lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`.
          Q2Presentation.Lifting.conjInvDualsQ2Presentation.Lifting.conjInvDuals {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) :
      Submodule (ZMod 2) (Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E))The conjugation-invariant duals `X = (R^∨)^Y = (R^∨)^C` of an
    elementary kernel (consumer spelling of the manuscript's `𝒳_R`,
    §7 l.3720–3723). 
            (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian. 
              chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor))
      (hnelam ≠ 0 : lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) Ne.{u} {α : Sort u} (a b : α) : Prop`a ≠ b`, or `Ne a b` is defined as `¬ (a = b)` or `a = b → False`,
    and asserts that `a` and `b` are not equal.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≠` in identifiers is `ne`. 0)
      (hflipQ2Presentation.Induction.EdgeTwistFlip chief K lam hinv hne :
        Q2Presentation.Induction.EdgeTwistFlipQ2Presentation.Induction.EdgeTwistFlip {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) (hne : lam ≠ 0) : Prop**The isolated nonvanishing residue** (`lem:radicaledge` step 6's
    `[ε̄] ≠ 0 ⟹` perfect-degree-one-duality clause): over every child
    surjection, SOME weak `M`-lift carries a relator cocycle of nonzero edge
    pairing.  This — not the halving itself — is the remaining content of
    `sec7_edgeHalving_gammaA`; dissolution program in
    `audit/BLOCKR_P8_DESIGN.md` §10-P8D. 
          chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K) hnelam ≠ 0) :
      Q2Presentation.Induction.EdgeHalvingGammaAQ2Presentation.Induction.EdgeHalvingGammaA {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) : Prop**The R4a per-fibre halving, candidate source** — THE sharply-scoped
    R4a residual (manuscript `lem:radicaledge` step 6, l.4006–4019: exact
    variation formula + perfect degree-one duality; candidate half =
    `prop:chainmap` l.1687 + `prop:defduality`-grade degree-one content):
    over each `g_C`, exactly half of the weak `M`-lifts are λ-liftable,
    stated division-free per fibre.  Deliberately does NOT assert the fibre
    size `2^{2·dim M}` (that is the separate, PROVEN `lem:elementarystage`
    obligation — design §6.3), and is deliberately NOT conditioned here on
    `¬ ZeroEdge` — the conditioning belongs to its (future, coordinated)
    keep `sec7_edgeHalving_gammaA (hne) (hedge) : EdgeHalvingGammaA …`,
    whose dissolution program is recorded in the design §4.6: (i) the ledger
    variation formula from U3's `edgeDefect` calculus + the weak-base defect
    engine; (ii) `edgeShadow ≠ 0` on the `T`-cocycle space by the
    trivial-chain dévissage over the PROVEN `Sec7TrivialChainData`;
    (iii) the free-orbit torsor bookkeeping. 
        chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)
    **The per-`g` halving from a flipping twist** (`lem:radicaledge` step 6 +
    `prop:nonzeroedge`'s per-fibre clause): a relator cocycle with nonzero
    pairing twists the fibre involutively and flips the obstruction bit, so
    exactly half of each fibre is λ-liftable.  This dissolves the halving
    content of `sec7_edgeHalving_gammaA` down to `EdgeTwistFlip`. 
  • theoremdefined in Q2Presentation/Induction/EdgeTwistWitness.lean
    complete
    theorem Q2Presentation.Induction.zeroEdge_of_separating_dual
      {pQ2Presentation.Induction.FramedPair : Q2Presentation.Induction.FramedPairQ2Presentation.Induction.FramedPair : Type 1A **framed pair** `(𝒴, F)`: a boundary-framed marked target together with a
    boundary frame for it (manuscript Definition 4.1 + `eq:beta`).  This is the index of
    Theorem 4.2: the boundary-framed surjection count `e_Γ^β` is a function of the pair.
    The induction of `sec:induction` ranges over *all* such pairs simultaneously
    ("the induction is stated globally", l.1213), ordered by `|L_Y|`. }
      (chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p : Q2Presentation.Induction.FirstNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor (p : Q2Presentation.Induction.FramedPair) : TypeA non-scalar chief factor of `L_Y` that is **first**: every chief factor strictly
    below it (i.e. with upper term contained in `lower`) is scalar.  This is the manuscript's
    choice `S ◁ P` at l.3616–3623 ("all chief factors below `S` are scalar and `V` is the
    first non-scalar simple factor"), which `lem:collapse` requires for the coprime step
    `[S, Ñ] = 1`.  pQ2Presentation.Induction.FramedPair)
      (KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor :
        Q2Presentation.Induction.KernelMinimalQ2Presentation.Induction.KernelMinimal {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.NonScalarChiefFactor p) : TypeThe manuscript's kernel choice (l.3623): `K ◁ Y`, `K ≤ P`, `KS = P`, and `K` is
    **⊆-minimal** with these properties — stated as: any `Y`-normal `K' ≤ K` still joining
    with `S` to `P` equals `K`.  (This, not leastness among all candidates, is what
    `lem:simplehead` and `lem:collapse` use: both apply it to subgroups of `K`.)  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p.toNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor.toNonScalarChiefFactor {p : Q2Presentation.Induction.FramedPair}
      (self : Q2Presentation.Induction.FirstNonScalarChiefFactor p) : Q2Presentation.Induction.NonScalarChiefFactor p)
      (lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) :
        Module.DualModule.Dual.{u_4, u_5} (R : Type u_4) (M : Type u_5) [Semiring R] [AddCommMonoid M] [Module R M] : Type (max u_5 u_4)The left dual space of an R-module M is the R-module of linear maps `M → R`.  (ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2)
          (Q2Presentation.Lifting.NAddQ2Presentation.Lifting.NAdd {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) : TypeThe additive `F₂`-carrier of an elementary kernel. 
            (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)))
      (hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K) :
        lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`.
          Q2Presentation.Lifting.conjInvDualsQ2Presentation.Lifting.conjInvDuals {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) :
      Submodule (ZMod 2) (Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E))The conjugation-invariant duals `X = (R^∨)^Y = (R^∨)^C` of an
    elementary kernel (consumer spelling of the manuscript's `𝒳_R`,
    §7 l.3720–3723). 
            (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor))
      (hnelam ≠ 0 : lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) Ne.{u} {α : Sort u} (a b : α) : Prop`a ≠ b`, or `Ne a b` is defined as `¬ (a = b)` or `a = b → False`,
    and asserts that `a` and `b` are not equal.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≠` in identifiers is `ne`. 0)
      (θModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.tCoverKernel chief K lam hinv hne)) :
        Module.DualModule.Dual.{u_4, u_5} (R : Type u_4) (M : Type u_5) [Semiring R] [AddCommMonoid M] [Module R M] : Type (max u_5 u_4)The left dual space of an R-module M is the R-module of linear maps `M → R`.  (ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2)
          (Q2Presentation.Lifting.NAddQ2Presentation.Lifting.NAdd {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) : TypeThe additive `F₂`-carrier of an elementary kernel. 
            (Q2Presentation.Induction.tCoverKernelQ2Presentation.Induction.tCoverKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) (hne : lam ≠ 0) :
      Q2Presentation.Lifting.ElementaryKernel
        (Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv)**`T̃ ≤ B_λ` as an elementary kernel** (`lem:radicaledge` step 1 packaged):
    normal, wild, θ-dead, abelian of exponent 2 — the carrier of the twist
    calculus at the cover.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K) hnelam ≠ 0)))
      (hinvθ∀ (y : (Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y)
      (v : Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.tCoverKernel chief K lam hinv hne)),
      θ ((Q2Presentation.Lifting.conjEndN (Q2Presentation.Induction.tCoverKernel chief K lam hinv hne) y) v) = θ v :
        
          (y(Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y :
            (Q2Presentation.Lifting.scalarCoverTargetQ2Presentation.Lifting.scalarCoverTarget {Yt : Q2Presentation.BoundaryFramedTarget} [Finite Yt.Y]
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals E) : Q2Presentation.BoundaryFramedTarget**The scalar pushout target** `B_λ = Y/ker λ` as a framed target
    (same `H`, `E`, frame; `eq:targettower` refined by l.4219–4223). 
                (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)).YQ2Presentation.BoundaryFramedTarget.Y (self : Q2Presentation.BoundaryFramedTarget) : TypeThe finite target group `Y`. )
          (vQ2Presentation.Lifting.NAdd (Q2Presentation.Induction.tCoverKernel chief K lam hinv hne) :
            Q2Presentation.Lifting.NAddQ2Presentation.Lifting.NAdd {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) : TypeThe additive `F₂`-carrier of an elementary kernel. 
              (Q2Presentation.Induction.tCoverKernelQ2Presentation.Induction.tCoverKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) (hne : lam ≠ 0) :
      Q2Presentation.Lifting.ElementaryKernel
        (Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv)**`T̃ ≤ B_λ` as an elementary kernel** (`lem:radicaledge` step 1 packaged):
    normal, wild, θ-dead, abelian of exponent 2 — the carrier of the twist
    calculus at the cover.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K) hnelam ≠ 0)),
          θModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.tCoverKernel chief K lam hinv hne))
              ((Q2Presentation.Lifting.conjEndNQ2Presentation.Lifting.conjEndN {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) (y : Yt.Y) : Module.End (ZMod 2) (Q2Presentation.Lifting.NAdd E)Right conjugation by `y` as an `F₂`-linear endomorphism of `N`. 
                  (Q2Presentation.Induction.tCoverKernelQ2Presentation.Induction.tCoverKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) (hne : lam ≠ 0) :
      Q2Presentation.Lifting.ElementaryKernel
        (Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv)**`T̃ ≤ B_λ` as an elementary kernel** (`lem:radicaledge` step 1 packaged):
    normal, wild, θ-dead, abelian of exponent 2 — the carrier of the twist
    calculus at the cover.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)
                    hnelam ≠ 0)
                  y(Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y)
                vQ2Presentation.Lifting.NAdd (Q2Presentation.Induction.tCoverKernel chief K lam hinv hne)) =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`.
            θModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.tCoverKernel chief K lam hinv hne)) vQ2Presentation.Lifting.NAdd (Q2Presentation.Induction.tCoverKernel chief K lam hinv hne))
      (z(Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y :
        (Q2Presentation.Lifting.scalarCoverTargetQ2Presentation.Lifting.scalarCoverTarget {Yt : Q2Presentation.BoundaryFramedTarget} [Finite Yt.Y]
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals E) : Q2Presentation.BoundaryFramedTarget**The scalar pushout target** `B_λ = Y/ker λ` as a framed target
    (same `H`, `E`, frame; `eq:targettower` refined by l.4219–4223). 
            (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)).YQ2Presentation.BoundaryFramedTarget.Y (self : Q2Presentation.BoundaryFramedTarget) : TypeThe finite target group `Y`. )
      (hzrelz ∈ (Q2Presentation.Lifting.scalarRelKernel (Q2Presentation.Induction.xrKernel chief K) lam hinv).N :
        z(Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`.
          (Q2Presentation.Lifting.scalarRelKernelQ2Presentation.Lifting.scalarRelKernel {Yt : Q2Presentation.BoundaryFramedTarget} [Finite Yt.Y]
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals E) :
      Q2Presentation.Lifting.ElementaryKernel (Q2Presentation.Lifting.scalarCoverTarget E lam hinv)**The relative kernel** `R/ker λ ≤ B_λ` — the deck kernel of the
    central double cover, as an elementary kernel of the cover target.  It
    is `Subgroup.map`-spelled so Noether III applies on the nose. 
              (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)).NQ2Presentation.Lifting.ElementaryKernel.N {Yt : Q2Presentation.BoundaryFramedTarget}
      (self : Q2Presentation.Lifting.ElementaryKernel Yt) : Subgroup Yt.Y)
      (hzθθ (Additive.ofMul ⟨z, ⋯⟩) = 1 : θModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.tCoverKernel chief K lam hinv hne)) (Additive.ofMulAdditive.ofMul.{u} {α : Type u} : α ≃ Additive αReinterpret `x : α` as an element of `Additive α`.  Subtype.mk.{u} {α : Sort u} {p : α → Prop} (val : α) (property : p val) : Subtype pz(Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y,Subtype.mk.{u} {α : Sort u} {p : α → Prop} (val : α) (property : p val) : Subtype p Subtype.mk.{u} {α : Sort u} {p : α → Prop} (val : α) (property : p val) : Subtype p) =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`. 1) :
      Q2Presentation.Induction.ZeroEdgeQ2Presentation.Induction.ZeroEdge {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) : Prop**The zero-edge predicate** (`lem:radicaledge`'s `[ε̄] = 0` branch,
    cocycle-free): some edge complement is normal in the whole cover.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)
    theorem Q2Presentation.Induction.zeroEdge_of_separating_dual
      {pQ2Presentation.Induction.FramedPair :
        Q2Presentation.Induction.FramedPairQ2Presentation.Induction.FramedPair : Type 1A **framed pair** `(𝒴, F)`: a boundary-framed marked target together with a
    boundary frame for it (manuscript Definition 4.1 + `eq:beta`).  This is the index of
    Theorem 4.2: the boundary-framed surjection count `e_Γ^β` is a function of the pair.
    The induction of `sec:induction` ranges over *all* such pairs simultaneously
    ("the induction is stated globally", l.1213), ordered by `|L_Y|`. }
      (chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p :
        Q2Presentation.Induction.FirstNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor (p : Q2Presentation.Induction.FramedPair) : TypeA non-scalar chief factor of `L_Y` that is **first**: every chief factor strictly
    below it (i.e. with upper term contained in `lower`) is scalar.  This is the manuscript's
    choice `S ◁ P` at l.3616–3623 ("all chief factors below `S` are scalar and `V` is the
    first non-scalar simple factor"), which `lem:collapse` requires for the coprime step
    `[S, Ñ] = 1`. 
          pQ2Presentation.Induction.FramedPair)
      (KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor :
        Q2Presentation.Induction.KernelMinimalQ2Presentation.Induction.KernelMinimal {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.NonScalarChiefFactor p) : TypeThe manuscript's kernel choice (l.3623): `K ◁ Y`, `K ≤ P`, `KS = P`, and `K` is
    **⊆-minimal** with these properties — stated as: any `Y`-normal `K' ≤ K` still joining
    with `S` to `P` equals `K`.  (This, not leastness among all candidates, is what
    `lem:simplehead` and `lem:collapse` use: both apply it to subgroups of `K`.) 
          chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p.toNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor.toNonScalarChiefFactor {p : Q2Presentation.Induction.FramedPair}
      (self : Q2Presentation.Induction.FirstNonScalarChiefFactor p) : Q2Presentation.Induction.NonScalarChiefFactor p)
      (lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) :
        Module.DualModule.Dual.{u_4, u_5} (R : Type u_4) (M : Type u_5) [Semiring R] [AddCommMonoid M] [Module R M] : Type (max u_5 u_4)The left dual space of an R-module M is the R-module of linear maps `M → R`.  (ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2)
          (Q2Presentation.Lifting.NAddQ2Presentation.Lifting.NAdd {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) : TypeThe additive `F₂`-carrier of an elementary kernel. 
            (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian. 
              chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)))
      (hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K) :
        lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`.
          Q2Presentation.Lifting.conjInvDualsQ2Presentation.Lifting.conjInvDuals {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) :
      Submodule (ZMod 2) (Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E))The conjugation-invariant duals `X = (R^∨)^Y = (R^∨)^C` of an
    elementary kernel (consumer spelling of the manuscript's `𝒳_R`,
    §7 l.3720–3723). 
            (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian. 
              chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor))
      (hnelam ≠ 0 : lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) Ne.{u} {α : Sort u} (a b : α) : Prop`a ≠ b`, or `Ne a b` is defined as `¬ (a = b)` or `a = b → False`,
    and asserts that `a` and `b` are not equal.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≠` in identifiers is `ne`. 0)
      (θModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.tCoverKernel chief K lam hinv hne)) :
        Module.DualModule.Dual.{u_4, u_5} (R : Type u_4) (M : Type u_5) [Semiring R] [AddCommMonoid M] [Module R M] : Type (max u_5 u_4)The left dual space of an R-module M is the R-module of linear maps `M → R`.  (ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2)
          (Q2Presentation.Lifting.NAddQ2Presentation.Lifting.NAdd {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) : TypeThe additive `F₂`-carrier of an elementary kernel. 
            (Q2Presentation.Induction.tCoverKernelQ2Presentation.Induction.tCoverKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) (hne : lam ≠ 0) :
      Q2Presentation.Lifting.ElementaryKernel
        (Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv)**`T̃ ≤ B_λ` as an elementary kernel** (`lem:radicaledge` step 1 packaged):
    normal, wild, θ-dead, abelian of exponent 2 — the carrier of the twist
    calculus at the cover. 
              chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K) hnelam ≠ 0)))
      (hinvθ∀ (y : (Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y)
      (v : Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.tCoverKernel chief K lam hinv hne)),
      θ ((Q2Presentation.Lifting.conjEndN (Q2Presentation.Induction.tCoverKernel chief K lam hinv hne) y) v) = θ v :
        
          (y(Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y :
            (Q2Presentation.Lifting.scalarCoverTargetQ2Presentation.Lifting.scalarCoverTarget {Yt : Q2Presentation.BoundaryFramedTarget} [Finite Yt.Y]
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals E) : Q2Presentation.BoundaryFramedTarget**The scalar pushout target** `B_λ = Y/ker λ` as a framed target
    (same `H`, `E`, frame; `eq:targettower` refined by l.4219–4223). 
                (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian. 
                  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
                lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)).YQ2Presentation.BoundaryFramedTarget.Y (self : Q2Presentation.BoundaryFramedTarget) : TypeThe finite target group `Y`. )
          (vQ2Presentation.Lifting.NAdd (Q2Presentation.Induction.tCoverKernel chief K lam hinv hne) :
            Q2Presentation.Lifting.NAddQ2Presentation.Lifting.NAdd {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) : TypeThe additive `F₂`-carrier of an elementary kernel. 
              (Q2Presentation.Induction.tCoverKernelQ2Presentation.Induction.tCoverKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) (hne : lam ≠ 0) :
      Q2Presentation.Lifting.ElementaryKernel
        (Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv)**`T̃ ≤ B_λ` as an elementary kernel** (`lem:radicaledge` step 1 packaged):
    normal, wild, θ-dead, abelian of exponent 2 — the carrier of the twist
    calculus at the cover. 
                chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K) hnelam ≠ 0)),
          θModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.tCoverKernel chief K lam hinv hne))
              ((Q2Presentation.Lifting.conjEndNQ2Presentation.Lifting.conjEndN {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) (y : Yt.Y) : Module.End (ZMod 2) (Q2Presentation.Lifting.NAdd E)Right conjugation by `y` as an `F₂`-linear endomorphism of `N`. 
                  (Q2Presentation.Induction.tCoverKernelQ2Presentation.Induction.tCoverKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) (hne : lam ≠ 0) :
      Q2Presentation.Lifting.ElementaryKernel
        (Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv)**`T̃ ≤ B_λ` as an elementary kernel** (`lem:radicaledge` step 1 packaged):
    normal, wild, θ-dead, abelian of exponent 2 — the carrier of the twist
    calculus at the cover. 
                    chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K) hnelam ≠ 0)
                  y(Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y)
                vQ2Presentation.Lifting.NAdd (Q2Presentation.Induction.tCoverKernel chief K lam hinv hne)) =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`.
            θModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.tCoverKernel chief K lam hinv hne)) vQ2Presentation.Lifting.NAdd (Q2Presentation.Induction.tCoverKernel chief K lam hinv hne))
      (z(Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y :
        (Q2Presentation.Lifting.scalarCoverTargetQ2Presentation.Lifting.scalarCoverTarget {Yt : Q2Presentation.BoundaryFramedTarget} [Finite Yt.Y]
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals E) : Q2Presentation.BoundaryFramedTarget**The scalar pushout target** `B_λ = Y/ker λ` as a framed target
    (same `H`, `E`, frame; `eq:targettower` refined by l.4219–4223). 
            (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian. 
              chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
            lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)).YQ2Presentation.BoundaryFramedTarget.Y (self : Q2Presentation.BoundaryFramedTarget) : TypeThe finite target group `Y`. )
      (hzrelz ∈ (Q2Presentation.Lifting.scalarRelKernel (Q2Presentation.Induction.xrKernel chief K) lam hinv).N :
        z(Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`.
          (Q2Presentation.Lifting.scalarRelKernelQ2Presentation.Lifting.scalarRelKernel {Yt : Q2Presentation.BoundaryFramedTarget} [Finite Yt.Y]
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals E) :
      Q2Presentation.Lifting.ElementaryKernel (Q2Presentation.Lifting.scalarCoverTarget E lam hinv)**The relative kernel** `R/ker λ ≤ B_λ` — the deck kernel of the
    central double cover, as an elementary kernel of the cover target.  It
    is `Subgroup.map`-spelled so Noether III applies on the nose. 
              (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian. 
                chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
              lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)).NQ2Presentation.Lifting.ElementaryKernel.N {Yt : Q2Presentation.BoundaryFramedTarget}
      (self : Q2Presentation.Lifting.ElementaryKernel Yt) : Subgroup Yt.Y)
      (hzθθ (Additive.ofMul ⟨z, ⋯⟩) = 1 : θModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.tCoverKernel chief K lam hinv hne)) (Additive.ofMulAdditive.ofMul.{u} {α : Type u} : α ≃ Additive αReinterpret `x : α` as an element of `Additive α`.  Subtype.mk.{u} {α : Sort u} {p : α → Prop} (val : α) (property : p val) : Subtype pz(Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y,Subtype.mk.{u} {α : Sort u} {p : α → Prop} (val : α) (property : p val) : Subtype p Subtype.mk.{u} {α : Sort u} {p : α → Prop} (val : α) (property : p val) : Subtype p) =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`. 1) :
      Q2Presentation.Induction.ZeroEdgeQ2Presentation.Induction.ZeroEdge {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) : Prop**The zero-edge predicate** (`lem:radicaledge`'s `[ε̄] = 0` branch,
    cocycle-free): some edge complement is normal in the whole cover.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p
        KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)
    **A conjugation-invariant functional separating the deck generator
    yields a NORMAL edge complement** (`lem:radicaledge` step 3, dual form):
    its kernel inside `T̃` is conjugation-stable, meets `relN` trivially, and
    fills `T̃` together with `relN`. 
  • theoremdefined in Q2Presentation/Induction/EdgeTwistWitness.lean
    complete
    theorem Q2Presentation.Induction.edgeTwistFlip_of_nonzeroEdge
      {pQ2Presentation.Induction.FramedPair : Q2Presentation.Induction.FramedPairQ2Presentation.Induction.FramedPair : Type 1A **framed pair** `(𝒴, F)`: a boundary-framed marked target together with a
    boundary frame for it (manuscript Definition 4.1 + `eq:beta`).  This is the index of
    Theorem 4.2: the boundary-framed surjection count `e_Γ^β` is a function of the pair.
    The induction of `sec:induction` ranges over *all* such pairs simultaneously
    ("the induction is stated globally", l.1213), ordered by `|L_Y|`. }
      (chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p : Q2Presentation.Induction.FirstNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor (p : Q2Presentation.Induction.FramedPair) : TypeA non-scalar chief factor of `L_Y` that is **first**: every chief factor strictly
    below it (i.e. with upper term contained in `lower`) is scalar.  This is the manuscript's
    choice `S ◁ P` at l.3616–3623 ("all chief factors below `S` are scalar and `V` is the
    first non-scalar simple factor"), which `lem:collapse` requires for the coprime step
    `[S, Ñ] = 1`.  pQ2Presentation.Induction.FramedPair)
      (KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor :
        Q2Presentation.Induction.KernelMinimalQ2Presentation.Induction.KernelMinimal {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.NonScalarChiefFactor p) : TypeThe manuscript's kernel choice (l.3623): `K ◁ Y`, `K ≤ P`, `KS = P`, and `K` is
    **⊆-minimal** with these properties — stated as: any `Y`-normal `K' ≤ K` still joining
    with `S` to `P` equals `K`.  (This, not leastness among all candidates, is what
    `lem:simplehead` and `lem:collapse` use: both apply it to subgroups of `K`.)  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p.toNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor.toNonScalarChiefFactor {p : Q2Presentation.Induction.FramedPair}
      (self : Q2Presentation.Induction.FirstNonScalarChiefFactor p) : Q2Presentation.Induction.NonScalarChiefFactor p)
      (lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) :
        Module.DualModule.Dual.{u_4, u_5} (R : Type u_4) (M : Type u_5) [Semiring R] [AddCommMonoid M] [Module R M] : Type (max u_5 u_4)The left dual space of an R-module M is the R-module of linear maps `M → R`.  (ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2)
          (Q2Presentation.Lifting.NAddQ2Presentation.Lifting.NAdd {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) : TypeThe additive `F₂`-carrier of an elementary kernel. 
            (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)))
      (hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K) :
        lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`.
          Q2Presentation.Lifting.conjInvDualsQ2Presentation.Lifting.conjInvDuals {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) :
      Submodule (ZMod 2) (Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E))The conjugation-invariant duals `X = (R^∨)^Y = (R^∨)^C` of an
    elementary kernel (consumer spelling of the manuscript's `𝒳_R`,
    §7 l.3720–3723). 
            (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor))
      (hnelam ≠ 0 : lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) Ne.{u} {α : Sort u} (a b : α) : Prop`a ≠ b`, or `Ne a b` is defined as `¬ (a = b)` or `a = b → False`,
    and asserts that `a` and `b` are not equal.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≠` in identifiers is `ne`. 0)
      (hedge¬Q2Presentation.Induction.ZeroEdge chief K lam hinv : ¬Not (a : Prop) : Prop`Not p`, or `¬p`, is the negation of `p`. It is defined to be `p → False`,
    so if your goal is `¬p` you can use `intro h` to turn the goal into
    `h : p ⊢ False`, and if you have `hn : ¬p` and `h : p` then `hn h : False`
    and `(hn h).elim` will prove anything.
    For more information: [Propositional Logic](https://lean-lang.org/theorem_proving_in_lean4/propositions_and_proofs.html#propositional-logic)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `¬` in identifiers is `not`.Q2Presentation.Induction.ZeroEdgeQ2Presentation.Induction.ZeroEdge {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) : Prop**The zero-edge predicate** (`lem:radicaledge`'s `[ε̄] = 0` branch,
    cocycle-free): some edge complement is normal in the whole cover.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) :
      Q2Presentation.Induction.EdgeTwistFlipQ2Presentation.Induction.EdgeTwistFlip {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) (hne : lam ≠ 0) : Prop**The isolated nonvanishing residue** (`lem:radicaledge` step 6's
    `[ε̄] ≠ 0 ⟹` perfect-degree-one-duality clause): over every child
    surjection, SOME weak `M`-lift carries a relator cocycle of nonzero edge
    pairing.  This — not the halving itself — is the remaining content of
    `sec7_edgeHalving_gammaA`; dissolution program in
    `audit/BLOCKR_P8_DESIGN.md` §10-P8D.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K) hnelam ≠ 0
    theorem Q2Presentation.Induction.edgeTwistFlip_of_nonzeroEdge
      {pQ2Presentation.Induction.FramedPair :
        Q2Presentation.Induction.FramedPairQ2Presentation.Induction.FramedPair : Type 1A **framed pair** `(𝒴, F)`: a boundary-framed marked target together with a
    boundary frame for it (manuscript Definition 4.1 + `eq:beta`).  This is the index of
    Theorem 4.2: the boundary-framed surjection count `e_Γ^β` is a function of the pair.
    The induction of `sec:induction` ranges over *all* such pairs simultaneously
    ("the induction is stated globally", l.1213), ordered by `|L_Y|`. }
      (chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p :
        Q2Presentation.Induction.FirstNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor (p : Q2Presentation.Induction.FramedPair) : TypeA non-scalar chief factor of `L_Y` that is **first**: every chief factor strictly
    below it (i.e. with upper term contained in `lower`) is scalar.  This is the manuscript's
    choice `S ◁ P` at l.3616–3623 ("all chief factors below `S` are scalar and `V` is the
    first non-scalar simple factor"), which `lem:collapse` requires for the coprime step
    `[S, Ñ] = 1`. 
          pQ2Presentation.Induction.FramedPair)
      (KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor :
        Q2Presentation.Induction.KernelMinimalQ2Presentation.Induction.KernelMinimal {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.NonScalarChiefFactor p) : TypeThe manuscript's kernel choice (l.3623): `K ◁ Y`, `K ≤ P`, `KS = P`, and `K` is
    **⊆-minimal** with these properties — stated as: any `Y`-normal `K' ≤ K` still joining
    with `S` to `P` equals `K`.  (This, not leastness among all candidates, is what
    `lem:simplehead` and `lem:collapse` use: both apply it to subgroups of `K`.) 
          chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p.toNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor.toNonScalarChiefFactor {p : Q2Presentation.Induction.FramedPair}
      (self : Q2Presentation.Induction.FirstNonScalarChiefFactor p) : Q2Presentation.Induction.NonScalarChiefFactor p)
      (lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) :
        Module.DualModule.Dual.{u_4, u_5} (R : Type u_4) (M : Type u_5) [Semiring R] [AddCommMonoid M] [Module R M] : Type (max u_5 u_4)The left dual space of an R-module M is the R-module of linear maps `M → R`.  (ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2)
          (Q2Presentation.Lifting.NAddQ2Presentation.Lifting.NAdd {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) : TypeThe additive `F₂`-carrier of an elementary kernel. 
            (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian. 
              chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)))
      (hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K) :
        lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`.
          Q2Presentation.Lifting.conjInvDualsQ2Presentation.Lifting.conjInvDuals {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) :
      Submodule (ZMod 2) (Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E))The conjugation-invariant duals `X = (R^∨)^Y = (R^∨)^C` of an
    elementary kernel (consumer spelling of the manuscript's `𝒳_R`,
    §7 l.3720–3723). 
            (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian. 
              chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor))
      (hnelam ≠ 0 : lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) Ne.{u} {α : Sort u} (a b : α) : Prop`a ≠ b`, or `Ne a b` is defined as `¬ (a = b)` or `a = b → False`,
    and asserts that `a` and `b` are not equal.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≠` in identifiers is `ne`. 0)
      (hedge¬Q2Presentation.Induction.ZeroEdge chief K lam hinv :
        ¬Not (a : Prop) : Prop`Not p`, or `¬p`, is the negation of `p`. It is defined to be `p → False`,
    so if your goal is `¬p` you can use `intro h` to turn the goal into
    `h : p ⊢ False`, and if you have `hn : ¬p` and `h : p` then `hn h : False`
    and `(hn h).elim` will prove anything.
    For more information: [Propositional Logic](https://lean-lang.org/theorem_proving_in_lean4/propositions_and_proofs.html#propositional-logic)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `¬` in identifiers is `not`.Q2Presentation.Induction.ZeroEdgeQ2Presentation.Induction.ZeroEdge {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) : Prop**The zero-edge predicate** (`lem:radicaledge`'s `[ε̄] = 0` branch,
    cocycle-free): some edge complement is normal in the whole cover. 
            chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) :
      Q2Presentation.Induction.EdgeTwistFlipQ2Presentation.Induction.EdgeTwistFlip {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) (hne : lam ≠ 0) : Prop**The isolated nonvanishing residue** (`lem:radicaledge` step 6's
    `[ε̄] ≠ 0 ⟹` perfect-degree-one-duality clause): over every child
    surjection, SOME weak `M`-lift carries a relator cocycle of nonzero edge
    pairing.  This — not the halving itself — is the remaining content of
    `sec7_edgeHalving_gammaA`; dissolution program in
    `audit/BLOCKR_P8_DESIGN.md` §10-P8D. 
        chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K) hnelam ≠ 0
    **`EdgeTwistFlip` from `¬ ZeroEdge`** — the statement of the interim
    keep `sec7_edgeTwistFlip_gammaA`, proven: over every child surjection some
    weak `M`-lift carries a relator cocycle of edge pairing `1`.  The
    manuscript's `[ε̄] ≠ 0 ⟹` degree-one-duality nonvanishing (`lem:radicaledge`
    step 6, l.4006–4019) is realized by the (♦)-dévissage: `¬ ZeroEdge` places
    the deck generator in the marked augmentation window (else a separating
    invariant functional's kernel is a normal complement), and the diamond
    produces a `T̃`-tuple with relator rows `(z, 0)` — a `TwistCocycle` of
    pairing `relRead z = 1`. 
  • theoremdefined in Q2Presentation/Induction/RadicalEdge.lean
    complete
    theorem Q2Presentation.Induction.edgeComplement_nonempty
      {pQ2Presentation.Induction.FramedPair : Q2Presentation.Induction.FramedPairQ2Presentation.Induction.FramedPair : Type 1A **framed pair** `(𝒴, F)`: a boundary-framed marked target together with a
    boundary frame for it (manuscript Definition 4.1 + `eq:beta`).  This is the index of
    Theorem 4.2: the boundary-framed surjection count `e_Γ^β` is a function of the pair.
    The induction of `sec:induction` ranges over *all* such pairs simultaneously
    ("the induction is stated globally", l.1213), ordered by `|L_Y|`. }
      (chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p : Q2Presentation.Induction.FirstNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor (p : Q2Presentation.Induction.FramedPair) : TypeA non-scalar chief factor of `L_Y` that is **first**: every chief factor strictly
    below it (i.e. with upper term contained in `lower`) is scalar.  This is the manuscript's
    choice `S ◁ P` at l.3616–3623 ("all chief factors below `S` are scalar and `V` is the
    first non-scalar simple factor"), which `lem:collapse` requires for the coprime step
    `[S, Ñ] = 1`.  pQ2Presentation.Induction.FramedPair)
      (KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor :
        Q2Presentation.Induction.KernelMinimalQ2Presentation.Induction.KernelMinimal {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.NonScalarChiefFactor p) : TypeThe manuscript's kernel choice (l.3623): `K ◁ Y`, `K ≤ P`, `KS = P`, and `K` is
    **⊆-minimal** with these properties — stated as: any `Y`-normal `K' ≤ K` still joining
    with `S` to `P` equals `K`.  (This, not leastness among all candidates, is what
    `lem:simplehead` and `lem:collapse` use: both apply it to subgroups of `K`.)  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p.toNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor.toNonScalarChiefFactor {p : Q2Presentation.Induction.FramedPair}
      (self : Q2Presentation.Induction.FirstNonScalarChiefFactor p) : Q2Presentation.Induction.NonScalarChiefFactor p)
      (lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) :
        Module.DualModule.Dual.{u_4, u_5} (R : Type u_4) (M : Type u_5) [Semiring R] [AddCommMonoid M] [Module R M] : Type (max u_5 u_4)The left dual space of an R-module M is the R-module of linear maps `M → R`.  (ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2)
          (Q2Presentation.Lifting.NAddQ2Presentation.Lifting.NAdd {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) : TypeThe additive `F₂`-carrier of an elementary kernel. 
            (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)))
      (hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K) :
        lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`.
          Q2Presentation.Lifting.conjInvDualsQ2Presentation.Lifting.conjInvDuals {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) :
      Submodule (ZMod 2) (Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E))The conjugation-invariant duals `X = (R^∨)^Y = (R^∨)^C` of an
    elementary kernel (consumer spelling of the manuscript's `𝒳_R`,
    §7 l.3720–3723). 
            (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor))
      (hnelam ≠ 0 : lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) Ne.{u} {α : Sort u} (a b : α) : Prop`a ≠ b`, or `Ne a b` is defined as `¬ (a = b)` or `a = b → False`,
    and asserts that `a` and `b` are not equal.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≠` in identifiers is `ne`. 0) :
      NonemptyNonempty.{u} (α : Sort u) : Prop`Nonempty α` is a typeclass that says that `α` is not an empty type,
    that is, there exists an element in the type. It differs from `Inhabited α`
    in that `Nonempty α` is a `Prop`, which means that it does not actually carry
    an element of `α`, only a proof that *there exists* such an element.
    Given `Nonempty α`, you can construct an element of `α` *nonconstructively*
    using `Classical.choice`.
     (Q2Presentation.Induction.EdgeComplementQ2Presentation.Induction.EdgeComplement {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) : TypeAn **edge complement**: a complement to the deck kernel inside the
    `T`-preimage (`lem:radicaledge`'s `s(T)`, subgroup form).  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K))
    theorem Q2Presentation.Induction.edgeComplement_nonempty
      {pQ2Presentation.Induction.FramedPair :
        Q2Presentation.Induction.FramedPairQ2Presentation.Induction.FramedPair : Type 1A **framed pair** `(𝒴, F)`: a boundary-framed marked target together with a
    boundary frame for it (manuscript Definition 4.1 + `eq:beta`).  This is the index of
    Theorem 4.2: the boundary-framed surjection count `e_Γ^β` is a function of the pair.
    The induction of `sec:induction` ranges over *all* such pairs simultaneously
    ("the induction is stated globally", l.1213), ordered by `|L_Y|`. }
      (chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p :
        Q2Presentation.Induction.FirstNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor (p : Q2Presentation.Induction.FramedPair) : TypeA non-scalar chief factor of `L_Y` that is **first**: every chief factor strictly
    below it (i.e. with upper term contained in `lower`) is scalar.  This is the manuscript's
    choice `S ◁ P` at l.3616–3623 ("all chief factors below `S` are scalar and `V` is the
    first non-scalar simple factor"), which `lem:collapse` requires for the coprime step
    `[S, Ñ] = 1`. 
          pQ2Presentation.Induction.FramedPair)
      (KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor :
        Q2Presentation.Induction.KernelMinimalQ2Presentation.Induction.KernelMinimal {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.NonScalarChiefFactor p) : TypeThe manuscript's kernel choice (l.3623): `K ◁ Y`, `K ≤ P`, `KS = P`, and `K` is
    **⊆-minimal** with these properties — stated as: any `Y`-normal `K' ≤ K` still joining
    with `S` to `P` equals `K`.  (This, not leastness among all candidates, is what
    `lem:simplehead` and `lem:collapse` use: both apply it to subgroups of `K`.) 
          chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p.toNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor.toNonScalarChiefFactor {p : Q2Presentation.Induction.FramedPair}
      (self : Q2Presentation.Induction.FirstNonScalarChiefFactor p) : Q2Presentation.Induction.NonScalarChiefFactor p)
      (lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) :
        Module.DualModule.Dual.{u_4, u_5} (R : Type u_4) (M : Type u_5) [Semiring R] [AddCommMonoid M] [Module R M] : Type (max u_5 u_4)The left dual space of an R-module M is the R-module of linear maps `M → R`.  (ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2)
          (Q2Presentation.Lifting.NAddQ2Presentation.Lifting.NAdd {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) : TypeThe additive `F₂`-carrier of an elementary kernel. 
            (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian. 
              chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)))
      (hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K) :
        lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`.
          Q2Presentation.Lifting.conjInvDualsQ2Presentation.Lifting.conjInvDuals {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) :
      Submodule (ZMod 2) (Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E))The conjugation-invariant duals `X = (R^∨)^Y = (R^∨)^C` of an
    elementary kernel (consumer spelling of the manuscript's `𝒳_R`,
    §7 l.3720–3723). 
            (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian. 
              chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor))
      (hnelam ≠ 0 : lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) Ne.{u} {α : Sort u} (a b : α) : Prop`a ≠ b`, or `Ne a b` is defined as `¬ (a = b)` or `a = b → False`,
    and asserts that `a` and `b` are not equal.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≠` in identifiers is `ne`. 0) :
      NonemptyNonempty.{u} (α : Sort u) : Prop`Nonempty α` is a typeclass that says that `α` is not an empty type,
    that is, there exists an element in the type. It differs from `Inhabited α`
    in that `Nonempty α` is a `Prop`, which means that it does not actually carry
    an element of `α`, only a proof that *there exists* such an element.
    Given `Nonempty α`, you can construct an element of `α` *nonconstructively*
    using `Classical.choice`.
    
        (Q2Presentation.Induction.EdgeComplementQ2Presentation.Induction.EdgeComplement {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) : TypeAn **edge complement**: a complement to the deck kernel inside the
    `T`-preimage (`lem:radicaledge`'s `s(T)`, subgroup form). 
          chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K))
    **Edge complements exist** (`lem:radicaledge` step 2): finite
    elementary-abelian complement extension inside `T̃` — a subgroup maximal
    among those meeting `relN` trivially fills up to `T̃`, since any missed
    `T̃`-element (order ≤ 2, central in `T̃`) could be adjoined. 
  • defdefined in Q2Presentation/Induction/RadicalEdge.lean
    complete
    def Q2Presentation.Induction.ZeroEdge
      {pQ2Presentation.Induction.FramedPair : Q2Presentation.Induction.FramedPairQ2Presentation.Induction.FramedPair : Type 1A **framed pair** `(𝒴, F)`: a boundary-framed marked target together with a
    boundary frame for it (manuscript Definition 4.1 + `eq:beta`).  This is the index of
    Theorem 4.2: the boundary-framed surjection count `e_Γ^β` is a function of the pair.
    The induction of `sec:induction` ranges over *all* such pairs simultaneously
    ("the induction is stated globally", l.1213), ordered by `|L_Y|`. }
      (chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p : Q2Presentation.Induction.FirstNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor (p : Q2Presentation.Induction.FramedPair) : TypeA non-scalar chief factor of `L_Y` that is **first**: every chief factor strictly
    below it (i.e. with upper term contained in `lower`) is scalar.  This is the manuscript's
    choice `S ◁ P` at l.3616–3623 ("all chief factors below `S` are scalar and `V` is the
    first non-scalar simple factor"), which `lem:collapse` requires for the coprime step
    `[S, Ñ] = 1`.  pQ2Presentation.Induction.FramedPair)
      (KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor :
        Q2Presentation.Induction.KernelMinimalQ2Presentation.Induction.KernelMinimal {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.NonScalarChiefFactor p) : TypeThe manuscript's kernel choice (l.3623): `K ◁ Y`, `K ≤ P`, `KS = P`, and `K` is
    **⊆-minimal** with these properties — stated as: any `Y`-normal `K' ≤ K` still joining
    with `S` to `P` equals `K`.  (This, not leastness among all candidates, is what
    `lem:simplehead` and `lem:collapse` use: both apply it to subgroups of `K`.)  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p.toNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor.toNonScalarChiefFactor {p : Q2Presentation.Induction.FramedPair}
      (self : Q2Presentation.Induction.FirstNonScalarChiefFactor p) : Q2Presentation.Induction.NonScalarChiefFactor p)
      (lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) :
        Module.DualModule.Dual.{u_4, u_5} (R : Type u_4) (M : Type u_5) [Semiring R] [AddCommMonoid M] [Module R M] : Type (max u_5 u_4)The left dual space of an R-module M is the R-module of linear maps `M → R`.  (ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2)
          (Q2Presentation.Lifting.NAddQ2Presentation.Lifting.NAdd {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) : TypeThe additive `F₂`-carrier of an elementary kernel. 
            (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)))
      (hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K) :
        lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`.
          Q2Presentation.Lifting.conjInvDualsQ2Presentation.Lifting.conjInvDuals {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) :
      Submodule (ZMod 2) (Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E))The conjugation-invariant duals `X = (R^∨)^Y = (R^∨)^C` of an
    elementary kernel (consumer spelling of the manuscript's `𝒳_R`,
    §7 l.3720–3723). 
            (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)) :
      PropThe universe of propositions. `Prop ≡ Sort 0`.
    
    Every proposition is propositionally equal to either `True` or `False`. 
    def Q2Presentation.Induction.ZeroEdge
      {pQ2Presentation.Induction.FramedPair :
        Q2Presentation.Induction.FramedPairQ2Presentation.Induction.FramedPair : Type 1A **framed pair** `(𝒴, F)`: a boundary-framed marked target together with a
    boundary frame for it (manuscript Definition 4.1 + `eq:beta`).  This is the index of
    Theorem 4.2: the boundary-framed surjection count `e_Γ^β` is a function of the pair.
    The induction of `sec:induction` ranges over *all* such pairs simultaneously
    ("the induction is stated globally", l.1213), ordered by `|L_Y|`. }
      (chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p :
        Q2Presentation.Induction.FirstNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor (p : Q2Presentation.Induction.FramedPair) : TypeA non-scalar chief factor of `L_Y` that is **first**: every chief factor strictly
    below it (i.e. with upper term contained in `lower`) is scalar.  This is the manuscript's
    choice `S ◁ P` at l.3616–3623 ("all chief factors below `S` are scalar and `V` is the
    first non-scalar simple factor"), which `lem:collapse` requires for the coprime step
    `[S, Ñ] = 1`. 
          pQ2Presentation.Induction.FramedPair)
      (KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor :
        Q2Presentation.Induction.KernelMinimalQ2Presentation.Induction.KernelMinimal {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.NonScalarChiefFactor p) : TypeThe manuscript's kernel choice (l.3623): `K ◁ Y`, `K ≤ P`, `KS = P`, and `K` is
    **⊆-minimal** with these properties — stated as: any `Y`-normal `K' ≤ K` still joining
    with `S` to `P` equals `K`.  (This, not leastness among all candidates, is what
    `lem:simplehead` and `lem:collapse` use: both apply it to subgroups of `K`.) 
          chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p.toNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor.toNonScalarChiefFactor {p : Q2Presentation.Induction.FramedPair}
      (self : Q2Presentation.Induction.FirstNonScalarChiefFactor p) : Q2Presentation.Induction.NonScalarChiefFactor p)
      (lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) :
        Module.DualModule.Dual.{u_4, u_5} (R : Type u_4) (M : Type u_5) [Semiring R] [AddCommMonoid M] [Module R M] : Type (max u_5 u_4)The left dual space of an R-module M is the R-module of linear maps `M → R`.  (ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2)
          (Q2Presentation.Lifting.NAddQ2Presentation.Lifting.NAdd {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) : TypeThe additive `F₂`-carrier of an elementary kernel. 
            (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian. 
              chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)))
      (hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K) :
        lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`.
          Q2Presentation.Lifting.conjInvDualsQ2Presentation.Lifting.conjInvDuals {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) :
      Submodule (ZMod 2) (Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E))The conjugation-invariant duals `X = (R^∨)^Y = (R^∨)^C` of an
    elementary kernel (consumer spelling of the manuscript's `𝒳_R`,
    §7 l.3720–3723). 
            (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian. 
              chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)) :
      PropThe universe of propositions. `Prop ≡ Sort 0`.
    
    Every proposition is propositionally equal to either `True` or `False`. 
    **The zero-edge predicate** (`lem:radicaledge`'s `[ε̄] = 0` branch,
    cocycle-free): some edge complement is normal in the whole cover. 
  • theoremdefined in Q2Presentation/Induction/RadicalEdge.lean
    complete
    theorem Q2Presentation.Induction.edgeDefect_mCover
      {pQ2Presentation.Induction.FramedPair : Q2Presentation.Induction.FramedPairQ2Presentation.Induction.FramedPair : Type 1A **framed pair** `(𝒴, F)`: a boundary-framed marked target together with a
    boundary frame for it (manuscript Definition 4.1 + `eq:beta`).  This is the index of
    Theorem 4.2: the boundary-framed surjection count `e_Γ^β` is a function of the pair.
    The induction of `sec:induction` ranges over *all* such pairs simultaneously
    ("the induction is stated globally", l.1213), ordered by `|L_Y|`. }
      (chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p : Q2Presentation.Induction.FirstNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor (p : Q2Presentation.Induction.FramedPair) : TypeA non-scalar chief factor of `L_Y` that is **first**: every chief factor strictly
    below it (i.e. with upper term contained in `lower`) is scalar.  This is the manuscript's
    choice `S ◁ P` at l.3616–3623 ("all chief factors below `S` are scalar and `V` is the
    first non-scalar simple factor"), which `lem:collapse` requires for the coprime step
    `[S, Ñ] = 1`.  pQ2Presentation.Induction.FramedPair)
      (KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor :
        Q2Presentation.Induction.KernelMinimalQ2Presentation.Induction.KernelMinimal {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.NonScalarChiefFactor p) : TypeThe manuscript's kernel choice (l.3623): `K ◁ Y`, `K ≤ P`, `KS = P`, and `K` is
    **⊆-minimal** with these properties — stated as: any `Y`-normal `K' ≤ K` still joining
    with `S` to `P` equals `K`.  (This, not leastness among all candidates, is what
    `lem:simplehead` and `lem:collapse` use: both apply it to subgroups of `K`.)  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p.toNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor.toNonScalarChiefFactor {p : Q2Presentation.Induction.FramedPair}
      (self : Q2Presentation.Induction.FirstNonScalarChiefFactor p) : Q2Presentation.Induction.NonScalarChiefFactor p)
      (lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) :
        Module.DualModule.Dual.{u_4, u_5} (R : Type u_4) (M : Type u_5) [Semiring R] [AddCommMonoid M] [Module R M] : Type (max u_5 u_4)The left dual space of an R-module M is the R-module of linear maps `M → R`.  (ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2)
          (Q2Presentation.Lifting.NAddQ2Presentation.Lifting.NAdd {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) : TypeThe additive `F₂`-carrier of an elementary kernel. 
            (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)))
      (hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K) :
        lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`.
          Q2Presentation.Lifting.conjInvDualsQ2Presentation.Lifting.conjInvDuals {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) :
      Submodule (ZMod 2) (Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E))The conjugation-invariant duals `X = (R^∨)^Y = (R^∨)^C` of an
    elementary kernel (consumer spelling of the manuscript's `𝒳_R`,
    §7 l.3720–3723). 
            (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor))
      (DQ2Presentation.Induction.EdgeComplement chief K lam hinv : Q2Presentation.Induction.EdgeComplementQ2Presentation.Induction.EdgeComplement {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) : TypeAn **edge complement**: a complement to the deck kernel inside the
    `T`-preimage (`lem:radicaledge`'s `s(T)`, subgroup form).  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K))
      (hnelam ≠ 0 : lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) Ne.{u} {α : Sort u} (a b : α) : Prop`a ≠ b`, or `Ne a b` is defined as `¬ (a = b)` or `a = b → False`,
    and asserts that `a` and `b` are not equal.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≠` in identifiers is `ne`. 0)
      (b(Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y :
        (Q2Presentation.Lifting.scalarCoverTargetQ2Presentation.Lifting.scalarCoverTarget {Yt : Q2Presentation.BoundaryFramedTarget} [Finite Yt.Y]
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals E) : Q2Presentation.BoundaryFramedTarget**The scalar pushout target** `B_λ = Y/ker λ` as a framed target
    (same `H`, `E`, frame; `eq:targettower` refined by l.4219–4223). 
            (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)).YQ2Presentation.BoundaryFramedTarget.Y (self : Q2Presentation.BoundaryFramedTarget) : TypeThe finite target group `Y`. )
      (hbb ∈ Q2Presentation.Induction.mCover chief K lam hinv : b(Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. Q2Presentation.Induction.mCoverQ2Presentation.Induction.mCover {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) :
      Subgroup (Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).YThe `M`-preimage in the cover: `M̃ = K/(ker λ) ≤ B_λ`.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K))
      (w↥D.W : DQ2Presentation.Induction.EdgeComplement chief K lam hinv.WQ2Presentation.Induction.EdgeComplement.W {p : Q2Presentation.Induction.FramedPair}
      {chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p}
      {K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor}
      {lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))}
      {hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)}
      (self : Q2Presentation.Induction.EdgeComplement chief K lam hinv) :
      Subgroup (Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y) :
      Q2Presentation.Induction.edgeDefectQ2Presentation.Induction.edgeDefect {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K))
      (D : Q2Presentation.Induction.EdgeComplement chief K lam hinv) (hne : lam ≠ 0)
      (b : (Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y) (w : ↥D.W) :
      ZMod 2**The edge defect** of a complement (`eq:radicaledgecochain` in defect
    form): the `relN`-component of the conjugation of a complement element,
    read in `𝔽₂`.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K) DQ2Presentation.Induction.EdgeComplement chief K lam hinv hnelam ≠ 0 b(Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y w↥D.W =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`. 0
    theorem Q2Presentation.Induction.edgeDefect_mCover
      {pQ2Presentation.Induction.FramedPair :
        Q2Presentation.Induction.FramedPairQ2Presentation.Induction.FramedPair : Type 1A **framed pair** `(𝒴, F)`: a boundary-framed marked target together with a
    boundary frame for it (manuscript Definition 4.1 + `eq:beta`).  This is the index of
    Theorem 4.2: the boundary-framed surjection count `e_Γ^β` is a function of the pair.
    The induction of `sec:induction` ranges over *all* such pairs simultaneously
    ("the induction is stated globally", l.1213), ordered by `|L_Y|`. }
      (chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p :
        Q2Presentation.Induction.FirstNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor (p : Q2Presentation.Induction.FramedPair) : TypeA non-scalar chief factor of `L_Y` that is **first**: every chief factor strictly
    below it (i.e. with upper term contained in `lower`) is scalar.  This is the manuscript's
    choice `S ◁ P` at l.3616–3623 ("all chief factors below `S` are scalar and `V` is the
    first non-scalar simple factor"), which `lem:collapse` requires for the coprime step
    `[S, Ñ] = 1`. 
          pQ2Presentation.Induction.FramedPair)
      (KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor :
        Q2Presentation.Induction.KernelMinimalQ2Presentation.Induction.KernelMinimal {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.NonScalarChiefFactor p) : TypeThe manuscript's kernel choice (l.3623): `K ◁ Y`, `K ≤ P`, `KS = P`, and `K` is
    **⊆-minimal** with these properties — stated as: any `Y`-normal `K' ≤ K` still joining
    with `S` to `P` equals `K`.  (This, not leastness among all candidates, is what
    `lem:simplehead` and `lem:collapse` use: both apply it to subgroups of `K`.) 
          chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p.toNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor.toNonScalarChiefFactor {p : Q2Presentation.Induction.FramedPair}
      (self : Q2Presentation.Induction.FirstNonScalarChiefFactor p) : Q2Presentation.Induction.NonScalarChiefFactor p)
      (lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) :
        Module.DualModule.Dual.{u_4, u_5} (R : Type u_4) (M : Type u_5) [Semiring R] [AddCommMonoid M] [Module R M] : Type (max u_5 u_4)The left dual space of an R-module M is the R-module of linear maps `M → R`.  (ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2)
          (Q2Presentation.Lifting.NAddQ2Presentation.Lifting.NAdd {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) : TypeThe additive `F₂`-carrier of an elementary kernel. 
            (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian. 
              chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)))
      (hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K) :
        lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`.
          Q2Presentation.Lifting.conjInvDualsQ2Presentation.Lifting.conjInvDuals {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) :
      Submodule (ZMod 2) (Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E))The conjugation-invariant duals `X = (R^∨)^Y = (R^∨)^C` of an
    elementary kernel (consumer spelling of the manuscript's `𝒳_R`,
    §7 l.3720–3723). 
            (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian. 
              chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor))
      (DQ2Presentation.Induction.EdgeComplement chief K lam hinv :
        Q2Presentation.Induction.EdgeComplementQ2Presentation.Induction.EdgeComplement {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) : TypeAn **edge complement**: a complement to the deck kernel inside the
    `T`-preimage (`lem:radicaledge`'s `s(T)`, subgroup form). 
          chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K))
      (hnelam ≠ 0 : lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) Ne.{u} {α : Sort u} (a b : α) : Prop`a ≠ b`, or `Ne a b` is defined as `¬ (a = b)` or `a = b → False`,
    and asserts that `a` and `b` are not equal.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≠` in identifiers is `ne`. 0)
      (b(Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y :
        (Q2Presentation.Lifting.scalarCoverTargetQ2Presentation.Lifting.scalarCoverTarget {Yt : Q2Presentation.BoundaryFramedTarget} [Finite Yt.Y]
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals E) : Q2Presentation.BoundaryFramedTarget**The scalar pushout target** `B_λ = Y/ker λ` as a framed target
    (same `H`, `E`, frame; `eq:targettower` refined by l.4219–4223). 
            (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian. 
              chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
            lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)).YQ2Presentation.BoundaryFramedTarget.Y (self : Q2Presentation.BoundaryFramedTarget) : TypeThe finite target group `Y`. )
      (hbb ∈ Q2Presentation.Induction.mCover chief K lam hinv :
        b(Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`.
          Q2Presentation.Induction.mCoverQ2Presentation.Induction.mCover {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) :
      Subgroup (Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).YThe `M`-preimage in the cover: `M̃ = K/(ker λ) ≤ B_λ`. 
            chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K))
      (w↥D.W : DQ2Presentation.Induction.EdgeComplement chief K lam hinv.WQ2Presentation.Induction.EdgeComplement.W {p : Q2Presentation.Induction.FramedPair}
      {chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p}
      {K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor}
      {lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))}
      {hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)}
      (self : Q2Presentation.Induction.EdgeComplement chief K lam hinv) :
      Subgroup (Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y) :
      Q2Presentation.Induction.edgeDefectQ2Presentation.Induction.edgeDefect {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K))
      (D : Q2Presentation.Induction.EdgeComplement chief K lam hinv) (hne : lam ≠ 0)
      (b : (Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y) (w : ↥D.W) :
      ZMod 2**The edge defect** of a complement (`eq:radicaledgecochain` in defect
    form): the `relN`-component of the conjugation of a complement element,
    read in `𝔽₂`. 
          chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K) DQ2Presentation.Induction.EdgeComplement chief K lam hinv hnelam ≠ 0 b(Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y w↥D.W =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`.
        0
    **`C`-factorization, vanishing clause** (`lem:radicaledge` step 4,
    concrete): the defect vanishes on `M̃` — for `b ∈ M̃` the conjugation
    leak is the polar pairing against `T`, which is zero by the crux. 
  • theoremdefined in Q2Presentation/Induction/RadicalEdge.lean
    complete
    theorem Q2Presentation.Induction.edgeDefect_mul_mCover
      {pQ2Presentation.Induction.FramedPair : Q2Presentation.Induction.FramedPairQ2Presentation.Induction.FramedPair : Type 1A **framed pair** `(𝒴, F)`: a boundary-framed marked target together with a
    boundary frame for it (manuscript Definition 4.1 + `eq:beta`).  This is the index of
    Theorem 4.2: the boundary-framed surjection count `e_Γ^β` is a function of the pair.
    The induction of `sec:induction` ranges over *all* such pairs simultaneously
    ("the induction is stated globally", l.1213), ordered by `|L_Y|`. }
      (chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p : Q2Presentation.Induction.FirstNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor (p : Q2Presentation.Induction.FramedPair) : TypeA non-scalar chief factor of `L_Y` that is **first**: every chief factor strictly
    below it (i.e. with upper term contained in `lower`) is scalar.  This is the manuscript's
    choice `S ◁ P` at l.3616–3623 ("all chief factors below `S` are scalar and `V` is the
    first non-scalar simple factor"), which `lem:collapse` requires for the coprime step
    `[S, Ñ] = 1`.  pQ2Presentation.Induction.FramedPair)
      (KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor :
        Q2Presentation.Induction.KernelMinimalQ2Presentation.Induction.KernelMinimal {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.NonScalarChiefFactor p) : TypeThe manuscript's kernel choice (l.3623): `K ◁ Y`, `K ≤ P`, `KS = P`, and `K` is
    **⊆-minimal** with these properties — stated as: any `Y`-normal `K' ≤ K` still joining
    with `S` to `P` equals `K`.  (This, not leastness among all candidates, is what
    `lem:simplehead` and `lem:collapse` use: both apply it to subgroups of `K`.)  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p.toNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor.toNonScalarChiefFactor {p : Q2Presentation.Induction.FramedPair}
      (self : Q2Presentation.Induction.FirstNonScalarChiefFactor p) : Q2Presentation.Induction.NonScalarChiefFactor p)
      (lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) :
        Module.DualModule.Dual.{u_4, u_5} (R : Type u_4) (M : Type u_5) [Semiring R] [AddCommMonoid M] [Module R M] : Type (max u_5 u_4)The left dual space of an R-module M is the R-module of linear maps `M → R`.  (ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2)
          (Q2Presentation.Lifting.NAddQ2Presentation.Lifting.NAdd {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) : TypeThe additive `F₂`-carrier of an elementary kernel. 
            (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)))
      (hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K) :
        lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`.
          Q2Presentation.Lifting.conjInvDualsQ2Presentation.Lifting.conjInvDuals {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) :
      Submodule (ZMod 2) (Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E))The conjugation-invariant duals `X = (R^∨)^Y = (R^∨)^C` of an
    elementary kernel (consumer spelling of the manuscript's `𝒳_R`,
    §7 l.3720–3723). 
            (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor))
      (DQ2Presentation.Induction.EdgeComplement chief K lam hinv : Q2Presentation.Induction.EdgeComplementQ2Presentation.Induction.EdgeComplement {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) : TypeAn **edge complement**: a complement to the deck kernel inside the
    `T`-preimage (`lem:radicaledge`'s `s(T)`, subgroup form).  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K))
      (hnelam ≠ 0 : lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) Ne.{u} {α : Sort u} (a b : α) : Prop`a ≠ b`, or `Ne a b` is defined as `¬ (a = b)` or `a = b → False`,
    and asserts that `a` and `b` are not equal.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≠` in identifiers is `ne`. 0)
      (b(Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y m(Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y :
        (Q2Presentation.Lifting.scalarCoverTargetQ2Presentation.Lifting.scalarCoverTarget {Yt : Q2Presentation.BoundaryFramedTarget} [Finite Yt.Y]
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals E) : Q2Presentation.BoundaryFramedTarget**The scalar pushout target** `B_λ = Y/ker λ` as a framed target
    (same `H`, `E`, frame; `eq:targettower` refined by l.4219–4223). 
            (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)).YQ2Presentation.BoundaryFramedTarget.Y (self : Q2Presentation.BoundaryFramedTarget) : TypeThe finite target group `Y`. )
      (hmm ∈ Q2Presentation.Induction.mCover chief K lam hinv : m(Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. Q2Presentation.Induction.mCoverQ2Presentation.Induction.mCover {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) :
      Subgroup (Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).YThe `M`-preimage in the cover: `M̃ = K/(ker λ) ≤ B_λ`.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K))
      (w↥D.W : DQ2Presentation.Induction.EdgeComplement chief K lam hinv.WQ2Presentation.Induction.EdgeComplement.W {p : Q2Presentation.Induction.FramedPair}
      {chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p}
      {K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor}
      {lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))}
      {hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)}
      (self : Q2Presentation.Induction.EdgeComplement chief K lam hinv) :
      Subgroup (Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y) :
      Q2Presentation.Induction.edgeDefectQ2Presentation.Induction.edgeDefect {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K))
      (D : Q2Presentation.Induction.EdgeComplement chief K lam hinv) (hne : lam ≠ 0)
      (b : (Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y) (w : ↥D.W) :
      ZMod 2**The edge defect** of a complement (`eq:radicaledgecochain` in defect
    form): the `relN`-component of the conjugation of a complement element,
    read in `𝔽₂`.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K) DQ2Presentation.Induction.EdgeComplement chief K lam hinv hnelam ≠ 0 (HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.b(Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. m(Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y)HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. w↥D.W =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`.
        Q2Presentation.Induction.edgeDefectQ2Presentation.Induction.edgeDefect {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K))
      (D : Q2Presentation.Induction.EdgeComplement chief K lam hinv) (hne : lam ≠ 0)
      (b : (Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y) (w : ↥D.W) :
      ZMod 2**The edge defect** of a complement (`eq:radicaledgecochain` in defect
    form): the `relN`-component of the conjugation of a complement element,
    read in `𝔽₂`.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K) DQ2Presentation.Induction.EdgeComplement chief K lam hinv hnelam ≠ 0 b(Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y w↥D.W
    theorem Q2Presentation.Induction.edgeDefect_mul_mCover
      {pQ2Presentation.Induction.FramedPair :
        Q2Presentation.Induction.FramedPairQ2Presentation.Induction.FramedPair : Type 1A **framed pair** `(𝒴, F)`: a boundary-framed marked target together with a
    boundary frame for it (manuscript Definition 4.1 + `eq:beta`).  This is the index of
    Theorem 4.2: the boundary-framed surjection count `e_Γ^β` is a function of the pair.
    The induction of `sec:induction` ranges over *all* such pairs simultaneously
    ("the induction is stated globally", l.1213), ordered by `|L_Y|`. }
      (chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p :
        Q2Presentation.Induction.FirstNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor (p : Q2Presentation.Induction.FramedPair) : TypeA non-scalar chief factor of `L_Y` that is **first**: every chief factor strictly
    below it (i.e. with upper term contained in `lower`) is scalar.  This is the manuscript's
    choice `S ◁ P` at l.3616–3623 ("all chief factors below `S` are scalar and `V` is the
    first non-scalar simple factor"), which `lem:collapse` requires for the coprime step
    `[S, Ñ] = 1`. 
          pQ2Presentation.Induction.FramedPair)
      (KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor :
        Q2Presentation.Induction.KernelMinimalQ2Presentation.Induction.KernelMinimal {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.NonScalarChiefFactor p) : TypeThe manuscript's kernel choice (l.3623): `K ◁ Y`, `K ≤ P`, `KS = P`, and `K` is
    **⊆-minimal** with these properties — stated as: any `Y`-normal `K' ≤ K` still joining
    with `S` to `P` equals `K`.  (This, not leastness among all candidates, is what
    `lem:simplehead` and `lem:collapse` use: both apply it to subgroups of `K`.) 
          chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p.toNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor.toNonScalarChiefFactor {p : Q2Presentation.Induction.FramedPair}
      (self : Q2Presentation.Induction.FirstNonScalarChiefFactor p) : Q2Presentation.Induction.NonScalarChiefFactor p)
      (lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) :
        Module.DualModule.Dual.{u_4, u_5} (R : Type u_4) (M : Type u_5) [Semiring R] [AddCommMonoid M] [Module R M] : Type (max u_5 u_4)The left dual space of an R-module M is the R-module of linear maps `M → R`.  (ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2)
          (Q2Presentation.Lifting.NAddQ2Presentation.Lifting.NAdd {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) : TypeThe additive `F₂`-carrier of an elementary kernel. 
            (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian. 
              chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)))
      (hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K) :
        lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`.
          Q2Presentation.Lifting.conjInvDualsQ2Presentation.Lifting.conjInvDuals {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) :
      Submodule (ZMod 2) (Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E))The conjugation-invariant duals `X = (R^∨)^Y = (R^∨)^C` of an
    elementary kernel (consumer spelling of the manuscript's `𝒳_R`,
    §7 l.3720–3723). 
            (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian. 
              chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor))
      (DQ2Presentation.Induction.EdgeComplement chief K lam hinv :
        Q2Presentation.Induction.EdgeComplementQ2Presentation.Induction.EdgeComplement {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) : TypeAn **edge complement**: a complement to the deck kernel inside the
    `T`-preimage (`lem:radicaledge`'s `s(T)`, subgroup form). 
          chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K))
      (hnelam ≠ 0 : lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) Ne.{u} {α : Sort u} (a b : α) : Prop`a ≠ b`, or `Ne a b` is defined as `¬ (a = b)` or `a = b → False`,
    and asserts that `a` and `b` are not equal.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≠` in identifiers is `ne`. 0)
      (b(Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y m(Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y :
        (Q2Presentation.Lifting.scalarCoverTargetQ2Presentation.Lifting.scalarCoverTarget {Yt : Q2Presentation.BoundaryFramedTarget} [Finite Yt.Y]
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals E) : Q2Presentation.BoundaryFramedTarget**The scalar pushout target** `B_λ = Y/ker λ` as a framed target
    (same `H`, `E`, frame; `eq:targettower` refined by l.4219–4223). 
            (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian. 
              chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
            lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)).YQ2Presentation.BoundaryFramedTarget.Y (self : Q2Presentation.BoundaryFramedTarget) : TypeThe finite target group `Y`. )
      (hmm ∈ Q2Presentation.Induction.mCover chief K lam hinv :
        m(Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`.
          Q2Presentation.Induction.mCoverQ2Presentation.Induction.mCover {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) :
      Subgroup (Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).YThe `M`-preimage in the cover: `M̃ = K/(ker λ) ≤ B_λ`. 
            chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K))
      (w↥D.W : DQ2Presentation.Induction.EdgeComplement chief K lam hinv.WQ2Presentation.Induction.EdgeComplement.W {p : Q2Presentation.Induction.FramedPair}
      {chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p}
      {K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor}
      {lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))}
      {hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)}
      (self : Q2Presentation.Induction.EdgeComplement chief K lam hinv) :
      Subgroup (Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y) :
      Q2Presentation.Induction.edgeDefectQ2Presentation.Induction.edgeDefect {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K))
      (D : Q2Presentation.Induction.EdgeComplement chief K lam hinv) (hne : lam ≠ 0)
      (b : (Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y) (w : ↥D.W) :
      ZMod 2**The edge defect** of a complement (`eq:radicaledgecochain` in defect
    form): the `relN`-component of the conjugation of a complement element,
    read in `𝔽₂`. 
          chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K) DQ2Presentation.Induction.EdgeComplement chief K lam hinv hnelam ≠ 0 (HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.b(Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. m(Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y)HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. w↥D.W =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`.
        Q2Presentation.Induction.edgeDefectQ2Presentation.Induction.edgeDefect {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K))
      (D : Q2Presentation.Induction.EdgeComplement chief K lam hinv) (hne : lam ≠ 0)
      (b : (Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y) (w : ↥D.W) :
      ZMod 2**The edge defect** of a complement (`eq:radicaledgecochain` in defect
    form): the `relN`-component of the conjugation of a complement element,
    read in `𝔽₂`. 
          chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K) DQ2Presentation.Induction.EdgeComplement chief K lam hinv hnelam ≠ 0 b(Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y w↥D.W
    **`C`-factorization** (`lem:radicaledge` step 4): the defect depends
    only on the class of `b` modulo `M̃` — i.e. on its image in `C`. 
  • theoremdefined in Q2Presentation/Induction/RadicalEdge.lean
    complete
    theorem Q2Presentation.Induction.zeroEdge_iff_defect
      {pQ2Presentation.Induction.FramedPair : Q2Presentation.Induction.FramedPairQ2Presentation.Induction.FramedPair : Type 1A **framed pair** `(𝒴, F)`: a boundary-framed marked target together with a
    boundary frame for it (manuscript Definition 4.1 + `eq:beta`).  This is the index of
    Theorem 4.2: the boundary-framed surjection count `e_Γ^β` is a function of the pair.
    The induction of `sec:induction` ranges over *all* such pairs simultaneously
    ("the induction is stated globally", l.1213), ordered by `|L_Y|`. }
      (chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p : Q2Presentation.Induction.FirstNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor (p : Q2Presentation.Induction.FramedPair) : TypeA non-scalar chief factor of `L_Y` that is **first**: every chief factor strictly
    below it (i.e. with upper term contained in `lower`) is scalar.  This is the manuscript's
    choice `S ◁ P` at l.3616–3623 ("all chief factors below `S` are scalar and `V` is the
    first non-scalar simple factor"), which `lem:collapse` requires for the coprime step
    `[S, Ñ] = 1`.  pQ2Presentation.Induction.FramedPair)
      (KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor :
        Q2Presentation.Induction.KernelMinimalQ2Presentation.Induction.KernelMinimal {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.NonScalarChiefFactor p) : TypeThe manuscript's kernel choice (l.3623): `K ◁ Y`, `K ≤ P`, `KS = P`, and `K` is
    **⊆-minimal** with these properties — stated as: any `Y`-normal `K' ≤ K` still joining
    with `S` to `P` equals `K`.  (This, not leastness among all candidates, is what
    `lem:simplehead` and `lem:collapse` use: both apply it to subgroups of `K`.)  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p.toNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor.toNonScalarChiefFactor {p : Q2Presentation.Induction.FramedPair}
      (self : Q2Presentation.Induction.FirstNonScalarChiefFactor p) : Q2Presentation.Induction.NonScalarChiefFactor p)
      (lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) :
        Module.DualModule.Dual.{u_4, u_5} (R : Type u_4) (M : Type u_5) [Semiring R] [AddCommMonoid M] [Module R M] : Type (max u_5 u_4)The left dual space of an R-module M is the R-module of linear maps `M → R`.  (ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2)
          (Q2Presentation.Lifting.NAddQ2Presentation.Lifting.NAdd {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) : TypeThe additive `F₂`-carrier of an elementary kernel. 
            (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)))
      (hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K) :
        lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`.
          Q2Presentation.Lifting.conjInvDualsQ2Presentation.Lifting.conjInvDuals {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) :
      Submodule (ZMod 2) (Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E))The conjugation-invariant duals `X = (R^∨)^Y = (R^∨)^C` of an
    elementary kernel (consumer spelling of the manuscript's `𝒳_R`,
    §7 l.3720–3723). 
            (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor))
      (hnelam ≠ 0 : lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) Ne.{u} {α : Sort u} (a b : α) : Prop`a ≠ b`, or `Ne a b` is defined as `¬ (a = b)` or `a = b → False`,
    and asserts that `a` and `b` are not equal.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≠` in identifiers is `ne`. 0) :
      Q2Presentation.Induction.ZeroEdgeQ2Presentation.Induction.ZeroEdge {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) : Prop**The zero-edge predicate** (`lem:radicaledge`'s `[ε̄] = 0` branch,
    cocycle-free): some edge complement is normal in the whole cover.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K) Iff (a b : Prop) : PropIf and only if, or logical bi-implication. `a ↔ b` means that `a` implies `b` and vice versa.
    By `propext`, this implies that `a` and `b` are equal and hence any expression involving `a`
    is equivalent to the corresponding expression with `b` instead.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `↔` in identifiers is `iff`.
    
     * The recommended spelling of `<->` in identifiers is `iff` (prefer `↔` over `<->`).
         DQ2Presentation.Induction.EdgeComplement chief K lam hinv,
          
            (b(Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y :
              (Q2Presentation.Lifting.scalarCoverTargetQ2Presentation.Lifting.scalarCoverTarget {Yt : Q2Presentation.BoundaryFramedTarget} [Finite Yt.Y]
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals E) : Q2Presentation.BoundaryFramedTarget**The scalar pushout target** `B_λ = Y/ker λ` as a framed target
    (same `H`, `E`, frame; `eq:targettower` refined by l.4219–4223). 
                  (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)).YQ2Presentation.BoundaryFramedTarget.Y (self : Q2Presentation.BoundaryFramedTarget) : TypeThe finite target group `Y`. )
            (w↥D.W : DQ2Presentation.Induction.EdgeComplement chief K lam hinv.WQ2Presentation.Induction.EdgeComplement.W {p : Q2Presentation.Induction.FramedPair}
      {chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p}
      {K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor}
      {lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))}
      {hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)}
      (self : Q2Presentation.Induction.EdgeComplement chief K lam hinv) :
      Subgroup (Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y),
            Q2Presentation.Induction.edgeDefectQ2Presentation.Induction.edgeDefect {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K))
      (D : Q2Presentation.Induction.EdgeComplement chief K lam hinv) (hne : lam ≠ 0)
      (b : (Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y) (w : ↥D.W) :
      ZMod 2**The edge defect** of a complement (`eq:radicaledgecochain` in defect
    form): the `relN`-component of the conjugation of a complement element,
    read in `𝔽₂`.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K) DQ2Presentation.Induction.EdgeComplement chief K lam hinv hnelam ≠ 0 b(Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y w↥D.W =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`.
              0
    theorem Q2Presentation.Induction.zeroEdge_iff_defect
      {pQ2Presentation.Induction.FramedPair :
        Q2Presentation.Induction.FramedPairQ2Presentation.Induction.FramedPair : Type 1A **framed pair** `(𝒴, F)`: a boundary-framed marked target together with a
    boundary frame for it (manuscript Definition 4.1 + `eq:beta`).  This is the index of
    Theorem 4.2: the boundary-framed surjection count `e_Γ^β` is a function of the pair.
    The induction of `sec:induction` ranges over *all* such pairs simultaneously
    ("the induction is stated globally", l.1213), ordered by `|L_Y|`. }
      (chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p :
        Q2Presentation.Induction.FirstNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor (p : Q2Presentation.Induction.FramedPair) : TypeA non-scalar chief factor of `L_Y` that is **first**: every chief factor strictly
    below it (i.e. with upper term contained in `lower`) is scalar.  This is the manuscript's
    choice `S ◁ P` at l.3616–3623 ("all chief factors below `S` are scalar and `V` is the
    first non-scalar simple factor"), which `lem:collapse` requires for the coprime step
    `[S, Ñ] = 1`. 
          pQ2Presentation.Induction.FramedPair)
      (KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor :
        Q2Presentation.Induction.KernelMinimalQ2Presentation.Induction.KernelMinimal {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.NonScalarChiefFactor p) : TypeThe manuscript's kernel choice (l.3623): `K ◁ Y`, `K ≤ P`, `KS = P`, and `K` is
    **⊆-minimal** with these properties — stated as: any `Y`-normal `K' ≤ K` still joining
    with `S` to `P` equals `K`.  (This, not leastness among all candidates, is what
    `lem:simplehead` and `lem:collapse` use: both apply it to subgroups of `K`.) 
          chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p.toNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor.toNonScalarChiefFactor {p : Q2Presentation.Induction.FramedPair}
      (self : Q2Presentation.Induction.FirstNonScalarChiefFactor p) : Q2Presentation.Induction.NonScalarChiefFactor p)
      (lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) :
        Module.DualModule.Dual.{u_4, u_5} (R : Type u_4) (M : Type u_5) [Semiring R] [AddCommMonoid M] [Module R M] : Type (max u_5 u_4)The left dual space of an R-module M is the R-module of linear maps `M → R`.  (ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2)
          (Q2Presentation.Lifting.NAddQ2Presentation.Lifting.NAdd {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) : TypeThe additive `F₂`-carrier of an elementary kernel. 
            (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian. 
              chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)))
      (hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K) :
        lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`.
          Q2Presentation.Lifting.conjInvDualsQ2Presentation.Lifting.conjInvDuals {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) :
      Submodule (ZMod 2) (Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E))The conjugation-invariant duals `X = (R^∨)^Y = (R^∨)^C` of an
    elementary kernel (consumer spelling of the manuscript's `𝒳_R`,
    §7 l.3720–3723). 
            (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian. 
              chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor))
      (hnelam ≠ 0 : lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) Ne.{u} {α : Sort u} (a b : α) : Prop`a ≠ b`, or `Ne a b` is defined as `¬ (a = b)` or `a = b → False`,
    and asserts that `a` and `b` are not equal.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≠` in identifiers is `ne`. 0) :
      Q2Presentation.Induction.ZeroEdgeQ2Presentation.Induction.ZeroEdge {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) : Prop**The zero-edge predicate** (`lem:radicaledge`'s `[ε̄] = 0` branch,
    cocycle-free): some edge complement is normal in the whole cover.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p
          KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K) Iff (a b : Prop) : PropIf and only if, or logical bi-implication. `a ↔ b` means that `a` implies `b` and vice versa.
    By `propext`, this implies that `a` and `b` are equal and hence any expression involving `a`
    is equivalent to the corresponding expression with `b` instead.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `↔` in identifiers is `iff`.
    
     * The recommended spelling of `<->` in identifiers is `iff` (prefer `↔` over `<->`).
         DQ2Presentation.Induction.EdgeComplement chief K lam hinv,
          
            (b(Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y :
              (Q2Presentation.Lifting.scalarCoverTargetQ2Presentation.Lifting.scalarCoverTarget {Yt : Q2Presentation.BoundaryFramedTarget} [Finite Yt.Y]
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals E) : Q2Presentation.BoundaryFramedTarget**The scalar pushout target** `B_λ = Y/ker λ` as a framed target
    (same `H`, `E`, frame; `eq:targettower` refined by l.4219–4223). 
                  (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian. 
                    chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
                  lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)).YQ2Presentation.BoundaryFramedTarget.Y (self : Q2Presentation.BoundaryFramedTarget) : TypeThe finite target group `Y`. )
            (w↥D.W : DQ2Presentation.Induction.EdgeComplement chief K lam hinv.WQ2Presentation.Induction.EdgeComplement.W {p : Q2Presentation.Induction.FramedPair}
      {chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p}
      {K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor}
      {lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))}
      {hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)}
      (self : Q2Presentation.Induction.EdgeComplement chief K lam hinv) :
      Subgroup (Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y),
            Q2Presentation.Induction.edgeDefectQ2Presentation.Induction.edgeDefect {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K))
      (D : Q2Presentation.Induction.EdgeComplement chief K lam hinv) (hne : lam ≠ 0)
      (b : (Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y) (w : ↥D.W) :
      ZMod 2**The edge defect** of a complement (`eq:radicaledgecochain` in defect
    form): the `relN`-component of the conjugation of a complement element,
    read in `𝔽₂`. 
                chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K) DQ2Presentation.Induction.EdgeComplement chief K lam hinv hnelam ≠ 0 b(Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y w↥D.W =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`.
              0
    **Zero edge ⟺ identically vanishing defect** (`lem:radicaledge`
    steps 3+7: a complement is normal iff conjugation never leaks into the
    deck kernel). 
  • defdefined in Q2Presentation/Induction/RadicalEdgeHalving.lean
    complete
    def Q2Presentation.Induction.EdgeHalvingGammaA
      {pQ2Presentation.Induction.FramedPair : Q2Presentation.Induction.FramedPairQ2Presentation.Induction.FramedPair : Type 1A **framed pair** `(𝒴, F)`: a boundary-framed marked target together with a
    boundary frame for it (manuscript Definition 4.1 + `eq:beta`).  This is the index of
    Theorem 4.2: the boundary-framed surjection count `e_Γ^β` is a function of the pair.
    The induction of `sec:induction` ranges over *all* such pairs simultaneously
    ("the induction is stated globally", l.1213), ordered by `|L_Y|`. }
      (chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p : Q2Presentation.Induction.FirstNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor (p : Q2Presentation.Induction.FramedPair) : TypeA non-scalar chief factor of `L_Y` that is **first**: every chief factor strictly
    below it (i.e. with upper term contained in `lower`) is scalar.  This is the manuscript's
    choice `S ◁ P` at l.3616–3623 ("all chief factors below `S` are scalar and `V` is the
    first non-scalar simple factor"), which `lem:collapse` requires for the coprime step
    `[S, Ñ] = 1`.  pQ2Presentation.Induction.FramedPair)
      (KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor :
        Q2Presentation.Induction.KernelMinimalQ2Presentation.Induction.KernelMinimal {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.NonScalarChiefFactor p) : TypeThe manuscript's kernel choice (l.3623): `K ◁ Y`, `K ≤ P`, `KS = P`, and `K` is
    **⊆-minimal** with these properties — stated as: any `Y`-normal `K' ≤ K` still joining
    with `S` to `P` equals `K`.  (This, not leastness among all candidates, is what
    `lem:simplehead` and `lem:collapse` use: both apply it to subgroups of `K`.)  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p.toNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor.toNonScalarChiefFactor {p : Q2Presentation.Induction.FramedPair}
      (self : Q2Presentation.Induction.FirstNonScalarChiefFactor p) : Q2Presentation.Induction.NonScalarChiefFactor p)
      (lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) :
        Module.DualModule.Dual.{u_4, u_5} (R : Type u_4) (M : Type u_5) [Semiring R] [AddCommMonoid M] [Module R M] : Type (max u_5 u_4)The left dual space of an R-module M is the R-module of linear maps `M → R`.  (ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2)
          (Q2Presentation.Lifting.NAddQ2Presentation.Lifting.NAdd {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) : TypeThe additive `F₂`-carrier of an elementary kernel. 
            (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)))
      (hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K) :
        lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`.
          Q2Presentation.Lifting.conjInvDualsQ2Presentation.Lifting.conjInvDuals {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) :
      Submodule (ZMod 2) (Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E))The conjugation-invariant duals `X = (R^∨)^Y = (R^∨)^C` of an
    elementary kernel (consumer spelling of the manuscript's `𝒳_R`,
    §7 l.3720–3723). 
            (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)) :
      PropThe universe of propositions. `Prop ≡ Sort 0`.
    
    Every proposition is propositionally equal to either `True` or `False`. 
    def Q2Presentation.Induction.EdgeHalvingGammaA
      {pQ2Presentation.Induction.FramedPair :
        Q2Presentation.Induction.FramedPairQ2Presentation.Induction.FramedPair : Type 1A **framed pair** `(𝒴, F)`: a boundary-framed marked target together with a
    boundary frame for it (manuscript Definition 4.1 + `eq:beta`).  This is the index of
    Theorem 4.2: the boundary-framed surjection count `e_Γ^β` is a function of the pair.
    The induction of `sec:induction` ranges over *all* such pairs simultaneously
    ("the induction is stated globally", l.1213), ordered by `|L_Y|`. }
      (chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p :
        Q2Presentation.Induction.FirstNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor (p : Q2Presentation.Induction.FramedPair) : TypeA non-scalar chief factor of `L_Y` that is **first**: every chief factor strictly
    below it (i.e. with upper term contained in `lower`) is scalar.  This is the manuscript's
    choice `S ◁ P` at l.3616–3623 ("all chief factors below `S` are scalar and `V` is the
    first non-scalar simple factor"), which `lem:collapse` requires for the coprime step
    `[S, Ñ] = 1`. 
          pQ2Presentation.Induction.FramedPair)
      (KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor :
        Q2Presentation.Induction.KernelMinimalQ2Presentation.Induction.KernelMinimal {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.NonScalarChiefFactor p) : TypeThe manuscript's kernel choice (l.3623): `K ◁ Y`, `K ≤ P`, `KS = P`, and `K` is
    **⊆-minimal** with these properties — stated as: any `Y`-normal `K' ≤ K` still joining
    with `S` to `P` equals `K`.  (This, not leastness among all candidates, is what
    `lem:simplehead` and `lem:collapse` use: both apply it to subgroups of `K`.) 
          chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p.toNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor.toNonScalarChiefFactor {p : Q2Presentation.Induction.FramedPair}
      (self : Q2Presentation.Induction.FirstNonScalarChiefFactor p) : Q2Presentation.Induction.NonScalarChiefFactor p)
      (lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) :
        Module.DualModule.Dual.{u_4, u_5} (R : Type u_4) (M : Type u_5) [Semiring R] [AddCommMonoid M] [Module R M] : Type (max u_5 u_4)The left dual space of an R-module M is the R-module of linear maps `M → R`.  (ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2)
          (Q2Presentation.Lifting.NAddQ2Presentation.Lifting.NAdd {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) : TypeThe additive `F₂`-carrier of an elementary kernel. 
            (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian. 
              chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)))
      (hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K) :
        lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`.
          Q2Presentation.Lifting.conjInvDualsQ2Presentation.Lifting.conjInvDuals {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) :
      Submodule (ZMod 2) (Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E))The conjugation-invariant duals `X = (R^∨)^Y = (R^∨)^C` of an
    elementary kernel (consumer spelling of the manuscript's `𝒳_R`,
    §7 l.3720–3723). 
            (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian. 
              chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)) :
      PropThe universe of propositions. `Prop ≡ Sort 0`.
    
    Every proposition is propositionally equal to either `True` or `False`. 
    **The R4a per-fibre halving, candidate source** — THE sharply-scoped
    R4a residual (manuscript `lem:radicaledge` step 6, l.4006–4019: exact
    variation formula + perfect degree-one duality; candidate half =
    `prop:chainmap` l.1687 + `prop:defduality`-grade degree-one content):
    over each `g_C`, exactly half of the weak `M`-lifts are λ-liftable,
    stated division-free per fibre.  Deliberately does NOT assert the fibre
    size `2^{2·dim M}` (that is the separate, PROVEN `lem:elementarystage`
    obligation — design §6.3), and is deliberately NOT conditioned here on
    `¬ ZeroEdge` — the conditioning belongs to its (future, coordinated)
    keep `sec7_edgeHalving_gammaA (hne) (hedge) : EdgeHalvingGammaA …`,
    whose dissolution program is recorded in the design §4.6: (i) the ledger
    variation formula from U3's `edgeDefect` calculus + the weak-base defect
    engine; (ii) `edgeShadow ≠ 0` on the `T`-cocycle space by the
    trivial-chain dévissage over the PROVEN `Sec7TrivialChainData`;
    (iii) the free-orbit torsor bookkeeping. 
  • defdefined in Q2Presentation/Induction/RadicalEdgeHalving.lean
    complete
    def Q2Presentation.Induction.EdgeHalvingGQ2
      {pQ2Presentation.Induction.FramedPair : Q2Presentation.Induction.FramedPairQ2Presentation.Induction.FramedPair : Type 1A **framed pair** `(𝒴, F)`: a boundary-framed marked target together with a
    boundary frame for it (manuscript Definition 4.1 + `eq:beta`).  This is the index of
    Theorem 4.2: the boundary-framed surjection count `e_Γ^β` is a function of the pair.
    The induction of `sec:induction` ranges over *all* such pairs simultaneously
    ("the induction is stated globally", l.1213), ordered by `|L_Y|`. }
      (chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p : Q2Presentation.Induction.FirstNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor (p : Q2Presentation.Induction.FramedPair) : TypeA non-scalar chief factor of `L_Y` that is **first**: every chief factor strictly
    below it (i.e. with upper term contained in `lower`) is scalar.  This is the manuscript's
    choice `S ◁ P` at l.3616–3623 ("all chief factors below `S` are scalar and `V` is the
    first non-scalar simple factor"), which `lem:collapse` requires for the coprime step
    `[S, Ñ] = 1`.  pQ2Presentation.Induction.FramedPair)
      (KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor :
        Q2Presentation.Induction.KernelMinimalQ2Presentation.Induction.KernelMinimal {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.NonScalarChiefFactor p) : TypeThe manuscript's kernel choice (l.3623): `K ◁ Y`, `K ≤ P`, `KS = P`, and `K` is
    **⊆-minimal** with these properties — stated as: any `Y`-normal `K' ≤ K` still joining
    with `S` to `P` equals `K`.  (This, not leastness among all candidates, is what
    `lem:simplehead` and `lem:collapse` use: both apply it to subgroups of `K`.)  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p.toNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor.toNonScalarChiefFactor {p : Q2Presentation.Induction.FramedPair}
      (self : Q2Presentation.Induction.FirstNonScalarChiefFactor p) : Q2Presentation.Induction.NonScalarChiefFactor p)
      (lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) :
        Module.DualModule.Dual.{u_4, u_5} (R : Type u_4) (M : Type u_5) [Semiring R] [AddCommMonoid M] [Module R M] : Type (max u_5 u_4)The left dual space of an R-module M is the R-module of linear maps `M → R`.  (ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2)
          (Q2Presentation.Lifting.NAddQ2Presentation.Lifting.NAdd {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) : TypeThe additive `F₂`-carrier of an elementary kernel. 
            (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)))
      (hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K) :
        lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`.
          Q2Presentation.Lifting.conjInvDualsQ2Presentation.Lifting.conjInvDuals {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) :
      Submodule (ZMod 2) (Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E))The conjugation-invariant duals `X = (R^∨)^Y = (R^∨)^C` of an
    elementary kernel (consumer spelling of the manuscript's `𝒳_R`,
    §7 l.3720–3723). 
            (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)) :
      PropThe universe of propositions. `Prop ≡ Sort 0`.
    
    Every proposition is propositionally equal to either `True` or `False`. 
    def Q2Presentation.Induction.EdgeHalvingGQ2
      {pQ2Presentation.Induction.FramedPair :
        Q2Presentation.Induction.FramedPairQ2Presentation.Induction.FramedPair : Type 1A **framed pair** `(𝒴, F)`: a boundary-framed marked target together with a
    boundary frame for it (manuscript Definition 4.1 + `eq:beta`).  This is the index of
    Theorem 4.2: the boundary-framed surjection count `e_Γ^β` is a function of the pair.
    The induction of `sec:induction` ranges over *all* such pairs simultaneously
    ("the induction is stated globally", l.1213), ordered by `|L_Y|`. }
      (chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p :
        Q2Presentation.Induction.FirstNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor (p : Q2Presentation.Induction.FramedPair) : TypeA non-scalar chief factor of `L_Y` that is **first**: every chief factor strictly
    below it (i.e. with upper term contained in `lower`) is scalar.  This is the manuscript's
    choice `S ◁ P` at l.3616–3623 ("all chief factors below `S` are scalar and `V` is the
    first non-scalar simple factor"), which `lem:collapse` requires for the coprime step
    `[S, Ñ] = 1`. 
          pQ2Presentation.Induction.FramedPair)
      (KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor :
        Q2Presentation.Induction.KernelMinimalQ2Presentation.Induction.KernelMinimal {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.NonScalarChiefFactor p) : TypeThe manuscript's kernel choice (l.3623): `K ◁ Y`, `K ≤ P`, `KS = P`, and `K` is
    **⊆-minimal** with these properties — stated as: any `Y`-normal `K' ≤ K` still joining
    with `S` to `P` equals `K`.  (This, not leastness among all candidates, is what
    `lem:simplehead` and `lem:collapse` use: both apply it to subgroups of `K`.) 
          chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p.toNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor.toNonScalarChiefFactor {p : Q2Presentation.Induction.FramedPair}
      (self : Q2Presentation.Induction.FirstNonScalarChiefFactor p) : Q2Presentation.Induction.NonScalarChiefFactor p)
      (lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) :
        Module.DualModule.Dual.{u_4, u_5} (R : Type u_4) (M : Type u_5) [Semiring R] [AddCommMonoid M] [Module R M] : Type (max u_5 u_4)The left dual space of an R-module M is the R-module of linear maps `M → R`.  (ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2)
          (Q2Presentation.Lifting.NAddQ2Presentation.Lifting.NAdd {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) : TypeThe additive `F₂`-carrier of an elementary kernel. 
            (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian. 
              chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)))
      (hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K) :
        lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`.
          Q2Presentation.Lifting.conjInvDualsQ2Presentation.Lifting.conjInvDuals {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) :
      Submodule (ZMod 2) (Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E))The conjugation-invariant duals `X = (R^∨)^Y = (R^∨)^C` of an
    elementary kernel (consumer spelling of the manuscript's `𝒳_R`,
    §7 l.3720–3723). 
            (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian. 
              chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)) :
      PropThe universe of propositions. `Prop ≡ Sort 0`.
    
    Every proposition is propositionally equal to either `True` or `False`. 
    **The R4a per-fibre halving, local source** (manuscript
    `lem:radicaledge` step 6, l.4006–4019, with `prop:localduality` — NSW
    VII.2, perfectness of the degree-one local pairing — the
    citable-with-derivation trust class of `localObstruction_scalar`,
    BLOCKR_P1_DESIGN §5.3).  Same statement shape as the candidate clause;
    its (future, coordinated) keep is
    `q2_edgeHalving (hne) (hedge) : EdgeHalvingGQ2 …`. 
  • theoremdefined in Q2Presentation/Induction/RadicalEdgeTower.lean
    complete
    theorem Q2Presentation.Induction.tCover_comm
      {pQ2Presentation.Induction.FramedPair : Q2Presentation.Induction.FramedPairQ2Presentation.Induction.FramedPair : Type 1A **framed pair** `(𝒴, F)`: a boundary-framed marked target together with a
    boundary frame for it (manuscript Definition 4.1 + `eq:beta`).  This is the index of
    Theorem 4.2: the boundary-framed surjection count `e_Γ^β` is a function of the pair.
    The induction of `sec:induction` ranges over *all* such pairs simultaneously
    ("the induction is stated globally", l.1213), ordered by `|L_Y|`. }
      (chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p : Q2Presentation.Induction.FirstNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor (p : Q2Presentation.Induction.FramedPair) : TypeA non-scalar chief factor of `L_Y` that is **first**: every chief factor strictly
    below it (i.e. with upper term contained in `lower`) is scalar.  This is the manuscript's
    choice `S ◁ P` at l.3616–3623 ("all chief factors below `S` are scalar and `V` is the
    first non-scalar simple factor"), which `lem:collapse` requires for the coprime step
    `[S, Ñ] = 1`.  pQ2Presentation.Induction.FramedPair)
      (KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor :
        Q2Presentation.Induction.KernelMinimalQ2Presentation.Induction.KernelMinimal {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.NonScalarChiefFactor p) : TypeThe manuscript's kernel choice (l.3623): `K ◁ Y`, `K ≤ P`, `KS = P`, and `K` is
    **⊆-minimal** with these properties — stated as: any `Y`-normal `K' ≤ K` still joining
    with `S` to `P` equals `K`.  (This, not leastness among all candidates, is what
    `lem:simplehead` and `lem:collapse` use: both apply it to subgroups of `K`.)  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p.toNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor.toNonScalarChiefFactor {p : Q2Presentation.Induction.FramedPair}
      (self : Q2Presentation.Induction.FirstNonScalarChiefFactor p) : Q2Presentation.Induction.NonScalarChiefFactor p)
      (lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) :
        Module.DualModule.Dual.{u_4, u_5} (R : Type u_4) (M : Type u_5) [Semiring R] [AddCommMonoid M] [Module R M] : Type (max u_5 u_4)The left dual space of an R-module M is the R-module of linear maps `M → R`.  (ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2)
          (Q2Presentation.Lifting.NAddQ2Presentation.Lifting.NAdd {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) : TypeThe additive `F₂`-carrier of an elementary kernel. 
            (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)))
      (hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K) :
        lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`.
          Q2Presentation.Lifting.conjInvDualsQ2Presentation.Lifting.conjInvDuals {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) :
      Submodule (ZMod 2) (Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E))The conjugation-invariant duals `X = (R^∨)^Y = (R^∨)^C` of an
    elementary kernel (consumer spelling of the manuscript's `𝒳_R`,
    §7 l.3720–3723). 
            (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor))
      (hnelam ≠ 0 : lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) Ne.{u} {α : Sort u} (a b : α) : Prop`a ≠ b`, or `Ne a b` is defined as `¬ (a = b)` or `a = b → False`,
    and asserts that `a` and `b` are not equal.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≠` in identifiers is `ne`. 0)
      (a(Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y b(Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y :
        (Q2Presentation.Lifting.scalarCoverTargetQ2Presentation.Lifting.scalarCoverTarget {Yt : Q2Presentation.BoundaryFramedTarget} [Finite Yt.Y]
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals E) : Q2Presentation.BoundaryFramedTarget**The scalar pushout target** `B_λ = Y/ker λ` as a framed target
    (same `H`, `E`, frame; `eq:targettower` refined by l.4219–4223). 
            (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)).YQ2Presentation.BoundaryFramedTarget.Y (self : Q2Presentation.BoundaryFramedTarget) : TypeThe finite target group `Y`. )
      (haa ∈ Q2Presentation.Induction.tCover chief K lam hinv : a(Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. Q2Presentation.Induction.tCoverQ2Presentation.Induction.tCover {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) :
      Subgroup (Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).YThe `T`-preimage in the cover: `T̃ = TAmb·(ker λ)/(ker λ) ≤ B_λ`.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K))
      (hbb ∈ Q2Presentation.Induction.tCover chief K lam hinv : b(Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. Q2Presentation.Induction.tCoverQ2Presentation.Induction.tCover {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) :
      Subgroup (Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).YThe `T`-preimage in the cover: `T̃ = TAmb·(ker λ)/(ker λ) ≤ B_λ`.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) :
      a(Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. b(Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`. b(Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. a(Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y
    theorem Q2Presentation.Induction.tCover_comm
      {pQ2Presentation.Induction.FramedPair :
        Q2Presentation.Induction.FramedPairQ2Presentation.Induction.FramedPair : Type 1A **framed pair** `(𝒴, F)`: a boundary-framed marked target together with a
    boundary frame for it (manuscript Definition 4.1 + `eq:beta`).  This is the index of
    Theorem 4.2: the boundary-framed surjection count `e_Γ^β` is a function of the pair.
    The induction of `sec:induction` ranges over *all* such pairs simultaneously
    ("the induction is stated globally", l.1213), ordered by `|L_Y|`. }
      (chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p :
        Q2Presentation.Induction.FirstNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor (p : Q2Presentation.Induction.FramedPair) : TypeA non-scalar chief factor of `L_Y` that is **first**: every chief factor strictly
    below it (i.e. with upper term contained in `lower`) is scalar.  This is the manuscript's
    choice `S ◁ P` at l.3616–3623 ("all chief factors below `S` are scalar and `V` is the
    first non-scalar simple factor"), which `lem:collapse` requires for the coprime step
    `[S, Ñ] = 1`. 
          pQ2Presentation.Induction.FramedPair)
      (KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor :
        Q2Presentation.Induction.KernelMinimalQ2Presentation.Induction.KernelMinimal {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.NonScalarChiefFactor p) : TypeThe manuscript's kernel choice (l.3623): `K ◁ Y`, `K ≤ P`, `KS = P`, and `K` is
    **⊆-minimal** with these properties — stated as: any `Y`-normal `K' ≤ K` still joining
    with `S` to `P` equals `K`.  (This, not leastness among all candidates, is what
    `lem:simplehead` and `lem:collapse` use: both apply it to subgroups of `K`.) 
          chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p.toNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor.toNonScalarChiefFactor {p : Q2Presentation.Induction.FramedPair}
      (self : Q2Presentation.Induction.FirstNonScalarChiefFactor p) : Q2Presentation.Induction.NonScalarChiefFactor p)
      (lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) :
        Module.DualModule.Dual.{u_4, u_5} (R : Type u_4) (M : Type u_5) [Semiring R] [AddCommMonoid M] [Module R M] : Type (max u_5 u_4)The left dual space of an R-module M is the R-module of linear maps `M → R`.  (ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2)
          (Q2Presentation.Lifting.NAddQ2Presentation.Lifting.NAdd {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) : TypeThe additive `F₂`-carrier of an elementary kernel. 
            (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian. 
              chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)))
      (hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K) :
        lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`.
          Q2Presentation.Lifting.conjInvDualsQ2Presentation.Lifting.conjInvDuals {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) :
      Submodule (ZMod 2) (Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E))The conjugation-invariant duals `X = (R^∨)^Y = (R^∨)^C` of an
    elementary kernel (consumer spelling of the manuscript's `𝒳_R`,
    §7 l.3720–3723). 
            (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian. 
              chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor))
      (hnelam ≠ 0 : lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) Ne.{u} {α : Sort u} (a b : α) : Prop`a ≠ b`, or `Ne a b` is defined as `¬ (a = b)` or `a = b → False`,
    and asserts that `a` and `b` are not equal.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≠` in identifiers is `ne`. 0)
      (a(Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y b(Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y :
        (Q2Presentation.Lifting.scalarCoverTargetQ2Presentation.Lifting.scalarCoverTarget {Yt : Q2Presentation.BoundaryFramedTarget} [Finite Yt.Y]
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals E) : Q2Presentation.BoundaryFramedTarget**The scalar pushout target** `B_λ = Y/ker λ` as a framed target
    (same `H`, `E`, frame; `eq:targettower` refined by l.4219–4223). 
            (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian. 
              chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
            lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)).YQ2Presentation.BoundaryFramedTarget.Y (self : Q2Presentation.BoundaryFramedTarget) : TypeThe finite target group `Y`. )
      (haa ∈ Q2Presentation.Induction.tCover chief K lam hinv :
        a(Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`.
          Q2Presentation.Induction.tCoverQ2Presentation.Induction.tCover {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) :
      Subgroup (Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).YThe `T`-preimage in the cover: `T̃ = TAmb·(ker λ)/(ker λ) ≤ B_λ`. 
            chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K))
      (hbb ∈ Q2Presentation.Induction.tCover chief K lam hinv :
        b(Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`.
          Q2Presentation.Induction.tCoverQ2Presentation.Induction.tCover {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) :
      Subgroup (Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).YThe `T`-preimage in the cover: `T̃ = TAmb·(ker λ)/(ker λ) ≤ B_λ`. 
            chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) :
      a(Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. b(Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`. b(Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. a(Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y
    **`T̃` is abelian** (`lem:radicaledge` step 1): commutators of
    `TAmb`-elements die in the cover. 
  • theoremdefined in Q2Presentation/Induction/RadicalEdgeTower.lean
    complete
    theorem Q2Presentation.Induction.tCover_mul_self
      {pQ2Presentation.Induction.FramedPair : Q2Presentation.Induction.FramedPairQ2Presentation.Induction.FramedPair : Type 1A **framed pair** `(𝒴, F)`: a boundary-framed marked target together with a
    boundary frame for it (manuscript Definition 4.1 + `eq:beta`).  This is the index of
    Theorem 4.2: the boundary-framed surjection count `e_Γ^β` is a function of the pair.
    The induction of `sec:induction` ranges over *all* such pairs simultaneously
    ("the induction is stated globally", l.1213), ordered by `|L_Y|`. }
      (chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p : Q2Presentation.Induction.FirstNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor (p : Q2Presentation.Induction.FramedPair) : TypeA non-scalar chief factor of `L_Y` that is **first**: every chief factor strictly
    below it (i.e. with upper term contained in `lower`) is scalar.  This is the manuscript's
    choice `S ◁ P` at l.3616–3623 ("all chief factors below `S` are scalar and `V` is the
    first non-scalar simple factor"), which `lem:collapse` requires for the coprime step
    `[S, Ñ] = 1`.  pQ2Presentation.Induction.FramedPair)
      (KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor :
        Q2Presentation.Induction.KernelMinimalQ2Presentation.Induction.KernelMinimal {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.NonScalarChiefFactor p) : TypeThe manuscript's kernel choice (l.3623): `K ◁ Y`, `K ≤ P`, `KS = P`, and `K` is
    **⊆-minimal** with these properties — stated as: any `Y`-normal `K' ≤ K` still joining
    with `S` to `P` equals `K`.  (This, not leastness among all candidates, is what
    `lem:simplehead` and `lem:collapse` use: both apply it to subgroups of `K`.)  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p.toNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor.toNonScalarChiefFactor {p : Q2Presentation.Induction.FramedPair}
      (self : Q2Presentation.Induction.FirstNonScalarChiefFactor p) : Q2Presentation.Induction.NonScalarChiefFactor p)
      (lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) :
        Module.DualModule.Dual.{u_4, u_5} (R : Type u_4) (M : Type u_5) [Semiring R] [AddCommMonoid M] [Module R M] : Type (max u_5 u_4)The left dual space of an R-module M is the R-module of linear maps `M → R`.  (ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2)
          (Q2Presentation.Lifting.NAddQ2Presentation.Lifting.NAdd {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) : TypeThe additive `F₂`-carrier of an elementary kernel. 
            (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)))
      (hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K) :
        lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`.
          Q2Presentation.Lifting.conjInvDualsQ2Presentation.Lifting.conjInvDuals {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) :
      Submodule (ZMod 2) (Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E))The conjugation-invariant duals `X = (R^∨)^Y = (R^∨)^C` of an
    elementary kernel (consumer spelling of the manuscript's `𝒳_R`,
    §7 l.3720–3723). 
            (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor))
      (hnelam ≠ 0 : lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) Ne.{u} {α : Sort u} (a b : α) : Prop`a ≠ b`, or `Ne a b` is defined as `¬ (a = b)` or `a = b → False`,
    and asserts that `a` and `b` are not equal.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≠` in identifiers is `ne`. 0)
      (a(Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y :
        (Q2Presentation.Lifting.scalarCoverTargetQ2Presentation.Lifting.scalarCoverTarget {Yt : Q2Presentation.BoundaryFramedTarget} [Finite Yt.Y]
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals E) : Q2Presentation.BoundaryFramedTarget**The scalar pushout target** `B_λ = Y/ker λ` as a framed target
    (same `H`, `E`, frame; `eq:targettower` refined by l.4219–4223). 
            (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)).YQ2Presentation.BoundaryFramedTarget.Y (self : Q2Presentation.BoundaryFramedTarget) : TypeThe finite target group `Y`. )
      (haa ∈ Q2Presentation.Induction.tCover chief K lam hinv : a(Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. Q2Presentation.Induction.tCoverQ2Presentation.Induction.tCover {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) :
      Subgroup (Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).YThe `T`-preimage in the cover: `T̃ = TAmb·(ker λ)/(ker λ) ≤ B_λ`.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) :
      a(Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. a(Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`. 1
    theorem Q2Presentation.Induction.tCover_mul_self
      {pQ2Presentation.Induction.FramedPair :
        Q2Presentation.Induction.FramedPairQ2Presentation.Induction.FramedPair : Type 1A **framed pair** `(𝒴, F)`: a boundary-framed marked target together with a
    boundary frame for it (manuscript Definition 4.1 + `eq:beta`).  This is the index of
    Theorem 4.2: the boundary-framed surjection count `e_Γ^β` is a function of the pair.
    The induction of `sec:induction` ranges over *all* such pairs simultaneously
    ("the induction is stated globally", l.1213), ordered by `|L_Y|`. }
      (chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p :
        Q2Presentation.Induction.FirstNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor (p : Q2Presentation.Induction.FramedPair) : TypeA non-scalar chief factor of `L_Y` that is **first**: every chief factor strictly
    below it (i.e. with upper term contained in `lower`) is scalar.  This is the manuscript's
    choice `S ◁ P` at l.3616–3623 ("all chief factors below `S` are scalar and `V` is the
    first non-scalar simple factor"), which `lem:collapse` requires for the coprime step
    `[S, Ñ] = 1`. 
          pQ2Presentation.Induction.FramedPair)
      (KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor :
        Q2Presentation.Induction.KernelMinimalQ2Presentation.Induction.KernelMinimal {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.NonScalarChiefFactor p) : TypeThe manuscript's kernel choice (l.3623): `K ◁ Y`, `K ≤ P`, `KS = P`, and `K` is
    **⊆-minimal** with these properties — stated as: any `Y`-normal `K' ≤ K` still joining
    with `S` to `P` equals `K`.  (This, not leastness among all candidates, is what
    `lem:simplehead` and `lem:collapse` use: both apply it to subgroups of `K`.) 
          chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p.toNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor.toNonScalarChiefFactor {p : Q2Presentation.Induction.FramedPair}
      (self : Q2Presentation.Induction.FirstNonScalarChiefFactor p) : Q2Presentation.Induction.NonScalarChiefFactor p)
      (lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) :
        Module.DualModule.Dual.{u_4, u_5} (R : Type u_4) (M : Type u_5) [Semiring R] [AddCommMonoid M] [Module R M] : Type (max u_5 u_4)The left dual space of an R-module M is the R-module of linear maps `M → R`.  (ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2)
          (Q2Presentation.Lifting.NAddQ2Presentation.Lifting.NAdd {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) : TypeThe additive `F₂`-carrier of an elementary kernel. 
            (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian. 
              chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)))
      (hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K) :
        lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`.
          Q2Presentation.Lifting.conjInvDualsQ2Presentation.Lifting.conjInvDuals {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) :
      Submodule (ZMod 2) (Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E))The conjugation-invariant duals `X = (R^∨)^Y = (R^∨)^C` of an
    elementary kernel (consumer spelling of the manuscript's `𝒳_R`,
    §7 l.3720–3723). 
            (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian. 
              chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor))
      (hnelam ≠ 0 : lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) Ne.{u} {α : Sort u} (a b : α) : Prop`a ≠ b`, or `Ne a b` is defined as `¬ (a = b)` or `a = b → False`,
    and asserts that `a` and `b` are not equal.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≠` in identifiers is `ne`. 0)
      (a(Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y :
        (Q2Presentation.Lifting.scalarCoverTargetQ2Presentation.Lifting.scalarCoverTarget {Yt : Q2Presentation.BoundaryFramedTarget} [Finite Yt.Y]
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals E) : Q2Presentation.BoundaryFramedTarget**The scalar pushout target** `B_λ = Y/ker λ` as a framed target
    (same `H`, `E`, frame; `eq:targettower` refined by l.4219–4223). 
            (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian. 
              chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
            lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)).YQ2Presentation.BoundaryFramedTarget.Y (self : Q2Presentation.BoundaryFramedTarget) : TypeThe finite target group `Y`. )
      (haa ∈ Q2Presentation.Induction.tCover chief K lam hinv :
        a(Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`.
          Q2Presentation.Induction.tCoverQ2Presentation.Induction.tCover {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) :
      Subgroup (Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).YThe `T`-preimage in the cover: `T̃ = TAmb·(ker λ)/(ker λ) ≤ B_λ`. 
            chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) :
      a(Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. a(Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`. 1
    **`T̃` has exponent 2** (`lem:radicaledge` step 1): squares of
    `TAmb`-elements die in the cover. 
  • theoremdefined in Q2Presentation/Induction/RadicalEdgeTower.lean
    complete
    theorem Q2Presentation.Induction.mCover_conj_fix
      {pQ2Presentation.Induction.FramedPair : Q2Presentation.Induction.FramedPairQ2Presentation.Induction.FramedPair : Type 1A **framed pair** `(𝒴, F)`: a boundary-framed marked target together with a
    boundary frame for it (manuscript Definition 4.1 + `eq:beta`).  This is the index of
    Theorem 4.2: the boundary-framed surjection count `e_Γ^β` is a function of the pair.
    The induction of `sec:induction` ranges over *all* such pairs simultaneously
    ("the induction is stated globally", l.1213), ordered by `|L_Y|`. }
      (chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p : Q2Presentation.Induction.FirstNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor (p : Q2Presentation.Induction.FramedPair) : TypeA non-scalar chief factor of `L_Y` that is **first**: every chief factor strictly
    below it (i.e. with upper term contained in `lower`) is scalar.  This is the manuscript's
    choice `S ◁ P` at l.3616–3623 ("all chief factors below `S` are scalar and `V` is the
    first non-scalar simple factor"), which `lem:collapse` requires for the coprime step
    `[S, Ñ] = 1`.  pQ2Presentation.Induction.FramedPair)
      (KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor :
        Q2Presentation.Induction.KernelMinimalQ2Presentation.Induction.KernelMinimal {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.NonScalarChiefFactor p) : TypeThe manuscript's kernel choice (l.3623): `K ◁ Y`, `K ≤ P`, `KS = P`, and `K` is
    **⊆-minimal** with these properties — stated as: any `Y`-normal `K' ≤ K` still joining
    with `S` to `P` equals `K`.  (This, not leastness among all candidates, is what
    `lem:simplehead` and `lem:collapse` use: both apply it to subgroups of `K`.)  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p.toNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor.toNonScalarChiefFactor {p : Q2Presentation.Induction.FramedPair}
      (self : Q2Presentation.Induction.FirstNonScalarChiefFactor p) : Q2Presentation.Induction.NonScalarChiefFactor p)
      (lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) :
        Module.DualModule.Dual.{u_4, u_5} (R : Type u_4) (M : Type u_5) [Semiring R] [AddCommMonoid M] [Module R M] : Type (max u_5 u_4)The left dual space of an R-module M is the R-module of linear maps `M → R`.  (ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2)
          (Q2Presentation.Lifting.NAddQ2Presentation.Lifting.NAdd {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) : TypeThe additive `F₂`-carrier of an elementary kernel. 
            (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)))
      (hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K) :
        lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`.
          Q2Presentation.Lifting.conjInvDualsQ2Presentation.Lifting.conjInvDuals {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) :
      Submodule (ZMod 2) (Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E))The conjugation-invariant duals `X = (R^∨)^Y = (R^∨)^C` of an
    elementary kernel (consumer spelling of the manuscript's `𝒳_R`,
    §7 l.3720–3723). 
            (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor))
      (hnelam ≠ 0 : lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) Ne.{u} {α : Sort u} (a b : α) : Prop`a ≠ b`, or `Ne a b` is defined as `¬ (a = b)` or `a = b → False`,
    and asserts that `a` and `b` are not equal.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≠` in identifiers is `ne`. 0)
      (b(Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y :
        (Q2Presentation.Lifting.scalarCoverTargetQ2Presentation.Lifting.scalarCoverTarget {Yt : Q2Presentation.BoundaryFramedTarget} [Finite Yt.Y]
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals E) : Q2Presentation.BoundaryFramedTarget**The scalar pushout target** `B_λ = Y/ker λ` as a framed target
    (same `H`, `E`, frame; `eq:targettower` refined by l.4219–4223). 
            (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)).YQ2Presentation.BoundaryFramedTarget.Y (self : Q2Presentation.BoundaryFramedTarget) : TypeThe finite target group `Y`. )
      (hbb ∈ Q2Presentation.Induction.mCover chief K lam hinv : b(Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. Q2Presentation.Induction.mCoverQ2Presentation.Induction.mCover {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) :
      Subgroup (Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).YThe `M`-preimage in the cover: `M̃ = K/(ker λ) ≤ B_λ`.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K))
      (t(Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y :
        (Q2Presentation.Lifting.scalarCoverTargetQ2Presentation.Lifting.scalarCoverTarget {Yt : Q2Presentation.BoundaryFramedTarget} [Finite Yt.Y]
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals E) : Q2Presentation.BoundaryFramedTarget**The scalar pushout target** `B_λ = Y/ker λ` as a framed target
    (same `H`, `E`, frame; `eq:targettower` refined by l.4219–4223). 
            (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)).YQ2Presentation.BoundaryFramedTarget.Y (self : Q2Presentation.BoundaryFramedTarget) : TypeThe finite target group `Y`. )
      (htt ∈ Q2Presentation.Induction.tCover chief K lam hinv : t(Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. Q2Presentation.Induction.tCoverQ2Presentation.Induction.tCover {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) :
      Subgroup (Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).YThe `T`-preimage in the cover: `T̃ = TAmb·(ker λ)/(ker λ) ≤ B_λ`.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) :
      b(Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. t(Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. b(Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y⁻¹Inv.inv.{u} {α : Type u} [self : Inv α] : α → α`a⁻¹` computes the inverse of `a`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `⁻¹` in identifiers is `inv`. =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`. t(Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y
    theorem Q2Presentation.Induction.mCover_conj_fix
      {pQ2Presentation.Induction.FramedPair :
        Q2Presentation.Induction.FramedPairQ2Presentation.Induction.FramedPair : Type 1A **framed pair** `(𝒴, F)`: a boundary-framed marked target together with a
    boundary frame for it (manuscript Definition 4.1 + `eq:beta`).  This is the index of
    Theorem 4.2: the boundary-framed surjection count `e_Γ^β` is a function of the pair.
    The induction of `sec:induction` ranges over *all* such pairs simultaneously
    ("the induction is stated globally", l.1213), ordered by `|L_Y|`. }
      (chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p :
        Q2Presentation.Induction.FirstNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor (p : Q2Presentation.Induction.FramedPair) : TypeA non-scalar chief factor of `L_Y` that is **first**: every chief factor strictly
    below it (i.e. with upper term contained in `lower`) is scalar.  This is the manuscript's
    choice `S ◁ P` at l.3616–3623 ("all chief factors below `S` are scalar and `V` is the
    first non-scalar simple factor"), which `lem:collapse` requires for the coprime step
    `[S, Ñ] = 1`. 
          pQ2Presentation.Induction.FramedPair)
      (KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor :
        Q2Presentation.Induction.KernelMinimalQ2Presentation.Induction.KernelMinimal {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.NonScalarChiefFactor p) : TypeThe manuscript's kernel choice (l.3623): `K ◁ Y`, `K ≤ P`, `KS = P`, and `K` is
    **⊆-minimal** with these properties — stated as: any `Y`-normal `K' ≤ K` still joining
    with `S` to `P` equals `K`.  (This, not leastness among all candidates, is what
    `lem:simplehead` and `lem:collapse` use: both apply it to subgroups of `K`.) 
          chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p.toNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor.toNonScalarChiefFactor {p : Q2Presentation.Induction.FramedPair}
      (self : Q2Presentation.Induction.FirstNonScalarChiefFactor p) : Q2Presentation.Induction.NonScalarChiefFactor p)
      (lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) :
        Module.DualModule.Dual.{u_4, u_5} (R : Type u_4) (M : Type u_5) [Semiring R] [AddCommMonoid M] [Module R M] : Type (max u_5 u_4)The left dual space of an R-module M is the R-module of linear maps `M → R`.  (ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2)
          (Q2Presentation.Lifting.NAddQ2Presentation.Lifting.NAdd {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) : TypeThe additive `F₂`-carrier of an elementary kernel. 
            (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian. 
              chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)))
      (hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K) :
        lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`.
          Q2Presentation.Lifting.conjInvDualsQ2Presentation.Lifting.conjInvDuals {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) :
      Submodule (ZMod 2) (Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E))The conjugation-invariant duals `X = (R^∨)^Y = (R^∨)^C` of an
    elementary kernel (consumer spelling of the manuscript's `𝒳_R`,
    §7 l.3720–3723). 
            (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian. 
              chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor))
      (hnelam ≠ 0 : lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) Ne.{u} {α : Sort u} (a b : α) : Prop`a ≠ b`, or `Ne a b` is defined as `¬ (a = b)` or `a = b → False`,
    and asserts that `a` and `b` are not equal.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≠` in identifiers is `ne`. 0)
      (b(Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y :
        (Q2Presentation.Lifting.scalarCoverTargetQ2Presentation.Lifting.scalarCoverTarget {Yt : Q2Presentation.BoundaryFramedTarget} [Finite Yt.Y]
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals E) : Q2Presentation.BoundaryFramedTarget**The scalar pushout target** `B_λ = Y/ker λ` as a framed target
    (same `H`, `E`, frame; `eq:targettower` refined by l.4219–4223). 
            (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian. 
              chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
            lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)).YQ2Presentation.BoundaryFramedTarget.Y (self : Q2Presentation.BoundaryFramedTarget) : TypeThe finite target group `Y`. )
      (hbb ∈ Q2Presentation.Induction.mCover chief K lam hinv :
        b(Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`.
          Q2Presentation.Induction.mCoverQ2Presentation.Induction.mCover {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) :
      Subgroup (Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).YThe `M`-preimage in the cover: `M̃ = K/(ker λ) ≤ B_λ`. 
            chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K))
      (t(Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y :
        (Q2Presentation.Lifting.scalarCoverTargetQ2Presentation.Lifting.scalarCoverTarget {Yt : Q2Presentation.BoundaryFramedTarget} [Finite Yt.Y]
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals E) : Q2Presentation.BoundaryFramedTarget**The scalar pushout target** `B_λ = Y/ker λ` as a framed target
    (same `H`, `E`, frame; `eq:targettower` refined by l.4219–4223). 
            (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian. 
              chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
            lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)).YQ2Presentation.BoundaryFramedTarget.Y (self : Q2Presentation.BoundaryFramedTarget) : TypeThe finite target group `Y`. )
      (htt ∈ Q2Presentation.Induction.tCover chief K lam hinv :
        t(Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`.
          Q2Presentation.Induction.tCoverQ2Presentation.Induction.tCover {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) :
      Subgroup (Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).YThe `T`-preimage in the cover: `T̃ = TAmb·(ker λ)/(ker λ) ≤ B_λ`. 
            chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) :
      b(Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. t(Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. b(Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y⁻¹Inv.inv.{u} {α : Type u} [self : Inv α] : α → α`a⁻¹` computes the inverse of `a`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `⁻¹` in identifiers is `inv`. =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`. t(Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y
    **`M̃` centralizes `T̃`** (the concrete inflation input of
    `lem:radicaledge` step 4: the defect of an `M̃`-conjugation is the polar
    pairing against `T`, which vanishes by the crux). 
  • defdefined in Q2Presentation/Induction/RadicalEdgeTower.lean
    complete
    def Q2Presentation.Induction.tCoverCollapse
      {pQ2Presentation.Induction.FramedPair : Q2Presentation.Induction.FramedPairQ2Presentation.Induction.FramedPair : Type 1A **framed pair** `(𝒴, F)`: a boundary-framed marked target together with a
    boundary frame for it (manuscript Definition 4.1 + `eq:beta`).  This is the index of
    Theorem 4.2: the boundary-framed surjection count `e_Γ^β` is a function of the pair.
    The induction of `sec:induction` ranges over *all* such pairs simultaneously
    ("the induction is stated globally", l.1213), ordered by `|L_Y|`. }
      (chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p : Q2Presentation.Induction.FirstNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor (p : Q2Presentation.Induction.FramedPair) : TypeA non-scalar chief factor of `L_Y` that is **first**: every chief factor strictly
    below it (i.e. with upper term contained in `lower`) is scalar.  This is the manuscript's
    choice `S ◁ P` at l.3616–3623 ("all chief factors below `S` are scalar and `V` is the
    first non-scalar simple factor"), which `lem:collapse` requires for the coprime step
    `[S, Ñ] = 1`.  pQ2Presentation.Induction.FramedPair)
      (KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor :
        Q2Presentation.Induction.KernelMinimalQ2Presentation.Induction.KernelMinimal {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.NonScalarChiefFactor p) : TypeThe manuscript's kernel choice (l.3623): `K ◁ Y`, `K ≤ P`, `KS = P`, and `K` is
    **⊆-minimal** with these properties — stated as: any `Y`-normal `K' ≤ K` still joining
    with `S` to `P` equals `K`.  (This, not leastness among all candidates, is what
    `lem:simplehead` and `lem:collapse` use: both apply it to subgroups of `K`.)  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p.toNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor.toNonScalarChiefFactor {p : Q2Presentation.Induction.FramedPair}
      (self : Q2Presentation.Induction.FirstNonScalarChiefFactor p) : Q2Presentation.Induction.NonScalarChiefFactor p)
      (lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) :
        Module.DualModule.Dual.{u_4, u_5} (R : Type u_4) (M : Type u_5) [Semiring R] [AddCommMonoid M] [Module R M] : Type (max u_5 u_4)The left dual space of an R-module M is the R-module of linear maps `M → R`.  (ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2)
          (Q2Presentation.Lifting.NAddQ2Presentation.Lifting.NAdd {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) : TypeThe additive `F₂`-carrier of an elementary kernel. 
            (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)))
      (hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K) :
        lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`.
          Q2Presentation.Lifting.conjInvDualsQ2Presentation.Lifting.conjInvDuals {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) :
      Submodule (ZMod 2) (Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E))The conjugation-invariant duals `X = (R^∨)^Y = (R^∨)^C` of an
    elementary kernel (consumer spelling of the manuscript's `𝒳_R`,
    §7 l.3720–3723). 
            (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)) :
      (Q2Presentation.Lifting.scalarCoverTargetQ2Presentation.Lifting.scalarCoverTarget {Yt : Q2Presentation.BoundaryFramedTarget} [Finite Yt.Y]
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals E) : Q2Presentation.BoundaryFramedTarget**The scalar pushout target** `B_λ = Y/ker λ` as a framed target
    (same `H`, `E`, frame; `eq:targettower` refined by l.4219–4223). 
              (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)).YQ2Presentation.BoundaryFramedTarget.Y (self : Q2Presentation.BoundaryFramedTarget) : TypeThe finite target group `Y`.  HasQuotient.Quotient.{u, v} (A : outParam (Type u)) {B : Type v} [self : HasQuotient A B] : B → Type (max u v)`HasQuotient.Quotient A b` (denoted as `A ⧸ b`) is the quotient of the type `A` by `b`.
    
    This differs from `HasQuotient.quotient'` in that the `A` argument is explicit,
    which is necessary to make Lean show the notation in the goal state.
    
          Q2Presentation.Induction.tCoverQ2Presentation.Induction.tCover {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) :
      Subgroup (Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).YThe `T`-preimage in the cover: `T̃ = TAmb·(ker λ)/(ker λ) ≤ B_λ`.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K) ≃*MulEquiv.{u_9, u_10} (M : Type u_9) (N : Type u_10) [Mul M] [Mul N] : Type (max u_10 u_9)`MulEquiv α β` is the type of an equiv `α ≃ β` which preserves multiplication. 
        (Q2Presentation.Induction.XRZero.xrChildQ2Presentation.Induction.XRZero.xrChild {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPairThe `𝒳_R = 0` child: the quotient framed pair at `N = Φ`-layer.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.
    .YQ2Presentation.BoundaryFramedTarget.Y (self : Q2Presentation.BoundaryFramedTarget) : TypeThe finite target group `Y`.  HasQuotient.Quotient.{u, v} (A : outParam (Type u)) {B : Type v} [self : HasQuotient A B] : B → Type (max u v)`HasQuotient.Quotient A b` (denoted as `A ⧸ b`) is the quotient of the type `A` by `b`.
    
    This differs from `HasQuotient.quotient'` in that the `A` argument is explicit,
    which is necessary to make Lean show the notation in the goal state.
    
          Q2Presentation.Induction.tChildQ2Presentation.Induction.tChild {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Subgroup (Q2Presentation.Induction.XRZero.xrChild chief K).fst.YThe child `T`-layer: `T' = TAmb/Φ(K) ≤ B`.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor
    def Q2Presentation.Induction.tCoverCollapse
      {pQ2Presentation.Induction.FramedPair :
        Q2Presentation.Induction.FramedPairQ2Presentation.Induction.FramedPair : Type 1A **framed pair** `(𝒴, F)`: a boundary-framed marked target together with a
    boundary frame for it (manuscript Definition 4.1 + `eq:beta`).  This is the index of
    Theorem 4.2: the boundary-framed surjection count `e_Γ^β` is a function of the pair.
    The induction of `sec:induction` ranges over *all* such pairs simultaneously
    ("the induction is stated globally", l.1213), ordered by `|L_Y|`. }
      (chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p :
        Q2Presentation.Induction.FirstNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor (p : Q2Presentation.Induction.FramedPair) : TypeA non-scalar chief factor of `L_Y` that is **first**: every chief factor strictly
    below it (i.e. with upper term contained in `lower`) is scalar.  This is the manuscript's
    choice `S ◁ P` at l.3616–3623 ("all chief factors below `S` are scalar and `V` is the
    first non-scalar simple factor"), which `lem:collapse` requires for the coprime step
    `[S, Ñ] = 1`. 
          pQ2Presentation.Induction.FramedPair)
      (KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor :
        Q2Presentation.Induction.KernelMinimalQ2Presentation.Induction.KernelMinimal {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.NonScalarChiefFactor p) : TypeThe manuscript's kernel choice (l.3623): `K ◁ Y`, `K ≤ P`, `KS = P`, and `K` is
    **⊆-minimal** with these properties — stated as: any `Y`-normal `K' ≤ K` still joining
    with `S` to `P` equals `K`.  (This, not leastness among all candidates, is what
    `lem:simplehead` and `lem:collapse` use: both apply it to subgroups of `K`.) 
          chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p.toNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor.toNonScalarChiefFactor {p : Q2Presentation.Induction.FramedPair}
      (self : Q2Presentation.Induction.FirstNonScalarChiefFactor p) : Q2Presentation.Induction.NonScalarChiefFactor p)
      (lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) :
        Module.DualModule.Dual.{u_4, u_5} (R : Type u_4) (M : Type u_5) [Semiring R] [AddCommMonoid M] [Module R M] : Type (max u_5 u_4)The left dual space of an R-module M is the R-module of linear maps `M → R`.  (ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2)
          (Q2Presentation.Lifting.NAddQ2Presentation.Lifting.NAdd {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) : TypeThe additive `F₂`-carrier of an elementary kernel. 
            (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian. 
              chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)))
      (hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K) :
        lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`.
          Q2Presentation.Lifting.conjInvDualsQ2Presentation.Lifting.conjInvDuals {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) :
      Submodule (ZMod 2) (Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E))The conjugation-invariant duals `X = (R^∨)^Y = (R^∨)^C` of an
    elementary kernel (consumer spelling of the manuscript's `𝒳_R`,
    §7 l.3720–3723). 
            (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian. 
              chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)) :
      (Q2Presentation.Lifting.scalarCoverTargetQ2Presentation.Lifting.scalarCoverTarget {Yt : Q2Presentation.BoundaryFramedTarget} [Finite Yt.Y]
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals E) : Q2Presentation.BoundaryFramedTarget**The scalar pushout target** `B_λ = Y/ker λ` as a framed target
    (same `H`, `E`, frame; `eq:targettower` refined by l.4219–4223). 
              (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian. 
                chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
              lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)).YQ2Presentation.BoundaryFramedTarget.Y (self : Q2Presentation.BoundaryFramedTarget) : TypeThe finite target group `Y`.  HasQuotient.Quotient.{u, v} (A : outParam (Type u)) {B : Type v} [self : HasQuotient A B] : B → Type (max u v)`HasQuotient.Quotient A b` (denoted as `A ⧸ b`) is the quotient of the type `A` by `b`.
    
    This differs from `HasQuotient.quotient'` in that the `A` argument is explicit,
    which is necessary to make Lean show the notation in the goal state.
    
          Q2Presentation.Induction.tCoverQ2Presentation.Induction.tCover {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) :
      Subgroup (Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).YThe `T`-preimage in the cover: `T̃ = TAmb·(ker λ)/(ker λ) ≤ B_λ`. 
            chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K) ≃*MulEquiv.{u_9, u_10} (M : Type u_9) (N : Type u_10) [Mul M] [Mul N] : Type (max u_10 u_9)`MulEquiv α β` is the type of an equiv `α ≃ β` which preserves multiplication. 
        (Q2Presentation.Induction.XRZero.xrChildQ2Presentation.Induction.XRZero.xrChild {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPairThe `𝒳_R = 0` child: the quotient framed pair at `N = Φ`-layer. 
                chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.
    .YQ2Presentation.BoundaryFramedTarget.Y (self : Q2Presentation.BoundaryFramedTarget) : TypeThe finite target group `Y`.  HasQuotient.Quotient.{u, v} (A : outParam (Type u)) {B : Type v} [self : HasQuotient A B] : B → Type (max u v)`HasQuotient.Quotient A b` (denoted as `A ⧸ b`) is the quotient of the type `A` by `b`.
    
    This differs from `HasQuotient.quotient'` in that the `A` argument is explicit,
    which is necessary to make Lean show the notation in the goal state.
    
          Q2Presentation.Induction.tChildQ2Presentation.Induction.tChild {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Subgroup (Q2Presentation.Induction.XRZero.xrChild chief K).fst.YThe child `T`-layer: `T' = TAmb/Φ(K) ≤ B`. 
            chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor
    **`B_λ ⧸ T̃ ≃* B ⧸ T'`**: the cover of `B/T` seen from the cover —
    the target of the zero-edge descent (`lem:radicaledge` step 7). 
Proof

Proved in §8 of the paper. Ingredients: Theorem 5.7.

Lemma 8.7 of the paper (Affine T-lifting equation).

Choose the splitting B/T\cong V\rtimes C above and let

e\in H^2(C,T)

be the class obtained by pulling B\to V\rtimes C back along the zero section C\to V\rtimes C. For a lower exact-image map \rho:\Gamma\twoheadrightarrow C, a class

c\in H^1_{\Gamma,\rho}(V)

is the V-coordinate of an actual M-lift if and only if

\partial_{\Gamma,\rho}(c)=\rho^*e \quad\text{in }H^2_{\Gamma,\rho}(T).

For every such class, the number of raw lifts above it is

\mu=|B^1_{\Gamma,\rho}(V)|\,|Z^1_{\Gamma,\rho}(T)|,

which is independent of \rho and has the same value on the two sources.

Lean code for Lemma8.714 declarations
  • theoremdefined in Q2Presentation/Induction/CandidateScalarFrattiniRoute41Proofs.lean
    complete
    theorem Q2Presentation.Induction.centralCover_candidateFrattiniAffineFiberPartition_from_scalarFrattiniRoute41
      {pQ2Presentation.Induction.FramedPair : Q2Presentation.Induction.FramedPairQ2Presentation.Induction.FramedPair : Type 1A **framed pair** `(𝒴, F)`: a boundary-framed marked target together with a
    boundary frame for it (manuscript Definition 4.1 + `eq:beta`).  This is the index of
    Theorem 4.2: the boundary-framed surjection count `e_Γ^β` is a function of the pair.
    The induction of `sec:induction` ranges over *all* such pairs simultaneously
    ("the induction is stated globally", l.1213), ordered by `|L_Y|`. }
      (BQ2Presentation.Induction.MinimalBlock p : Q2Presentation.Induction.MinimalBlockQ2Presentation.Induction.MinimalBlock (p : Q2Presentation.Induction.FramedPair) : Type 1**The §7 minimal non-scalar block.**  Source-uniform module-level data of the
    manuscript tower (`eq:targettower`), with the deep group/representation inputs of
    `lem:simplehead`/`lem:collapse`/`prop:simpleheaddet` isolated as documented fields.  pQ2Presentation.Induction.FramedPair)
      (TQ2Presentation.Induction.CentralCoverElementaryQuotientTowerData B :
        Q2Presentation.Induction.CentralCoverElementaryQuotientTowerDataQ2Presentation.Induction.CentralCoverElementaryQuotientTowerData {p : Q2Presentation.Induction.FramedPair}
      (B : Q2Presentation.Induction.MinimalBlock p) : Type 1A realized elementary quotient tower for `eq:targettower`.
    
    This is the missing target-side finite group datum behind the lower term in
    `eq:Mstage`: the middle quotient `B = Y/R`, the lower quotient `C = Y/K`, and the
    map `B -> C`.  The cardinal equations record the two quotient steps in a form
    that proves strict decrease.
    
    The current `MinimalBlock` supplies the abstract modules, but not this realized
    quotient tower.  BQ2Presentation.Induction.MinimalBlock p)
      (DQ2Presentation.Induction.CentralCoverCandidateMiddleRLiftObstructionMapData B T :
        Q2Presentation.Induction.CentralCoverCandidateMiddleRLiftObstructionMapDataQ2Presentation.Induction.CentralCoverCandidateMiddleRLiftObstructionMapData {p : Q2Presentation.Induction.FramedPair}
      (B : Q2Presentation.Induction.MinimalBlock p)
      (T : Q2Presentation.Induction.CentralCoverElementaryQuotientTowerData B) : TypeCandidate `R`-lift obstruction map on the canonical middle exact-image
    index.
    
    The index is theorem-level:
    `centralCover_candidateMiddleExactImageIndexBaseData B T` is the finite set of
    middle boundary-framed exact-image maps (`def:Xgamma`).  The residual content is
    only the semantic `R`-valued obstruction evaluation of
    `lem:obstructionseparation` on that index. 
          BQ2Presentation.Induction.MinimalBlock p TQ2Presentation.Induction.CentralCoverElementaryQuotientTowerData B) :
      NonemptyNonempty.{u} (α : Sort u) : Prop`Nonempty α` is a typeclass that says that `α` is not an empty type,
    that is, there exists an element in the type. It differs from `Inhabited α`
    in that `Nonempty α` is a `Prop`, which means that it does not actually carry
    an element of `α`, only a proof that *there exists* such an element.
    Given `Nonempty α`, you can construct an element of `α` *nonconstructively*
    using `Classical.choice`.
    
        (Q2Presentation.Induction.CentralCoverCandidateFrattiniExactImageSurjectivityDataQ2Presentation.Induction.CentralCoverCandidateFrattiniExactImageSurjectivityData
      {p : Q2Presentation.Induction.FramedPair} (B : Q2Presentation.Induction.MinimalBlock p)
      (T : Q2Presentation.Induction.CentralCoverElementaryQuotientTowerData B)
      (O :
        Q2Presentation.Induction.CentralCoverSourceObstructionData B Q2Presentation.Induction.centralCoverCandidateSource)
      (Z : Q2Presentation.Induction.CentralCoverSourceCocycleData B)
      (F :
        Q2Presentation.Induction.CentralCoverSourceLiftFibers B Q2Presentation.Induction.centralCoverCandidateSource O Z) :
      TypeFrattini exact-image surjectivity packet.
    
    This is the remaining exact-image content of `prop:finalfourier`: the
    unobstructed affine lift fibres partition the top exact-image maps, and the
    Frattini identity `R = Phi(K)` makes every unobstructed final `R`-lift
    surjective onto the top target. 
          BQ2Presentation.Induction.MinimalBlock p TQ2Presentation.Induction.CentralCoverElementaryQuotientTowerData B DQ2Presentation.Induction.CentralCoverCandidateMiddleRLiftObstructionMapData B T.obstructionIndexToBaseMapDataQ2Presentation.Induction.CentralCoverCandidateMiddleRLiftObstructionMapData.obstructionIndexToBaseMapData
      {p : Q2Presentation.Induction.FramedPair} {B : Q2Presentation.Induction.MinimalBlock p}
      {T : Q2Presentation.Induction.CentralCoverElementaryQuotientTowerData B}
      (D : Q2Presentation.Induction.CentralCoverCandidateMiddleRLiftObstructionMapData B T) :
      Q2Presentation.Induction.CentralCoverCandidateObstructionIndexToBaseMapData B TReassemble the obstruction-index-to-base packet.  Since the chosen index is
    the middle exact-image source itself, the forgetful map is the canonical one
    already stored in `centralCover_candidateMiddleExactImageIndexBaseData`. .OQ2Presentation.Induction.CentralCoverCandidateObstructionIndexToBaseMapData.O {p : Q2Presentation.Induction.FramedPair}
      {B : Q2Presentation.Induction.MinimalBlock p} {T : Q2Presentation.Induction.CentralCoverElementaryQuotientTowerData B}
      (self : Q2Presentation.Induction.CentralCoverCandidateObstructionIndexToBaseMapData B T) :
      Q2Presentation.Induction.CentralCoverSourceObstructionData B Q2Presentation.Induction.centralCoverCandidateSource DQ2Presentation.Induction.CentralCoverCandidateMiddleRLiftObstructionMapData B T.affineFiberTorsorDataQ2Presentation.Induction.CentralCoverCandidateMiddleRLiftObstructionMapData.affineFiberTorsorData
      {p : Q2Presentation.Induction.FramedPair} {B : Q2Presentation.Induction.MinimalBlock p}
      {T : Q2Presentation.Induction.CentralCoverElementaryQuotientTowerData B}
      (D : Q2Presentation.Induction.CentralCoverCandidateMiddleRLiftObstructionMapData B T) :
      Q2Presentation.Induction.CentralCoverCandidateAffineFiberTorsorData B D.obstructionIndexToBaseMapData.OThe canonical affine-fibre torsor attached to the semantic obstruction map.
    This is theorem-level once the obstruction datum has been fixed. .ZQ2Presentation.Induction.CentralCoverCandidateAffineFiberTorsorData.Z {p : Q2Presentation.Induction.FramedPair}
      {B : Q2Presentation.Induction.MinimalBlock p}
      {O :
        Q2Presentation.Induction.CentralCoverSourceObstructionData B Q2Presentation.Induction.centralCoverCandidateSource}
      (self : Q2Presentation.Induction.CentralCoverCandidateAffineFiberTorsorData B O) :
      Q2Presentation.Induction.CentralCoverSourceCocycleData B
          DQ2Presentation.Induction.CentralCoverCandidateMiddleRLiftObstructionMapData B T.affineFiberTorsorDataQ2Presentation.Induction.CentralCoverCandidateMiddleRLiftObstructionMapData.affineFiberTorsorData
      {p : Q2Presentation.Induction.FramedPair} {B : Q2Presentation.Induction.MinimalBlock p}
      {T : Q2Presentation.Induction.CentralCoverElementaryQuotientTowerData B}
      (D : Q2Presentation.Induction.CentralCoverCandidateMiddleRLiftObstructionMapData B T) :
      Q2Presentation.Induction.CentralCoverCandidateAffineFiberTorsorData B D.obstructionIndexToBaseMapData.OThe canonical affine-fibre torsor attached to the semantic obstruction map.
    This is theorem-level once the obstruction datum has been fixed. .FQ2Presentation.Induction.CentralCoverCandidateAffineFiberTorsorData.F {p : Q2Presentation.Induction.FramedPair}
      {B : Q2Presentation.Induction.MinimalBlock p}
      {O :
        Q2Presentation.Induction.CentralCoverSourceObstructionData B Q2Presentation.Induction.centralCoverCandidateSource}
      (self : Q2Presentation.Induction.CentralCoverCandidateAffineFiberTorsorData B O) :
      Q2Presentation.Induction.CentralCoverSourceLiftFibers B Q2Presentation.Induction.centralCoverCandidateSource O self.Z)
    theorem Q2Presentation.Induction.centralCover_candidateFrattiniAffineFiberPartition_from_scalarFrattiniRoute41
      {pQ2Presentation.Induction.FramedPair :
        Q2Presentation.Induction.FramedPairQ2Presentation.Induction.FramedPair : Type 1A **framed pair** `(𝒴, F)`: a boundary-framed marked target together with a
    boundary frame for it (manuscript Definition 4.1 + `eq:beta`).  This is the index of
    Theorem 4.2: the boundary-framed surjection count `e_Γ^β` is a function of the pair.
    The induction of `sec:induction` ranges over *all* such pairs simultaneously
    ("the induction is stated globally", l.1213), ordered by `|L_Y|`. }
      (BQ2Presentation.Induction.MinimalBlock p :
        Q2Presentation.Induction.MinimalBlockQ2Presentation.Induction.MinimalBlock (p : Q2Presentation.Induction.FramedPair) : Type 1**The §7 minimal non-scalar block.**  Source-uniform module-level data of the
    manuscript tower (`eq:targettower`), with the deep group/representation inputs of
    `lem:simplehead`/`lem:collapse`/`prop:simpleheaddet` isolated as documented fields. 
          pQ2Presentation.Induction.FramedPair)
      (TQ2Presentation.Induction.CentralCoverElementaryQuotientTowerData B :
        Q2Presentation.Induction.CentralCoverElementaryQuotientTowerDataQ2Presentation.Induction.CentralCoverElementaryQuotientTowerData {p : Q2Presentation.Induction.FramedPair}
      (B : Q2Presentation.Induction.MinimalBlock p) : Type 1A realized elementary quotient tower for `eq:targettower`.
    
    This is the missing target-side finite group datum behind the lower term in
    `eq:Mstage`: the middle quotient `B = Y/R`, the lower quotient `C = Y/K`, and the
    map `B -> C`.  The cardinal equations record the two quotient steps in a form
    that proves strict decrease.
    
    The current `MinimalBlock` supplies the abstract modules, but not this realized
    quotient tower. 
          BQ2Presentation.Induction.MinimalBlock p)
      (DQ2Presentation.Induction.CentralCoverCandidateMiddleRLiftObstructionMapData B T :
        Q2Presentation.Induction.CentralCoverCandidateMiddleRLiftObstructionMapDataQ2Presentation.Induction.CentralCoverCandidateMiddleRLiftObstructionMapData {p : Q2Presentation.Induction.FramedPair}
      (B : Q2Presentation.Induction.MinimalBlock p)
      (T : Q2Presentation.Induction.CentralCoverElementaryQuotientTowerData B) : TypeCandidate `R`-lift obstruction map on the canonical middle exact-image
    index.
    
    The index is theorem-level:
    `centralCover_candidateMiddleExactImageIndexBaseData B T` is the finite set of
    middle boundary-framed exact-image maps (`def:Xgamma`).  The residual content is
    only the semantic `R`-valued obstruction evaluation of
    `lem:obstructionseparation` on that index. 
          BQ2Presentation.Induction.MinimalBlock p TQ2Presentation.Induction.CentralCoverElementaryQuotientTowerData B) :
      NonemptyNonempty.{u} (α : Sort u) : Prop`Nonempty α` is a typeclass that says that `α` is not an empty type,
    that is, there exists an element in the type. It differs from `Inhabited α`
    in that `Nonempty α` is a `Prop`, which means that it does not actually carry
    an element of `α`, only a proof that *there exists* such an element.
    Given `Nonempty α`, you can construct an element of `α` *nonconstructively*
    using `Classical.choice`.
    
        (Q2Presentation.Induction.CentralCoverCandidateFrattiniExactImageSurjectivityDataQ2Presentation.Induction.CentralCoverCandidateFrattiniExactImageSurjectivityData
      {p : Q2Presentation.Induction.FramedPair} (B : Q2Presentation.Induction.MinimalBlock p)
      (T : Q2Presentation.Induction.CentralCoverElementaryQuotientTowerData B)
      (O :
        Q2Presentation.Induction.CentralCoverSourceObstructionData B Q2Presentation.Induction.centralCoverCandidateSource)
      (Z : Q2Presentation.Induction.CentralCoverSourceCocycleData B)
      (F :
        Q2Presentation.Induction.CentralCoverSourceLiftFibers B Q2Presentation.Induction.centralCoverCandidateSource O Z) :
      TypeFrattini exact-image surjectivity packet.
    
    This is the remaining exact-image content of `prop:finalfourier`: the
    unobstructed affine lift fibres partition the top exact-image maps, and the
    Frattini identity `R = Phi(K)` makes every unobstructed final `R`-lift
    surjective onto the top target. 
          BQ2Presentation.Induction.MinimalBlock p TQ2Presentation.Induction.CentralCoverElementaryQuotientTowerData B
          DQ2Presentation.Induction.CentralCoverCandidateMiddleRLiftObstructionMapData B T.obstructionIndexToBaseMapDataQ2Presentation.Induction.CentralCoverCandidateMiddleRLiftObstructionMapData.obstructionIndexToBaseMapData
      {p : Q2Presentation.Induction.FramedPair} {B : Q2Presentation.Induction.MinimalBlock p}
      {T : Q2Presentation.Induction.CentralCoverElementaryQuotientTowerData B}
      (D : Q2Presentation.Induction.CentralCoverCandidateMiddleRLiftObstructionMapData B T) :
      Q2Presentation.Induction.CentralCoverCandidateObstructionIndexToBaseMapData B TReassemble the obstruction-index-to-base packet.  Since the chosen index is
    the middle exact-image source itself, the forgetful map is the canonical one
    already stored in `centralCover_candidateMiddleExactImageIndexBaseData`. .OQ2Presentation.Induction.CentralCoverCandidateObstructionIndexToBaseMapData.O {p : Q2Presentation.Induction.FramedPair}
      {B : Q2Presentation.Induction.MinimalBlock p} {T : Q2Presentation.Induction.CentralCoverElementaryQuotientTowerData B}
      (self : Q2Presentation.Induction.CentralCoverCandidateObstructionIndexToBaseMapData B T) :
      Q2Presentation.Induction.CentralCoverSourceObstructionData B Q2Presentation.Induction.centralCoverCandidateSource
          DQ2Presentation.Induction.CentralCoverCandidateMiddleRLiftObstructionMapData B T.affineFiberTorsorDataQ2Presentation.Induction.CentralCoverCandidateMiddleRLiftObstructionMapData.affineFiberTorsorData
      {p : Q2Presentation.Induction.FramedPair} {B : Q2Presentation.Induction.MinimalBlock p}
      {T : Q2Presentation.Induction.CentralCoverElementaryQuotientTowerData B}
      (D : Q2Presentation.Induction.CentralCoverCandidateMiddleRLiftObstructionMapData B T) :
      Q2Presentation.Induction.CentralCoverCandidateAffineFiberTorsorData B D.obstructionIndexToBaseMapData.OThe canonical affine-fibre torsor attached to the semantic obstruction map.
    This is theorem-level once the obstruction datum has been fixed. .ZQ2Presentation.Induction.CentralCoverCandidateAffineFiberTorsorData.Z {p : Q2Presentation.Induction.FramedPair}
      {B : Q2Presentation.Induction.MinimalBlock p}
      {O :
        Q2Presentation.Induction.CentralCoverSourceObstructionData B Q2Presentation.Induction.centralCoverCandidateSource}
      (self : Q2Presentation.Induction.CentralCoverCandidateAffineFiberTorsorData B O) :
      Q2Presentation.Induction.CentralCoverSourceCocycleData B
          DQ2Presentation.Induction.CentralCoverCandidateMiddleRLiftObstructionMapData B T.affineFiberTorsorDataQ2Presentation.Induction.CentralCoverCandidateMiddleRLiftObstructionMapData.affineFiberTorsorData
      {p : Q2Presentation.Induction.FramedPair} {B : Q2Presentation.Induction.MinimalBlock p}
      {T : Q2Presentation.Induction.CentralCoverElementaryQuotientTowerData B}
      (D : Q2Presentation.Induction.CentralCoverCandidateMiddleRLiftObstructionMapData B T) :
      Q2Presentation.Induction.CentralCoverCandidateAffineFiberTorsorData B D.obstructionIndexToBaseMapData.OThe canonical affine-fibre torsor attached to the semantic obstruction map.
    This is theorem-level once the obstruction datum has been fixed. .FQ2Presentation.Induction.CentralCoverCandidateAffineFiberTorsorData.F {p : Q2Presentation.Induction.FramedPair}
      {B : Q2Presentation.Induction.MinimalBlock p}
      {O :
        Q2Presentation.Induction.CentralCoverSourceObstructionData B Q2Presentation.Induction.centralCoverCandidateSource}
      (self : Q2Presentation.Induction.CentralCoverCandidateAffineFiberTorsorData B O) :
      Q2Presentation.Induction.CentralCoverSourceLiftFibers B Q2Presentation.Induction.centralCoverCandidateSource O self.Z)
    Route41 Frattini exact-image partition through the base/fibre coordinate
    actual closer packets.
    
    Manuscript anchor: Section 8, pages 43--49, especially
    `lem:affinelifting` and `prop:finalfourier`: top exact-image maps are
    identified with unobstructed middle base points together with affine
    `R`-lift coordinates. 
  • theoremdefined in Q2Presentation/Induction/CentralCoverFineResiduals.lean
    complete
    theorem Q2Presentation.Induction.centralCover_candidateLiftFibers
      {pQ2Presentation.Induction.FramedPair : Q2Presentation.Induction.FramedPairQ2Presentation.Induction.FramedPair : Type 1A **framed pair** `(𝒴, F)`: a boundary-framed marked target together with a
    boundary frame for it (manuscript Definition 4.1 + `eq:beta`).  This is the index of
    Theorem 4.2: the boundary-framed surjection count `e_Γ^β` is a function of the pair.
    The induction of `sec:induction` ranges over *all* such pairs simultaneously
    ("the induction is stated globally", l.1213), ordered by `|L_Y|`. }
      (BQ2Presentation.Induction.MinimalBlock p : Q2Presentation.Induction.MinimalBlockQ2Presentation.Induction.MinimalBlock (p : Q2Presentation.Induction.FramedPair) : Type 1**The §7 minimal non-scalar block.**  Source-uniform module-level data of the
    manuscript tower (`eq:targettower`), with the deep group/representation inputs of
    `lem:simplehead`/`lem:collapse`/`prop:simpleheaddet` isolated as documented fields.  pQ2Presentation.Induction.FramedPair)
      (OQ2Presentation.Induction.CentralCoverSourceObstructionData B
      (Q2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GammaA p.fst p.snd) :
        Q2Presentation.Induction.CentralCoverSourceObstructionDataQ2Presentation.Induction.CentralCoverSourceObstructionData {p : Q2Presentation.Induction.FramedPair}
      (B : Q2Presentation.Induction.MinimalBlock p) (S : Type) : Type 1Source-specific exact-image obstruction index and obstruction map.
    
    Manuscript anchors: `def:Xgamma`, `lem:obstructionseparation`, and the
    `o_R : X_Gamma(B) -> O_R` input to `prop:finalfourier`.  BQ2Presentation.Induction.MinimalBlock p
          (Q2Presentation.boundaryFramedSurjQ2Presentation.boundaryFramedSurj {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ)
      (Yt : Q2Presentation.BoundaryFramedTarget) (F : Q2Presentation.BoundaryFrame Yt) : TypeThe **boundary-framed surjections** `e_Γ^β(𝒴)` (manuscript `eq:eGamma`): the
    continuous surjections `f : Γ ↠ Y` whose induced map to `H × E` is the prescribed
    `β ∘ b_Γ`, i.e. `q_Y ∘ f = β ∘ b_Γ`.  This is the subtype counted in Theorem 4.2;
    its cardinality is `e_Γ^β(𝒴)`. 
            Q2Presentation.boundaryPackage_GammaAQ2Presentation.boundaryPackage_GammaA : Q2Presentation.BoundaryPackage Q2Presentation.GammaA**The candidate boundary package** (manuscript Prop 3.14, `prop:compatiblemarking`;
    plan Turn 4 §6).  The Stage-C data of `Γ_A`: the common tame quotient `gammaTameMap`,
    the maximal pro-`2` quotient `p : Γ_A ⟶ Π`, and the common unramified character
    `ν = gammaTameMap ≫ ν_t`, through which both factor.  pQ2Presentation.Induction.FramedPair.fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.
     pQ2Presentation.Induction.FramedPair.sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.
    ))
      (ZQ2Presentation.Induction.CentralCoverSourceCocycleData B : Q2Presentation.Induction.CentralCoverSourceCocycleDataQ2Presentation.Induction.CentralCoverSourceCocycleData {p : Q2Presentation.Induction.FramedPair}
      (B : Q2Presentation.Induction.MinimalBlock p) : Type 1Source-specific `Z^1_Gamma(R)` group with the common size `z_R`.
    
    Manuscript anchors: `lem:affinelifting`, `eq:mumultiplicity`, and the
    source-interface lift-multiplicity comparison.  BQ2Presentation.Induction.MinimalBlock p) :
      NonemptyNonempty.{u} (α : Sort u) : Prop`Nonempty α` is a typeclass that says that `α` is not an empty type,
    that is, there exists an element in the type. It differs from `Inhabited α`
    in that `Nonempty α` is a `Prop`, which means that it does not actually carry
    an element of `α`, only a proof that *there exists* such an element.
    Given `Nonempty α`, you can construct an element of `α` *nonconstructively*
    using `Classical.choice`.
    
        (Q2Presentation.Induction.CentralCoverSourceLiftFibersQ2Presentation.Induction.CentralCoverSourceLiftFibers {p : Q2Presentation.Induction.FramedPair}
      (B : Q2Presentation.Induction.MinimalBlock p) (S : Type)
      (O : Q2Presentation.Induction.CentralCoverSourceObstructionData B S)
      (Z : Q2Presentation.Induction.CentralCoverSourceCocycleData B) : Type 1Lift fibres over unobstructed points, before partitioning the global
    boundary-framed surjection set.
    
    Manuscript anchor: `lem:affinelifting`.  BQ2Presentation.Induction.MinimalBlock p
          (Q2Presentation.boundaryFramedSurjQ2Presentation.boundaryFramedSurj {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ)
      (Yt : Q2Presentation.BoundaryFramedTarget) (F : Q2Presentation.BoundaryFrame Yt) : TypeThe **boundary-framed surjections** `e_Γ^β(𝒴)` (manuscript `eq:eGamma`): the
    continuous surjections `f : Γ ↠ Y` whose induced map to `H × E` is the prescribed
    `β ∘ b_Γ`, i.e. `q_Y ∘ f = β ∘ b_Γ`.  This is the subtype counted in Theorem 4.2;
    its cardinality is `e_Γ^β(𝒴)`. 
            Q2Presentation.boundaryPackage_GammaAQ2Presentation.boundaryPackage_GammaA : Q2Presentation.BoundaryPackage Q2Presentation.GammaA**The candidate boundary package** (manuscript Prop 3.14, `prop:compatiblemarking`;
    plan Turn 4 §6).  The Stage-C data of `Γ_A`: the common tame quotient `gammaTameMap`,
    the maximal pro-`2` quotient `p : Γ_A ⟶ Π`, and the common unramified character
    `ν = gammaTameMap ≫ ν_t`, through which both factor.  pQ2Presentation.Induction.FramedPair.fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.
     pQ2Presentation.Induction.FramedPair.sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.
    )
          OQ2Presentation.Induction.CentralCoverSourceObstructionData B
      (Q2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GammaA p.fst p.snd) ZQ2Presentation.Induction.CentralCoverSourceCocycleData B)
    theorem Q2Presentation.Induction.centralCover_candidateLiftFibers
      {pQ2Presentation.Induction.FramedPair :
        Q2Presentation.Induction.FramedPairQ2Presentation.Induction.FramedPair : Type 1A **framed pair** `(𝒴, F)`: a boundary-framed marked target together with a
    boundary frame for it (manuscript Definition 4.1 + `eq:beta`).  This is the index of
    Theorem 4.2: the boundary-framed surjection count `e_Γ^β` is a function of the pair.
    The induction of `sec:induction` ranges over *all* such pairs simultaneously
    ("the induction is stated globally", l.1213), ordered by `|L_Y|`. }
      (BQ2Presentation.Induction.MinimalBlock p :
        Q2Presentation.Induction.MinimalBlockQ2Presentation.Induction.MinimalBlock (p : Q2Presentation.Induction.FramedPair) : Type 1**The §7 minimal non-scalar block.**  Source-uniform module-level data of the
    manuscript tower (`eq:targettower`), with the deep group/representation inputs of
    `lem:simplehead`/`lem:collapse`/`prop:simpleheaddet` isolated as documented fields. 
          pQ2Presentation.Induction.FramedPair)
      (OQ2Presentation.Induction.CentralCoverSourceObstructionData B
      (Q2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GammaA p.fst p.snd) :
        Q2Presentation.Induction.CentralCoverSourceObstructionDataQ2Presentation.Induction.CentralCoverSourceObstructionData {p : Q2Presentation.Induction.FramedPair}
      (B : Q2Presentation.Induction.MinimalBlock p) (S : Type) : Type 1Source-specific exact-image obstruction index and obstruction map.
    
    Manuscript anchors: `def:Xgamma`, `lem:obstructionseparation`, and the
    `o_R : X_Gamma(B) -> O_R` input to `prop:finalfourier`. 
          BQ2Presentation.Induction.MinimalBlock p
          (Q2Presentation.boundaryFramedSurjQ2Presentation.boundaryFramedSurj {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ)
      (Yt : Q2Presentation.BoundaryFramedTarget) (F : Q2Presentation.BoundaryFrame Yt) : TypeThe **boundary-framed surjections** `e_Γ^β(𝒴)` (manuscript `eq:eGamma`): the
    continuous surjections `f : Γ ↠ Y` whose induced map to `H × E` is the prescribed
    `β ∘ b_Γ`, i.e. `q_Y ∘ f = β ∘ b_Γ`.  This is the subtype counted in Theorem 4.2;
    its cardinality is `e_Γ^β(𝒴)`. 
            Q2Presentation.boundaryPackage_GammaAQ2Presentation.boundaryPackage_GammaA : Q2Presentation.BoundaryPackage Q2Presentation.GammaA**The candidate boundary package** (manuscript Prop 3.14, `prop:compatiblemarking`;
    plan Turn 4 §6).  The Stage-C data of `Γ_A`: the common tame quotient `gammaTameMap`,
    the maximal pro-`2` quotient `p : Γ_A ⟶ Π`, and the common unramified character
    `ν = gammaTameMap ≫ ν_t`, through which both factor. 
            pQ2Presentation.Induction.FramedPair.fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.
     pQ2Presentation.Induction.FramedPair.sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.
    ))
      (ZQ2Presentation.Induction.CentralCoverSourceCocycleData B :
        Q2Presentation.Induction.CentralCoverSourceCocycleDataQ2Presentation.Induction.CentralCoverSourceCocycleData {p : Q2Presentation.Induction.FramedPair}
      (B : Q2Presentation.Induction.MinimalBlock p) : Type 1Source-specific `Z^1_Gamma(R)` group with the common size `z_R`.
    
    Manuscript anchors: `lem:affinelifting`, `eq:mumultiplicity`, and the
    source-interface lift-multiplicity comparison. 
          BQ2Presentation.Induction.MinimalBlock p) :
      NonemptyNonempty.{u} (α : Sort u) : Prop`Nonempty α` is a typeclass that says that `α` is not an empty type,
    that is, there exists an element in the type. It differs from `Inhabited α`
    in that `Nonempty α` is a `Prop`, which means that it does not actually carry
    an element of `α`, only a proof that *there exists* such an element.
    Given `Nonempty α`, you can construct an element of `α` *nonconstructively*
    using `Classical.choice`.
    
        (Q2Presentation.Induction.CentralCoverSourceLiftFibersQ2Presentation.Induction.CentralCoverSourceLiftFibers {p : Q2Presentation.Induction.FramedPair}
      (B : Q2Presentation.Induction.MinimalBlock p) (S : Type)
      (O : Q2Presentation.Induction.CentralCoverSourceObstructionData B S)
      (Z : Q2Presentation.Induction.CentralCoverSourceCocycleData B) : Type 1Lift fibres over unobstructed points, before partitioning the global
    boundary-framed surjection set.
    
    Manuscript anchor: `lem:affinelifting`. 
          BQ2Presentation.Induction.MinimalBlock p
          (Q2Presentation.boundaryFramedSurjQ2Presentation.boundaryFramedSurj {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ)
      (Yt : Q2Presentation.BoundaryFramedTarget) (F : Q2Presentation.BoundaryFrame Yt) : TypeThe **boundary-framed surjections** `e_Γ^β(𝒴)` (manuscript `eq:eGamma`): the
    continuous surjections `f : Γ ↠ Y` whose induced map to `H × E` is the prescribed
    `β ∘ b_Γ`, i.e. `q_Y ∘ f = β ∘ b_Γ`.  This is the subtype counted in Theorem 4.2;
    its cardinality is `e_Γ^β(𝒴)`. 
            Q2Presentation.boundaryPackage_GammaAQ2Presentation.boundaryPackage_GammaA : Q2Presentation.BoundaryPackage Q2Presentation.GammaA**The candidate boundary package** (manuscript Prop 3.14, `prop:compatiblemarking`;
    plan Turn 4 §6).  The Stage-C data of `Γ_A`: the common tame quotient `gammaTameMap`,
    the maximal pro-`2` quotient `p : Γ_A ⟶ Π`, and the common unramified character
    `ν = gammaTameMap ≫ ν_t`, through which both factor. 
            pQ2Presentation.Induction.FramedPair.fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.
     pQ2Presentation.Induction.FramedPair.sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.
    )
          OQ2Presentation.Induction.CentralCoverSourceObstructionData B
      (Q2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GammaA p.fst p.snd) ZQ2Presentation.Induction.CentralCoverSourceCocycleData B)
    Candidate lift fibres can be populated by the regular torsor under the chosen
    cocycle group.  This discharges the affine-fibre part of `lem:affinelifting`;
    the remaining exact-image content is the partition/cardinality statement below. 
  • theoremdefined in Q2Presentation/Induction/CentralCovers.lean
    complete
    theorem Q2Presentation.Induction.framedCount_eq_zR_of_torsorDecomp {SType UType : TypeA type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. }
      [FiniteFinite.{u_3} (α : Sort u_3) : PropA type is `Finite` if it is in bijective correspondence to some `Fin n`.
    
    This is similar to `Fintype`, but `Finite` is a proposition rather than data.
    A particular benefit to this is that `Finite` instances are definitionally equal to one another
    (due to proof irrelevance) rather than being merely propositionally equal,
    and, furthermore, `Finite` instances generally avoid the need for `Decidable` instances.
    One other notable difference is that `Finite` allows there to be `Finite p` instances
    for all `p : Prop`, which is not allowed by `Fintype` due to universe constraints.
    An application of this is that `Finite (x ∈ s → β x)` follows from the general instance for pi
    types, assuming `[∀ x, Finite (β x)]`.
    Implementation note: this is a reason `Finite α` is not defined as `Nonempty (Fintype α)`.
    
    Every `Fintype` instance provides a `Finite` instance via `Finite.of_fintype`.
    Conversely, one can noncomputably create a `Fintype` instance from a `Finite` instance
    via `Fintype.ofFinite`. In a proof one might write
    ```lean
      have := Fintype.ofFinite α
    ```
    to obtain such an instance.
    
    Do not write noncomputable `Fintype` instances; instead write `Finite` instances
    and use this `Fintype.ofFinite` interface.
    The `Fintype` instances should be relied upon to be computable for evaluation purposes.
    
    Theorems should use `Finite` instead of `Fintype`, unless definitions in the theorem statement
    require `Fintype`.
    Definitions should prefer `Finite` as well, unless it is important that the definitions
    are meant to be computable in the reduction or `#eval` sense.
     UType] (z : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    ) (ZType : TypeA type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. ) [AddGroupAddGroup.{u} (A : Type u) : Type uAn `AddGroup` is an `AddMonoid` with a unary `-` satisfying `-a + a = 0`.
    
    There is also a binary operation `-` such that `a - b = a + -b`,
    with a default so that `a - b = a + -b` holds by definition.
    
    Use `AddGroup.ofLeftAxioms` or `AddGroup.ofRightAxioms` to define an
    additive group structure on a type with the minimum proof obligations.
     ZType] (hZNat.card Z = z : Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number.
    If `α` is infinite, `Nat.card α = 0`.  ZType =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`. z)
      (LiftU → Type : UType  TypeA type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. ) [(uU : UType)  AddTorsorAddTorsor.{u_1, u_2} (G : outParam (Type u_1)) (P : Type u_2) [AddGroup G] : Type (max u_1 u_2)An `AddTorsor G P` gives a structure to the nonempty type `P`,
    acted on by an `AddGroup G` with a transitive and free action given
    by the `+ᵥ` operation and a corresponding subtraction given by the
    `-ᵥ` operation. In the case of a vector space, it is an affine
    space.  ZType (LiftU → Type uU)]
      [ (uU : UType), FiniteFinite.{u_3} (α : Sort u_3) : PropA type is `Finite` if it is in bijective correspondence to some `Fin n`.
    
    This is similar to `Fintype`, but `Finite` is a proposition rather than data.
    A particular benefit to this is that `Finite` instances are definitionally equal to one another
    (due to proof irrelevance) rather than being merely propositionally equal,
    and, furthermore, `Finite` instances generally avoid the need for `Decidable` instances.
    One other notable difference is that `Finite` allows there to be `Finite p` instances
    for all `p : Prop`, which is not allowed by `Fintype` due to universe constraints.
    An application of this is that `Finite (x ∈ s → β x)` follows from the general instance for pi
    types, assuming `[∀ x, Finite (β x)]`.
    Implementation note: this is a reason `Finite α` is not defined as `Nonempty (Fintype α)`.
    
    Every `Fintype` instance provides a `Finite` instance via `Finite.of_fintype`.
    Conversely, one can noncomputably create a `Fintype` instance from a `Finite` instance
    via `Fintype.ofFinite`. In a proof one might write
    ```lean
      have := Fintype.ofFinite α
    ```
    to obtain such an instance.
    
    Do not write noncomputable `Fintype` instances; instead write `Finite` instances
    and use this `Fintype.ofFinite` interface.
    The `Fintype` instances should be relied upon to be computable for evaluation purposes.
    
    Theorems should use `Finite` instead of `Fintype`, unless definitions in the theorem statement
    require `Fintype`.
    Definitions should prefer `Finite` as well, unless it is important that the definitions
    are meant to be computable in the reduction or `#eval` sense.
     (LiftU → Type uU)] (eS ≃ (u : U) × Lift u : SType Equiv.{u_1, u_2} (α : Sort u_1) (β : Sort u_2) : Sort (max (max 1 u_1) u_2)`α ≃ β` is the type of functions from `α → β` with a two-sided inverse.  (uU : UType) × LiftU → Type uU) :
      Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number.
    If `α` is infinite, `Nat.card α = 0`.  SType =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`. z *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number.
    If `α` is infinite, `Nat.card α = 0`.  UType
    theorem Q2Presentation.Induction.framedCount_eq_zR_of_torsorDecomp
      {SType UType : TypeA type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } [FiniteFinite.{u_3} (α : Sort u_3) : PropA type is `Finite` if it is in bijective correspondence to some `Fin n`.
    
    This is similar to `Fintype`, but `Finite` is a proposition rather than data.
    A particular benefit to this is that `Finite` instances are definitionally equal to one another
    (due to proof irrelevance) rather than being merely propositionally equal,
    and, furthermore, `Finite` instances generally avoid the need for `Decidable` instances.
    One other notable difference is that `Finite` allows there to be `Finite p` instances
    for all `p : Prop`, which is not allowed by `Fintype` due to universe constraints.
    An application of this is that `Finite (x ∈ s → β x)` follows from the general instance for pi
    types, assuming `[∀ x, Finite (β x)]`.
    Implementation note: this is a reason `Finite α` is not defined as `Nonempty (Fintype α)`.
    
    Every `Fintype` instance provides a `Finite` instance via `Finite.of_fintype`.
    Conversely, one can noncomputably create a `Fintype` instance from a `Finite` instance
    via `Fintype.ofFinite`. In a proof one might write
    ```lean
      have := Fintype.ofFinite α
    ```
    to obtain such an instance.
    
    Do not write noncomputable `Fintype` instances; instead write `Finite` instances
    and use this `Fintype.ofFinite` interface.
    The `Fintype` instances should be relied upon to be computable for evaluation purposes.
    
    Theorems should use `Finite` instead of `Fintype`, unless definitions in the theorem statement
    require `Fintype`.
    Definitions should prefer `Finite` as well, unless it is important that the definitions
    are meant to be computable in the reduction or `#eval` sense.
     UType] (z : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    )
      (ZType : TypeA type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. ) [AddGroupAddGroup.{u} (A : Type u) : Type uAn `AddGroup` is an `AddMonoid` with a unary `-` satisfying `-a + a = 0`.
    
    There is also a binary operation `-` such that `a - b = a + -b`,
    with a default so that `a - b = a + -b` holds by definition.
    
    Use `AddGroup.ofLeftAxioms` or `AddGroup.ofRightAxioms` to define an
    additive group structure on a type with the minimum proof obligations.
     ZType]
      (hZNat.card Z = z : Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number.
    If `α` is infinite, `Nat.card α = 0`.  ZType =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`. z) (LiftU → Type : UType  TypeA type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. )
      [(uU : UType)  AddTorsorAddTorsor.{u_1, u_2} (G : outParam (Type u_1)) (P : Type u_2) [AddGroup G] : Type (max u_1 u_2)An `AddTorsor G P` gives a structure to the nonempty type `P`,
    acted on by an `AddGroup G` with a transitive and free action given
    by the `+ᵥ` operation and a corresponding subtraction given by the
    `-ᵥ` operation. In the case of a vector space, it is an affine
    space.  ZType (LiftU → Type uU)]
      [ (uU : UType), FiniteFinite.{u_3} (α : Sort u_3) : PropA type is `Finite` if it is in bijective correspondence to some `Fin n`.
    
    This is similar to `Fintype`, but `Finite` is a proposition rather than data.
    A particular benefit to this is that `Finite` instances are definitionally equal to one another
    (due to proof irrelevance) rather than being merely propositionally equal,
    and, furthermore, `Finite` instances generally avoid the need for `Decidable` instances.
    One other notable difference is that `Finite` allows there to be `Finite p` instances
    for all `p : Prop`, which is not allowed by `Fintype` due to universe constraints.
    An application of this is that `Finite (x ∈ s → β x)` follows from the general instance for pi
    types, assuming `[∀ x, Finite (β x)]`.
    Implementation note: this is a reason `Finite α` is not defined as `Nonempty (Fintype α)`.
    
    Every `Fintype` instance provides a `Finite` instance via `Finite.of_fintype`.
    Conversely, one can noncomputably create a `Fintype` instance from a `Finite` instance
    via `Fintype.ofFinite`. In a proof one might write
    ```lean
      have := Fintype.ofFinite α
    ```
    to obtain such an instance.
    
    Do not write noncomputable `Fintype` instances; instead write `Finite` instances
    and use this `Fintype.ofFinite` interface.
    The `Fintype` instances should be relied upon to be computable for evaluation purposes.
    
    Theorems should use `Finite` instead of `Fintype`, unless definitions in the theorem statement
    require `Fintype`.
    Definitions should prefer `Finite` as well, unless it is important that the definitions
    are meant to be computable in the reduction or `#eval` sense.
     (LiftU → Type uU)]
      (eS ≃ (u : U) × Lift u : SType Equiv.{u_1, u_2} (α : Sort u_1) (β : Sort u_2) : Sort (max (max 1 u_1) u_2)`α ≃ β` is the type of functions from `α → β` with a two-sided inverse.  (uU : UType) × LiftU → Type uU) :
      Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number.
    If `α` is infinite, `Nat.card α = 0`.  SType =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`. z *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number.
    If `α` is infinite, `Nat.card α = 0`.  UType
    **The lift-torsor count mechanism, with `Lifting/Duality.lean` scaffolding load-bearing**
    (`lem:affinelifting`, `eq:mumultiplicity`; `prop:finalfourier`, the proof of `eq:recursionR1`).
    If a finite set `S` of objects (the boundary-framed surjections onto `Y`) decomposes as the
    disjoint union, over a finite index `U` (the *unobstructed* exact-image base maps
    `{x : X_Γ // o_Γ x = 0}`), of per-point lift sets `Lift u` — each a **torsor under a fixed
    `R`-cocycle group `Z = Z¹_{Γ,ρ}(R)` of cardinality `z_R`** (`Lifting.lift_torsor_card`: a
    nonempty lift set is a `Z¹(R)`-torsor) — then `#S = z_R · #U`.  This is the genuine
    `realize_Γ` numerator of `prop:finalfourier`, with `Lifting.lift_torsor_card` doing the work.
    It is applied per source in `realizeA_of`/`realizeQ_of` to the candidate/local decompositions
    `bijA`/`bijQ` (over `ZA/LiftA`, `ZQ/LiftQ`), the common size `|Z¹(R)| = z_R` being
    `prop:defduality`/`prop:localduality`, equal for the two sources by `cor:sourceinterface`(i). 
  • theoremdefined in Q2Presentation/Induction/EdgeAffineDischarge.lean
    complete
    theorem Q2Presentation.Induction.fibHom_reads_eq
      {pQ2Presentation.Induction.FramedPair : Q2Presentation.Induction.FramedPairQ2Presentation.Induction.FramedPair : Type 1A **framed pair** `(𝒴, F)`: a boundary-framed marked target together with a
    boundary frame for it (manuscript Definition 4.1 + `eq:beta`).  This is the index of
    Theorem 4.2: the boundary-framed surjection count `e_Γ^β` is a function of the pair.
    The induction of `sec:induction` ranges over *all* such pairs simultaneously
    ("the induction is stated globally", l.1213), ordered by `|L_Y|`. }
      (chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p : Q2Presentation.Induction.FirstNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor (p : Q2Presentation.Induction.FramedPair) : TypeA non-scalar chief factor of `L_Y` that is **first**: every chief factor strictly
    below it (i.e. with upper term contained in `lower`) is scalar.  This is the manuscript's
    choice `S ◁ P` at l.3616–3623 ("all chief factors below `S` are scalar and `V` is the
    first non-scalar simple factor"), which `lem:collapse` requires for the coprime step
    `[S, Ñ] = 1`.  pQ2Presentation.Induction.FramedPair)
      (KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor :
        Q2Presentation.Induction.KernelMinimalQ2Presentation.Induction.KernelMinimal {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.NonScalarChiefFactor p) : TypeThe manuscript's kernel choice (l.3623): `K ◁ Y`, `K ≤ P`, `KS = P`, and `K` is
    **⊆-minimal** with these properties — stated as: any `Y`-normal `K' ≤ K` still joining
    with `S` to `P` equals `K`.  (This, not leastness among all candidates, is what
    `lem:simplehead` and `lem:collapse` use: both apply it to subgroups of `K`.)  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p.toNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor.toNonScalarChiefFactor {p : Q2Presentation.Induction.FramedPair}
      (self : Q2Presentation.Induction.FirstNonScalarChiefFactor p) : Q2Presentation.Induction.NonScalarChiefFactor p)
      (lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) :
        Module.DualModule.Dual.{u_4, u_5} (R : Type u_4) (M : Type u_5) [Semiring R] [AddCommMonoid M] [Module R M] : Type (max u_5 u_4)The left dual space of an R-module M is the R-module of linear maps `M → R`.  (ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2)
          (Q2Presentation.Lifting.NAddQ2Presentation.Lifting.NAdd {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) : TypeThe additive `F₂`-carrier of an elementary kernel. 
            (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)))
      (hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K) :
        lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`.
          Q2Presentation.Lifting.conjInvDualsQ2Presentation.Lifting.conjInvDuals {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) :
      Submodule (ZMod 2) (Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E))The conjugation-invariant duals `X = (R^∨)^Y = (R^∨)^C` of an
    elementary kernel (consumer spelling of the manuscript's `𝒳_R`,
    §7 l.3720–3723). 
            (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor))
      {ΓProfiniteGrp.{0} : ProfiniteGrp.{0}ProfiniteGrp.{u_1} : Type (u_1 + 1)The category of profinite groups. A term of this type consists of a profinite
    set with a topological group structure.
    } (BQ2Presentation.BoundaryPackage Γ : Q2Presentation.BoundaryPackageQ2Presentation.BoundaryPackage (Γ : ProfiniteGrp.{0}) : TypeA **boundary package** on a profinite group `Γ`: the uniform Stage-C data of a tame
    quotient, a maximal pro-`2` quotient, and a common unramified character `ℤ₂` through which
    both factor (manuscript Prop 3.14, `prop:compatiblemarking`; plan Turn 4 §6).  The
    compatibility `tameMap ≫ ν_t = ν = pro2Map ≫ ν_2` records that the two markings agree on
    the full unramified coordinate, not merely modulo `2`.  ΓProfiniteGrp.{0})
      (ZQ2Presentation.Induction.ZeroEdgeDescentData chief K lam hinv : Q2Presentation.Induction.ZeroEdgeDescentDataQ2Presentation.Induction.ZeroEdgeDescentData {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) : Type**The zero-edge descent data** (`eq:descendedclass` l.4037–4045 +
    `lem:affinelifting` l.4048–4083, as one choice bundle — the §6.5 choice
    discipline: both R4b keeps take the SAME bundle):
    
    * `D`/`hW` — the zero-edge witness (a normal edge complement, P3-U3); the
      bundle therefore implies `ZeroEdge` (`ZeroEdgeDescentData.zeroEdge`);
    * `Csec` + `hdisj`/`hsup` — the `lem:transgression` splitting coordinates
      `B/T' = V ⋊ C` (`Csec` a complement to the `V`-layer);
    * `gammaK`/`deltaK` — the normalized decomposition data `γ_κ ∈ Z¹(C,V^∨)`,
      `δ_κ ∈ Z²(C,𝔽₂)` of the descended class, with concrete cocycle laws
      (dual action `(c·φ)(v) = φ(c⁻¹·v)`);
    * `eT` — the `lem:affinelifting` class `e ∈ Z²(C,T)` (pullback of
      `B → V⋊C` along the zero section), twisted cocycle law in the
      `hzc`-ready orientation;
    * `mC` — the equivariant-lift correction functions `m_c` of the
      `κ_q⁰`-model (`eq:mquadratic`/`eq:mcoherent` l.4118–4125, stated
      against the bilinear factor set `edgeBaseFactor`).
    
    The deep pinning identity — that a normalized section cocycle of the
    descended double cover `descTarget D hW` equals
    `κ_q⁰-model + Γ_{γ_κ} + inf δ_κ` in the `Csec`-coordinates, and that `eT`
    is the actual zero-section pullback — is owned by the deferred
    transgression unit (`btChild_splits`/`zeroEdgeDescentData_nonempty`,
    design §4.7); until it lands, the coordinated R4b keep must carry that
    pinning alongside this bundle (same discipline as U7's `¬ZeroEdge`
    conditioning living on the future keep).  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K))
      (ρQ2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst
      (Q2Presentation.Induction.cChild chief K).snd :
        Q2Presentation.boundaryFramedSurjQ2Presentation.boundaryFramedSurj {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ)
      (Yt : Q2Presentation.BoundaryFramedTarget) (F : Q2Presentation.BoundaryFrame Yt) : TypeThe **boundary-framed surjections** `e_Γ^β(𝒴)` (manuscript `eq:eGamma`): the
    continuous surjections `f : Γ ↠ Y` whose induced map to `H × E` is the prescribed
    `β ∘ b_Γ`, i.e. `q_Y ∘ f = β ∘ b_Γ`.  This is the subtype counted in Theorem 4.2;
    its cardinality is `e_Γ^β(𝒴)`.  BQ2Presentation.BoundaryPackage Γ
          (Q2Presentation.Induction.cChildQ2Presentation.Induction.cChild {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPair**The C-child framed pair** (the carrier of `X_Γ(C)`; manuscript
    `C = Y/K` via `B/M' ≅ C`, `mChildCollapse`).  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.
    
          (Q2Presentation.Induction.cChildQ2Presentation.Induction.cChild {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPair**The C-child framed pair** (the carrier of `X_Γ(C)`; manuscript
    `C = Y/K` via `B/M' ≅ C`, `mChildCollapse`).  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.
    )
      (PQ2Presentation.Induction.ZeroEdgePinning chief K lam hinv Z : Q2Presentation.Induction.ZeroEdgePinningQ2Presentation.Induction.ZeroEdgePinning {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K))
      (Z : Q2Presentation.Induction.ZeroEdgeDescentData chief K lam hinv) : Type**The base-identity pinning of a bundle `Z`** — the §13 deferral's
    third item, concrete.  In the `Z.Csec`-coordinates (a multiplicative
    section `s`, so the section cochain `η` vanishes), the normalized
    section cocycle of the ACTUAL descended cover `descTarget Z.D Z.hW` at
    the total section `(v,c) ↦ ℓ̂(v)·σ̂(c)` is
    `κ((v,c),(w,d)) = g(v,cw) + n_c(w) + e(c,d)` with `g/n/e` the three deck
    readings; the fields pin
    
    * `g = edgeBaseFactor` (`fib_*`): the fibre part is the `κ_q⁰`-model
      factor set — `eq:basekappacochain`'s fibre normalization;
    * `n_c = Z.mC c + Z.gammaK c ∘ (c·)` (`conj_*`): the conjugation defect
      is the model correction plus the `Γ_{γ_κ}`-term (`eq:Gammagamma`);
    * `e = Z.deltaK` (`sec_*`): the pure base part is the inflated scalar —
    
    i.e. `κ = κ_q⁰ + Γ_{γ_κ} + inf δ_κ` as normalized cochains,
    `eq:descendedclass` l.4037–4045 ON THE NOSE; and `tau_eT` pins `Z.eT` as
    the actual zero-section pullback of `B → V⋊C` along the `Csec`-section
    (`lem:affinelifting` l.4050–4056).  `Nonempty (ZeroEdgePinning … Z)` is
    the pinning hypothesis the FUTURE coordinated R4b keep must carry
    alongside `Z` (both U8/U9 zero-edge keep docstrings + §13 note 6).  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K) ZQ2Presentation.Induction.ZeroEdgeDescentData chief K lam hinv)
      (z↥(Q2Presentation.Induction.edgeZ1 chief K B ρ) : (Q2Presentation.Induction.edgeZ1Q2Presentation.Induction.edgeZ1 {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) {Γ : ProfiniteGrp.{0}}
      (B : Q2Presentation.BoundaryPackage Γ)
      (ρ :
        Q2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst
          (Q2Presentation.Induction.cChild chief K).snd) :
      Submodule (ZMod 2) (↑Γ.toProfinite.toTop → Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K)**`Z¹_ρ(V)`** — the `ZMod 2`-module of continuous (locally constant)
    `V`-valued ρ̄-twisted 1-cocycles: `z(γγ′) = z(γ) + ρ̄(γ)·z(γ′)` (THE
    orientation pin — `aRep_cocycle`'s house orientation; design §2.1's
    `W_ρ`, the engine carrier of the W2 instantiation).  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor BQ2Presentation.BoundaryPackage Γ ρQ2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst
      (Q2Presentation.Induction.cChild chief K).snd))
      (lQ2Presentation.Induction.mLift chief K B ρ : Q2Presentation.Induction.mLiftQ2Presentation.Induction.mLift {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) {Γ : ProfiniteGrp.{0}}
      (B : Q2Presentation.BoundaryPackage Γ)
      (ρ :
        Q2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst
          (Q2Presentation.Induction.cChild chief K).snd) :
      TypeThe framed `M`-lift fibre over a lower map (all framed lifts, weak
    in the ambient target — `liftHom` at the child `M`-kernel, `ρ` taken in
    the `cChild` spelling).  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor BQ2Presentation.BoundaryPackage Γ ρQ2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst
      (Q2Presentation.Induction.cChild chief K).snd)
      (hfibQ2Presentation.Induction.FibHom chief K lam hinv B Z ρ P z ↑l : Q2Presentation.Induction.FibHomQ2Presentation.Induction.FibHom {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) {Γ : ProfiniteGrp.{0}}
      (B : Q2Presentation.BoundaryPackage Γ) (Z : Q2Presentation.Induction.ZeroEdgeDescentData chief K lam hinv)
      (ρ :
        Q2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst
          (Q2Presentation.Induction.cChild chief K).snd)
      (P : Q2Presentation.Induction.ZeroEdgePinning chief K lam hinv Z) (z : ↥(Q2Presentation.Induction.edgeZ1 chief K B ρ))
      (f : Γ ⟶ ProfiniteGrp.ofFiniteGrp (FiniteGrp.of (Q2Presentation.Induction.XRZero.xrChild chief K).fst.Y)) : PropThe `T'`-fibre condition of a framed `M`-lift over the `z`-twisted
    `V⋊C`-lift: `l mod T' = γ ↦ vInG(zγ)·s(ρ̄γ)` pointwise (the graph of
    the trivialized coordinate; `modT l = edgeTrivial … z` in value form).  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K) BQ2Presentation.BoundaryPackage Γ ZQ2Presentation.Induction.ZeroEdgeDescentData chief K lam hinv ρQ2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst
      (Q2Presentation.Induction.cChild chief K).snd PQ2Presentation.Induction.ZeroEdgePinning chief K lam hinv Z z↥(Q2Presentation.Induction.edgeZ1 chief K B ρ) lQ2Presentation.Induction.mLift chief K B ρ)
      (chi↥(Q2Presentation.Induction.XT chief K) : (Q2Presentation.Induction.XTQ2Presentation.Induction.XT {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Submodule (ZMod 2) (Module.Dual (ZMod 2) ↥(Q2Presentation.Induction.towerT K))**`𝒳_T = (T^∨)^C`**: the `C`-invariant duals of the radical layer,
    against the proven restricted action `sec7ActOnTHom`.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)) :
      Q2Presentation.Induction.edgeLReadQ2Presentation.Induction.edgeLRead {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) {Γ : ProfiniteGrp.{0}}
      (B : Q2Presentation.BoundaryPackage Γ)
      (ρ :
        Q2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst
          (Q2Presentation.Induction.cChild chief K).snd)
      (z : ↥(Q2Presentation.Induction.edgeZ1 chief K B ρ)) (chi : ↥(Q2Presentation.Induction.XT chief K)) : ZMod 2The `χ`-constraint reading `L(z)(χ) = ι_Γ(Γ_{γ_χ}(z))` (token-free
    def; linearity is token-consuming).  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor BQ2Presentation.BoundaryPackage Γ ρQ2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst
      (Q2Presentation.Induction.cChild chief K).snd z↥(Q2Presentation.Induction.edgeZ1 chief K B ρ) chi↥(Q2Presentation.Induction.XT chief K) =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`.
        Q2Presentation.Induction.edgeKappaReadQ2Presentation.Induction.edgeKappaRead {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K))
      (Z : Q2Presentation.Induction.ZeroEdgeDescentData chief K lam hinv) {Γ : ProfiniteGrp.{0}}
      (B : Q2Presentation.BoundaryPackage Γ)
      (ρ :
        Q2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst
          (Q2Presentation.Induction.cChild chief K).snd)
      (chi : ↥(Q2Presentation.Induction.XT chief K)) : ZMod 2The constraint target `κ₀(χ) = ι_Γ(ρ*(χ_*e))`.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K) ZQ2Presentation.Induction.ZeroEdgeDescentData chief K lam hinv BQ2Presentation.BoundaryPackage Γ ρQ2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst
      (Q2Presentation.Induction.cChild chief K).snd chi↥(Q2Presentation.Induction.XT chief K)
    theorem Q2Presentation.Induction.fibHom_reads_eq
      {pQ2Presentation.Induction.FramedPair :
        Q2Presentation.Induction.FramedPairQ2Presentation.Induction.FramedPair : Type 1A **framed pair** `(𝒴, F)`: a boundary-framed marked target together with a
    boundary frame for it (manuscript Definition 4.1 + `eq:beta`).  This is the index of
    Theorem 4.2: the boundary-framed surjection count `e_Γ^β` is a function of the pair.
    The induction of `sec:induction` ranges over *all* such pairs simultaneously
    ("the induction is stated globally", l.1213), ordered by `|L_Y|`. }
      (chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p :
        Q2Presentation.Induction.FirstNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor (p : Q2Presentation.Induction.FramedPair) : TypeA non-scalar chief factor of `L_Y` that is **first**: every chief factor strictly
    below it (i.e. with upper term contained in `lower`) is scalar.  This is the manuscript's
    choice `S ◁ P` at l.3616–3623 ("all chief factors below `S` are scalar and `V` is the
    first non-scalar simple factor"), which `lem:collapse` requires for the coprime step
    `[S, Ñ] = 1`. 
          pQ2Presentation.Induction.FramedPair)
      (KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor :
        Q2Presentation.Induction.KernelMinimalQ2Presentation.Induction.KernelMinimal {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.NonScalarChiefFactor p) : TypeThe manuscript's kernel choice (l.3623): `K ◁ Y`, `K ≤ P`, `KS = P`, and `K` is
    **⊆-minimal** with these properties — stated as: any `Y`-normal `K' ≤ K` still joining
    with `S` to `P` equals `K`.  (This, not leastness among all candidates, is what
    `lem:simplehead` and `lem:collapse` use: both apply it to subgroups of `K`.) 
          chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p.toNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor.toNonScalarChiefFactor {p : Q2Presentation.Induction.FramedPair}
      (self : Q2Presentation.Induction.FirstNonScalarChiefFactor p) : Q2Presentation.Induction.NonScalarChiefFactor p)
      (lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) :
        Module.DualModule.Dual.{u_4, u_5} (R : Type u_4) (M : Type u_5) [Semiring R] [AddCommMonoid M] [Module R M] : Type (max u_5 u_4)The left dual space of an R-module M is the R-module of linear maps `M → R`.  (ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2)
          (Q2Presentation.Lifting.NAddQ2Presentation.Lifting.NAdd {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) : TypeThe additive `F₂`-carrier of an elementary kernel. 
            (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian. 
              chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)))
      (hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K) :
        lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`.
          Q2Presentation.Lifting.conjInvDualsQ2Presentation.Lifting.conjInvDuals {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) :
      Submodule (ZMod 2) (Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E))The conjugation-invariant duals `X = (R^∨)^Y = (R^∨)^C` of an
    elementary kernel (consumer spelling of the manuscript's `𝒳_R`,
    §7 l.3720–3723). 
            (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian. 
              chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor))
      {ΓProfiniteGrp.{0} : ProfiniteGrp.{0}ProfiniteGrp.{u_1} : Type (u_1 + 1)The category of profinite groups. A term of this type consists of a profinite
    set with a topological group structure.
    }
      (BQ2Presentation.BoundaryPackage Γ : Q2Presentation.BoundaryPackageQ2Presentation.BoundaryPackage (Γ : ProfiniteGrp.{0}) : TypeA **boundary package** on a profinite group `Γ`: the uniform Stage-C data of a tame
    quotient, a maximal pro-`2` quotient, and a common unramified character `ℤ₂` through which
    both factor (manuscript Prop 3.14, `prop:compatiblemarking`; plan Turn 4 §6).  The
    compatibility `tameMap ≫ ν_t = ν = pro2Map ≫ ν_2` records that the two markings agree on
    the full unramified coordinate, not merely modulo `2`.  ΓProfiniteGrp.{0})
      (ZQ2Presentation.Induction.ZeroEdgeDescentData chief K lam hinv :
        Q2Presentation.Induction.ZeroEdgeDescentDataQ2Presentation.Induction.ZeroEdgeDescentData {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) : Type**The zero-edge descent data** (`eq:descendedclass` l.4037–4045 +
    `lem:affinelifting` l.4048–4083, as one choice bundle — the §6.5 choice
    discipline: both R4b keeps take the SAME bundle):
    
    * `D`/`hW` — the zero-edge witness (a normal edge complement, P3-U3); the
      bundle therefore implies `ZeroEdge` (`ZeroEdgeDescentData.zeroEdge`);
    * `Csec` + `hdisj`/`hsup` — the `lem:transgression` splitting coordinates
      `B/T' = V ⋊ C` (`Csec` a complement to the `V`-layer);
    * `gammaK`/`deltaK` — the normalized decomposition data `γ_κ ∈ Z¹(C,V^∨)`,
      `δ_κ ∈ Z²(C,𝔽₂)` of the descended class, with concrete cocycle laws
      (dual action `(c·φ)(v) = φ(c⁻¹·v)`);
    * `eT` — the `lem:affinelifting` class `e ∈ Z²(C,T)` (pullback of
      `B → V⋊C` along the zero section), twisted cocycle law in the
      `hzc`-ready orientation;
    * `mC` — the equivariant-lift correction functions `m_c` of the
      `κ_q⁰`-model (`eq:mquadratic`/`eq:mcoherent` l.4118–4125, stated
      against the bilinear factor set `edgeBaseFactor`).
    
    The deep pinning identity — that a normalized section cocycle of the
    descended double cover `descTarget D hW` equals
    `κ_q⁰-model + Γ_{γ_κ} + inf δ_κ` in the `Csec`-coordinates, and that `eT`
    is the actual zero-section pullback — is owned by the deferred
    transgression unit (`btChild_splits`/`zeroEdgeDescentData_nonempty`,
    design §4.7); until it lands, the coordinated R4b keep must carry that
    pinning alongside this bundle (same discipline as U7's `¬ZeroEdge`
    conditioning living on the future keep). 
          chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K))
      (ρQ2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst
      (Q2Presentation.Induction.cChild chief K).snd :
        Q2Presentation.boundaryFramedSurjQ2Presentation.boundaryFramedSurj {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ)
      (Yt : Q2Presentation.BoundaryFramedTarget) (F : Q2Presentation.BoundaryFrame Yt) : TypeThe **boundary-framed surjections** `e_Γ^β(𝒴)` (manuscript `eq:eGamma`): the
    continuous surjections `f : Γ ↠ Y` whose induced map to `H × E` is the prescribed
    `β ∘ b_Γ`, i.e. `q_Y ∘ f = β ∘ b_Γ`.  This is the subtype counted in Theorem 4.2;
    its cardinality is `e_Γ^β(𝒴)`.  BQ2Presentation.BoundaryPackage Γ
          (Q2Presentation.Induction.cChildQ2Presentation.Induction.cChild {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPair**The C-child framed pair** (the carrier of `X_Γ(C)`; manuscript
    `C = Y/K` via `B/M' ≅ C`, `mChildCollapse`). 
              chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.
    
          (Q2Presentation.Induction.cChildQ2Presentation.Induction.cChild {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPair**The C-child framed pair** (the carrier of `X_Γ(C)`; manuscript
    `C = Y/K` via `B/M' ≅ C`, `mChildCollapse`). 
              chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.
    )
      (PQ2Presentation.Induction.ZeroEdgePinning chief K lam hinv Z :
        Q2Presentation.Induction.ZeroEdgePinningQ2Presentation.Induction.ZeroEdgePinning {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K))
      (Z : Q2Presentation.Induction.ZeroEdgeDescentData chief K lam hinv) : Type**The base-identity pinning of a bundle `Z`** — the §13 deferral's
    third item, concrete.  In the `Z.Csec`-coordinates (a multiplicative
    section `s`, so the section cochain `η` vanishes), the normalized
    section cocycle of the ACTUAL descended cover `descTarget Z.D Z.hW` at
    the total section `(v,c) ↦ ℓ̂(v)·σ̂(c)` is
    `κ((v,c),(w,d)) = g(v,cw) + n_c(w) + e(c,d)` with `g/n/e` the three deck
    readings; the fields pin
    
    * `g = edgeBaseFactor` (`fib_*`): the fibre part is the `κ_q⁰`-model
      factor set — `eq:basekappacochain`'s fibre normalization;
    * `n_c = Z.mC c + Z.gammaK c ∘ (c·)` (`conj_*`): the conjugation defect
      is the model correction plus the `Γ_{γ_κ}`-term (`eq:Gammagamma`);
    * `e = Z.deltaK` (`sec_*`): the pure base part is the inflated scalar —
    
    i.e. `κ = κ_q⁰ + Γ_{γ_κ} + inf δ_κ` as normalized cochains,
    `eq:descendedclass` l.4037–4045 ON THE NOSE; and `tau_eT` pins `Z.eT` as
    the actual zero-section pullback of `B → V⋊C` along the `Csec`-section
    (`lem:affinelifting` l.4050–4056).  `Nonempty (ZeroEdgePinning … Z)` is
    the pinning hypothesis the FUTURE coordinated R4b keep must carry
    alongside `Z` (both U8/U9 zero-edge keep docstrings + §13 note 6). 
          chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K) ZQ2Presentation.Induction.ZeroEdgeDescentData chief K lam hinv)
      (z↥(Q2Presentation.Induction.edgeZ1 chief K B ρ) :
        (Q2Presentation.Induction.edgeZ1Q2Presentation.Induction.edgeZ1 {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) {Γ : ProfiniteGrp.{0}}
      (B : Q2Presentation.BoundaryPackage Γ)
      (ρ :
        Q2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst
          (Q2Presentation.Induction.cChild chief K).snd) :
      Submodule (ZMod 2) (↑Γ.toProfinite.toTop → Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K)**`Z¹_ρ(V)`** — the `ZMod 2`-module of continuous (locally constant)
    `V`-valued ρ̄-twisted 1-cocycles: `z(γγ′) = z(γ) + ρ̄(γ)·z(γ′)` (THE
    orientation pin — `aRep_cocycle`'s house orientation; design §2.1's
    `W_ρ`, the engine carrier of the W2 instantiation). 
            chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor BQ2Presentation.BoundaryPackage Γ ρQ2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst
      (Q2Presentation.Induction.cChild chief K).snd))
      (lQ2Presentation.Induction.mLift chief K B ρ :
        Q2Presentation.Induction.mLiftQ2Presentation.Induction.mLift {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) {Γ : ProfiniteGrp.{0}}
      (B : Q2Presentation.BoundaryPackage Γ)
      (ρ :
        Q2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst
          (Q2Presentation.Induction.cChild chief K).snd) :
      TypeThe framed `M`-lift fibre over a lower map (all framed lifts, weak
    in the ambient target — `liftHom` at the child `M`-kernel, `ρ` taken in
    the `cChild` spelling).  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor
          BQ2Presentation.BoundaryPackage Γ ρQ2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst
      (Q2Presentation.Induction.cChild chief K).snd)
      (hfibQ2Presentation.Induction.FibHom chief K lam hinv B Z ρ P z ↑l :
        Q2Presentation.Induction.FibHomQ2Presentation.Induction.FibHom {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) {Γ : ProfiniteGrp.{0}}
      (B : Q2Presentation.BoundaryPackage Γ) (Z : Q2Presentation.Induction.ZeroEdgeDescentData chief K lam hinv)
      (ρ :
        Q2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst
          (Q2Presentation.Induction.cChild chief K).snd)
      (P : Q2Presentation.Induction.ZeroEdgePinning chief K lam hinv Z) (z : ↥(Q2Presentation.Induction.edgeZ1 chief K B ρ))
      (f : Γ ⟶ ProfiniteGrp.ofFiniteGrp (FiniteGrp.of (Q2Presentation.Induction.XRZero.xrChild chief K).fst.Y)) : PropThe `T'`-fibre condition of a framed `M`-lift over the `z`-twisted
    `V⋊C`-lift: `l mod T' = γ ↦ vInG(zγ)·s(ρ̄γ)` pointwise (the graph of
    the trivialized coordinate; `modT l = edgeTrivial … z` in value form).  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p
          KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K) BQ2Presentation.BoundaryPackage Γ ZQ2Presentation.Induction.ZeroEdgeDescentData chief K lam hinv ρQ2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst
      (Q2Presentation.Induction.cChild chief K).snd PQ2Presentation.Induction.ZeroEdgePinning chief K lam hinv Z z↥(Q2Presentation.Induction.edgeZ1 chief K B ρ) lQ2Presentation.Induction.mLift chief K B ρ)
      (chi↥(Q2Presentation.Induction.XT chief K) :
        (Q2Presentation.Induction.XTQ2Presentation.Induction.XT {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Submodule (ZMod 2) (Module.Dual (ZMod 2) ↥(Q2Presentation.Induction.towerT K))**`𝒳_T = (T^∨)^C`**: the `C`-invariant duals of the radical layer,
    against the proven restricted action `sec7ActOnTHom`.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p
            KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)) :
      Q2Presentation.Induction.edgeLReadQ2Presentation.Induction.edgeLRead {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) {Γ : ProfiniteGrp.{0}}
      (B : Q2Presentation.BoundaryPackage Γ)
      (ρ :
        Q2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst
          (Q2Presentation.Induction.cChild chief K).snd)
      (z : ↥(Q2Presentation.Induction.edgeZ1 chief K B ρ)) (chi : ↥(Q2Presentation.Induction.XT chief K)) : ZMod 2The `χ`-constraint reading `L(z)(χ) = ι_Γ(Γ_{γ_χ}(z))` (token-free
    def; linearity is token-consuming).  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p
          KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor BQ2Presentation.BoundaryPackage Γ ρQ2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst
      (Q2Presentation.Induction.cChild chief K).snd z↥(Q2Presentation.Induction.edgeZ1 chief K B ρ) chi↥(Q2Presentation.Induction.XT chief K) =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`.
        Q2Presentation.Induction.edgeKappaReadQ2Presentation.Induction.edgeKappaRead {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K))
      (Z : Q2Presentation.Induction.ZeroEdgeDescentData chief K lam hinv) {Γ : ProfiniteGrp.{0}}
      (B : Q2Presentation.BoundaryPackage Γ)
      (ρ :
        Q2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst
          (Q2Presentation.Induction.cChild chief K).snd)
      (chi : ↥(Q2Presentation.Induction.XT chief K)) : ZMod 2The constraint target `κ₀(χ) = ι_Γ(ρ*(χ_*e))`. 
          chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K) ZQ2Presentation.Induction.ZeroEdgeDescentData chief K lam hinv BQ2Presentation.BoundaryPackage Γ ρQ2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst
      (Q2Presentation.Induction.cChild chief K).snd chi↥(Q2Presentation.Induction.XT chief K)
    **A2 — admissibility** (design §1.2, `lem:affinelifting`'s ⟹ half
    made literal): a `FibHom` witness over `z` forces every `χ`-constraint
    reading to hit its `χ_*e`-target.  The γ-indexed defect of `fibM` is
    `edgeChiE χ` ON THE NOSE (`fibM_law` + char 2 + `edgeTProj_of_mem`), and
    A1 aligns its `ι`-reading with `edgeLRead`. 
  • theoremdefined in Q2Presentation/Induction/XRZeroAssembly.lean
    complete
    theorem Q2Presentation.Induction.XRZero.sec7_xrzero_cochainData
      {pQ2Presentation.Induction.FramedPair : Q2Presentation.Induction.FramedPairQ2Presentation.Induction.FramedPair : Type 1A **framed pair** `(𝒴, F)`: a boundary-framed marked target together with a
    boundary frame for it (manuscript Definition 4.1 + `eq:beta`).  This is the index of
    Theorem 4.2: the boundary-framed surjection count `e_Γ^β` is a function of the pair.
    The induction of `sec:induction` ranges over *all* such pairs simultaneously
    ("the induction is stated globally", l.1213), ordered by `|L_Y|`. }
      (h¬Q2Presentation.Induction.ScalarTerminal p : ¬Not (a : Prop) : Prop`Not p`, or `¬p`, is the negation of `p`. It is defined to be `p → False`,
    so if your goal is `¬p` you can use `intro h` to turn the goal into
    `h : p ⊢ False`, and if you have `hn : ¬p` and `h : p` then `hn h : False`
    and `(hn h).elim` will prove anything.
    For more information: [Propositional Logic](https://lean-lang.org/theorem_proving_in_lean4/propositions_and_proofs.html#propositional-logic)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `¬` in identifiers is `not`.Q2Presentation.Induction.ScalarTerminalQ2Presentation.Induction.ScalarTerminal (p : Q2Presentation.Induction.FramedPair) : Prop**Scalar-terminal framed pair.**  pQ2Presentation.Induction.FramedPair)
      (chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p : Q2Presentation.Induction.FirstNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor (p : Q2Presentation.Induction.FramedPair) : TypeA non-scalar chief factor of `L_Y` that is **first**: every chief factor strictly
    below it (i.e. with upper term contained in `lower`) is scalar.  This is the manuscript's
    choice `S ◁ P` at l.3616–3623 ("all chief factors below `S` are scalar and `V` is the
    first non-scalar simple factor"), which `lem:collapse` requires for the coprime step
    `[S, Ñ] = 1`.  pQ2Presentation.Induction.FramedPair)
      (KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor :
        Q2Presentation.Induction.KernelMinimalQ2Presentation.Induction.KernelMinimal {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.NonScalarChiefFactor p) : TypeThe manuscript's kernel choice (l.3623): `K ◁ Y`, `K ≤ P`, `KS = P`, and `K` is
    **⊆-minimal** with these properties — stated as: any `Y`-normal `K' ≤ K` still joining
    with `S` to `P` equals `K`.  (This, not leastness among all candidates, is what
    `lem:simplehead` and `lem:collapse` use: both apply it to subgroups of `K`.)  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p.toNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor.toNonScalarChiefFactor {p : Q2Presentation.Induction.FramedPair}
      (self : Q2Presentation.Induction.FirstNonScalarChiefFactor p) : Q2Presentation.Induction.NonScalarChiefFactor p)
      (hR1 < Nat.card ↥(Q2Presentation.Induction.kernelFrattini K) : 1 <LT.lt.{u} {α : Type u} [self : LT α] : α → α → PropThe less-than relation: `x < y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `<` in identifiers is `lt`. Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number.
    If `α` is infinite, `Nat.card α = 0`.  (Q2Presentation.Induction.kernelFrattiniQ2Presentation.Induction.kernelFrattini {p : Q2Presentation.Induction.FramedPair}
      {chief : Q2Presentation.Induction.NonScalarChiefFactor p} (K : Q2Presentation.Induction.KernelMinimal chief) :
      Subgroup p.fst.YThe literal Frattini subgroup `R = Φ(K)` of the kernel, as a subgroup of `Y`
    (the manuscript's `R`, l.3626).  KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor))
      (hchar¬∃ lam,
        lam ≠ 0 ∧
          ∀ (c : (Q2Presentation.Induction.sec7RawTowerPacketCanonical chief K).rawModuleData.C),
            lam ∘ₗ ↑((Q2Presentation.Induction.sec7RawTowerPacketCanonical chief K).rawActionData.actR c) = lam :
        ¬Not (a : Prop) : Prop`Not p`, or `¬p`, is the negation of `p`. It is defined to be `p → False`,
    so if your goal is `¬p` you can use `intro h` to turn the goal into
    `h : p ⊢ False`, and if you have `hn : ¬p` and `h : p` then `hn h : False`
    and `(hn h).elim` will prove anything.
    For more information: [Propositional Logic](https://lean-lang.org/theorem_proving_in_lean4/propositions_and_proofs.html#propositional-logic)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `¬` in identifiers is `not`. lamModule.Dual (ZMod 2) (Q2Presentation.Induction.sec7RawTowerPacketCanonical chief K).rawModuleData.R,
            lamModule.Dual (ZMod 2) (Q2Presentation.Induction.sec7RawTowerPacketCanonical chief K).rawModuleData.R Ne.{u} {α : Sort u} (a b : α) : Prop`a ≠ b`, or `Ne a b` is defined as `¬ (a = b)` or `a = b → False`,
    and asserts that `a` and `b` are not equal.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≠` in identifiers is `ne`. 0 And (a b : Prop) : Prop`And a b`, or `a ∧ b`, is the conjunction of propositions. It can be
    constructed and destructed like a pair: if `ha : a` and `hb : b` then
    `⟨ha, hb⟩ : a ∧ b`, and if `h : a ∧ b` then `h.left : a` and `h.right : b`.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∧` in identifiers is `and`.
    
     * The recommended spelling of `/\` in identifiers is `and` (prefer `∧` over `/\`).
              
                (c(Q2Presentation.Induction.sec7RawTowerPacketCanonical chief K).rawModuleData.C :
                  (Q2Presentation.Induction.sec7RawTowerPacketCanonicalQ2Presentation.Induction.sec7RawTowerPacketCanonical {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Induction.Sec7RawTowerPacket chief KThe canonical raw tower packet — the literal §7 constructors (checkpoint-F9).
    Using this definitional packet (instead of an opaque `Nonempty`-obtained one) lets the
    crux-lowered pushout packet of `Section7PushoutConstruction` be consumed directly. 
                        chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).rawModuleDataQ2Presentation.Induction.Sec7RawTowerPacket.rawModuleData {p : Q2Presentation.Induction.FramedPair}
      {chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p}
      {K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor}
      (self : Q2Presentation.Induction.Sec7RawTowerPacket chief K) :
      Q2Presentation.Induction.MinimalBlockRawModuleData p chief.toNonScalarChiefFactor.CQ2Presentation.Induction.MinimalBlockRawModuleData.C {p : Q2Presentation.Induction.FramedPair}
      {chief : Q2Presentation.Induction.NonScalarChiefFactor p}
      (self : Q2Presentation.Induction.MinimalBlockRawModuleData p chief) : Type),
                lamModule.Dual (ZMod 2) (Q2Presentation.Induction.sec7RawTowerPacketCanonical chief K).rawModuleData.R ∘ₗLinearMap.comp.{u_2, u_3, u_4, u_9, u_10, u_11} {R₁ : Type u_2} {R₂ : Type u_3} {R₃ : Type u_4} {M₁ : Type u_9}
      {M₂ : Type u_10} {M₃ : Type u_11} [Semiring R₁] [Semiring R₂] [Semiring R₃] [AddCommMonoid M₁] [AddCommMonoid M₂]
      [AddCommMonoid M₃] {module_M₁ : Module R₁ M₁} {module_M₂ : Module R₂ M₂} {module_M₃ : Module R₃ M₃} {σ₁₂ : R₁ →+* R₂}
      {σ₂₃ : R₂ →+* R₃} {σ₁₃ : R₁ →+* R₃} [RingHomCompTriple σ₁₂ σ₂₃ σ₁₃] (f : M₂ →ₛₗ[σ₂₃] M₃) (g : M₁ →ₛₗ[σ₁₂] M₂) :
      M₁ →ₛₗ[σ₁₃] M₃Composition of two linear maps is a linear map 
                    ((Q2Presentation.Induction.sec7RawTowerPacketCanonicalQ2Presentation.Induction.sec7RawTowerPacketCanonical {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Induction.Sec7RawTowerPacket chief KThe canonical raw tower packet — the literal §7 constructors (checkpoint-F9).
    Using this definitional packet (instead of an opaque `Nonempty`-obtained one) lets the
    crux-lowered pushout packet of `Section7PushoutConstruction` be consumed directly. 
                              chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).rawActionDataQ2Presentation.Induction.Sec7RawTowerPacket.rawActionData {p : Q2Presentation.Induction.FramedPair}
      {chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p}
      {K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor}
      (self : Q2Presentation.Induction.Sec7RawTowerPacket chief K) :
      Q2Presentation.Induction.MinimalBlockRawActionData self.rawModuleData.actRQ2Presentation.Induction.MinimalBlockRawActionData.actR {p : Q2Presentation.Induction.FramedPair}
      {chief : Q2Presentation.Induction.NonScalarChiefFactor p}
      {D : Q2Presentation.Induction.MinimalBlockRawModuleData p chief}
      (self : Q2Presentation.Induction.MinimalBlockRawActionData D) : D.C →* D.R ≃ₗ[ZMod 2] D.R
                        c(Q2Presentation.Induction.sec7RawTowerPacketCanonical chief K).rawModuleData.C) =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`.
                  lamModule.Dual (ZMod 2) (Q2Presentation.Induction.sec7RawTowerPacketCanonical chief K).rawModuleData.R) :
       kdim,
        (∀
            (gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GammaA
      (Q2Presentation.Induction.XRZero.xrChild chief K).fst (Q2Presentation.Induction.XRZero.xrChild chief K).snd :
              Q2Presentation.boundaryFramedSurjQ2Presentation.boundaryFramedSurj {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ)
      (Yt : Q2Presentation.BoundaryFramedTarget) (F : Q2Presentation.BoundaryFrame Yt) : TypeThe **boundary-framed surjections** `e_Γ^β(𝒴)` (manuscript `eq:eGamma`): the
    continuous surjections `f : Γ ↠ Y` whose induced map to `H × E` is the prescribed
    `β ∘ b_Γ`, i.e. `q_Y ∘ f = β ∘ b_Γ`.  This is the subtype counted in Theorem 4.2;
    its cardinality is `e_Γ^β(𝒴)`. 
                Q2Presentation.boundaryPackage_GammaAQ2Presentation.boundaryPackage_GammaA : Q2Presentation.BoundaryPackage Q2Presentation.GammaA**The candidate boundary package** (manuscript Prop 3.14, `prop:compatiblemarking`;
    plan Turn 4 §6).  The Stage-C data of `Γ_A`: the common tame quotient `gammaTameMap`,
    the maximal pro-`2` quotient `p : Γ_A ⟶ Π`, and the common unramified character
    `ν = gammaTameMap ≫ ν_t`, through which both factor. 
                (Q2Presentation.Induction.XRZero.xrChildQ2Presentation.Induction.XRZero.xrChild {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPairThe `𝒳_R = 0` child: the quotient framed pair at `N = Φ`-layer.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.
    
                (Q2Presentation.Induction.XRZero.xrChildQ2Presentation.Induction.XRZero.xrChild {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPairThe `𝒳_R = 0` child: the quotient framed pair at `N = Φ`-layer.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.
    ),
            NonemptyNonempty.{u} (α : Sort u) : Prop`Nonempty α` is a typeclass that says that `α` is not an empty type,
    that is, there exists an element in the type. It differs from `Inhabited α`
    in that `Nonempty α` is a `Prop`, which means that it does not actually carry
    an element of `α`, only a proof that *there exists* such an element.
    Given `Nonempty α`, you can construct an element of `α` *nonconstructively*
    using `Classical.choice`.
    
              (Q2Presentation.TorsorProgram.liftHomQ2Presentation.TorsorProgram.liftHom (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y) [hNn : N.Normal]
      (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ)
      (F : Q2Presentation.BoundaryFrame Yt)
      (g :
        Q2Presentation.boundaryFramedSurj B (Q2Presentation.TorsorProgram.quotientFramedTarget Yt N hNLY hNθ)
          (Q2Presentation.TorsorProgram.quotientFrame Yt N hNLY hNθ F)) :
      Type**All framed lifts** of a child-framed surjection (surjectivity NOT imposed;
    the Frattini argument recovers it per use-site).  pQ2Presentation.Induction.FramedPair.fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.
    
                (Q2Presentation.Induction.XRZero.NRQ2Presentation.Induction.XRZero.NR {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Subgroup p.fst.YThe Frattini layer as the quotient kernel.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)  
                Q2Presentation.boundaryPackage_GammaAQ2Presentation.boundaryPackage_GammaA : Q2Presentation.BoundaryPackage Q2Presentation.GammaA**The candidate boundary package** (manuscript Prop 3.14, `prop:compatiblemarking`;
    plan Turn 4 §6).  The Stage-C data of `Γ_A`: the common tame quotient `gammaTameMap`,
    the maximal pro-`2` quotient `p : Γ_A ⟶ Π`, and the common unramified character
    `ν = gammaTameMap ≫ ν_t`, through which both factor.  pQ2Presentation.Induction.FramedPair.sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.
     gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GammaA
      (Q2Presentation.Induction.XRZero.xrChild chief K).fst (Q2Presentation.Induction.XRZero.xrChild chief K).snd)) And (a b : Prop) : Prop`And a b`, or `a ∧ b`, is the conjunction of propositions. It can be
    constructed and destructed like a pair: if `ha : a` and `hb : b` then
    `⟨ha, hb⟩ : a ∧ b`, and if `h : a ∧ b` then `h.left : a` and `h.right : b`.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∧` in identifiers is `and`.
    
     * The recommended spelling of `/\` in identifiers is `and` (prefer `∧` over `/\`).
          (∀
              (gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GammaA
      (Q2Presentation.TorsorProgram.quotientFramedTarget p.fst (Q2Presentation.Induction.XRZero.NR chief K) ⋯ ⋯)
      (Q2Presentation.TorsorProgram.quotientFrame p.fst (Q2Presentation.Induction.XRZero.NR chief K) ⋯ ⋯ p.snd) :
                Q2Presentation.boundaryFramedSurjQ2Presentation.boundaryFramedSurj {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ)
      (Yt : Q2Presentation.BoundaryFramedTarget) (F : Q2Presentation.BoundaryFrame Yt) : TypeThe **boundary-framed surjections** `e_Γ^β(𝒴)` (manuscript `eq:eGamma`): the
    continuous surjections `f : Γ ↠ Y` whose induced map to `H × E` is the prescribed
    `β ∘ b_Γ`, i.e. `q_Y ∘ f = β ∘ b_Γ`.  This is the subtype counted in Theorem 4.2;
    its cardinality is `e_Γ^β(𝒴)`. 
                  Q2Presentation.boundaryPackage_GammaAQ2Presentation.boundaryPackage_GammaA : Q2Presentation.BoundaryPackage Q2Presentation.GammaA**The candidate boundary package** (manuscript Prop 3.14, `prop:compatiblemarking`;
    plan Turn 4 §6).  The Stage-C data of `Γ_A`: the common tame quotient `gammaTameMap`,
    the maximal pro-`2` quotient `p : Γ_A ⟶ Π`, and the common unramified character
    `ν = gammaTameMap ≫ ν_t`, through which both factor. 
                  (Q2Presentation.TorsorProgram.quotientFramedTargetQ2Presentation.TorsorProgram.quotientFramedTarget (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y)
      [hNn : N.Normal] (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) : Q2Presentation.BoundaryFramedTarget**The quotient framed target** `Y/N` (same `H`, same `E`, image wild kernel).  pQ2Presentation.Induction.FramedPair.fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.
    
                    (Q2Presentation.Induction.XRZero.NRQ2Presentation.Induction.XRZero.NR {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Subgroup p.fst.YThe Frattini layer as the quotient kernel.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)  )
                  (Q2Presentation.TorsorProgram.quotientFrameQ2Presentation.TorsorProgram.quotientFrame (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y)
      [hNn : N.Normal] (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) (F : Q2Presentation.BoundaryFrame Yt) :
      Q2Presentation.BoundaryFrame (Q2Presentation.TorsorProgram.quotientFramedTarget Yt N hNLY hNθ)The frame transports verbatim (`H`, `E`, `α`, `ψ`, `β` unchanged).  pQ2Presentation.Induction.FramedPair.fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.
    
                    (Q2Presentation.Induction.XRZero.NRQ2Presentation.Induction.XRZero.NR {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Subgroup p.fst.YThe Frattini layer as the quotient kernel.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)   pQ2Presentation.Induction.FramedPair.sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.
    ))
              (f₀Q2Presentation.TorsorProgram.liftHom p.fst (Q2Presentation.Induction.XRZero.NR chief K) ⋯ ⋯
      Q2Presentation.boundaryPackage_GammaA p.snd g :
                Q2Presentation.TorsorProgram.liftHomQ2Presentation.TorsorProgram.liftHom (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y) [hNn : N.Normal]
      (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ)
      (F : Q2Presentation.BoundaryFrame Yt)
      (g :
        Q2Presentation.boundaryFramedSurj B (Q2Presentation.TorsorProgram.quotientFramedTarget Yt N hNLY hNθ)
          (Q2Presentation.TorsorProgram.quotientFrame Yt N hNLY hNθ F)) :
      Type**All framed lifts** of a child-framed surjection (surjectivity NOT imposed;
    the Frattini argument recovers it per use-site).  pQ2Presentation.Induction.FramedPair.fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.
    
                  (Q2Presentation.Induction.XRZero.NRQ2Presentation.Induction.XRZero.NR {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Subgroup p.fst.YThe Frattini layer as the quotient kernel.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)  
                  Q2Presentation.boundaryPackage_GammaAQ2Presentation.boundaryPackage_GammaA : Q2Presentation.BoundaryPackage Q2Presentation.GammaA**The candidate boundary package** (manuscript Prop 3.14, `prop:compatiblemarking`;
    plan Turn 4 §6).  The Stage-C data of `Γ_A`: the common tame quotient `gammaTameMap`,
    the maximal pro-`2` quotient `p : Γ_A ⟶ Π`, and the common unramified character
    `ν = gammaTameMap ≫ ν_t`, through which both factor.  pQ2Presentation.Induction.FramedPair.sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.
     gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GammaA
      (Q2Presentation.TorsorProgram.quotientFramedTarget p.fst (Q2Presentation.Induction.XRZero.NR chief K) ⋯ ⋯)
      (Q2Presentation.TorsorProgram.quotientFrame p.fst (Q2Presentation.Induction.XRZero.NR chief K) ⋯ ⋯ p.snd)),
              Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number.
    If `α` is infinite, `Nat.card α = 0`. 
                  (Q2Presentation.TorsorProgram.Z1Q2Presentation.TorsorProgram.Z1 (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y) [hNn : N.Normal]
      (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ)
      (F : Q2Presentation.BoundaryFrame Yt)
      (g :
        Q2Presentation.boundaryFramedSurj B (Q2Presentation.TorsorProgram.quotientFramedTarget Yt N hNLY hNθ)
          (Q2Presentation.TorsorProgram.quotientFrame Yt N hNLY hNθ F))
      (f₀ : Q2Presentation.TorsorProgram.liftHom Yt N hNLY hNθ B F g) : Type**The twisted cocycle set** relative to a base lift.  pQ2Presentation.Induction.FramedPair.fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.
    
                    (Q2Presentation.Induction.XRZero.NRQ2Presentation.Induction.XRZero.NR {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Subgroup p.fst.YThe Frattini layer as the quotient kernel.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)  
                    Q2Presentation.boundaryPackage_GammaAQ2Presentation.boundaryPackage_GammaA : Q2Presentation.BoundaryPackage Q2Presentation.GammaA**The candidate boundary package** (manuscript Prop 3.14, `prop:compatiblemarking`;
    plan Turn 4 §6).  The Stage-C data of `Γ_A`: the common tame quotient `gammaTameMap`,
    the maximal pro-`2` quotient `p : Γ_A ⟶ Π`, and the common unramified character
    `ν = gammaTameMap ≫ ν_t`, through which both factor.  pQ2Presentation.Induction.FramedPair.sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.
     gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GammaA
      (Q2Presentation.TorsorProgram.quotientFramedTarget p.fst (Q2Presentation.Induction.XRZero.NR chief K) ⋯ ⋯)
      (Q2Presentation.TorsorProgram.quotientFrame p.fst (Q2Presentation.Induction.XRZero.NR chief K) ⋯ ⋯ p.snd) f₀Q2Presentation.TorsorProgram.liftHom p.fst (Q2Presentation.Induction.XRZero.NR chief K) ⋯ ⋯
      Q2Presentation.boundaryPackage_GammaA p.snd g) =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`.
                2 ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. (HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.2 *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. kdim)HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.) And (a b : Prop) : Prop`And a b`, or `a ∧ b`, is the conjunction of propositions. It can be
    constructed and destructed like a pair: if `ha : a` and `hb : b` then
    `⟨ha, hb⟩ : a ∧ b`, and if `h : a ∧ b` then `h.left : a` and `h.right : b`.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∧` in identifiers is `and`.
    
     * The recommended spelling of `/\` in identifiers is `and` (prefer `∧` over `/\`).
            (∀
                (gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GQ2
      (Q2Presentation.Induction.XRZero.xrChild chief K).fst (Q2Presentation.Induction.XRZero.xrChild chief K).snd :
                  Q2Presentation.boundaryFramedSurjQ2Presentation.boundaryFramedSurj {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ)
      (Yt : Q2Presentation.BoundaryFramedTarget) (F : Q2Presentation.BoundaryFrame Yt) : TypeThe **boundary-framed surjections** `e_Γ^β(𝒴)` (manuscript `eq:eGamma`): the
    continuous surjections `f : Γ ↠ Y` whose induced map to `H × E` is the prescribed
    `β ∘ b_Γ`, i.e. `q_Y ∘ f = β ∘ b_Γ`.  This is the subtype counted in Theorem 4.2;
    its cardinality is `e_Γ^β(𝒴)`. 
                    Q2Presentation.boundaryPackage_GQ2Q2Presentation.boundaryPackage_GQ2 : Q2Presentation.BoundaryPackage Q2Presentation.GQ2Profinite**The local boundary package** `boundaryPackage_GQ2 : BoundaryPackage G_{ℚ₂}`
    (manuscript Prop 3.14 `prop:compatiblemarking` for `Γ = G_{ℚ₂}`; plan Turn 4 §6),
    the `G_{ℚ₂}`-side instance of the uniform Stage-C boundary datum.
    
    * `tameMap`/`tame_surj`/`tame_nu` — the local tame quotient `G_{ℚ₂} ↠ T_A` with
      unramified marking `ν_loc`, from the axiom `gq2_tame_quotient` (Prop 3.2 + the
      local half of Prop `compatiblemarking`);
    * `pro2Map`/`pro2_surj`/`pro2_nu` — the local maximal pro-`2` quotient
      `G_{ℚ₂} ↠ Π` with the *same* unramified marking `ν_loc`, proved from the fully
      marked Labute comparison `labute_GQ2_maxPro2_marked` (`pro2Map_loc`,
      `pro2Map_loc_surjective`, `pro2Map_loc_nu`);
    * `nu := ν_loc` — the common unramified character through which both factor. 
                    (Q2Presentation.Induction.XRZero.xrChildQ2Presentation.Induction.XRZero.xrChild {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPairThe `𝒳_R = 0` child: the quotient framed pair at `N = Φ`-layer.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.
    
                    (Q2Presentation.Induction.XRZero.xrChildQ2Presentation.Induction.XRZero.xrChild {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPairThe `𝒳_R = 0` child: the quotient framed pair at `N = Φ`-layer.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.
    ),
                NonemptyNonempty.{u} (α : Sort u) : Prop`Nonempty α` is a typeclass that says that `α` is not an empty type,
    that is, there exists an element in the type. It differs from `Inhabited α`
    in that `Nonempty α` is a `Prop`, which means that it does not actually carry
    an element of `α`, only a proof that *there exists* such an element.
    Given `Nonempty α`, you can construct an element of `α` *nonconstructively*
    using `Classical.choice`.
    
                  (Q2Presentation.TorsorProgram.liftHomQ2Presentation.TorsorProgram.liftHom (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y) [hNn : N.Normal]
      (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ)
      (F : Q2Presentation.BoundaryFrame Yt)
      (g :
        Q2Presentation.boundaryFramedSurj B (Q2Presentation.TorsorProgram.quotientFramedTarget Yt N hNLY hNθ)
          (Q2Presentation.TorsorProgram.quotientFrame Yt N hNLY hNθ F)) :
      Type**All framed lifts** of a child-framed surjection (surjectivity NOT imposed;
    the Frattini argument recovers it per use-site).  pQ2Presentation.Induction.FramedPair.fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.
    
                    (Q2Presentation.Induction.XRZero.NRQ2Presentation.Induction.XRZero.NR {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Subgroup p.fst.YThe Frattini layer as the quotient kernel.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)  
                    Q2Presentation.boundaryPackage_GQ2Q2Presentation.boundaryPackage_GQ2 : Q2Presentation.BoundaryPackage Q2Presentation.GQ2Profinite**The local boundary package** `boundaryPackage_GQ2 : BoundaryPackage G_{ℚ₂}`
    (manuscript Prop 3.14 `prop:compatiblemarking` for `Γ = G_{ℚ₂}`; plan Turn 4 §6),
    the `G_{ℚ₂}`-side instance of the uniform Stage-C boundary datum.
    
    * `tameMap`/`tame_surj`/`tame_nu` — the local tame quotient `G_{ℚ₂} ↠ T_A` with
      unramified marking `ν_loc`, from the axiom `gq2_tame_quotient` (Prop 3.2 + the
      local half of Prop `compatiblemarking`);
    * `pro2Map`/`pro2_surj`/`pro2_nu` — the local maximal pro-`2` quotient
      `G_{ℚ₂} ↠ Π` with the *same* unramified marking `ν_loc`, proved from the fully
      marked Labute comparison `labute_GQ2_maxPro2_marked` (`pro2Map_loc`,
      `pro2Map_loc_surjective`, `pro2Map_loc_nu`);
    * `nu := ν_loc` — the common unramified character through which both factor.  pQ2Presentation.Induction.FramedPair.sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.
     gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GQ2
      (Q2Presentation.Induction.XRZero.xrChild chief K).fst (Q2Presentation.Induction.XRZero.xrChild chief K).snd)) And (a b : Prop) : Prop`And a b`, or `a ∧ b`, is the conjunction of propositions. It can be
    constructed and destructed like a pair: if `ha : a` and `hb : b` then
    `⟨ha, hb⟩ : a ∧ b`, and if `h : a ∧ b` then `h.left : a` and `h.right : b`.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∧` in identifiers is `and`.
    
     * The recommended spelling of `/\` in identifiers is `and` (prefer `∧` over `/\`).
              
                (gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GQ2
      (Q2Presentation.TorsorProgram.quotientFramedTarget p.fst (Q2Presentation.Induction.XRZero.NR chief K) ⋯ ⋯)
      (Q2Presentation.TorsorProgram.quotientFrame p.fst (Q2Presentation.Induction.XRZero.NR chief K) ⋯ ⋯ p.snd) :
                  Q2Presentation.boundaryFramedSurjQ2Presentation.boundaryFramedSurj {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ)
      (Yt : Q2Presentation.BoundaryFramedTarget) (F : Q2Presentation.BoundaryFrame Yt) : TypeThe **boundary-framed surjections** `e_Γ^β(𝒴)` (manuscript `eq:eGamma`): the
    continuous surjections `f : Γ ↠ Y` whose induced map to `H × E` is the prescribed
    `β ∘ b_Γ`, i.e. `q_Y ∘ f = β ∘ b_Γ`.  This is the subtype counted in Theorem 4.2;
    its cardinality is `e_Γ^β(𝒴)`. 
                    Q2Presentation.boundaryPackage_GQ2Q2Presentation.boundaryPackage_GQ2 : Q2Presentation.BoundaryPackage Q2Presentation.GQ2Profinite**The local boundary package** `boundaryPackage_GQ2 : BoundaryPackage G_{ℚ₂}`
    (manuscript Prop 3.14 `prop:compatiblemarking` for `Γ = G_{ℚ₂}`; plan Turn 4 §6),
    the `G_{ℚ₂}`-side instance of the uniform Stage-C boundary datum.
    
    * `tameMap`/`tame_surj`/`tame_nu` — the local tame quotient `G_{ℚ₂} ↠ T_A` with
      unramified marking `ν_loc`, from the axiom `gq2_tame_quotient` (Prop 3.2 + the
      local half of Prop `compatiblemarking`);
    * `pro2Map`/`pro2_surj`/`pro2_nu` — the local maximal pro-`2` quotient
      `G_{ℚ₂} ↠ Π` with the *same* unramified marking `ν_loc`, proved from the fully
      marked Labute comparison `labute_GQ2_maxPro2_marked` (`pro2Map_loc`,
      `pro2Map_loc_surjective`, `pro2Map_loc_nu`);
    * `nu := ν_loc` — the common unramified character through which both factor. 
                    (Q2Presentation.TorsorProgram.quotientFramedTargetQ2Presentation.TorsorProgram.quotientFramedTarget (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y)
      [hNn : N.Normal] (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) : Q2Presentation.BoundaryFramedTarget**The quotient framed target** `Y/N` (same `H`, same `E`, image wild kernel).  pQ2Presentation.Induction.FramedPair.fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.
    
                      (Q2Presentation.Induction.XRZero.NRQ2Presentation.Induction.XRZero.NR {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Subgroup p.fst.YThe Frattini layer as the quotient kernel.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)  )
                    (Q2Presentation.TorsorProgram.quotientFrameQ2Presentation.TorsorProgram.quotientFrame (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y)
      [hNn : N.Normal] (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) (F : Q2Presentation.BoundaryFrame Yt) :
      Q2Presentation.BoundaryFrame (Q2Presentation.TorsorProgram.quotientFramedTarget Yt N hNLY hNθ)The frame transports verbatim (`H`, `E`, `α`, `ψ`, `β` unchanged).  pQ2Presentation.Induction.FramedPair.fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.
    
                      (Q2Presentation.Induction.XRZero.NRQ2Presentation.Induction.XRZero.NR {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Subgroup p.fst.YThe Frattini layer as the quotient kernel.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)  
                      pQ2Presentation.Induction.FramedPair.sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.
    ))
                (f₀Q2Presentation.TorsorProgram.liftHom p.fst (Q2Presentation.Induction.XRZero.NR chief K) ⋯ ⋯
      Q2Presentation.boundaryPackage_GQ2 p.snd g :
                  Q2Presentation.TorsorProgram.liftHomQ2Presentation.TorsorProgram.liftHom (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y) [hNn : N.Normal]
      (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ)
      (F : Q2Presentation.BoundaryFrame Yt)
      (g :
        Q2Presentation.boundaryFramedSurj B (Q2Presentation.TorsorProgram.quotientFramedTarget Yt N hNLY hNθ)
          (Q2Presentation.TorsorProgram.quotientFrame Yt N hNLY hNθ F)) :
      Type**All framed lifts** of a child-framed surjection (surjectivity NOT imposed;
    the Frattini argument recovers it per use-site).  pQ2Presentation.Induction.FramedPair.fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.
    
                    (Q2Presentation.Induction.XRZero.NRQ2Presentation.Induction.XRZero.NR {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Subgroup p.fst.YThe Frattini layer as the quotient kernel.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)  
                    Q2Presentation.boundaryPackage_GQ2Q2Presentation.boundaryPackage_GQ2 : Q2Presentation.BoundaryPackage Q2Presentation.GQ2Profinite**The local boundary package** `boundaryPackage_GQ2 : BoundaryPackage G_{ℚ₂}`
    (manuscript Prop 3.14 `prop:compatiblemarking` for `Γ = G_{ℚ₂}`; plan Turn 4 §6),
    the `G_{ℚ₂}`-side instance of the uniform Stage-C boundary datum.
    
    * `tameMap`/`tame_surj`/`tame_nu` — the local tame quotient `G_{ℚ₂} ↠ T_A` with
      unramified marking `ν_loc`, from the axiom `gq2_tame_quotient` (Prop 3.2 + the
      local half of Prop `compatiblemarking`);
    * `pro2Map`/`pro2_surj`/`pro2_nu` — the local maximal pro-`2` quotient
      `G_{ℚ₂} ↠ Π` with the *same* unramified marking `ν_loc`, proved from the fully
      marked Labute comparison `labute_GQ2_maxPro2_marked` (`pro2Map_loc`,
      `pro2Map_loc_surjective`, `pro2Map_loc_nu`);
    * `nu := ν_loc` — the common unramified character through which both factor.  pQ2Presentation.Induction.FramedPair.sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.
     gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GQ2
      (Q2Presentation.TorsorProgram.quotientFramedTarget p.fst (Q2Presentation.Induction.XRZero.NR chief K) ⋯ ⋯)
      (Q2Presentation.TorsorProgram.quotientFrame p.fst (Q2Presentation.Induction.XRZero.NR chief K) ⋯ ⋯ p.snd)),
                Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number.
    If `α` is infinite, `Nat.card α = 0`. 
                    (Q2Presentation.TorsorProgram.Z1Q2Presentation.TorsorProgram.Z1 (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y) [hNn : N.Normal]
      (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ)
      (F : Q2Presentation.BoundaryFrame Yt)
      (g :
        Q2Presentation.boundaryFramedSurj B (Q2Presentation.TorsorProgram.quotientFramedTarget Yt N hNLY hNθ)
          (Q2Presentation.TorsorProgram.quotientFrame Yt N hNLY hNθ F))
      (f₀ : Q2Presentation.TorsorProgram.liftHom Yt N hNLY hNθ B F g) : Type**The twisted cocycle set** relative to a base lift.  pQ2Presentation.Induction.FramedPair.fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.
    
                      (Q2Presentation.Induction.XRZero.NRQ2Presentation.Induction.XRZero.NR {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Subgroup p.fst.YThe Frattini layer as the quotient kernel.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)  
                      Q2Presentation.boundaryPackage_GQ2Q2Presentation.boundaryPackage_GQ2 : Q2Presentation.BoundaryPackage Q2Presentation.GQ2Profinite**The local boundary package** `boundaryPackage_GQ2 : BoundaryPackage G_{ℚ₂}`
    (manuscript Prop 3.14 `prop:compatiblemarking` for `Γ = G_{ℚ₂}`; plan Turn 4 §6),
    the `G_{ℚ₂}`-side instance of the uniform Stage-C boundary datum.
    
    * `tameMap`/`tame_surj`/`tame_nu` — the local tame quotient `G_{ℚ₂} ↠ T_A` with
      unramified marking `ν_loc`, from the axiom `gq2_tame_quotient` (Prop 3.2 + the
      local half of Prop `compatiblemarking`);
    * `pro2Map`/`pro2_surj`/`pro2_nu` — the local maximal pro-`2` quotient
      `G_{ℚ₂} ↠ Π` with the *same* unramified marking `ν_loc`, proved from the fully
      marked Labute comparison `labute_GQ2_maxPro2_marked` (`pro2Map_loc`,
      `pro2Map_loc_surjective`, `pro2Map_loc_nu`);
    * `nu := ν_loc` — the common unramified character through which both factor.  pQ2Presentation.Induction.FramedPair.sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.
     gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GQ2
      (Q2Presentation.TorsorProgram.quotientFramedTarget p.fst (Q2Presentation.Induction.XRZero.NR chief K) ⋯ ⋯)
      (Q2Presentation.TorsorProgram.quotientFrame p.fst (Q2Presentation.Induction.XRZero.NR chief K) ⋯ ⋯ p.snd) f₀Q2Presentation.TorsorProgram.liftHom p.fst (Q2Presentation.Induction.XRZero.NR chief K) ⋯ ⋯
      Q2Presentation.boundaryPackage_GQ2 p.snd g) =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`.
                  2 ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. (HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.2 *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. kdim)HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
    theorem Q2Presentation.Induction.XRZero.sec7_xrzero_cochainData
      {pQ2Presentation.Induction.FramedPair :
        Q2Presentation.Induction.FramedPairQ2Presentation.Induction.FramedPair : Type 1A **framed pair** `(𝒴, F)`: a boundary-framed marked target together with a
    boundary frame for it (manuscript Definition 4.1 + `eq:beta`).  This is the index of
    Theorem 4.2: the boundary-framed surjection count `e_Γ^β` is a function of the pair.
    The induction of `sec:induction` ranges over *all* such pairs simultaneously
    ("the induction is stated globally", l.1213), ordered by `|L_Y|`. }
      (h¬Q2Presentation.Induction.ScalarTerminal p :
        ¬Not (a : Prop) : Prop`Not p`, or `¬p`, is the negation of `p`. It is defined to be `p → False`,
    so if your goal is `¬p` you can use `intro h` to turn the goal into
    `h : p ⊢ False`, and if you have `hn : ¬p` and `h : p` then `hn h : False`
    and `(hn h).elim` will prove anything.
    For more information: [Propositional Logic](https://lean-lang.org/theorem_proving_in_lean4/propositions_and_proofs.html#propositional-logic)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `¬` in identifiers is `not`.Q2Presentation.Induction.ScalarTerminalQ2Presentation.Induction.ScalarTerminal (p : Q2Presentation.Induction.FramedPair) : Prop**Scalar-terminal framed pair.** 
            pQ2Presentation.Induction.FramedPair)
      (chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p :
        Q2Presentation.Induction.FirstNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor (p : Q2Presentation.Induction.FramedPair) : TypeA non-scalar chief factor of `L_Y` that is **first**: every chief factor strictly
    below it (i.e. with upper term contained in `lower`) is scalar.  This is the manuscript's
    choice `S ◁ P` at l.3616–3623 ("all chief factors below `S` are scalar and `V` is the
    first non-scalar simple factor"), which `lem:collapse` requires for the coprime step
    `[S, Ñ] = 1`. 
          pQ2Presentation.Induction.FramedPair)
      (KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor :
        Q2Presentation.Induction.KernelMinimalQ2Presentation.Induction.KernelMinimal {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.NonScalarChiefFactor p) : TypeThe manuscript's kernel choice (l.3623): `K ◁ Y`, `K ≤ P`, `KS = P`, and `K` is
    **⊆-minimal** with these properties — stated as: any `Y`-normal `K' ≤ K` still joining
    with `S` to `P` equals `K`.  (This, not leastness among all candidates, is what
    `lem:simplehead` and `lem:collapse` use: both apply it to subgroups of `K`.) 
          chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p.toNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor.toNonScalarChiefFactor {p : Q2Presentation.Induction.FramedPair}
      (self : Q2Presentation.Induction.FirstNonScalarChiefFactor p) : Q2Presentation.Induction.NonScalarChiefFactor p)
      (hR1 < Nat.card ↥(Q2Presentation.Induction.kernelFrattini K) :
        1 <LT.lt.{u} {α : Type u} [self : LT α] : α → α → PropThe less-than relation: `x < y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `<` in identifiers is `lt`.
          Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number.
    If `α` is infinite, `Nat.card α = 0`. 
            (Q2Presentation.Induction.kernelFrattiniQ2Presentation.Induction.kernelFrattini {p : Q2Presentation.Induction.FramedPair}
      {chief : Q2Presentation.Induction.NonScalarChiefFactor p} (K : Q2Presentation.Induction.KernelMinimal chief) :
      Subgroup p.fst.YThe literal Frattini subgroup `R = Φ(K)` of the kernel, as a subgroup of `Y`
    (the manuscript's `R`, l.3626). 
                KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor))
      (hchar¬∃ lam,
        lam ≠ 0 ∧
          ∀ (c : (Q2Presentation.Induction.sec7RawTowerPacketCanonical chief K).rawModuleData.C),
            lam ∘ₗ ↑((Q2Presentation.Induction.sec7RawTowerPacketCanonical chief K).rawActionData.actR c) = lam :
        ¬Not (a : Prop) : Prop`Not p`, or `¬p`, is the negation of `p`. It is defined to be `p → False`,
    so if your goal is `¬p` you can use `intro h` to turn the goal into
    `h : p ⊢ False`, and if you have `hn : ¬p` and `h : p` then `hn h : False`
    and `(hn h).elim` will prove anything.
    For more information: [Propositional Logic](https://lean-lang.org/theorem_proving_in_lean4/propositions_and_proofs.html#propositional-logic)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `¬` in identifiers is `not`. lamModule.Dual (ZMod 2) (Q2Presentation.Induction.sec7RawTowerPacketCanonical chief K).rawModuleData.R,
            lamModule.Dual (ZMod 2) (Q2Presentation.Induction.sec7RawTowerPacketCanonical chief K).rawModuleData.R Ne.{u} {α : Sort u} (a b : α) : Prop`a ≠ b`, or `Ne a b` is defined as `¬ (a = b)` or `a = b → False`,
    and asserts that `a` and `b` are not equal.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≠` in identifiers is `ne`. 0 And (a b : Prop) : Prop`And a b`, or `a ∧ b`, is the conjunction of propositions. It can be
    constructed and destructed like a pair: if `ha : a` and `hb : b` then
    `⟨ha, hb⟩ : a ∧ b`, and if `h : a ∧ b` then `h.left : a` and `h.right : b`.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∧` in identifiers is `and`.
    
     * The recommended spelling of `/\` in identifiers is `and` (prefer `∧` over `/\`).
              
                (c(Q2Presentation.Induction.sec7RawTowerPacketCanonical chief K).rawModuleData.C :
                  (Q2Presentation.Induction.sec7RawTowerPacketCanonicalQ2Presentation.Induction.sec7RawTowerPacketCanonical {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Induction.Sec7RawTowerPacket chief KThe canonical raw tower packet — the literal §7 constructors (checkpoint-F9).
    Using this definitional packet (instead of an opaque `Nonempty`-obtained one) lets the
    crux-lowered pushout packet of `Section7PushoutConstruction` be consumed directly. 
                        chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p
                        KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).rawModuleDataQ2Presentation.Induction.Sec7RawTowerPacket.rawModuleData {p : Q2Presentation.Induction.FramedPair}
      {chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p}
      {K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor}
      (self : Q2Presentation.Induction.Sec7RawTowerPacket chief K) :
      Q2Presentation.Induction.MinimalBlockRawModuleData p chief.toNonScalarChiefFactor.CQ2Presentation.Induction.MinimalBlockRawModuleData.C {p : Q2Presentation.Induction.FramedPair}
      {chief : Q2Presentation.Induction.NonScalarChiefFactor p}
      (self : Q2Presentation.Induction.MinimalBlockRawModuleData p chief) : Type),
                lamModule.Dual (ZMod 2) (Q2Presentation.Induction.sec7RawTowerPacketCanonical chief K).rawModuleData.R ∘ₗLinearMap.comp.{u_2, u_3, u_4, u_9, u_10, u_11} {R₁ : Type u_2} {R₂ : Type u_3} {R₃ : Type u_4} {M₁ : Type u_9}
      {M₂ : Type u_10} {M₃ : Type u_11} [Semiring R₁] [Semiring R₂] [Semiring R₃] [AddCommMonoid M₁] [AddCommMonoid M₂]
      [AddCommMonoid M₃] {module_M₁ : Module R₁ M₁} {module_M₂ : Module R₂ M₂} {module_M₃ : Module R₃ M₃} {σ₁₂ : R₁ →+* R₂}
      {σ₂₃ : R₂ →+* R₃} {σ₁₃ : R₁ →+* R₃} [RingHomCompTriple σ₁₂ σ₂₃ σ₁₃] (f : M₂ →ₛₗ[σ₂₃] M₃) (g : M₁ →ₛₗ[σ₁₂] M₂) :
      M₁ →ₛₗ[σ₁₃] M₃Composition of two linear maps is a linear map 
                    ((Q2Presentation.Induction.sec7RawTowerPacketCanonicalQ2Presentation.Induction.sec7RawTowerPacketCanonical {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Induction.Sec7RawTowerPacket chief KThe canonical raw tower packet — the literal §7 constructors (checkpoint-F9).
    Using this definitional packet (instead of an opaque `Nonempty`-obtained one) lets the
    crux-lowered pushout packet of `Section7PushoutConstruction` be consumed directly. 
                              chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p
                              KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).rawActionDataQ2Presentation.Induction.Sec7RawTowerPacket.rawActionData {p : Q2Presentation.Induction.FramedPair}
      {chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p}
      {K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor}
      (self : Q2Presentation.Induction.Sec7RawTowerPacket chief K) :
      Q2Presentation.Induction.MinimalBlockRawActionData self.rawModuleData.actRQ2Presentation.Induction.MinimalBlockRawActionData.actR {p : Q2Presentation.Induction.FramedPair}
      {chief : Q2Presentation.Induction.NonScalarChiefFactor p}
      {D : Q2Presentation.Induction.MinimalBlockRawModuleData p chief}
      (self : Q2Presentation.Induction.MinimalBlockRawActionData D) : D.C →* D.R ≃ₗ[ZMod 2] D.R
                        c(Q2Presentation.Induction.sec7RawTowerPacketCanonical chief K).rawModuleData.C) =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`.
                  lamModule.Dual (ZMod 2) (Q2Presentation.Induction.sec7RawTowerPacketCanonical chief K).rawModuleData.R) :
       kdim,
        (∀
            (gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GammaA
      (Q2Presentation.Induction.XRZero.xrChild chief K).fst (Q2Presentation.Induction.XRZero.xrChild chief K).snd :
              Q2Presentation.boundaryFramedSurjQ2Presentation.boundaryFramedSurj {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ)
      (Yt : Q2Presentation.BoundaryFramedTarget) (F : Q2Presentation.BoundaryFrame Yt) : TypeThe **boundary-framed surjections** `e_Γ^β(𝒴)` (manuscript `eq:eGamma`): the
    continuous surjections `f : Γ ↠ Y` whose induced map to `H × E` is the prescribed
    `β ∘ b_Γ`, i.e. `q_Y ∘ f = β ∘ b_Γ`.  This is the subtype counted in Theorem 4.2;
    its cardinality is `e_Γ^β(𝒴)`. 
                Q2Presentation.boundaryPackage_GammaAQ2Presentation.boundaryPackage_GammaA : Q2Presentation.BoundaryPackage Q2Presentation.GammaA**The candidate boundary package** (manuscript Prop 3.14, `prop:compatiblemarking`;
    plan Turn 4 §6).  The Stage-C data of `Γ_A`: the common tame quotient `gammaTameMap`,
    the maximal pro-`2` quotient `p : Γ_A ⟶ Π`, and the common unramified character
    `ν = gammaTameMap ≫ ν_t`, through which both factor. 
                (Q2Presentation.Induction.XRZero.xrChildQ2Presentation.Induction.XRZero.xrChild {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPairThe `𝒳_R = 0` child: the quotient framed pair at `N = Φ`-layer. 
                    chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.
    
                (Q2Presentation.Induction.XRZero.xrChildQ2Presentation.Induction.XRZero.xrChild {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPairThe `𝒳_R = 0` child: the quotient framed pair at `N = Φ`-layer. 
                    chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.
    ),
            NonemptyNonempty.{u} (α : Sort u) : Prop`Nonempty α` is a typeclass that says that `α` is not an empty type,
    that is, there exists an element in the type. It differs from `Inhabited α`
    in that `Nonempty α` is a `Prop`, which means that it does not actually carry
    an element of `α`, only a proof that *there exists* such an element.
    Given `Nonempty α`, you can construct an element of `α` *nonconstructively*
    using `Classical.choice`.
    
              (Q2Presentation.TorsorProgram.liftHomQ2Presentation.TorsorProgram.liftHom (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y) [hNn : N.Normal]
      (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ)
      (F : Q2Presentation.BoundaryFrame Yt)
      (g :
        Q2Presentation.boundaryFramedSurj B (Q2Presentation.TorsorProgram.quotientFramedTarget Yt N hNLY hNθ)
          (Q2Presentation.TorsorProgram.quotientFrame Yt N hNLY hNθ F)) :
      Type**All framed lifts** of a child-framed surjection (surjectivity NOT imposed;
    the Frattini argument recovers it per use-site). 
                pQ2Presentation.Induction.FramedPair.fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.
    
                (Q2Presentation.Induction.XRZero.NRQ2Presentation.Induction.XRZero.NR {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Subgroup p.fst.YThe Frattini layer as the quotient kernel. 
                  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
                 
                Q2Presentation.boundaryPackage_GammaAQ2Presentation.boundaryPackage_GammaA : Q2Presentation.BoundaryPackage Q2Presentation.GammaA**The candidate boundary package** (manuscript Prop 3.14, `prop:compatiblemarking`;
    plan Turn 4 §6).  The Stage-C data of `Γ_A`: the common tame quotient `gammaTameMap`,
    the maximal pro-`2` quotient `p : Γ_A ⟶ Π`, and the common unramified character
    `ν = gammaTameMap ≫ ν_t`, through which both factor. 
                pQ2Presentation.Induction.FramedPair.sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.
     gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GammaA
      (Q2Presentation.Induction.XRZero.xrChild chief K).fst (Q2Presentation.Induction.XRZero.xrChild chief K).snd)) And (a b : Prop) : Prop`And a b`, or `a ∧ b`, is the conjunction of propositions. It can be
    constructed and destructed like a pair: if `ha : a` and `hb : b` then
    `⟨ha, hb⟩ : a ∧ b`, and if `h : a ∧ b` then `h.left : a` and `h.right : b`.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∧` in identifiers is `and`.
    
     * The recommended spelling of `/\` in identifiers is `and` (prefer `∧` over `/\`).
          (∀
              (gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GammaA
      (Q2Presentation.TorsorProgram.quotientFramedTarget p.fst (Q2Presentation.Induction.XRZero.NR chief K) ⋯ ⋯)
      (Q2Presentation.TorsorProgram.quotientFrame p.fst (Q2Presentation.Induction.XRZero.NR chief K) ⋯ ⋯ p.snd) :
                Q2Presentation.boundaryFramedSurjQ2Presentation.boundaryFramedSurj {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ)
      (Yt : Q2Presentation.BoundaryFramedTarget) (F : Q2Presentation.BoundaryFrame Yt) : TypeThe **boundary-framed surjections** `e_Γ^β(𝒴)` (manuscript `eq:eGamma`): the
    continuous surjections `f : Γ ↠ Y` whose induced map to `H × E` is the prescribed
    `β ∘ b_Γ`, i.e. `q_Y ∘ f = β ∘ b_Γ`.  This is the subtype counted in Theorem 4.2;
    its cardinality is `e_Γ^β(𝒴)`. 
                  Q2Presentation.boundaryPackage_GammaAQ2Presentation.boundaryPackage_GammaA : Q2Presentation.BoundaryPackage Q2Presentation.GammaA**The candidate boundary package** (manuscript Prop 3.14, `prop:compatiblemarking`;
    plan Turn 4 §6).  The Stage-C data of `Γ_A`: the common tame quotient `gammaTameMap`,
    the maximal pro-`2` quotient `p : Γ_A ⟶ Π`, and the common unramified character
    `ν = gammaTameMap ≫ ν_t`, through which both factor. 
                  (Q2Presentation.TorsorProgram.quotientFramedTargetQ2Presentation.TorsorProgram.quotientFramedTarget (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y)
      [hNn : N.Normal] (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) : Q2Presentation.BoundaryFramedTarget**The quotient framed target** `Y/N` (same `H`, same `E`, image wild kernel). 
                    pQ2Presentation.Induction.FramedPair.fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.
    
                    (Q2Presentation.Induction.XRZero.NRQ2Presentation.Induction.XRZero.NR {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Subgroup p.fst.YThe Frattini layer as the quotient kernel. 
                      chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
                     )
                  (Q2Presentation.TorsorProgram.quotientFrameQ2Presentation.TorsorProgram.quotientFrame (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y)
      [hNn : N.Normal] (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) (F : Q2Presentation.BoundaryFrame Yt) :
      Q2Presentation.BoundaryFrame (Q2Presentation.TorsorProgram.quotientFramedTarget Yt N hNLY hNθ)The frame transports verbatim (`H`, `E`, `α`, `ψ`, `β` unchanged). 
                    pQ2Presentation.Induction.FramedPair.fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.
    
                    (Q2Presentation.Induction.XRZero.NRQ2Presentation.Induction.XRZero.NR {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Subgroup p.fst.YThe Frattini layer as the quotient kernel. 
                      chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
                      pQ2Presentation.Induction.FramedPair.sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.
    ))
              (f₀Q2Presentation.TorsorProgram.liftHom p.fst (Q2Presentation.Induction.XRZero.NR chief K) ⋯ ⋯
      Q2Presentation.boundaryPackage_GammaA p.snd g :
                Q2Presentation.TorsorProgram.liftHomQ2Presentation.TorsorProgram.liftHom (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y) [hNn : N.Normal]
      (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ)
      (F : Q2Presentation.BoundaryFrame Yt)
      (g :
        Q2Presentation.boundaryFramedSurj B (Q2Presentation.TorsorProgram.quotientFramedTarget Yt N hNLY hNθ)
          (Q2Presentation.TorsorProgram.quotientFrame Yt N hNLY hNθ F)) :
      Type**All framed lifts** of a child-framed surjection (surjectivity NOT imposed;
    the Frattini argument recovers it per use-site). 
                  pQ2Presentation.Induction.FramedPair.fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.
    
                  (Q2Presentation.Induction.XRZero.NRQ2Presentation.Induction.XRZero.NR {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Subgroup p.fst.YThe Frattini layer as the quotient kernel. 
                    chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
                   
                  Q2Presentation.boundaryPackage_GammaAQ2Presentation.boundaryPackage_GammaA : Q2Presentation.BoundaryPackage Q2Presentation.GammaA**The candidate boundary package** (manuscript Prop 3.14, `prop:compatiblemarking`;
    plan Turn 4 §6).  The Stage-C data of `Γ_A`: the common tame quotient `gammaTameMap`,
    the maximal pro-`2` quotient `p : Γ_A ⟶ Π`, and the common unramified character
    `ν = gammaTameMap ≫ ν_t`, through which both factor. 
                  pQ2Presentation.Induction.FramedPair.sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.
     gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GammaA
      (Q2Presentation.TorsorProgram.quotientFramedTarget p.fst (Q2Presentation.Induction.XRZero.NR chief K) ⋯ ⋯)
      (Q2Presentation.TorsorProgram.quotientFrame p.fst (Q2Presentation.Induction.XRZero.NR chief K) ⋯ ⋯ p.snd)),
              Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number.
    If `α` is infinite, `Nat.card α = 0`. 
                  (Q2Presentation.TorsorProgram.Z1Q2Presentation.TorsorProgram.Z1 (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y) [hNn : N.Normal]
      (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ)
      (F : Q2Presentation.BoundaryFrame Yt)
      (g :
        Q2Presentation.boundaryFramedSurj B (Q2Presentation.TorsorProgram.quotientFramedTarget Yt N hNLY hNθ)
          (Q2Presentation.TorsorProgram.quotientFrame Yt N hNLY hNθ F))
      (f₀ : Q2Presentation.TorsorProgram.liftHom Yt N hNLY hNθ B F g) : Type**The twisted cocycle set** relative to a base lift. 
                    pQ2Presentation.Induction.FramedPair.fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.
    
                    (Q2Presentation.Induction.XRZero.NRQ2Presentation.Induction.XRZero.NR {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Subgroup p.fst.YThe Frattini layer as the quotient kernel. 
                      chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
                     
                    Q2Presentation.boundaryPackage_GammaAQ2Presentation.boundaryPackage_GammaA : Q2Presentation.BoundaryPackage Q2Presentation.GammaA**The candidate boundary package** (manuscript Prop 3.14, `prop:compatiblemarking`;
    plan Turn 4 §6).  The Stage-C data of `Γ_A`: the common tame quotient `gammaTameMap`,
    the maximal pro-`2` quotient `p : Γ_A ⟶ Π`, and the common unramified character
    `ν = gammaTameMap ≫ ν_t`, through which both factor. 
                    pQ2Presentation.Induction.FramedPair.sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.
     gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GammaA
      (Q2Presentation.TorsorProgram.quotientFramedTarget p.fst (Q2Presentation.Induction.XRZero.NR chief K) ⋯ ⋯)
      (Q2Presentation.TorsorProgram.quotientFrame p.fst (Q2Presentation.Induction.XRZero.NR chief K) ⋯ ⋯ p.snd) f₀Q2Presentation.TorsorProgram.liftHom p.fst (Q2Presentation.Induction.XRZero.NR chief K) ⋯ ⋯
      Q2Presentation.boundaryPackage_GammaA p.snd g) =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`.
                2 ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. (HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.2 *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. kdim)HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.) And (a b : Prop) : Prop`And a b`, or `a ∧ b`, is the conjunction of propositions. It can be
    constructed and destructed like a pair: if `ha : a` and `hb : b` then
    `⟨ha, hb⟩ : a ∧ b`, and if `h : a ∧ b` then `h.left : a` and `h.right : b`.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∧` in identifiers is `and`.
    
     * The recommended spelling of `/\` in identifiers is `and` (prefer `∧` over `/\`).
            (∀
                (gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GQ2
      (Q2Presentation.Induction.XRZero.xrChild chief K).fst (Q2Presentation.Induction.XRZero.xrChild chief K).snd :
                  Q2Presentation.boundaryFramedSurjQ2Presentation.boundaryFramedSurj {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ)
      (Yt : Q2Presentation.BoundaryFramedTarget) (F : Q2Presentation.BoundaryFrame Yt) : TypeThe **boundary-framed surjections** `e_Γ^β(𝒴)` (manuscript `eq:eGamma`): the
    continuous surjections `f : Γ ↠ Y` whose induced map to `H × E` is the prescribed
    `β ∘ b_Γ`, i.e. `q_Y ∘ f = β ∘ b_Γ`.  This is the subtype counted in Theorem 4.2;
    its cardinality is `e_Γ^β(𝒴)`. 
                    Q2Presentation.boundaryPackage_GQ2Q2Presentation.boundaryPackage_GQ2 : Q2Presentation.BoundaryPackage Q2Presentation.GQ2Profinite**The local boundary package** `boundaryPackage_GQ2 : BoundaryPackage G_{ℚ₂}`
    (manuscript Prop 3.14 `prop:compatiblemarking` for `Γ = G_{ℚ₂}`; plan Turn 4 §6),
    the `G_{ℚ₂}`-side instance of the uniform Stage-C boundary datum.
    
    * `tameMap`/`tame_surj`/`tame_nu` — the local tame quotient `G_{ℚ₂} ↠ T_A` with
      unramified marking `ν_loc`, from the axiom `gq2_tame_quotient` (Prop 3.2 + the
      local half of Prop `compatiblemarking`);
    * `pro2Map`/`pro2_surj`/`pro2_nu` — the local maximal pro-`2` quotient
      `G_{ℚ₂} ↠ Π` with the *same* unramified marking `ν_loc`, proved from the fully
      marked Labute comparison `labute_GQ2_maxPro2_marked` (`pro2Map_loc`,
      `pro2Map_loc_surjective`, `pro2Map_loc_nu`);
    * `nu := ν_loc` — the common unramified character through which both factor. 
                    (Q2Presentation.Induction.XRZero.xrChildQ2Presentation.Induction.XRZero.xrChild {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPairThe `𝒳_R = 0` child: the quotient framed pair at `N = Φ`-layer. 
                        chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.
    
                    (Q2Presentation.Induction.XRZero.xrChildQ2Presentation.Induction.XRZero.xrChild {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPairThe `𝒳_R = 0` child: the quotient framed pair at `N = Φ`-layer. 
                        chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.
    ),
                NonemptyNonempty.{u} (α : Sort u) : Prop`Nonempty α` is a typeclass that says that `α` is not an empty type,
    that is, there exists an element in the type. It differs from `Inhabited α`
    in that `Nonempty α` is a `Prop`, which means that it does not actually carry
    an element of `α`, only a proof that *there exists* such an element.
    Given `Nonempty α`, you can construct an element of `α` *nonconstructively*
    using `Classical.choice`.
    
                  (Q2Presentation.TorsorProgram.liftHomQ2Presentation.TorsorProgram.liftHom (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y) [hNn : N.Normal]
      (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ)
      (F : Q2Presentation.BoundaryFrame Yt)
      (g :
        Q2Presentation.boundaryFramedSurj B (Q2Presentation.TorsorProgram.quotientFramedTarget Yt N hNLY hNθ)
          (Q2Presentation.TorsorProgram.quotientFrame Yt N hNLY hNθ F)) :
      Type**All framed lifts** of a child-framed surjection (surjectivity NOT imposed;
    the Frattini argument recovers it per use-site). 
                    pQ2Presentation.Induction.FramedPair.fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.
    
                    (Q2Presentation.Induction.XRZero.NRQ2Presentation.Induction.XRZero.NR {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Subgroup p.fst.YThe Frattini layer as the quotient kernel. 
                      chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
                     
                    Q2Presentation.boundaryPackage_GQ2Q2Presentation.boundaryPackage_GQ2 : Q2Presentation.BoundaryPackage Q2Presentation.GQ2Profinite**The local boundary package** `boundaryPackage_GQ2 : BoundaryPackage G_{ℚ₂}`
    (manuscript Prop 3.14 `prop:compatiblemarking` for `Γ = G_{ℚ₂}`; plan Turn 4 §6),
    the `G_{ℚ₂}`-side instance of the uniform Stage-C boundary datum.
    
    * `tameMap`/`tame_surj`/`tame_nu` — the local tame quotient `G_{ℚ₂} ↠ T_A` with
      unramified marking `ν_loc`, from the axiom `gq2_tame_quotient` (Prop 3.2 + the
      local half of Prop `compatiblemarking`);
    * `pro2Map`/`pro2_surj`/`pro2_nu` — the local maximal pro-`2` quotient
      `G_{ℚ₂} ↠ Π` with the *same* unramified marking `ν_loc`, proved from the fully
      marked Labute comparison `labute_GQ2_maxPro2_marked` (`pro2Map_loc`,
      `pro2Map_loc_surjective`, `pro2Map_loc_nu`);
    * `nu := ν_loc` — the common unramified character through which both factor. 
                    pQ2Presentation.Induction.FramedPair.sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.
     gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GQ2
      (Q2Presentation.Induction.XRZero.xrChild chief K).fst (Q2Presentation.Induction.XRZero.xrChild chief K).snd)) And (a b : Prop) : Prop`And a b`, or `a ∧ b`, is the conjunction of propositions. It can be
    constructed and destructed like a pair: if `ha : a` and `hb : b` then
    `⟨ha, hb⟩ : a ∧ b`, and if `h : a ∧ b` then `h.left : a` and `h.right : b`.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∧` in identifiers is `and`.
    
     * The recommended spelling of `/\` in identifiers is `and` (prefer `∧` over `/\`).
              
                (gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GQ2
      (Q2Presentation.TorsorProgram.quotientFramedTarget p.fst (Q2Presentation.Induction.XRZero.NR chief K) ⋯ ⋯)
      (Q2Presentation.TorsorProgram.quotientFrame p.fst (Q2Presentation.Induction.XRZero.NR chief K) ⋯ ⋯ p.snd) :
                  Q2Presentation.boundaryFramedSurjQ2Presentation.boundaryFramedSurj {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ)
      (Yt : Q2Presentation.BoundaryFramedTarget) (F : Q2Presentation.BoundaryFrame Yt) : TypeThe **boundary-framed surjections** `e_Γ^β(𝒴)` (manuscript `eq:eGamma`): the
    continuous surjections `f : Γ ↠ Y` whose induced map to `H × E` is the prescribed
    `β ∘ b_Γ`, i.e. `q_Y ∘ f = β ∘ b_Γ`.  This is the subtype counted in Theorem 4.2;
    its cardinality is `e_Γ^β(𝒴)`. 
                    Q2Presentation.boundaryPackage_GQ2Q2Presentation.boundaryPackage_GQ2 : Q2Presentation.BoundaryPackage Q2Presentation.GQ2Profinite**The local boundary package** `boundaryPackage_GQ2 : BoundaryPackage G_{ℚ₂}`
    (manuscript Prop 3.14 `prop:compatiblemarking` for `Γ = G_{ℚ₂}`; plan Turn 4 §6),
    the `G_{ℚ₂}`-side instance of the uniform Stage-C boundary datum.
    
    * `tameMap`/`tame_surj`/`tame_nu` — the local tame quotient `G_{ℚ₂} ↠ T_A` with
      unramified marking `ν_loc`, from the axiom `gq2_tame_quotient` (Prop 3.2 + the
      local half of Prop `compatiblemarking`);
    * `pro2Map`/`pro2_surj`/`pro2_nu` — the local maximal pro-`2` quotient
      `G_{ℚ₂} ↠ Π` with the *same* unramified marking `ν_loc`, proved from the fully
      marked Labute comparison `labute_GQ2_maxPro2_marked` (`pro2Map_loc`,
      `pro2Map_loc_surjective`, `pro2Map_loc_nu`);
    * `nu := ν_loc` — the common unramified character through which both factor. 
                    (Q2Presentation.TorsorProgram.quotientFramedTargetQ2Presentation.TorsorProgram.quotientFramedTarget (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y)
      [hNn : N.Normal] (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) : Q2Presentation.BoundaryFramedTarget**The quotient framed target** `Y/N` (same `H`, same `E`, image wild kernel). 
                      pQ2Presentation.Induction.FramedPair.fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.
    
                      (Q2Presentation.Induction.XRZero.NRQ2Presentation.Induction.XRZero.NR {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Subgroup p.fst.YThe Frattini layer as the quotient kernel. 
                        chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
                       )
                    (Q2Presentation.TorsorProgram.quotientFrameQ2Presentation.TorsorProgram.quotientFrame (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y)
      [hNn : N.Normal] (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) (F : Q2Presentation.BoundaryFrame Yt) :
      Q2Presentation.BoundaryFrame (Q2Presentation.TorsorProgram.quotientFramedTarget Yt N hNLY hNθ)The frame transports verbatim (`H`, `E`, `α`, `ψ`, `β` unchanged). 
                      pQ2Presentation.Induction.FramedPair.fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.
    
                      (Q2Presentation.Induction.XRZero.NRQ2Presentation.Induction.XRZero.NR {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Subgroup p.fst.YThe Frattini layer as the quotient kernel. 
                        chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
                        pQ2Presentation.Induction.FramedPair.sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.
    ))
                (f₀Q2Presentation.TorsorProgram.liftHom p.fst (Q2Presentation.Induction.XRZero.NR chief K) ⋯ ⋯
      Q2Presentation.boundaryPackage_GQ2 p.snd g :
                  Q2Presentation.TorsorProgram.liftHomQ2Presentation.TorsorProgram.liftHom (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y) [hNn : N.Normal]
      (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ)
      (F : Q2Presentation.BoundaryFrame Yt)
      (g :
        Q2Presentation.boundaryFramedSurj B (Q2Presentation.TorsorProgram.quotientFramedTarget Yt N hNLY hNθ)
          (Q2Presentation.TorsorProgram.quotientFrame Yt N hNLY hNθ F)) :
      Type**All framed lifts** of a child-framed surjection (surjectivity NOT imposed;
    the Frattini argument recovers it per use-site). 
                    pQ2Presentation.Induction.FramedPair.fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.
    
                    (Q2Presentation.Induction.XRZero.NRQ2Presentation.Induction.XRZero.NR {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Subgroup p.fst.YThe Frattini layer as the quotient kernel. 
                      chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
                     
                    Q2Presentation.boundaryPackage_GQ2Q2Presentation.boundaryPackage_GQ2 : Q2Presentation.BoundaryPackage Q2Presentation.GQ2Profinite**The local boundary package** `boundaryPackage_GQ2 : BoundaryPackage G_{ℚ₂}`
    (manuscript Prop 3.14 `prop:compatiblemarking` for `Γ = G_{ℚ₂}`; plan Turn 4 §6),
    the `G_{ℚ₂}`-side instance of the uniform Stage-C boundary datum.
    
    * `tameMap`/`tame_surj`/`tame_nu` — the local tame quotient `G_{ℚ₂} ↠ T_A` with
      unramified marking `ν_loc`, from the axiom `gq2_tame_quotient` (Prop 3.2 + the
      local half of Prop `compatiblemarking`);
    * `pro2Map`/`pro2_surj`/`pro2_nu` — the local maximal pro-`2` quotient
      `G_{ℚ₂} ↠ Π` with the *same* unramified marking `ν_loc`, proved from the fully
      marked Labute comparison `labute_GQ2_maxPro2_marked` (`pro2Map_loc`,
      `pro2Map_loc_surjective`, `pro2Map_loc_nu`);
    * `nu := ν_loc` — the common unramified character through which both factor. 
                    pQ2Presentation.Induction.FramedPair.sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.
     gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GQ2
      (Q2Presentation.TorsorProgram.quotientFramedTarget p.fst (Q2Presentation.Induction.XRZero.NR chief K) ⋯ ⋯)
      (Q2Presentation.TorsorProgram.quotientFrame p.fst (Q2Presentation.Induction.XRZero.NR chief K) ⋯ ⋯ p.snd)),
                Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number.
    If `α` is infinite, `Nat.card α = 0`. 
                    (Q2Presentation.TorsorProgram.Z1Q2Presentation.TorsorProgram.Z1 (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y) [hNn : N.Normal]
      (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ)
      (F : Q2Presentation.BoundaryFrame Yt)
      (g :
        Q2Presentation.boundaryFramedSurj B (Q2Presentation.TorsorProgram.quotientFramedTarget Yt N hNLY hNθ)
          (Q2Presentation.TorsorProgram.quotientFrame Yt N hNLY hNθ F))
      (f₀ : Q2Presentation.TorsorProgram.liftHom Yt N hNLY hNθ B F g) : Type**The twisted cocycle set** relative to a base lift. 
                      pQ2Presentation.Induction.FramedPair.fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.
    
                      (Q2Presentation.Induction.XRZero.NRQ2Presentation.Induction.XRZero.NR {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Subgroup p.fst.YThe Frattini layer as the quotient kernel. 
                        chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
                       
                      Q2Presentation.boundaryPackage_GQ2Q2Presentation.boundaryPackage_GQ2 : Q2Presentation.BoundaryPackage Q2Presentation.GQ2Profinite**The local boundary package** `boundaryPackage_GQ2 : BoundaryPackage G_{ℚ₂}`
    (manuscript Prop 3.14 `prop:compatiblemarking` for `Γ = G_{ℚ₂}`; plan Turn 4 §6),
    the `G_{ℚ₂}`-side instance of the uniform Stage-C boundary datum.
    
    * `tameMap`/`tame_surj`/`tame_nu` — the local tame quotient `G_{ℚ₂} ↠ T_A` with
      unramified marking `ν_loc`, from the axiom `gq2_tame_quotient` (Prop 3.2 + the
      local half of Prop `compatiblemarking`);
    * `pro2Map`/`pro2_surj`/`pro2_nu` — the local maximal pro-`2` quotient
      `G_{ℚ₂} ↠ Π` with the *same* unramified marking `ν_loc`, proved from the fully
      marked Labute comparison `labute_GQ2_maxPro2_marked` (`pro2Map_loc`,
      `pro2Map_loc_surjective`, `pro2Map_loc_nu`);
    * `nu := ν_loc` — the common unramified character through which both factor. 
                      pQ2Presentation.Induction.FramedPair.sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.
     gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GQ2
      (Q2Presentation.TorsorProgram.quotientFramedTarget p.fst (Q2Presentation.Induction.XRZero.NR chief K) ⋯ ⋯)
      (Q2Presentation.TorsorProgram.quotientFrame p.fst (Q2Presentation.Induction.XRZero.NR chief K) ⋯ ⋯ p.snd) f₀Q2Presentation.TorsorProgram.liftHom p.fst (Q2Presentation.Induction.XRZero.NR chief K) ⋯ ⋯
      Q2Presentation.boundaryPackage_GQ2 p.snd g) =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`.
                  2 ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. (HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.2 *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. kdim)HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
    **The `𝒳_R = 0` cochain statement, PROVEN** (`lem:affinelifting` +
    `eq:mumultiplicity` + `lem:obstructionseparation` at `|𝒳_R| = 1`; manuscript
    l.4207-4262).  Per source: every child-framed surjection admits a framed lift
    (the complete obstruction is detected by invariant characters, of which there
    are none), and the twisted cocycle set has the common size `2^{2·dim R}`.
    Derived from the sharp XR-layer keep and the canonical local-duality keep via
    the elementary-kernel assembly (`XRLayerKeep`). 
  • defdefined in Q2Presentation/Induction/ZeroEdgeFibration.lean
    complete
    def Q2Presentation.Induction.btLiftHom
      {pQ2Presentation.Induction.FramedPair : Q2Presentation.Induction.FramedPairQ2Presentation.Induction.FramedPair : Type 1A **framed pair** `(𝒴, F)`: a boundary-framed marked target together with a
    boundary frame for it (manuscript Definition 4.1 + `eq:beta`).  This is the index of
    Theorem 4.2: the boundary-framed surjection count `e_Γ^β` is a function of the pair.
    The induction of `sec:induction` ranges over *all* such pairs simultaneously
    ("the induction is stated globally", l.1213), ordered by `|L_Y|`. }
      (chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p : Q2Presentation.Induction.FirstNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor (p : Q2Presentation.Induction.FramedPair) : TypeA non-scalar chief factor of `L_Y` that is **first**: every chief factor strictly
    below it (i.e. with upper term contained in `lower`) is scalar.  This is the manuscript's
    choice `S ◁ P` at l.3616–3623 ("all chief factors below `S` are scalar and `V` is the
    first non-scalar simple factor"), which `lem:collapse` requires for the coprime step
    `[S, Ñ] = 1`.  pQ2Presentation.Induction.FramedPair)
      (KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor :
        Q2Presentation.Induction.KernelMinimalQ2Presentation.Induction.KernelMinimal {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.NonScalarChiefFactor p) : TypeThe manuscript's kernel choice (l.3623): `K ◁ Y`, `K ≤ P`, `KS = P`, and `K` is
    **⊆-minimal** with these properties — stated as: any `Y`-normal `K' ≤ K` still joining
    with `S` to `P` equals `K`.  (This, not leastness among all candidates, is what
    `lem:simplehead` and `lem:collapse` use: both apply it to subgroups of `K`.)  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p.toNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor.toNonScalarChiefFactor {p : Q2Presentation.Induction.FramedPair}
      (self : Q2Presentation.Induction.FirstNonScalarChiefFactor p) : Q2Presentation.Induction.NonScalarChiefFactor p)
      {ΓProfiniteGrp.{0} : ProfiniteGrp.{0}ProfiniteGrp.{u_1} : Type (u_1 + 1)The category of profinite groups. A term of this type consists of a profinite
    set with a topological group structure.
    } (BQ2Presentation.BoundaryPackage Γ : Q2Presentation.BoundaryPackageQ2Presentation.BoundaryPackage (Γ : ProfiniteGrp.{0}) : TypeA **boundary package** on a profinite group `Γ`: the uniform Stage-C data of a tame
    quotient, a maximal pro-`2` quotient, and a common unramified character `ℤ₂` through which
    both factor (manuscript Prop 3.14, `prop:compatiblemarking`; plan Turn 4 §6).  The
    compatibility `tameMap ≫ ν_t = ν = pro2Map ≫ ν_2` records that the two markings agree on
    the full unramified coordinate, not merely modulo `2`.  ΓProfiniteGrp.{0})
      (ρQ2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst
      (Q2Presentation.Induction.cChild chief K).snd :
        Q2Presentation.boundaryFramedSurjQ2Presentation.boundaryFramedSurj {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ)
      (Yt : Q2Presentation.BoundaryFramedTarget) (F : Q2Presentation.BoundaryFrame Yt) : TypeThe **boundary-framed surjections** `e_Γ^β(𝒴)` (manuscript `eq:eGamma`): the
    continuous surjections `f : Γ ↠ Y` whose induced map to `H × E` is the prescribed
    `β ∘ b_Γ`, i.e. `q_Y ∘ f = β ∘ b_Γ`.  This is the subtype counted in Theorem 4.2;
    its cardinality is `e_Γ^β(𝒴)`.  BQ2Presentation.BoundaryPackage Γ
          (Q2Presentation.Induction.cChildQ2Presentation.Induction.cChild {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPair**The C-child framed pair** (the carrier of `X_Γ(C)`; manuscript
    `C = Y/K` via `B/M' ≅ C`, `mChildCollapse`).  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.
    
          (Q2Presentation.Induction.cChildQ2Presentation.Induction.cChild {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPair**The C-child framed pair** (the carrier of `X_Γ(C)`; manuscript
    `C = Y/K` via `B/M' ≅ C`, `mChildCollapse`).  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.
    ) :
      TypeA type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. 
    def Q2Presentation.Induction.btLiftHom
      {pQ2Presentation.Induction.FramedPair :
        Q2Presentation.Induction.FramedPairQ2Presentation.Induction.FramedPair : Type 1A **framed pair** `(𝒴, F)`: a boundary-framed marked target together with a
    boundary frame for it (manuscript Definition 4.1 + `eq:beta`).  This is the index of
    Theorem 4.2: the boundary-framed surjection count `e_Γ^β` is a function of the pair.
    The induction of `sec:induction` ranges over *all* such pairs simultaneously
    ("the induction is stated globally", l.1213), ordered by `|L_Y|`. }
      (chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p :
        Q2Presentation.Induction.FirstNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor (p : Q2Presentation.Induction.FramedPair) : TypeA non-scalar chief factor of `L_Y` that is **first**: every chief factor strictly
    below it (i.e. with upper term contained in `lower`) is scalar.  This is the manuscript's
    choice `S ◁ P` at l.3616–3623 ("all chief factors below `S` are scalar and `V` is the
    first non-scalar simple factor"), which `lem:collapse` requires for the coprime step
    `[S, Ñ] = 1`. 
          pQ2Presentation.Induction.FramedPair)
      (KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor :
        Q2Presentation.Induction.KernelMinimalQ2Presentation.Induction.KernelMinimal {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.NonScalarChiefFactor p) : TypeThe manuscript's kernel choice (l.3623): `K ◁ Y`, `K ≤ P`, `KS = P`, and `K` is
    **⊆-minimal** with these properties — stated as: any `Y`-normal `K' ≤ K` still joining
    with `S` to `P` equals `K`.  (This, not leastness among all candidates, is what
    `lem:simplehead` and `lem:collapse` use: both apply it to subgroups of `K`.) 
          chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p.toNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor.toNonScalarChiefFactor {p : Q2Presentation.Induction.FramedPair}
      (self : Q2Presentation.Induction.FirstNonScalarChiefFactor p) : Q2Presentation.Induction.NonScalarChiefFactor p)
      {ΓProfiniteGrp.{0} : ProfiniteGrp.{0}ProfiniteGrp.{u_1} : Type (u_1 + 1)The category of profinite groups. A term of this type consists of a profinite
    set with a topological group structure.
    }
      (BQ2Presentation.BoundaryPackage Γ : Q2Presentation.BoundaryPackageQ2Presentation.BoundaryPackage (Γ : ProfiniteGrp.{0}) : TypeA **boundary package** on a profinite group `Γ`: the uniform Stage-C data of a tame
    quotient, a maximal pro-`2` quotient, and a common unramified character `ℤ₂` through which
    both factor (manuscript Prop 3.14, `prop:compatiblemarking`; plan Turn 4 §6).  The
    compatibility `tameMap ≫ ν_t = ν = pro2Map ≫ ν_2` records that the two markings agree on
    the full unramified coordinate, not merely modulo `2`.  ΓProfiniteGrp.{0})
      (ρQ2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst
      (Q2Presentation.Induction.cChild chief K).snd :
        Q2Presentation.boundaryFramedSurjQ2Presentation.boundaryFramedSurj {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ)
      (Yt : Q2Presentation.BoundaryFramedTarget) (F : Q2Presentation.BoundaryFrame Yt) : TypeThe **boundary-framed surjections** `e_Γ^β(𝒴)` (manuscript `eq:eGamma`): the
    continuous surjections `f : Γ ↠ Y` whose induced map to `H × E` is the prescribed
    `β ∘ b_Γ`, i.e. `q_Y ∘ f = β ∘ b_Γ`.  This is the subtype counted in Theorem 4.2;
    its cardinality is `e_Γ^β(𝒴)`.  BQ2Presentation.BoundaryPackage Γ
          (Q2Presentation.Induction.cChildQ2Presentation.Induction.cChild {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPair**The C-child framed pair** (the carrier of `X_Γ(C)`; manuscript
    `C = Y/K` via `B/M' ≅ C`, `mChildCollapse`). 
              chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.
    
          (Q2Presentation.Induction.cChildQ2Presentation.Induction.cChild {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPair**The C-child framed pair** (the carrier of `X_Γ(C)`; manuscript
    `C = Y/K` via `B/M' ≅ C`, `mChildCollapse`). 
              chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.
    ) :
      TypeA type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. 
    **The `V⋊C`-lifts of a lower map `ρ`**: framed continuous homs into
    `B/T'` over ρ̄ (through `btProj`; the frame clause is the house
    `q_Y = β`-condition — surjectivity NOT imposed, `lem:affinelifting`'s
    weak coordinates). 
  • defdefined in Q2Presentation/Induction/ZeroEdgeFibration.lean
    complete
    def Q2Presentation.Induction.edgeZ1EquivBtLift
      {pQ2Presentation.Induction.FramedPair : Q2Presentation.Induction.FramedPairQ2Presentation.Induction.FramedPair : Type 1A **framed pair** `(𝒴, F)`: a boundary-framed marked target together with a
    boundary frame for it (manuscript Definition 4.1 + `eq:beta`).  This is the index of
    Theorem 4.2: the boundary-framed surjection count `e_Γ^β` is a function of the pair.
    The induction of `sec:induction` ranges over *all* such pairs simultaneously
    ("the induction is stated globally", l.1213), ordered by `|L_Y|`. }
      (chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p : Q2Presentation.Induction.FirstNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor (p : Q2Presentation.Induction.FramedPair) : TypeA non-scalar chief factor of `L_Y` that is **first**: every chief factor strictly
    below it (i.e. with upper term contained in `lower`) is scalar.  This is the manuscript's
    choice `S ◁ P` at l.3616–3623 ("all chief factors below `S` are scalar and `V` is the
    first non-scalar simple factor"), which `lem:collapse` requires for the coprime step
    `[S, Ñ] = 1`.  pQ2Presentation.Induction.FramedPair)
      (KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor :
        Q2Presentation.Induction.KernelMinimalQ2Presentation.Induction.KernelMinimal {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.NonScalarChiefFactor p) : TypeThe manuscript's kernel choice (l.3623): `K ◁ Y`, `K ≤ P`, `KS = P`, and `K` is
    **⊆-minimal** with these properties — stated as: any `Y`-normal `K' ≤ K` still joining
    with `S` to `P` equals `K`.  (This, not leastness among all candidates, is what
    `lem:simplehead` and `lem:collapse` use: both apply it to subgroups of `K`.)  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p.toNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor.toNonScalarChiefFactor {p : Q2Presentation.Induction.FramedPair}
      (self : Q2Presentation.Induction.FirstNonScalarChiefFactor p) : Q2Presentation.Induction.NonScalarChiefFactor p)
      {ΓProfiniteGrp.{0} : ProfiniteGrp.{0}ProfiniteGrp.{u_1} : Type (u_1 + 1)The category of profinite groups. A term of this type consists of a profinite
    set with a topological group structure.
    } (BQ2Presentation.BoundaryPackage Γ : Q2Presentation.BoundaryPackageQ2Presentation.BoundaryPackage (Γ : ProfiniteGrp.{0}) : TypeA **boundary package** on a profinite group `Γ`: the uniform Stage-C data of a tame
    quotient, a maximal pro-`2` quotient, and a common unramified character `ℤ₂` through which
    both factor (manuscript Prop 3.14, `prop:compatiblemarking`; plan Turn 4 §6).  The
    compatibility `tameMap ≫ ν_t = ν = pro2Map ≫ ν_2` records that the two markings agree on
    the full unramified coordinate, not merely modulo `2`.  ΓProfiniteGrp.{0})
      (ρQ2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst
      (Q2Presentation.Induction.cChild chief K).snd :
        Q2Presentation.boundaryFramedSurjQ2Presentation.boundaryFramedSurj {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ)
      (Yt : Q2Presentation.BoundaryFramedTarget) (F : Q2Presentation.BoundaryFrame Yt) : TypeThe **boundary-framed surjections** `e_Γ^β(𝒴)` (manuscript `eq:eGamma`): the
    continuous surjections `f : Γ ↠ Y` whose induced map to `H × E` is the prescribed
    `β ∘ b_Γ`, i.e. `q_Y ∘ f = β ∘ b_Γ`.  This is the subtype counted in Theorem 4.2;
    its cardinality is `e_Γ^β(𝒴)`.  BQ2Presentation.BoundaryPackage Γ
          (Q2Presentation.Induction.cChildQ2Presentation.Induction.cChild {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPair**The C-child framed pair** (the carrier of `X_Γ(C)`; manuscript
    `C = Y/K` via `B/M' ≅ C`, `mChildCollapse`).  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.
    
          (Q2Presentation.Induction.cChildQ2Presentation.Induction.cChild {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPair**The C-child framed pair** (the carrier of `X_Γ(C)`; manuscript
    `C = Y/K` via `B/M' ≅ C`, `mChildCollapse`).  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.
    )
      (sQ2Presentation.Induction.towerC K → (Q2Presentation.Induction.btChild chief K).fst.Y :
        Q2Presentation.Induction.towerCQ2Presentation.Induction.towerC {p : Q2Presentation.Induction.FramedPair}
      {chief : Q2Presentation.Induction.NonScalarChiefFactor p} (K : Q2Presentation.Induction.KernelMinimal chief) : TypeThe lower target `C = Y/K` (`eq:targettower`).  KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor 
          (Q2Presentation.Induction.btChildQ2Presentation.Induction.btChild {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPair**The `B/T'`-child**: the framed pair the descended cover covers
    (`lem:transgression`'s base, manuscript l.4032–4034; the quotient of the
    child by the radical layer `T'`).  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.
    .YQ2Presentation.BoundaryFramedTarget.Y (self : Q2Presentation.BoundaryFramedTarget) : TypeThe finite target group `Y`. )
      (hsec∀ (c : Q2Presentation.Induction.towerC K), (Q2Presentation.Induction.btProj chief K) (s c) = c :
         (cQ2Presentation.Induction.towerC K : Q2Presentation.Induction.towerCQ2Presentation.Induction.towerC {p : Q2Presentation.Induction.FramedPair}
      {chief : Q2Presentation.Induction.NonScalarChiefFactor p} (K : Q2Presentation.Induction.KernelMinimal chief) : TypeThe lower target `C = Y/K` (`eq:targettower`).  KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor),
          (Q2Presentation.Induction.btProjQ2Presentation.Induction.btProj {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      (Q2Presentation.Induction.btChild chief K).fst.Y →* Q2Presentation.Induction.towerC K**The base projection** `btProj : B/T' ↠ C` (`T' ≤ M'` collapse).  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (sQ2Presentation.Induction.towerC K → (Q2Presentation.Induction.btChild chief K).fst.Y cQ2Presentation.Induction.towerC K) =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`. cQ2Presentation.Induction.towerC K)
      (hmul∀ (c d : Q2Presentation.Induction.towerC K), s c * s d = s (c * d) :
         (cQ2Presentation.Induction.towerC K dQ2Presentation.Induction.towerC K : Q2Presentation.Induction.towerCQ2Presentation.Induction.towerC {p : Q2Presentation.Induction.FramedPair}
      {chief : Q2Presentation.Induction.NonScalarChiefFactor p} (K : Q2Presentation.Induction.KernelMinimal chief) : TypeThe lower target `C = Y/K` (`eq:targettower`).  KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor),
          sQ2Presentation.Induction.towerC K → (Q2Presentation.Induction.btChild chief K).fst.Y cQ2Presentation.Induction.towerC K *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. sQ2Presentation.Induction.towerC K → (Q2Presentation.Induction.btChild chief K).fst.Y dQ2Presentation.Induction.towerC K =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`. sQ2Presentation.Induction.towerC K → (Q2Presentation.Induction.btChild chief K).fst.Y (HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.cQ2Presentation.Induction.towerC K *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. dQ2Presentation.Induction.towerC K)HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.) :
      (Q2Presentation.Induction.edgeZ1Q2Presentation.Induction.edgeZ1 {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) {Γ : ProfiniteGrp.{0}}
      (B : Q2Presentation.BoundaryPackage Γ)
      (ρ :
        Q2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst
          (Q2Presentation.Induction.cChild chief K).snd) :
      Submodule (ZMod 2) (↑Γ.toProfinite.toTop → Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K)**`Z¹_ρ(V)`** — the `ZMod 2`-module of continuous (locally constant)
    `V`-valued ρ̄-twisted 1-cocycles: `z(γγ′) = z(γ) + ρ̄(γ)·z(γ′)` (THE
    orientation pin — `aRep_cocycle`'s house orientation; design §2.1's
    `W_ρ`, the engine carrier of the W2 instantiation).  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor BQ2Presentation.BoundaryPackage Γ ρQ2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst
      (Q2Presentation.Induction.cChild chief K).snd) Equiv.{u_1, u_2} (α : Sort u_1) (β : Sort u_2) : Sort (max (max 1 u_1) u_2)`α ≃ β` is the type of functions from `α → β` with a two-sided inverse. 
        Q2Presentation.Induction.btLiftHomQ2Presentation.Induction.btLiftHom {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) {Γ : ProfiniteGrp.{0}}
      (B : Q2Presentation.BoundaryPackage Γ)
      (ρ :
        Q2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst
          (Q2Presentation.Induction.cChild chief K).snd) :
      Type**The `V⋊C`-lifts of a lower map `ρ`**: framed continuous homs into
    `B/T'` over ρ̄ (through `btProj`; the frame clause is the house
    `q_Y = β`-condition — surjectivity NOT imposed, `lem:affinelifting`'s
    weak coordinates).  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor BQ2Presentation.BoundaryPackage Γ ρQ2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst
      (Q2Presentation.Induction.cChild chief K).snd
    def Q2Presentation.Induction.edgeZ1EquivBtLift
      {pQ2Presentation.Induction.FramedPair :
        Q2Presentation.Induction.FramedPairQ2Presentation.Induction.FramedPair : Type 1A **framed pair** `(𝒴, F)`: a boundary-framed marked target together with a
    boundary frame for it (manuscript Definition 4.1 + `eq:beta`).  This is the index of
    Theorem 4.2: the boundary-framed surjection count `e_Γ^β` is a function of the pair.
    The induction of `sec:induction` ranges over *all* such pairs simultaneously
    ("the induction is stated globally", l.1213), ordered by `|L_Y|`. }
      (chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p :
        Q2Presentation.Induction.FirstNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor (p : Q2Presentation.Induction.FramedPair) : TypeA non-scalar chief factor of `L_Y` that is **first**: every chief factor strictly
    below it (i.e. with upper term contained in `lower`) is scalar.  This is the manuscript's
    choice `S ◁ P` at l.3616–3623 ("all chief factors below `S` are scalar and `V` is the
    first non-scalar simple factor"), which `lem:collapse` requires for the coprime step
    `[S, Ñ] = 1`. 
          pQ2Presentation.Induction.FramedPair)
      (KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor :
        Q2Presentation.Induction.KernelMinimalQ2Presentation.Induction.KernelMinimal {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.NonScalarChiefFactor p) : TypeThe manuscript's kernel choice (l.3623): `K ◁ Y`, `K ≤ P`, `KS = P`, and `K` is
    **⊆-minimal** with these properties — stated as: any `Y`-normal `K' ≤ K` still joining
    with `S` to `P` equals `K`.  (This, not leastness among all candidates, is what
    `lem:simplehead` and `lem:collapse` use: both apply it to subgroups of `K`.) 
          chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p.toNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor.toNonScalarChiefFactor {p : Q2Presentation.Induction.FramedPair}
      (self : Q2Presentation.Induction.FirstNonScalarChiefFactor p) : Q2Presentation.Induction.NonScalarChiefFactor p)
      {ΓProfiniteGrp.{0} : ProfiniteGrp.{0}ProfiniteGrp.{u_1} : Type (u_1 + 1)The category of profinite groups. A term of this type consists of a profinite
    set with a topological group structure.
    }
      (BQ2Presentation.BoundaryPackage Γ : Q2Presentation.BoundaryPackageQ2Presentation.BoundaryPackage (Γ : ProfiniteGrp.{0}) : TypeA **boundary package** on a profinite group `Γ`: the uniform Stage-C data of a tame
    quotient, a maximal pro-`2` quotient, and a common unramified character `ℤ₂` through which
    both factor (manuscript Prop 3.14, `prop:compatiblemarking`; plan Turn 4 §6).  The
    compatibility `tameMap ≫ ν_t = ν = pro2Map ≫ ν_2` records that the two markings agree on
    the full unramified coordinate, not merely modulo `2`.  ΓProfiniteGrp.{0})
      (ρQ2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst
      (Q2Presentation.Induction.cChild chief K).snd :
        Q2Presentation.boundaryFramedSurjQ2Presentation.boundaryFramedSurj {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ)
      (Yt : Q2Presentation.BoundaryFramedTarget) (F : Q2Presentation.BoundaryFrame Yt) : TypeThe **boundary-framed surjections** `e_Γ^β(𝒴)` (manuscript `eq:eGamma`): the
    continuous surjections `f : Γ ↠ Y` whose induced map to `H × E` is the prescribed
    `β ∘ b_Γ`, i.e. `q_Y ∘ f = β ∘ b_Γ`.  This is the subtype counted in Theorem 4.2;
    its cardinality is `e_Γ^β(𝒴)`.  BQ2Presentation.BoundaryPackage Γ
          (Q2Presentation.Induction.cChildQ2Presentation.Induction.cChild {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPair**The C-child framed pair** (the carrier of `X_Γ(C)`; manuscript
    `C = Y/K` via `B/M' ≅ C`, `mChildCollapse`). 
              chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.
    
          (Q2Presentation.Induction.cChildQ2Presentation.Induction.cChild {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPair**The C-child framed pair** (the carrier of `X_Γ(C)`; manuscript
    `C = Y/K` via `B/M' ≅ C`, `mChildCollapse`). 
              chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.
    )
      (sQ2Presentation.Induction.towerC K → (Q2Presentation.Induction.btChild chief K).fst.Y :
        Q2Presentation.Induction.towerCQ2Presentation.Induction.towerC {p : Q2Presentation.Induction.FramedPair}
      {chief : Q2Presentation.Induction.NonScalarChiefFactor p} (K : Q2Presentation.Induction.KernelMinimal chief) : TypeThe lower target `C = Y/K` (`eq:targettower`).  KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor 
          (Q2Presentation.Induction.btChildQ2Presentation.Induction.btChild {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPair**The `B/T'`-child**: the framed pair the descended cover covers
    (`lem:transgression`'s base, manuscript l.4032–4034; the quotient of the
    child by the radical layer `T'`). 
                chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.
    .YQ2Presentation.BoundaryFramedTarget.Y (self : Q2Presentation.BoundaryFramedTarget) : TypeThe finite target group `Y`. )
      (hsec∀ (c : Q2Presentation.Induction.towerC K), (Q2Presentation.Induction.btProj chief K) (s c) = c :
        
          (cQ2Presentation.Induction.towerC K :
            Q2Presentation.Induction.towerCQ2Presentation.Induction.towerC {p : Q2Presentation.Induction.FramedPair}
      {chief : Q2Presentation.Induction.NonScalarChiefFactor p} (K : Q2Presentation.Induction.KernelMinimal chief) : TypeThe lower target `C = Y/K` (`eq:targettower`). 
              KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor),
          (Q2Presentation.Induction.btProjQ2Presentation.Induction.btProj {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      (Q2Presentation.Induction.btChild chief K).fst.Y →* Q2Presentation.Induction.towerC K**The base projection** `btProj : B/T' ↠ C` (`T' ≤ M'` collapse). 
                chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
              (sQ2Presentation.Induction.towerC K → (Q2Presentation.Induction.btChild chief K).fst.Y cQ2Presentation.Induction.towerC K) =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`.
            cQ2Presentation.Induction.towerC K)
      (hmul∀ (c d : Q2Presentation.Induction.towerC K), s c * s d = s (c * d) :
        
          (cQ2Presentation.Induction.towerC K dQ2Presentation.Induction.towerC K :
            Q2Presentation.Induction.towerCQ2Presentation.Induction.towerC {p : Q2Presentation.Induction.FramedPair}
      {chief : Q2Presentation.Induction.NonScalarChiefFactor p} (K : Q2Presentation.Induction.KernelMinimal chief) : TypeThe lower target `C = Y/K` (`eq:targettower`). 
              KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor),
          sQ2Presentation.Induction.towerC K → (Q2Presentation.Induction.btChild chief K).fst.Y cQ2Presentation.Induction.towerC K *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. sQ2Presentation.Induction.towerC K → (Q2Presentation.Induction.btChild chief K).fst.Y dQ2Presentation.Induction.towerC K =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`. sQ2Presentation.Induction.towerC K → (Q2Presentation.Induction.btChild chief K).fst.Y (HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.cQ2Presentation.Induction.towerC K *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. dQ2Presentation.Induction.towerC K)HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.) :
      (Q2Presentation.Induction.edgeZ1Q2Presentation.Induction.edgeZ1 {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) {Γ : ProfiniteGrp.{0}}
      (B : Q2Presentation.BoundaryPackage Γ)
      (ρ :
        Q2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst
          (Q2Presentation.Induction.cChild chief K).snd) :
      Submodule (ZMod 2) (↑Γ.toProfinite.toTop → Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K)**`Z¹_ρ(V)`** — the `ZMod 2`-module of continuous (locally constant)
    `V`-valued ρ̄-twisted 1-cocycles: `z(γγ′) = z(γ) + ρ̄(γ)·z(γ′)` (THE
    orientation pin — `aRep_cocycle`'s house orientation; design §2.1's
    `W_ρ`, the engine carrier of the W2 instantiation).  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p
            KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor BQ2Presentation.BoundaryPackage Γ ρQ2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst
      (Q2Presentation.Induction.cChild chief K).snd) Equiv.{u_1, u_2} (α : Sort u_1) (β : Sort u_2) : Sort (max (max 1 u_1) u_2)`α ≃ β` is the type of functions from `α → β` with a two-sided inverse. 
        Q2Presentation.Induction.btLiftHomQ2Presentation.Induction.btLiftHom {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) {Γ : ProfiniteGrp.{0}}
      (B : Q2Presentation.BoundaryPackage Γ)
      (ρ :
        Q2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst
          (Q2Presentation.Induction.cChild chief K).snd) :
      Type**The `V⋊C`-lifts of a lower map `ρ`**: framed continuous homs into
    `B/T'` over ρ̄ (through `btProj`; the frame clause is the house
    `q_Y = β`-condition — surjectivity NOT imposed, `lem:affinelifting`'s
    weak coordinates). 
          chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor BQ2Presentation.BoundaryPackage Γ ρQ2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst
      (Q2Presentation.Induction.cChild chief K).snd
    **The torsor trivialization** at a multiplicative section:
    `Z¹_ρ(V) ≃ {V⋊C-lifts of ρ}` (`lem:affinelifting`'s stage-2 carrier
    identification, both sources at once). 
  • defdefined in Q2Presentation/Induction/ZeroEdgeFibration.lean
    complete
    def Q2Presentation.Induction.descLiftableWeak
      {pQ2Presentation.Induction.FramedPair : Q2Presentation.Induction.FramedPairQ2Presentation.Induction.FramedPair : Type 1A **framed pair** `(𝒴, F)`: a boundary-framed marked target together with a
    boundary frame for it (manuscript Definition 4.1 + `eq:beta`).  This is the index of
    Theorem 4.2: the boundary-framed surjection count `e_Γ^β` is a function of the pair.
    The induction of `sec:induction` ranges over *all* such pairs simultaneously
    ("the induction is stated globally", l.1213), ordered by `|L_Y|`. }
      (chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p : Q2Presentation.Induction.FirstNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor (p : Q2Presentation.Induction.FramedPair) : TypeA non-scalar chief factor of `L_Y` that is **first**: every chief factor strictly
    below it (i.e. with upper term contained in `lower`) is scalar.  This is the manuscript's
    choice `S ◁ P` at l.3616–3623 ("all chief factors below `S` are scalar and `V` is the
    first non-scalar simple factor"), which `lem:collapse` requires for the coprime step
    `[S, Ñ] = 1`.  pQ2Presentation.Induction.FramedPair)
      (KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor :
        Q2Presentation.Induction.KernelMinimalQ2Presentation.Induction.KernelMinimal {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.NonScalarChiefFactor p) : TypeThe manuscript's kernel choice (l.3623): `K ◁ Y`, `K ≤ P`, `KS = P`, and `K` is
    **⊆-minimal** with these properties — stated as: any `Y`-normal `K' ≤ K` still joining
    with `S` to `P` equals `K`.  (This, not leastness among all candidates, is what
    `lem:simplehead` and `lem:collapse` use: both apply it to subgroups of `K`.)  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p.toNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor.toNonScalarChiefFactor {p : Q2Presentation.Induction.FramedPair}
      (self : Q2Presentation.Induction.FirstNonScalarChiefFactor p) : Q2Presentation.Induction.NonScalarChiefFactor p)
      (lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) :
        Module.DualModule.Dual.{u_4, u_5} (R : Type u_4) (M : Type u_5) [Semiring R] [AddCommMonoid M] [Module R M] : Type (max u_5 u_4)The left dual space of an R-module M is the R-module of linear maps `M → R`.  (ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2)
          (Q2Presentation.Lifting.NAddQ2Presentation.Lifting.NAdd {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) : TypeThe additive `F₂`-carrier of an elementary kernel. 
            (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)))
      (hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K) :
        lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`.
          Q2Presentation.Lifting.conjInvDualsQ2Presentation.Lifting.conjInvDuals {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) :
      Submodule (ZMod 2) (Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E))The conjugation-invariant duals `X = (R^∨)^Y = (R^∨)^C` of an
    elementary kernel (consumer spelling of the manuscript's `𝒳_R`,
    §7 l.3720–3723). 
            (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor))
      (DQ2Presentation.Induction.EdgeComplement chief K lam hinv : Q2Presentation.Induction.EdgeComplementQ2Presentation.Induction.EdgeComplement {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) : TypeAn **edge complement**: a complement to the deck kernel inside the
    `T`-preimage (`lem:radicaledge`'s `s(T)`, subgroup form).  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K))
      (hWD.W.Normal : DQ2Presentation.Induction.EdgeComplement chief K lam hinv.WQ2Presentation.Induction.EdgeComplement.W {p : Q2Presentation.Induction.FramedPair}
      {chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p}
      {K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor}
      {lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))}
      {hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)}
      (self : Q2Presentation.Induction.EdgeComplement chief K lam hinv) :
      Subgroup (Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y.NormalSubgroup.Normal.{u_1} {G : Type u_1} [Group G] (H : Subgroup G) : PropA subgroup `H` is normal if whenever `n ∈ H`, then `g * n * g⁻¹ ∈ H` for every `g : G` ) (hnelam ≠ 0 : lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) Ne.{u} {α : Sort u} (a b : α) : Prop`a ≠ b`, or `Ne a b` is defined as `¬ (a = b)` or `a = b → False`,
    and asserts that `a` and `b` are not equal.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≠` in identifiers is `ne`. 0) {ΓProfiniteGrp.{0} : ProfiniteGrp.{0}ProfiniteGrp.{u_1} : Type (u_1 + 1)The category of profinite groups. A term of this type consists of a profinite
    set with a topological group structure.
    }
      (BQ2Presentation.BoundaryPackage Γ : Q2Presentation.BoundaryPackageQ2Presentation.BoundaryPackage (Γ : ProfiniteGrp.{0}) : TypeA **boundary package** on a profinite group `Γ`: the uniform Stage-C data of a tame
    quotient, a maximal pro-`2` quotient, and a common unramified character `ℤ₂` through which
    both factor (manuscript Prop 3.14, `prop:compatiblemarking`; plan Turn 4 §6).  The
    compatibility `tameMap ≫ ν_t = ν = pro2Map ≫ ν_2` records that the two markings agree on
    the full unramified coordinate, not merely modulo `2`.  ΓProfiniteGrp.{0})
      (fQ2Presentation.TorsorProgram.coverLiftTotal (Q2Presentation.Induction.XRZero.xrChild chief K).fst
      (Q2Presentation.Induction.mChildKernel chief K).N B (Q2Presentation.Induction.XRZero.xrChild chief K).snd :
        Q2Presentation.TorsorProgram.coverLiftTotalQ2Presentation.TorsorProgram.coverLiftTotal (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y)
      [hNn : N.Normal] {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (F : Q2Presentation.BoundaryFrame Yt) :
      Type**The cover-lift total space**: framed continuous homs into the AMBIENT
    target whose projection to the child is onto (`lem:covertransform`: all lifts
    of all unobstructed exact-image maps at once; surjectivity onto the ambient
    target NOT imposed — these are the weak lifts). 
          (Q2Presentation.Induction.XRZero.xrChildQ2Presentation.Induction.XRZero.xrChild {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPairThe `𝒳_R = 0` child: the quotient framed pair at `N = Φ`-layer.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.
    
          (Q2Presentation.Induction.mChildKernelQ2Presentation.Induction.mChildKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel (Q2Presentation.Induction.XRZero.xrChild chief K).fst**The elementary `M`-kernel at the child** `B = Y/Φ(K)`
    (`lem:simplehead` carrier for `lem:elementarystage`): `N = M' = K/Φ(K)`.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).NQ2Presentation.Lifting.ElementaryKernel.N {Yt : Q2Presentation.BoundaryFramedTarget}
      (self : Q2Presentation.Lifting.ElementaryKernel Yt) : Subgroup Yt.Y BQ2Presentation.BoundaryPackage Γ
          (Q2Presentation.Induction.XRZero.xrChildQ2Presentation.Induction.XRZero.xrChild {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPairThe `𝒳_R = 0` child: the quotient framed pair at `N = Φ`-layer.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.
    ) :
      PropThe universe of propositions. `Prop ≡ Sort 0`.
    
    Every proposition is propositionally equal to either `True` or `False`. 
    def Q2Presentation.Induction.descLiftableWeak
      {pQ2Presentation.Induction.FramedPair :
        Q2Presentation.Induction.FramedPairQ2Presentation.Induction.FramedPair : Type 1A **framed pair** `(𝒴, F)`: a boundary-framed marked target together with a
    boundary frame for it (manuscript Definition 4.1 + `eq:beta`).  This is the index of
    Theorem 4.2: the boundary-framed surjection count `e_Γ^β` is a function of the pair.
    The induction of `sec:induction` ranges over *all* such pairs simultaneously
    ("the induction is stated globally", l.1213), ordered by `|L_Y|`. }
      (chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p :
        Q2Presentation.Induction.FirstNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor (p : Q2Presentation.Induction.FramedPair) : TypeA non-scalar chief factor of `L_Y` that is **first**: every chief factor strictly
    below it (i.e. with upper term contained in `lower`) is scalar.  This is the manuscript's
    choice `S ◁ P` at l.3616–3623 ("all chief factors below `S` are scalar and `V` is the
    first non-scalar simple factor"), which `lem:collapse` requires for the coprime step
    `[S, Ñ] = 1`. 
          pQ2Presentation.Induction.FramedPair)
      (KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor :
        Q2Presentation.Induction.KernelMinimalQ2Presentation.Induction.KernelMinimal {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.NonScalarChiefFactor p) : TypeThe manuscript's kernel choice (l.3623): `K ◁ Y`, `K ≤ P`, `KS = P`, and `K` is
    **⊆-minimal** with these properties — stated as: any `Y`-normal `K' ≤ K` still joining
    with `S` to `P` equals `K`.  (This, not leastness among all candidates, is what
    `lem:simplehead` and `lem:collapse` use: both apply it to subgroups of `K`.) 
          chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p.toNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor.toNonScalarChiefFactor {p : Q2Presentation.Induction.FramedPair}
      (self : Q2Presentation.Induction.FirstNonScalarChiefFactor p) : Q2Presentation.Induction.NonScalarChiefFactor p)
      (lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) :
        Module.DualModule.Dual.{u_4, u_5} (R : Type u_4) (M : Type u_5) [Semiring R] [AddCommMonoid M] [Module R M] : Type (max u_5 u_4)The left dual space of an R-module M is the R-module of linear maps `M → R`.  (ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2)
          (Q2Presentation.Lifting.NAddQ2Presentation.Lifting.NAdd {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) : TypeThe additive `F₂`-carrier of an elementary kernel. 
            (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian. 
              chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)))
      (hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K) :
        lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`.
          Q2Presentation.Lifting.conjInvDualsQ2Presentation.Lifting.conjInvDuals {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) :
      Submodule (ZMod 2) (Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E))The conjugation-invariant duals `X = (R^∨)^Y = (R^∨)^C` of an
    elementary kernel (consumer spelling of the manuscript's `𝒳_R`,
    §7 l.3720–3723). 
            (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian. 
              chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor))
      (DQ2Presentation.Induction.EdgeComplement chief K lam hinv :
        Q2Presentation.Induction.EdgeComplementQ2Presentation.Induction.EdgeComplement {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) : TypeAn **edge complement**: a complement to the deck kernel inside the
    `T`-preimage (`lem:radicaledge`'s `s(T)`, subgroup form). 
          chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K))
      (hWD.W.Normal : DQ2Presentation.Induction.EdgeComplement chief K lam hinv.WQ2Presentation.Induction.EdgeComplement.W {p : Q2Presentation.Induction.FramedPair}
      {chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p}
      {K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor}
      {lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))}
      {hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)}
      (self : Q2Presentation.Induction.EdgeComplement chief K lam hinv) :
      Subgroup (Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y.NormalSubgroup.Normal.{u_1} {G : Type u_1} [Group G] (H : Subgroup G) : PropA subgroup `H` is normal if whenever `n ∈ H`, then `g * n * g⁻¹ ∈ H` for every `g : G` ) (hnelam ≠ 0 : lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) Ne.{u} {α : Sort u} (a b : α) : Prop`a ≠ b`, or `Ne a b` is defined as `¬ (a = b)` or `a = b → False`,
    and asserts that `a` and `b` are not equal.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≠` in identifiers is `ne`. 0)
      {ΓProfiniteGrp.{0} : ProfiniteGrp.{0}ProfiniteGrp.{u_1} : Type (u_1 + 1)The category of profinite groups. A term of this type consists of a profinite
    set with a topological group structure.
    }
      (BQ2Presentation.BoundaryPackage Γ : Q2Presentation.BoundaryPackageQ2Presentation.BoundaryPackage (Γ : ProfiniteGrp.{0}) : TypeA **boundary package** on a profinite group `Γ`: the uniform Stage-C data of a tame
    quotient, a maximal pro-`2` quotient, and a common unramified character `ℤ₂` through which
    both factor (manuscript Prop 3.14, `prop:compatiblemarking`; plan Turn 4 §6).  The
    compatibility `tameMap ≫ ν_t = ν = pro2Map ≫ ν_2` records that the two markings agree on
    the full unramified coordinate, not merely modulo `2`.  ΓProfiniteGrp.{0})
      (fQ2Presentation.TorsorProgram.coverLiftTotal (Q2Presentation.Induction.XRZero.xrChild chief K).fst
      (Q2Presentation.Induction.mChildKernel chief K).N B (Q2Presentation.Induction.XRZero.xrChild chief K).snd :
        Q2Presentation.TorsorProgram.coverLiftTotalQ2Presentation.TorsorProgram.coverLiftTotal (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y)
      [hNn : N.Normal] {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (F : Q2Presentation.BoundaryFrame Yt) :
      Type**The cover-lift total space**: framed continuous homs into the AMBIENT
    target whose projection to the child is onto (`lem:covertransform`: all lifts
    of all unobstructed exact-image maps at once; surjectivity onto the ambient
    target NOT imposed — these are the weak lifts). 
          (Q2Presentation.Induction.XRZero.xrChildQ2Presentation.Induction.XRZero.xrChild {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPairThe `𝒳_R = 0` child: the quotient framed pair at `N = Φ`-layer. 
              chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.
    
          (Q2Presentation.Induction.mChildKernelQ2Presentation.Induction.mChildKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel (Q2Presentation.Induction.XRZero.xrChild chief K).fst**The elementary `M`-kernel at the child** `B = Y/Φ(K)`
    (`lem:simplehead` carrier for `lem:elementarystage`): `N = M' = K/Φ(K)`. 
              chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).NQ2Presentation.Lifting.ElementaryKernel.N {Yt : Q2Presentation.BoundaryFramedTarget}
      (self : Q2Presentation.Lifting.ElementaryKernel Yt) : Subgroup Yt.Y
          BQ2Presentation.BoundaryPackage Γ
          (Q2Presentation.Induction.XRZero.xrChildQ2Presentation.Induction.XRZero.xrChild {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPairThe `𝒳_R = 0` child: the quotient framed pair at `N = Φ`-layer. 
              chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.
    ) :
      PropThe universe of propositions. `Prop ≡ Sort 0`.
    
    Every proposition is propositionally equal to either `True` or `False`. 
    **`descTarget`-liftability of `f mod T′`**: a weak framed lift of
    the reduced map through the descended central double cover — the
    T′-stage of the `lem:affinelifting` fibration (frame clause in the
    house `q_Y = β` spelling; surjectivity NOT imposed). 
  • theoremdefined in Q2Presentation/Induction/ZeroEdgeMuCandidate.lean
    complete
    theorem Q2Presentation.Induction.weakZ1_tChild_card_gammaA
      {pQ2Presentation.Induction.FramedPair : Q2Presentation.Induction.FramedPairQ2Presentation.Induction.FramedPair : Type 1A **framed pair** `(𝒴, F)`: a boundary-framed marked target together with a
    boundary frame for it (manuscript Definition 4.1 + `eq:beta`).  This is the index of
    Theorem 4.2: the boundary-framed surjection count `e_Γ^β` is a function of the pair.
    The induction of `sec:induction` ranges over *all* such pairs simultaneously
    ("the induction is stated globally", l.1213), ordered by `|L_Y|`. }
      (chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p : Q2Presentation.Induction.FirstNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor (p : Q2Presentation.Induction.FramedPair) : TypeA non-scalar chief factor of `L_Y` that is **first**: every chief factor strictly
    below it (i.e. with upper term contained in `lower`) is scalar.  This is the manuscript's
    choice `S ◁ P` at l.3616–3623 ("all chief factors below `S` are scalar and `V` is the
    first non-scalar simple factor"), which `lem:collapse` requires for the coprime step
    `[S, Ñ] = 1`.  pQ2Presentation.Induction.FramedPair)
      (KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor :
        Q2Presentation.Induction.KernelMinimalQ2Presentation.Induction.KernelMinimal {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.NonScalarChiefFactor p) : TypeThe manuscript's kernel choice (l.3623): `K ◁ Y`, `K ≤ P`, `KS = P`, and `K` is
    **⊆-minimal** with these properties — stated as: any `Y`-normal `K' ≤ K` still joining
    with `S` to `P` equals `K`.  (This, not leastness among all candidates, is what
    `lem:simplehead` and `lem:collapse` use: both apply it to subgroups of `K`.)  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p.toNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor.toNonScalarChiefFactor {p : Q2Presentation.Induction.FramedPair}
      (self : Q2Presentation.Induction.FirstNonScalarChiefFactor p) : Q2Presentation.Induction.NonScalarChiefFactor p)
      (fQ2Presentation.TorsorProgram.coverLiftTotal (Q2Presentation.Induction.XRZero.xrChild chief K).fst
      (Q2Presentation.Induction.mChildKernel chief K).N Q2Presentation.boundaryPackage_GammaA
      (Q2Presentation.Induction.XRZero.xrChild chief K).snd :
        Q2Presentation.TorsorProgram.coverLiftTotalQ2Presentation.TorsorProgram.coverLiftTotal (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y)
      [hNn : N.Normal] {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (F : Q2Presentation.BoundaryFrame Yt) :
      Type**The cover-lift total space**: framed continuous homs into the AMBIENT
    target whose projection to the child is onto (`lem:covertransform`: all lifts
    of all unobstructed exact-image maps at once; surjectivity onto the ambient
    target NOT imposed — these are the weak lifts). 
          (Q2Presentation.Induction.XRZero.xrChildQ2Presentation.Induction.XRZero.xrChild {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPairThe `𝒳_R = 0` child: the quotient framed pair at `N = Φ`-layer.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.
    
          (Q2Presentation.Induction.mChildKernelQ2Presentation.Induction.mChildKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel (Q2Presentation.Induction.XRZero.xrChild chief K).fst**The elementary `M`-kernel at the child** `B = Y/Φ(K)`
    (`lem:simplehead` carrier for `lem:elementarystage`): `N = M' = K/Φ(K)`.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).NQ2Presentation.Lifting.ElementaryKernel.N {Yt : Q2Presentation.BoundaryFramedTarget}
      (self : Q2Presentation.Lifting.ElementaryKernel Yt) : Subgroup Yt.Y
          Q2Presentation.boundaryPackage_GammaAQ2Presentation.boundaryPackage_GammaA : Q2Presentation.BoundaryPackage Q2Presentation.GammaA**The candidate boundary package** (manuscript Prop 3.14, `prop:compatiblemarking`;
    plan Turn 4 §6).  The Stage-C data of `Γ_A`: the common tame quotient `gammaTameMap`,
    the maximal pro-`2` quotient `p : Γ_A ⟶ Π`, and the common unramified character
    `ν = gammaTameMap ≫ ν_t`, through which both factor. 
          (Q2Presentation.Induction.XRZero.xrChildQ2Presentation.Induction.XRZero.xrChild {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPairThe `𝒳_R = 0` child: the quotient framed pair at `N = Φ`-layer.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.
    ) :
      Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number.
    If `α` is infinite, `Nat.card α = 0`. 
          (Q2Presentation.Induction.weakZ1Q2Presentation.Induction.weakZ1 {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) {Γ : ProfiniteGrp.{0}}
      (h : Γ ⟶ ProfiniteGrp.ofFiniteGrp (FiniteGrp.of Yt.Y)) : Type**The weak-base twisted-cocycle set** of an ARBITRARY continuous hom
    into the target, relative to an elementary kernel — the weak-base
    generalization of `TorsorProgram.Z1` (no surjectivity onto the quotient
    imposed; the basepoint is the hom itself).  Carrier chosen to match the
    `EdgeTwistLocalCore` twist layer verbatim. 
            (Q2Presentation.Induction.tChildKernelQ2Presentation.Induction.tChildKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel (Q2Presentation.Induction.XRZero.xrChild chief K).fst**The elementary `T`-kernel at the child** (for the `|Z¹(T)|`-numerics
    and the twist calculus): `N = T' = (K∩S)Φ(K)/Φ(K)`.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) fQ2Presentation.TorsorProgram.coverLiftTotal (Q2Presentation.Induction.XRZero.xrChild chief K).fst
      (Q2Presentation.Induction.mChildKernel chief K).N Q2Presentation.boundaryPackage_GammaA
      (Q2Presentation.Induction.XRZero.xrChild chief K).snd) =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`.
        2 ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`.
          (HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`.2 *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. Q2Presentation.Induction.dimTQ2Presentation.Induction.dimT {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : ℕ`dim T`.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor +HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`.
            Q2Presentation.Induction.rTQ2Presentation.Induction.rT {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : ℕ`r = dim 𝒳_T`.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`.
    theorem Q2Presentation.Induction.weakZ1_tChild_card_gammaA
      {pQ2Presentation.Induction.FramedPair :
        Q2Presentation.Induction.FramedPairQ2Presentation.Induction.FramedPair : Type 1A **framed pair** `(𝒴, F)`: a boundary-framed marked target together with a
    boundary frame for it (manuscript Definition 4.1 + `eq:beta`).  This is the index of
    Theorem 4.2: the boundary-framed surjection count `e_Γ^β` is a function of the pair.
    The induction of `sec:induction` ranges over *all* such pairs simultaneously
    ("the induction is stated globally", l.1213), ordered by `|L_Y|`. }
      (chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p :
        Q2Presentation.Induction.FirstNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor (p : Q2Presentation.Induction.FramedPair) : TypeA non-scalar chief factor of `L_Y` that is **first**: every chief factor strictly
    below it (i.e. with upper term contained in `lower`) is scalar.  This is the manuscript's
    choice `S ◁ P` at l.3616–3623 ("all chief factors below `S` are scalar and `V` is the
    first non-scalar simple factor"), which `lem:collapse` requires for the coprime step
    `[S, Ñ] = 1`. 
          pQ2Presentation.Induction.FramedPair)
      (KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor :
        Q2Presentation.Induction.KernelMinimalQ2Presentation.Induction.KernelMinimal {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.NonScalarChiefFactor p) : TypeThe manuscript's kernel choice (l.3623): `K ◁ Y`, `K ≤ P`, `KS = P`, and `K` is
    **⊆-minimal** with these properties — stated as: any `Y`-normal `K' ≤ K` still joining
    with `S` to `P` equals `K`.  (This, not leastness among all candidates, is what
    `lem:simplehead` and `lem:collapse` use: both apply it to subgroups of `K`.) 
          chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p.toNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor.toNonScalarChiefFactor {p : Q2Presentation.Induction.FramedPair}
      (self : Q2Presentation.Induction.FirstNonScalarChiefFactor p) : Q2Presentation.Induction.NonScalarChiefFactor p)
      (fQ2Presentation.TorsorProgram.coverLiftTotal (Q2Presentation.Induction.XRZero.xrChild chief K).fst
      (Q2Presentation.Induction.mChildKernel chief K).N Q2Presentation.boundaryPackage_GammaA
      (Q2Presentation.Induction.XRZero.xrChild chief K).snd :
        Q2Presentation.TorsorProgram.coverLiftTotalQ2Presentation.TorsorProgram.coverLiftTotal (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y)
      [hNn : N.Normal] {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (F : Q2Presentation.BoundaryFrame Yt) :
      Type**The cover-lift total space**: framed continuous homs into the AMBIENT
    target whose projection to the child is onto (`lem:covertransform`: all lifts
    of all unobstructed exact-image maps at once; surjectivity onto the ambient
    target NOT imposed — these are the weak lifts). 
          (Q2Presentation.Induction.XRZero.xrChildQ2Presentation.Induction.XRZero.xrChild {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPairThe `𝒳_R = 0` child: the quotient framed pair at `N = Φ`-layer. 
              chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.
    
          (Q2Presentation.Induction.mChildKernelQ2Presentation.Induction.mChildKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel (Q2Presentation.Induction.XRZero.xrChild chief K).fst**The elementary `M`-kernel at the child** `B = Y/Φ(K)`
    (`lem:simplehead` carrier for `lem:elementarystage`): `N = M' = K/Φ(K)`. 
              chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).NQ2Presentation.Lifting.ElementaryKernel.N {Yt : Q2Presentation.BoundaryFramedTarget}
      (self : Q2Presentation.Lifting.ElementaryKernel Yt) : Subgroup Yt.Y
          Q2Presentation.boundaryPackage_GammaAQ2Presentation.boundaryPackage_GammaA : Q2Presentation.BoundaryPackage Q2Presentation.GammaA**The candidate boundary package** (manuscript Prop 3.14, `prop:compatiblemarking`;
    plan Turn 4 §6).  The Stage-C data of `Γ_A`: the common tame quotient `gammaTameMap`,
    the maximal pro-`2` quotient `p : Γ_A ⟶ Π`, and the common unramified character
    `ν = gammaTameMap ≫ ν_t`, through which both factor. 
          (Q2Presentation.Induction.XRZero.xrChildQ2Presentation.Induction.XRZero.xrChild {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPairThe `𝒳_R = 0` child: the quotient framed pair at `N = Φ`-layer. 
              chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.
    ) :
      Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number.
    If `α` is infinite, `Nat.card α = 0`. 
          (Q2Presentation.Induction.weakZ1Q2Presentation.Induction.weakZ1 {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) {Γ : ProfiniteGrp.{0}}
      (h : Γ ⟶ ProfiniteGrp.ofFiniteGrp (FiniteGrp.of Yt.Y)) : Type**The weak-base twisted-cocycle set** of an ARBITRARY continuous hom
    into the target, relative to an elementary kernel — the weak-base
    generalization of `TorsorProgram.Z1` (no surjectivity onto the quotient
    imposed; the basepoint is the hom itself).  Carrier chosen to match the
    `EdgeTwistLocalCore` twist layer verbatim. 
            (Q2Presentation.Induction.tChildKernelQ2Presentation.Induction.tChildKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel (Q2Presentation.Induction.XRZero.xrChild chief K).fst**The elementary `T`-kernel at the child** (for the `|Z¹(T)|`-numerics
    and the twist calculus): `N = T' = (K∩S)Φ(K)/Φ(K)`. 
              chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
            fQ2Presentation.TorsorProgram.coverLiftTotal (Q2Presentation.Induction.XRZero.xrChild chief K).fst
      (Q2Presentation.Induction.mChildKernel chief K).N Q2Presentation.boundaryPackage_GammaA
      (Q2Presentation.Induction.XRZero.xrChild chief K).snd) =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`.
        2 ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`.
          (HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`.2 *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
              Q2Presentation.Induction.dimTQ2Presentation.Induction.dimT {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : ℕ`dim T`. 
                chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor +HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`.
            Q2Presentation.Induction.rTQ2Presentation.Induction.rT {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : ℕ`r = dim 𝒳_T`.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p
              KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`.
    **The candidate `|Z¹(T')|`-numeric at every weak `M`-lift** (the
    `lem:affinelifting` candidate `T`-stage factor of `eq:mumultiplicity`;
    N5's `weakZ1_tChild_card` mirror): the ledger corank engine at the
    child `T'`-kernel gives `|Z¹_{A,f}(T')| = 2^{2·dimT + rT}` at EVERY
    total-space point — the corank of the row map is `rT`, the
    `prop:defduality` instance at the `T`-layer. 
  • theoremdefined in Q2Presentation/Induction/ZeroEdgeMuCandidate.lean
    complete
    theorem Q2Presentation.Induction.weakZ1_vLayer_card_gammaA
      {pQ2Presentation.Induction.FramedPair : Q2Presentation.Induction.FramedPairQ2Presentation.Induction.FramedPair : Type 1A **framed pair** `(𝒴, F)`: a boundary-framed marked target together with a
    boundary frame for it (manuscript Definition 4.1 + `eq:beta`).  This is the index of
    Theorem 4.2: the boundary-framed surjection count `e_Γ^β` is a function of the pair.
    The induction of `sec:induction` ranges over *all* such pairs simultaneously
    ("the induction is stated globally", l.1213), ordered by `|L_Y|`. }
      (chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p : Q2Presentation.Induction.FirstNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor (p : Q2Presentation.Induction.FramedPair) : TypeA non-scalar chief factor of `L_Y` that is **first**: every chief factor strictly
    below it (i.e. with upper term contained in `lower`) is scalar.  This is the manuscript's
    choice `S ◁ P` at l.3616–3623 ("all chief factors below `S` are scalar and `V` is the
    first non-scalar simple factor"), which `lem:collapse` requires for the coprime step
    `[S, Ñ] = 1`.  pQ2Presentation.Induction.FramedPair)
      (KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor :
        Q2Presentation.Induction.KernelMinimalQ2Presentation.Induction.KernelMinimal {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.NonScalarChiefFactor p) : TypeThe manuscript's kernel choice (l.3623): `K ◁ Y`, `K ≤ P`, `KS = P`, and `K` is
    **⊆-minimal** with these properties — stated as: any `Y`-normal `K' ≤ K` still joining
    with `S` to `P` equals `K`.  (This, not leastness among all candidates, is what
    `lem:simplehead` and `lem:collapse` use: both apply it to subgroups of `K`.)  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p.toNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor.toNonScalarChiefFactor {p : Q2Presentation.Induction.FramedPair}
      (self : Q2Presentation.Induction.FirstNonScalarChiefFactor p) : Q2Presentation.Induction.NonScalarChiefFactor p)
      (fQ2Presentation.TorsorProgram.coverLiftTotal (Q2Presentation.Induction.btChild chief K).fst
      (Q2Presentation.Induction.vLayerKernel chief K).N Q2Presentation.boundaryPackage_GammaA
      (Q2Presentation.Induction.btChild chief K).snd :
        Q2Presentation.TorsorProgram.coverLiftTotalQ2Presentation.TorsorProgram.coverLiftTotal (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y)
      [hNn : N.Normal] {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (F : Q2Presentation.BoundaryFrame Yt) :
      Type**The cover-lift total space**: framed continuous homs into the AMBIENT
    target whose projection to the child is onto (`lem:covertransform`: all lifts
    of all unobstructed exact-image maps at once; surjectivity onto the ambient
    target NOT imposed — these are the weak lifts). 
          (Q2Presentation.Induction.btChildQ2Presentation.Induction.btChild {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPair**The `B/T'`-child**: the framed pair the descended cover covers
    (`lem:transgression`'s base, manuscript l.4032–4034; the quotient of the
    child by the radical layer `T'`).  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.
    
          (Q2Presentation.Induction.vLayerKernelQ2Presentation.Induction.vLayerKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel (Q2Presentation.Induction.btChild chief K).fst**The `V`-layer elementary kernel** at the descended child `B/T'`
    (design §4-N5's "`ElementaryKernel btChild` packaging";
    `N = vLayer ≅ V = M/T`).  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).NQ2Presentation.Lifting.ElementaryKernel.N {Yt : Q2Presentation.BoundaryFramedTarget}
      (self : Q2Presentation.Lifting.ElementaryKernel Yt) : Subgroup Yt.Y
          Q2Presentation.boundaryPackage_GammaAQ2Presentation.boundaryPackage_GammaA : Q2Presentation.BoundaryPackage Q2Presentation.GammaA**The candidate boundary package** (manuscript Prop 3.14, `prop:compatiblemarking`;
    plan Turn 4 §6).  The Stage-C data of `Γ_A`: the common tame quotient `gammaTameMap`,
    the maximal pro-`2` quotient `p : Γ_A ⟶ Π`, and the common unramified character
    `ν = gammaTameMap ≫ ν_t`, through which both factor. 
          (Q2Presentation.Induction.btChildQ2Presentation.Induction.btChild {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPair**The `B/T'`-child**: the framed pair the descended cover covers
    (`lem:transgression`'s base, manuscript l.4032–4034; the quotient of the
    child by the radical layer `T'`).  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.
    ) :
      Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number.
    If `α` is infinite, `Nat.card α = 0`. 
          (Q2Presentation.Induction.weakZ1Q2Presentation.Induction.weakZ1 {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) {Γ : ProfiniteGrp.{0}}
      (h : Γ ⟶ ProfiniteGrp.ofFiniteGrp (FiniteGrp.of Yt.Y)) : Type**The weak-base twisted-cocycle set** of an ARBITRARY continuous hom
    into the target, relative to an elementary kernel — the weak-base
    generalization of `TorsorProgram.Z1` (no surjectivity onto the quotient
    imposed; the basepoint is the hom itself).  Carrier chosen to match the
    `EdgeTwistLocalCore` twist layer verbatim. 
            (Q2Presentation.Induction.vLayerKernelQ2Presentation.Induction.vLayerKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel (Q2Presentation.Induction.btChild chief K).fst**The `V`-layer elementary kernel** at the descended child `B/T'`
    (design §4-N5's "`ElementaryKernel btChild` packaging";
    `N = vLayer ≅ V = M/T`).  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) fQ2Presentation.TorsorProgram.coverLiftTotal (Q2Presentation.Induction.btChild chief K).fst
      (Q2Presentation.Induction.vLayerKernel chief K).N Q2Presentation.boundaryPackage_GammaA
      (Q2Presentation.Induction.btChild chief K).snd) =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`.
        2 ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. (HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.2 *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. Q2Presentation.Induction.dimVQ2Presentation.Induction.dimV {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : ℕ`d = dim V` (the head `V = M/T`).  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
    theorem Q2Presentation.Induction.weakZ1_vLayer_card_gammaA
      {pQ2Presentation.Induction.FramedPair :
        Q2Presentation.Induction.FramedPairQ2Presentation.Induction.FramedPair : Type 1A **framed pair** `(𝒴, F)`: a boundary-framed marked target together with a
    boundary frame for it (manuscript Definition 4.1 + `eq:beta`).  This is the index of
    Theorem 4.2: the boundary-framed surjection count `e_Γ^β` is a function of the pair.
    The induction of `sec:induction` ranges over *all* such pairs simultaneously
    ("the induction is stated globally", l.1213), ordered by `|L_Y|`. }
      (chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p :
        Q2Presentation.Induction.FirstNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor (p : Q2Presentation.Induction.FramedPair) : TypeA non-scalar chief factor of `L_Y` that is **first**: every chief factor strictly
    below it (i.e. with upper term contained in `lower`) is scalar.  This is the manuscript's
    choice `S ◁ P` at l.3616–3623 ("all chief factors below `S` are scalar and `V` is the
    first non-scalar simple factor"), which `lem:collapse` requires for the coprime step
    `[S, Ñ] = 1`. 
          pQ2Presentation.Induction.FramedPair)
      (KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor :
        Q2Presentation.Induction.KernelMinimalQ2Presentation.Induction.KernelMinimal {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.NonScalarChiefFactor p) : TypeThe manuscript's kernel choice (l.3623): `K ◁ Y`, `K ≤ P`, `KS = P`, and `K` is
    **⊆-minimal** with these properties — stated as: any `Y`-normal `K' ≤ K` still joining
    with `S` to `P` equals `K`.  (This, not leastness among all candidates, is what
    `lem:simplehead` and `lem:collapse` use: both apply it to subgroups of `K`.) 
          chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p.toNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor.toNonScalarChiefFactor {p : Q2Presentation.Induction.FramedPair}
      (self : Q2Presentation.Induction.FirstNonScalarChiefFactor p) : Q2Presentation.Induction.NonScalarChiefFactor p)
      (fQ2Presentation.TorsorProgram.coverLiftTotal (Q2Presentation.Induction.btChild chief K).fst
      (Q2Presentation.Induction.vLayerKernel chief K).N Q2Presentation.boundaryPackage_GammaA
      (Q2Presentation.Induction.btChild chief K).snd :
        Q2Presentation.TorsorProgram.coverLiftTotalQ2Presentation.TorsorProgram.coverLiftTotal (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y)
      [hNn : N.Normal] {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (F : Q2Presentation.BoundaryFrame Yt) :
      Type**The cover-lift total space**: framed continuous homs into the AMBIENT
    target whose projection to the child is onto (`lem:covertransform`: all lifts
    of all unobstructed exact-image maps at once; surjectivity onto the ambient
    target NOT imposed — these are the weak lifts). 
          (Q2Presentation.Induction.btChildQ2Presentation.Induction.btChild {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPair**The `B/T'`-child**: the framed pair the descended cover covers
    (`lem:transgression`'s base, manuscript l.4032–4034; the quotient of the
    child by the radical layer `T'`). 
              chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.
    
          (Q2Presentation.Induction.vLayerKernelQ2Presentation.Induction.vLayerKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel (Q2Presentation.Induction.btChild chief K).fst**The `V`-layer elementary kernel** at the descended child `B/T'`
    (design §4-N5's "`ElementaryKernel btChild` packaging";
    `N = vLayer ≅ V = M/T`). 
              chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).NQ2Presentation.Lifting.ElementaryKernel.N {Yt : Q2Presentation.BoundaryFramedTarget}
      (self : Q2Presentation.Lifting.ElementaryKernel Yt) : Subgroup Yt.Y
          Q2Presentation.boundaryPackage_GammaAQ2Presentation.boundaryPackage_GammaA : Q2Presentation.BoundaryPackage Q2Presentation.GammaA**The candidate boundary package** (manuscript Prop 3.14, `prop:compatiblemarking`;
    plan Turn 4 §6).  The Stage-C data of `Γ_A`: the common tame quotient `gammaTameMap`,
    the maximal pro-`2` quotient `p : Γ_A ⟶ Π`, and the common unramified character
    `ν = gammaTameMap ≫ ν_t`, through which both factor. 
          (Q2Presentation.Induction.btChildQ2Presentation.Induction.btChild {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPair**The `B/T'`-child**: the framed pair the descended cover covers
    (`lem:transgression`'s base, manuscript l.4032–4034; the quotient of the
    child by the radical layer `T'`). 
              chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.
    ) :
      Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number.
    If `α` is infinite, `Nat.card α = 0`. 
          (Q2Presentation.Induction.weakZ1Q2Presentation.Induction.weakZ1 {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) {Γ : ProfiniteGrp.{0}}
      (h : Γ ⟶ ProfiniteGrp.ofFiniteGrp (FiniteGrp.of Yt.Y)) : Type**The weak-base twisted-cocycle set** of an ARBITRARY continuous hom
    into the target, relative to an elementary kernel — the weak-base
    generalization of `TorsorProgram.Z1` (no surjectivity onto the quotient
    imposed; the basepoint is the hom itself).  Carrier chosen to match the
    `EdgeTwistLocalCore` twist layer verbatim. 
            (Q2Presentation.Induction.vLayerKernelQ2Presentation.Induction.vLayerKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel (Q2Presentation.Induction.btChild chief K).fst**The `V`-layer elementary kernel** at the descended child `B/T'`
    (design §4-N5's "`ElementaryKernel btChild` packaging";
    `N = vLayer ≅ V = M/T`). 
              chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
            fQ2Presentation.TorsorProgram.coverLiftTotal (Q2Presentation.Induction.btChild chief K).fst
      (Q2Presentation.Induction.vLayerKernel chief K).N Q2Presentation.boundaryPackage_GammaA
      (Q2Presentation.Induction.btChild chief K).snd) =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`.
        2 ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`.
          (HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.2 *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
            Q2Presentation.Induction.dimVQ2Presentation.Induction.dimV {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : ℕ`d = dim V` (the head `V = M/T`). 
              chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
    **The candidate `|Z¹(V)|`-numeric at every `V⋊C`-lift** (the
    `lem:affinelifting` candidate `V`-stage factor of `eq:mumultiplicity`;
    N5's `weakZ1_vLayer_card` mirror): the same corank engine with
    `𝒳_V = ⊥` gives `|Z¹_{A,f}(V)| = 2^{2·dimV}` — the corank-`0` face of
    the ledger (the design's `rT = 0` sanity anchor, realized at the
    `V`-layer). 
  • defdefined in Q2Presentation/Induction/ZeroEdgePinnedExistence.lean
    complete
    def Q2Presentation.Induction.pinET {pQ2Presentation.Induction.FramedPair : Q2Presentation.Induction.FramedPairQ2Presentation.Induction.FramedPair : Type 1A **framed pair** `(𝒴, F)`: a boundary-framed marked target together with a
    boundary frame for it (manuscript Definition 4.1 + `eq:beta`).  This is the index of
    Theorem 4.2: the boundary-framed surjection count `e_Γ^β` is a function of the pair.
    The induction of `sec:induction` ranges over *all* such pairs simultaneously
    ("the induction is stated globally", l.1213), ordered by `|L_Y|`. }
      (chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p : Q2Presentation.Induction.FirstNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor (p : Q2Presentation.Induction.FramedPair) : TypeA non-scalar chief factor of `L_Y` that is **first**: every chief factor strictly
    below it (i.e. with upper term contained in `lower`) is scalar.  This is the manuscript's
    choice `S ◁ P` at l.3616–3623 ("all chief factors below `S` are scalar and `V` is the
    first non-scalar simple factor"), which `lem:collapse` requires for the coprime step
    `[S, Ñ] = 1`.  pQ2Presentation.Induction.FramedPair)
      (KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor :
        Q2Presentation.Induction.KernelMinimalQ2Presentation.Induction.KernelMinimal {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.NonScalarChiefFactor p) : TypeThe manuscript's kernel choice (l.3623): `K ◁ Y`, `K ≤ P`, `KS = P`, and `K` is
    **⊆-minimal** with these properties — stated as: any `Y`-normal `K' ≤ K` still joining
    with `S` to `P` equals `K`.  (This, not leastness among all candidates, is what
    `lem:simplehead` and `lem:collapse` use: both apply it to subgroups of `K`.)  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p.toNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor.toNonScalarChiefFactor {p : Q2Presentation.Induction.FramedPair}
      (self : Q2Presentation.Induction.FirstNonScalarChiefFactor p) : Q2Presentation.Induction.NonScalarChiefFactor p)
      (sQ2Presentation.Induction.towerC K → (Q2Presentation.Induction.btChild chief K).fst.Y :
        Q2Presentation.Induction.towerCQ2Presentation.Induction.towerC {p : Q2Presentation.Induction.FramedPair}
      {chief : Q2Presentation.Induction.NonScalarChiefFactor p} (K : Q2Presentation.Induction.KernelMinimal chief) : TypeThe lower target `C = Y/K` (`eq:targettower`).  KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor 
          (Q2Presentation.Induction.btChildQ2Presentation.Induction.btChild {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPair**The `B/T'`-child**: the framed pair the descended cover covers
    (`lem:transgression`'s base, manuscript l.4032–4034; the quotient of the
    child by the radical layer `T'`).  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.
    .YQ2Presentation.BoundaryFramedTarget.Y (self : Q2Presentation.BoundaryFramedTarget) : TypeThe finite target group `Y`. )
      (hs1s 1 = 1 : sQ2Presentation.Induction.towerC K → (Q2Presentation.Induction.btChild chief K).fst.Y 1 =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`. 1)
      (hsmul∀ (c d : Q2Presentation.Induction.towerC K), s c * s d = s (c * d) :
         (cQ2Presentation.Induction.towerC K dQ2Presentation.Induction.towerC K : Q2Presentation.Induction.towerCQ2Presentation.Induction.towerC {p : Q2Presentation.Induction.FramedPair}
      {chief : Q2Presentation.Induction.NonScalarChiefFactor p} (K : Q2Presentation.Induction.KernelMinimal chief) : TypeThe lower target `C = Y/K` (`eq:targettower`).  KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor), sQ2Presentation.Induction.towerC K → (Q2Presentation.Induction.btChild chief K).fst.Y cQ2Presentation.Induction.towerC K *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. sQ2Presentation.Induction.towerC K → (Q2Presentation.Induction.btChild chief K).fst.Y dQ2Presentation.Induction.towerC K =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`. sQ2Presentation.Induction.towerC K → (Q2Presentation.Induction.btChild chief K).fst.Y (HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.cQ2Presentation.Induction.towerC K *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. dQ2Presentation.Induction.towerC K)HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.)
      (cQ2Presentation.Induction.towerC K dQ2Presentation.Induction.towerC K : Q2Presentation.Induction.towerCQ2Presentation.Induction.towerC {p : Q2Presentation.Induction.FramedPair}
      {chief : Q2Presentation.Induction.NonScalarChiefFactor p} (K : Q2Presentation.Induction.KernelMinimal chief) : TypeThe lower target `C = Y/K` (`eq:targettower`).  KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      (Q2Presentation.Induction.towerTQ2Presentation.Induction.towerT {p : Q2Presentation.Induction.FramedPair}
      {chief : Q2Presentation.Induction.NonScalarChiefFactor p} (K : Q2Presentation.Induction.KernelMinimal chief) :
      Submodule (ZMod 2) (Q2Presentation.Induction.towerM K)The manuscript's radical layer `T = (K ∩ S)/R ◁ M` (l.3628), as a
    `ZMod 2`-submodule of the additive module `M`.  KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
    def Q2Presentation.Induction.pinET
      {pQ2Presentation.Induction.FramedPair :
        Q2Presentation.Induction.FramedPairQ2Presentation.Induction.FramedPair : Type 1A **framed pair** `(𝒴, F)`: a boundary-framed marked target together with a
    boundary frame for it (manuscript Definition 4.1 + `eq:beta`).  This is the index of
    Theorem 4.2: the boundary-framed surjection count `e_Γ^β` is a function of the pair.
    The induction of `sec:induction` ranges over *all* such pairs simultaneously
    ("the induction is stated globally", l.1213), ordered by `|L_Y|`. }
      (chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p :
        Q2Presentation.Induction.FirstNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor (p : Q2Presentation.Induction.FramedPair) : TypeA non-scalar chief factor of `L_Y` that is **first**: every chief factor strictly
    below it (i.e. with upper term contained in `lower`) is scalar.  This is the manuscript's
    choice `S ◁ P` at l.3616–3623 ("all chief factors below `S` are scalar and `V` is the
    first non-scalar simple factor"), which `lem:collapse` requires for the coprime step
    `[S, Ñ] = 1`. 
          pQ2Presentation.Induction.FramedPair)
      (KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor :
        Q2Presentation.Induction.KernelMinimalQ2Presentation.Induction.KernelMinimal {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.NonScalarChiefFactor p) : TypeThe manuscript's kernel choice (l.3623): `K ◁ Y`, `K ≤ P`, `KS = P`, and `K` is
    **⊆-minimal** with these properties — stated as: any `Y`-normal `K' ≤ K` still joining
    with `S` to `P` equals `K`.  (This, not leastness among all candidates, is what
    `lem:simplehead` and `lem:collapse` use: both apply it to subgroups of `K`.) 
          chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p.toNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor.toNonScalarChiefFactor {p : Q2Presentation.Induction.FramedPair}
      (self : Q2Presentation.Induction.FirstNonScalarChiefFactor p) : Q2Presentation.Induction.NonScalarChiefFactor p)
      (sQ2Presentation.Induction.towerC K → (Q2Presentation.Induction.btChild chief K).fst.Y :
        Q2Presentation.Induction.towerCQ2Presentation.Induction.towerC {p : Q2Presentation.Induction.FramedPair}
      {chief : Q2Presentation.Induction.NonScalarChiefFactor p} (K : Q2Presentation.Induction.KernelMinimal chief) : TypeThe lower target `C = Y/K` (`eq:targettower`).  KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor 
          (Q2Presentation.Induction.btChildQ2Presentation.Induction.btChild {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPair**The `B/T'`-child**: the framed pair the descended cover covers
    (`lem:transgression`'s base, manuscript l.4032–4034; the quotient of the
    child by the radical layer `T'`). 
                chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.
    .YQ2Presentation.BoundaryFramedTarget.Y (self : Q2Presentation.BoundaryFramedTarget) : TypeThe finite target group `Y`. )
      (hs1s 1 = 1 : sQ2Presentation.Induction.towerC K → (Q2Presentation.Induction.btChild chief K).fst.Y 1 =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`. 1)
      (hsmul∀ (c d : Q2Presentation.Induction.towerC K), s c * s d = s (c * d) :
        
          (cQ2Presentation.Induction.towerC K dQ2Presentation.Induction.towerC K :
            Q2Presentation.Induction.towerCQ2Presentation.Induction.towerC {p : Q2Presentation.Induction.FramedPair}
      {chief : Q2Presentation.Induction.NonScalarChiefFactor p} (K : Q2Presentation.Induction.KernelMinimal chief) : TypeThe lower target `C = Y/K` (`eq:targettower`). 
              KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor),
          sQ2Presentation.Induction.towerC K → (Q2Presentation.Induction.btChild chief K).fst.Y cQ2Presentation.Induction.towerC K *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. sQ2Presentation.Induction.towerC K → (Q2Presentation.Induction.btChild chief K).fst.Y dQ2Presentation.Induction.towerC K =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`. sQ2Presentation.Induction.towerC K → (Q2Presentation.Induction.btChild chief K).fst.Y (HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.cQ2Presentation.Induction.towerC K *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. dQ2Presentation.Induction.towerC K)HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.)
      (cQ2Presentation.Induction.towerC K dQ2Presentation.Induction.towerC K :
        Q2Presentation.Induction.towerCQ2Presentation.Induction.towerC {p : Q2Presentation.Induction.FramedPair}
      {chief : Q2Presentation.Induction.NonScalarChiefFactor p} (K : Q2Presentation.Induction.KernelMinimal chief) : TypeThe lower target `C = Y/K` (`eq:targettower`).  KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      (Q2Presentation.Induction.towerTQ2Presentation.Induction.towerT {p : Q2Presentation.Induction.FramedPair}
      {chief : Q2Presentation.Induction.NonScalarChiefFactor p} (K : Q2Presentation.Induction.KernelMinimal chief) :
      Submodule (ZMod 2) (Q2Presentation.Induction.towerM K)The manuscript's radical layer `T = (K ∩ S)/R ◁ M` (l.3628), as a
    `ZMod 2`-submodule of the additive module `M`.  KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
    **The `lem:affinelifting` zero-section pullback read**: the
    `T`-element carried by the `tau`-defect. 
  • defdefined in Q2Presentation/Induction/ZeroEdgeRealization.lean
    complete
    def Q2Presentation.Induction.weakLift
      (YtQ2Presentation.BoundaryFramedTarget : Q2Presentation.BoundaryFramedTargetQ2Presentation.BoundaryFramedTarget : Type 1A **boundary-framed marked target** `𝒴 = (Y, L_Y, π_Y, θ_Y)` (manuscript
    Definition 4.1, `def:framed`): a finite group `Y` with a normal finite `2`-subgroup
    `L_Y`, a surjection `π_Y : Y ↠ H` onto a finite *tame* quotient with kernel exactly
    `L_Y`, and an *elementary decoration* `θ_Y : Y → Multiplicative E` into the
    multiplicative image of a finite `𝔽₂`-vector space `E`.  The pair
    `q_Y = (π_Y, θ_Y)` fixes both the tame quotient `Y / L_Y ≅ H` and the decoration. )
      (EQ2Presentation.Lifting.ElementaryKernel Yt : Q2Presentation.Lifting.ElementaryKernelQ2Presentation.Lifting.ElementaryKernel (Yt : Q2Presentation.BoundaryFramedTarget) : TypeA normal subgroup of a framed target that is killed by the decoration,
    contained in the wild kernel, **abelian**, and of **exponent 2** — the shape
    of the chief kernels the cochain keeps quantify over.  YtQ2Presentation.BoundaryFramedTarget)
      {ΓProfiniteGrp.{0} : ProfiniteGrp.{0}ProfiniteGrp.{u_1} : Type (u_1 + 1)The category of profinite groups. A term of this type consists of a profinite
    set with a topological group structure.
    } (BQ2Presentation.BoundaryPackage Γ : Q2Presentation.BoundaryPackageQ2Presentation.BoundaryPackage (Γ : ProfiniteGrp.{0}) : TypeA **boundary package** on a profinite group `Γ`: the uniform Stage-C data of a tame
    quotient, a maximal pro-`2` quotient, and a common unramified character `ℤ₂` through which
    both factor (manuscript Prop 3.14, `prop:compatiblemarking`; plan Turn 4 §6).  The
    compatibility `tameMap ≫ ν_t = ν = pro2Map ≫ ν_2` records that the two markings agree on
    the full unramified coordinate, not merely modulo `2`.  ΓProfiniteGrp.{0})
      (FQ2Presentation.BoundaryFrame Yt : Q2Presentation.BoundaryFrameQ2Presentation.BoundaryFrame (Yt : Q2Presentation.BoundaryFramedTarget) : TypeA **boundary frame** on a boundary-framed target `𝒴` (manuscript `eq:beta`):
    the fixed compatible data `α : 𝕋_tame ↠ H`, `ψ : Π → Multiplicative E`, and the
    induced `β : ∂_bd → H × Multiplicative E`.  Surjectivity of `α` records that `H`
    really is a tame quotient (manuscript: "Fix a finite tame quotient `H`, an
    epimorphism `α : 𝕋_A ↠ H`").  YtQ2Presentation.BoundaryFramedTarget)
      (h0Γ ⟶ ProfiniteGrp.ofFiniteGrp (FiniteGrp.of Yt.Y) : ΓProfiniteGrp.{0} Quiver.Hom.{v, u} {V : Type u} [self : Quiver V] : V → V → Type vThe type of edges/arrows/morphisms between a given source and target.  ProfiniteGrp.ofFiniteGrpProfiniteGrp.ofFiniteGrp.{u_1} (G : FiniteGrp.{u_1}) : ProfiniteGrp.{u_1}A `FiniteGrp` when given the discrete topology can be considered as a profinite group.  (FiniteGrp.ofFiniteGrp.of.{u} (G : Type u) [Group G] [Finite G] : FiniteGrp.{u}Construct a term of `FiniteGrp` from a type endowed with the structure of a finite group.  YtQ2Presentation.BoundaryFramedTarget.YQ2Presentation.BoundaryFramedTarget.Y (self : Q2Presentation.BoundaryFramedTarget) : TypeThe finite target group `Y`. )) : TypeA type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. 
    def Q2Presentation.Induction.weakLift
      (YtQ2Presentation.BoundaryFramedTarget :
        Q2Presentation.BoundaryFramedTargetQ2Presentation.BoundaryFramedTarget : Type 1A **boundary-framed marked target** `𝒴 = (Y, L_Y, π_Y, θ_Y)` (manuscript
    Definition 4.1, `def:framed`): a finite group `Y` with a normal finite `2`-subgroup
    `L_Y`, a surjection `π_Y : Y ↠ H` onto a finite *tame* quotient with kernel exactly
    `L_Y`, and an *elementary decoration* `θ_Y : Y → Multiplicative E` into the
    multiplicative image of a finite `𝔽₂`-vector space `E`.  The pair
    `q_Y = (π_Y, θ_Y)` fixes both the tame quotient `Y / L_Y ≅ H` and the decoration. )
      (EQ2Presentation.Lifting.ElementaryKernel Yt :
        Q2Presentation.Lifting.ElementaryKernelQ2Presentation.Lifting.ElementaryKernel (Yt : Q2Presentation.BoundaryFramedTarget) : TypeA normal subgroup of a framed target that is killed by the decoration,
    contained in the wild kernel, **abelian**, and of **exponent 2** — the shape
    of the chief kernels the cochain keeps quantify over. 
          YtQ2Presentation.BoundaryFramedTarget)
      {ΓProfiniteGrp.{0} : ProfiniteGrp.{0}ProfiniteGrp.{u_1} : Type (u_1 + 1)The category of profinite groups. A term of this type consists of a profinite
    set with a topological group structure.
    }
      (BQ2Presentation.BoundaryPackage Γ : Q2Presentation.BoundaryPackageQ2Presentation.BoundaryPackage (Γ : ProfiniteGrp.{0}) : TypeA **boundary package** on a profinite group `Γ`: the uniform Stage-C data of a tame
    quotient, a maximal pro-`2` quotient, and a common unramified character `ℤ₂` through which
    both factor (manuscript Prop 3.14, `prop:compatiblemarking`; plan Turn 4 §6).  The
    compatibility `tameMap ≫ ν_t = ν = pro2Map ≫ ν_2` records that the two markings agree on
    the full unramified coordinate, not merely modulo `2`.  ΓProfiniteGrp.{0})
      (FQ2Presentation.BoundaryFrame Yt : Q2Presentation.BoundaryFrameQ2Presentation.BoundaryFrame (Yt : Q2Presentation.BoundaryFramedTarget) : TypeA **boundary frame** on a boundary-framed target `𝒴` (manuscript `eq:beta`):
    the fixed compatible data `α : 𝕋_tame ↠ H`, `ψ : Π → Multiplicative E`, and the
    induced `β : ∂_bd → H × Multiplicative E`.  Surjectivity of `α` records that `H`
    really is a tame quotient (manuscript: "Fix a finite tame quotient `H`, an
    epimorphism `α : 𝕋_A ↠ H`").  YtQ2Presentation.BoundaryFramedTarget)
      (h0Γ ⟶ ProfiniteGrp.ofFiniteGrp (FiniteGrp.of Yt.Y) :
        ΓProfiniteGrp.{0} Quiver.Hom.{v, u} {V : Type u} [self : Quiver V] : V → V → Type vThe type of edges/arrows/morphisms between a given source and target. 
          ProfiniteGrp.ofFiniteGrpProfiniteGrp.ofFiniteGrp.{u_1} (G : FiniteGrp.{u_1}) : ProfiniteGrp.{u_1}A `FiniteGrp` when given the discrete topology can be considered as a profinite group. 
            (FiniteGrp.ofFiniteGrp.of.{u} (G : Type u) [Group G] [Finite G] : FiniteGrp.{u}Construct a term of `FiniteGrp` from a type endowed with the structure of a finite group.  YtQ2Presentation.BoundaryFramedTarget.YQ2Presentation.BoundaryFramedTarget.Y (self : Q2Presentation.BoundaryFramedTarget) : TypeThe finite target group `Y`. )) :
      TypeA type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. 
    **The weak framed-lift set at a basepoint hom**: continuous framed
    homs agreeing with `h0` modulo the elementary kernel (the fibre of the
    mod-`E.N` reduction through `h0`'s coset; surjectivity NOT imposed —
    `lem:affinelifting`'s weak coordinates). 
  • defdefined in Q2Presentation/Induction/ZeroEdgeRealization.lean
    complete
    def Q2Presentation.Induction.EdgeAffineLifting
      {pQ2Presentation.Induction.FramedPair : Q2Presentation.Induction.FramedPairQ2Presentation.Induction.FramedPair : Type 1A **framed pair** `(𝒴, F)`: a boundary-framed marked target together with a
    boundary frame for it (manuscript Definition 4.1 + `eq:beta`).  This is the index of
    Theorem 4.2: the boundary-framed surjection count `e_Γ^β` is a function of the pair.
    The induction of `sec:induction` ranges over *all* such pairs simultaneously
    ("the induction is stated globally", l.1213), ordered by `|L_Y|`. }
      (chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p : Q2Presentation.Induction.FirstNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor (p : Q2Presentation.Induction.FramedPair) : TypeA non-scalar chief factor of `L_Y` that is **first**: every chief factor strictly
    below it (i.e. with upper term contained in `lower`) is scalar.  This is the manuscript's
    choice `S ◁ P` at l.3616–3623 ("all chief factors below `S` are scalar and `V` is the
    first non-scalar simple factor"), which `lem:collapse` requires for the coprime step
    `[S, Ñ] = 1`.  pQ2Presentation.Induction.FramedPair)
      (KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor :
        Q2Presentation.Induction.KernelMinimalQ2Presentation.Induction.KernelMinimal {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.NonScalarChiefFactor p) : TypeThe manuscript's kernel choice (l.3623): `K ◁ Y`, `K ≤ P`, `KS = P`, and `K` is
    **⊆-minimal** with these properties — stated as: any `Y`-normal `K' ≤ K` still joining
    with `S` to `P` equals `K`.  (This, not leastness among all candidates, is what
    `lem:simplehead` and `lem:collapse` use: both apply it to subgroups of `K`.)  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p.toNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor.toNonScalarChiefFactor {p : Q2Presentation.Induction.FramedPair}
      (self : Q2Presentation.Induction.FirstNonScalarChiefFactor p) : Q2Presentation.Induction.NonScalarChiefFactor p)
      (lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) :
        Module.DualModule.Dual.{u_4, u_5} (R : Type u_4) (M : Type u_5) [Semiring R] [AddCommMonoid M] [Module R M] : Type (max u_5 u_4)The left dual space of an R-module M is the R-module of linear maps `M → R`.  (ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2)
          (Q2Presentation.Lifting.NAddQ2Presentation.Lifting.NAdd {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) : TypeThe additive `F₂`-carrier of an elementary kernel. 
            (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)))
      (hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K) :
        lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`.
          Q2Presentation.Lifting.conjInvDualsQ2Presentation.Lifting.conjInvDuals {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) :
      Submodule (ZMod 2) (Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E))The conjugation-invariant duals `X = (R^∨)^Y = (R^∨)^C` of an
    elementary kernel (consumer spelling of the manuscript's `𝒳_R`,
    §7 l.3720–3723). 
            (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor))
      {ΓProfiniteGrp.{0} : ProfiniteGrp.{0}ProfiniteGrp.{u_1} : Type (u_1 + 1)The category of profinite groups. A term of this type consists of a profinite
    set with a topological group structure.
    } (BQ2Presentation.BoundaryPackage Γ : Q2Presentation.BoundaryPackageQ2Presentation.BoundaryPackage (Γ : ProfiniteGrp.{0}) : TypeA **boundary package** on a profinite group `Γ`: the uniform Stage-C data of a tame
    quotient, a maximal pro-`2` quotient, and a common unramified character `ℤ₂` through which
    both factor (manuscript Prop 3.14, `prop:compatiblemarking`; plan Turn 4 §6).  The
    compatibility `tameMap ≫ ν_t = ν = pro2Map ≫ ν_2` records that the two markings agree on
    the full unramified coordinate, not merely modulo `2`.  ΓProfiniteGrp.{0})
      (ZQ2Presentation.Induction.ZeroEdgeDescentData chief K lam hinv : Q2Presentation.Induction.ZeroEdgeDescentDataQ2Presentation.Induction.ZeroEdgeDescentData {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) : Type**The zero-edge descent data** (`eq:descendedclass` l.4037–4045 +
    `lem:affinelifting` l.4048–4083, as one choice bundle — the §6.5 choice
    discipline: both R4b keeps take the SAME bundle):
    
    * `D`/`hW` — the zero-edge witness (a normal edge complement, P3-U3); the
      bundle therefore implies `ZeroEdge` (`ZeroEdgeDescentData.zeroEdge`);
    * `Csec` + `hdisj`/`hsup` — the `lem:transgression` splitting coordinates
      `B/T' = V ⋊ C` (`Csec` a complement to the `V`-layer);
    * `gammaK`/`deltaK` — the normalized decomposition data `γ_κ ∈ Z¹(C,V^∨)`,
      `δ_κ ∈ Z²(C,𝔽₂)` of the descended class, with concrete cocycle laws
      (dual action `(c·φ)(v) = φ(c⁻¹·v)`);
    * `eT` — the `lem:affinelifting` class `e ∈ Z²(C,T)` (pullback of
      `B → V⋊C` along the zero section), twisted cocycle law in the
      `hzc`-ready orientation;
    * `mC` — the equivariant-lift correction functions `m_c` of the
      `κ_q⁰`-model (`eq:mquadratic`/`eq:mcoherent` l.4118–4125, stated
      against the bilinear factor set `edgeBaseFactor`).
    
    The deep pinning identity — that a normalized section cocycle of the
    descended double cover `descTarget D hW` equals
    `κ_q⁰-model + Γ_{γ_κ} + inf δ_κ` in the `Csec`-coordinates, and that `eT`
    is the actual zero-section pullback — is owned by the deferred
    transgression unit (`btChild_splits`/`zeroEdgeDescentData_nonempty`,
    design §4.7); until it lands, the coordinated R4b keep must carry that
    pinning alongside this bundle (same discipline as U7's `¬ZeroEdge`
    conditioning living on the future keep).  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K))
      (ρQ2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst
      (Q2Presentation.Induction.cChild chief K).snd :
        Q2Presentation.boundaryFramedSurjQ2Presentation.boundaryFramedSurj {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ)
      (Yt : Q2Presentation.BoundaryFramedTarget) (F : Q2Presentation.BoundaryFrame Yt) : TypeThe **boundary-framed surjections** `e_Γ^β(𝒴)` (manuscript `eq:eGamma`): the
    continuous surjections `f : Γ ↠ Y` whose induced map to `H × E` is the prescribed
    `β ∘ b_Γ`, i.e. `q_Y ∘ f = β ∘ b_Γ`.  This is the subtype counted in Theorem 4.2;
    its cardinality is `e_Γ^β(𝒴)`.  BQ2Presentation.BoundaryPackage Γ
          (Q2Presentation.Induction.cChildQ2Presentation.Induction.cChild {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPair**The C-child framed pair** (the carrier of `X_Γ(C)`; manuscript
    `C = Y/K` via `B/M' ≅ C`, `mChildCollapse`).  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.
    
          (Q2Presentation.Induction.cChildQ2Presentation.Induction.cChild {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPair**The C-child framed pair** (the carrier of `X_Γ(C)`; manuscript
    `C = Y/K` via `B/M' ≅ C`, `mChildCollapse`).  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.
    )
      (PQ2Presentation.Induction.ZeroEdgePinning chief K lam hinv Z : Q2Presentation.Induction.ZeroEdgePinningQ2Presentation.Induction.ZeroEdgePinning {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K))
      (Z : Q2Presentation.Induction.ZeroEdgeDescentData chief K lam hinv) : Type**The base-identity pinning of a bundle `Z`** — the §13 deferral's
    third item, concrete.  In the `Z.Csec`-coordinates (a multiplicative
    section `s`, so the section cochain `η` vanishes), the normalized
    section cocycle of the ACTUAL descended cover `descTarget Z.D Z.hW` at
    the total section `(v,c) ↦ ℓ̂(v)·σ̂(c)` is
    `κ((v,c),(w,d)) = g(v,cw) + n_c(w) + e(c,d)` with `g/n/e` the three deck
    readings; the fields pin
    
    * `g = edgeBaseFactor` (`fib_*`): the fibre part is the `κ_q⁰`-model
      factor set — `eq:basekappacochain`'s fibre normalization;
    * `n_c = Z.mC c + Z.gammaK c ∘ (c·)` (`conj_*`): the conjugation defect
      is the model correction plus the `Γ_{γ_κ}`-term (`eq:Gammagamma`);
    * `e = Z.deltaK` (`sec_*`): the pure base part is the inflated scalar —
    
    i.e. `κ = κ_q⁰ + Γ_{γ_κ} + inf δ_κ` as normalized cochains,
    `eq:descendedclass` l.4037–4045 ON THE NOSE; and `tau_eT` pins `Z.eT` as
    the actual zero-section pullback of `B → V⋊C` along the `Csec`-section
    (`lem:affinelifting` l.4050–4056).  `Nonempty (ZeroEdgePinning … Z)` is
    the pinning hypothesis the FUTURE coordinated R4b keep must carry
    alongside `Z` (both U8/U9 zero-edge keep docstrings + §13 note 6).  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K) ZQ2Presentation.Induction.ZeroEdgeDescentData chief K lam hinv) :
      PropThe universe of propositions. `Prop ≡ Sort 0`.
    
    Every proposition is propositionally equal to either `True` or `False`. 
    def Q2Presentation.Induction.EdgeAffineLifting
      {pQ2Presentation.Induction.FramedPair :
        Q2Presentation.Induction.FramedPairQ2Presentation.Induction.FramedPair : Type 1A **framed pair** `(𝒴, F)`: a boundary-framed marked target together with a
    boundary frame for it (manuscript Definition 4.1 + `eq:beta`).  This is the index of
    Theorem 4.2: the boundary-framed surjection count `e_Γ^β` is a function of the pair.
    The induction of `sec:induction` ranges over *all* such pairs simultaneously
    ("the induction is stated globally", l.1213), ordered by `|L_Y|`. }
      (chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p :
        Q2Presentation.Induction.FirstNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor (p : Q2Presentation.Induction.FramedPair) : TypeA non-scalar chief factor of `L_Y` that is **first**: every chief factor strictly
    below it (i.e. with upper term contained in `lower`) is scalar.  This is the manuscript's
    choice `S ◁ P` at l.3616–3623 ("all chief factors below `S` are scalar and `V` is the
    first non-scalar simple factor"), which `lem:collapse` requires for the coprime step
    `[S, Ñ] = 1`. 
          pQ2Presentation.Induction.FramedPair)
      (KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor :
        Q2Presentation.Induction.KernelMinimalQ2Presentation.Induction.KernelMinimal {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.NonScalarChiefFactor p) : TypeThe manuscript's kernel choice (l.3623): `K ◁ Y`, `K ≤ P`, `KS = P`, and `K` is
    **⊆-minimal** with these properties — stated as: any `Y`-normal `K' ≤ K` still joining
    with `S` to `P` equals `K`.  (This, not leastness among all candidates, is what
    `lem:simplehead` and `lem:collapse` use: both apply it to subgroups of `K`.) 
          chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p.toNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor.toNonScalarChiefFactor {p : Q2Presentation.Induction.FramedPair}
      (self : Q2Presentation.Induction.FirstNonScalarChiefFactor p) : Q2Presentation.Induction.NonScalarChiefFactor p)
      (lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) :
        Module.DualModule.Dual.{u_4, u_5} (R : Type u_4) (M : Type u_5) [Semiring R] [AddCommMonoid M] [Module R M] : Type (max u_5 u_4)The left dual space of an R-module M is the R-module of linear maps `M → R`.  (ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2)
          (Q2Presentation.Lifting.NAddQ2Presentation.Lifting.NAdd {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) : TypeThe additive `F₂`-carrier of an elementary kernel. 
            (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian. 
              chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)))
      (hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K) :
        lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`.
          Q2Presentation.Lifting.conjInvDualsQ2Presentation.Lifting.conjInvDuals {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) :
      Submodule (ZMod 2) (Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E))The conjugation-invariant duals `X = (R^∨)^Y = (R^∨)^C` of an
    elementary kernel (consumer spelling of the manuscript's `𝒳_R`,
    §7 l.3720–3723). 
            (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian. 
              chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor))
      {ΓProfiniteGrp.{0} : ProfiniteGrp.{0}ProfiniteGrp.{u_1} : Type (u_1 + 1)The category of profinite groups. A term of this type consists of a profinite
    set with a topological group structure.
    }
      (BQ2Presentation.BoundaryPackage Γ : Q2Presentation.BoundaryPackageQ2Presentation.BoundaryPackage (Γ : ProfiniteGrp.{0}) : TypeA **boundary package** on a profinite group `Γ`: the uniform Stage-C data of a tame
    quotient, a maximal pro-`2` quotient, and a common unramified character `ℤ₂` through which
    both factor (manuscript Prop 3.14, `prop:compatiblemarking`; plan Turn 4 §6).  The
    compatibility `tameMap ≫ ν_t = ν = pro2Map ≫ ν_2` records that the two markings agree on
    the full unramified coordinate, not merely modulo `2`.  ΓProfiniteGrp.{0})
      (ZQ2Presentation.Induction.ZeroEdgeDescentData chief K lam hinv :
        Q2Presentation.Induction.ZeroEdgeDescentDataQ2Presentation.Induction.ZeroEdgeDescentData {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) : Type**The zero-edge descent data** (`eq:descendedclass` l.4037–4045 +
    `lem:affinelifting` l.4048–4083, as one choice bundle — the §6.5 choice
    discipline: both R4b keeps take the SAME bundle):
    
    * `D`/`hW` — the zero-edge witness (a normal edge complement, P3-U3); the
      bundle therefore implies `ZeroEdge` (`ZeroEdgeDescentData.zeroEdge`);
    * `Csec` + `hdisj`/`hsup` — the `lem:transgression` splitting coordinates
      `B/T' = V ⋊ C` (`Csec` a complement to the `V`-layer);
    * `gammaK`/`deltaK` — the normalized decomposition data `γ_κ ∈ Z¹(C,V^∨)`,
      `δ_κ ∈ Z²(C,𝔽₂)` of the descended class, with concrete cocycle laws
      (dual action `(c·φ)(v) = φ(c⁻¹·v)`);
    * `eT` — the `lem:affinelifting` class `e ∈ Z²(C,T)` (pullback of
      `B → V⋊C` along the zero section), twisted cocycle law in the
      `hzc`-ready orientation;
    * `mC` — the equivariant-lift correction functions `m_c` of the
      `κ_q⁰`-model (`eq:mquadratic`/`eq:mcoherent` l.4118–4125, stated
      against the bilinear factor set `edgeBaseFactor`).
    
    The deep pinning identity — that a normalized section cocycle of the
    descended double cover `descTarget D hW` equals
    `κ_q⁰-model + Γ_{γ_κ} + inf δ_κ` in the `Csec`-coordinates, and that `eT`
    is the actual zero-section pullback — is owned by the deferred
    transgression unit (`btChild_splits`/`zeroEdgeDescentData_nonempty`,
    design §4.7); until it lands, the coordinated R4b keep must carry that
    pinning alongside this bundle (same discipline as U7's `¬ZeroEdge`
    conditioning living on the future keep). 
          chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K))
      (ρQ2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst
      (Q2Presentation.Induction.cChild chief K).snd :
        Q2Presentation.boundaryFramedSurjQ2Presentation.boundaryFramedSurj {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ)
      (Yt : Q2Presentation.BoundaryFramedTarget) (F : Q2Presentation.BoundaryFrame Yt) : TypeThe **boundary-framed surjections** `e_Γ^β(𝒴)` (manuscript `eq:eGamma`): the
    continuous surjections `f : Γ ↠ Y` whose induced map to `H × E` is the prescribed
    `β ∘ b_Γ`, i.e. `q_Y ∘ f = β ∘ b_Γ`.  This is the subtype counted in Theorem 4.2;
    its cardinality is `e_Γ^β(𝒴)`.  BQ2Presentation.BoundaryPackage Γ
          (Q2Presentation.Induction.cChildQ2Presentation.Induction.cChild {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPair**The C-child framed pair** (the carrier of `X_Γ(C)`; manuscript
    `C = Y/K` via `B/M' ≅ C`, `mChildCollapse`). 
              chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.
    
          (Q2Presentation.Induction.cChildQ2Presentation.Induction.cChild {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPair**The C-child framed pair** (the carrier of `X_Γ(C)`; manuscript
    `C = Y/K` via `B/M' ≅ C`, `mChildCollapse`). 
              chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.
    )
      (PQ2Presentation.Induction.ZeroEdgePinning chief K lam hinv Z :
        Q2Presentation.Induction.ZeroEdgePinningQ2Presentation.Induction.ZeroEdgePinning {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K))
      (Z : Q2Presentation.Induction.ZeroEdgeDescentData chief K lam hinv) : Type**The base-identity pinning of a bundle `Z`** — the §13 deferral's
    third item, concrete.  In the `Z.Csec`-coordinates (a multiplicative
    section `s`, so the section cochain `η` vanishes), the normalized
    section cocycle of the ACTUAL descended cover `descTarget Z.D Z.hW` at
    the total section `(v,c) ↦ ℓ̂(v)·σ̂(c)` is
    `κ((v,c),(w,d)) = g(v,cw) + n_c(w) + e(c,d)` with `g/n/e` the three deck
    readings; the fields pin
    
    * `g = edgeBaseFactor` (`fib_*`): the fibre part is the `κ_q⁰`-model
      factor set — `eq:basekappacochain`'s fibre normalization;
    * `n_c = Z.mC c + Z.gammaK c ∘ (c·)` (`conj_*`): the conjugation defect
      is the model correction plus the `Γ_{γ_κ}`-term (`eq:Gammagamma`);
    * `e = Z.deltaK` (`sec_*`): the pure base part is the inflated scalar —
    
    i.e. `κ = κ_q⁰ + Γ_{γ_κ} + inf δ_κ` as normalized cochains,
    `eq:descendedclass` l.4037–4045 ON THE NOSE; and `tau_eT` pins `Z.eT` as
    the actual zero-section pullback of `B → V⋊C` along the `Csec`-section
    (`lem:affinelifting` l.4050–4056).  `Nonempty (ZeroEdgePinning … Z)` is
    the pinning hypothesis the FUTURE coordinated R4b keep must carry
    alongside `Z` (both U8/U9 zero-edge keep docstrings + §13 note 6). 
          chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K) ZQ2Presentation.Induction.ZeroEdgeDescentData chief K lam hinv) :
      PropThe universe of propositions. `Prop ≡ Sort 0`.
    
    Every proposition is propositionally equal to either `True` or `False`. 
    **F-affine floor `Prop`** (design §4-N9's honest residue of S2/S3;
    `lem:affinelifting` l.4048–4083, `eq:affineequation` l.4060 +
    `lem:elementarystage` l.4171–4205): a twisted cocycle `z ∈ Z¹_ρ(V)`
    supports a framed `M`-lift over `ρ` through the pinned trivialization
    IFF its per-`χ` constraint readings (`edgeLRead`, the `Γ_{γ_χ}`-graph
    `ι`-values) hit the `χ_*e`-targets (`edgeKappaRead`) — the affine
    equation `∂z = ρ*e` in per-cocycle, token-FREE spelling.  PROVENANCE +
    dissolution: (⟸, existence) is the `H²_{Γ,ρ}(M_χ-complement) = 0`
    counting dévissage — in-tree route: clause (d) of
    `q2_localduality_general` at `ker χ̃`-kernels (local) resp. the N6
    corank engine (candidate), the SAME ladder as `EdgeDelSurj`'s
    dissolution (the concurrent ∂-glue lane); (⟹, admissibility) is the
    `tau_eT`-deck calculus of the pinning (`eq:basekappacochain` l.2131 read
    along the lift; dischargeable from `P.tau`/`P.tau_eT` +
    `edgeLRead_eq_chiDefect`, budgeted as the first dissolution rung).
    Falsifiable per `(ρ, z)`: both sides are decidable-in-principle finite
    statements at a concrete bundle.  Strictly below keeps 3/4 (it carries
    no count, no sign, no Gauss content). 
  • theoremdefined in Q2Presentation/Lifting/Duality.lean
    complete
    theorem Q2Presentation.Lifting.lift_torsor_card.{u_2, u_3} {ZType u_2 : Type u_2A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. }
      {LType u_3 : Type u_3A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } [AddGroupAddGroup.{u} (A : Type u) : Type uAn `AddGroup` is an `AddMonoid` with a unary `-` satisfying `-a + a = 0`.
    
    There is also a binary operation `-` such that `a - b = a + -b`,
    with a default so that `a - b = a + -b` holds by definition.
    
    Use `AddGroup.ofLeftAxioms` or `AddGroup.ofRightAxioms` to define an
    additive group structure on a type with the minimum proof obligations.
     ZType u_2] [AddTorsorAddTorsor.{u_1, u_2} (G : outParam (Type u_1)) (P : Type u_2) [AddGroup G] : Type (max u_1 u_2)An `AddTorsor G P` gives a structure to the nonempty type `P`,
    acted on by an `AddGroup G` with a transitive and free action given
    by the `+ᵥ` operation and a corresponding subtraction given by the
    `-ᵥ` operation. In the case of a vector space, it is an affine
    space.  ZType u_2 LType u_3] : Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number.
    If `α` is infinite, `Nat.card α = 0`.  LType u_3 =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`. Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number.
    If `α` is infinite, `Nat.card α = 0`.  ZType u_2
    theorem Q2Presentation.Lifting.lift_torsor_card.{u_2,
        u_3}
      {ZType u_2 : Type u_2A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } {LType u_3 : Type u_3A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. }
      [AddGroupAddGroup.{u} (A : Type u) : Type uAn `AddGroup` is an `AddMonoid` with a unary `-` satisfying `-a + a = 0`.
    
    There is also a binary operation `-` such that `a - b = a + -b`,
    with a default so that `a - b = a + -b` holds by definition.
    
    Use `AddGroup.ofLeftAxioms` or `AddGroup.ofRightAxioms` to define an
    additive group structure on a type with the minimum proof obligations.
     ZType u_2] [AddTorsorAddTorsor.{u_1, u_2} (G : outParam (Type u_1)) (P : Type u_2) [AddGroup G] : Type (max u_1 u_2)An `AddTorsor G P` gives a structure to the nonempty type `P`,
    acted on by an `AddGroup G` with a transitive and free action given
    by the `+ᵥ` operation and a corresponding subtraction given by the
    `-ᵥ` operation. In the case of a vector space, it is an affine
    space.  ZType u_2 LType u_3] :
      Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number.
    If `α` is infinite, `Nat.card α = 0`.  LType u_3 =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`. Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number.
    If `α` is infinite, `Nat.card α = 0`.  ZType u_2
    **The lift count is the cocycle count** (`lem:affinelifting`, l.4015): a
    nonempty set `L` of lifts over a fixed lifting datum is a torsor under the
    `1`-cocycles `Z` (`AddTorsor` bakes in nonemptiness), so `|L| = |Z|`.  Applied
    to `Z = Z¹_{Γ,ρ}` this is the `|Z¹|` factor of the lift multiplicity `μ`. 
Proof

Proved in §8 of the paper. Ingredients: Theorem 5.12 Theorem 5.13.

Proposition 8.8 of the paper (Completed-square phase identity).

For either source, every lower exact-image map \rho, every b\in H^1_{\Gamma,\rho}(V), and every \chi\in \mathcal X_T,

Q_{\kappa,\Gamma,\rho}(b) +\langle\partial_{\Gamma,\rho} b+\rho^*e,\chi\rangle =Q^0_{\Gamma,\rho}(b+\rho^*a_{\chi,\kappa}) +\iota_\Gamma(\rho^*\Delta_{\chi,\kappa}).

Here Q^0 is the base determinant form and Q_\kappa is the obstruction for the actual scalar pushout class (131).

Lean code for Theorem8.84 theorems
  • theoremdefined in Q2Presentation/Induction/ZeroEdgePointwise.lean
    complete
    theorem Q2Presentation.Induction.edgeF0_add
      {pQ2Presentation.Induction.FramedPair : Q2Presentation.Induction.FramedPairQ2Presentation.Induction.FramedPair : Type 1A **framed pair** `(𝒴, F)`: a boundary-framed marked target together with a
    boundary frame for it (manuscript Definition 4.1 + `eq:beta`).  This is the index of
    Theorem 4.2: the boundary-framed surjection count `e_Γ^β` is a function of the pair.
    The induction of `sec:induction` ranges over *all* such pairs simultaneously
    ("the induction is stated globally", l.1213), ordered by `|L_Y|`. }
      (chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p : Q2Presentation.Induction.FirstNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor (p : Q2Presentation.Induction.FramedPair) : TypeA non-scalar chief factor of `L_Y` that is **first**: every chief factor strictly
    below it (i.e. with upper term contained in `lower`) is scalar.  This is the manuscript's
    choice `S ◁ P` at l.3616–3623 ("all chief factors below `S` are scalar and `V` is the
    first non-scalar simple factor"), which `lem:collapse` requires for the coprime step
    `[S, Ñ] = 1`.  pQ2Presentation.Induction.FramedPair)
      (KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor :
        Q2Presentation.Induction.KernelMinimalQ2Presentation.Induction.KernelMinimal {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.NonScalarChiefFactor p) : TypeThe manuscript's kernel choice (l.3623): `K ◁ Y`, `K ≤ P`, `KS = P`, and `K` is
    **⊆-minimal** with these properties — stated as: any `Y`-normal `K' ≤ K` still joining
    with `S` to `P` equals `K`.  (This, not leastness among all candidates, is what
    `lem:simplehead` and `lem:collapse` use: both apply it to subgroups of `K`.)  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p.toNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor.toNonScalarChiefFactor {p : Q2Presentation.Induction.FramedPair}
      (self : Q2Presentation.Induction.FirstNonScalarChiefFactor p) : Q2Presentation.Induction.NonScalarChiefFactor p)
      (lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) :
        Module.DualModule.Dual.{u_4, u_5} (R : Type u_4) (M : Type u_5) [Semiring R] [AddCommMonoid M] [Module R M] : Type (max u_5 u_4)The left dual space of an R-module M is the R-module of linear maps `M → R`.  (ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2)
          (Q2Presentation.Lifting.NAddQ2Presentation.Lifting.NAdd {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) : TypeThe additive `F₂`-carrier of an elementary kernel. 
            (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)))
      (hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K) :
        lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`.
          Q2Presentation.Lifting.conjInvDualsQ2Presentation.Lifting.conjInvDuals {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) :
      Submodule (ZMod 2) (Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E))The conjugation-invariant duals `X = (R^∨)^Y = (R^∨)^C` of an
    elementary kernel (consumer spelling of the manuscript's `𝒳_R`,
    §7 l.3720–3723). 
            (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor))
      (ZQ2Presentation.Induction.ZeroEdgeDescentData chief K lam hinv : Q2Presentation.Induction.ZeroEdgeDescentDataQ2Presentation.Induction.ZeroEdgeDescentData {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) : Type**The zero-edge descent data** (`eq:descendedclass` l.4037–4045 +
    `lem:affinelifting` l.4048–4083, as one choice bundle — the §6.5 choice
    discipline: both R4b keeps take the SAME bundle):
    
    * `D`/`hW` — the zero-edge witness (a normal edge complement, P3-U3); the
      bundle therefore implies `ZeroEdge` (`ZeroEdgeDescentData.zeroEdge`);
    * `Csec` + `hdisj`/`hsup` — the `lem:transgression` splitting coordinates
      `B/T' = V ⋊ C` (`Csec` a complement to the `V`-layer);
    * `gammaK`/`deltaK` — the normalized decomposition data `γ_κ ∈ Z¹(C,V^∨)`,
      `δ_κ ∈ Z²(C,𝔽₂)` of the descended class, with concrete cocycle laws
      (dual action `(c·φ)(v) = φ(c⁻¹·v)`);
    * `eT` — the `lem:affinelifting` class `e ∈ Z²(C,T)` (pullback of
      `B → V⋊C` along the zero section), twisted cocycle law in the
      `hzc`-ready orientation;
    * `mC` — the equivariant-lift correction functions `m_c` of the
      `κ_q⁰`-model (`eq:mquadratic`/`eq:mcoherent` l.4118–4125, stated
      against the bilinear factor set `edgeBaseFactor`).
    
    The deep pinning identity — that a normalized section cocycle of the
    descended double cover `descTarget D hW` equals
    `κ_q⁰-model + Γ_{γ_κ} + inf δ_κ` in the `Csec`-coordinates, and that `eT`
    is the actual zero-section pullback — is owned by the deferred
    transgression unit (`btChild_splits`/`zeroEdgeDescentData_nonempty`,
    design §4.7); until it lands, the coordinated R4b keep must carry that
    pinning alongside this bundle (same discipline as U7's `¬ZeroEdge`
    conditioning living on the future keep).  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K))
      {ΓProfiniteGrp.{0} : ProfiniteGrp.{0}ProfiniteGrp.{u_1} : Type (u_1 + 1)The category of profinite groups. A term of this type consists of a profinite
    set with a topological group structure.
    } (BQ2Presentation.BoundaryPackage Γ : Q2Presentation.BoundaryPackageQ2Presentation.BoundaryPackage (Γ : ProfiniteGrp.{0}) : TypeA **boundary package** on a profinite group `Γ`: the uniform Stage-C data of a tame
    quotient, a maximal pro-`2` quotient, and a common unramified character `ℤ₂` through which
    both factor (manuscript Prop 3.14, `prop:compatiblemarking`; plan Turn 4 §6).  The
    compatibility `tameMap ≫ ν_t = ν = pro2Map ≫ ν_2` records that the two markings agree on
    the full unramified coordinate, not merely modulo `2`.  ΓProfiniteGrp.{0})
      (ρQ2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst
      (Q2Presentation.Induction.cChild chief K).snd :
        Q2Presentation.boundaryFramedSurjQ2Presentation.boundaryFramedSurj {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ)
      (Yt : Q2Presentation.BoundaryFramedTarget) (F : Q2Presentation.BoundaryFrame Yt) : TypeThe **boundary-framed surjections** `e_Γ^β(𝒴)` (manuscript `eq:eGamma`): the
    continuous surjections `f : Γ ↠ Y` whose induced map to `H × E` is the prescribed
    `β ∘ b_Γ`, i.e. `q_Y ∘ f = β ∘ b_Γ`.  This is the subtype counted in Theorem 4.2;
    its cardinality is `e_Γ^β(𝒴)`.  BQ2Presentation.BoundaryPackage Γ
          (Q2Presentation.Induction.cChildQ2Presentation.Induction.cChild {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPair**The C-child framed pair** (the carrier of `X_Γ(C)`; manuscript
    `C = Y/K` via `B/M' ≅ C`, `mChildCollapse`).  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.
    
          (Q2Presentation.Induction.cChildQ2Presentation.Induction.cChild {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPair**The C-child framed pair** (the carrier of `X_Γ(C)`; manuscript
    `C = Y/K` via `B/M' ≅ C`, `mChildCollapse`).  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.
    )
      (z↥(Q2Presentation.Induction.edgeZ1 chief K B ρ) w↥(Q2Presentation.Induction.edgeZ1 chief K B ρ) : (Q2Presentation.Induction.edgeZ1Q2Presentation.Induction.edgeZ1 {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) {Γ : ProfiniteGrp.{0}}
      (B : Q2Presentation.BoundaryPackage Γ)
      (ρ :
        Q2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst
          (Q2Presentation.Induction.cChild chief K).snd) :
      Submodule (ZMod 2) (↑Γ.toProfinite.toTop → Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K)**`Z¹_ρ(V)`** — the `ZMod 2`-module of continuous (locally constant)
    `V`-valued ρ̄-twisted 1-cocycles: `z(γγ′) = z(γ) + ρ̄(γ)·z(γ′)` (THE
    orientation pin — `aRep_cocycle`'s house orientation; design §2.1's
    `W_ρ`, the engine carrier of the W2 instantiation).  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor BQ2Presentation.BoundaryPackage Γ ρQ2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst
      (Q2Presentation.Induction.cChild chief K).snd)) :
      Q2Presentation.Induction.edgeF0Q2Presentation.Induction.edgeF0 {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K))
      (Z : Q2Presentation.Induction.ZeroEdgeDescentData chief K lam hinv) {Γ : ProfiniteGrp.{0}}
      (B : Q2Presentation.BoundaryPackage Γ)
      (ρ :
        Q2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst
          (Q2Presentation.Induction.cChild chief K).snd)
      (z : ↥(Q2Presentation.Induction.edgeZ1 chief K B ρ)) : ↑Γ.toProfinite.toTop → ↑Γ.toProfinite.toTop → ZMod 2**The quadratic defect leg `F₀(z)`** — the `κ_q⁰`-model graph read
    along the `z`-twisted lift: `F₀(z)(γ,γ′) = f(z γ, ρ̄γ·z γ′) +
    m_{ρ̄γ}(z γ′)` (the `thetaGraph` shape at the source).  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K) ZQ2Presentation.Induction.ZeroEdgeDescentData chief K lam hinv BQ2Presentation.BoundaryPackage Γ ρQ2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst
      (Q2Presentation.Induction.cChild chief K).snd (HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`.z↥(Q2Presentation.Induction.edgeZ1 chief K B ρ) +HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`. w↥(Q2Presentation.Induction.edgeZ1 chief K B ρ))HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`. =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`.
        Q2Presentation.Induction.edgeF0Q2Presentation.Induction.edgeF0 {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K))
      (Z : Q2Presentation.Induction.ZeroEdgeDescentData chief K lam hinv) {Γ : ProfiniteGrp.{0}}
      (B : Q2Presentation.BoundaryPackage Γ)
      (ρ :
        Q2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst
          (Q2Presentation.Induction.cChild chief K).snd)
      (z : ↥(Q2Presentation.Induction.edgeZ1 chief K B ρ)) : ↑Γ.toProfinite.toTop → ↑Γ.toProfinite.toTop → ZMod 2**The quadratic defect leg `F₀(z)`** — the `κ_q⁰`-model graph read
    along the `z`-twisted lift: `F₀(z)(γ,γ′) = f(z γ, ρ̄γ·z γ′) +
    m_{ρ̄γ}(z γ′)` (the `thetaGraph` shape at the source).  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K) ZQ2Presentation.Induction.ZeroEdgeDescentData chief K lam hinv BQ2Presentation.BoundaryPackage Γ ρQ2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst
      (Q2Presentation.Induction.cChild chief K).snd z↥(Q2Presentation.Induction.edgeZ1 chief K B ρ) +HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`.
              Q2Presentation.Induction.edgeF0Q2Presentation.Induction.edgeF0 {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K))
      (Z : Q2Presentation.Induction.ZeroEdgeDescentData chief K lam hinv) {Γ : ProfiniteGrp.{0}}
      (B : Q2Presentation.BoundaryPackage Γ)
      (ρ :
        Q2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst
          (Q2Presentation.Induction.cChild chief K).snd)
      (z : ↥(Q2Presentation.Induction.edgeZ1 chief K B ρ)) : ↑Γ.toProfinite.toTop → ↑Γ.toProfinite.toTop → ZMod 2**The quadratic defect leg `F₀(z)`** — the `κ_q⁰`-model graph read
    along the `z`-twisted lift: `F₀(z)(γ,γ′) = f(z γ, ρ̄γ·z γ′) +
    m_{ρ̄γ}(z γ′)` (the `thetaGraph` shape at the source).  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K) ZQ2Presentation.Induction.ZeroEdgeDescentData chief K lam hinv BQ2Presentation.BoundaryPackage Γ ρQ2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst
      (Q2Presentation.Induction.cChild chief K).snd w↥(Q2Presentation.Induction.edgeZ1 chief K B ρ) +HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`.
            Q2Presentation.Induction.edgePairQ2Presentation.Induction.edgePair {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K))
      (Z : Q2Presentation.Induction.ZeroEdgeDescentData chief K lam hinv) {Γ : ProfiniteGrp.{0}}
      (B : Q2Presentation.BoundaryPackage Γ)
      (ρ :
        Q2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst
          (Q2Presentation.Induction.cChild chief K).snd)
      (x y : ↥(Q2Presentation.Induction.edgeZ1 chief K B ρ)) : ↑Γ.toProfinite.toTop → ↑Γ.toProfinite.toTop → ZMod 2**The polar pairing cochain** `P(x,y)(γ,γ′) = b(y γ, ρ̄γ·x γ′)` —
    the cross term of the completed square (design §4-N7 bullet 2); its
    `ι`-reading is `edgeQ`'s polar form.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K) ZQ2Presentation.Induction.ZeroEdgeDescentData chief K lam hinv BQ2Presentation.BoundaryPackage Γ ρQ2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst
      (Q2Presentation.Induction.cChild chief K).snd z↥(Q2Presentation.Induction.edgeZ1 chief K B ρ) w↥(Q2Presentation.Induction.edgeZ1 chief K B ρ) +HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`.
          Q2Presentation.Induction.cochainCoboundaryQ2Presentation.Induction.cochainCoboundary (Γ : ProfiniteGrp.{0}) (u : ↑Γ.toProfinite.toTop → ZMod 2) :
      ↑Γ.toProfinite.toTop → ↑Γ.toProfinite.toTop → ZMod 2The **explicit coboundary** `δu` of a 1-cochain `u` (char-2 inhomogeneous
    differential, trivial action): `δu (γ, γ') = u γ + u γ' + u (γγ')`.  N7's
    completed-square defects and `eq:Qkappadifference` corrections enter the
    calculus through this def.  ΓProfiniteGrp.{0} fun γ↑Γ.toProfinite.toTop =>
            ((Q2Presentation.Induction.edgeBaseFactorQ2Presentation.Induction.edgeBaseFactor {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) (hne : lam ≠ 0) :
      Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K →ₗ[ZMod 2]
        Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K →ₗ[ZMod 2] ZMod 2`f`: the bilinear factor set of the base determinant model —
    `f(v,v) = q̄(v)`, `f(v,w) + f(w,v) = b_q̄(v,w)` (hygiene def fixing the
    `FiniteDimensional` instance path once).  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K) )
                (z↥(Q2Presentation.Induction.edgeZ1 chief K B ρ) γ↑Γ.toProfinite.toTop))
              (w↥(Q2Presentation.Induction.edgeZ1 chief K B ρ) γ↑Γ.toProfinite.toTop)
    theorem Q2Presentation.Induction.edgeF0_add
      {pQ2Presentation.Induction.FramedPair :
        Q2Presentation.Induction.FramedPairQ2Presentation.Induction.FramedPair : Type 1A **framed pair** `(𝒴, F)`: a boundary-framed marked target together with a
    boundary frame for it (manuscript Definition 4.1 + `eq:beta`).  This is the index of
    Theorem 4.2: the boundary-framed surjection count `e_Γ^β` is a function of the pair.
    The induction of `sec:induction` ranges over *all* such pairs simultaneously
    ("the induction is stated globally", l.1213), ordered by `|L_Y|`. }
      (chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p :
        Q2Presentation.Induction.FirstNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor (p : Q2Presentation.Induction.FramedPair) : TypeA non-scalar chief factor of `L_Y` that is **first**: every chief factor strictly
    below it (i.e. with upper term contained in `lower`) is scalar.  This is the manuscript's
    choice `S ◁ P` at l.3616–3623 ("all chief factors below `S` are scalar and `V` is the
    first non-scalar simple factor"), which `lem:collapse` requires for the coprime step
    `[S, Ñ] = 1`. 
          pQ2Presentation.Induction.FramedPair)
      (KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor :
        Q2Presentation.Induction.KernelMinimalQ2Presentation.Induction.KernelMinimal {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.NonScalarChiefFactor p) : TypeThe manuscript's kernel choice (l.3623): `K ◁ Y`, `K ≤ P`, `KS = P`, and `K` is
    **⊆-minimal** with these properties — stated as: any `Y`-normal `K' ≤ K` still joining
    with `S` to `P` equals `K`.  (This, not leastness among all candidates, is what
    `lem:simplehead` and `lem:collapse` use: both apply it to subgroups of `K`.) 
          chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p.toNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor.toNonScalarChiefFactor {p : Q2Presentation.Induction.FramedPair}
      (self : Q2Presentation.Induction.FirstNonScalarChiefFactor p) : Q2Presentation.Induction.NonScalarChiefFactor p)
      (lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) :
        Module.DualModule.Dual.{u_4, u_5} (R : Type u_4) (M : Type u_5) [Semiring R] [AddCommMonoid M] [Module R M] : Type (max u_5 u_4)The left dual space of an R-module M is the R-module of linear maps `M → R`.  (ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2)
          (Q2Presentation.Lifting.NAddQ2Presentation.Lifting.NAdd {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) : TypeThe additive `F₂`-carrier of an elementary kernel. 
            (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian. 
              chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)))
      (hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K) :
        lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`.
          Q2Presentation.Lifting.conjInvDualsQ2Presentation.Lifting.conjInvDuals {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) :
      Submodule (ZMod 2) (Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E))The conjugation-invariant duals `X = (R^∨)^Y = (R^∨)^C` of an
    elementary kernel (consumer spelling of the manuscript's `𝒳_R`,
    §7 l.3720–3723). 
            (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian. 
              chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor))
      (ZQ2Presentation.Induction.ZeroEdgeDescentData chief K lam hinv :
        Q2Presentation.Induction.ZeroEdgeDescentDataQ2Presentation.Induction.ZeroEdgeDescentData {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) : Type**The zero-edge descent data** (`eq:descendedclass` l.4037–4045 +
    `lem:affinelifting` l.4048–4083, as one choice bundle — the §6.5 choice
    discipline: both R4b keeps take the SAME bundle):
    
    * `D`/`hW` — the zero-edge witness (a normal edge complement, P3-U3); the
      bundle therefore implies `ZeroEdge` (`ZeroEdgeDescentData.zeroEdge`);
    * `Csec` + `hdisj`/`hsup` — the `lem:transgression` splitting coordinates
      `B/T' = V ⋊ C` (`Csec` a complement to the `V`-layer);
    * `gammaK`/`deltaK` — the normalized decomposition data `γ_κ ∈ Z¹(C,V^∨)`,
      `δ_κ ∈ Z²(C,𝔽₂)` of the descended class, with concrete cocycle laws
      (dual action `(c·φ)(v) = φ(c⁻¹·v)`);
    * `eT` — the `lem:affinelifting` class `e ∈ Z²(C,T)` (pullback of
      `B → V⋊C` along the zero section), twisted cocycle law in the
      `hzc`-ready orientation;
    * `mC` — the equivariant-lift correction functions `m_c` of the
      `κ_q⁰`-model (`eq:mquadratic`/`eq:mcoherent` l.4118–4125, stated
      against the bilinear factor set `edgeBaseFactor`).
    
    The deep pinning identity — that a normalized section cocycle of the
    descended double cover `descTarget D hW` equals
    `κ_q⁰-model + Γ_{γ_κ} + inf δ_κ` in the `Csec`-coordinates, and that `eT`
    is the actual zero-section pullback — is owned by the deferred
    transgression unit (`btChild_splits`/`zeroEdgeDescentData_nonempty`,
    design §4.7); until it lands, the coordinated R4b keep must carry that
    pinning alongside this bundle (same discipline as U7's `¬ZeroEdge`
    conditioning living on the future keep). 
          chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K))
      {ΓProfiniteGrp.{0} : ProfiniteGrp.{0}ProfiniteGrp.{u_1} : Type (u_1 + 1)The category of profinite groups. A term of this type consists of a profinite
    set with a topological group structure.
    }
      (BQ2Presentation.BoundaryPackage Γ : Q2Presentation.BoundaryPackageQ2Presentation.BoundaryPackage (Γ : ProfiniteGrp.{0}) : TypeA **boundary package** on a profinite group `Γ`: the uniform Stage-C data of a tame
    quotient, a maximal pro-`2` quotient, and a common unramified character `ℤ₂` through which
    both factor (manuscript Prop 3.14, `prop:compatiblemarking`; plan Turn 4 §6).  The
    compatibility `tameMap ≫ ν_t = ν = pro2Map ≫ ν_2` records that the two markings agree on
    the full unramified coordinate, not merely modulo `2`.  ΓProfiniteGrp.{0})
      (ρQ2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst
      (Q2Presentation.Induction.cChild chief K).snd :
        Q2Presentation.boundaryFramedSurjQ2Presentation.boundaryFramedSurj {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ)
      (Yt : Q2Presentation.BoundaryFramedTarget) (F : Q2Presentation.BoundaryFrame Yt) : TypeThe **boundary-framed surjections** `e_Γ^β(𝒴)` (manuscript `eq:eGamma`): the
    continuous surjections `f : Γ ↠ Y` whose induced map to `H × E` is the prescribed
    `β ∘ b_Γ`, i.e. `q_Y ∘ f = β ∘ b_Γ`.  This is the subtype counted in Theorem 4.2;
    its cardinality is `e_Γ^β(𝒴)`.  BQ2Presentation.BoundaryPackage Γ
          (Q2Presentation.Induction.cChildQ2Presentation.Induction.cChild {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPair**The C-child framed pair** (the carrier of `X_Γ(C)`; manuscript
    `C = Y/K` via `B/M' ≅ C`, `mChildCollapse`). 
              chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.
    
          (Q2Presentation.Induction.cChildQ2Presentation.Induction.cChild {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPair**The C-child framed pair** (the carrier of `X_Γ(C)`; manuscript
    `C = Y/K` via `B/M' ≅ C`, `mChildCollapse`). 
              chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.
    )
      (z↥(Q2Presentation.Induction.edgeZ1 chief K B ρ) w↥(Q2Presentation.Induction.edgeZ1 chief K B ρ) :
        (Q2Presentation.Induction.edgeZ1Q2Presentation.Induction.edgeZ1 {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) {Γ : ProfiniteGrp.{0}}
      (B : Q2Presentation.BoundaryPackage Γ)
      (ρ :
        Q2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst
          (Q2Presentation.Induction.cChild chief K).snd) :
      Submodule (ZMod 2) (↑Γ.toProfinite.toTop → Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K)**`Z¹_ρ(V)`** — the `ZMod 2`-module of continuous (locally constant)
    `V`-valued ρ̄-twisted 1-cocycles: `z(γγ′) = z(γ) + ρ̄(γ)·z(γ′)` (THE
    orientation pin — `aRep_cocycle`'s house orientation; design §2.1's
    `W_ρ`, the engine carrier of the W2 instantiation). 
            chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor BQ2Presentation.BoundaryPackage Γ ρQ2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst
      (Q2Presentation.Induction.cChild chief K).snd)) :
      Q2Presentation.Induction.edgeF0Q2Presentation.Induction.edgeF0 {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K))
      (Z : Q2Presentation.Induction.ZeroEdgeDescentData chief K lam hinv) {Γ : ProfiniteGrp.{0}}
      (B : Q2Presentation.BoundaryPackage Γ)
      (ρ :
        Q2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst
          (Q2Presentation.Induction.cChild chief K).snd)
      (z : ↥(Q2Presentation.Induction.edgeZ1 chief K B ρ)) : ↑Γ.toProfinite.toTop → ↑Γ.toProfinite.toTop → ZMod 2**The quadratic defect leg `F₀(z)`** — the `κ_q⁰`-model graph read
    along the `z`-twisted lift: `F₀(z)(γ,γ′) = f(z γ, ρ̄γ·z γ′) +
    m_{ρ̄γ}(z γ′)` (the `thetaGraph` shape at the source).  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor
          lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K) ZQ2Presentation.Induction.ZeroEdgeDescentData chief K lam hinv BQ2Presentation.BoundaryPackage Γ ρQ2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst
      (Q2Presentation.Induction.cChild chief K).snd (HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`.z↥(Q2Presentation.Induction.edgeZ1 chief K B ρ) +HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`. w↥(Q2Presentation.Induction.edgeZ1 chief K B ρ))HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`. =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`.
        Q2Presentation.Induction.edgeF0Q2Presentation.Induction.edgeF0 {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K))
      (Z : Q2Presentation.Induction.ZeroEdgeDescentData chief K lam hinv) {Γ : ProfiniteGrp.{0}}
      (B : Q2Presentation.BoundaryPackage Γ)
      (ρ :
        Q2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst
          (Q2Presentation.Induction.cChild chief K).snd)
      (z : ↥(Q2Presentation.Induction.edgeZ1 chief K B ρ)) : ↑Γ.toProfinite.toTop → ↑Γ.toProfinite.toTop → ZMod 2**The quadratic defect leg `F₀(z)`** — the `κ_q⁰`-model graph read
    along the `z`-twisted lift: `F₀(z)(γ,γ′) = f(z γ, ρ̄γ·z γ′) +
    m_{ρ̄γ}(z γ′)` (the `thetaGraph` shape at the source).  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p
                KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K) ZQ2Presentation.Induction.ZeroEdgeDescentData chief K lam hinv BQ2Presentation.BoundaryPackage Γ ρQ2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst
      (Q2Presentation.Induction.cChild chief K).snd z↥(Q2Presentation.Induction.edgeZ1 chief K B ρ) +HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`.
              Q2Presentation.Induction.edgeF0Q2Presentation.Induction.edgeF0 {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K))
      (Z : Q2Presentation.Induction.ZeroEdgeDescentData chief K lam hinv) {Γ : ProfiniteGrp.{0}}
      (B : Q2Presentation.BoundaryPackage Γ)
      (ρ :
        Q2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst
          (Q2Presentation.Induction.cChild chief K).snd)
      (z : ↥(Q2Presentation.Induction.edgeZ1 chief K B ρ)) : ↑Γ.toProfinite.toTop → ↑Γ.toProfinite.toTop → ZMod 2**The quadratic defect leg `F₀(z)`** — the `κ_q⁰`-model graph read
    along the `z`-twisted lift: `F₀(z)(γ,γ′) = f(z γ, ρ̄γ·z γ′) +
    m_{ρ̄γ}(z γ′)` (the `thetaGraph` shape at the source). 
                chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K) ZQ2Presentation.Induction.ZeroEdgeDescentData chief K lam hinv BQ2Presentation.BoundaryPackage Γ ρQ2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst
      (Q2Presentation.Induction.cChild chief K).snd w↥(Q2Presentation.Induction.edgeZ1 chief K B ρ) +HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`.
            Q2Presentation.Induction.edgePairQ2Presentation.Induction.edgePair {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K))
      (Z : Q2Presentation.Induction.ZeroEdgeDescentData chief K lam hinv) {Γ : ProfiniteGrp.{0}}
      (B : Q2Presentation.BoundaryPackage Γ)
      (ρ :
        Q2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst
          (Q2Presentation.Induction.cChild chief K).snd)
      (x y : ↥(Q2Presentation.Induction.edgeZ1 chief K B ρ)) : ↑Γ.toProfinite.toTop → ↑Γ.toProfinite.toTop → ZMod 2**The polar pairing cochain** `P(x,y)(γ,γ′) = b(y γ, ρ̄γ·x γ′)` —
    the cross term of the completed square (design §4-N7 bullet 2); its
    `ι`-reading is `edgeQ`'s polar form. 
              chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K) ZQ2Presentation.Induction.ZeroEdgeDescentData chief K lam hinv BQ2Presentation.BoundaryPackage Γ ρQ2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst
      (Q2Presentation.Induction.cChild chief K).snd z↥(Q2Presentation.Induction.edgeZ1 chief K B ρ) w↥(Q2Presentation.Induction.edgeZ1 chief K B ρ) +HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`.
          Q2Presentation.Induction.cochainCoboundaryQ2Presentation.Induction.cochainCoboundary (Γ : ProfiniteGrp.{0}) (u : ↑Γ.toProfinite.toTop → ZMod 2) :
      ↑Γ.toProfinite.toTop → ↑Γ.toProfinite.toTop → ZMod 2The **explicit coboundary** `δu` of a 1-cochain `u` (char-2 inhomogeneous
    differential, trivial action): `δu (γ, γ') = u γ + u γ' + u (γγ')`.  N7's
    completed-square defects and `eq:Qkappadifference` corrections enter the
    calculus through this def. 
            ΓProfiniteGrp.{0} fun γ↑Γ.toProfinite.toTop =>
            ((Q2Presentation.Induction.edgeBaseFactorQ2Presentation.Induction.edgeBaseFactor {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) (hne : lam ≠ 0) :
      Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K →ₗ[ZMod 2]
        Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K →ₗ[ZMod 2] ZMod 2`f`: the bilinear factor set of the base determinant model —
    `f(v,v) = q̄(v)`, `f(v,w) + f(w,v) = b_q̄(v,w)` (hygiene def fixing the
    `FiniteDimensional` instance path once). 
                  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K) )
                (z↥(Q2Presentation.Induction.edgeZ1 chief K B ρ) γ↑Γ.toProfinite.toTop))
              (w↥(Q2Presentation.Induction.edgeZ1 chief K B ρ) γ↑Γ.toProfinite.toTop)
    **The completed-square identity for `F₀`**: `F₀(z+w) = F₀(z) +
    F₀(w) + P(z,w) + δ(γ ↦ f(z γ, w γ))` — the cochain-level
    `prop:phaseidentity` cross-term computation. 
  • theoremdefined in Q2Presentation/Induction/ZeroEdgePointwise.lean
    complete
    theorem Q2Presentation.Induction.edgeLiftableDesc_iff_solvable
      {pQ2Presentation.Induction.FramedPair : Q2Presentation.Induction.FramedPairQ2Presentation.Induction.FramedPair : Type 1A **framed pair** `(𝒴, F)`: a boundary-framed marked target together with a
    boundary frame for it (manuscript Definition 4.1 + `eq:beta`).  This is the index of
    Theorem 4.2: the boundary-framed surjection count `e_Γ^β` is a function of the pair.
    The induction of `sec:induction` ranges over *all* such pairs simultaneously
    ("the induction is stated globally", l.1213), ordered by `|L_Y|`. }
      (chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p : Q2Presentation.Induction.FirstNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor (p : Q2Presentation.Induction.FramedPair) : TypeA non-scalar chief factor of `L_Y` that is **first**: every chief factor strictly
    below it (i.e. with upper term contained in `lower`) is scalar.  This is the manuscript's
    choice `S ◁ P` at l.3616–3623 ("all chief factors below `S` are scalar and `V` is the
    first non-scalar simple factor"), which `lem:collapse` requires for the coprime step
    `[S, Ñ] = 1`.  pQ2Presentation.Induction.FramedPair)
      (KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor :
        Q2Presentation.Induction.KernelMinimalQ2Presentation.Induction.KernelMinimal {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.NonScalarChiefFactor p) : TypeThe manuscript's kernel choice (l.3623): `K ◁ Y`, `K ≤ P`, `KS = P`, and `K` is
    **⊆-minimal** with these properties — stated as: any `Y`-normal `K' ≤ K` still joining
    with `S` to `P` equals `K`.  (This, not leastness among all candidates, is what
    `lem:simplehead` and `lem:collapse` use: both apply it to subgroups of `K`.)  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p.toNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor.toNonScalarChiefFactor {p : Q2Presentation.Induction.FramedPair}
      (self : Q2Presentation.Induction.FirstNonScalarChiefFactor p) : Q2Presentation.Induction.NonScalarChiefFactor p)
      (lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) :
        Module.DualModule.Dual.{u_4, u_5} (R : Type u_4) (M : Type u_5) [Semiring R] [AddCommMonoid M] [Module R M] : Type (max u_5 u_4)The left dual space of an R-module M is the R-module of linear maps `M → R`.  (ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2)
          (Q2Presentation.Lifting.NAddQ2Presentation.Lifting.NAdd {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) : TypeThe additive `F₂`-carrier of an elementary kernel. 
            (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)))
      (hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K) :
        lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`.
          Q2Presentation.Lifting.conjInvDualsQ2Presentation.Lifting.conjInvDuals {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) :
      Submodule (ZMod 2) (Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E))The conjugation-invariant duals `X = (R^∨)^Y = (R^∨)^C` of an
    elementary kernel (consumer spelling of the manuscript's `𝒳_R`,
    §7 l.3720–3723). 
            (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor))
      (ZQ2Presentation.Induction.ZeroEdgeDescentData chief K lam hinv : Q2Presentation.Induction.ZeroEdgeDescentDataQ2Presentation.Induction.ZeroEdgeDescentData {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) : Type**The zero-edge descent data** (`eq:descendedclass` l.4037–4045 +
    `lem:affinelifting` l.4048–4083, as one choice bundle — the §6.5 choice
    discipline: both R4b keeps take the SAME bundle):
    
    * `D`/`hW` — the zero-edge witness (a normal edge complement, P3-U3); the
      bundle therefore implies `ZeroEdge` (`ZeroEdgeDescentData.zeroEdge`);
    * `Csec` + `hdisj`/`hsup` — the `lem:transgression` splitting coordinates
      `B/T' = V ⋊ C` (`Csec` a complement to the `V`-layer);
    * `gammaK`/`deltaK` — the normalized decomposition data `γ_κ ∈ Z¹(C,V^∨)`,
      `δ_κ ∈ Z²(C,𝔽₂)` of the descended class, with concrete cocycle laws
      (dual action `(c·φ)(v) = φ(c⁻¹·v)`);
    * `eT` — the `lem:affinelifting` class `e ∈ Z²(C,T)` (pullback of
      `B → V⋊C` along the zero section), twisted cocycle law in the
      `hzc`-ready orientation;
    * `mC` — the equivariant-lift correction functions `m_c` of the
      `κ_q⁰`-model (`eq:mquadratic`/`eq:mcoherent` l.4118–4125, stated
      against the bilinear factor set `edgeBaseFactor`).
    
    The deep pinning identity — that a normalized section cocycle of the
    descended double cover `descTarget D hW` equals
    `κ_q⁰-model + Γ_{γ_κ} + inf δ_κ` in the `Csec`-coordinates, and that `eT`
    is the actual zero-section pullback — is owned by the deferred
    transgression unit (`btChild_splits`/`zeroEdgeDescentData_nonempty`,
    design §4.7); until it lands, the coordinated R4b keep must carry that
    pinning alongside this bundle (same discipline as U7's `¬ZeroEdge`
    conditioning living on the future keep).  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K))
      {ΓProfiniteGrp.{0} : ProfiniteGrp.{0}ProfiniteGrp.{u_1} : Type (u_1 + 1)The category of profinite groups. A term of this type consists of a profinite
    set with a topological group structure.
    } (BQ2Presentation.BoundaryPackage Γ : Q2Presentation.BoundaryPackageQ2Presentation.BoundaryPackage (Γ : ProfiniteGrp.{0}) : TypeA **boundary package** on a profinite group `Γ`: the uniform Stage-C data of a tame
    quotient, a maximal pro-`2` quotient, and a common unramified character `ℤ₂` through which
    both factor (manuscript Prop 3.14, `prop:compatiblemarking`; plan Turn 4 §6).  The
    compatibility `tameMap ≫ ν_t = ν = pro2Map ≫ ν_2` records that the two markings agree on
    the full unramified coordinate, not merely modulo `2`.  ΓProfiniteGrp.{0})
      (ρQ2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst
      (Q2Presentation.Induction.cChild chief K).snd :
        Q2Presentation.boundaryFramedSurjQ2Presentation.boundaryFramedSurj {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ)
      (Yt : Q2Presentation.BoundaryFramedTarget) (F : Q2Presentation.BoundaryFrame Yt) : TypeThe **boundary-framed surjections** `e_Γ^β(𝒴)` (manuscript `eq:eGamma`): the
    continuous surjections `f : Γ ↠ Y` whose induced map to `H × E` is the prescribed
    `β ∘ b_Γ`, i.e. `q_Y ∘ f = β ∘ b_Γ`.  This is the subtype counted in Theorem 4.2;
    its cardinality is `e_Γ^β(𝒴)`.  BQ2Presentation.BoundaryPackage Γ
          (Q2Presentation.Induction.cChildQ2Presentation.Induction.cChild {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPair**The C-child framed pair** (the carrier of `X_Γ(C)`; manuscript
    `C = Y/K` via `B/M' ≅ C`, `mChildCollapse`).  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.
    
          (Q2Presentation.Induction.cChildQ2Presentation.Induction.cChild {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPair**The C-child framed pair** (the carrier of `X_Γ(C)`; manuscript
    `C = Y/K` via `B/M' ≅ C`, `mChildCollapse`).  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.
    )
      (PQ2Presentation.Induction.ZeroEdgePinning chief K lam hinv Z : Q2Presentation.Induction.ZeroEdgePinningQ2Presentation.Induction.ZeroEdgePinning {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K))
      (Z : Q2Presentation.Induction.ZeroEdgeDescentData chief K lam hinv) : Type**The base-identity pinning of a bundle `Z`** — the §13 deferral's
    third item, concrete.  In the `Z.Csec`-coordinates (a multiplicative
    section `s`, so the section cochain `η` vanishes), the normalized
    section cocycle of the ACTUAL descended cover `descTarget Z.D Z.hW` at
    the total section `(v,c) ↦ ℓ̂(v)·σ̂(c)` is
    `κ((v,c),(w,d)) = g(v,cw) + n_c(w) + e(c,d)` with `g/n/e` the three deck
    readings; the fields pin
    
    * `g = edgeBaseFactor` (`fib_*`): the fibre part is the `κ_q⁰`-model
      factor set — `eq:basekappacochain`'s fibre normalization;
    * `n_c = Z.mC c + Z.gammaK c ∘ (c·)` (`conj_*`): the conjugation defect
      is the model correction plus the `Γ_{γ_κ}`-term (`eq:Gammagamma`);
    * `e = Z.deltaK` (`sec_*`): the pure base part is the inflated scalar —
    
    i.e. `κ = κ_q⁰ + Γ_{γ_κ} + inf δ_κ` as normalized cochains,
    `eq:descendedclass` l.4037–4045 ON THE NOSE; and `tau_eT` pins `Z.eT` as
    the actual zero-section pullback of `B → V⋊C` along the `Csec`-section
    (`lem:affinelifting` l.4050–4056).  `Nonempty (ZeroEdgePinning … Z)` is
    the pinning hypothesis the FUTURE coordinated R4b keep must carry
    alongside `Z` (both U8/U9 zero-edge keep docstrings + §13 note 6).  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K) ZQ2Presentation.Induction.ZeroEdgeDescentData chief K lam hinv)
      (z↥(Q2Presentation.Induction.edgeZ1 chief K B ρ) : (Q2Presentation.Induction.edgeZ1Q2Presentation.Induction.edgeZ1 {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) {Γ : ProfiniteGrp.{0}}
      (B : Q2Presentation.BoundaryPackage Γ)
      (ρ :
        Q2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst
          (Q2Presentation.Induction.cChild chief K).snd) :
      Submodule (ZMod 2) (↑Γ.toProfinite.toTop → Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K)**`Z¹_ρ(V)`** — the `ZMod 2`-module of continuous (locally constant)
    `V`-valued ρ̄-twisted 1-cocycles: `z(γγ′) = z(γ) + ρ̄(γ)·z(γ′)` (THE
    orientation pin — `aRep_cocycle`'s house orientation; design §2.1's
    `W_ρ`, the engine carrier of the W2 instantiation).  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor BQ2Presentation.BoundaryPackage Γ ρQ2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst
      (Q2Presentation.Induction.cChild chief K).snd)) :
      Q2Presentation.Induction.edgeLiftableDescQ2Presentation.Induction.edgeLiftableDesc {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K))
      (Z : Q2Presentation.Induction.ZeroEdgeDescentData chief K lam hinv) {Γ : ProfiniteGrp.{0}}
      (B : Q2Presentation.BoundaryPackage Γ)
      (ρ :
        Q2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst
          (Q2Presentation.Induction.cChild chief K).snd)
      (P : Q2Presentation.Induction.ZeroEdgePinning chief K lam hinv Z)
      (z : ↥(Q2Presentation.Induction.edgeZ1 chief K B ρ)) : Prop**Desc-liftability of the `z`-twisted lift** — N1's
    `descLiftableWeak` shape at the pinned `V⋊C`-lift `γ ↦ vInG(z γ)·s(ρ̄γ)`
    (= `btLiftVal (edgeTrivial … P.s … z)`, `edgeTrivial_apply`).  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K) ZQ2Presentation.Induction.ZeroEdgeDescentData chief K lam hinv BQ2Presentation.BoundaryPackage Γ ρQ2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst
      (Q2Presentation.Induction.cChild chief K).snd PQ2Presentation.Induction.ZeroEdgePinning chief K lam hinv Z z↥(Q2Presentation.Induction.edgeZ1 chief K B ρ) Iff (a b : Prop) : PropIf and only if, or logical bi-implication. `a ↔ b` means that `a` implies `b` and vice versa.
    By `propext`, this implies that `a` and `b` are equal and hence any expression involving `a`
    is equivalent to the corresponding expression with `b` instead.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `↔` in identifiers is `iff`.
    
     * The recommended spelling of `<->` in identifiers is `iff` (prefer `↔` over `<->`).
        Q2Presentation.Induction.CochainSolvableQ2Presentation.Induction.CochainSolvable (Γ : ProfiniteGrp.{0})
      (F : ↑Γ.toProfinite.toTop → ↑Γ.toProfinite.toTop → ZMod 2) : Prop**Cochain solvability** (design §4-N2): the 2-cochain equation of `F` on
    the profinite source `Γ` has a continuous (= locally constant, `Γ` profinite
    and `𝔽₂` discrete) solution — `∃ c : Γ → 𝔽₂` continuous with
    `c (γγ') = c γ + c γ' + F γ γ'`.  This is the SOLVABILITY INDICATOR of the
    normalized-cochain house style: no cohomology carrier is ever formed, and
    `F` need not be a cocycle for the Prop to be well-formed (the calculus
    below restricts to cocycles exactly where the mathematics does).  ΓProfiniteGrp.{0}
          (Q2Presentation.Induction.edgeDefectFullQ2Presentation.Induction.edgeDefectFull {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K))
      (Z : Q2Presentation.Induction.ZeroEdgeDescentData chief K lam hinv) {Γ : ProfiniteGrp.{0}}
      (B : Q2Presentation.BoundaryPackage Γ)
      (ρ :
        Q2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst
          (Q2Presentation.Induction.cChild chief K).snd)
      (z : ↥(Q2Presentation.Induction.edgeZ1 chief K B ρ)) : ↑Γ.toProfinite.toTop → ↑Γ.toProfinite.toTop → ZMod 2**The full defect cochain `F(z)`** of the `z`-twisted lift through
    `descTarget` (`eq:descendedclass` along the graph): `F₀(z) + Γ_{γ_κ}(z)
    + ρ*δ_κ` — the `l/ε`-split of `eq:Qkappadifference` (l.2158–2163) is
    this sum's shape, and the pinned-lift bridge below reads it off the
    actual cover.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K) ZQ2Presentation.Induction.ZeroEdgeDescentData chief K lam hinv BQ2Presentation.BoundaryPackage Γ ρQ2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst
      (Q2Presentation.Induction.cChild chief K).snd z↥(Q2Presentation.Induction.edgeZ1 chief K B ρ))
    theorem Q2Presentation.Induction.edgeLiftableDesc_iff_solvable
      {pQ2Presentation.Induction.FramedPair :
        Q2Presentation.Induction.FramedPairQ2Presentation.Induction.FramedPair : Type 1A **framed pair** `(𝒴, F)`: a boundary-framed marked target together with a
    boundary frame for it (manuscript Definition 4.1 + `eq:beta`).  This is the index of
    Theorem 4.2: the boundary-framed surjection count `e_Γ^β` is a function of the pair.
    The induction of `sec:induction` ranges over *all* such pairs simultaneously
    ("the induction is stated globally", l.1213), ordered by `|L_Y|`. }
      (chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p :
        Q2Presentation.Induction.FirstNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor (p : Q2Presentation.Induction.FramedPair) : TypeA non-scalar chief factor of `L_Y` that is **first**: every chief factor strictly
    below it (i.e. with upper term contained in `lower`) is scalar.  This is the manuscript's
    choice `S ◁ P` at l.3616–3623 ("all chief factors below `S` are scalar and `V` is the
    first non-scalar simple factor"), which `lem:collapse` requires for the coprime step
    `[S, Ñ] = 1`. 
          pQ2Presentation.Induction.FramedPair)
      (KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor :
        Q2Presentation.Induction.KernelMinimalQ2Presentation.Induction.KernelMinimal {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.NonScalarChiefFactor p) : TypeThe manuscript's kernel choice (l.3623): `K ◁ Y`, `K ≤ P`, `KS = P`, and `K` is
    **⊆-minimal** with these properties — stated as: any `Y`-normal `K' ≤ K` still joining
    with `S` to `P` equals `K`.  (This, not leastness among all candidates, is what
    `lem:simplehead` and `lem:collapse` use: both apply it to subgroups of `K`.) 
          chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p.toNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor.toNonScalarChiefFactor {p : Q2Presentation.Induction.FramedPair}
      (self : Q2Presentation.Induction.FirstNonScalarChiefFactor p) : Q2Presentation.Induction.NonScalarChiefFactor p)
      (lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) :
        Module.DualModule.Dual.{u_4, u_5} (R : Type u_4) (M : Type u_5) [Semiring R] [AddCommMonoid M] [Module R M] : Type (max u_5 u_4)The left dual space of an R-module M is the R-module of linear maps `M → R`.  (ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2)
          (Q2Presentation.Lifting.NAddQ2Presentation.Lifting.NAdd {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) : TypeThe additive `F₂`-carrier of an elementary kernel. 
            (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian. 
              chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)))
      (hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K) :
        lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`.
          Q2Presentation.Lifting.conjInvDualsQ2Presentation.Lifting.conjInvDuals {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) :
      Submodule (ZMod 2) (Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E))The conjugation-invariant duals `X = (R^∨)^Y = (R^∨)^C` of an
    elementary kernel (consumer spelling of the manuscript's `𝒳_R`,
    §7 l.3720–3723). 
            (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian. 
              chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor))
      (ZQ2Presentation.Induction.ZeroEdgeDescentData chief K lam hinv :
        Q2Presentation.Induction.ZeroEdgeDescentDataQ2Presentation.Induction.ZeroEdgeDescentData {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) : Type**The zero-edge descent data** (`eq:descendedclass` l.4037–4045 +
    `lem:affinelifting` l.4048–4083, as one choice bundle — the §6.5 choice
    discipline: both R4b keeps take the SAME bundle):
    
    * `D`/`hW` — the zero-edge witness (a normal edge complement, P3-U3); the
      bundle therefore implies `ZeroEdge` (`ZeroEdgeDescentData.zeroEdge`);
    * `Csec` + `hdisj`/`hsup` — the `lem:transgression` splitting coordinates
      `B/T' = V ⋊ C` (`Csec` a complement to the `V`-layer);
    * `gammaK`/`deltaK` — the normalized decomposition data `γ_κ ∈ Z¹(C,V^∨)`,
      `δ_κ ∈ Z²(C,𝔽₂)` of the descended class, with concrete cocycle laws
      (dual action `(c·φ)(v) = φ(c⁻¹·v)`);
    * `eT` — the `lem:affinelifting` class `e ∈ Z²(C,T)` (pullback of
      `B → V⋊C` along the zero section), twisted cocycle law in the
      `hzc`-ready orientation;
    * `mC` — the equivariant-lift correction functions `m_c` of the
      `κ_q⁰`-model (`eq:mquadratic`/`eq:mcoherent` l.4118–4125, stated
      against the bilinear factor set `edgeBaseFactor`).
    
    The deep pinning identity — that a normalized section cocycle of the
    descended double cover `descTarget D hW` equals
    `κ_q⁰-model + Γ_{γ_κ} + inf δ_κ` in the `Csec`-coordinates, and that `eT`
    is the actual zero-section pullback — is owned by the deferred
    transgression unit (`btChild_splits`/`zeroEdgeDescentData_nonempty`,
    design §4.7); until it lands, the coordinated R4b keep must carry that
    pinning alongside this bundle (same discipline as U7's `¬ZeroEdge`
    conditioning living on the future keep). 
          chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K))
      {ΓProfiniteGrp.{0} : ProfiniteGrp.{0}ProfiniteGrp.{u_1} : Type (u_1 + 1)The category of profinite groups. A term of this type consists of a profinite
    set with a topological group structure.
    }
      (BQ2Presentation.BoundaryPackage Γ : Q2Presentation.BoundaryPackageQ2Presentation.BoundaryPackage (Γ : ProfiniteGrp.{0}) : TypeA **boundary package** on a profinite group `Γ`: the uniform Stage-C data of a tame
    quotient, a maximal pro-`2` quotient, and a common unramified character `ℤ₂` through which
    both factor (manuscript Prop 3.14, `prop:compatiblemarking`; plan Turn 4 §6).  The
    compatibility `tameMap ≫ ν_t = ν = pro2Map ≫ ν_2` records that the two markings agree on
    the full unramified coordinate, not merely modulo `2`.  ΓProfiniteGrp.{0})
      (ρQ2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst
      (Q2Presentation.Induction.cChild chief K).snd :
        Q2Presentation.boundaryFramedSurjQ2Presentation.boundaryFramedSurj {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ)
      (Yt : Q2Presentation.BoundaryFramedTarget) (F : Q2Presentation.BoundaryFrame Yt) : TypeThe **boundary-framed surjections** `e_Γ^β(𝒴)` (manuscript `eq:eGamma`): the
    continuous surjections `f : Γ ↠ Y` whose induced map to `H × E` is the prescribed
    `β ∘ b_Γ`, i.e. `q_Y ∘ f = β ∘ b_Γ`.  This is the subtype counted in Theorem 4.2;
    its cardinality is `e_Γ^β(𝒴)`.  BQ2Presentation.BoundaryPackage Γ
          (Q2Presentation.Induction.cChildQ2Presentation.Induction.cChild {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPair**The C-child framed pair** (the carrier of `X_Γ(C)`; manuscript
    `C = Y/K` via `B/M' ≅ C`, `mChildCollapse`). 
              chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.
    
          (Q2Presentation.Induction.cChildQ2Presentation.Induction.cChild {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPair**The C-child framed pair** (the carrier of `X_Γ(C)`; manuscript
    `C = Y/K` via `B/M' ≅ C`, `mChildCollapse`). 
              chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.
    )
      (PQ2Presentation.Induction.ZeroEdgePinning chief K lam hinv Z :
        Q2Presentation.Induction.ZeroEdgePinningQ2Presentation.Induction.ZeroEdgePinning {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K))
      (Z : Q2Presentation.Induction.ZeroEdgeDescentData chief K lam hinv) : Type**The base-identity pinning of a bundle `Z`** — the §13 deferral's
    third item, concrete.  In the `Z.Csec`-coordinates (a multiplicative
    section `s`, so the section cochain `η` vanishes), the normalized
    section cocycle of the ACTUAL descended cover `descTarget Z.D Z.hW` at
    the total section `(v,c) ↦ ℓ̂(v)·σ̂(c)` is
    `κ((v,c),(w,d)) = g(v,cw) + n_c(w) + e(c,d)` with `g/n/e` the three deck
    readings; the fields pin
    
    * `g = edgeBaseFactor` (`fib_*`): the fibre part is the `κ_q⁰`-model
      factor set — `eq:basekappacochain`'s fibre normalization;
    * `n_c = Z.mC c + Z.gammaK c ∘ (c·)` (`conj_*`): the conjugation defect
      is the model correction plus the `Γ_{γ_κ}`-term (`eq:Gammagamma`);
    * `e = Z.deltaK` (`sec_*`): the pure base part is the inflated scalar —
    
    i.e. `κ = κ_q⁰ + Γ_{γ_κ} + inf δ_κ` as normalized cochains,
    `eq:descendedclass` l.4037–4045 ON THE NOSE; and `tau_eT` pins `Z.eT` as
    the actual zero-section pullback of `B → V⋊C` along the `Csec`-section
    (`lem:affinelifting` l.4050–4056).  `Nonempty (ZeroEdgePinning … Z)` is
    the pinning hypothesis the FUTURE coordinated R4b keep must carry
    alongside `Z` (both U8/U9 zero-edge keep docstrings + §13 note 6). 
          chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K) ZQ2Presentation.Induction.ZeroEdgeDescentData chief K lam hinv)
      (z↥(Q2Presentation.Induction.edgeZ1 chief K B ρ) :
        (Q2Presentation.Induction.edgeZ1Q2Presentation.Induction.edgeZ1 {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) {Γ : ProfiniteGrp.{0}}
      (B : Q2Presentation.BoundaryPackage Γ)
      (ρ :
        Q2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst
          (Q2Presentation.Induction.cChild chief K).snd) :
      Submodule (ZMod 2) (↑Γ.toProfinite.toTop → Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K)**`Z¹_ρ(V)`** — the `ZMod 2`-module of continuous (locally constant)
    `V`-valued ρ̄-twisted 1-cocycles: `z(γγ′) = z(γ) + ρ̄(γ)·z(γ′)` (THE
    orientation pin — `aRep_cocycle`'s house orientation; design §2.1's
    `W_ρ`, the engine carrier of the W2 instantiation). 
            chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor BQ2Presentation.BoundaryPackage Γ ρQ2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst
      (Q2Presentation.Induction.cChild chief K).snd)) :
      Q2Presentation.Induction.edgeLiftableDescQ2Presentation.Induction.edgeLiftableDesc {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K))
      (Z : Q2Presentation.Induction.ZeroEdgeDescentData chief K lam hinv) {Γ : ProfiniteGrp.{0}}
      (B : Q2Presentation.BoundaryPackage Γ)
      (ρ :
        Q2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst
          (Q2Presentation.Induction.cChild chief K).snd)
      (P : Q2Presentation.Induction.ZeroEdgePinning chief K lam hinv Z)
      (z : ↥(Q2Presentation.Induction.edgeZ1 chief K B ρ)) : Prop**Desc-liftability of the `z`-twisted lift** — N1's
    `descLiftableWeak` shape at the pinned `V⋊C`-lift `γ ↦ vInG(z γ)·s(ρ̄γ)`
    (= `btLiftVal (edgeTrivial … P.s … z)`, `edgeTrivial_apply`). 
          chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K) ZQ2Presentation.Induction.ZeroEdgeDescentData chief K lam hinv BQ2Presentation.BoundaryPackage Γ ρQ2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst
      (Q2Presentation.Induction.cChild chief K).snd PQ2Presentation.Induction.ZeroEdgePinning chief K lam hinv Z z↥(Q2Presentation.Induction.edgeZ1 chief K B ρ) Iff (a b : Prop) : PropIf and only if, or logical bi-implication. `a ↔ b` means that `a` implies `b` and vice versa.
    By `propext`, this implies that `a` and `b` are equal and hence any expression involving `a`
    is equivalent to the corresponding expression with `b` instead.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `↔` in identifiers is `iff`.
    
     * The recommended spelling of `<->` in identifiers is `iff` (prefer `↔` over `<->`).
        Q2Presentation.Induction.CochainSolvableQ2Presentation.Induction.CochainSolvable (Γ : ProfiniteGrp.{0})
      (F : ↑Γ.toProfinite.toTop → ↑Γ.toProfinite.toTop → ZMod 2) : Prop**Cochain solvability** (design §4-N2): the 2-cochain equation of `F` on
    the profinite source `Γ` has a continuous (= locally constant, `Γ` profinite
    and `𝔽₂` discrete) solution — `∃ c : Γ → 𝔽₂` continuous with
    `c (γγ') = c γ + c γ' + F γ γ'`.  This is the SOLVABILITY INDICATOR of the
    normalized-cochain house style: no cohomology carrier is ever formed, and
    `F` need not be a cocycle for the Prop to be well-formed (the calculus
    below restricts to cocycles exactly where the mathematics does). 
          ΓProfiniteGrp.{0}
          (Q2Presentation.Induction.edgeDefectFullQ2Presentation.Induction.edgeDefectFull {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K))
      (Z : Q2Presentation.Induction.ZeroEdgeDescentData chief K lam hinv) {Γ : ProfiniteGrp.{0}}
      (B : Q2Presentation.BoundaryPackage Γ)
      (ρ :
        Q2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst
          (Q2Presentation.Induction.cChild chief K).snd)
      (z : ↥(Q2Presentation.Induction.edgeZ1 chief K B ρ)) : ↑Γ.toProfinite.toTop → ↑Γ.toProfinite.toTop → ZMod 2**The full defect cochain `F(z)`** of the `z`-twisted lift through
    `descTarget` (`eq:descendedclass` along the graph): `F₀(z) + Γ_{γ_κ}(z)
    + ρ*δ_κ` — the `l/ε`-split of `eq:Qkappadifference` (l.2158–2163) is
    this sum's shape, and the pinned-lift bridge below reads it off the
    actual cover. 
            chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K) ZQ2Presentation.Induction.ZeroEdgeDescentData chief K lam hinv BQ2Presentation.BoundaryPackage Γ ρQ2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst
      (Q2Presentation.Induction.cChild chief K).snd z↥(Q2Presentation.Induction.edgeZ1 chief K B ρ))
    **The bridge (design §4-N7 bullet 1, exit)**: the `z`-twisted lift
    descends through `descTarget` iff its full defect 2-cocycle equation is
    continuously solvable — `prop:phaseidentity`'s carrier statement,
    dissolved into the normalized-cochain calculus. 
  • theoremdefined in Q2Presentation/Induction/ZeroEdgePointwise.lean
    complete
    theorem Q2Presentation.Induction.edgePhaseBridge
      {pQ2Presentation.Induction.FramedPair : Q2Presentation.Induction.FramedPairQ2Presentation.Induction.FramedPair : Type 1A **framed pair** `(𝒴, F)`: a boundary-framed marked target together with a
    boundary frame for it (manuscript Definition 4.1 + `eq:beta`).  This is the index of
    Theorem 4.2: the boundary-framed surjection count `e_Γ^β` is a function of the pair.
    The induction of `sec:induction` ranges over *all* such pairs simultaneously
    ("the induction is stated globally", l.1213), ordered by `|L_Y|`. }
      (chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p : Q2Presentation.Induction.FirstNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor (p : Q2Presentation.Induction.FramedPair) : TypeA non-scalar chief factor of `L_Y` that is **first**: every chief factor strictly
    below it (i.e. with upper term contained in `lower`) is scalar.  This is the manuscript's
    choice `S ◁ P` at l.3616–3623 ("all chief factors below `S` are scalar and `V` is the
    first non-scalar simple factor"), which `lem:collapse` requires for the coprime step
    `[S, Ñ] = 1`.  pQ2Presentation.Induction.FramedPair)
      (KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor :
        Q2Presentation.Induction.KernelMinimalQ2Presentation.Induction.KernelMinimal {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.NonScalarChiefFactor p) : TypeThe manuscript's kernel choice (l.3623): `K ◁ Y`, `K ≤ P`, `KS = P`, and `K` is
    **⊆-minimal** with these properties — stated as: any `Y`-normal `K' ≤ K` still joining
    with `S` to `P` equals `K`.  (This, not leastness among all candidates, is what
    `lem:simplehead` and `lem:collapse` use: both apply it to subgroups of `K`.)  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p.toNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor.toNonScalarChiefFactor {p : Q2Presentation.Induction.FramedPair}
      (self : Q2Presentation.Induction.FirstNonScalarChiefFactor p) : Q2Presentation.Induction.NonScalarChiefFactor p)
      (lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) :
        Module.DualModule.Dual.{u_4, u_5} (R : Type u_4) (M : Type u_5) [Semiring R] [AddCommMonoid M] [Module R M] : Type (max u_5 u_4)The left dual space of an R-module M is the R-module of linear maps `M → R`.  (ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2)
          (Q2Presentation.Lifting.NAddQ2Presentation.Lifting.NAdd {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) : TypeThe additive `F₂`-carrier of an elementary kernel. 
            (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)))
      (hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K) :
        lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`.
          Q2Presentation.Lifting.conjInvDualsQ2Presentation.Lifting.conjInvDuals {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) :
      Submodule (ZMod 2) (Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E))The conjugation-invariant duals `X = (R^∨)^Y = (R^∨)^C` of an
    elementary kernel (consumer spelling of the manuscript's `𝒳_R`,
    §7 l.3720–3723). 
            (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor))
      (ZQ2Presentation.Induction.ZeroEdgeDescentData chief K lam hinv : Q2Presentation.Induction.ZeroEdgeDescentDataQ2Presentation.Induction.ZeroEdgeDescentData {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) : Type**The zero-edge descent data** (`eq:descendedclass` l.4037–4045 +
    `lem:affinelifting` l.4048–4083, as one choice bundle — the §6.5 choice
    discipline: both R4b keeps take the SAME bundle):
    
    * `D`/`hW` — the zero-edge witness (a normal edge complement, P3-U3); the
      bundle therefore implies `ZeroEdge` (`ZeroEdgeDescentData.zeroEdge`);
    * `Csec` + `hdisj`/`hsup` — the `lem:transgression` splitting coordinates
      `B/T' = V ⋊ C` (`Csec` a complement to the `V`-layer);
    * `gammaK`/`deltaK` — the normalized decomposition data `γ_κ ∈ Z¹(C,V^∨)`,
      `δ_κ ∈ Z²(C,𝔽₂)` of the descended class, with concrete cocycle laws
      (dual action `(c·φ)(v) = φ(c⁻¹·v)`);
    * `eT` — the `lem:affinelifting` class `e ∈ Z²(C,T)` (pullback of
      `B → V⋊C` along the zero section), twisted cocycle law in the
      `hzc`-ready orientation;
    * `mC` — the equivariant-lift correction functions `m_c` of the
      `κ_q⁰`-model (`eq:mquadratic`/`eq:mcoherent` l.4118–4125, stated
      against the bilinear factor set `edgeBaseFactor`).
    
    The deep pinning identity — that a normalized section cocycle of the
    descended double cover `descTarget D hW` equals
    `κ_q⁰-model + Γ_{γ_κ} + inf δ_κ` in the `Csec`-coordinates, and that `eT`
    is the actual zero-section pullback — is owned by the deferred
    transgression unit (`btChild_splits`/`zeroEdgeDescentData_nonempty`,
    design §4.7); until it lands, the coordinated R4b keep must carry that
    pinning alongside this bundle (same discipline as U7's `¬ZeroEdge`
    conditioning living on the future keep).  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K))
      {ΓProfiniteGrp.{0} : ProfiniteGrp.{0}ProfiniteGrp.{u_1} : Type (u_1 + 1)The category of profinite groups. A term of this type consists of a profinite
    set with a topological group structure.
    } (BQ2Presentation.BoundaryPackage Γ : Q2Presentation.BoundaryPackageQ2Presentation.BoundaryPackage (Γ : ProfiniteGrp.{0}) : TypeA **boundary package** on a profinite group `Γ`: the uniform Stage-C data of a tame
    quotient, a maximal pro-`2` quotient, and a common unramified character `ℤ₂` through which
    both factor (manuscript Prop 3.14, `prop:compatiblemarking`; plan Turn 4 §6).  The
    compatibility `tameMap ≫ ν_t = ν = pro2Map ≫ ν_2` records that the two markings agree on
    the full unramified coordinate, not merely modulo `2`.  ΓProfiniteGrp.{0})
      (ρQ2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst
      (Q2Presentation.Induction.cChild chief K).snd :
        Q2Presentation.boundaryFramedSurjQ2Presentation.boundaryFramedSurj {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ)
      (Yt : Q2Presentation.BoundaryFramedTarget) (F : Q2Presentation.BoundaryFrame Yt) : TypeThe **boundary-framed surjections** `e_Γ^β(𝒴)` (manuscript `eq:eGamma`): the
    continuous surjections `f : Γ ↠ Y` whose induced map to `H × E` is the prescribed
    `β ∘ b_Γ`, i.e. `q_Y ∘ f = β ∘ b_Γ`.  This is the subtype counted in Theorem 4.2;
    its cardinality is `e_Γ^β(𝒴)`.  BQ2Presentation.BoundaryPackage Γ
          (Q2Presentation.Induction.cChildQ2Presentation.Induction.cChild {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPair**The C-child framed pair** (the carrier of `X_Γ(C)`; manuscript
    `C = Y/K` via `B/M' ≅ C`, `mChildCollapse`).  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.
    
          (Q2Presentation.Induction.cChildQ2Presentation.Induction.cChild {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPair**The C-child framed pair** (the carrier of `X_Γ(C)`; manuscript
    `C = Y/K` via `B/M' ≅ C`, `mChildCollapse`).  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.
    )
      (tokQ2Presentation.Induction.IotaToken Γ : Q2Presentation.Induction.IotaTokenQ2Presentation.Induction.IotaToken (Γ : ProfiniteGrp.{0}) : Prop**The per-source `ι`-additivity token** (design §4-N2; the `h² ≤ 1`
    token): at the source `Γ`, any two UNSOLVABLE normalized continuous
    2-cocycle equations have solvable sum.  This is the cochain-level spelling
    of `dim H²(Γ, 𝔽₂) ≤ 1` — stated with no cohomology carriers.  Consumed as
    a hypothesis by the N7 engine instantiation; discharged per source by N3
    (`IotaToken GQ2Profinite`, floor F-ι-loc: NSW (7.2.6) at the trivial
    module + (7.3.1)) and N4 (`GammaA`-bases, floor F-ι-cand:
    `prop:chainmap` l.1687 + `lem:finitewordstokes`).  Together with the free
    half (`cochainSolvable_add`, `not_cochainSolvable_add_left/right`) it
    makes the case table of `iotaRead` on cocycle sums total.  ΓProfiniteGrp.{0})
      (chi↥(Q2Presentation.Induction.XT chief K) : (Q2Presentation.Induction.XTQ2Presentation.Induction.XT {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Submodule (ZMod 2) (Module.Dual (ZMod 2) ↥(Q2Presentation.Induction.towerT K))**`𝒳_T = (T^∨)^C`**: the `C`-invariant duals of the radical layer,
    against the proven restricted action `sec7ActOnTHom`.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)) :
      Q2Presentation.Quadratic.Dickson.signCharQ2Presentation.Quadratic.Dickson.signChar (a : ZMod 2) : ℤThe sign character `χ(0) = 1`, `χ(1) = -1`. 
          (HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`.((Module.evalEquivModule.evalEquiv.{u_3, u_4} (R : Type u_3) (M : Type u_4) [CommSemiring R] [AddCommMonoid M] [Module R M]
      [Module.IsReflexive R M] : M ≃ₗ[R] Module.Dual R (Module.Dual R M)The bijection between a reflexive module and its double dual, bundled as a `LinearEquiv`.  (ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2)
                    (Q2Presentation.Induction.XTQ2Presentation.Induction.XT {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Submodule (ZMod 2) (Module.Dual (ZMod 2) ↥(Q2Presentation.Induction.towerT K))**`𝒳_T = (T^∨)^C`**: the `C`-invariant duals of the radical layer,
    against the proven restricted action `sec7ActOnTHom`.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor))
                  chi↥(Q2Presentation.Induction.XT chief K))
                (Q2Presentation.Induction.edgeKappaQ2Presentation.Induction.edgeKappa {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K))
      (Z : Q2Presentation.Induction.ZeroEdgeDescentData chief K lam hinv) {Γ : ProfiniteGrp.{0}}
      (B : Q2Presentation.BoundaryPackage Γ)
      (ρ :
        Q2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst
          (Q2Presentation.Induction.cChild chief K).snd)
      (tok : Q2Presentation.Induction.IotaToken Γ) : Module.Dual (ZMod 2) ↥(Q2Presentation.Induction.XT chief K)**The constraint target `κ₀ ∈ 𝒳_T^∨`** (the `ρ*e`-class read).  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K) ZQ2Presentation.Induction.ZeroEdgeDescentData chief K lam hinv BQ2Presentation.BoundaryPackage Γ ρQ2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst
      (Q2Presentation.Induction.cChild chief K).snd
                  tokQ2Presentation.Induction.IotaToken Γ) +HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`.
              Q2Presentation.Induction.edgeEpsReadQ2Presentation.Induction.edgeEpsRead {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K))
      (Z : Q2Presentation.Induction.ZeroEdgeDescentData chief K lam hinv) {Γ : ProfiniteGrp.{0}}
      (B : Q2Presentation.BoundaryPackage Γ)
      (ρ :
        Q2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst
          (Q2Presentation.Induction.cChild chief K).snd) :
      ZMod 2The constant slot `ε₀ = ι_Γ(ρ*δ_κ)`.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K) ZQ2Presentation.Induction.ZeroEdgeDescentData chief K lam hinv BQ2Presentation.BoundaryPackage Γ ρQ2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst
      (Q2Presentation.Induction.cChild chief K).snd +HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`.
            (Q2Presentation.Induction.edgeQQ2Presentation.Induction.edgeQ {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K))
      (Z : Q2Presentation.Induction.ZeroEdgeDescentData chief K lam hinv) {Γ : ProfiniteGrp.{0}}
      (B : Q2Presentation.BoundaryPackage Γ)
      (ρ :
        Q2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst
          (Q2Presentation.Induction.cChild chief K).snd)
      (tok : Q2Presentation.Induction.IotaToken Γ) :
      Q2Presentation.Quadratic.QuadF2 ↥(Q2Presentation.Induction.edgeZ1 chief K B ρ)**`edgeQ` — the P6-engine form at `W_ρ = Z¹_ρ(V)`** (design §2.1,
    the W2 instantiation): form `= ι∘F₀`, polar `= ι∘P`; quadratic law from
    the completed-square cochain identity plus the token.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K) ZQ2Presentation.Induction.ZeroEdgeDescentData chief K lam hinv BQ2Presentation.BoundaryPackage Γ ρQ2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst
      (Q2Presentation.Induction.cChild chief K).snd tokQ2Presentation.Induction.IotaToken Γ).formQ2Presentation.Quadratic.QuadF2.form.{u_2} {V : Type u_2} [AddCommGroup V] [Module (ZMod 2) V]
      (self : Q2Presentation.Quadratic.QuadF2 V) : V → ZMod 2the quadratic map `q : V → F₂` 
              (Q2Presentation.Induction.edgeAQ2Presentation.Induction.edgeA {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K))
      (Z : Q2Presentation.Induction.ZeroEdgeDescentData chief K lam hinv) {Γ : ProfiniteGrp.{0}}
      (B : Q2Presentation.BoundaryPackage Γ)
      (ρ :
        Q2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst
          (Q2Presentation.Induction.cChild chief K).snd)
      (chi : ↥(Q2Presentation.Induction.XT chief K)) : ↥(Q2Presentation.Induction.edgeZ1 chief K B ρ)**`a_{χ,κ}` pulled to the cocycle level** (design §4-N7 bullet 3):
    `γ ↦ a_{χ,κ}(ρ̄γ)` is a `ρ̄`-twisted cocycle — the engine's
    representing vector at `χ`.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K) ZQ2Presentation.Induction.ZeroEdgeDescentData chief K lam hinv BQ2Presentation.BoundaryPackage Γ ρQ2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst
      (Q2Presentation.Induction.cChild chief K).snd chi↥(Q2Presentation.Induction.XT chief K)))HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`. =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`.
        Q2Presentation.Induction.iotaSignQ2Presentation.Induction.iotaSign (Γ : ProfiniteGrp.{0}) (F : ↑Γ.toProfinite.toTop → ↑Γ.toProfinite.toTop → ZMod 2) : ℤ**The `±1`-indicator** of solvability in `ℤ`: `+1` if solvable, `−1`
    if not — the summand shape of `eq:recursionR5a`'s `s_Γ(ζ) = Σ_ρ (±1)`
    absorption (`sGammaZ_eq` downstream).  ΓProfiniteGrp.{0}
          (Q2Presentation.Induction.pullCochainQ2Presentation.Induction.pullCochain (Yt : Q2Presentation.BoundaryFramedTarget) (zeta : Yt.Y → Yt.Y → ZMod 2)
      {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (F : Q2Presentation.BoundaryFrame Yt)
      (g : Q2Presentation.boundaryFramedSurj B Yt F) : ↑Γ.toProfinite.toTop → ↑Γ.toProfinite.toTop → ZMod 2**The pulled-back 2-cochain `g*ζ`** of a boundary-framed surjection
    `g : Γ ↠ Y` — the source-side equation whose solvability the ζ-cover lift
    indicator reads (`lem:phasecover` l.4377–4379). 
            (Q2Presentation.Induction.cChildQ2Presentation.Induction.cChild {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPair**The C-child framed pair** (the carrier of `X_Γ(C)`; manuscript
    `C = Y/K` via `B/M' ≅ C`, `mChildCollapse`).  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.
    
            (Q2Presentation.Induction.DeltaQ2Presentation.Induction.Delta {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K))
      (Z : Q2Presentation.Induction.ZeroEdgeDescentData chief K lam hinv) (chi : ↥(Q2Presentation.Induction.XT chief K)) :
      (Q2Presentation.Induction.cChild chief K).fst.Y → (Q2Presentation.Induction.cChild chief K).fst.Y → ZMod 2**The phase class `Δ_{χ,κ}` on the C-child carrier** — `DeltaC`
    transported along the canonical collapse `B/M' ≃* C` (`cChildCollapse`);
    the cocycle P7's `phaseCount`/`phaseCoverPair` consume at
    `ζ := Delta Z chi` (design §4.7; per-cocycle discipline, no
    class-invariance asserted).  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K) ZQ2Presentation.Induction.ZeroEdgeDescentData chief K lam hinv chi↥(Q2Presentation.Induction.XT chief K)) BQ2Presentation.BoundaryPackage Γ
            (Q2Presentation.Induction.cChildQ2Presentation.Induction.cChild {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPair**The C-child framed pair** (the carrier of `X_Γ(C)`; manuscript
    `C = Y/K` via `B/M' ≅ C`, `mChildCollapse`).  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.
     ρQ2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst
      (Q2Presentation.Induction.cChild chief K).snd)
    theorem Q2Presentation.Induction.edgePhaseBridge
      {pQ2Presentation.Induction.FramedPair :
        Q2Presentation.Induction.FramedPairQ2Presentation.Induction.FramedPair : Type 1A **framed pair** `(𝒴, F)`: a boundary-framed marked target together with a
    boundary frame for it (manuscript Definition 4.1 + `eq:beta`).  This is the index of
    Theorem 4.2: the boundary-framed surjection count `e_Γ^β` is a function of the pair.
    The induction of `sec:induction` ranges over *all* such pairs simultaneously
    ("the induction is stated globally", l.1213), ordered by `|L_Y|`. }
      (chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p :
        Q2Presentation.Induction.FirstNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor (p : Q2Presentation.Induction.FramedPair) : TypeA non-scalar chief factor of `L_Y` that is **first**: every chief factor strictly
    below it (i.e. with upper term contained in `lower`) is scalar.  This is the manuscript's
    choice `S ◁ P` at l.3616–3623 ("all chief factors below `S` are scalar and `V` is the
    first non-scalar simple factor"), which `lem:collapse` requires for the coprime step
    `[S, Ñ] = 1`. 
          pQ2Presentation.Induction.FramedPair)
      (KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor :
        Q2Presentation.Induction.KernelMinimalQ2Presentation.Induction.KernelMinimal {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.NonScalarChiefFactor p) : TypeThe manuscript's kernel choice (l.3623): `K ◁ Y`, `K ≤ P`, `KS = P`, and `K` is
    **⊆-minimal** with these properties — stated as: any `Y`-normal `K' ≤ K` still joining
    with `S` to `P` equals `K`.  (This, not leastness among all candidates, is what
    `lem:simplehead` and `lem:collapse` use: both apply it to subgroups of `K`.) 
          chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p.toNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor.toNonScalarChiefFactor {p : Q2Presentation.Induction.FramedPair}
      (self : Q2Presentation.Induction.FirstNonScalarChiefFactor p) : Q2Presentation.Induction.NonScalarChiefFactor p)
      (lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) :
        Module.DualModule.Dual.{u_4, u_5} (R : Type u_4) (M : Type u_5) [Semiring R] [AddCommMonoid M] [Module R M] : Type (max u_5 u_4)The left dual space of an R-module M is the R-module of linear maps `M → R`.  (ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2)
          (Q2Presentation.Lifting.NAddQ2Presentation.Lifting.NAdd {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) : TypeThe additive `F₂`-carrier of an elementary kernel. 
            (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian. 
              chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)))
      (hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K) :
        lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`.
          Q2Presentation.Lifting.conjInvDualsQ2Presentation.Lifting.conjInvDuals {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) :
      Submodule (ZMod 2) (Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E))The conjugation-invariant duals `X = (R^∨)^Y = (R^∨)^C` of an
    elementary kernel (consumer spelling of the manuscript's `𝒳_R`,
    §7 l.3720–3723). 
            (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian. 
              chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor))
      (ZQ2Presentation.Induction.ZeroEdgeDescentData chief K lam hinv :
        Q2Presentation.Induction.ZeroEdgeDescentDataQ2Presentation.Induction.ZeroEdgeDescentData {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) : Type**The zero-edge descent data** (`eq:descendedclass` l.4037–4045 +
    `lem:affinelifting` l.4048–4083, as one choice bundle — the §6.5 choice
    discipline: both R4b keeps take the SAME bundle):
    
    * `D`/`hW` — the zero-edge witness (a normal edge complement, P3-U3); the
      bundle therefore implies `ZeroEdge` (`ZeroEdgeDescentData.zeroEdge`);
    * `Csec` + `hdisj`/`hsup` — the `lem:transgression` splitting coordinates
      `B/T' = V ⋊ C` (`Csec` a complement to the `V`-layer);
    * `gammaK`/`deltaK` — the normalized decomposition data `γ_κ ∈ Z¹(C,V^∨)`,
      `δ_κ ∈ Z²(C,𝔽₂)` of the descended class, with concrete cocycle laws
      (dual action `(c·φ)(v) = φ(c⁻¹·v)`);
    * `eT` — the `lem:affinelifting` class `e ∈ Z²(C,T)` (pullback of
      `B → V⋊C` along the zero section), twisted cocycle law in the
      `hzc`-ready orientation;
    * `mC` — the equivariant-lift correction functions `m_c` of the
      `κ_q⁰`-model (`eq:mquadratic`/`eq:mcoherent` l.4118–4125, stated
      against the bilinear factor set `edgeBaseFactor`).
    
    The deep pinning identity — that a normalized section cocycle of the
    descended double cover `descTarget D hW` equals
    `κ_q⁰-model + Γ_{γ_κ} + inf δ_κ` in the `Csec`-coordinates, and that `eT`
    is the actual zero-section pullback — is owned by the deferred
    transgression unit (`btChild_splits`/`zeroEdgeDescentData_nonempty`,
    design §4.7); until it lands, the coordinated R4b keep must carry that
    pinning alongside this bundle (same discipline as U7's `¬ZeroEdge`
    conditioning living on the future keep). 
          chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K))
      {ΓProfiniteGrp.{0} : ProfiniteGrp.{0}ProfiniteGrp.{u_1} : Type (u_1 + 1)The category of profinite groups. A term of this type consists of a profinite
    set with a topological group structure.
    }
      (BQ2Presentation.BoundaryPackage Γ : Q2Presentation.BoundaryPackageQ2Presentation.BoundaryPackage (Γ : ProfiniteGrp.{0}) : TypeA **boundary package** on a profinite group `Γ`: the uniform Stage-C data of a tame
    quotient, a maximal pro-`2` quotient, and a common unramified character `ℤ₂` through which
    both factor (manuscript Prop 3.14, `prop:compatiblemarking`; plan Turn 4 §6).  The
    compatibility `tameMap ≫ ν_t = ν = pro2Map ≫ ν_2` records that the two markings agree on
    the full unramified coordinate, not merely modulo `2`.  ΓProfiniteGrp.{0})
      (ρQ2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst
      (Q2Presentation.Induction.cChild chief K).snd :
        Q2Presentation.boundaryFramedSurjQ2Presentation.boundaryFramedSurj {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ)
      (Yt : Q2Presentation.BoundaryFramedTarget) (F : Q2Presentation.BoundaryFrame Yt) : TypeThe **boundary-framed surjections** `e_Γ^β(𝒴)` (manuscript `eq:eGamma`): the
    continuous surjections `f : Γ ↠ Y` whose induced map to `H × E` is the prescribed
    `β ∘ b_Γ`, i.e. `q_Y ∘ f = β ∘ b_Γ`.  This is the subtype counted in Theorem 4.2;
    its cardinality is `e_Γ^β(𝒴)`.  BQ2Presentation.BoundaryPackage Γ
          (Q2Presentation.Induction.cChildQ2Presentation.Induction.cChild {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPair**The C-child framed pair** (the carrier of `X_Γ(C)`; manuscript
    `C = Y/K` via `B/M' ≅ C`, `mChildCollapse`). 
              chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.
    
          (Q2Presentation.Induction.cChildQ2Presentation.Induction.cChild {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPair**The C-child framed pair** (the carrier of `X_Γ(C)`; manuscript
    `C = Y/K` via `B/M' ≅ C`, `mChildCollapse`). 
              chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.
    )
      (tokQ2Presentation.Induction.IotaToken Γ :
        Q2Presentation.Induction.IotaTokenQ2Presentation.Induction.IotaToken (Γ : ProfiniteGrp.{0}) : Prop**The per-source `ι`-additivity token** (design §4-N2; the `h² ≤ 1`
    token): at the source `Γ`, any two UNSOLVABLE normalized continuous
    2-cocycle equations have solvable sum.  This is the cochain-level spelling
    of `dim H²(Γ, 𝔽₂) ≤ 1` — stated with no cohomology carriers.  Consumed as
    a hypothesis by the N7 engine instantiation; discharged per source by N3
    (`IotaToken GQ2Profinite`, floor F-ι-loc: NSW (7.2.6) at the trivial
    module + (7.3.1)) and N4 (`GammaA`-bases, floor F-ι-cand:
    `prop:chainmap` l.1687 + `lem:finitewordstokes`).  Together with the free
    half (`cochainSolvable_add`, `not_cochainSolvable_add_left/right`) it
    makes the case table of `iotaRead` on cocycle sums total.  ΓProfiniteGrp.{0})
      (chi↥(Q2Presentation.Induction.XT chief K) :
        (Q2Presentation.Induction.XTQ2Presentation.Induction.XT {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Submodule (ZMod 2) (Module.Dual (ZMod 2) ↥(Q2Presentation.Induction.towerT K))**`𝒳_T = (T^∨)^C`**: the `C`-invariant duals of the radical layer,
    against the proven restricted action `sec7ActOnTHom`.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p
            KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)) :
      Q2Presentation.Quadratic.Dickson.signCharQ2Presentation.Quadratic.Dickson.signChar (a : ZMod 2) : ℤThe sign character `χ(0) = 1`, `χ(1) = -1`. 
          (HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`.((Module.evalEquivModule.evalEquiv.{u_3, u_4} (R : Type u_3) (M : Type u_4) [CommSemiring R] [AddCommMonoid M] [Module R M]
      [Module.IsReflexive R M] : M ≃ₗ[R] Module.Dual R (Module.Dual R M)The bijection between a reflexive module and its double dual, bundled as a `LinearEquiv`.  (ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2)
                    (Q2Presentation.Induction.XTQ2Presentation.Induction.XT {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Submodule (ZMod 2) (Module.Dual (ZMod 2) ↥(Q2Presentation.Induction.towerT K))**`𝒳_T = (T^∨)^C`**: the `C`-invariant duals of the radical layer,
    against the proven restricted action `sec7ActOnTHom`. 
                        chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor))
                  chi↥(Q2Presentation.Induction.XT chief K))
                (Q2Presentation.Induction.edgeKappaQ2Presentation.Induction.edgeKappa {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K))
      (Z : Q2Presentation.Induction.ZeroEdgeDescentData chief K lam hinv) {Γ : ProfiniteGrp.{0}}
      (B : Q2Presentation.BoundaryPackage Γ)
      (ρ :
        Q2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst
          (Q2Presentation.Induction.cChild chief K).snd)
      (tok : Q2Presentation.Induction.IotaToken Γ) : Module.Dual (ZMod 2) ↥(Q2Presentation.Induction.XT chief K)**The constraint target `κ₀ ∈ 𝒳_T^∨`** (the `ρ*e`-class read). 
                  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K) ZQ2Presentation.Induction.ZeroEdgeDescentData chief K lam hinv BQ2Presentation.BoundaryPackage Γ ρQ2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst
      (Q2Presentation.Induction.cChild chief K).snd
                  tokQ2Presentation.Induction.IotaToken Γ) +HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`.
              Q2Presentation.Induction.edgeEpsReadQ2Presentation.Induction.edgeEpsRead {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K))
      (Z : Q2Presentation.Induction.ZeroEdgeDescentData chief K lam hinv) {Γ : ProfiniteGrp.{0}}
      (B : Q2Presentation.BoundaryPackage Γ)
      (ρ :
        Q2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst
          (Q2Presentation.Induction.cChild chief K).snd) :
      ZMod 2The constant slot `ε₀ = ι_Γ(ρ*δ_κ)`. 
                chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K) ZQ2Presentation.Induction.ZeroEdgeDescentData chief K lam hinv BQ2Presentation.BoundaryPackage Γ ρQ2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst
      (Q2Presentation.Induction.cChild chief K).snd +HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`.
            (Q2Presentation.Induction.edgeQQ2Presentation.Induction.edgeQ {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K))
      (Z : Q2Presentation.Induction.ZeroEdgeDescentData chief K lam hinv) {Γ : ProfiniteGrp.{0}}
      (B : Q2Presentation.BoundaryPackage Γ)
      (ρ :
        Q2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst
          (Q2Presentation.Induction.cChild chief K).snd)
      (tok : Q2Presentation.Induction.IotaToken Γ) :
      Q2Presentation.Quadratic.QuadF2 ↥(Q2Presentation.Induction.edgeZ1 chief K B ρ)**`edgeQ` — the P6-engine form at `W_ρ = Z¹_ρ(V)`** (design §2.1,
    the W2 instantiation): form `= ι∘F₀`, polar `= ι∘P`; quadratic law from
    the completed-square cochain identity plus the token. 
                  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K) ZQ2Presentation.Induction.ZeroEdgeDescentData chief K lam hinv BQ2Presentation.BoundaryPackage Γ ρQ2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst
      (Q2Presentation.Induction.cChild chief K).snd
                  tokQ2Presentation.Induction.IotaToken Γ).formQ2Presentation.Quadratic.QuadF2.form.{u_2} {V : Type u_2} [AddCommGroup V] [Module (ZMod 2) V]
      (self : Q2Presentation.Quadratic.QuadF2 V) : V → ZMod 2the quadratic map `q : V → F₂` 
              (Q2Presentation.Induction.edgeAQ2Presentation.Induction.edgeA {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K))
      (Z : Q2Presentation.Induction.ZeroEdgeDescentData chief K lam hinv) {Γ : ProfiniteGrp.{0}}
      (B : Q2Presentation.BoundaryPackage Γ)
      (ρ :
        Q2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst
          (Q2Presentation.Induction.cChild chief K).snd)
      (chi : ↥(Q2Presentation.Induction.XT chief K)) : ↥(Q2Presentation.Induction.edgeZ1 chief K B ρ)**`a_{χ,κ}` pulled to the cocycle level** (design §4-N7 bullet 3):
    `γ ↦ a_{χ,κ}(ρ̄γ)` is a `ρ̄`-twisted cocycle — the engine's
    representing vector at `χ`. 
                chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K) ZQ2Presentation.Induction.ZeroEdgeDescentData chief K lam hinv BQ2Presentation.BoundaryPackage Γ ρQ2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst
      (Q2Presentation.Induction.cChild chief K).snd chi↥(Q2Presentation.Induction.XT chief K)))HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`. =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`.
        Q2Presentation.Induction.iotaSignQ2Presentation.Induction.iotaSign (Γ : ProfiniteGrp.{0}) (F : ↑Γ.toProfinite.toTop → ↑Γ.toProfinite.toTop → ZMod 2) : ℤ**The `±1`-indicator** of solvability in `ℤ`: `+1` if solvable, `−1`
    if not — the summand shape of `eq:recursionR5a`'s `s_Γ(ζ) = Σ_ρ (±1)`
    absorption (`sGammaZ_eq` downstream).  ΓProfiniteGrp.{0}
          (Q2Presentation.Induction.pullCochainQ2Presentation.Induction.pullCochain (Yt : Q2Presentation.BoundaryFramedTarget) (zeta : Yt.Y → Yt.Y → ZMod 2)
      {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (F : Q2Presentation.BoundaryFrame Yt)
      (g : Q2Presentation.boundaryFramedSurj B Yt F) : ↑Γ.toProfinite.toTop → ↑Γ.toProfinite.toTop → ZMod 2**The pulled-back 2-cochain `g*ζ`** of a boundary-framed surjection
    `g : Γ ↠ Y` — the source-side equation whose solvability the ζ-cover lift
    indicator reads (`lem:phasecover` l.4377–4379). 
            (Q2Presentation.Induction.cChildQ2Presentation.Induction.cChild {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPair**The C-child framed pair** (the carrier of `X_Γ(C)`; manuscript
    `C = Y/K` via `B/M' ≅ C`, `mChildCollapse`). 
                chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.
    
            (Q2Presentation.Induction.DeltaQ2Presentation.Induction.Delta {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K))
      (Z : Q2Presentation.Induction.ZeroEdgeDescentData chief K lam hinv) (chi : ↥(Q2Presentation.Induction.XT chief K)) :
      (Q2Presentation.Induction.cChild chief K).fst.Y → (Q2Presentation.Induction.cChild chief K).fst.Y → ZMod 2**The phase class `Δ_{χ,κ}` on the C-child carrier** — `DeltaC`
    transported along the canonical collapse `B/M' ≃* C` (`cChildCollapse`);
    the cocycle P7's `phaseCount`/`phaseCoverPair` consume at
    `ζ := Delta Z chi` (design §4.7; per-cocycle discipline, no
    class-invariance asserted). 
              chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K) ZQ2Presentation.Induction.ZeroEdgeDescentData chief K lam hinv chi↥(Q2Presentation.Induction.XT chief K))
            BQ2Presentation.BoundaryPackage Γ
            (Q2Presentation.Induction.cChildQ2Presentation.Induction.cChild {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPair**The C-child framed pair** (the carrier of `X_Γ(C)`; manuscript
    `C = Y/K` via `B/M' ≅ C`, `mChildCollapse`). 
                chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.
    
            ρQ2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst
      (Q2Presentation.Induction.cChild chief K).snd)
    **The phase bridge** (`prop:phaseidentity` l.4108–4146, dissolved):
    per `χ ∈ 𝒳_T`, the engine's phase at the pulled representing vector
    EQUALS the `±1`-indicator of `ρ*(Δ_{χ,κ})` — `Δ`'s three legs are the
    `κ₀`/`ε₀`/`Q(a_χ)`-reads on the nose (`δ_κ` enters exactly once, the
    P6 §7.6 discipline, because `Delta` already contains it once). 
  • theoremdefined in Q2Presentation/Quadratic/ConstrainedGauss.lean
    complete
    theorem Q2Presentation.Quadratic.QuadF2.completedSquare.{u_1} {VType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. }
      [AddCommGroupAddCommGroup.{u} (G : Type u) : Type uAn additive commutative group is an additive group with commutative `(+)`.  VType u_1] [ModuleModule.{u, v} (R : Type u) (M : Type v) [Semiring R] [AddCommMonoid M] : Type (max u v)A module is a generalization of vector spaces to a scalar semiring.
    It consists of a scalar semiring `R` and an additive monoid of "vectors" `M`,
    connected by a "scalar multiplication" operation `r • x : M`
    (where `r : R` and `x : M`) with some natural associativity and
    distributivity axioms similar to those on a ring.  (ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2) VType u_1]
      (qQ2Presentation.Quadratic.QuadF2 V : Q2Presentation.Quadratic.QuadF2Q2Presentation.Quadratic.QuadF2.{u_2} (V : Type u_2) [AddCommGroup V] [Module (ZMod 2) V] : Type u_2A **quadratic form over `F₂`** with its bilinear polar (commutator) form.  VType u_1) (aV xV : VType u_1) :
      qQ2Presentation.Quadratic.QuadF2 V.formQ2Presentation.Quadratic.QuadF2.form.{u_2} {V : Type u_2} [AddCommGroup V] [Module (ZMod 2) V]
      (self : Q2Presentation.Quadratic.QuadF2 V) : V → ZMod 2the quadratic map `q : V → F₂`  xV +HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`. (qQ2Presentation.Quadratic.QuadF2 V.polarQ2Presentation.Quadratic.QuadF2.polar.{u_2} {V : Type u_2} [AddCommGroup V] [Module (ZMod 2) V]
      (self : Q2Presentation.Quadratic.QuadF2 V) : V →ₗ[ZMod 2] V →ₗ[ZMod 2] ZMod 2the bilinear polar form `b_q`, i.e. the commutator pairing  aV) xV =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`. qQ2Presentation.Quadratic.QuadF2 V.formQ2Presentation.Quadratic.QuadF2.form.{u_2} {V : Type u_2} [AddCommGroup V] [Module (ZMod 2) V]
      (self : Q2Presentation.Quadratic.QuadF2 V) : V → ZMod 2the quadratic map `q : V → F₂`  (HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`.xV +HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`. aV)HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`. +HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`. qQ2Presentation.Quadratic.QuadF2 V.formQ2Presentation.Quadratic.QuadF2.form.{u_2} {V : Type u_2} [AddCommGroup V] [Module (ZMod 2) V]
      (self : Q2Presentation.Quadratic.QuadF2 V) : V → ZMod 2the quadratic map `q : V → F₂`  aV
    theorem Q2Presentation.Quadratic.QuadF2.completedSquare.{u_1}
      {VType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } [AddCommGroupAddCommGroup.{u} (G : Type u) : Type uAn additive commutative group is an additive group with commutative `(+)`.  VType u_1]
      [ModuleModule.{u, v} (R : Type u) (M : Type v) [Semiring R] [AddCommMonoid M] : Type (max u v)A module is a generalization of vector spaces to a scalar semiring.
    It consists of a scalar semiring `R` and an additive monoid of "vectors" `M`,
    connected by a "scalar multiplication" operation `r • x : M`
    (where `r : R` and `x : M`) with some natural associativity and
    distributivity axioms similar to those on a ring.  (ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2) VType u_1]
      (qQ2Presentation.Quadratic.QuadF2 V : Q2Presentation.Quadratic.QuadF2Q2Presentation.Quadratic.QuadF2.{u_2} (V : Type u_2) [AddCommGroup V] [Module (ZMod 2) V] : Type u_2A **quadratic form over `F₂`** with its bilinear polar (commutator) form.  VType u_1)
      (aV xV : VType u_1) :
      qQ2Presentation.Quadratic.QuadF2 V.formQ2Presentation.Quadratic.QuadF2.form.{u_2} {V : Type u_2} [AddCommGroup V] [Module (ZMod 2) V]
      (self : Q2Presentation.Quadratic.QuadF2 V) : V → ZMod 2the quadratic map `q : V → F₂`  xV +HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`. (qQ2Presentation.Quadratic.QuadF2 V.polarQ2Presentation.Quadratic.QuadF2.polar.{u_2} {V : Type u_2} [AddCommGroup V] [Module (ZMod 2) V]
      (self : Q2Presentation.Quadratic.QuadF2 V) : V →ₗ[ZMod 2] V →ₗ[ZMod 2] ZMod 2the bilinear polar form `b_q`, i.e. the commutator pairing  aV) xV =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`.
        qQ2Presentation.Quadratic.QuadF2 V.formQ2Presentation.Quadratic.QuadF2.form.{u_2} {V : Type u_2} [AddCommGroup V] [Module (ZMod 2) V]
      (self : Q2Presentation.Quadratic.QuadF2 V) : V → ZMod 2the quadratic map `q : V → F₂`  (HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`.xV +HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`. aV)HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`. +HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`. qQ2Presentation.Quadratic.QuadF2 V.formQ2Presentation.Quadratic.QuadF2.form.{u_2} {V : Type u_2} [AddCommGroup V] [Module (ZMod 2) V]
      (self : Q2Presentation.Quadratic.QuadF2 V) : V → ZMod 2the quadratic map `q : V → F₂`  aV
    **The completed square** (`prop:phaseidentity`'s algebraic core, l.4137–4142;
    the square-completion step of `lem:constrainedgauss`, l.3899–3904):
    `Q(x) + b_Q(a, x) = Q(x + a) + Q(a)`. 
Proof

Proved in §8 of the paper. Ingredients: Corollary 5.14.

Lemma 8.9 of the paper (Elementary lifting and exact-image subtraction).

For every \rho\in X_\Gamma(C),

H^2_{\Gamma,\rho}(M)=0, \qquad |Z^1_{\Gamma,\rho}(M)|=2^{2\dim M}.

Consequently

e_\Gamma(B)=2^{2\dim M}e_\Gamma(C) -\sum_{\substack{J<B\\J\twoheadrightarrow C}}e_\Gamma(J),

where each J has the boundary-framed structure induced from B. For every proper J<B occurring in this sum,

|J\cap L_B|=|J\cap M|\,|L_C| \le \frac{|M|}{2}|L_C| =\frac{|L_B|}{2}<|L_Y|.

Lean code for Lemma8.97 declarations
  • theoremdefined in Q2Presentation/Induction/BlockRecursionKeeps.lean
    complete
    theorem Q2Presentation.Induction.edgeHalvingGammaA_iff_half_card
      {pQ2Presentation.Induction.FramedPair : Q2Presentation.Induction.FramedPairQ2Presentation.Induction.FramedPair : Type 1A **framed pair** `(𝒴, F)`: a boundary-framed marked target together with a
    boundary frame for it (manuscript Definition 4.1 + `eq:beta`).  This is the index of
    Theorem 4.2: the boundary-framed surjection count `e_Γ^β` is a function of the pair.
    The induction of `sec:induction` ranges over *all* such pairs simultaneously
    ("the induction is stated globally", l.1213), ordered by `|L_Y|`. }
      (chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p : Q2Presentation.Induction.FirstNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor (p : Q2Presentation.Induction.FramedPair) : TypeA non-scalar chief factor of `L_Y` that is **first**: every chief factor strictly
    below it (i.e. with upper term contained in `lower`) is scalar.  This is the manuscript's
    choice `S ◁ P` at l.3616–3623 ("all chief factors below `S` are scalar and `V` is the
    first non-scalar simple factor"), which `lem:collapse` requires for the coprime step
    `[S, Ñ] = 1`.  pQ2Presentation.Induction.FramedPair)
      (KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor :
        Q2Presentation.Induction.KernelMinimalQ2Presentation.Induction.KernelMinimal {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.NonScalarChiefFactor p) : TypeThe manuscript's kernel choice (l.3623): `K ◁ Y`, `K ≤ P`, `KS = P`, and `K` is
    **⊆-minimal** with these properties — stated as: any `Y`-normal `K' ≤ K` still joining
    with `S` to `P` equals `K`.  (This, not leastness among all candidates, is what
    `lem:simplehead` and `lem:collapse` use: both apply it to subgroups of `K`.)  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p.toNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor.toNonScalarChiefFactor {p : Q2Presentation.Induction.FramedPair}
      (self : Q2Presentation.Induction.FirstNonScalarChiefFactor p) : Q2Presentation.Induction.NonScalarChiefFactor p)
      (lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) :
        Module.DualModule.Dual.{u_4, u_5} (R : Type u_4) (M : Type u_5) [Semiring R] [AddCommMonoid M] [Module R M] : Type (max u_5 u_4)The left dual space of an R-module M is the R-module of linear maps `M → R`.  (ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2)
          (Q2Presentation.Lifting.NAddQ2Presentation.Lifting.NAdd {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) : TypeThe additive `F₂`-carrier of an elementary kernel. 
            (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)))
      (hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K) :
        lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`.
          Q2Presentation.Lifting.conjInvDualsQ2Presentation.Lifting.conjInvDuals {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) :
      Submodule (ZMod 2) (Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E))The conjugation-invariant duals `X = (R^∨)^Y = (R^∨)^C` of an
    elementary kernel (consumer spelling of the manuscript's `𝒳_R`,
    §7 l.3720–3723). 
            (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)) :
      Q2Presentation.Induction.EdgeHalvingGammaAQ2Presentation.Induction.EdgeHalvingGammaA {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) : Prop**The R4a per-fibre halving, candidate source** — THE sharply-scoped
    R4a residual (manuscript `lem:radicaledge` step 6, l.4006–4019: exact
    variation formula + perfect degree-one duality; candidate half =
    `prop:chainmap` l.1687 + `prop:defduality`-grade degree-one content):
    over each `g_C`, exactly half of the weak `M`-lifts are λ-liftable,
    stated division-free per fibre.  Deliberately does NOT assert the fibre
    size `2^{2·dim M}` (that is the separate, PROVEN `lem:elementarystage`
    obligation — design §6.3), and is deliberately NOT conditioned here on
    `¬ ZeroEdge` — the conditioning belongs to its (future, coordinated)
    keep `sec7_edgeHalving_gammaA (hne) (hedge) : EdgeHalvingGammaA …`,
    whose dissolution program is recorded in the design §4.6: (i) the ledger
    variation formula from U3's `edgeDefect` calculus + the weak-base defect
    engine; (ii) `edgeShadow ≠ 0` on the `T`-cocycle space by the
    trivial-chain dévissage over the PROVEN `Sec7TrivialChainData`;
    (iii) the free-orbit torsor bookkeeping.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K) Iff (a b : Prop) : PropIf and only if, or logical bi-implication. `a ↔ b` means that `a` implies `b` and vice versa.
    By `propext`, this implies that `a` and `b` are equal and hence any expression involving `a`
    is equivalent to the corresponding expression with `b` instead.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `↔` in identifiers is `iff`.
    
     * The recommended spelling of `<->` in identifiers is `iff` (prefer `↔` over `<->`).
        
          (gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GammaA
      (Q2Presentation.TorsorProgram.quotientFramedTarget (Q2Presentation.Induction.XRZero.xrChild chief K).fst
        (Q2Presentation.Induction.mChildKernel chief K).N ⋯ ⋯)
      (Q2Presentation.TorsorProgram.quotientFrame (Q2Presentation.Induction.XRZero.xrChild chief K).fst
        (Q2Presentation.Induction.mChildKernel chief K).N ⋯ ⋯ (Q2Presentation.Induction.XRZero.xrChild chief K).snd) :
            Q2Presentation.boundaryFramedSurjQ2Presentation.boundaryFramedSurj {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ)
      (Yt : Q2Presentation.BoundaryFramedTarget) (F : Q2Presentation.BoundaryFrame Yt) : TypeThe **boundary-framed surjections** `e_Γ^β(𝒴)` (manuscript `eq:eGamma`): the
    continuous surjections `f : Γ ↠ Y` whose induced map to `H × E` is the prescribed
    `β ∘ b_Γ`, i.e. `q_Y ∘ f = β ∘ b_Γ`.  This is the subtype counted in Theorem 4.2;
    its cardinality is `e_Γ^β(𝒴)`. 
              Q2Presentation.boundaryPackage_GammaAQ2Presentation.boundaryPackage_GammaA : Q2Presentation.BoundaryPackage Q2Presentation.GammaA**The candidate boundary package** (manuscript Prop 3.14, `prop:compatiblemarking`;
    plan Turn 4 §6).  The Stage-C data of `Γ_A`: the common tame quotient `gammaTameMap`,
    the maximal pro-`2` quotient `p : Γ_A ⟶ Π`, and the common unramified character
    `ν = gammaTameMap ≫ ν_t`, through which both factor. 
              (Q2Presentation.TorsorProgram.quotientFramedTargetQ2Presentation.TorsorProgram.quotientFramedTarget (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y)
      [hNn : N.Normal] (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) : Q2Presentation.BoundaryFramedTarget**The quotient framed target** `Y/N` (same `H`, same `E`, image wild kernel). 
                (Q2Presentation.Induction.XRZero.xrChildQ2Presentation.Induction.XRZero.xrChild {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPairThe `𝒳_R = 0` child: the quotient framed pair at `N = Φ`-layer.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.
    
                (Q2Presentation.Induction.mChildKernelQ2Presentation.Induction.mChildKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel (Q2Presentation.Induction.XRZero.xrChild chief K).fst**The elementary `M`-kernel at the child** `B = Y/Φ(K)`
    (`lem:simplehead` carrier for `lem:elementarystage`): `N = M' = K/Φ(K)`.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).NQ2Presentation.Lifting.ElementaryKernel.N {Yt : Q2Presentation.BoundaryFramedTarget}
      (self : Q2Presentation.Lifting.ElementaryKernel Yt) : Subgroup Yt.Y  )
              (Q2Presentation.TorsorProgram.quotientFrameQ2Presentation.TorsorProgram.quotientFrame (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y)
      [hNn : N.Normal] (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) (F : Q2Presentation.BoundaryFrame Yt) :
      Q2Presentation.BoundaryFrame (Q2Presentation.TorsorProgram.quotientFramedTarget Yt N hNLY hNθ)The frame transports verbatim (`H`, `E`, `α`, `ψ`, `β` unchanged). 
                (Q2Presentation.Induction.XRZero.xrChildQ2Presentation.Induction.XRZero.xrChild {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPairThe `𝒳_R = 0` child: the quotient framed pair at `N = Φ`-layer.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.
    
                (Q2Presentation.Induction.mChildKernelQ2Presentation.Induction.mChildKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel (Q2Presentation.Induction.XRZero.xrChild chief K).fst**The elementary `M`-kernel at the child** `B = Y/Φ(K)`
    (`lem:simplehead` carrier for `lem:elementarystage`): `N = M' = K/Φ(K)`.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).NQ2Presentation.Lifting.ElementaryKernel.N {Yt : Q2Presentation.BoundaryFramedTarget}
      (self : Q2Presentation.Lifting.ElementaryKernel Yt) : Subgroup Yt.Y  
                (Q2Presentation.Induction.XRZero.xrChildQ2Presentation.Induction.XRZero.xrChild {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPairThe `𝒳_R = 0` child: the quotient framed pair at `N = Φ`-layer.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.
    )),
          2 *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
              Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number.
    If `α` is infinite, `Nat.card α = 0`. 
                {Subtype.{u} {α : Sort u} (p : α → Prop) : Sort (max 1 u)All the elements of a type that satisfy a predicate.
    
    `Subtype p`, usually written `{ x : α // p x }` or `{ x // p x }`, contains all elements `x : α` for
    which `p x` is true. Its constructor is a pair of the value and the proof that it satisfies the
    predicate. In run-time code, `{ x : α // p x }` is represented identically to `α`.
    
    There is a coercion from `{ x : α // p x }` to `α`, so elements of a subtype may be used where the
    underlying type is expected.
    
    Examples:
     * `{ n : Nat // n % 2 = 0 }` is the type of even numbers.
     * `{ xs : Array String // xs.size = 5 }` is the type of arrays with five `String`s.
     * Given `xs : List α`, `List { x : α // x ∈ xs }` is the type of lists in which all elements are
       contained in `xs`.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `{ x // p x }` in identifiers is `subtype`. fQ2Presentation.TorsorProgram.coverLiftTotal (Q2Presentation.Induction.XRZero.xrChild chief K).fst
      (Q2Presentation.Induction.mChildKernel chief K).N Q2Presentation.boundaryPackage_GammaA
      (Q2Presentation.Induction.XRZero.xrChild chief K).snd //Subtype.{u} {α : Sort u} (p : α → Prop) : Sort (max 1 u)All the elements of a type that satisfy a predicate.
    
    `Subtype p`, usually written `{ x : α // p x }` or `{ x // p x }`, contains all elements `x : α` for
    which `p x` is true. Its constructor is a pair of the value and the proof that it satisfies the
    predicate. In run-time code, `{ x : α // p x }` is represented identically to `α`.
    
    There is a coercion from `{ x : α // p x }` to `α`, so elements of a subtype may be used where the
    underlying type is expected.
    
    Examples:
     * `{ n : Nat // n % 2 = 0 }` is the type of even numbers.
     * `{ xs : Array String // xs.size = 5 }` is the type of arrays with five `String`s.
     * Given `xs : List α`, `List { x : α // x ∈ xs }` is the type of lists in which all elements are
       contained in `xs`.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `{ x // p x }` in identifiers is `subtype`.
                  Q2Presentation.TorsorProgram.coverLiftBaseQ2Presentation.TorsorProgram.coverLiftBase (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y)
      [hNn : N.Normal] (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) {Γ : ProfiniteGrp.{0}}
      (B : Q2Presentation.BoundaryPackage Γ) (F : Q2Presentation.BoundaryFrame Yt)
      (t : Q2Presentation.TorsorProgram.coverLiftTotal Yt N B F) :
      Q2Presentation.boundaryFramedSurj B (Q2Presentation.TorsorProgram.quotientFramedTarget Yt N hNLY hNθ)
        (Q2Presentation.TorsorProgram.quotientFrame Yt N hNLY hNθ F)Fibration base 1: the induced child-framed surjection (mirror of
    `restrictSurj`, `Boundary/LiftFibration.lean`). 
                        (Q2Presentation.Induction.XRZero.xrChildQ2Presentation.Induction.XRZero.xrChild {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPairThe `𝒳_R = 0` child: the quotient framed pair at `N = Φ`-layer.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p
                            KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.
    
                        (Q2Presentation.Induction.mChildKernelQ2Presentation.Induction.mChildKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel (Q2Presentation.Induction.XRZero.xrChild chief K).fst**The elementary `M`-kernel at the child** `B = Y/Φ(K)`
    (`lem:simplehead` carrier for `lem:elementarystage`): `N = M' = K/Φ(K)`.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).NQ2Presentation.Lifting.ElementaryKernel.N {Yt : Q2Presentation.BoundaryFramedTarget}
      (self : Q2Presentation.Lifting.ElementaryKernel Yt) : Subgroup Yt.Y 
                         Q2Presentation.boundaryPackage_GammaAQ2Presentation.boundaryPackage_GammaA : Q2Presentation.BoundaryPackage Q2Presentation.GammaA**The candidate boundary package** (manuscript Prop 3.14, `prop:compatiblemarking`;
    plan Turn 4 §6).  The Stage-C data of `Γ_A`: the common tame quotient `gammaTameMap`,
    the maximal pro-`2` quotient `p : Γ_A ⟶ Π`, and the common unramified character
    `ν = gammaTameMap ≫ ν_t`, through which both factor. 
                        (Q2Presentation.Induction.XRZero.xrChildQ2Presentation.Induction.XRZero.xrChild {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPairThe `𝒳_R = 0` child: the quotient framed pair at `N = Φ`-layer.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p
                            KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.
    
                        fQ2Presentation.TorsorProgram.coverLiftTotal (Q2Presentation.Induction.XRZero.xrChild chief K).fst
      (Q2Presentation.Induction.mChildKernel chief K).N Q2Presentation.boundaryPackage_GammaA
      (Q2Presentation.Induction.XRZero.xrChild chief K).snd =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`.
                      gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GammaA
      (Q2Presentation.TorsorProgram.quotientFramedTarget (Q2Presentation.Induction.XRZero.xrChild chief K).fst
        (Q2Presentation.Induction.mChildKernel chief K).N ⋯ ⋯)
      (Q2Presentation.TorsorProgram.quotientFrame (Q2Presentation.Induction.XRZero.xrChild chief K).fst
        (Q2Presentation.Induction.mChildKernel chief K).N ⋯ ⋯ (Q2Presentation.Induction.XRZero.xrChild chief K).snd) And (a b : Prop) : Prop`And a b`, or `a ∧ b`, is the conjunction of propositions. It can be
    constructed and destructed like a pair: if `ha : a` and `hb : b` then
    `⟨ha, hb⟩ : a ∧ b`, and if `h : a ∧ b` then `h.left : a` and `h.right : b`.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∧` in identifiers is `and`.
    
     * The recommended spelling of `/\` in identifiers is `and` (prefer `∧` over `/\`).
                    Q2Presentation.Induction.coverLiftableWeakQ2Presentation.Induction.coverLiftableWeak {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) {Γ : ProfiniteGrp.{0}}
      (B : Q2Presentation.BoundaryPackage Γ)
      (f :
        Q2Presentation.TorsorProgram.coverLiftTotal (Q2Presentation.Induction.XRZero.xrChild chief K).fst
          (Q2Presentation.Induction.mChildKernel chief K).N B (Q2Presentation.Induction.XRZero.xrChild chief K).snd) :
      Prop**λ-liftability of a weak `M`-lift** (`lem:properimagesubtraction`
    l.4269–4271): a point of the W2a total space at the child M-kernel is
    λ-liftable when some framed hom into `B_λ` projects to it along
    `p_λ = scalarCoverProj` — surjectivity onto `B_λ` NOT imposed (weak
    solvability; images are stratified by `eq:recursionR2`/`R3`).  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))
                      hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K) Q2Presentation.boundaryPackage_GammaAQ2Presentation.boundaryPackage_GammaA : Q2Presentation.BoundaryPackage Q2Presentation.GammaA**The candidate boundary package** (manuscript Prop 3.14, `prop:compatiblemarking`;
    plan Turn 4 §6).  The Stage-C data of `Γ_A`: the common tame quotient `gammaTameMap`,
    the maximal pro-`2` quotient `p : Γ_A ⟶ Π`, and the common unramified character
    `ν = gammaTameMap ≫ ν_t`, through which both factor.  fQ2Presentation.TorsorProgram.coverLiftTotal (Q2Presentation.Induction.XRZero.xrChild chief K).fst
      (Q2Presentation.Induction.mChildKernel chief K).N Q2Presentation.boundaryPackage_GammaA
      (Q2Presentation.Induction.XRZero.xrChild chief K).snd }Subtype.{u} {α : Sort u} (p : α → Prop) : Sort (max 1 u)All the elements of a type that satisfy a predicate.
    
    `Subtype p`, usually written `{ x : α // p x }` or `{ x // p x }`, contains all elements `x : α` for
    which `p x` is true. Its constructor is a pair of the value and the proof that it satisfies the
    predicate. In run-time code, `{ x : α // p x }` is represented identically to `α`.
    
    There is a coercion from `{ x : α // p x }` to `α`, so elements of a subtype may be used where the
    underlying type is expected.
    
    Examples:
     * `{ n : Nat // n % 2 = 0 }` is the type of even numbers.
     * `{ xs : Array String // xs.size = 5 }` is the type of arrays with five `String`s.
     * Given `xs : List α`, `List { x : α // x ∈ xs }` is the type of lists in which all elements are
       contained in `xs`.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `{ x // p x }` in identifiers is `subtype`. =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`.
            2 ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. (HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.2 *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. Q2Presentation.Induction.dimMQ2Presentation.Induction.dimM {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : ℕ`dim M` (the `2^{2·dimM}` of `lem:elementarystage`).  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
    theorem Q2Presentation.Induction.edgeHalvingGammaA_iff_half_card
      {pQ2Presentation.Induction.FramedPair :
        Q2Presentation.Induction.FramedPairQ2Presentation.Induction.FramedPair : Type 1A **framed pair** `(𝒴, F)`: a boundary-framed marked target together with a
    boundary frame for it (manuscript Definition 4.1 + `eq:beta`).  This is the index of
    Theorem 4.2: the boundary-framed surjection count `e_Γ^β` is a function of the pair.
    The induction of `sec:induction` ranges over *all* such pairs simultaneously
    ("the induction is stated globally", l.1213), ordered by `|L_Y|`. }
      (chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p :
        Q2Presentation.Induction.FirstNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor (p : Q2Presentation.Induction.FramedPair) : TypeA non-scalar chief factor of `L_Y` that is **first**: every chief factor strictly
    below it (i.e. with upper term contained in `lower`) is scalar.  This is the manuscript's
    choice `S ◁ P` at l.3616–3623 ("all chief factors below `S` are scalar and `V` is the
    first non-scalar simple factor"), which `lem:collapse` requires for the coprime step
    `[S, Ñ] = 1`. 
          pQ2Presentation.Induction.FramedPair)
      (KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor :
        Q2Presentation.Induction.KernelMinimalQ2Presentation.Induction.KernelMinimal {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.NonScalarChiefFactor p) : TypeThe manuscript's kernel choice (l.3623): `K ◁ Y`, `K ≤ P`, `KS = P`, and `K` is
    **⊆-minimal** with these properties — stated as: any `Y`-normal `K' ≤ K` still joining
    with `S` to `P` equals `K`.  (This, not leastness among all candidates, is what
    `lem:simplehead` and `lem:collapse` use: both apply it to subgroups of `K`.) 
          chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p.toNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor.toNonScalarChiefFactor {p : Q2Presentation.Induction.FramedPair}
      (self : Q2Presentation.Induction.FirstNonScalarChiefFactor p) : Q2Presentation.Induction.NonScalarChiefFactor p)
      (lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) :
        Module.DualModule.Dual.{u_4, u_5} (R : Type u_4) (M : Type u_5) [Semiring R] [AddCommMonoid M] [Module R M] : Type (max u_5 u_4)The left dual space of an R-module M is the R-module of linear maps `M → R`.  (ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2)
          (Q2Presentation.Lifting.NAddQ2Presentation.Lifting.NAdd {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) : TypeThe additive `F₂`-carrier of an elementary kernel. 
            (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian. 
              chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)))
      (hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K) :
        lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`.
          Q2Presentation.Lifting.conjInvDualsQ2Presentation.Lifting.conjInvDuals {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) :
      Submodule (ZMod 2) (Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E))The conjugation-invariant duals `X = (R^∨)^Y = (R^∨)^C` of an
    elementary kernel (consumer spelling of the manuscript's `𝒳_R`,
    §7 l.3720–3723). 
            (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian. 
              chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)) :
      Q2Presentation.Induction.EdgeHalvingGammaAQ2Presentation.Induction.EdgeHalvingGammaA {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) : Prop**The R4a per-fibre halving, candidate source** — THE sharply-scoped
    R4a residual (manuscript `lem:radicaledge` step 6, l.4006–4019: exact
    variation formula + perfect degree-one duality; candidate half =
    `prop:chainmap` l.1687 + `prop:defduality`-grade degree-one content):
    over each `g_C`, exactly half of the weak `M`-lifts are λ-liftable,
    stated division-free per fibre.  Deliberately does NOT assert the fibre
    size `2^{2·dim M}` (that is the separate, PROVEN `lem:elementarystage`
    obligation — design §6.3), and is deliberately NOT conditioned here on
    `¬ ZeroEdge` — the conditioning belongs to its (future, coordinated)
    keep `sec7_edgeHalving_gammaA (hne) (hedge) : EdgeHalvingGammaA …`,
    whose dissolution program is recorded in the design §4.6: (i) the ledger
    variation formula from U3's `edgeDefect` calculus + the weak-base defect
    engine; (ii) `edgeShadow ≠ 0` on the `T`-cocycle space by the
    trivial-chain dévissage over the PROVEN `Sec7TrivialChainData`;
    (iii) the free-orbit torsor bookkeeping. 
          chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K) Iff (a b : Prop) : PropIf and only if, or logical bi-implication. `a ↔ b` means that `a` implies `b` and vice versa.
    By `propext`, this implies that `a` and `b` are equal and hence any expression involving `a`
    is equivalent to the corresponding expression with `b` instead.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `↔` in identifiers is `iff`.
    
     * The recommended spelling of `<->` in identifiers is `iff` (prefer `↔` over `<->`).
        
          (gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GammaA
      (Q2Presentation.TorsorProgram.quotientFramedTarget (Q2Presentation.Induction.XRZero.xrChild chief K).fst
        (Q2Presentation.Induction.mChildKernel chief K).N ⋯ ⋯)
      (Q2Presentation.TorsorProgram.quotientFrame (Q2Presentation.Induction.XRZero.xrChild chief K).fst
        (Q2Presentation.Induction.mChildKernel chief K).N ⋯ ⋯ (Q2Presentation.Induction.XRZero.xrChild chief K).snd) :
            Q2Presentation.boundaryFramedSurjQ2Presentation.boundaryFramedSurj {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ)
      (Yt : Q2Presentation.BoundaryFramedTarget) (F : Q2Presentation.BoundaryFrame Yt) : TypeThe **boundary-framed surjections** `e_Γ^β(𝒴)` (manuscript `eq:eGamma`): the
    continuous surjections `f : Γ ↠ Y` whose induced map to `H × E` is the prescribed
    `β ∘ b_Γ`, i.e. `q_Y ∘ f = β ∘ b_Γ`.  This is the subtype counted in Theorem 4.2;
    its cardinality is `e_Γ^β(𝒴)`. 
              Q2Presentation.boundaryPackage_GammaAQ2Presentation.boundaryPackage_GammaA : Q2Presentation.BoundaryPackage Q2Presentation.GammaA**The candidate boundary package** (manuscript Prop 3.14, `prop:compatiblemarking`;
    plan Turn 4 §6).  The Stage-C data of `Γ_A`: the common tame quotient `gammaTameMap`,
    the maximal pro-`2` quotient `p : Γ_A ⟶ Π`, and the common unramified character
    `ν = gammaTameMap ≫ ν_t`, through which both factor. 
              (Q2Presentation.TorsorProgram.quotientFramedTargetQ2Presentation.TorsorProgram.quotientFramedTarget (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y)
      [hNn : N.Normal] (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) : Q2Presentation.BoundaryFramedTarget**The quotient framed target** `Y/N` (same `H`, same `E`, image wild kernel). 
                (Q2Presentation.Induction.XRZero.xrChildQ2Presentation.Induction.XRZero.xrChild {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPairThe `𝒳_R = 0` child: the quotient framed pair at `N = Φ`-layer. 
                    chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.
    
                (Q2Presentation.Induction.mChildKernelQ2Presentation.Induction.mChildKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel (Q2Presentation.Induction.XRZero.xrChild chief K).fst**The elementary `M`-kernel at the child** `B = Y/Φ(K)`
    (`lem:simplehead` carrier for `lem:elementarystage`): `N = M' = K/Φ(K)`. 
                    chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).NQ2Presentation.Lifting.ElementaryKernel.N {Yt : Q2Presentation.BoundaryFramedTarget}
      (self : Q2Presentation.Lifting.ElementaryKernel Yt) : Subgroup Yt.Y
                 )
              (Q2Presentation.TorsorProgram.quotientFrameQ2Presentation.TorsorProgram.quotientFrame (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y)
      [hNn : N.Normal] (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) (F : Q2Presentation.BoundaryFrame Yt) :
      Q2Presentation.BoundaryFrame (Q2Presentation.TorsorProgram.quotientFramedTarget Yt N hNLY hNθ)The frame transports verbatim (`H`, `E`, `α`, `ψ`, `β` unchanged). 
                (Q2Presentation.Induction.XRZero.xrChildQ2Presentation.Induction.XRZero.xrChild {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPairThe `𝒳_R = 0` child: the quotient framed pair at `N = Φ`-layer. 
                    chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.
    
                (Q2Presentation.Induction.mChildKernelQ2Presentation.Induction.mChildKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel (Q2Presentation.Induction.XRZero.xrChild chief K).fst**The elementary `M`-kernel at the child** `B = Y/Φ(K)`
    (`lem:simplehead` carrier for `lem:elementarystage`): `N = M' = K/Φ(K)`. 
                    chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).NQ2Presentation.Lifting.ElementaryKernel.N {Yt : Q2Presentation.BoundaryFramedTarget}
      (self : Q2Presentation.Lifting.ElementaryKernel Yt) : Subgroup Yt.Y
                 
                (Q2Presentation.Induction.XRZero.xrChildQ2Presentation.Induction.XRZero.xrChild {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPairThe `𝒳_R = 0` child: the quotient framed pair at `N = Φ`-layer. 
                    chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.
    )),
          2 *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
              Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number.
    If `α` is infinite, `Nat.card α = 0`. 
                {Subtype.{u} {α : Sort u} (p : α → Prop) : Sort (max 1 u)All the elements of a type that satisfy a predicate.
    
    `Subtype p`, usually written `{ x : α // p x }` or `{ x // p x }`, contains all elements `x : α` for
    which `p x` is true. Its constructor is a pair of the value and the proof that it satisfies the
    predicate. In run-time code, `{ x : α // p x }` is represented identically to `α`.
    
    There is a coercion from `{ x : α // p x }` to `α`, so elements of a subtype may be used where the
    underlying type is expected.
    
    Examples:
     * `{ n : Nat // n % 2 = 0 }` is the type of even numbers.
     * `{ xs : Array String // xs.size = 5 }` is the type of arrays with five `String`s.
     * Given `xs : List α`, `List { x : α // x ∈ xs }` is the type of lists in which all elements are
       contained in `xs`.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `{ x // p x }` in identifiers is `subtype`. fQ2Presentation.TorsorProgram.coverLiftTotal (Q2Presentation.Induction.XRZero.xrChild chief K).fst
      (Q2Presentation.Induction.mChildKernel chief K).N Q2Presentation.boundaryPackage_GammaA
      (Q2Presentation.Induction.XRZero.xrChild chief K).snd //Subtype.{u} {α : Sort u} (p : α → Prop) : Sort (max 1 u)All the elements of a type that satisfy a predicate.
    
    `Subtype p`, usually written `{ x : α // p x }` or `{ x // p x }`, contains all elements `x : α` for
    which `p x` is true. Its constructor is a pair of the value and the proof that it satisfies the
    predicate. In run-time code, `{ x : α // p x }` is represented identically to `α`.
    
    There is a coercion from `{ x : α // p x }` to `α`, so elements of a subtype may be used where the
    underlying type is expected.
    
    Examples:
     * `{ n : Nat // n % 2 = 0 }` is the type of even numbers.
     * `{ xs : Array String // xs.size = 5 }` is the type of arrays with five `String`s.
     * Given `xs : List α`, `List { x : α // x ∈ xs }` is the type of lists in which all elements are
       contained in `xs`.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `{ x // p x }` in identifiers is `subtype`.
                  Q2Presentation.TorsorProgram.coverLiftBaseQ2Presentation.TorsorProgram.coverLiftBase (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y)
      [hNn : N.Normal] (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) {Γ : ProfiniteGrp.{0}}
      (B : Q2Presentation.BoundaryPackage Γ) (F : Q2Presentation.BoundaryFrame Yt)
      (t : Q2Presentation.TorsorProgram.coverLiftTotal Yt N B F) :
      Q2Presentation.boundaryFramedSurj B (Q2Presentation.TorsorProgram.quotientFramedTarget Yt N hNLY hNθ)
        (Q2Presentation.TorsorProgram.quotientFrame Yt N hNLY hNθ F)Fibration base 1: the induced child-framed surjection (mirror of
    `restrictSurj`, `Boundary/LiftFibration.lean`). 
                        (Q2Presentation.Induction.XRZero.xrChildQ2Presentation.Induction.XRZero.xrChild {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPairThe `𝒳_R = 0` child: the quotient framed pair at `N = Φ`-layer. 
                            chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.
    
                        (Q2Presentation.Induction.mChildKernelQ2Presentation.Induction.mChildKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel (Q2Presentation.Induction.XRZero.xrChild chief K).fst**The elementary `M`-kernel at the child** `B = Y/Φ(K)`
    (`lem:simplehead` carrier for `lem:elementarystage`): `N = M' = K/Φ(K)`. 
                            chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).NQ2Presentation.Lifting.ElementaryKernel.N {Yt : Q2Presentation.BoundaryFramedTarget}
      (self : Q2Presentation.Lifting.ElementaryKernel Yt) : Subgroup Yt.Y
                         
                        Q2Presentation.boundaryPackage_GammaAQ2Presentation.boundaryPackage_GammaA : Q2Presentation.BoundaryPackage Q2Presentation.GammaA**The candidate boundary package** (manuscript Prop 3.14, `prop:compatiblemarking`;
    plan Turn 4 §6).  The Stage-C data of `Γ_A`: the common tame quotient `gammaTameMap`,
    the maximal pro-`2` quotient `p : Γ_A ⟶ Π`, and the common unramified character
    `ν = gammaTameMap ≫ ν_t`, through which both factor. 
                        (Q2Presentation.Induction.XRZero.xrChildQ2Presentation.Induction.XRZero.xrChild {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPairThe `𝒳_R = 0` child: the quotient framed pair at `N = Φ`-layer. 
                            chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.
    
                        fQ2Presentation.TorsorProgram.coverLiftTotal (Q2Presentation.Induction.XRZero.xrChild chief K).fst
      (Q2Presentation.Induction.mChildKernel chief K).N Q2Presentation.boundaryPackage_GammaA
      (Q2Presentation.Induction.XRZero.xrChild chief K).snd =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`.
                      gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GammaA
      (Q2Presentation.TorsorProgram.quotientFramedTarget (Q2Presentation.Induction.XRZero.xrChild chief K).fst
        (Q2Presentation.Induction.mChildKernel chief K).N ⋯ ⋯)
      (Q2Presentation.TorsorProgram.quotientFrame (Q2Presentation.Induction.XRZero.xrChild chief K).fst
        (Q2Presentation.Induction.mChildKernel chief K).N ⋯ ⋯ (Q2Presentation.Induction.XRZero.xrChild chief K).snd) And (a b : Prop) : Prop`And a b`, or `a ∧ b`, is the conjunction of propositions. It can be
    constructed and destructed like a pair: if `ha : a` and `hb : b` then
    `⟨ha, hb⟩ : a ∧ b`, and if `h : a ∧ b` then `h.left : a` and `h.right : b`.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∧` in identifiers is `and`.
    
     * The recommended spelling of `/\` in identifiers is `and` (prefer `∧` over `/\`).
                    Q2Presentation.Induction.coverLiftableWeakQ2Presentation.Induction.coverLiftableWeak {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) {Γ : ProfiniteGrp.{0}}
      (B : Q2Presentation.BoundaryPackage Γ)
      (f :
        Q2Presentation.TorsorProgram.coverLiftTotal (Q2Presentation.Induction.XRZero.xrChild chief K).fst
          (Q2Presentation.Induction.mChildKernel chief K).N B (Q2Presentation.Induction.XRZero.xrChild chief K).snd) :
      Prop**λ-liftability of a weak `M`-lift** (`lem:properimagesubtraction`
    l.4269–4271): a point of the W2a total space at the child M-kernel is
    λ-liftable when some framed hom into `B_λ` projects to it along
    `p_λ = scalarCoverProj` — surjectivity onto `B_λ` NOT imposed (weak
    solvability; images are stratified by `eq:recursionR2`/`R3`). 
                      chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)
                      Q2Presentation.boundaryPackage_GammaAQ2Presentation.boundaryPackage_GammaA : Q2Presentation.BoundaryPackage Q2Presentation.GammaA**The candidate boundary package** (manuscript Prop 3.14, `prop:compatiblemarking`;
    plan Turn 4 §6).  The Stage-C data of `Γ_A`: the common tame quotient `gammaTameMap`,
    the maximal pro-`2` quotient `p : Γ_A ⟶ Π`, and the common unramified character
    `ν = gammaTameMap ≫ ν_t`, through which both factor. 
                      fQ2Presentation.TorsorProgram.coverLiftTotal (Q2Presentation.Induction.XRZero.xrChild chief K).fst
      (Q2Presentation.Induction.mChildKernel chief K).N Q2Presentation.boundaryPackage_GammaA
      (Q2Presentation.Induction.XRZero.xrChild chief K).snd }Subtype.{u} {α : Sort u} (p : α → Prop) : Sort (max 1 u)All the elements of a type that satisfy a predicate.
    
    `Subtype p`, usually written `{ x : α // p x }` or `{ x // p x }`, contains all elements `x : α` for
    which `p x` is true. Its constructor is a pair of the value and the proof that it satisfies the
    predicate. In run-time code, `{ x : α // p x }` is represented identically to `α`.
    
    There is a coercion from `{ x : α // p x }` to `α`, so elements of a subtype may be used where the
    underlying type is expected.
    
    Examples:
     * `{ n : Nat // n % 2 = 0 }` is the type of even numbers.
     * `{ xs : Array String // xs.size = 5 }` is the type of arrays with five `String`s.
     * Given `xs : List α`, `List { x : α // x ∈ xs }` is the type of lists in which all elements are
       contained in `xs`.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `{ x // p x }` in identifiers is `subtype`. =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`.
            2 ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`.
              (HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.2 *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
                Q2Presentation.Induction.dimMQ2Presentation.Induction.dimM {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : ℕ`dim M` (the `2^{2·dimM}` of `lem:elementarystage`). 
                  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
    **Keep-1/keep-2 refutation target, candidate side** (design §5.2): the
    halving clause in closed numeric form — half of the PROVEN fibre size
    `2^{2·dimM}` per fibre (`coverLiftFibreEquiv` + `mChild_liftHom_card_gammaA`,
    the `lem:elementarystage` count).  A concrete per-`g` counterexample
    refutes the recovered halving, hence keep 1. 
  • theoremdefined in Q2Presentation/Induction/MStageChild.lean
    complete
    theorem Q2Presentation.Induction.mChild_rowMap_surjective
      {pQ2Presentation.Induction.FramedPair : Q2Presentation.Induction.FramedPairQ2Presentation.Induction.FramedPair : Type 1A **framed pair** `(𝒴, F)`: a boundary-framed marked target together with a
    boundary frame for it (manuscript Definition 4.1 + `eq:beta`).  This is the index of
    Theorem 4.2: the boundary-framed surjection count `e_Γ^β` is a function of the pair.
    The induction of `sec:induction` ranges over *all* such pairs simultaneously
    ("the induction is stated globally", l.1213), ordered by `|L_Y|`. }
      (chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p : Q2Presentation.Induction.FirstNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor (p : Q2Presentation.Induction.FramedPair) : TypeA non-scalar chief factor of `L_Y` that is **first**: every chief factor strictly
    below it (i.e. with upper term contained in `lower`) is scalar.  This is the manuscript's
    choice `S ◁ P` at l.3616–3623 ("all chief factors below `S` are scalar and `V` is the
    first non-scalar simple factor"), which `lem:collapse` requires for the coprime step
    `[S, Ñ] = 1`.  pQ2Presentation.Induction.FramedPair)
      (KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor :
        Q2Presentation.Induction.KernelMinimalQ2Presentation.Induction.KernelMinimal {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.NonScalarChiefFactor p) : TypeThe manuscript's kernel choice (l.3623): `K ◁ Y`, `K ≤ P`, `KS = P`, and `K` is
    **⊆-minimal** with these properties — stated as: any `Y`-normal `K' ≤ K` still joining
    with `S` to `P` equals `K`.  (This, not leastness among all candidates, is what
    `lem:simplehead` and `lem:collapse` use: both apply it to subgroups of `K`.)  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p.toNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor.toNonScalarChiefFactor {p : Q2Presentation.Induction.FramedPair}
      (self : Q2Presentation.Induction.FirstNonScalarChiefFactor p) : Q2Presentation.Induction.NonScalarChiefFactor p)
      (gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GammaA
      (Q2Presentation.TorsorProgram.quotientFramedTarget (Q2Presentation.Induction.XRZero.xrChild chief K).fst
        (Q2Presentation.Induction.mChildKernel chief K).N ⋯ ⋯)
      (Q2Presentation.TorsorProgram.quotientFrame (Q2Presentation.Induction.XRZero.xrChild chief K).fst
        (Q2Presentation.Induction.mChildKernel chief K).N ⋯ ⋯ (Q2Presentation.Induction.XRZero.xrChild chief K).snd) :
        Q2Presentation.boundaryFramedSurjQ2Presentation.boundaryFramedSurj {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ)
      (Yt : Q2Presentation.BoundaryFramedTarget) (F : Q2Presentation.BoundaryFrame Yt) : TypeThe **boundary-framed surjections** `e_Γ^β(𝒴)` (manuscript `eq:eGamma`): the
    continuous surjections `f : Γ ↠ Y` whose induced map to `H × E` is the prescribed
    `β ∘ b_Γ`, i.e. `q_Y ∘ f = β ∘ b_Γ`.  This is the subtype counted in Theorem 4.2;
    its cardinality is `e_Γ^β(𝒴)`. 
          Q2Presentation.boundaryPackage_GammaAQ2Presentation.boundaryPackage_GammaA : Q2Presentation.BoundaryPackage Q2Presentation.GammaA**The candidate boundary package** (manuscript Prop 3.14, `prop:compatiblemarking`;
    plan Turn 4 §6).  The Stage-C data of `Γ_A`: the common tame quotient `gammaTameMap`,
    the maximal pro-`2` quotient `p : Γ_A ⟶ Π`, and the common unramified character
    `ν = gammaTameMap ≫ ν_t`, through which both factor. 
          (Q2Presentation.TorsorProgram.quotientFramedTargetQ2Presentation.TorsorProgram.quotientFramedTarget (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y)
      [hNn : N.Normal] (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) : Q2Presentation.BoundaryFramedTarget**The quotient framed target** `Y/N` (same `H`, same `E`, image wild kernel). 
            (Q2Presentation.Induction.XRZero.xrChildQ2Presentation.Induction.XRZero.xrChild {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPairThe `𝒳_R = 0` child: the quotient framed pair at `N = Φ`-layer.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.
    
            (Q2Presentation.Induction.mChildKernelQ2Presentation.Induction.mChildKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel (Q2Presentation.Induction.XRZero.xrChild chief K).fst**The elementary `M`-kernel at the child** `B = Y/Φ(K)`
    (`lem:simplehead` carrier for `lem:elementarystage`): `N = M' = K/Φ(K)`.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).NQ2Presentation.Lifting.ElementaryKernel.N {Yt : Q2Presentation.BoundaryFramedTarget}
      (self : Q2Presentation.Lifting.ElementaryKernel Yt) : Subgroup Yt.Y  )
          (Q2Presentation.TorsorProgram.quotientFrameQ2Presentation.TorsorProgram.quotientFrame (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y)
      [hNn : N.Normal] (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) (F : Q2Presentation.BoundaryFrame Yt) :
      Q2Presentation.BoundaryFrame (Q2Presentation.TorsorProgram.quotientFramedTarget Yt N hNLY hNθ)The frame transports verbatim (`H`, `E`, `α`, `ψ`, `β` unchanged). 
            (Q2Presentation.Induction.XRZero.xrChildQ2Presentation.Induction.XRZero.xrChild {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPairThe `𝒳_R = 0` child: the quotient framed pair at `N = Φ`-layer.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.
    
            (Q2Presentation.Induction.mChildKernelQ2Presentation.Induction.mChildKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel (Q2Presentation.Induction.XRZero.xrChild chief K).fst**The elementary `M`-kernel at the child** `B = Y/Φ(K)`
    (`lem:simplehead` carrier for `lem:elementarystage`): `N = M' = K/Φ(K)`.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).NQ2Presentation.Lifting.ElementaryKernel.N {Yt : Q2Presentation.BoundaryFramedTarget}
      (self : Q2Presentation.Lifting.ElementaryKernel Yt) : Subgroup Yt.Y  
            (Q2Presentation.Induction.XRZero.xrChildQ2Presentation.Induction.XRZero.xrChild {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPairThe `𝒳_R = 0` child: the quotient framed pair at `N = Φ`-layer.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.
    ))
      (qQ2Presentation.Marking (Q2Presentation.Induction.XRZero.xrChild chief K).fst.Y :
        Q2Presentation.MarkingQ2Presentation.Marking.{u_1} (G : Type u_1) [Group G] : Type u_1A marking assigns a group element to each of the four generators. 
          (Q2Presentation.Induction.XRZero.xrChildQ2Presentation.Induction.XRZero.xrChild {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPairThe `𝒳_R = 0` child: the quotient framed pair at `N = Φ`-layer.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.
    .YQ2Presentation.BoundaryFramedTarget.Y (self : Q2Presentation.BoundaryFramedTarget) : TypeThe finite target group `Y`. )
      (hlift∀ (a : Q2Presentation.Gen),
      (QuotientGroup.mk' (Q2Presentation.Induction.mChildKernel chief K).N) (q a) =
        (ProfiniteGrp.Hom.hom (↑g).hom) (Q2Presentation.gammaGen a) :
         (aQ2Presentation.Gen : Q2Presentation.GenQ2Presentation.Gen : TypeThe four marked generators of the candidate presentation. ),
          (QuotientGroup.mk'QuotientGroup.mk'.{u_1} {G : Type u_1} [Group G] (N : Subgroup G) [nN : N.Normal] : G →* G ⧸ NThe group homomorphism from `G` to `G/N`. 
                (Q2Presentation.Induction.mChildKernelQ2Presentation.Induction.mChildKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel (Q2Presentation.Induction.XRZero.xrChild chief K).fst**The elementary `M`-kernel at the child** `B = Y/Φ(K)`
    (`lem:simplehead` carrier for `lem:elementarystage`): `N = M' = K/Φ(K)`.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).NQ2Presentation.Lifting.ElementaryKernel.N {Yt : Q2Presentation.BoundaryFramedTarget}
      (self : Q2Presentation.Lifting.ElementaryKernel Yt) : Subgroup Yt.Y)
              (qQ2Presentation.Marking (Q2Presentation.Induction.XRZero.xrChild chief K).fst.Y aQ2Presentation.Gen) =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`.
            (ProfiniteGrp.Hom.homProfiniteGrp.Hom.hom.{u} {M N : ProfiniteGrp.{u}} (f : M.Hom N) : ↑M.toProfinite.toTop →ₜ* ↑N.toProfinite.toTopThe underlying `ContinuousMonoidHom`.  (↑gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GammaA
      (Q2Presentation.TorsorProgram.quotientFramedTarget (Q2Presentation.Induction.XRZero.xrChild chief K).fst
        (Q2Presentation.Induction.mChildKernel chief K).N ⋯ ⋯)
      (Q2Presentation.TorsorProgram.quotientFrame (Q2Presentation.Induction.XRZero.xrChild chief K).fst
        (Q2Presentation.Induction.mChildKernel chief K).N ⋯ ⋯ (Q2Presentation.Induction.XRZero.xrChild chief K).snd)).homQ2Presentation.Profinite.SurjContHom.hom.{u} {P Q : ProfiniteGrp.{u}}
      (self : Q2Presentation.Profinite.SurjContHom P Q) : P ⟶ QThe underlying morphism of profinite groups. ) (Q2Presentation.gammaGenQ2Presentation.gammaGen (a : Q2Presentation.Gen) : ↑Q2Presentation.GammaA.toProfinite.toTopThe four universal generators `σ, τ, x₀, x₁` of `Γ_A`, as the compatible
    families of marked generators.  aQ2Presentation.Gen))
      (hframe∀ (a : Q2Presentation.Gen),
      (Q2Presentation.Induction.XRZero.xrChild chief K).fst.qYMap (q a) =
        (ProfiniteGrp.Hom.hom (Q2Presentation.Induction.XRZero.xrChild chief K).snd.beta)
          ((ProfiniteGrp.Hom.hom Q2Presentation.boundaryPackage_GammaA.toBoundary) (Q2Presentation.gammaGen a)) :
         (aQ2Presentation.Gen : Q2Presentation.GenQ2Presentation.Gen : TypeThe four marked generators of the candidate presentation. ),
          (Q2Presentation.Induction.XRZero.xrChildQ2Presentation.Induction.XRZero.xrChild {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPairThe `𝒳_R = 0` child: the quotient framed pair at `N = Φ`-layer.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.
    .qYMapQ2Presentation.BoundaryFramedTarget.qYMap (Yt : Q2Presentation.BoundaryFramedTarget) :
      Yt.Y →* Yt.H × Multiplicative Yt.EThe combined map `q_Y = (π_Y, θ_Y) : Y →* H × Multiplicative E` of manuscript
    Definition 4.1: the data the boundary-framed count holds fixed. 
              (qQ2Presentation.Marking (Q2Presentation.Induction.XRZero.xrChild chief K).fst.Y aQ2Presentation.Gen) =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`.
            (ProfiniteGrp.Hom.homProfiniteGrp.Hom.hom.{u} {M N : ProfiniteGrp.{u}} (f : M.Hom N) : ↑M.toProfinite.toTop →ₜ* ↑N.toProfinite.toTopThe underlying `ContinuousMonoidHom`. 
                (Q2Presentation.Induction.XRZero.xrChildQ2Presentation.Induction.XRZero.xrChild {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPairThe `𝒳_R = 0` child: the quotient framed pair at `N = Φ`-layer.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.
    .betaQ2Presentation.BoundaryFrame.beta {Yt : Q2Presentation.BoundaryFramedTarget} (self : Q2Presentation.BoundaryFrame Yt) :
      Q2Presentation.Boundary ⟶ ProfiniteGrp.ofFiniteGrp (FiniteGrp.of (Yt.H × Multiplicative Yt.E))The induced boundary map `β : ∂_bd → H × Multiplicative E`. )
              ((ProfiniteGrp.Hom.homProfiniteGrp.Hom.hom.{u} {M N : ProfiniteGrp.{u}} (f : M.Hom N) : ↑M.toProfinite.toTop →ₜ* ↑N.toProfinite.toTopThe underlying `ContinuousMonoidHom`. 
                  Q2Presentation.boundaryPackage_GammaAQ2Presentation.boundaryPackage_GammaA : Q2Presentation.BoundaryPackage Q2Presentation.GammaA**The candidate boundary package** (manuscript Prop 3.14, `prop:compatiblemarking`;
    plan Turn 4 §6).  The Stage-C data of `Γ_A`: the common tame quotient `gammaTameMap`,
    the maximal pro-`2` quotient `p : Γ_A ⟶ Π`, and the common unramified character
    `ν = gammaTameMap ≫ ν_t`, through which both factor. .toBoundaryQ2Presentation.BoundaryPackage.toBoundary {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) :
      Γ ⟶ Q2Presentation.Boundary**The boundary map** `b_Γ : Γ ⟶ ∂_bd` (manuscript `eq:boundarymap`), the universal
    map into the fibre product induced by the compatible pair `(tameMap, pro2Map)`. )
                (Q2Presentation.gammaGenQ2Presentation.gammaGen (a : Q2Presentation.Gen) : ↑Q2Presentation.GammaA.toProfinite.toTopThe four universal generators `σ, τ, x₀, x₁` of `Γ_A`, as the compatible
    families of marked generators.  aQ2Presentation.Gen))) :
      Function.SurjectiveFunction.Surjective.{u_1, u_2} {α : Sort u_1} {β : Sort u_2} (f : α → β) : PropA function `f : α → β` is called surjective if every `b : β` is equal to `f a`
    for some `a : α`. 
        (Q2Presentation.Lifting.rowMapQ2Presentation.Lifting.rowMap {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) [Finite Yt.Y] (q : Q2Presentation.Marking Yt.Y) :
      (Q2Presentation.Gen → Q2Presentation.Lifting.NAdd E) →ₗ[ZMod 2]
        Q2Presentation.Lifting.NAdd E × Q2Presentation.Lifting.NAdd E**The row map**: both relator shadows, as one linear map. 
            (Q2Presentation.Induction.mChildKernelQ2Presentation.Induction.mChildKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel (Q2Presentation.Induction.XRZero.xrChild chief K).fst**The elementary `M`-kernel at the child** `B = Y/Φ(K)`
    (`lem:simplehead` carrier for `lem:elementarystage`): `N = M' = K/Φ(K)`.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) qQ2Presentation.Marking (Q2Presentation.Induction.XRZero.xrChild chief K).fst.Y)
    theorem Q2Presentation.Induction.mChild_rowMap_surjective
      {pQ2Presentation.Induction.FramedPair :
        Q2Presentation.Induction.FramedPairQ2Presentation.Induction.FramedPair : Type 1A **framed pair** `(𝒴, F)`: a boundary-framed marked target together with a
    boundary frame for it (manuscript Definition 4.1 + `eq:beta`).  This is the index of
    Theorem 4.2: the boundary-framed surjection count `e_Γ^β` is a function of the pair.
    The induction of `sec:induction` ranges over *all* such pairs simultaneously
    ("the induction is stated globally", l.1213), ordered by `|L_Y|`. }
      (chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p :
        Q2Presentation.Induction.FirstNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor (p : Q2Presentation.Induction.FramedPair) : TypeA non-scalar chief factor of `L_Y` that is **first**: every chief factor strictly
    below it (i.e. with upper term contained in `lower`) is scalar.  This is the manuscript's
    choice `S ◁ P` at l.3616–3623 ("all chief factors below `S` are scalar and `V` is the
    first non-scalar simple factor"), which `lem:collapse` requires for the coprime step
    `[S, Ñ] = 1`. 
          pQ2Presentation.Induction.FramedPair)
      (KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor :
        Q2Presentation.Induction.KernelMinimalQ2Presentation.Induction.KernelMinimal {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.NonScalarChiefFactor p) : TypeThe manuscript's kernel choice (l.3623): `K ◁ Y`, `K ≤ P`, `KS = P`, and `K` is
    **⊆-minimal** with these properties — stated as: any `Y`-normal `K' ≤ K` still joining
    with `S` to `P` equals `K`.  (This, not leastness among all candidates, is what
    `lem:simplehead` and `lem:collapse` use: both apply it to subgroups of `K`.) 
          chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p.toNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor.toNonScalarChiefFactor {p : Q2Presentation.Induction.FramedPair}
      (self : Q2Presentation.Induction.FirstNonScalarChiefFactor p) : Q2Presentation.Induction.NonScalarChiefFactor p)
      (gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GammaA
      (Q2Presentation.TorsorProgram.quotientFramedTarget (Q2Presentation.Induction.XRZero.xrChild chief K).fst
        (Q2Presentation.Induction.mChildKernel chief K).N ⋯ ⋯)
      (Q2Presentation.TorsorProgram.quotientFrame (Q2Presentation.Induction.XRZero.xrChild chief K).fst
        (Q2Presentation.Induction.mChildKernel chief K).N ⋯ ⋯ (Q2Presentation.Induction.XRZero.xrChild chief K).snd) :
        Q2Presentation.boundaryFramedSurjQ2Presentation.boundaryFramedSurj {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ)
      (Yt : Q2Presentation.BoundaryFramedTarget) (F : Q2Presentation.BoundaryFrame Yt) : TypeThe **boundary-framed surjections** `e_Γ^β(𝒴)` (manuscript `eq:eGamma`): the
    continuous surjections `f : Γ ↠ Y` whose induced map to `H × E` is the prescribed
    `β ∘ b_Γ`, i.e. `q_Y ∘ f = β ∘ b_Γ`.  This is the subtype counted in Theorem 4.2;
    its cardinality is `e_Γ^β(𝒴)`. 
          Q2Presentation.boundaryPackage_GammaAQ2Presentation.boundaryPackage_GammaA : Q2Presentation.BoundaryPackage Q2Presentation.GammaA**The candidate boundary package** (manuscript Prop 3.14, `prop:compatiblemarking`;
    plan Turn 4 §6).  The Stage-C data of `Γ_A`: the common tame quotient `gammaTameMap`,
    the maximal pro-`2` quotient `p : Γ_A ⟶ Π`, and the common unramified character
    `ν = gammaTameMap ≫ ν_t`, through which both factor. 
          (Q2Presentation.TorsorProgram.quotientFramedTargetQ2Presentation.TorsorProgram.quotientFramedTarget (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y)
      [hNn : N.Normal] (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) : Q2Presentation.BoundaryFramedTarget**The quotient framed target** `Y/N` (same `H`, same `E`, image wild kernel). 
            (Q2Presentation.Induction.XRZero.xrChildQ2Presentation.Induction.XRZero.xrChild {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPairThe `𝒳_R = 0` child: the quotient framed pair at `N = Φ`-layer. 
                chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.
    
            (Q2Presentation.Induction.mChildKernelQ2Presentation.Induction.mChildKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel (Q2Presentation.Induction.XRZero.xrChild chief K).fst**The elementary `M`-kernel at the child** `B = Y/Φ(K)`
    (`lem:simplehead` carrier for `lem:elementarystage`): `N = M' = K/Φ(K)`. 
                chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).NQ2Presentation.Lifting.ElementaryKernel.N {Yt : Q2Presentation.BoundaryFramedTarget}
      (self : Q2Presentation.Lifting.ElementaryKernel Yt) : Subgroup Yt.Y
             )
          (Q2Presentation.TorsorProgram.quotientFrameQ2Presentation.TorsorProgram.quotientFrame (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y)
      [hNn : N.Normal] (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) (F : Q2Presentation.BoundaryFrame Yt) :
      Q2Presentation.BoundaryFrame (Q2Presentation.TorsorProgram.quotientFramedTarget Yt N hNLY hNθ)The frame transports verbatim (`H`, `E`, `α`, `ψ`, `β` unchanged). 
            (Q2Presentation.Induction.XRZero.xrChildQ2Presentation.Induction.XRZero.xrChild {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPairThe `𝒳_R = 0` child: the quotient framed pair at `N = Φ`-layer. 
                chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.
    
            (Q2Presentation.Induction.mChildKernelQ2Presentation.Induction.mChildKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel (Q2Presentation.Induction.XRZero.xrChild chief K).fst**The elementary `M`-kernel at the child** `B = Y/Φ(K)`
    (`lem:simplehead` carrier for `lem:elementarystage`): `N = M' = K/Φ(K)`. 
                chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).NQ2Presentation.Lifting.ElementaryKernel.N {Yt : Q2Presentation.BoundaryFramedTarget}
      (self : Q2Presentation.Lifting.ElementaryKernel Yt) : Subgroup Yt.Y
             
            (Q2Presentation.Induction.XRZero.xrChildQ2Presentation.Induction.XRZero.xrChild {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPairThe `𝒳_R = 0` child: the quotient framed pair at `N = Φ`-layer. 
                chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.
    ))
      (qQ2Presentation.Marking (Q2Presentation.Induction.XRZero.xrChild chief K).fst.Y :
        Q2Presentation.MarkingQ2Presentation.Marking.{u_1} (G : Type u_1) [Group G] : Type u_1A marking assigns a group element to each of the four generators. 
          (Q2Presentation.Induction.XRZero.xrChildQ2Presentation.Induction.XRZero.xrChild {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPairThe `𝒳_R = 0` child: the quotient framed pair at `N = Φ`-layer. 
                chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.
    .YQ2Presentation.BoundaryFramedTarget.Y (self : Q2Presentation.BoundaryFramedTarget) : TypeThe finite target group `Y`. )
      (hlift∀ (a : Q2Presentation.Gen),
      (QuotientGroup.mk' (Q2Presentation.Induction.mChildKernel chief K).N) (q a) =
        (ProfiniteGrp.Hom.hom (↑g).hom) (Q2Presentation.gammaGen a) :
         (aQ2Presentation.Gen : Q2Presentation.GenQ2Presentation.Gen : TypeThe four marked generators of the candidate presentation. ),
          (QuotientGroup.mk'QuotientGroup.mk'.{u_1} {G : Type u_1} [Group G] (N : Subgroup G) [nN : N.Normal] : G →* G ⧸ NThe group homomorphism from `G` to `G/N`. 
                (Q2Presentation.Induction.mChildKernelQ2Presentation.Induction.mChildKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel (Q2Presentation.Induction.XRZero.xrChild chief K).fst**The elementary `M`-kernel at the child** `B = Y/Φ(K)`
    (`lem:simplehead` carrier for `lem:elementarystage`): `N = M' = K/Φ(K)`. 
                    chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).NQ2Presentation.Lifting.ElementaryKernel.N {Yt : Q2Presentation.BoundaryFramedTarget}
      (self : Q2Presentation.Lifting.ElementaryKernel Yt) : Subgroup Yt.Y)
              (qQ2Presentation.Marking (Q2Presentation.Induction.XRZero.xrChild chief K).fst.Y aQ2Presentation.Gen) =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`.
            (ProfiniteGrp.Hom.homProfiniteGrp.Hom.hom.{u} {M N : ProfiniteGrp.{u}} (f : M.Hom N) : ↑M.toProfinite.toTop →ₜ* ↑N.toProfinite.toTopThe underlying `ContinuousMonoidHom`.  (↑gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GammaA
      (Q2Presentation.TorsorProgram.quotientFramedTarget (Q2Presentation.Induction.XRZero.xrChild chief K).fst
        (Q2Presentation.Induction.mChildKernel chief K).N ⋯ ⋯)
      (Q2Presentation.TorsorProgram.quotientFrame (Q2Presentation.Induction.XRZero.xrChild chief K).fst
        (Q2Presentation.Induction.mChildKernel chief K).N ⋯ ⋯ (Q2Presentation.Induction.XRZero.xrChild chief K).snd)).homQ2Presentation.Profinite.SurjContHom.hom.{u} {P Q : ProfiniteGrp.{u}}
      (self : Q2Presentation.Profinite.SurjContHom P Q) : P ⟶ QThe underlying morphism of profinite groups. )
              (Q2Presentation.gammaGenQ2Presentation.gammaGen (a : Q2Presentation.Gen) : ↑Q2Presentation.GammaA.toProfinite.toTopThe four universal generators `σ, τ, x₀, x₁` of `Γ_A`, as the compatible
    families of marked generators.  aQ2Presentation.Gen))
      (hframe∀ (a : Q2Presentation.Gen),
      (Q2Presentation.Induction.XRZero.xrChild chief K).fst.qYMap (q a) =
        (ProfiniteGrp.Hom.hom (Q2Presentation.Induction.XRZero.xrChild chief K).snd.beta)
          ((ProfiniteGrp.Hom.hom Q2Presentation.boundaryPackage_GammaA.toBoundary) (Q2Presentation.gammaGen a)) :
         (aQ2Presentation.Gen : Q2Presentation.GenQ2Presentation.Gen : TypeThe four marked generators of the candidate presentation. ),
          (Q2Presentation.Induction.XRZero.xrChildQ2Presentation.Induction.XRZero.xrChild {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPairThe `𝒳_R = 0` child: the quotient framed pair at `N = Φ`-layer. 
                    chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.
    .qYMapQ2Presentation.BoundaryFramedTarget.qYMap (Yt : Q2Presentation.BoundaryFramedTarget) :
      Yt.Y →* Yt.H × Multiplicative Yt.EThe combined map `q_Y = (π_Y, θ_Y) : Y →* H × Multiplicative E` of manuscript
    Definition 4.1: the data the boundary-framed count holds fixed. 
              (qQ2Presentation.Marking (Q2Presentation.Induction.XRZero.xrChild chief K).fst.Y aQ2Presentation.Gen) =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`.
            (ProfiniteGrp.Hom.homProfiniteGrp.Hom.hom.{u} {M N : ProfiniteGrp.{u}} (f : M.Hom N) : ↑M.toProfinite.toTop →ₜ* ↑N.toProfinite.toTopThe underlying `ContinuousMonoidHom`. 
                (Q2Presentation.Induction.XRZero.xrChildQ2Presentation.Induction.XRZero.xrChild {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPairThe `𝒳_R = 0` child: the quotient framed pair at `N = Φ`-layer. 
                      chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.
    .betaQ2Presentation.BoundaryFrame.beta {Yt : Q2Presentation.BoundaryFramedTarget} (self : Q2Presentation.BoundaryFrame Yt) :
      Q2Presentation.Boundary ⟶ ProfiniteGrp.ofFiniteGrp (FiniteGrp.of (Yt.H × Multiplicative Yt.E))The induced boundary map `β : ∂_bd → H × Multiplicative E`. )
              ((ProfiniteGrp.Hom.homProfiniteGrp.Hom.hom.{u} {M N : ProfiniteGrp.{u}} (f : M.Hom N) : ↑M.toProfinite.toTop →ₜ* ↑N.toProfinite.toTopThe underlying `ContinuousMonoidHom`. 
                  Q2Presentation.boundaryPackage_GammaAQ2Presentation.boundaryPackage_GammaA : Q2Presentation.BoundaryPackage Q2Presentation.GammaA**The candidate boundary package** (manuscript Prop 3.14, `prop:compatiblemarking`;
    plan Turn 4 §6).  The Stage-C data of `Γ_A`: the common tame quotient `gammaTameMap`,
    the maximal pro-`2` quotient `p : Γ_A ⟶ Π`, and the common unramified character
    `ν = gammaTameMap ≫ ν_t`, through which both factor. .toBoundaryQ2Presentation.BoundaryPackage.toBoundary {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) :
      Γ ⟶ Q2Presentation.Boundary**The boundary map** `b_Γ : Γ ⟶ ∂_bd` (manuscript `eq:boundarymap`), the universal
    map into the fibre product induced by the compatible pair `(tameMap, pro2Map)`. )
                (Q2Presentation.gammaGenQ2Presentation.gammaGen (a : Q2Presentation.Gen) : ↑Q2Presentation.GammaA.toProfinite.toTopThe four universal generators `σ, τ, x₀, x₁` of `Γ_A`, as the compatible
    families of marked generators. 
                  aQ2Presentation.Gen))) :
      Function.SurjectiveFunction.Surjective.{u_1, u_2} {α : Sort u_1} {β : Sort u_2} (f : α → β) : PropA function `f : α → β` is called surjective if every `b : β` is equal to `f a`
    for some `a : α`. 
        (Q2Presentation.Lifting.rowMapQ2Presentation.Lifting.rowMap {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) [Finite Yt.Y] (q : Q2Presentation.Marking Yt.Y) :
      (Q2Presentation.Gen → Q2Presentation.Lifting.NAdd E) →ₗ[ZMod 2]
        Q2Presentation.Lifting.NAdd E × Q2Presentation.Lifting.NAdd E**The row map**: both relator shadows, as one linear map. 
            (Q2Presentation.Induction.mChildKernelQ2Presentation.Induction.mChildKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel (Q2Presentation.Induction.XRZero.xrChild chief K).fst**The elementary `M`-kernel at the child** `B = Y/Φ(K)`
    (`lem:simplehead` carrier for `lem:elementarystage`): `N = M' = K/Φ(K)`. 
              chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
            qQ2Presentation.Marking (Q2Presentation.Induction.XRZero.xrChild chief K).fst.Y)
    **Row-map surjectivity at the child M-kernel** (`lem:elementarystage`
    `H² = 0` content, candidate source; design §4.6's first target
    statement). 
  • theoremdefined in Q2Presentation/Induction/MStagePartitionAssembly.lean
    complete
    theorem Q2Presentation.Induction.MStage.sec7_mstage_cochainData
      {pQ2Presentation.Induction.FramedPair : Q2Presentation.Induction.FramedPairQ2Presentation.Induction.FramedPair : Type 1A **framed pair** `(𝒴, F)`: a boundary-framed marked target together with a
    boundary frame for it (manuscript Definition 4.1 + `eq:beta`).  This is the index of
    Theorem 4.2: the boundary-framed surjection count `e_Γ^β` is a function of the pair.
    The induction of `sec:induction` ranges over *all* such pairs simultaneously
    ("the induction is stated globally", l.1213), ordered by `|L_Y|`. }
      (h¬Q2Presentation.Induction.ScalarTerminal p : ¬Not (a : Prop) : Prop`Not p`, or `¬p`, is the negation of `p`. It is defined to be `p → False`,
    so if your goal is `¬p` you can use `intro h` to turn the goal into
    `h : p ⊢ False`, and if you have `hn : ¬p` and `h : p` then `hn h : False`
    and `(hn h).elim` will prove anything.
    For more information: [Propositional Logic](https://lean-lang.org/theorem_proving_in_lean4/propositions_and_proofs.html#propositional-logic)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `¬` in identifiers is `not`.Q2Presentation.Induction.ScalarTerminalQ2Presentation.Induction.ScalarTerminal (p : Q2Presentation.Induction.FramedPair) : Prop**Scalar-terminal framed pair.**  pQ2Presentation.Induction.FramedPair)
      (chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p : Q2Presentation.Induction.FirstNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor (p : Q2Presentation.Induction.FramedPair) : TypeA non-scalar chief factor of `L_Y` that is **first**: every chief factor strictly
    below it (i.e. with upper term contained in `lower`) is scalar.  This is the manuscript's
    choice `S ◁ P` at l.3616–3623 ("all chief factors below `S` are scalar and `V` is the
    first non-scalar simple factor"), which `lem:collapse` requires for the coprime step
    `[S, Ñ] = 1`.  pQ2Presentation.Induction.FramedPair)
      (KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor :
        Q2Presentation.Induction.KernelMinimalQ2Presentation.Induction.KernelMinimal {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.NonScalarChiefFactor p) : TypeThe manuscript's kernel choice (l.3623): `K ◁ Y`, `K ≤ P`, `KS = P`, and `K` is
    **⊆-minimal** with these properties — stated as: any `Y`-normal `K' ≤ K` still joining
    with `S` to `P` equals `K`.  (This, not leastness among all candidates, is what
    `lem:simplehead` and `lem:collapse` use: both apply it to subgroups of `K`.)  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p.toNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor.toNonScalarChiefFactor {p : Q2Presentation.Induction.FramedPair}
      (self : Q2Presentation.Induction.FirstNonScalarChiefFactor p) : Q2Presentation.Induction.NonScalarChiefFactor p)
      (hRNat.card ↥(Q2Presentation.Induction.kernelFrattini K) = 1 : Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number.
    If `α` is infinite, `Nat.card α = 0`.  (Q2Presentation.Induction.kernelFrattiniQ2Presentation.Induction.kernelFrattini {p : Q2Presentation.Induction.FramedPair}
      {chief : Q2Presentation.Induction.NonScalarChiefFactor p} (K : Q2Presentation.Induction.KernelMinimal chief) :
      Subgroup p.fst.YThe literal Frattini subgroup `R = Φ(K)` of the kernel, as a subgroup of `Y`
    (the manuscript's `R`, l.3626).  KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`. 1) :
      (∀
          (gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GammaA
      (Q2Presentation.Induction.MStage.mstageLower chief K).fst (Q2Presentation.Induction.MStage.mstageLower chief K).snd :
            Q2Presentation.boundaryFramedSurjQ2Presentation.boundaryFramedSurj {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ)
      (Yt : Q2Presentation.BoundaryFramedTarget) (F : Q2Presentation.BoundaryFrame Yt) : TypeThe **boundary-framed surjections** `e_Γ^β(𝒴)` (manuscript `eq:eGamma`): the
    continuous surjections `f : Γ ↠ Y` whose induced map to `H × E` is the prescribed
    `β ∘ b_Γ`, i.e. `q_Y ∘ f = β ∘ b_Γ`.  This is the subtype counted in Theorem 4.2;
    its cardinality is `e_Γ^β(𝒴)`. 
              Q2Presentation.boundaryPackage_GammaAQ2Presentation.boundaryPackage_GammaA : Q2Presentation.BoundaryPackage Q2Presentation.GammaA**The candidate boundary package** (manuscript Prop 3.14, `prop:compatiblemarking`;
    plan Turn 4 §6).  The Stage-C data of `Γ_A`: the common tame quotient `gammaTameMap`,
    the maximal pro-`2` quotient `p : Γ_A ⟶ Π`, and the common unramified character
    `ν = gammaTameMap ≫ ν_t`, through which both factor. 
              (Q2Presentation.Induction.MStage.mstageLowerQ2Presentation.Induction.MStage.mstageLower {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPairThe lower child in transparent form (instance-friendly).  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.
    
              (Q2Presentation.Induction.MStage.mstageLowerQ2Presentation.Induction.MStage.mstageLower {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPairThe lower child in transparent form (instance-friendly).  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.
    ),
          NonemptyNonempty.{u} (α : Sort u) : Prop`Nonempty α` is a typeclass that says that `α` is not an empty type,
    that is, there exists an element in the type. It differs from `Inhabited α`
    in that `Nonempty α` is a `Prop`, which means that it does not actually carry
    an element of `α`, only a proof that *there exists* such an element.
    Given `Nonempty α`, you can construct an element of `α` *nonconstructively*
    using `Classical.choice`.
    
            (Q2Presentation.TorsorProgram.liftHomQ2Presentation.TorsorProgram.liftHom (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y) [hNn : N.Normal]
      (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ)
      (F : Q2Presentation.BoundaryFrame Yt)
      (g :
        Q2Presentation.boundaryFramedSurj B (Q2Presentation.TorsorProgram.quotientFramedTarget Yt N hNLY hNθ)
          (Q2Presentation.TorsorProgram.quotientFrame Yt N hNLY hNθ F)) :
      Type**All framed lifts** of a child-framed surjection (surjectivity NOT imposed;
    the Frattini argument recovers it per use-site).  pQ2Presentation.Induction.FramedPair.fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.
     KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor.KsubQ2Presentation.Induction.KernelMinimal.Ksub {p : Q2Presentation.Induction.FramedPair}
      {chief : Q2Presentation.Induction.NonScalarChiefFactor p} (self : Q2Presentation.Induction.KernelMinimal chief) :
      Subgroup p.fst.Y  
              Q2Presentation.boundaryPackage_GammaAQ2Presentation.boundaryPackage_GammaA : Q2Presentation.BoundaryPackage Q2Presentation.GammaA**The candidate boundary package** (manuscript Prop 3.14, `prop:compatiblemarking`;
    plan Turn 4 §6).  The Stage-C data of `Γ_A`: the common tame quotient `gammaTameMap`,
    the maximal pro-`2` quotient `p : Γ_A ⟶ Π`, and the common unramified character
    `ν = gammaTameMap ≫ ν_t`, through which both factor.  pQ2Presentation.Induction.FramedPair.sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.
     gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GammaA
      (Q2Presentation.Induction.MStage.mstageLower chief K).fst (Q2Presentation.Induction.MStage.mstageLower chief K).snd)) And (a b : Prop) : Prop`And a b`, or `a ∧ b`, is the conjunction of propositions. It can be
    constructed and destructed like a pair: if `ha : a` and `hb : b` then
    `⟨ha, hb⟩ : a ∧ b`, and if `h : a ∧ b` then `h.left : a` and `h.right : b`.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∧` in identifiers is `and`.
    
     * The recommended spelling of `/\` in identifiers is `and` (prefer `∧` over `/\`).
        (∀
            (gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GammaA
      (Q2Presentation.TorsorProgram.quotientFramedTarget p.fst K.Ksub ⋯ ⋯)
      (Q2Presentation.TorsorProgram.quotientFrame p.fst K.Ksub ⋯ ⋯ p.snd) :
              Q2Presentation.boundaryFramedSurjQ2Presentation.boundaryFramedSurj {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ)
      (Yt : Q2Presentation.BoundaryFramedTarget) (F : Q2Presentation.BoundaryFrame Yt) : TypeThe **boundary-framed surjections** `e_Γ^β(𝒴)` (manuscript `eq:eGamma`): the
    continuous surjections `f : Γ ↠ Y` whose induced map to `H × E` is the prescribed
    `β ∘ b_Γ`, i.e. `q_Y ∘ f = β ∘ b_Γ`.  This is the subtype counted in Theorem 4.2;
    its cardinality is `e_Γ^β(𝒴)`. 
                Q2Presentation.boundaryPackage_GammaAQ2Presentation.boundaryPackage_GammaA : Q2Presentation.BoundaryPackage Q2Presentation.GammaA**The candidate boundary package** (manuscript Prop 3.14, `prop:compatiblemarking`;
    plan Turn 4 §6).  The Stage-C data of `Γ_A`: the common tame quotient `gammaTameMap`,
    the maximal pro-`2` quotient `p : Γ_A ⟶ Π`, and the common unramified character
    `ν = gammaTameMap ≫ ν_t`, through which both factor. 
                (Q2Presentation.TorsorProgram.quotientFramedTargetQ2Presentation.TorsorProgram.quotientFramedTarget (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y)
      [hNn : N.Normal] (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) : Q2Presentation.BoundaryFramedTarget**The quotient framed target** `Y/N` (same `H`, same `E`, image wild kernel).  pQ2Presentation.Induction.FramedPair.fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.
    
                  KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor.KsubQ2Presentation.Induction.KernelMinimal.Ksub {p : Q2Presentation.Induction.FramedPair}
      {chief : Q2Presentation.Induction.NonScalarChiefFactor p} (self : Q2Presentation.Induction.KernelMinimal chief) :
      Subgroup p.fst.Y  )
                (Q2Presentation.TorsorProgram.quotientFrameQ2Presentation.TorsorProgram.quotientFrame (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y)
      [hNn : N.Normal] (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) (F : Q2Presentation.BoundaryFrame Yt) :
      Q2Presentation.BoundaryFrame (Q2Presentation.TorsorProgram.quotientFramedTarget Yt N hNLY hNθ)The frame transports verbatim (`H`, `E`, `α`, `ψ`, `β` unchanged).  pQ2Presentation.Induction.FramedPair.fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.
     KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor.KsubQ2Presentation.Induction.KernelMinimal.Ksub {p : Q2Presentation.Induction.FramedPair}
      {chief : Q2Presentation.Induction.NonScalarChiefFactor p} (self : Q2Presentation.Induction.KernelMinimal chief) :
      Subgroup p.fst.Y  
                  pQ2Presentation.Induction.FramedPair.sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.
    ))
            (f₀Q2Presentation.TorsorProgram.liftHom p.fst K.Ksub ⋯ ⋯ Q2Presentation.boundaryPackage_GammaA p.snd g :
              Q2Presentation.TorsorProgram.liftHomQ2Presentation.TorsorProgram.liftHom (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y) [hNn : N.Normal]
      (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ)
      (F : Q2Presentation.BoundaryFrame Yt)
      (g :
        Q2Presentation.boundaryFramedSurj B (Q2Presentation.TorsorProgram.quotientFramedTarget Yt N hNLY hNθ)
          (Q2Presentation.TorsorProgram.quotientFrame Yt N hNLY hNθ F)) :
      Type**All framed lifts** of a child-framed surjection (surjectivity NOT imposed;
    the Frattini argument recovers it per use-site).  pQ2Presentation.Induction.FramedPair.fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.
     KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor.KsubQ2Presentation.Induction.KernelMinimal.Ksub {p : Q2Presentation.Induction.FramedPair}
      {chief : Q2Presentation.Induction.NonScalarChiefFactor p} (self : Q2Presentation.Induction.KernelMinimal chief) :
      Subgroup p.fst.Y  
                Q2Presentation.boundaryPackage_GammaAQ2Presentation.boundaryPackage_GammaA : Q2Presentation.BoundaryPackage Q2Presentation.GammaA**The candidate boundary package** (manuscript Prop 3.14, `prop:compatiblemarking`;
    plan Turn 4 §6).  The Stage-C data of `Γ_A`: the common tame quotient `gammaTameMap`,
    the maximal pro-`2` quotient `p : Γ_A ⟶ Π`, and the common unramified character
    `ν = gammaTameMap ≫ ν_t`, through which both factor.  pQ2Presentation.Induction.FramedPair.sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.
     gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GammaA
      (Q2Presentation.TorsorProgram.quotientFramedTarget p.fst K.Ksub ⋯ ⋯)
      (Q2Presentation.TorsorProgram.quotientFrame p.fst K.Ksub ⋯ ⋯ p.snd)),
            Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number.
    If `α` is infinite, `Nat.card α = 0`. 
                (Q2Presentation.TorsorProgram.Z1Q2Presentation.TorsorProgram.Z1 (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y) [hNn : N.Normal]
      (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ)
      (F : Q2Presentation.BoundaryFrame Yt)
      (g :
        Q2Presentation.boundaryFramedSurj B (Q2Presentation.TorsorProgram.quotientFramedTarget Yt N hNLY hNθ)
          (Q2Presentation.TorsorProgram.quotientFrame Yt N hNLY hNθ F))
      (f₀ : Q2Presentation.TorsorProgram.liftHom Yt N hNLY hNθ B F g) : Type**The twisted cocycle set** relative to a base lift.  pQ2Presentation.Induction.FramedPair.fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.
     KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor.KsubQ2Presentation.Induction.KernelMinimal.Ksub {p : Q2Presentation.Induction.FramedPair}
      {chief : Q2Presentation.Induction.NonScalarChiefFactor p} (self : Q2Presentation.Induction.KernelMinimal chief) :
      Subgroup p.fst.Y  
                  Q2Presentation.boundaryPackage_GammaAQ2Presentation.boundaryPackage_GammaA : Q2Presentation.BoundaryPackage Q2Presentation.GammaA**The candidate boundary package** (manuscript Prop 3.14, `prop:compatiblemarking`;
    plan Turn 4 §6).  The Stage-C data of `Γ_A`: the common tame quotient `gammaTameMap`,
    the maximal pro-`2` quotient `p : Γ_A ⟶ Π`, and the common unramified character
    `ν = gammaTameMap ≫ ν_t`, through which both factor.  pQ2Presentation.Induction.FramedPair.sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.
     gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GammaA
      (Q2Presentation.TorsorProgram.quotientFramedTarget p.fst K.Ksub ⋯ ⋯)
      (Q2Presentation.TorsorProgram.quotientFrame p.fst K.Ksub ⋯ ⋯ p.snd) f₀Q2Presentation.TorsorProgram.liftHom p.fst K.Ksub ⋯ ⋯ Q2Presentation.boundaryPackage_GammaA p.snd g) =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`.
              2 ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. (HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.2 *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. Q2Presentation.Induction.sec7MStageDimQ2Presentation.Induction.sec7MStageDim {p : Q2Presentation.Induction.FramedPair}
      {chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p}
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : ℕThe actual elementary-layer dimension used by the `R = 1` M-stage.
    
    In the manuscript notation this is `dim_{𝔽₂} M`, with
    `M = K/Φ(K)`.  The current concrete Section 7 tower realizes this as `towerM K`;
    when `R = Φ(K) = 1`, this is the elementary layer lifted in `eq:Mstage`.
     KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.) And (a b : Prop) : Prop`And a b`, or `a ∧ b`, is the conjunction of propositions. It can be
    constructed and destructed like a pair: if `ha : a` and `hb : b` then
    `⟨ha, hb⟩ : a ∧ b`, and if `h : a ∧ b` then `h.left : a` and `h.right : b`.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∧` in identifiers is `and`.
    
     * The recommended spelling of `/\` in identifiers is `and` (prefer `∧` over `/\`).
          (∀
              (gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GQ2
      (Q2Presentation.Induction.MStage.mstageLower chief K).fst (Q2Presentation.Induction.MStage.mstageLower chief K).snd :
                Q2Presentation.boundaryFramedSurjQ2Presentation.boundaryFramedSurj {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ)
      (Yt : Q2Presentation.BoundaryFramedTarget) (F : Q2Presentation.BoundaryFrame Yt) : TypeThe **boundary-framed surjections** `e_Γ^β(𝒴)` (manuscript `eq:eGamma`): the
    continuous surjections `f : Γ ↠ Y` whose induced map to `H × E` is the prescribed
    `β ∘ b_Γ`, i.e. `q_Y ∘ f = β ∘ b_Γ`.  This is the subtype counted in Theorem 4.2;
    its cardinality is `e_Γ^β(𝒴)`. 
                  Q2Presentation.boundaryPackage_GQ2Q2Presentation.boundaryPackage_GQ2 : Q2Presentation.BoundaryPackage Q2Presentation.GQ2Profinite**The local boundary package** `boundaryPackage_GQ2 : BoundaryPackage G_{ℚ₂}`
    (manuscript Prop 3.14 `prop:compatiblemarking` for `Γ = G_{ℚ₂}`; plan Turn 4 §6),
    the `G_{ℚ₂}`-side instance of the uniform Stage-C boundary datum.
    
    * `tameMap`/`tame_surj`/`tame_nu` — the local tame quotient `G_{ℚ₂} ↠ T_A` with
      unramified marking `ν_loc`, from the axiom `gq2_tame_quotient` (Prop 3.2 + the
      local half of Prop `compatiblemarking`);
    * `pro2Map`/`pro2_surj`/`pro2_nu` — the local maximal pro-`2` quotient
      `G_{ℚ₂} ↠ Π` with the *same* unramified marking `ν_loc`, proved from the fully
      marked Labute comparison `labute_GQ2_maxPro2_marked` (`pro2Map_loc`,
      `pro2Map_loc_surjective`, `pro2Map_loc_nu`);
    * `nu := ν_loc` — the common unramified character through which both factor. 
                  (Q2Presentation.Induction.MStage.mstageLowerQ2Presentation.Induction.MStage.mstageLower {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPairThe lower child in transparent form (instance-friendly).  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.
    
                  (Q2Presentation.Induction.MStage.mstageLowerQ2Presentation.Induction.MStage.mstageLower {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPairThe lower child in transparent form (instance-friendly).  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p
                      KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.
    ),
              NonemptyNonempty.{u} (α : Sort u) : Prop`Nonempty α` is a typeclass that says that `α` is not an empty type,
    that is, there exists an element in the type. It differs from `Inhabited α`
    in that `Nonempty α` is a `Prop`, which means that it does not actually carry
    an element of `α`, only a proof that *there exists* such an element.
    Given `Nonempty α`, you can construct an element of `α` *nonconstructively*
    using `Classical.choice`.
    
                (Q2Presentation.TorsorProgram.liftHomQ2Presentation.TorsorProgram.liftHom (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y) [hNn : N.Normal]
      (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ)
      (F : Q2Presentation.BoundaryFrame Yt)
      (g :
        Q2Presentation.boundaryFramedSurj B (Q2Presentation.TorsorProgram.quotientFramedTarget Yt N hNLY hNθ)
          (Q2Presentation.TorsorProgram.quotientFrame Yt N hNLY hNθ F)) :
      Type**All framed lifts** of a child-framed surjection (surjectivity NOT imposed;
    the Frattini argument recovers it per use-site).  pQ2Presentation.Induction.FramedPair.fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.
     KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor.KsubQ2Presentation.Induction.KernelMinimal.Ksub {p : Q2Presentation.Induction.FramedPair}
      {chief : Q2Presentation.Induction.NonScalarChiefFactor p} (self : Q2Presentation.Induction.KernelMinimal chief) :
      Subgroup p.fst.Y  
                  Q2Presentation.boundaryPackage_GQ2Q2Presentation.boundaryPackage_GQ2 : Q2Presentation.BoundaryPackage Q2Presentation.GQ2Profinite**The local boundary package** `boundaryPackage_GQ2 : BoundaryPackage G_{ℚ₂}`
    (manuscript Prop 3.14 `prop:compatiblemarking` for `Γ = G_{ℚ₂}`; plan Turn 4 §6),
    the `G_{ℚ₂}`-side instance of the uniform Stage-C boundary datum.
    
    * `tameMap`/`tame_surj`/`tame_nu` — the local tame quotient `G_{ℚ₂} ↠ T_A` with
      unramified marking `ν_loc`, from the axiom `gq2_tame_quotient` (Prop 3.2 + the
      local half of Prop `compatiblemarking`);
    * `pro2Map`/`pro2_surj`/`pro2_nu` — the local maximal pro-`2` quotient
      `G_{ℚ₂} ↠ Π` with the *same* unramified marking `ν_loc`, proved from the fully
      marked Labute comparison `labute_GQ2_maxPro2_marked` (`pro2Map_loc`,
      `pro2Map_loc_surjective`, `pro2Map_loc_nu`);
    * `nu := ν_loc` — the common unramified character through which both factor.  pQ2Presentation.Induction.FramedPair.sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.
     gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GQ2
      (Q2Presentation.Induction.MStage.mstageLower chief K).fst (Q2Presentation.Induction.MStage.mstageLower chief K).snd)) And (a b : Prop) : Prop`And a b`, or `a ∧ b`, is the conjunction of propositions. It can be
    constructed and destructed like a pair: if `ha : a` and `hb : b` then
    `⟨ha, hb⟩ : a ∧ b`, and if `h : a ∧ b` then `h.left : a` and `h.right : b`.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∧` in identifiers is `and`.
    
     * The recommended spelling of `/\` in identifiers is `and` (prefer `∧` over `/\`).
            
              (gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GQ2
      (Q2Presentation.TorsorProgram.quotientFramedTarget p.fst K.Ksub ⋯ ⋯)
      (Q2Presentation.TorsorProgram.quotientFrame p.fst K.Ksub ⋯ ⋯ p.snd) :
                Q2Presentation.boundaryFramedSurjQ2Presentation.boundaryFramedSurj {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ)
      (Yt : Q2Presentation.BoundaryFramedTarget) (F : Q2Presentation.BoundaryFrame Yt) : TypeThe **boundary-framed surjections** `e_Γ^β(𝒴)` (manuscript `eq:eGamma`): the
    continuous surjections `f : Γ ↠ Y` whose induced map to `H × E` is the prescribed
    `β ∘ b_Γ`, i.e. `q_Y ∘ f = β ∘ b_Γ`.  This is the subtype counted in Theorem 4.2;
    its cardinality is `e_Γ^β(𝒴)`. 
                  Q2Presentation.boundaryPackage_GQ2Q2Presentation.boundaryPackage_GQ2 : Q2Presentation.BoundaryPackage Q2Presentation.GQ2Profinite**The local boundary package** `boundaryPackage_GQ2 : BoundaryPackage G_{ℚ₂}`
    (manuscript Prop 3.14 `prop:compatiblemarking` for `Γ = G_{ℚ₂}`; plan Turn 4 §6),
    the `G_{ℚ₂}`-side instance of the uniform Stage-C boundary datum.
    
    * `tameMap`/`tame_surj`/`tame_nu` — the local tame quotient `G_{ℚ₂} ↠ T_A` with
      unramified marking `ν_loc`, from the axiom `gq2_tame_quotient` (Prop 3.2 + the
      local half of Prop `compatiblemarking`);
    * `pro2Map`/`pro2_surj`/`pro2_nu` — the local maximal pro-`2` quotient
      `G_{ℚ₂} ↠ Π` with the *same* unramified marking `ν_loc`, proved from the fully
      marked Labute comparison `labute_GQ2_maxPro2_marked` (`pro2Map_loc`,
      `pro2Map_loc_surjective`, `pro2Map_loc_nu`);
    * `nu := ν_loc` — the common unramified character through which both factor. 
                  (Q2Presentation.TorsorProgram.quotientFramedTargetQ2Presentation.TorsorProgram.quotientFramedTarget (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y)
      [hNn : N.Normal] (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) : Q2Presentation.BoundaryFramedTarget**The quotient framed target** `Y/N` (same `H`, same `E`, image wild kernel).  pQ2Presentation.Induction.FramedPair.fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.
    
                    KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor.KsubQ2Presentation.Induction.KernelMinimal.Ksub {p : Q2Presentation.Induction.FramedPair}
      {chief : Q2Presentation.Induction.NonScalarChiefFactor p} (self : Q2Presentation.Induction.KernelMinimal chief) :
      Subgroup p.fst.Y  )
                  (Q2Presentation.TorsorProgram.quotientFrameQ2Presentation.TorsorProgram.quotientFrame (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y)
      [hNn : N.Normal] (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) (F : Q2Presentation.BoundaryFrame Yt) :
      Q2Presentation.BoundaryFrame (Q2Presentation.TorsorProgram.quotientFramedTarget Yt N hNLY hNθ)The frame transports verbatim (`H`, `E`, `α`, `ψ`, `β` unchanged).  pQ2Presentation.Induction.FramedPair.fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.
     KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor.KsubQ2Presentation.Induction.KernelMinimal.Ksub {p : Q2Presentation.Induction.FramedPair}
      {chief : Q2Presentation.Induction.NonScalarChiefFactor p} (self : Q2Presentation.Induction.KernelMinimal chief) :
      Subgroup p.fst.Y 
                     pQ2Presentation.Induction.FramedPair.sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.
    ))
              (f₀Q2Presentation.TorsorProgram.liftHom p.fst K.Ksub ⋯ ⋯ Q2Presentation.boundaryPackage_GQ2 p.snd g :
                Q2Presentation.TorsorProgram.liftHomQ2Presentation.TorsorProgram.liftHom (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y) [hNn : N.Normal]
      (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ)
      (F : Q2Presentation.BoundaryFrame Yt)
      (g :
        Q2Presentation.boundaryFramedSurj B (Q2Presentation.TorsorProgram.quotientFramedTarget Yt N hNLY hNθ)
          (Q2Presentation.TorsorProgram.quotientFrame Yt N hNLY hNθ F)) :
      Type**All framed lifts** of a child-framed surjection (surjectivity NOT imposed;
    the Frattini argument recovers it per use-site).  pQ2Presentation.Induction.FramedPair.fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.
     KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor.KsubQ2Presentation.Induction.KernelMinimal.Ksub {p : Q2Presentation.Induction.FramedPair}
      {chief : Q2Presentation.Induction.NonScalarChiefFactor p} (self : Q2Presentation.Induction.KernelMinimal chief) :
      Subgroup p.fst.Y  
                  Q2Presentation.boundaryPackage_GQ2Q2Presentation.boundaryPackage_GQ2 : Q2Presentation.BoundaryPackage Q2Presentation.GQ2Profinite**The local boundary package** `boundaryPackage_GQ2 : BoundaryPackage G_{ℚ₂}`
    (manuscript Prop 3.14 `prop:compatiblemarking` for `Γ = G_{ℚ₂}`; plan Turn 4 §6),
    the `G_{ℚ₂}`-side instance of the uniform Stage-C boundary datum.
    
    * `tameMap`/`tame_surj`/`tame_nu` — the local tame quotient `G_{ℚ₂} ↠ T_A` with
      unramified marking `ν_loc`, from the axiom `gq2_tame_quotient` (Prop 3.2 + the
      local half of Prop `compatiblemarking`);
    * `pro2Map`/`pro2_surj`/`pro2_nu` — the local maximal pro-`2` quotient
      `G_{ℚ₂} ↠ Π` with the *same* unramified marking `ν_loc`, proved from the fully
      marked Labute comparison `labute_GQ2_maxPro2_marked` (`pro2Map_loc`,
      `pro2Map_loc_surjective`, `pro2Map_loc_nu`);
    * `nu := ν_loc` — the common unramified character through which both factor.  pQ2Presentation.Induction.FramedPair.sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.
     gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GQ2
      (Q2Presentation.TorsorProgram.quotientFramedTarget p.fst K.Ksub ⋯ ⋯)
      (Q2Presentation.TorsorProgram.quotientFrame p.fst K.Ksub ⋯ ⋯ p.snd)),
              Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number.
    If `α` is infinite, `Nat.card α = 0`. 
                  (Q2Presentation.TorsorProgram.Z1Q2Presentation.TorsorProgram.Z1 (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y) [hNn : N.Normal]
      (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ)
      (F : Q2Presentation.BoundaryFrame Yt)
      (g :
        Q2Presentation.boundaryFramedSurj B (Q2Presentation.TorsorProgram.quotientFramedTarget Yt N hNLY hNθ)
          (Q2Presentation.TorsorProgram.quotientFrame Yt N hNLY hNθ F))
      (f₀ : Q2Presentation.TorsorProgram.liftHom Yt N hNLY hNθ B F g) : Type**The twisted cocycle set** relative to a base lift.  pQ2Presentation.Induction.FramedPair.fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.
     KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor.KsubQ2Presentation.Induction.KernelMinimal.Ksub {p : Q2Presentation.Induction.FramedPair}
      {chief : Q2Presentation.Induction.NonScalarChiefFactor p} (self : Q2Presentation.Induction.KernelMinimal chief) :
      Subgroup p.fst.Y  
                    Q2Presentation.boundaryPackage_GQ2Q2Presentation.boundaryPackage_GQ2 : Q2Presentation.BoundaryPackage Q2Presentation.GQ2Profinite**The local boundary package** `boundaryPackage_GQ2 : BoundaryPackage G_{ℚ₂}`
    (manuscript Prop 3.14 `prop:compatiblemarking` for `Γ = G_{ℚ₂}`; plan Turn 4 §6),
    the `G_{ℚ₂}`-side instance of the uniform Stage-C boundary datum.
    
    * `tameMap`/`tame_surj`/`tame_nu` — the local tame quotient `G_{ℚ₂} ↠ T_A` with
      unramified marking `ν_loc`, from the axiom `gq2_tame_quotient` (Prop 3.2 + the
      local half of Prop `compatiblemarking`);
    * `pro2Map`/`pro2_surj`/`pro2_nu` — the local maximal pro-`2` quotient
      `G_{ℚ₂} ↠ Π` with the *same* unramified marking `ν_loc`, proved from the fully
      marked Labute comparison `labute_GQ2_maxPro2_marked` (`pro2Map_loc`,
      `pro2Map_loc_surjective`, `pro2Map_loc_nu`);
    * `nu := ν_loc` — the common unramified character through which both factor.  pQ2Presentation.Induction.FramedPair.sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.
     gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GQ2
      (Q2Presentation.TorsorProgram.quotientFramedTarget p.fst K.Ksub ⋯ ⋯)
      (Q2Presentation.TorsorProgram.quotientFrame p.fst K.Ksub ⋯ ⋯ p.snd) f₀Q2Presentation.TorsorProgram.liftHom p.fst K.Ksub ⋯ ⋯ Q2Presentation.boundaryPackage_GQ2 p.snd g) =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`.
                2 ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. (HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.2 *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. Q2Presentation.Induction.sec7MStageDimQ2Presentation.Induction.sec7MStageDim {p : Q2Presentation.Induction.FramedPair}
      {chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p}
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : ℕThe actual elementary-layer dimension used by the `R = 1` M-stage.
    
    In the manuscript notation this is `dim_{𝔽₂} M`, with
    `M = K/Φ(K)`.  The current concrete Section 7 tower realizes this as `towerM K`;
    when `R = Φ(K) = 1`, this is the elementary layer lifted in `eq:Mstage`.
     KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
    theorem Q2Presentation.Induction.MStage.sec7_mstage_cochainData
      {pQ2Presentation.Induction.FramedPair :
        Q2Presentation.Induction.FramedPairQ2Presentation.Induction.FramedPair : Type 1A **framed pair** `(𝒴, F)`: a boundary-framed marked target together with a
    boundary frame for it (manuscript Definition 4.1 + `eq:beta`).  This is the index of
    Theorem 4.2: the boundary-framed surjection count `e_Γ^β` is a function of the pair.
    The induction of `sec:induction` ranges over *all* such pairs simultaneously
    ("the induction is stated globally", l.1213), ordered by `|L_Y|`. }
      (h¬Q2Presentation.Induction.ScalarTerminal p :
        ¬Not (a : Prop) : Prop`Not p`, or `¬p`, is the negation of `p`. It is defined to be `p → False`,
    so if your goal is `¬p` you can use `intro h` to turn the goal into
    `h : p ⊢ False`, and if you have `hn : ¬p` and `h : p` then `hn h : False`
    and `(hn h).elim` will prove anything.
    For more information: [Propositional Logic](https://lean-lang.org/theorem_proving_in_lean4/propositions_and_proofs.html#propositional-logic)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `¬` in identifiers is `not`.Q2Presentation.Induction.ScalarTerminalQ2Presentation.Induction.ScalarTerminal (p : Q2Presentation.Induction.FramedPair) : Prop**Scalar-terminal framed pair.** 
            pQ2Presentation.Induction.FramedPair)
      (chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p :
        Q2Presentation.Induction.FirstNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor (p : Q2Presentation.Induction.FramedPair) : TypeA non-scalar chief factor of `L_Y` that is **first**: every chief factor strictly
    below it (i.e. with upper term contained in `lower`) is scalar.  This is the manuscript's
    choice `S ◁ P` at l.3616–3623 ("all chief factors below `S` are scalar and `V` is the
    first non-scalar simple factor"), which `lem:collapse` requires for the coprime step
    `[S, Ñ] = 1`. 
          pQ2Presentation.Induction.FramedPair)
      (KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor :
        Q2Presentation.Induction.KernelMinimalQ2Presentation.Induction.KernelMinimal {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.NonScalarChiefFactor p) : TypeThe manuscript's kernel choice (l.3623): `K ◁ Y`, `K ≤ P`, `KS = P`, and `K` is
    **⊆-minimal** with these properties — stated as: any `Y`-normal `K' ≤ K` still joining
    with `S` to `P` equals `K`.  (This, not leastness among all candidates, is what
    `lem:simplehead` and `lem:collapse` use: both apply it to subgroups of `K`.) 
          chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p.toNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor.toNonScalarChiefFactor {p : Q2Presentation.Induction.FramedPair}
      (self : Q2Presentation.Induction.FirstNonScalarChiefFactor p) : Q2Presentation.Induction.NonScalarChiefFactor p)
      (hRNat.card ↥(Q2Presentation.Induction.kernelFrattini K) = 1 :
        Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number.
    If `α` is infinite, `Nat.card α = 0`. 
            (Q2Presentation.Induction.kernelFrattiniQ2Presentation.Induction.kernelFrattini {p : Q2Presentation.Induction.FramedPair}
      {chief : Q2Presentation.Induction.NonScalarChiefFactor p} (K : Q2Presentation.Induction.KernelMinimal chief) :
      Subgroup p.fst.YThe literal Frattini subgroup `R = Φ(K)` of the kernel, as a subgroup of `Y`
    (the manuscript's `R`, l.3626). 
                KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`.
          1) :
      (∀
          (gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GammaA
      (Q2Presentation.Induction.MStage.mstageLower chief K).fst (Q2Presentation.Induction.MStage.mstageLower chief K).snd :
            Q2Presentation.boundaryFramedSurjQ2Presentation.boundaryFramedSurj {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ)
      (Yt : Q2Presentation.BoundaryFramedTarget) (F : Q2Presentation.BoundaryFrame Yt) : TypeThe **boundary-framed surjections** `e_Γ^β(𝒴)` (manuscript `eq:eGamma`): the
    continuous surjections `f : Γ ↠ Y` whose induced map to `H × E` is the prescribed
    `β ∘ b_Γ`, i.e. `q_Y ∘ f = β ∘ b_Γ`.  This is the subtype counted in Theorem 4.2;
    its cardinality is `e_Γ^β(𝒴)`. 
              Q2Presentation.boundaryPackage_GammaAQ2Presentation.boundaryPackage_GammaA : Q2Presentation.BoundaryPackage Q2Presentation.GammaA**The candidate boundary package** (manuscript Prop 3.14, `prop:compatiblemarking`;
    plan Turn 4 §6).  The Stage-C data of `Γ_A`: the common tame quotient `gammaTameMap`,
    the maximal pro-`2` quotient `p : Γ_A ⟶ Π`, and the common unramified character
    `ν = gammaTameMap ≫ ν_t`, through which both factor. 
              (Q2Presentation.Induction.MStage.mstageLowerQ2Presentation.Induction.MStage.mstageLower {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPairThe lower child in transparent form (instance-friendly). 
                  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.
    
              (Q2Presentation.Induction.MStage.mstageLowerQ2Presentation.Induction.MStage.mstageLower {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPairThe lower child in transparent form (instance-friendly). 
                  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.
    ),
          NonemptyNonempty.{u} (α : Sort u) : Prop`Nonempty α` is a typeclass that says that `α` is not an empty type,
    that is, there exists an element in the type. It differs from `Inhabited α`
    in that `Nonempty α` is a `Prop`, which means that it does not actually carry
    an element of `α`, only a proof that *there exists* such an element.
    Given `Nonempty α`, you can construct an element of `α` *nonconstructively*
    using `Classical.choice`.
    
            (Q2Presentation.TorsorProgram.liftHomQ2Presentation.TorsorProgram.liftHom (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y) [hNn : N.Normal]
      (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ)
      (F : Q2Presentation.BoundaryFrame Yt)
      (g :
        Q2Presentation.boundaryFramedSurj B (Q2Presentation.TorsorProgram.quotientFramedTarget Yt N hNLY hNθ)
          (Q2Presentation.TorsorProgram.quotientFrame Yt N hNLY hNθ F)) :
      Type**All framed lifts** of a child-framed surjection (surjectivity NOT imposed;
    the Frattini argument recovers it per use-site). 
              pQ2Presentation.Induction.FramedPair.fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.
     KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor.KsubQ2Presentation.Induction.KernelMinimal.Ksub {p : Q2Presentation.Induction.FramedPair}
      {chief : Q2Presentation.Induction.NonScalarChiefFactor p} (self : Q2Presentation.Induction.KernelMinimal chief) :
      Subgroup p.fst.Y  
              Q2Presentation.boundaryPackage_GammaAQ2Presentation.boundaryPackage_GammaA : Q2Presentation.BoundaryPackage Q2Presentation.GammaA**The candidate boundary package** (manuscript Prop 3.14, `prop:compatiblemarking`;
    plan Turn 4 §6).  The Stage-C data of `Γ_A`: the common tame quotient `gammaTameMap`,
    the maximal pro-`2` quotient `p : Γ_A ⟶ Π`, and the common unramified character
    `ν = gammaTameMap ≫ ν_t`, through which both factor. 
              pQ2Presentation.Induction.FramedPair.sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.
     gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GammaA
      (Q2Presentation.Induction.MStage.mstageLower chief K).fst (Q2Presentation.Induction.MStage.mstageLower chief K).snd)) And (a b : Prop) : Prop`And a b`, or `a ∧ b`, is the conjunction of propositions. It can be
    constructed and destructed like a pair: if `ha : a` and `hb : b` then
    `⟨ha, hb⟩ : a ∧ b`, and if `h : a ∧ b` then `h.left : a` and `h.right : b`.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∧` in identifiers is `and`.
    
     * The recommended spelling of `/\` in identifiers is `and` (prefer `∧` over `/\`).
        (∀
            (gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GammaA
      (Q2Presentation.TorsorProgram.quotientFramedTarget p.fst K.Ksub ⋯ ⋯)
      (Q2Presentation.TorsorProgram.quotientFrame p.fst K.Ksub ⋯ ⋯ p.snd) :
              Q2Presentation.boundaryFramedSurjQ2Presentation.boundaryFramedSurj {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ)
      (Yt : Q2Presentation.BoundaryFramedTarget) (F : Q2Presentation.BoundaryFrame Yt) : TypeThe **boundary-framed surjections** `e_Γ^β(𝒴)` (manuscript `eq:eGamma`): the
    continuous surjections `f : Γ ↠ Y` whose induced map to `H × E` is the prescribed
    `β ∘ b_Γ`, i.e. `q_Y ∘ f = β ∘ b_Γ`.  This is the subtype counted in Theorem 4.2;
    its cardinality is `e_Γ^β(𝒴)`. 
                Q2Presentation.boundaryPackage_GammaAQ2Presentation.boundaryPackage_GammaA : Q2Presentation.BoundaryPackage Q2Presentation.GammaA**The candidate boundary package** (manuscript Prop 3.14, `prop:compatiblemarking`;
    plan Turn 4 §6).  The Stage-C data of `Γ_A`: the common tame quotient `gammaTameMap`,
    the maximal pro-`2` quotient `p : Γ_A ⟶ Π`, and the common unramified character
    `ν = gammaTameMap ≫ ν_t`, through which both factor. 
                (Q2Presentation.TorsorProgram.quotientFramedTargetQ2Presentation.TorsorProgram.quotientFramedTarget (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y)
      [hNn : N.Normal] (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) : Q2Presentation.BoundaryFramedTarget**The quotient framed target** `Y/N` (same `H`, same `E`, image wild kernel). 
                  pQ2Presentation.Induction.FramedPair.fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.
     KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor.KsubQ2Presentation.Induction.KernelMinimal.Ksub {p : Q2Presentation.Induction.FramedPair}
      {chief : Q2Presentation.Induction.NonScalarChiefFactor p} (self : Q2Presentation.Induction.KernelMinimal chief) :
      Subgroup p.fst.Y  )
                (Q2Presentation.TorsorProgram.quotientFrameQ2Presentation.TorsorProgram.quotientFrame (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y)
      [hNn : N.Normal] (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) (F : Q2Presentation.BoundaryFrame Yt) :
      Q2Presentation.BoundaryFrame (Q2Presentation.TorsorProgram.quotientFramedTarget Yt N hNLY hNθ)The frame transports verbatim (`H`, `E`, `α`, `ψ`, `β` unchanged). 
                  pQ2Presentation.Induction.FramedPair.fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.
     KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor.KsubQ2Presentation.Induction.KernelMinimal.Ksub {p : Q2Presentation.Induction.FramedPair}
      {chief : Q2Presentation.Induction.NonScalarChiefFactor p} (self : Q2Presentation.Induction.KernelMinimal chief) :
      Subgroup p.fst.Y   pQ2Presentation.Induction.FramedPair.sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.
    ))
            (f₀Q2Presentation.TorsorProgram.liftHom p.fst K.Ksub ⋯ ⋯ Q2Presentation.boundaryPackage_GammaA p.snd g :
              Q2Presentation.TorsorProgram.liftHomQ2Presentation.TorsorProgram.liftHom (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y) [hNn : N.Normal]
      (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ)
      (F : Q2Presentation.BoundaryFrame Yt)
      (g :
        Q2Presentation.boundaryFramedSurj B (Q2Presentation.TorsorProgram.quotientFramedTarget Yt N hNLY hNθ)
          (Q2Presentation.TorsorProgram.quotientFrame Yt N hNLY hNθ F)) :
      Type**All framed lifts** of a child-framed surjection (surjectivity NOT imposed;
    the Frattini argument recovers it per use-site). 
                pQ2Presentation.Induction.FramedPair.fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.
     KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor.KsubQ2Presentation.Induction.KernelMinimal.Ksub {p : Q2Presentation.Induction.FramedPair}
      {chief : Q2Presentation.Induction.NonScalarChiefFactor p} (self : Q2Presentation.Induction.KernelMinimal chief) :
      Subgroup p.fst.Y  
                Q2Presentation.boundaryPackage_GammaAQ2Presentation.boundaryPackage_GammaA : Q2Presentation.BoundaryPackage Q2Presentation.GammaA**The candidate boundary package** (manuscript Prop 3.14, `prop:compatiblemarking`;
    plan Turn 4 §6).  The Stage-C data of `Γ_A`: the common tame quotient `gammaTameMap`,
    the maximal pro-`2` quotient `p : Γ_A ⟶ Π`, and the common unramified character
    `ν = gammaTameMap ≫ ν_t`, through which both factor. 
                pQ2Presentation.Induction.FramedPair.sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.
     gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GammaA
      (Q2Presentation.TorsorProgram.quotientFramedTarget p.fst K.Ksub ⋯ ⋯)
      (Q2Presentation.TorsorProgram.quotientFrame p.fst K.Ksub ⋯ ⋯ p.snd)),
            Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number.
    If `α` is infinite, `Nat.card α = 0`. 
                (Q2Presentation.TorsorProgram.Z1Q2Presentation.TorsorProgram.Z1 (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y) [hNn : N.Normal]
      (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ)
      (F : Q2Presentation.BoundaryFrame Yt)
      (g :
        Q2Presentation.boundaryFramedSurj B (Q2Presentation.TorsorProgram.quotientFramedTarget Yt N hNLY hNθ)
          (Q2Presentation.TorsorProgram.quotientFrame Yt N hNLY hNθ F))
      (f₀ : Q2Presentation.TorsorProgram.liftHom Yt N hNLY hNθ B F g) : Type**The twisted cocycle set** relative to a base lift. 
                  pQ2Presentation.Induction.FramedPair.fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.
     KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor.KsubQ2Presentation.Induction.KernelMinimal.Ksub {p : Q2Presentation.Induction.FramedPair}
      {chief : Q2Presentation.Induction.NonScalarChiefFactor p} (self : Q2Presentation.Induction.KernelMinimal chief) :
      Subgroup p.fst.Y  
                  Q2Presentation.boundaryPackage_GammaAQ2Presentation.boundaryPackage_GammaA : Q2Presentation.BoundaryPackage Q2Presentation.GammaA**The candidate boundary package** (manuscript Prop 3.14, `prop:compatiblemarking`;
    plan Turn 4 §6).  The Stage-C data of `Γ_A`: the common tame quotient `gammaTameMap`,
    the maximal pro-`2` quotient `p : Γ_A ⟶ Π`, and the common unramified character
    `ν = gammaTameMap ≫ ν_t`, through which both factor. 
                  pQ2Presentation.Induction.FramedPair.sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.
     gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GammaA
      (Q2Presentation.TorsorProgram.quotientFramedTarget p.fst K.Ksub ⋯ ⋯)
      (Q2Presentation.TorsorProgram.quotientFrame p.fst K.Ksub ⋯ ⋯ p.snd) f₀Q2Presentation.TorsorProgram.liftHom p.fst K.Ksub ⋯ ⋯ Q2Presentation.boundaryPackage_GammaA p.snd g) =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`.
              2 ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`.
                (HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.2 *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
                  Q2Presentation.Induction.sec7MStageDimQ2Presentation.Induction.sec7MStageDim {p : Q2Presentation.Induction.FramedPair}
      {chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p}
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : ℕThe actual elementary-layer dimension used by the `R = 1` M-stage.
    
    In the manuscript notation this is `dim_{𝔽₂} M`, with
    `M = K/Φ(K)`.  The current concrete Section 7 tower realizes this as `towerM K`;
    when `R = Φ(K) = 1`, this is the elementary layer lifted in `eq:Mstage`.
    
                    KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.) And (a b : Prop) : Prop`And a b`, or `a ∧ b`, is the conjunction of propositions. It can be
    constructed and destructed like a pair: if `ha : a` and `hb : b` then
    `⟨ha, hb⟩ : a ∧ b`, and if `h : a ∧ b` then `h.left : a` and `h.right : b`.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∧` in identifiers is `and`.
    
     * The recommended spelling of `/\` in identifiers is `and` (prefer `∧` over `/\`).
          (∀
              (gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GQ2
      (Q2Presentation.Induction.MStage.mstageLower chief K).fst (Q2Presentation.Induction.MStage.mstageLower chief K).snd :
                Q2Presentation.boundaryFramedSurjQ2Presentation.boundaryFramedSurj {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ)
      (Yt : Q2Presentation.BoundaryFramedTarget) (F : Q2Presentation.BoundaryFrame Yt) : TypeThe **boundary-framed surjections** `e_Γ^β(𝒴)` (manuscript `eq:eGamma`): the
    continuous surjections `f : Γ ↠ Y` whose induced map to `H × E` is the prescribed
    `β ∘ b_Γ`, i.e. `q_Y ∘ f = β ∘ b_Γ`.  This is the subtype counted in Theorem 4.2;
    its cardinality is `e_Γ^β(𝒴)`. 
                  Q2Presentation.boundaryPackage_GQ2Q2Presentation.boundaryPackage_GQ2 : Q2Presentation.BoundaryPackage Q2Presentation.GQ2Profinite**The local boundary package** `boundaryPackage_GQ2 : BoundaryPackage G_{ℚ₂}`
    (manuscript Prop 3.14 `prop:compatiblemarking` for `Γ = G_{ℚ₂}`; plan Turn 4 §6),
    the `G_{ℚ₂}`-side instance of the uniform Stage-C boundary datum.
    
    * `tameMap`/`tame_surj`/`tame_nu` — the local tame quotient `G_{ℚ₂} ↠ T_A` with
      unramified marking `ν_loc`, from the axiom `gq2_tame_quotient` (Prop 3.2 + the
      local half of Prop `compatiblemarking`);
    * `pro2Map`/`pro2_surj`/`pro2_nu` — the local maximal pro-`2` quotient
      `G_{ℚ₂} ↠ Π` with the *same* unramified marking `ν_loc`, proved from the fully
      marked Labute comparison `labute_GQ2_maxPro2_marked` (`pro2Map_loc`,
      `pro2Map_loc_surjective`, `pro2Map_loc_nu`);
    * `nu := ν_loc` — the common unramified character through which both factor. 
                  (Q2Presentation.Induction.MStage.mstageLowerQ2Presentation.Induction.MStage.mstageLower {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPairThe lower child in transparent form (instance-friendly). 
                      chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.
    
                  (Q2Presentation.Induction.MStage.mstageLowerQ2Presentation.Induction.MStage.mstageLower {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPairThe lower child in transparent form (instance-friendly). 
                      chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.
    ),
              NonemptyNonempty.{u} (α : Sort u) : Prop`Nonempty α` is a typeclass that says that `α` is not an empty type,
    that is, there exists an element in the type. It differs from `Inhabited α`
    in that `Nonempty α` is a `Prop`, which means that it does not actually carry
    an element of `α`, only a proof that *there exists* such an element.
    Given `Nonempty α`, you can construct an element of `α` *nonconstructively*
    using `Classical.choice`.
    
                (Q2Presentation.TorsorProgram.liftHomQ2Presentation.TorsorProgram.liftHom (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y) [hNn : N.Normal]
      (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ)
      (F : Q2Presentation.BoundaryFrame Yt)
      (g :
        Q2Presentation.boundaryFramedSurj B (Q2Presentation.TorsorProgram.quotientFramedTarget Yt N hNLY hNθ)
          (Q2Presentation.TorsorProgram.quotientFrame Yt N hNLY hNθ F)) :
      Type**All framed lifts** of a child-framed surjection (surjectivity NOT imposed;
    the Frattini argument recovers it per use-site). 
                  pQ2Presentation.Induction.FramedPair.fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.
     KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor.KsubQ2Presentation.Induction.KernelMinimal.Ksub {p : Q2Presentation.Induction.FramedPair}
      {chief : Q2Presentation.Induction.NonScalarChiefFactor p} (self : Q2Presentation.Induction.KernelMinimal chief) :
      Subgroup p.fst.Y  
                  Q2Presentation.boundaryPackage_GQ2Q2Presentation.boundaryPackage_GQ2 : Q2Presentation.BoundaryPackage Q2Presentation.GQ2Profinite**The local boundary package** `boundaryPackage_GQ2 : BoundaryPackage G_{ℚ₂}`
    (manuscript Prop 3.14 `prop:compatiblemarking` for `Γ = G_{ℚ₂}`; plan Turn 4 §6),
    the `G_{ℚ₂}`-side instance of the uniform Stage-C boundary datum.
    
    * `tameMap`/`tame_surj`/`tame_nu` — the local tame quotient `G_{ℚ₂} ↠ T_A` with
      unramified marking `ν_loc`, from the axiom `gq2_tame_quotient` (Prop 3.2 + the
      local half of Prop `compatiblemarking`);
    * `pro2Map`/`pro2_surj`/`pro2_nu` — the local maximal pro-`2` quotient
      `G_{ℚ₂} ↠ Π` with the *same* unramified marking `ν_loc`, proved from the fully
      marked Labute comparison `labute_GQ2_maxPro2_marked` (`pro2Map_loc`,
      `pro2Map_loc_surjective`, `pro2Map_loc_nu`);
    * `nu := ν_loc` — the common unramified character through which both factor. 
                  pQ2Presentation.Induction.FramedPair.sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.
     gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GQ2
      (Q2Presentation.Induction.MStage.mstageLower chief K).fst (Q2Presentation.Induction.MStage.mstageLower chief K).snd)) And (a b : Prop) : Prop`And a b`, or `a ∧ b`, is the conjunction of propositions. It can be
    constructed and destructed like a pair: if `ha : a` and `hb : b` then
    `⟨ha, hb⟩ : a ∧ b`, and if `h : a ∧ b` then `h.left : a` and `h.right : b`.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∧` in identifiers is `and`.
    
     * The recommended spelling of `/\` in identifiers is `and` (prefer `∧` over `/\`).
            
              (gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GQ2
      (Q2Presentation.TorsorProgram.quotientFramedTarget p.fst K.Ksub ⋯ ⋯)
      (Q2Presentation.TorsorProgram.quotientFrame p.fst K.Ksub ⋯ ⋯ p.snd) :
                Q2Presentation.boundaryFramedSurjQ2Presentation.boundaryFramedSurj {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ)
      (Yt : Q2Presentation.BoundaryFramedTarget) (F : Q2Presentation.BoundaryFrame Yt) : TypeThe **boundary-framed surjections** `e_Γ^β(𝒴)` (manuscript `eq:eGamma`): the
    continuous surjections `f : Γ ↠ Y` whose induced map to `H × E` is the prescribed
    `β ∘ b_Γ`, i.e. `q_Y ∘ f = β ∘ b_Γ`.  This is the subtype counted in Theorem 4.2;
    its cardinality is `e_Γ^β(𝒴)`. 
                  Q2Presentation.boundaryPackage_GQ2Q2Presentation.boundaryPackage_GQ2 : Q2Presentation.BoundaryPackage Q2Presentation.GQ2Profinite**The local boundary package** `boundaryPackage_GQ2 : BoundaryPackage G_{ℚ₂}`
    (manuscript Prop 3.14 `prop:compatiblemarking` for `Γ = G_{ℚ₂}`; plan Turn 4 §6),
    the `G_{ℚ₂}`-side instance of the uniform Stage-C boundary datum.
    
    * `tameMap`/`tame_surj`/`tame_nu` — the local tame quotient `G_{ℚ₂} ↠ T_A` with
      unramified marking `ν_loc`, from the axiom `gq2_tame_quotient` (Prop 3.2 + the
      local half of Prop `compatiblemarking`);
    * `pro2Map`/`pro2_surj`/`pro2_nu` — the local maximal pro-`2` quotient
      `G_{ℚ₂} ↠ Π` with the *same* unramified marking `ν_loc`, proved from the fully
      marked Labute comparison `labute_GQ2_maxPro2_marked` (`pro2Map_loc`,
      `pro2Map_loc_surjective`, `pro2Map_loc_nu`);
    * `nu := ν_loc` — the common unramified character through which both factor. 
                  (Q2Presentation.TorsorProgram.quotientFramedTargetQ2Presentation.TorsorProgram.quotientFramedTarget (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y)
      [hNn : N.Normal] (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) : Q2Presentation.BoundaryFramedTarget**The quotient framed target** `Y/N` (same `H`, same `E`, image wild kernel). 
                    pQ2Presentation.Induction.FramedPair.fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.
     KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor.KsubQ2Presentation.Induction.KernelMinimal.Ksub {p : Q2Presentation.Induction.FramedPair}
      {chief : Q2Presentation.Induction.NonScalarChiefFactor p} (self : Q2Presentation.Induction.KernelMinimal chief) :
      Subgroup p.fst.Y  )
                  (Q2Presentation.TorsorProgram.quotientFrameQ2Presentation.TorsorProgram.quotientFrame (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y)
      [hNn : N.Normal] (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) (F : Q2Presentation.BoundaryFrame Yt) :
      Q2Presentation.BoundaryFrame (Q2Presentation.TorsorProgram.quotientFramedTarget Yt N hNLY hNθ)The frame transports verbatim (`H`, `E`, `α`, `ψ`, `β` unchanged). 
                    pQ2Presentation.Induction.FramedPair.fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.
     KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor.KsubQ2Presentation.Induction.KernelMinimal.Ksub {p : Q2Presentation.Induction.FramedPair}
      {chief : Q2Presentation.Induction.NonScalarChiefFactor p} (self : Q2Presentation.Induction.KernelMinimal chief) :
      Subgroup p.fst.Y   pQ2Presentation.Induction.FramedPair.sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.
    ))
              (f₀Q2Presentation.TorsorProgram.liftHom p.fst K.Ksub ⋯ ⋯ Q2Presentation.boundaryPackage_GQ2 p.snd g :
                Q2Presentation.TorsorProgram.liftHomQ2Presentation.TorsorProgram.liftHom (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y) [hNn : N.Normal]
      (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ)
      (F : Q2Presentation.BoundaryFrame Yt)
      (g :
        Q2Presentation.boundaryFramedSurj B (Q2Presentation.TorsorProgram.quotientFramedTarget Yt N hNLY hNθ)
          (Q2Presentation.TorsorProgram.quotientFrame Yt N hNLY hNθ F)) :
      Type**All framed lifts** of a child-framed surjection (surjectivity NOT imposed;
    the Frattini argument recovers it per use-site). 
                  pQ2Presentation.Induction.FramedPair.fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.
     KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor.KsubQ2Presentation.Induction.KernelMinimal.Ksub {p : Q2Presentation.Induction.FramedPair}
      {chief : Q2Presentation.Induction.NonScalarChiefFactor p} (self : Q2Presentation.Induction.KernelMinimal chief) :
      Subgroup p.fst.Y  
                  Q2Presentation.boundaryPackage_GQ2Q2Presentation.boundaryPackage_GQ2 : Q2Presentation.BoundaryPackage Q2Presentation.GQ2Profinite**The local boundary package** `boundaryPackage_GQ2 : BoundaryPackage G_{ℚ₂}`
    (manuscript Prop 3.14 `prop:compatiblemarking` for `Γ = G_{ℚ₂}`; plan Turn 4 §6),
    the `G_{ℚ₂}`-side instance of the uniform Stage-C boundary datum.
    
    * `tameMap`/`tame_surj`/`tame_nu` — the local tame quotient `G_{ℚ₂} ↠ T_A` with
      unramified marking `ν_loc`, from the axiom `gq2_tame_quotient` (Prop 3.2 + the
      local half of Prop `compatiblemarking`);
    * `pro2Map`/`pro2_surj`/`pro2_nu` — the local maximal pro-`2` quotient
      `G_{ℚ₂} ↠ Π` with the *same* unramified marking `ν_loc`, proved from the fully
      marked Labute comparison `labute_GQ2_maxPro2_marked` (`pro2Map_loc`,
      `pro2Map_loc_surjective`, `pro2Map_loc_nu`);
    * `nu := ν_loc` — the common unramified character through which both factor. 
                  pQ2Presentation.Induction.FramedPair.sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.
     gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GQ2
      (Q2Presentation.TorsorProgram.quotientFramedTarget p.fst K.Ksub ⋯ ⋯)
      (Q2Presentation.TorsorProgram.quotientFrame p.fst K.Ksub ⋯ ⋯ p.snd)),
              Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number.
    If `α` is infinite, `Nat.card α = 0`. 
                  (Q2Presentation.TorsorProgram.Z1Q2Presentation.TorsorProgram.Z1 (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y) [hNn : N.Normal]
      (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ)
      (F : Q2Presentation.BoundaryFrame Yt)
      (g :
        Q2Presentation.boundaryFramedSurj B (Q2Presentation.TorsorProgram.quotientFramedTarget Yt N hNLY hNθ)
          (Q2Presentation.TorsorProgram.quotientFrame Yt N hNLY hNθ F))
      (f₀ : Q2Presentation.TorsorProgram.liftHom Yt N hNLY hNθ B F g) : Type**The twisted cocycle set** relative to a base lift. 
                    pQ2Presentation.Induction.FramedPair.fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.
     KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor.KsubQ2Presentation.Induction.KernelMinimal.Ksub {p : Q2Presentation.Induction.FramedPair}
      {chief : Q2Presentation.Induction.NonScalarChiefFactor p} (self : Q2Presentation.Induction.KernelMinimal chief) :
      Subgroup p.fst.Y  
                    Q2Presentation.boundaryPackage_GQ2Q2Presentation.boundaryPackage_GQ2 : Q2Presentation.BoundaryPackage Q2Presentation.GQ2Profinite**The local boundary package** `boundaryPackage_GQ2 : BoundaryPackage G_{ℚ₂}`
    (manuscript Prop 3.14 `prop:compatiblemarking` for `Γ = G_{ℚ₂}`; plan Turn 4 §6),
    the `G_{ℚ₂}`-side instance of the uniform Stage-C boundary datum.
    
    * `tameMap`/`tame_surj`/`tame_nu` — the local tame quotient `G_{ℚ₂} ↠ T_A` with
      unramified marking `ν_loc`, from the axiom `gq2_tame_quotient` (Prop 3.2 + the
      local half of Prop `compatiblemarking`);
    * `pro2Map`/`pro2_surj`/`pro2_nu` — the local maximal pro-`2` quotient
      `G_{ℚ₂} ↠ Π` with the *same* unramified marking `ν_loc`, proved from the fully
      marked Labute comparison `labute_GQ2_maxPro2_marked` (`pro2Map_loc`,
      `pro2Map_loc_surjective`, `pro2Map_loc_nu`);
    * `nu := ν_loc` — the common unramified character through which both factor. 
                    pQ2Presentation.Induction.FramedPair.sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.
     gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GQ2
      (Q2Presentation.TorsorProgram.quotientFramedTarget p.fst K.Ksub ⋯ ⋯)
      (Q2Presentation.TorsorProgram.quotientFrame p.fst K.Ksub ⋯ ⋯ p.snd) f₀Q2Presentation.TorsorProgram.liftHom p.fst K.Ksub ⋯ ⋯ Q2Presentation.boundaryPackage_GQ2 p.snd g) =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`.
                2 ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`.
                  (HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.2 *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
                    Q2Presentation.Induction.sec7MStageDimQ2Presentation.Induction.sec7MStageDim {p : Q2Presentation.Induction.FramedPair}
      {chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p}
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : ℕThe actual elementary-layer dimension used by the `R = 1` M-stage.
    
    In the manuscript notation this is `dim_{𝔽₂} M`, with
    `M = K/Φ(K)`.  The current concrete Section 7 tower realizes this as `towerM K`;
    when `R = Φ(K) = 1`, this is the elementary layer lifted in `eq:Mstage`.
    
                      KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
    **The `M`-layer cochain keep** (`lem:elementarystage`, manuscript l.4170-4204):
    per source, every lower-child framed surjection admits a framed lift
    (`H²_{Γ,ρ}(M) = 0`) and the twisted cocycle set has the canonical size
    `|Z¹_{Γ,ρ}(M)| = 2^{2·dim M}`.  Canonical-provenance existence-form. 
  • theoremdefined in Q2Presentation/Induction/RadicalEdgeCount.lean
    complete
    theorem Q2Presentation.Induction.mChild_liftHom_nonempty_gq2
      {pQ2Presentation.Induction.FramedPair : Q2Presentation.Induction.FramedPairQ2Presentation.Induction.FramedPair : Type 1A **framed pair** `(𝒴, F)`: a boundary-framed marked target together with a
    boundary frame for it (manuscript Definition 4.1 + `eq:beta`).  This is the index of
    Theorem 4.2: the boundary-framed surjection count `e_Γ^β` is a function of the pair.
    The induction of `sec:induction` ranges over *all* such pairs simultaneously
    ("the induction is stated globally", l.1213), ordered by `|L_Y|`. }
      (chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p : Q2Presentation.Induction.FirstNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor (p : Q2Presentation.Induction.FramedPair) : TypeA non-scalar chief factor of `L_Y` that is **first**: every chief factor strictly
    below it (i.e. with upper term contained in `lower`) is scalar.  This is the manuscript's
    choice `S ◁ P` at l.3616–3623 ("all chief factors below `S` are scalar and `V` is the
    first non-scalar simple factor"), which `lem:collapse` requires for the coprime step
    `[S, Ñ] = 1`.  pQ2Presentation.Induction.FramedPair)
      (KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor :
        Q2Presentation.Induction.KernelMinimalQ2Presentation.Induction.KernelMinimal {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.NonScalarChiefFactor p) : TypeThe manuscript's kernel choice (l.3623): `K ◁ Y`, `K ≤ P`, `KS = P`, and `K` is
    **⊆-minimal** with these properties — stated as: any `Y`-normal `K' ≤ K` still joining
    with `S` to `P` equals `K`.  (This, not leastness among all candidates, is what
    `lem:simplehead` and `lem:collapse` use: both apply it to subgroups of `K`.)  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p.toNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor.toNonScalarChiefFactor {p : Q2Presentation.Induction.FramedPair}
      (self : Q2Presentation.Induction.FirstNonScalarChiefFactor p) : Q2Presentation.Induction.NonScalarChiefFactor p)
      (gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GQ2
      (Q2Presentation.TorsorProgram.quotientFramedTarget (Q2Presentation.Induction.XRZero.xrChild chief K).fst
        (Q2Presentation.Induction.mChildKernel chief K).N ⋯ ⋯)
      (Q2Presentation.TorsorProgram.quotientFrame (Q2Presentation.Induction.XRZero.xrChild chief K).fst
        (Q2Presentation.Induction.mChildKernel chief K).N ⋯ ⋯ (Q2Presentation.Induction.XRZero.xrChild chief K).snd) :
        Q2Presentation.boundaryFramedSurjQ2Presentation.boundaryFramedSurj {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ)
      (Yt : Q2Presentation.BoundaryFramedTarget) (F : Q2Presentation.BoundaryFrame Yt) : TypeThe **boundary-framed surjections** `e_Γ^β(𝒴)` (manuscript `eq:eGamma`): the
    continuous surjections `f : Γ ↠ Y` whose induced map to `H × E` is the prescribed
    `β ∘ b_Γ`, i.e. `q_Y ∘ f = β ∘ b_Γ`.  This is the subtype counted in Theorem 4.2;
    its cardinality is `e_Γ^β(𝒴)`.  Q2Presentation.boundaryPackage_GQ2Q2Presentation.boundaryPackage_GQ2 : Q2Presentation.BoundaryPackage Q2Presentation.GQ2Profinite**The local boundary package** `boundaryPackage_GQ2 : BoundaryPackage G_{ℚ₂}`
    (manuscript Prop 3.14 `prop:compatiblemarking` for `Γ = G_{ℚ₂}`; plan Turn 4 §6),
    the `G_{ℚ₂}`-side instance of the uniform Stage-C boundary datum.
    
    * `tameMap`/`tame_surj`/`tame_nu` — the local tame quotient `G_{ℚ₂} ↠ T_A` with
      unramified marking `ν_loc`, from the axiom `gq2_tame_quotient` (Prop 3.2 + the
      local half of Prop `compatiblemarking`);
    * `pro2Map`/`pro2_surj`/`pro2_nu` — the local maximal pro-`2` quotient
      `G_{ℚ₂} ↠ Π` with the *same* unramified marking `ν_loc`, proved from the fully
      marked Labute comparison `labute_GQ2_maxPro2_marked` (`pro2Map_loc`,
      `pro2Map_loc_surjective`, `pro2Map_loc_nu`);
    * `nu := ν_loc` — the common unramified character through which both factor. 
          (Q2Presentation.TorsorProgram.quotientFramedTargetQ2Presentation.TorsorProgram.quotientFramedTarget (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y)
      [hNn : N.Normal] (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) : Q2Presentation.BoundaryFramedTarget**The quotient framed target** `Y/N` (same `H`, same `E`, image wild kernel). 
            (Q2Presentation.Induction.XRZero.xrChildQ2Presentation.Induction.XRZero.xrChild {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPairThe `𝒳_R = 0` child: the quotient framed pair at `N = Φ`-layer.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.
    
            (Q2Presentation.Induction.mChildKernelQ2Presentation.Induction.mChildKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel (Q2Presentation.Induction.XRZero.xrChild chief K).fst**The elementary `M`-kernel at the child** `B = Y/Φ(K)`
    (`lem:simplehead` carrier for `lem:elementarystage`): `N = M' = K/Φ(K)`.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).NQ2Presentation.Lifting.ElementaryKernel.N {Yt : Q2Presentation.BoundaryFramedTarget}
      (self : Q2Presentation.Lifting.ElementaryKernel Yt) : Subgroup Yt.Y  )
          (Q2Presentation.TorsorProgram.quotientFrameQ2Presentation.TorsorProgram.quotientFrame (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y)
      [hNn : N.Normal] (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) (F : Q2Presentation.BoundaryFrame Yt) :
      Q2Presentation.BoundaryFrame (Q2Presentation.TorsorProgram.quotientFramedTarget Yt N hNLY hNθ)The frame transports verbatim (`H`, `E`, `α`, `ψ`, `β` unchanged). 
            (Q2Presentation.Induction.XRZero.xrChildQ2Presentation.Induction.XRZero.xrChild {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPairThe `𝒳_R = 0` child: the quotient framed pair at `N = Φ`-layer.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.
    
            (Q2Presentation.Induction.mChildKernelQ2Presentation.Induction.mChildKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel (Q2Presentation.Induction.XRZero.xrChild chief K).fst**The elementary `M`-kernel at the child** `B = Y/Φ(K)`
    (`lem:simplehead` carrier for `lem:elementarystage`): `N = M' = K/Φ(K)`.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).NQ2Presentation.Lifting.ElementaryKernel.N {Yt : Q2Presentation.BoundaryFramedTarget}
      (self : Q2Presentation.Lifting.ElementaryKernel Yt) : Subgroup Yt.Y  
            (Q2Presentation.Induction.XRZero.xrChildQ2Presentation.Induction.XRZero.xrChild {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPairThe `𝒳_R = 0` child: the quotient framed pair at `N = Φ`-layer.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.
    )) :
      NonemptyNonempty.{u} (α : Sort u) : Prop`Nonempty α` is a typeclass that says that `α` is not an empty type,
    that is, there exists an element in the type. It differs from `Inhabited α`
    in that `Nonempty α` is a `Prop`, which means that it does not actually carry
    an element of `α`, only a proof that *there exists* such an element.
    Given `Nonempty α`, you can construct an element of `α` *nonconstructively*
    using `Classical.choice`.
    
        (Q2Presentation.TorsorProgram.liftHomQ2Presentation.TorsorProgram.liftHom (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y) [hNn : N.Normal]
      (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ)
      (F : Q2Presentation.BoundaryFrame Yt)
      (g :
        Q2Presentation.boundaryFramedSurj B (Q2Presentation.TorsorProgram.quotientFramedTarget Yt N hNLY hNθ)
          (Q2Presentation.TorsorProgram.quotientFrame Yt N hNLY hNθ F)) :
      Type**All framed lifts** of a child-framed surjection (surjectivity NOT imposed;
    the Frattini argument recovers it per use-site). 
          (Q2Presentation.Induction.XRZero.xrChildQ2Presentation.Induction.XRZero.xrChild {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPairThe `𝒳_R = 0` child: the quotient framed pair at `N = Φ`-layer.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.
    
          (Q2Presentation.Induction.mChildKernelQ2Presentation.Induction.mChildKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel (Q2Presentation.Induction.XRZero.xrChild chief K).fst**The elementary `M`-kernel at the child** `B = Y/Φ(K)`
    (`lem:simplehead` carrier for `lem:elementarystage`): `N = M' = K/Φ(K)`.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).NQ2Presentation.Lifting.ElementaryKernel.N {Yt : Q2Presentation.BoundaryFramedTarget}
      (self : Q2Presentation.Lifting.ElementaryKernel Yt) : Subgroup Yt.Y  
          Q2Presentation.boundaryPackage_GQ2Q2Presentation.boundaryPackage_GQ2 : Q2Presentation.BoundaryPackage Q2Presentation.GQ2Profinite**The local boundary package** `boundaryPackage_GQ2 : BoundaryPackage G_{ℚ₂}`
    (manuscript Prop 3.14 `prop:compatiblemarking` for `Γ = G_{ℚ₂}`; plan Turn 4 §6),
    the `G_{ℚ₂}`-side instance of the uniform Stage-C boundary datum.
    
    * `tameMap`/`tame_surj`/`tame_nu` — the local tame quotient `G_{ℚ₂} ↠ T_A` with
      unramified marking `ν_loc`, from the axiom `gq2_tame_quotient` (Prop 3.2 + the
      local half of Prop `compatiblemarking`);
    * `pro2Map`/`pro2_surj`/`pro2_nu` — the local maximal pro-`2` quotient
      `G_{ℚ₂} ↠ Π` with the *same* unramified marking `ν_loc`, proved from the fully
      marked Labute comparison `labute_GQ2_maxPro2_marked` (`pro2Map_loc`,
      `pro2Map_loc_surjective`, `pro2Map_loc_nu`);
    * `nu := ν_loc` — the common unramified character through which both factor. 
          (Q2Presentation.Induction.XRZero.xrChildQ2Presentation.Induction.XRZero.xrChild {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPairThe `𝒳_R = 0` child: the quotient framed pair at `N = Φ`-layer.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.
     gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GQ2
      (Q2Presentation.TorsorProgram.quotientFramedTarget (Q2Presentation.Induction.XRZero.xrChild chief K).fst
        (Q2Presentation.Induction.mChildKernel chief K).N ⋯ ⋯)
      (Q2Presentation.TorsorProgram.quotientFrame (Q2Presentation.Induction.XRZero.xrChild chief K).fst
        (Q2Presentation.Induction.mChildKernel chief K).N ⋯ ⋯ (Q2Presentation.Induction.XRZero.xrChild chief K).snd))
    theorem Q2Presentation.Induction.mChild_liftHom_nonempty_gq2
      {pQ2Presentation.Induction.FramedPair :
        Q2Presentation.Induction.FramedPairQ2Presentation.Induction.FramedPair : Type 1A **framed pair** `(𝒴, F)`: a boundary-framed marked target together with a
    boundary frame for it (manuscript Definition 4.1 + `eq:beta`).  This is the index of
    Theorem 4.2: the boundary-framed surjection count `e_Γ^β` is a function of the pair.
    The induction of `sec:induction` ranges over *all* such pairs simultaneously
    ("the induction is stated globally", l.1213), ordered by `|L_Y|`. }
      (chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p :
        Q2Presentation.Induction.FirstNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor (p : Q2Presentation.Induction.FramedPair) : TypeA non-scalar chief factor of `L_Y` that is **first**: every chief factor strictly
    below it (i.e. with upper term contained in `lower`) is scalar.  This is the manuscript's
    choice `S ◁ P` at l.3616–3623 ("all chief factors below `S` are scalar and `V` is the
    first non-scalar simple factor"), which `lem:collapse` requires for the coprime step
    `[S, Ñ] = 1`. 
          pQ2Presentation.Induction.FramedPair)
      (KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor :
        Q2Presentation.Induction.KernelMinimalQ2Presentation.Induction.KernelMinimal {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.NonScalarChiefFactor p) : TypeThe manuscript's kernel choice (l.3623): `K ◁ Y`, `K ≤ P`, `KS = P`, and `K` is
    **⊆-minimal** with these properties — stated as: any `Y`-normal `K' ≤ K` still joining
    with `S` to `P` equals `K`.  (This, not leastness among all candidates, is what
    `lem:simplehead` and `lem:collapse` use: both apply it to subgroups of `K`.) 
          chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p.toNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor.toNonScalarChiefFactor {p : Q2Presentation.Induction.FramedPair}
      (self : Q2Presentation.Induction.FirstNonScalarChiefFactor p) : Q2Presentation.Induction.NonScalarChiefFactor p)
      (gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GQ2
      (Q2Presentation.TorsorProgram.quotientFramedTarget (Q2Presentation.Induction.XRZero.xrChild chief K).fst
        (Q2Presentation.Induction.mChildKernel chief K).N ⋯ ⋯)
      (Q2Presentation.TorsorProgram.quotientFrame (Q2Presentation.Induction.XRZero.xrChild chief K).fst
        (Q2Presentation.Induction.mChildKernel chief K).N ⋯ ⋯ (Q2Presentation.Induction.XRZero.xrChild chief K).snd) :
        Q2Presentation.boundaryFramedSurjQ2Presentation.boundaryFramedSurj {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ)
      (Yt : Q2Presentation.BoundaryFramedTarget) (F : Q2Presentation.BoundaryFrame Yt) : TypeThe **boundary-framed surjections** `e_Γ^β(𝒴)` (manuscript `eq:eGamma`): the
    continuous surjections `f : Γ ↠ Y` whose induced map to `H × E` is the prescribed
    `β ∘ b_Γ`, i.e. `q_Y ∘ f = β ∘ b_Γ`.  This is the subtype counted in Theorem 4.2;
    its cardinality is `e_Γ^β(𝒴)`. 
          Q2Presentation.boundaryPackage_GQ2Q2Presentation.boundaryPackage_GQ2 : Q2Presentation.BoundaryPackage Q2Presentation.GQ2Profinite**The local boundary package** `boundaryPackage_GQ2 : BoundaryPackage G_{ℚ₂}`
    (manuscript Prop 3.14 `prop:compatiblemarking` for `Γ = G_{ℚ₂}`; plan Turn 4 §6),
    the `G_{ℚ₂}`-side instance of the uniform Stage-C boundary datum.
    
    * `tameMap`/`tame_surj`/`tame_nu` — the local tame quotient `G_{ℚ₂} ↠ T_A` with
      unramified marking `ν_loc`, from the axiom `gq2_tame_quotient` (Prop 3.2 + the
      local half of Prop `compatiblemarking`);
    * `pro2Map`/`pro2_surj`/`pro2_nu` — the local maximal pro-`2` quotient
      `G_{ℚ₂} ↠ Π` with the *same* unramified marking `ν_loc`, proved from the fully
      marked Labute comparison `labute_GQ2_maxPro2_marked` (`pro2Map_loc`,
      `pro2Map_loc_surjective`, `pro2Map_loc_nu`);
    * `nu := ν_loc` — the common unramified character through which both factor. 
          (Q2Presentation.TorsorProgram.quotientFramedTargetQ2Presentation.TorsorProgram.quotientFramedTarget (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y)
      [hNn : N.Normal] (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) : Q2Presentation.BoundaryFramedTarget**The quotient framed target** `Y/N` (same `H`, same `E`, image wild kernel). 
            (Q2Presentation.Induction.XRZero.xrChildQ2Presentation.Induction.XRZero.xrChild {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPairThe `𝒳_R = 0` child: the quotient framed pair at `N = Φ`-layer. 
                chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.
    
            (Q2Presentation.Induction.mChildKernelQ2Presentation.Induction.mChildKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel (Q2Presentation.Induction.XRZero.xrChild chief K).fst**The elementary `M`-kernel at the child** `B = Y/Φ(K)`
    (`lem:simplehead` carrier for `lem:elementarystage`): `N = M' = K/Φ(K)`. 
                chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).NQ2Presentation.Lifting.ElementaryKernel.N {Yt : Q2Presentation.BoundaryFramedTarget}
      (self : Q2Presentation.Lifting.ElementaryKernel Yt) : Subgroup Yt.Y
             )
          (Q2Presentation.TorsorProgram.quotientFrameQ2Presentation.TorsorProgram.quotientFrame (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y)
      [hNn : N.Normal] (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) (F : Q2Presentation.BoundaryFrame Yt) :
      Q2Presentation.BoundaryFrame (Q2Presentation.TorsorProgram.quotientFramedTarget Yt N hNLY hNθ)The frame transports verbatim (`H`, `E`, `α`, `ψ`, `β` unchanged). 
            (Q2Presentation.Induction.XRZero.xrChildQ2Presentation.Induction.XRZero.xrChild {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPairThe `𝒳_R = 0` child: the quotient framed pair at `N = Φ`-layer. 
                chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.
    
            (Q2Presentation.Induction.mChildKernelQ2Presentation.Induction.mChildKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel (Q2Presentation.Induction.XRZero.xrChild chief K).fst**The elementary `M`-kernel at the child** `B = Y/Φ(K)`
    (`lem:simplehead` carrier for `lem:elementarystage`): `N = M' = K/Φ(K)`. 
                chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).NQ2Presentation.Lifting.ElementaryKernel.N {Yt : Q2Presentation.BoundaryFramedTarget}
      (self : Q2Presentation.Lifting.ElementaryKernel Yt) : Subgroup Yt.Y
             
            (Q2Presentation.Induction.XRZero.xrChildQ2Presentation.Induction.XRZero.xrChild {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPairThe `𝒳_R = 0` child: the quotient framed pair at `N = Φ`-layer. 
                chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.
    )) :
      NonemptyNonempty.{u} (α : Sort u) : Prop`Nonempty α` is a typeclass that says that `α` is not an empty type,
    that is, there exists an element in the type. It differs from `Inhabited α`
    in that `Nonempty α` is a `Prop`, which means that it does not actually carry
    an element of `α`, only a proof that *there exists* such an element.
    Given `Nonempty α`, you can construct an element of `α` *nonconstructively*
    using `Classical.choice`.
    
        (Q2Presentation.TorsorProgram.liftHomQ2Presentation.TorsorProgram.liftHom (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y) [hNn : N.Normal]
      (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ)
      (F : Q2Presentation.BoundaryFrame Yt)
      (g :
        Q2Presentation.boundaryFramedSurj B (Q2Presentation.TorsorProgram.quotientFramedTarget Yt N hNLY hNθ)
          (Q2Presentation.TorsorProgram.quotientFrame Yt N hNLY hNθ F)) :
      Type**All framed lifts** of a child-framed surjection (surjectivity NOT imposed;
    the Frattini argument recovers it per use-site). 
          (Q2Presentation.Induction.XRZero.xrChildQ2Presentation.Induction.XRZero.xrChild {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPairThe `𝒳_R = 0` child: the quotient framed pair at `N = Φ`-layer. 
              chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.
    
          (Q2Presentation.Induction.mChildKernelQ2Presentation.Induction.mChildKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel (Q2Presentation.Induction.XRZero.xrChild chief K).fst**The elementary `M`-kernel at the child** `B = Y/Φ(K)`
    (`lem:simplehead` carrier for `lem:elementarystage`): `N = M' = K/Φ(K)`. 
              chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).NQ2Presentation.Lifting.ElementaryKernel.N {Yt : Q2Presentation.BoundaryFramedTarget}
      (self : Q2Presentation.Lifting.ElementaryKernel Yt) : Subgroup Yt.Y
           
          Q2Presentation.boundaryPackage_GQ2Q2Presentation.boundaryPackage_GQ2 : Q2Presentation.BoundaryPackage Q2Presentation.GQ2Profinite**The local boundary package** `boundaryPackage_GQ2 : BoundaryPackage G_{ℚ₂}`
    (manuscript Prop 3.14 `prop:compatiblemarking` for `Γ = G_{ℚ₂}`; plan Turn 4 §6),
    the `G_{ℚ₂}`-side instance of the uniform Stage-C boundary datum.
    
    * `tameMap`/`tame_surj`/`tame_nu` — the local tame quotient `G_{ℚ₂} ↠ T_A` with
      unramified marking `ν_loc`, from the axiom `gq2_tame_quotient` (Prop 3.2 + the
      local half of Prop `compatiblemarking`);
    * `pro2Map`/`pro2_surj`/`pro2_nu` — the local maximal pro-`2` quotient
      `G_{ℚ₂} ↠ Π` with the *same* unramified marking `ν_loc`, proved from the fully
      marked Labute comparison `labute_GQ2_maxPro2_marked` (`pro2Map_loc`,
      `pro2Map_loc_surjective`, `pro2Map_loc_nu`);
    * `nu := ν_loc` — the common unramified character through which both factor. 
          (Q2Presentation.Induction.XRZero.xrChildQ2Presentation.Induction.XRZero.xrChild {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPairThe `𝒳_R = 0` child: the quotient framed pair at `N = Φ`-layer. 
              chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.
    
          gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GQ2
      (Q2Presentation.TorsorProgram.quotientFramedTarget (Q2Presentation.Induction.XRZero.xrChild chief K).fst
        (Q2Presentation.Induction.mChildKernel chief K).N ⋯ ⋯)
      (Q2Presentation.TorsorProgram.quotientFrame (Q2Presentation.Induction.XRZero.xrChild chief K).fst
        (Q2Presentation.Induction.mChildKernel chief K).N ⋯ ⋯ (Q2Presentation.Induction.XRZero.xrChild chief K).snd))
    **Local `lem:elementarystage`, existence clause** (THEOREM from the
    citable `q2_localduality_general` + the proven invariant-dual vanishing):
    every `G_{ℚ₂}`-framed surjection onto the C-child admits framed
    `M`-lifts. 
  • theoremdefined in Q2Presentation/Induction/RadicalEdgeCount.lean
    complete
    theorem Q2Presentation.Induction.mChild_Z1_card_gq2
      {pQ2Presentation.Induction.FramedPair : Q2Presentation.Induction.FramedPairQ2Presentation.Induction.FramedPair : Type 1A **framed pair** `(𝒴, F)`: a boundary-framed marked target together with a
    boundary frame for it (manuscript Definition 4.1 + `eq:beta`).  This is the index of
    Theorem 4.2: the boundary-framed surjection count `e_Γ^β` is a function of the pair.
    The induction of `sec:induction` ranges over *all* such pairs simultaneously
    ("the induction is stated globally", l.1213), ordered by `|L_Y|`. }
      (chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p : Q2Presentation.Induction.FirstNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor (p : Q2Presentation.Induction.FramedPair) : TypeA non-scalar chief factor of `L_Y` that is **first**: every chief factor strictly
    below it (i.e. with upper term contained in `lower`) is scalar.  This is the manuscript's
    choice `S ◁ P` at l.3616–3623 ("all chief factors below `S` are scalar and `V` is the
    first non-scalar simple factor"), which `lem:collapse` requires for the coprime step
    `[S, Ñ] = 1`.  pQ2Presentation.Induction.FramedPair)
      (KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor :
        Q2Presentation.Induction.KernelMinimalQ2Presentation.Induction.KernelMinimal {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.NonScalarChiefFactor p) : TypeThe manuscript's kernel choice (l.3623): `K ◁ Y`, `K ≤ P`, `KS = P`, and `K` is
    **⊆-minimal** with these properties — stated as: any `Y`-normal `K' ≤ K` still joining
    with `S` to `P` equals `K`.  (This, not leastness among all candidates, is what
    `lem:simplehead` and `lem:collapse` use: both apply it to subgroups of `K`.)  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p.toNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor.toNonScalarChiefFactor {p : Q2Presentation.Induction.FramedPair}
      (self : Q2Presentation.Induction.FirstNonScalarChiefFactor p) : Q2Presentation.Induction.NonScalarChiefFactor p)
      (gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GQ2
      (Q2Presentation.TorsorProgram.quotientFramedTarget (Q2Presentation.Induction.XRZero.xrChild chief K).fst
        (Q2Presentation.Induction.mChildKernel chief K).N ⋯ ⋯)
      (Q2Presentation.TorsorProgram.quotientFrame (Q2Presentation.Induction.XRZero.xrChild chief K).fst
        (Q2Presentation.Induction.mChildKernel chief K).N ⋯ ⋯ (Q2Presentation.Induction.XRZero.xrChild chief K).snd) :
        Q2Presentation.boundaryFramedSurjQ2Presentation.boundaryFramedSurj {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ)
      (Yt : Q2Presentation.BoundaryFramedTarget) (F : Q2Presentation.BoundaryFrame Yt) : TypeThe **boundary-framed surjections** `e_Γ^β(𝒴)` (manuscript `eq:eGamma`): the
    continuous surjections `f : Γ ↠ Y` whose induced map to `H × E` is the prescribed
    `β ∘ b_Γ`, i.e. `q_Y ∘ f = β ∘ b_Γ`.  This is the subtype counted in Theorem 4.2;
    its cardinality is `e_Γ^β(𝒴)`.  Q2Presentation.boundaryPackage_GQ2Q2Presentation.boundaryPackage_GQ2 : Q2Presentation.BoundaryPackage Q2Presentation.GQ2Profinite**The local boundary package** `boundaryPackage_GQ2 : BoundaryPackage G_{ℚ₂}`
    (manuscript Prop 3.14 `prop:compatiblemarking` for `Γ = G_{ℚ₂}`; plan Turn 4 §6),
    the `G_{ℚ₂}`-side instance of the uniform Stage-C boundary datum.
    
    * `tameMap`/`tame_surj`/`tame_nu` — the local tame quotient `G_{ℚ₂} ↠ T_A` with
      unramified marking `ν_loc`, from the axiom `gq2_tame_quotient` (Prop 3.2 + the
      local half of Prop `compatiblemarking`);
    * `pro2Map`/`pro2_surj`/`pro2_nu` — the local maximal pro-`2` quotient
      `G_{ℚ₂} ↠ Π` with the *same* unramified marking `ν_loc`, proved from the fully
      marked Labute comparison `labute_GQ2_maxPro2_marked` (`pro2Map_loc`,
      `pro2Map_loc_surjective`, `pro2Map_loc_nu`);
    * `nu := ν_loc` — the common unramified character through which both factor. 
          (Q2Presentation.TorsorProgram.quotientFramedTargetQ2Presentation.TorsorProgram.quotientFramedTarget (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y)
      [hNn : N.Normal] (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) : Q2Presentation.BoundaryFramedTarget**The quotient framed target** `Y/N` (same `H`, same `E`, image wild kernel). 
            (Q2Presentation.Induction.XRZero.xrChildQ2Presentation.Induction.XRZero.xrChild {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPairThe `𝒳_R = 0` child: the quotient framed pair at `N = Φ`-layer.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.
    
            (Q2Presentation.Induction.mChildKernelQ2Presentation.Induction.mChildKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel (Q2Presentation.Induction.XRZero.xrChild chief K).fst**The elementary `M`-kernel at the child** `B = Y/Φ(K)`
    (`lem:simplehead` carrier for `lem:elementarystage`): `N = M' = K/Φ(K)`.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).NQ2Presentation.Lifting.ElementaryKernel.N {Yt : Q2Presentation.BoundaryFramedTarget}
      (self : Q2Presentation.Lifting.ElementaryKernel Yt) : Subgroup Yt.Y  )
          (Q2Presentation.TorsorProgram.quotientFrameQ2Presentation.TorsorProgram.quotientFrame (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y)
      [hNn : N.Normal] (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) (F : Q2Presentation.BoundaryFrame Yt) :
      Q2Presentation.BoundaryFrame (Q2Presentation.TorsorProgram.quotientFramedTarget Yt N hNLY hNθ)The frame transports verbatim (`H`, `E`, `α`, `ψ`, `β` unchanged). 
            (Q2Presentation.Induction.XRZero.xrChildQ2Presentation.Induction.XRZero.xrChild {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPairThe `𝒳_R = 0` child: the quotient framed pair at `N = Φ`-layer.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.
    
            (Q2Presentation.Induction.mChildKernelQ2Presentation.Induction.mChildKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel (Q2Presentation.Induction.XRZero.xrChild chief K).fst**The elementary `M`-kernel at the child** `B = Y/Φ(K)`
    (`lem:simplehead` carrier for `lem:elementarystage`): `N = M' = K/Φ(K)`.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).NQ2Presentation.Lifting.ElementaryKernel.N {Yt : Q2Presentation.BoundaryFramedTarget}
      (self : Q2Presentation.Lifting.ElementaryKernel Yt) : Subgroup Yt.Y  
            (Q2Presentation.Induction.XRZero.xrChildQ2Presentation.Induction.XRZero.xrChild {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPairThe `𝒳_R = 0` child: the quotient framed pair at `N = Φ`-layer.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.
    ))
      (f₀Q2Presentation.TorsorProgram.liftHom (Q2Presentation.Induction.XRZero.xrChild chief K).fst
      (Q2Presentation.Induction.mChildKernel chief K).N ⋯ ⋯ Q2Presentation.boundaryPackage_GQ2
      (Q2Presentation.Induction.XRZero.xrChild chief K).snd g :
        Q2Presentation.TorsorProgram.liftHomQ2Presentation.TorsorProgram.liftHom (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y) [hNn : N.Normal]
      (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ)
      (F : Q2Presentation.BoundaryFrame Yt)
      (g :
        Q2Presentation.boundaryFramedSurj B (Q2Presentation.TorsorProgram.quotientFramedTarget Yt N hNLY hNθ)
          (Q2Presentation.TorsorProgram.quotientFrame Yt N hNLY hNθ F)) :
      Type**All framed lifts** of a child-framed surjection (surjectivity NOT imposed;
    the Frattini argument recovers it per use-site). 
          (Q2Presentation.Induction.XRZero.xrChildQ2Presentation.Induction.XRZero.xrChild {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPairThe `𝒳_R = 0` child: the quotient framed pair at `N = Φ`-layer.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.
    
          (Q2Presentation.Induction.mChildKernelQ2Presentation.Induction.mChildKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel (Q2Presentation.Induction.XRZero.xrChild chief K).fst**The elementary `M`-kernel at the child** `B = Y/Φ(K)`
    (`lem:simplehead` carrier for `lem:elementarystage`): `N = M' = K/Φ(K)`.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).NQ2Presentation.Lifting.ElementaryKernel.N {Yt : Q2Presentation.BoundaryFramedTarget}
      (self : Q2Presentation.Lifting.ElementaryKernel Yt) : Subgroup Yt.Y  
          Q2Presentation.boundaryPackage_GQ2Q2Presentation.boundaryPackage_GQ2 : Q2Presentation.BoundaryPackage Q2Presentation.GQ2Profinite**The local boundary package** `boundaryPackage_GQ2 : BoundaryPackage G_{ℚ₂}`
    (manuscript Prop 3.14 `prop:compatiblemarking` for `Γ = G_{ℚ₂}`; plan Turn 4 §6),
    the `G_{ℚ₂}`-side instance of the uniform Stage-C boundary datum.
    
    * `tameMap`/`tame_surj`/`tame_nu` — the local tame quotient `G_{ℚ₂} ↠ T_A` with
      unramified marking `ν_loc`, from the axiom `gq2_tame_quotient` (Prop 3.2 + the
      local half of Prop `compatiblemarking`);
    * `pro2Map`/`pro2_surj`/`pro2_nu` — the local maximal pro-`2` quotient
      `G_{ℚ₂} ↠ Π` with the *same* unramified marking `ν_loc`, proved from the fully
      marked Labute comparison `labute_GQ2_maxPro2_marked` (`pro2Map_loc`,
      `pro2Map_loc_surjective`, `pro2Map_loc_nu`);
    * `nu := ν_loc` — the common unramified character through which both factor. 
          (Q2Presentation.Induction.XRZero.xrChildQ2Presentation.Induction.XRZero.xrChild {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPairThe `𝒳_R = 0` child: the quotient framed pair at `N = Φ`-layer.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.
     gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GQ2
      (Q2Presentation.TorsorProgram.quotientFramedTarget (Q2Presentation.Induction.XRZero.xrChild chief K).fst
        (Q2Presentation.Induction.mChildKernel chief K).N ⋯ ⋯)
      (Q2Presentation.TorsorProgram.quotientFrame (Q2Presentation.Induction.XRZero.xrChild chief K).fst
        (Q2Presentation.Induction.mChildKernel chief K).N ⋯ ⋯ (Q2Presentation.Induction.XRZero.xrChild chief K).snd)) :
      Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number.
    If `α` is infinite, `Nat.card α = 0`. 
          (Q2Presentation.TorsorProgram.Z1Q2Presentation.TorsorProgram.Z1 (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y) [hNn : N.Normal]
      (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ)
      (F : Q2Presentation.BoundaryFrame Yt)
      (g :
        Q2Presentation.boundaryFramedSurj B (Q2Presentation.TorsorProgram.quotientFramedTarget Yt N hNLY hNθ)
          (Q2Presentation.TorsorProgram.quotientFrame Yt N hNLY hNθ F))
      (f₀ : Q2Presentation.TorsorProgram.liftHom Yt N hNLY hNθ B F g) : Type**The twisted cocycle set** relative to a base lift. 
            (Q2Presentation.Induction.XRZero.xrChildQ2Presentation.Induction.XRZero.xrChild {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPairThe `𝒳_R = 0` child: the quotient framed pair at `N = Φ`-layer.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.
    
            (Q2Presentation.Induction.mChildKernelQ2Presentation.Induction.mChildKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel (Q2Presentation.Induction.XRZero.xrChild chief K).fst**The elementary `M`-kernel at the child** `B = Y/Φ(K)`
    (`lem:simplehead` carrier for `lem:elementarystage`): `N = M' = K/Φ(K)`.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).NQ2Presentation.Lifting.ElementaryKernel.N {Yt : Q2Presentation.BoundaryFramedTarget}
      (self : Q2Presentation.Lifting.ElementaryKernel Yt) : Subgroup Yt.Y  
            Q2Presentation.boundaryPackage_GQ2Q2Presentation.boundaryPackage_GQ2 : Q2Presentation.BoundaryPackage Q2Presentation.GQ2Profinite**The local boundary package** `boundaryPackage_GQ2 : BoundaryPackage G_{ℚ₂}`
    (manuscript Prop 3.14 `prop:compatiblemarking` for `Γ = G_{ℚ₂}`; plan Turn 4 §6),
    the `G_{ℚ₂}`-side instance of the uniform Stage-C boundary datum.
    
    * `tameMap`/`tame_surj`/`tame_nu` — the local tame quotient `G_{ℚ₂} ↠ T_A` with
      unramified marking `ν_loc`, from the axiom `gq2_tame_quotient` (Prop 3.2 + the
      local half of Prop `compatiblemarking`);
    * `pro2Map`/`pro2_surj`/`pro2_nu` — the local maximal pro-`2` quotient
      `G_{ℚ₂} ↠ Π` with the *same* unramified marking `ν_loc`, proved from the fully
      marked Labute comparison `labute_GQ2_maxPro2_marked` (`pro2Map_loc`,
      `pro2Map_loc_surjective`, `pro2Map_loc_nu`);
    * `nu := ν_loc` — the common unramified character through which both factor. 
            (Q2Presentation.Induction.XRZero.xrChildQ2Presentation.Induction.XRZero.xrChild {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPairThe `𝒳_R = 0` child: the quotient framed pair at `N = Φ`-layer.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.
     gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GQ2
      (Q2Presentation.TorsorProgram.quotientFramedTarget (Q2Presentation.Induction.XRZero.xrChild chief K).fst
        (Q2Presentation.Induction.mChildKernel chief K).N ⋯ ⋯)
      (Q2Presentation.TorsorProgram.quotientFrame (Q2Presentation.Induction.XRZero.xrChild chief K).fst
        (Q2Presentation.Induction.mChildKernel chief K).N ⋯ ⋯ (Q2Presentation.Induction.XRZero.xrChild chief K).snd) f₀Q2Presentation.TorsorProgram.liftHom (Q2Presentation.Induction.XRZero.xrChild chief K).fst
      (Q2Presentation.Induction.mChildKernel chief K).N ⋯ ⋯ Q2Presentation.boundaryPackage_GQ2
      (Q2Presentation.Induction.XRZero.xrChild chief K).snd g) =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`.
        2 ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. (HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.2 *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. Q2Presentation.Induction.dimMQ2Presentation.Induction.dimM {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : ℕ`dim M` (the `2^{2·dimM}` of `lem:elementarystage`).  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
    theorem Q2Presentation.Induction.mChild_Z1_card_gq2
      {pQ2Presentation.Induction.FramedPair :
        Q2Presentation.Induction.FramedPairQ2Presentation.Induction.FramedPair : Type 1A **framed pair** `(𝒴, F)`: a boundary-framed marked target together with a
    boundary frame for it (manuscript Definition 4.1 + `eq:beta`).  This is the index of
    Theorem 4.2: the boundary-framed surjection count `e_Γ^β` is a function of the pair.
    The induction of `sec:induction` ranges over *all* such pairs simultaneously
    ("the induction is stated globally", l.1213), ordered by `|L_Y|`. }
      (chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p :
        Q2Presentation.Induction.FirstNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor (p : Q2Presentation.Induction.FramedPair) : TypeA non-scalar chief factor of `L_Y` that is **first**: every chief factor strictly
    below it (i.e. with upper term contained in `lower`) is scalar.  This is the manuscript's
    choice `S ◁ P` at l.3616–3623 ("all chief factors below `S` are scalar and `V` is the
    first non-scalar simple factor"), which `lem:collapse` requires for the coprime step
    `[S, Ñ] = 1`. 
          pQ2Presentation.Induction.FramedPair)
      (KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor :
        Q2Presentation.Induction.KernelMinimalQ2Presentation.Induction.KernelMinimal {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.NonScalarChiefFactor p) : TypeThe manuscript's kernel choice (l.3623): `K ◁ Y`, `K ≤ P`, `KS = P`, and `K` is
    **⊆-minimal** with these properties — stated as: any `Y`-normal `K' ≤ K` still joining
    with `S` to `P` equals `K`.  (This, not leastness among all candidates, is what
    `lem:simplehead` and `lem:collapse` use: both apply it to subgroups of `K`.) 
          chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p.toNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor.toNonScalarChiefFactor {p : Q2Presentation.Induction.FramedPair}
      (self : Q2Presentation.Induction.FirstNonScalarChiefFactor p) : Q2Presentation.Induction.NonScalarChiefFactor p)
      (gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GQ2
      (Q2Presentation.TorsorProgram.quotientFramedTarget (Q2Presentation.Induction.XRZero.xrChild chief K).fst
        (Q2Presentation.Induction.mChildKernel chief K).N ⋯ ⋯)
      (Q2Presentation.TorsorProgram.quotientFrame (Q2Presentation.Induction.XRZero.xrChild chief K).fst
        (Q2Presentation.Induction.mChildKernel chief K).N ⋯ ⋯ (Q2Presentation.Induction.XRZero.xrChild chief K).snd) :
        Q2Presentation.boundaryFramedSurjQ2Presentation.boundaryFramedSurj {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ)
      (Yt : Q2Presentation.BoundaryFramedTarget) (F : Q2Presentation.BoundaryFrame Yt) : TypeThe **boundary-framed surjections** `e_Γ^β(𝒴)` (manuscript `eq:eGamma`): the
    continuous surjections `f : Γ ↠ Y` whose induced map to `H × E` is the prescribed
    `β ∘ b_Γ`, i.e. `q_Y ∘ f = β ∘ b_Γ`.  This is the subtype counted in Theorem 4.2;
    its cardinality is `e_Γ^β(𝒴)`. 
          Q2Presentation.boundaryPackage_GQ2Q2Presentation.boundaryPackage_GQ2 : Q2Presentation.BoundaryPackage Q2Presentation.GQ2Profinite**The local boundary package** `boundaryPackage_GQ2 : BoundaryPackage G_{ℚ₂}`
    (manuscript Prop 3.14 `prop:compatiblemarking` for `Γ = G_{ℚ₂}`; plan Turn 4 §6),
    the `G_{ℚ₂}`-side instance of the uniform Stage-C boundary datum.
    
    * `tameMap`/`tame_surj`/`tame_nu` — the local tame quotient `G_{ℚ₂} ↠ T_A` with
      unramified marking `ν_loc`, from the axiom `gq2_tame_quotient` (Prop 3.2 + the
      local half of Prop `compatiblemarking`);
    * `pro2Map`/`pro2_surj`/`pro2_nu` — the local maximal pro-`2` quotient
      `G_{ℚ₂} ↠ Π` with the *same* unramified marking `ν_loc`, proved from the fully
      marked Labute comparison `labute_GQ2_maxPro2_marked` (`pro2Map_loc`,
      `pro2Map_loc_surjective`, `pro2Map_loc_nu`);
    * `nu := ν_loc` — the common unramified character through which both factor. 
          (Q2Presentation.TorsorProgram.quotientFramedTargetQ2Presentation.TorsorProgram.quotientFramedTarget (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y)
      [hNn : N.Normal] (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) : Q2Presentation.BoundaryFramedTarget**The quotient framed target** `Y/N` (same `H`, same `E`, image wild kernel). 
            (Q2Presentation.Induction.XRZero.xrChildQ2Presentation.Induction.XRZero.xrChild {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPairThe `𝒳_R = 0` child: the quotient framed pair at `N = Φ`-layer. 
                chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.
    
            (Q2Presentation.Induction.mChildKernelQ2Presentation.Induction.mChildKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel (Q2Presentation.Induction.XRZero.xrChild chief K).fst**The elementary `M`-kernel at the child** `B = Y/Φ(K)`
    (`lem:simplehead` carrier for `lem:elementarystage`): `N = M' = K/Φ(K)`. 
                chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).NQ2Presentation.Lifting.ElementaryKernel.N {Yt : Q2Presentation.BoundaryFramedTarget}
      (self : Q2Presentation.Lifting.ElementaryKernel Yt) : Subgroup Yt.Y
             )
          (Q2Presentation.TorsorProgram.quotientFrameQ2Presentation.TorsorProgram.quotientFrame (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y)
      [hNn : N.Normal] (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) (F : Q2Presentation.BoundaryFrame Yt) :
      Q2Presentation.BoundaryFrame (Q2Presentation.TorsorProgram.quotientFramedTarget Yt N hNLY hNθ)The frame transports verbatim (`H`, `E`, `α`, `ψ`, `β` unchanged). 
            (Q2Presentation.Induction.XRZero.xrChildQ2Presentation.Induction.XRZero.xrChild {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPairThe `𝒳_R = 0` child: the quotient framed pair at `N = Φ`-layer. 
                chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.
    
            (Q2Presentation.Induction.mChildKernelQ2Presentation.Induction.mChildKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel (Q2Presentation.Induction.XRZero.xrChild chief K).fst**The elementary `M`-kernel at the child** `B = Y/Φ(K)`
    (`lem:simplehead` carrier for `lem:elementarystage`): `N = M' = K/Φ(K)`. 
                chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).NQ2Presentation.Lifting.ElementaryKernel.N {Yt : Q2Presentation.BoundaryFramedTarget}
      (self : Q2Presentation.Lifting.ElementaryKernel Yt) : Subgroup Yt.Y
             
            (Q2Presentation.Induction.XRZero.xrChildQ2Presentation.Induction.XRZero.xrChild {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPairThe `𝒳_R = 0` child: the quotient framed pair at `N = Φ`-layer. 
                chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.
    ))
      (f₀Q2Presentation.TorsorProgram.liftHom (Q2Presentation.Induction.XRZero.xrChild chief K).fst
      (Q2Presentation.Induction.mChildKernel chief K).N ⋯ ⋯ Q2Presentation.boundaryPackage_GQ2
      (Q2Presentation.Induction.XRZero.xrChild chief K).snd g :
        Q2Presentation.TorsorProgram.liftHomQ2Presentation.TorsorProgram.liftHom (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y) [hNn : N.Normal]
      (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ)
      (F : Q2Presentation.BoundaryFrame Yt)
      (g :
        Q2Presentation.boundaryFramedSurj B (Q2Presentation.TorsorProgram.quotientFramedTarget Yt N hNLY hNθ)
          (Q2Presentation.TorsorProgram.quotientFrame Yt N hNLY hNθ F)) :
      Type**All framed lifts** of a child-framed surjection (surjectivity NOT imposed;
    the Frattini argument recovers it per use-site). 
          (Q2Presentation.Induction.XRZero.xrChildQ2Presentation.Induction.XRZero.xrChild {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPairThe `𝒳_R = 0` child: the quotient framed pair at `N = Φ`-layer. 
              chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.
    
          (Q2Presentation.Induction.mChildKernelQ2Presentation.Induction.mChildKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel (Q2Presentation.Induction.XRZero.xrChild chief K).fst**The elementary `M`-kernel at the child** `B = Y/Φ(K)`
    (`lem:simplehead` carrier for `lem:elementarystage`): `N = M' = K/Φ(K)`. 
              chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).NQ2Presentation.Lifting.ElementaryKernel.N {Yt : Q2Presentation.BoundaryFramedTarget}
      (self : Q2Presentation.Lifting.ElementaryKernel Yt) : Subgroup Yt.Y
           
          Q2Presentation.boundaryPackage_GQ2Q2Presentation.boundaryPackage_GQ2 : Q2Presentation.BoundaryPackage Q2Presentation.GQ2Profinite**The local boundary package** `boundaryPackage_GQ2 : BoundaryPackage G_{ℚ₂}`
    (manuscript Prop 3.14 `prop:compatiblemarking` for `Γ = G_{ℚ₂}`; plan Turn 4 §6),
    the `G_{ℚ₂}`-side instance of the uniform Stage-C boundary datum.
    
    * `tameMap`/`tame_surj`/`tame_nu` — the local tame quotient `G_{ℚ₂} ↠ T_A` with
      unramified marking `ν_loc`, from the axiom `gq2_tame_quotient` (Prop 3.2 + the
      local half of Prop `compatiblemarking`);
    * `pro2Map`/`pro2_surj`/`pro2_nu` — the local maximal pro-`2` quotient
      `G_{ℚ₂} ↠ Π` with the *same* unramified marking `ν_loc`, proved from the fully
      marked Labute comparison `labute_GQ2_maxPro2_marked` (`pro2Map_loc`,
      `pro2Map_loc_surjective`, `pro2Map_loc_nu`);
    * `nu := ν_loc` — the common unramified character through which both factor. 
          (Q2Presentation.Induction.XRZero.xrChildQ2Presentation.Induction.XRZero.xrChild {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPairThe `𝒳_R = 0` child: the quotient framed pair at `N = Φ`-layer. 
              chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.
    
          gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GQ2
      (Q2Presentation.TorsorProgram.quotientFramedTarget (Q2Presentation.Induction.XRZero.xrChild chief K).fst
        (Q2Presentation.Induction.mChildKernel chief K).N ⋯ ⋯)
      (Q2Presentation.TorsorProgram.quotientFrame (Q2Presentation.Induction.XRZero.xrChild chief K).fst
        (Q2Presentation.Induction.mChildKernel chief K).N ⋯ ⋯ (Q2Presentation.Induction.XRZero.xrChild chief K).snd)) :
      Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number.
    If `α` is infinite, `Nat.card α = 0`. 
          (Q2Presentation.TorsorProgram.Z1Q2Presentation.TorsorProgram.Z1 (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y) [hNn : N.Normal]
      (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ)
      (F : Q2Presentation.BoundaryFrame Yt)
      (g :
        Q2Presentation.boundaryFramedSurj B (Q2Presentation.TorsorProgram.quotientFramedTarget Yt N hNLY hNθ)
          (Q2Presentation.TorsorProgram.quotientFrame Yt N hNLY hNθ F))
      (f₀ : Q2Presentation.TorsorProgram.liftHom Yt N hNLY hNθ B F g) : Type**The twisted cocycle set** relative to a base lift. 
            (Q2Presentation.Induction.XRZero.xrChildQ2Presentation.Induction.XRZero.xrChild {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPairThe `𝒳_R = 0` child: the quotient framed pair at `N = Φ`-layer. 
                chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.
    
            (Q2Presentation.Induction.mChildKernelQ2Presentation.Induction.mChildKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel (Q2Presentation.Induction.XRZero.xrChild chief K).fst**The elementary `M`-kernel at the child** `B = Y/Φ(K)`
    (`lem:simplehead` carrier for `lem:elementarystage`): `N = M' = K/Φ(K)`. 
                chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).NQ2Presentation.Lifting.ElementaryKernel.N {Yt : Q2Presentation.BoundaryFramedTarget}
      (self : Q2Presentation.Lifting.ElementaryKernel Yt) : Subgroup Yt.Y
             
            Q2Presentation.boundaryPackage_GQ2Q2Presentation.boundaryPackage_GQ2 : Q2Presentation.BoundaryPackage Q2Presentation.GQ2Profinite**The local boundary package** `boundaryPackage_GQ2 : BoundaryPackage G_{ℚ₂}`
    (manuscript Prop 3.14 `prop:compatiblemarking` for `Γ = G_{ℚ₂}`; plan Turn 4 §6),
    the `G_{ℚ₂}`-side instance of the uniform Stage-C boundary datum.
    
    * `tameMap`/`tame_surj`/`tame_nu` — the local tame quotient `G_{ℚ₂} ↠ T_A` with
      unramified marking `ν_loc`, from the axiom `gq2_tame_quotient` (Prop 3.2 + the
      local half of Prop `compatiblemarking`);
    * `pro2Map`/`pro2_surj`/`pro2_nu` — the local maximal pro-`2` quotient
      `G_{ℚ₂} ↠ Π` with the *same* unramified marking `ν_loc`, proved from the fully
      marked Labute comparison `labute_GQ2_maxPro2_marked` (`pro2Map_loc`,
      `pro2Map_loc_surjective`, `pro2Map_loc_nu`);
    * `nu := ν_loc` — the common unramified character through which both factor. 
            (Q2Presentation.Induction.XRZero.xrChildQ2Presentation.Induction.XRZero.xrChild {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPairThe `𝒳_R = 0` child: the quotient framed pair at `N = Φ`-layer. 
                chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.
    
            gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GQ2
      (Q2Presentation.TorsorProgram.quotientFramedTarget (Q2Presentation.Induction.XRZero.xrChild chief K).fst
        (Q2Presentation.Induction.mChildKernel chief K).N ⋯ ⋯)
      (Q2Presentation.TorsorProgram.quotientFrame (Q2Presentation.Induction.XRZero.xrChild chief K).fst
        (Q2Presentation.Induction.mChildKernel chief K).N ⋯ ⋯ (Q2Presentation.Induction.XRZero.xrChild chief K).snd) f₀Q2Presentation.TorsorProgram.liftHom (Q2Presentation.Induction.XRZero.xrChild chief K).fst
      (Q2Presentation.Induction.mChildKernel chief K).N ⋯ ⋯ Q2Presentation.boundaryPackage_GQ2
      (Q2Presentation.Induction.XRZero.xrChild chief K).snd g) =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`.
        2 ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`.
          (HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.2 *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
            Q2Presentation.Induction.dimMQ2Presentation.Induction.dimM {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : ℕ`dim M` (the `2^{2·dimM}` of `lem:elementarystage`). 
              chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
    **Local `lem:elementarystage`, count clause** (THEOREM): the framed
    twisted-cocycle count at the child M-kernel is `2^{2·dim M}`. 
  • theoremdefined in Q2Presentation/Induction/Section7FrattiniTrivialElementary.lean
    complete
    theorem Q2Presentation.Induction.sec7_frattiniTrivial_elementaryMStageNormalizedCountData
      {pQ2Presentation.Induction.FramedPair : Q2Presentation.Induction.FramedPairQ2Presentation.Induction.FramedPair : Type 1A **framed pair** `(𝒴, F)`: a boundary-framed marked target together with a
    boundary frame for it (manuscript Definition 4.1 + `eq:beta`).  This is the index of
    Theorem 4.2: the boundary-framed surjection count `e_Γ^β` is a function of the pair.
    The induction of `sec:induction` ranges over *all* such pairs simultaneously
    ("the induction is stated globally", l.1213), ordered by `|L_Y|`. }
      (h¬Q2Presentation.Induction.ScalarTerminal p : ¬Not (a : Prop) : Prop`Not p`, or `¬p`, is the negation of `p`. It is defined to be `p → False`,
    so if your goal is `¬p` you can use `intro h` to turn the goal into
    `h : p ⊢ False`, and if you have `hn : ¬p` and `h : p` then `hn h : False`
    and `(hn h).elim` will prove anything.
    For more information: [Propositional Logic](https://lean-lang.org/theorem_proving_in_lean4/propositions_and_proofs.html#propositional-logic)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `¬` in identifiers is `not`.Q2Presentation.Induction.ScalarTerminalQ2Presentation.Induction.ScalarTerminal (p : Q2Presentation.Induction.FramedPair) : Prop**Scalar-terminal framed pair.**  pQ2Presentation.Induction.FramedPair)
      (chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p : Q2Presentation.Induction.FirstNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor (p : Q2Presentation.Induction.FramedPair) : TypeA non-scalar chief factor of `L_Y` that is **first**: every chief factor strictly
    below it (i.e. with upper term contained in `lower`) is scalar.  This is the manuscript's
    choice `S ◁ P` at l.3616–3623 ("all chief factors below `S` are scalar and `V` is the
    first non-scalar simple factor"), which `lem:collapse` requires for the coprime step
    `[S, Ñ] = 1`.  pQ2Presentation.Induction.FramedPair)
      (KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor :
        Q2Presentation.Induction.KernelMinimalQ2Presentation.Induction.KernelMinimal {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.NonScalarChiefFactor p) : TypeThe manuscript's kernel choice (l.3623): `K ◁ Y`, `K ≤ P`, `KS = P`, and `K` is
    **⊆-minimal** with these properties — stated as: any `Y`-normal `K' ≤ K` still joining
    with `S` to `P` equals `K`.  (This, not leastness among all candidates, is what
    `lem:simplehead` and `lem:collapse` use: both apply it to subgroups of `K`.)  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p.toNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor.toNonScalarChiefFactor {p : Q2Presentation.Induction.FramedPair}
      (self : Q2Presentation.Induction.FirstNonScalarChiefFactor p) : Q2Presentation.Induction.NonScalarChiefFactor p)
      (hRNat.card ↥(Q2Presentation.Induction.kernelFrattini K) = 1 : Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number.
    If `α` is infinite, `Nat.card α = 0`.  (Q2Presentation.Induction.kernelFrattiniQ2Presentation.Induction.kernelFrattini {p : Q2Presentation.Induction.FramedPair}
      {chief : Q2Presentation.Induction.NonScalarChiefFactor p} (K : Q2Presentation.Induction.KernelMinimal chief) :
      Subgroup p.fst.YThe literal Frattini subgroup `R = Φ(K)` of the kernel, as a subgroup of `Y`
    (the manuscript's `R`, l.3626).  KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`. 1)
      (childQ2Presentation.Induction.Sec7FrattiniTrivialElementaryChildData p :
        Q2Presentation.Induction.Sec7FrattiniTrivialElementaryChildDataQ2Presentation.Induction.Sec7FrattiniTrivialElementaryChildData (p : Q2Presentation.Induction.FramedPair) : Type 1The exact-image child packet for the `R = 1` elementary stage.  This isolates the
    manuscript's child geometry (`C = Y/K` and the proper exact-image subtraction children)
    from the source-specific elementary lift counts.
     pQ2Presentation.Induction.FramedPair)
      (srcQ2Presentation.Induction.Sec7FrattiniTrivialElementaryMStageSourceIndexData child
      (Q2Presentation.Induction.sec7MStageCanonicalMultiplicityData K child) :
        Q2Presentation.Induction.Sec7FrattiniTrivialElementaryMStageSourceIndexDataQ2Presentation.Induction.Sec7FrattiniTrivialElementaryMStageSourceIndexData {p : Q2Presentation.Induction.FramedPair}
      (D : Q2Presentation.Induction.Sec7FrattiniTrivialElementaryChildData p)
      (mult : Q2Presentation.Induction.Sec7FrattiniTrivialElementaryMStageMultiplicityData D) : Type 1The source-specific elementary lift indices, after the multiplicity has been fixed.
    
    This records only the realization of the candidate and local exact-image counts as the
    cardinalities of their elementary lift-index sets.  It contains no subtraction formula.
    
          childQ2Presentation.Induction.Sec7FrattiniTrivialElementaryChildData p
          (Q2Presentation.Induction.sec7MStageCanonicalMultiplicityDataQ2Presentation.Induction.sec7MStageCanonicalMultiplicityData {p : Q2Presentation.Induction.FramedPair}
      {chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p}
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (child : Q2Presentation.Induction.Sec7FrattiniTrivialElementaryChildData p) :
      Q2Presentation.Induction.Sec7FrattiniTrivialElementaryMStageMultiplicityData childThe canonical elementary `M`-stage multiplicity datum: `dimM` is literally the
    concrete module dimension `sec7MStageDim K`, and the lift multiplicity is literally
    `2 ^ (2 * sec7MStageDim K)`.  Using this definitional packet (instead of an opaque
    `Nonempty`-obtained one) lets the downstream count theorems discharge the dimension
    side condition `mult.dimM = sec7MStageDim K` by `rfl`.  KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor
            childQ2Presentation.Induction.Sec7FrattiniTrivialElementaryChildData p))
      (cardAQ2Presentation.Induction.Sec7FrattiniTrivialElementaryMStageCandidateExactImagePartitionCanonicalFinSigmaPartitionCardData
      child (Q2Presentation.Induction.sec7MStageCanonicalMultiplicityData K child) src :
        Q2Presentation.Induction.Sec7FrattiniTrivialElementaryMStageCandidateExactImagePartitionCanonicalFinSigmaPartitionCardDataQ2Presentation.Induction.Sec7FrattiniTrivialElementaryMStageCandidateExactImagePartitionCanonicalFinSigmaPartitionCardData
      {p : Q2Presentation.Induction.FramedPair} (D : Q2Presentation.Induction.Sec7FrattiniTrivialElementaryChildData p)
      (mult : Q2Presentation.Induction.Sec7FrattiniTrivialElementaryMStageMultiplicityData D)
      (src : Q2Presentation.Induction.Sec7FrattiniTrivialElementaryMStageSourceIndexData D mult) : PropCardinality form of the canonical candidate exact-image partition.
    
    This is strictly weaker than choosing the partition equivalence: it records only that the
    finite disjoint-union index and the canonical constant sigma-fibre index have the same
    cardinality.  The equivalence is recovered theorem-level below using finite-cardinality
    choice, as in the existing exact-image lift-partition cardinality interface. 
          childQ2Presentation.Induction.Sec7FrattiniTrivialElementaryChildData p
          (Q2Presentation.Induction.sec7MStageCanonicalMultiplicityDataQ2Presentation.Induction.sec7MStageCanonicalMultiplicityData {p : Q2Presentation.Induction.FramedPair}
      {chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p}
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (child : Q2Presentation.Induction.Sec7FrattiniTrivialElementaryChildData p) :
      Q2Presentation.Induction.Sec7FrattiniTrivialElementaryMStageMultiplicityData childThe canonical elementary `M`-stage multiplicity datum: `dimM` is literally the
    concrete module dimension `sec7MStageDim K`, and the lift multiplicity is literally
    `2 ^ (2 * sec7MStageDim K)`.  Using this definitional packet (instead of an opaque
    `Nonempty`-obtained one) lets the downstream count theorems discharge the dimension
    side condition `mult.dimM = sec7MStageDim K` by `rfl`.  KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor
            childQ2Presentation.Induction.Sec7FrattiniTrivialElementaryChildData p)
          srcQ2Presentation.Induction.Sec7FrattiniTrivialElementaryMStageSourceIndexData child
      (Q2Presentation.Induction.sec7MStageCanonicalMultiplicityData K child))
      (cardQQ2Presentation.Induction.Sec7FrattiniTrivialElementaryMStageLocalExactImagePartitionCanonicalFinSigmaPartitionCardData
      child (Q2Presentation.Induction.sec7MStageCanonicalMultiplicityData K child) src :
        Q2Presentation.Induction.Sec7FrattiniTrivialElementaryMStageLocalExactImagePartitionCanonicalFinSigmaPartitionCardDataQ2Presentation.Induction.Sec7FrattiniTrivialElementaryMStageLocalExactImagePartitionCanonicalFinSigmaPartitionCardData
      {p : Q2Presentation.Induction.FramedPair} (D : Q2Presentation.Induction.Sec7FrattiniTrivialElementaryChildData p)
      (mult : Q2Presentation.Induction.Sec7FrattiniTrivialElementaryMStageMultiplicityData D)
      (src : Q2Presentation.Induction.Sec7FrattiniTrivialElementaryMStageSourceIndexData D mult) : PropSigma-fibre cardinality form of the local exact-image partition.
    
    The proper-image summand is the canonical finite set whose cardinality is the sum of the
    proper-child local counts; the lower-child summand is the actual local lower-child
    boundary-framed surjection set. 
          childQ2Presentation.Induction.Sec7FrattiniTrivialElementaryChildData p
          (Q2Presentation.Induction.sec7MStageCanonicalMultiplicityDataQ2Presentation.Induction.sec7MStageCanonicalMultiplicityData {p : Q2Presentation.Induction.FramedPair}
      {chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p}
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (child : Q2Presentation.Induction.Sec7FrattiniTrivialElementaryChildData p) :
      Q2Presentation.Induction.Sec7FrattiniTrivialElementaryMStageMultiplicityData childThe canonical elementary `M`-stage multiplicity datum: `dimM` is literally the
    concrete module dimension `sec7MStageDim K`, and the lift multiplicity is literally
    `2 ^ (2 * sec7MStageDim K)`.  Using this definitional packet (instead of an opaque
    `Nonempty`-obtained one) lets the downstream count theorems discharge the dimension
    side condition `mult.dimM = sec7MStageDim K` by `rfl`.  KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor
            childQ2Presentation.Induction.Sec7FrattiniTrivialElementaryChildData p)
          srcQ2Presentation.Induction.Sec7FrattiniTrivialElementaryMStageSourceIndexData child
      (Q2Presentation.Induction.sec7MStageCanonicalMultiplicityData K child)) :
      NonemptyNonempty.{u} (α : Sort u) : Prop`Nonempty α` is a typeclass that says that `α` is not an empty type,
    that is, there exists an element in the type. It differs from `Inhabited α`
    in that `Nonempty α` is a `Prop`, which means that it does not actually carry
    an element of `α`, only a proof that *there exists* such an element.
    Given `Nonempty α`, you can construct an element of `α` *nonconstructively*
    using `Classical.choice`.
    
        (Q2Presentation.Induction.Sec7FrattiniTrivialElementaryMStageNormalizedCountDataQ2Presentation.Induction.Sec7FrattiniTrivialElementaryMStageNormalizedCountData
      {p : Q2Presentation.Induction.FramedPair} (D : Q2Presentation.Induction.Sec7FrattiniTrivialElementaryChildData p) :
      Type 1A manuscript-shaped normalized source-count packet for the `R = 1` elementary stage.
    
    Compared with `Sec7FrattiniTrivialElementaryNormalizedCountData`, this stores the actual
    `eq:Mstage` functional: the common lift multiplicity is `2^(2 dim M)`, and the candidate
    and local lift-index cardinalities are obtained from the lower child and the proper-image
    subtraction children by the same formula.
    
          childQ2Presentation.Induction.Sec7FrattiniTrivialElementaryChildData p)
    theorem Q2Presentation.Induction.sec7_frattiniTrivial_elementaryMStageNormalizedCountData
      {pQ2Presentation.Induction.FramedPair :
        Q2Presentation.Induction.FramedPairQ2Presentation.Induction.FramedPair : Type 1A **framed pair** `(𝒴, F)`: a boundary-framed marked target together with a
    boundary frame for it (manuscript Definition 4.1 + `eq:beta`).  This is the index of
    Theorem 4.2: the boundary-framed surjection count `e_Γ^β` is a function of the pair.
    The induction of `sec:induction` ranges over *all* such pairs simultaneously
    ("the induction is stated globally", l.1213), ordered by `|L_Y|`. }
      (h¬Q2Presentation.Induction.ScalarTerminal p :
        ¬Not (a : Prop) : Prop`Not p`, or `¬p`, is the negation of `p`. It is defined to be `p → False`,
    so if your goal is `¬p` you can use `intro h` to turn the goal into
    `h : p ⊢ False`, and if you have `hn : ¬p` and `h : p` then `hn h : False`
    and `(hn h).elim` will prove anything.
    For more information: [Propositional Logic](https://lean-lang.org/theorem_proving_in_lean4/propositions_and_proofs.html#propositional-logic)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `¬` in identifiers is `not`.Q2Presentation.Induction.ScalarTerminalQ2Presentation.Induction.ScalarTerminal (p : Q2Presentation.Induction.FramedPair) : Prop**Scalar-terminal framed pair.** 
            pQ2Presentation.Induction.FramedPair)
      (chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p :
        Q2Presentation.Induction.FirstNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor (p : Q2Presentation.Induction.FramedPair) : TypeA non-scalar chief factor of `L_Y` that is **first**: every chief factor strictly
    below it (i.e. with upper term contained in `lower`) is scalar.  This is the manuscript's
    choice `S ◁ P` at l.3616–3623 ("all chief factors below `S` are scalar and `V` is the
    first non-scalar simple factor"), which `lem:collapse` requires for the coprime step
    `[S, Ñ] = 1`. 
          pQ2Presentation.Induction.FramedPair)
      (KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor :
        Q2Presentation.Induction.KernelMinimalQ2Presentation.Induction.KernelMinimal {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.NonScalarChiefFactor p) : TypeThe manuscript's kernel choice (l.3623): `K ◁ Y`, `K ≤ P`, `KS = P`, and `K` is
    **⊆-minimal** with these properties — stated as: any `Y`-normal `K' ≤ K` still joining
    with `S` to `P` equals `K`.  (This, not leastness among all candidates, is what
    `lem:simplehead` and `lem:collapse` use: both apply it to subgroups of `K`.) 
          chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p.toNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor.toNonScalarChiefFactor {p : Q2Presentation.Induction.FramedPair}
      (self : Q2Presentation.Induction.FirstNonScalarChiefFactor p) : Q2Presentation.Induction.NonScalarChiefFactor p)
      (hRNat.card ↥(Q2Presentation.Induction.kernelFrattini K) = 1 :
        Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number.
    If `α` is infinite, `Nat.card α = 0`. 
            (Q2Presentation.Induction.kernelFrattiniQ2Presentation.Induction.kernelFrattini {p : Q2Presentation.Induction.FramedPair}
      {chief : Q2Presentation.Induction.NonScalarChiefFactor p} (K : Q2Presentation.Induction.KernelMinimal chief) :
      Subgroup p.fst.YThe literal Frattini subgroup `R = Φ(K)` of the kernel, as a subgroup of `Y`
    (the manuscript's `R`, l.3626). 
                KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`.
          1)
      (childQ2Presentation.Induction.Sec7FrattiniTrivialElementaryChildData p :
        Q2Presentation.Induction.Sec7FrattiniTrivialElementaryChildDataQ2Presentation.Induction.Sec7FrattiniTrivialElementaryChildData (p : Q2Presentation.Induction.FramedPair) : Type 1The exact-image child packet for the `R = 1` elementary stage.  This isolates the
    manuscript's child geometry (`C = Y/K` and the proper exact-image subtraction children)
    from the source-specific elementary lift counts.
    
          pQ2Presentation.Induction.FramedPair)
      (srcQ2Presentation.Induction.Sec7FrattiniTrivialElementaryMStageSourceIndexData child
      (Q2Presentation.Induction.sec7MStageCanonicalMultiplicityData K child) :
        Q2Presentation.Induction.Sec7FrattiniTrivialElementaryMStageSourceIndexDataQ2Presentation.Induction.Sec7FrattiniTrivialElementaryMStageSourceIndexData {p : Q2Presentation.Induction.FramedPair}
      (D : Q2Presentation.Induction.Sec7FrattiniTrivialElementaryChildData p)
      (mult : Q2Presentation.Induction.Sec7FrattiniTrivialElementaryMStageMultiplicityData D) : Type 1The source-specific elementary lift indices, after the multiplicity has been fixed.
    
    This records only the realization of the candidate and local exact-image counts as the
    cardinalities of their elementary lift-index sets.  It contains no subtraction formula.
    
          childQ2Presentation.Induction.Sec7FrattiniTrivialElementaryChildData p
          (Q2Presentation.Induction.sec7MStageCanonicalMultiplicityDataQ2Presentation.Induction.sec7MStageCanonicalMultiplicityData {p : Q2Presentation.Induction.FramedPair}
      {chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p}
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (child : Q2Presentation.Induction.Sec7FrattiniTrivialElementaryChildData p) :
      Q2Presentation.Induction.Sec7FrattiniTrivialElementaryMStageMultiplicityData childThe canonical elementary `M`-stage multiplicity datum: `dimM` is literally the
    concrete module dimension `sec7MStageDim K`, and the lift multiplicity is literally
    `2 ^ (2 * sec7MStageDim K)`.  Using this definitional packet (instead of an opaque
    `Nonempty`-obtained one) lets the downstream count theorems discharge the dimension
    side condition `mult.dimM = sec7MStageDim K` by `rfl`. 
            KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor childQ2Presentation.Induction.Sec7FrattiniTrivialElementaryChildData p))
      (cardAQ2Presentation.Induction.Sec7FrattiniTrivialElementaryMStageCandidateExactImagePartitionCanonicalFinSigmaPartitionCardData
      child (Q2Presentation.Induction.sec7MStageCanonicalMultiplicityData K child) src :
        Q2Presentation.Induction.Sec7FrattiniTrivialElementaryMStageCandidateExactImagePartitionCanonicalFinSigmaPartitionCardDataQ2Presentation.Induction.Sec7FrattiniTrivialElementaryMStageCandidateExactImagePartitionCanonicalFinSigmaPartitionCardData
      {p : Q2Presentation.Induction.FramedPair} (D : Q2Presentation.Induction.Sec7FrattiniTrivialElementaryChildData p)
      (mult : Q2Presentation.Induction.Sec7FrattiniTrivialElementaryMStageMultiplicityData D)
      (src : Q2Presentation.Induction.Sec7FrattiniTrivialElementaryMStageSourceIndexData D mult) : PropCardinality form of the canonical candidate exact-image partition.
    
    This is strictly weaker than choosing the partition equivalence: it records only that the
    finite disjoint-union index and the canonical constant sigma-fibre index have the same
    cardinality.  The equivalence is recovered theorem-level below using finite-cardinality
    choice, as in the existing exact-image lift-partition cardinality interface. 
          childQ2Presentation.Induction.Sec7FrattiniTrivialElementaryChildData p
          (Q2Presentation.Induction.sec7MStageCanonicalMultiplicityDataQ2Presentation.Induction.sec7MStageCanonicalMultiplicityData {p : Q2Presentation.Induction.FramedPair}
      {chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p}
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (child : Q2Presentation.Induction.Sec7FrattiniTrivialElementaryChildData p) :
      Q2Presentation.Induction.Sec7FrattiniTrivialElementaryMStageMultiplicityData childThe canonical elementary `M`-stage multiplicity datum: `dimM` is literally the
    concrete module dimension `sec7MStageDim K`, and the lift multiplicity is literally
    `2 ^ (2 * sec7MStageDim K)`.  Using this definitional packet (instead of an opaque
    `Nonempty`-obtained one) lets the downstream count theorems discharge the dimension
    side condition `mult.dimM = sec7MStageDim K` by `rfl`. 
            KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor childQ2Presentation.Induction.Sec7FrattiniTrivialElementaryChildData p)
          srcQ2Presentation.Induction.Sec7FrattiniTrivialElementaryMStageSourceIndexData child
      (Q2Presentation.Induction.sec7MStageCanonicalMultiplicityData K child))
      (cardQQ2Presentation.Induction.Sec7FrattiniTrivialElementaryMStageLocalExactImagePartitionCanonicalFinSigmaPartitionCardData
      child (Q2Presentation.Induction.sec7MStageCanonicalMultiplicityData K child) src :
        Q2Presentation.Induction.Sec7FrattiniTrivialElementaryMStageLocalExactImagePartitionCanonicalFinSigmaPartitionCardDataQ2Presentation.Induction.Sec7FrattiniTrivialElementaryMStageLocalExactImagePartitionCanonicalFinSigmaPartitionCardData
      {p : Q2Presentation.Induction.FramedPair} (D : Q2Presentation.Induction.Sec7FrattiniTrivialElementaryChildData p)
      (mult : Q2Presentation.Induction.Sec7FrattiniTrivialElementaryMStageMultiplicityData D)
      (src : Q2Presentation.Induction.Sec7FrattiniTrivialElementaryMStageSourceIndexData D mult) : PropSigma-fibre cardinality form of the local exact-image partition.
    
    The proper-image summand is the canonical finite set whose cardinality is the sum of the
    proper-child local counts; the lower-child summand is the actual local lower-child
    boundary-framed surjection set. 
          childQ2Presentation.Induction.Sec7FrattiniTrivialElementaryChildData p
          (Q2Presentation.Induction.sec7MStageCanonicalMultiplicityDataQ2Presentation.Induction.sec7MStageCanonicalMultiplicityData {p : Q2Presentation.Induction.FramedPair}
      {chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p}
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (child : Q2Presentation.Induction.Sec7FrattiniTrivialElementaryChildData p) :
      Q2Presentation.Induction.Sec7FrattiniTrivialElementaryMStageMultiplicityData childThe canonical elementary `M`-stage multiplicity datum: `dimM` is literally the
    concrete module dimension `sec7MStageDim K`, and the lift multiplicity is literally
    `2 ^ (2 * sec7MStageDim K)`.  Using this definitional packet (instead of an opaque
    `Nonempty`-obtained one) lets the downstream count theorems discharge the dimension
    side condition `mult.dimM = sec7MStageDim K` by `rfl`. 
            KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor childQ2Presentation.Induction.Sec7FrattiniTrivialElementaryChildData p)
          srcQ2Presentation.Induction.Sec7FrattiniTrivialElementaryMStageSourceIndexData child
      (Q2Presentation.Induction.sec7MStageCanonicalMultiplicityData K child)) :
      NonemptyNonempty.{u} (α : Sort u) : Prop`Nonempty α` is a typeclass that says that `α` is not an empty type,
    that is, there exists an element in the type. It differs from `Inhabited α`
    in that `Nonempty α` is a `Prop`, which means that it does not actually carry
    an element of `α`, only a proof that *there exists* such an element.
    Given `Nonempty α`, you can construct an element of `α` *nonconstructively*
    using `Classical.choice`.
    
        (Q2Presentation.Induction.Sec7FrattiniTrivialElementaryMStageNormalizedCountDataQ2Presentation.Induction.Sec7FrattiniTrivialElementaryMStageNormalizedCountData
      {p : Q2Presentation.Induction.FramedPair} (D : Q2Presentation.Induction.Sec7FrattiniTrivialElementaryChildData p) :
      Type 1A manuscript-shaped normalized source-count packet for the `R = 1` elementary stage.
    
    Compared with `Sec7FrattiniTrivialElementaryNormalizedCountData`, this stores the actual
    `eq:Mstage` functional: the common lift multiplicity is `2^(2 dim M)`, and the candidate
    and local lift-index cardinalities are obtained from the lower child and the proper-image
    subtraction children by the same formula.
    
          childQ2Presentation.Induction.Sec7FrattiniTrivialElementaryChildData p)
    **Former M-stage normalized-count residual, now theorem-level.**  The public packet is
    assembled from the three manuscript mechanisms in `lem:elementarystage` / `eq:Mstage`:
    common lift multiplicity, source lift-index realization, and exact-image subtraction.
    
  • defdefined in Q2Presentation/Induction/ZeroEdgePointwise.lean
    complete
    def Q2Presentation.Induction.EdgeDelSurj
      {pQ2Presentation.Induction.FramedPair : Q2Presentation.Induction.FramedPairQ2Presentation.Induction.FramedPair : Type 1A **framed pair** `(𝒴, F)`: a boundary-framed marked target together with a
    boundary frame for it (manuscript Definition 4.1 + `eq:beta`).  This is the index of
    Theorem 4.2: the boundary-framed surjection count `e_Γ^β` is a function of the pair.
    The induction of `sec:induction` ranges over *all* such pairs simultaneously
    ("the induction is stated globally", l.1213), ordered by `|L_Y|`. }
      (chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p : Q2Presentation.Induction.FirstNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor (p : Q2Presentation.Induction.FramedPair) : TypeA non-scalar chief factor of `L_Y` that is **first**: every chief factor strictly
    below it (i.e. with upper term contained in `lower`) is scalar.  This is the manuscript's
    choice `S ◁ P` at l.3616–3623 ("all chief factors below `S` are scalar and `V` is the
    first non-scalar simple factor"), which `lem:collapse` requires for the coprime step
    `[S, Ñ] = 1`.  pQ2Presentation.Induction.FramedPair)
      (KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor :
        Q2Presentation.Induction.KernelMinimalQ2Presentation.Induction.KernelMinimal {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.NonScalarChiefFactor p) : TypeThe manuscript's kernel choice (l.3623): `K ◁ Y`, `K ≤ P`, `KS = P`, and `K` is
    **⊆-minimal** with these properties — stated as: any `Y`-normal `K' ≤ K` still joining
    with `S` to `P` equals `K`.  (This, not leastness among all candidates, is what
    `lem:simplehead` and `lem:collapse` use: both apply it to subgroups of `K`.)  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p.toNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor.toNonScalarChiefFactor {p : Q2Presentation.Induction.FramedPair}
      (self : Q2Presentation.Induction.FirstNonScalarChiefFactor p) : Q2Presentation.Induction.NonScalarChiefFactor p)
      {ΓProfiniteGrp.{0} : ProfiniteGrp.{0}ProfiniteGrp.{u_1} : Type (u_1 + 1)The category of profinite groups. A term of this type consists of a profinite
    set with a topological group structure.
    } (BQ2Presentation.BoundaryPackage Γ : Q2Presentation.BoundaryPackageQ2Presentation.BoundaryPackage (Γ : ProfiniteGrp.{0}) : TypeA **boundary package** on a profinite group `Γ`: the uniform Stage-C data of a tame
    quotient, a maximal pro-`2` quotient, and a common unramified character `ℤ₂` through which
    both factor (manuscript Prop 3.14, `prop:compatiblemarking`; plan Turn 4 §6).  The
    compatibility `tameMap ≫ ν_t = ν = pro2Map ≫ ν_2` records that the two markings agree on
    the full unramified coordinate, not merely modulo `2`.  ΓProfiniteGrp.{0})
      (ρQ2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst
      (Q2Presentation.Induction.cChild chief K).snd :
        Q2Presentation.boundaryFramedSurjQ2Presentation.boundaryFramedSurj {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ)
      (Yt : Q2Presentation.BoundaryFramedTarget) (F : Q2Presentation.BoundaryFrame Yt) : TypeThe **boundary-framed surjections** `e_Γ^β(𝒴)` (manuscript `eq:eGamma`): the
    continuous surjections `f : Γ ↠ Y` whose induced map to `H × E` is the prescribed
    `β ∘ b_Γ`, i.e. `q_Y ∘ f = β ∘ b_Γ`.  This is the subtype counted in Theorem 4.2;
    its cardinality is `e_Γ^β(𝒴)`.  BQ2Presentation.BoundaryPackage Γ
          (Q2Presentation.Induction.cChildQ2Presentation.Induction.cChild {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPair**The C-child framed pair** (the carrier of `X_Γ(C)`; manuscript
    `C = Y/K` via `B/M' ≅ C`, `mChildCollapse`).  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.
    
          (Q2Presentation.Induction.cChildQ2Presentation.Induction.cChild {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPair**The C-child framed pair** (the carrier of `X_Γ(C)`; manuscript
    `C = Y/K` via `B/M' ≅ C`, `mChildCollapse`).  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.
    ) :
      PropThe universe of propositions. `Prop ≡ Sort 0`.
    
    Every proposition is propositionally equal to either `True` or `False`. 
    def Q2Presentation.Induction.EdgeDelSurj
      {pQ2Presentation.Induction.FramedPair :
        Q2Presentation.Induction.FramedPairQ2Presentation.Induction.FramedPair : Type 1A **framed pair** `(𝒴, F)`: a boundary-framed marked target together with a
    boundary frame for it (manuscript Definition 4.1 + `eq:beta`).  This is the index of
    Theorem 4.2: the boundary-framed surjection count `e_Γ^β` is a function of the pair.
    The induction of `sec:induction` ranges over *all* such pairs simultaneously
    ("the induction is stated globally", l.1213), ordered by `|L_Y|`. }
      (chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p :
        Q2Presentation.Induction.FirstNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor (p : Q2Presentation.Induction.FramedPair) : TypeA non-scalar chief factor of `L_Y` that is **first**: every chief factor strictly
    below it (i.e. with upper term contained in `lower`) is scalar.  This is the manuscript's
    choice `S ◁ P` at l.3616–3623 ("all chief factors below `S` are scalar and `V` is the
    first non-scalar simple factor"), which `lem:collapse` requires for the coprime step
    `[S, Ñ] = 1`. 
          pQ2Presentation.Induction.FramedPair)
      (KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor :
        Q2Presentation.Induction.KernelMinimalQ2Presentation.Induction.KernelMinimal {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.NonScalarChiefFactor p) : TypeThe manuscript's kernel choice (l.3623): `K ◁ Y`, `K ≤ P`, `KS = P`, and `K` is
    **⊆-minimal** with these properties — stated as: any `Y`-normal `K' ≤ K` still joining
    with `S` to `P` equals `K`.  (This, not leastness among all candidates, is what
    `lem:simplehead` and `lem:collapse` use: both apply it to subgroups of `K`.) 
          chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p.toNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor.toNonScalarChiefFactor {p : Q2Presentation.Induction.FramedPair}
      (self : Q2Presentation.Induction.FirstNonScalarChiefFactor p) : Q2Presentation.Induction.NonScalarChiefFactor p)
      {ΓProfiniteGrp.{0} : ProfiniteGrp.{0}ProfiniteGrp.{u_1} : Type (u_1 + 1)The category of profinite groups. A term of this type consists of a profinite
    set with a topological group structure.
    }
      (BQ2Presentation.BoundaryPackage Γ : Q2Presentation.BoundaryPackageQ2Presentation.BoundaryPackage (Γ : ProfiniteGrp.{0}) : TypeA **boundary package** on a profinite group `Γ`: the uniform Stage-C data of a tame
    quotient, a maximal pro-`2` quotient, and a common unramified character `ℤ₂` through which
    both factor (manuscript Prop 3.14, `prop:compatiblemarking`; plan Turn 4 §6).  The
    compatibility `tameMap ≫ ν_t = ν = pro2Map ≫ ν_2` records that the two markings agree on
    the full unramified coordinate, not merely modulo `2`.  ΓProfiniteGrp.{0})
      (ρQ2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst
      (Q2Presentation.Induction.cChild chief K).snd :
        Q2Presentation.boundaryFramedSurjQ2Presentation.boundaryFramedSurj {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ)
      (Yt : Q2Presentation.BoundaryFramedTarget) (F : Q2Presentation.BoundaryFrame Yt) : TypeThe **boundary-framed surjections** `e_Γ^β(𝒴)` (manuscript `eq:eGamma`): the
    continuous surjections `f : Γ ↠ Y` whose induced map to `H × E` is the prescribed
    `β ∘ b_Γ`, i.e. `q_Y ∘ f = β ∘ b_Γ`.  This is the subtype counted in Theorem 4.2;
    its cardinality is `e_Γ^β(𝒴)`.  BQ2Presentation.BoundaryPackage Γ
          (Q2Presentation.Induction.cChildQ2Presentation.Induction.cChild {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPair**The C-child framed pair** (the carrier of `X_Γ(C)`; manuscript
    `C = Y/K` via `B/M' ≅ C`, `mChildCollapse`). 
              chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.
    
          (Q2Presentation.Induction.cChildQ2Presentation.Induction.cChild {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPair**The C-child framed pair** (the carrier of `X_Γ(C)`; manuscript
    `C = Y/K` via `B/M' ≅ C`, `mChildCollapse`). 
              chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.
    ) :
      PropThe universe of propositions. `Prop ≡ Sort 0`.
    
    Every proposition is propositionally equal to either `True` or `False`. 
    **F-∂ floor `Prop`** (design §5 #F-∂; `lem:elementarystage`
    l.4171–4205, dual-injectivity spelling): no `0 ≠ χ ∈ 𝒳_T` kills every
    constraint defect reading — i.e. the transpose of `∂_{Γ,ρ}` is
    injective.  PROVENANCE + dissolution program: the manuscript proof is
    the counting dévissage `H²_{Γ,ρ}(M) = 0` at the intermediate
    `χ`-pushout kernels `M_χ = ker χ̃`; in-tree this is the clause-(d)
    ladder (`q2_localduality_weakZ1_card`) at `M_χ`-kernels for the LOCAL
    source — derivable, expected NOT to survive — and the N6 corank engine
    for the candidate (manuscript fallback per the §5 table).  Consumed as
    a HYPOTHESIS (never an axiom) by the engine fire below;
    `edgeL_surjective_of_delSurj` converts it to the engine's `hL`. 
Proof

Proved in §8 of the paper. Ingredients: Lemma 7.1.

Lemma 8.10 of the paper (Scalar pushouts separate the complete obstruction).

Put

\mathcal X_R=(R^\vee)^B=(R^\vee)^C.

For either source, \mathcal X_R is canonically the dual of the R-valued obstruction space. If o is an R-valued lifting obstruction, then

o=0\quad\Longleftrightarrow\quad \lambda_*o=0\text{ for every }\lambda\in\mathcal X_R.

For 0\ne\lambda\in\mathcal X_R, the corresponding scalar pushout is the central double cover

p_\lambda:B_\lambda=Y/\ker\lambda\twoheadrightarrow B.

Lean code for Lemma8.1010 declarations, 1 missing
  • defdefined in Q2Presentation/Induction/BlockRealizationAssembly.lean
    complete
    def Q2Presentation.Induction.BlockR.blockCharDual
      {pQ2Presentation.Induction.FramedPair : Q2Presentation.Induction.FramedPairQ2Presentation.Induction.FramedPair : Type 1A **framed pair** `(𝒴, F)`: a boundary-framed marked target together with a
    boundary frame for it (manuscript Definition 4.1 + `eq:beta`).  This is the index of
    Theorem 4.2: the boundary-framed surjection count `e_Γ^β` is a function of the pair.
    The induction of `sec:induction` ranges over *all* such pairs simultaneously
    ("the induction is stated globally", l.1213), ordered by `|L_Y|`. }
      (chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p : Q2Presentation.Induction.FirstNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor (p : Q2Presentation.Induction.FramedPair) : TypeA non-scalar chief factor of `L_Y` that is **first**: every chief factor strictly
    below it (i.e. with upper term contained in `lower`) is scalar.  This is the manuscript's
    choice `S ◁ P` at l.3616–3623 ("all chief factors below `S` are scalar and `V` is the
    first non-scalar simple factor"), which `lem:collapse` requires for the coprime step
    `[S, Ñ] = 1`.  pQ2Presentation.Induction.FramedPair)
      (KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor :
        Q2Presentation.Induction.KernelMinimalQ2Presentation.Induction.KernelMinimal {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.NonScalarChiefFactor p) : TypeThe manuscript's kernel choice (l.3623): `K ◁ Y`, `K ≤ P`, `KS = P`, and `K` is
    **⊆-minimal** with these properties — stated as: any `Y`-normal `K' ≤ K` still joining
    with `S` to `P` equals `K`.  (This, not leastness among all candidates, is what
    `lem:simplehead` and `lem:collapse` use: both apply it to subgroups of `K`.)  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p.toNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor.toNonScalarChiefFactor {p : Q2Presentation.Induction.FramedPair}
      (self : Q2Presentation.Induction.FirstNonScalarChiefFactor p) : Q2Presentation.Induction.NonScalarChiefFactor p)
      (XQ2Presentation.Induction.MinimalBlockPreheadInvariantCharacterData
      (Q2Presentation.Induction.sec7RawTowerPacketCanonical chief K).preheadTowerData :
        Q2Presentation.Induction.MinimalBlockPreheadInvariantCharacterDataQ2Presentation.Induction.MinimalBlockPreheadInvariantCharacterData {p : Q2Presentation.Induction.FramedPair}
      {chief : Q2Presentation.Induction.NonScalarChiefFactor p}
      (D : Q2Presentation.Induction.MinimalBlockPreheadTowerData p chief) : PropNonzero invariant determinant characters over a pre-head Section 7 tower.
    
    This is the same Frattini-character input as `MinimalBlockInvariantCharacterData`,
    but stated before `M/T` has been proved nonzero. 
          (Q2Presentation.Induction.sec7RawTowerPacketCanonicalQ2Presentation.Induction.sec7RawTowerPacketCanonical {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Induction.Sec7RawTowerPacket chief KThe canonical raw tower packet — the literal §7 constructors (checkpoint-F9).
    Using this definitional packet (instead of an opaque `Nonempty`-obtained one) lets the
    crux-lowered pushout packet of `Section7PushoutConstruction` be consumed directly.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p
              KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).preheadTowerDataQ2Presentation.Induction.Sec7RawTowerPacket.preheadTowerData {p : Q2Presentation.Induction.FramedPair}
      {chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p}
      {K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor}
      (T : Q2Presentation.Induction.Sec7RawTowerPacket chief K) :
      Q2Presentation.Induction.MinimalBlockPreheadTowerData p chief.toNonScalarChiefFactorThe pre-head tower assembled from the packet. )
      (FdetQ2Presentation.Induction.MinimalBlockPreheadExtraspecialEquivariantFamilyData
      (Q2Presentation.Induction.sec7RawTowerPacketCanonical chief K).preheadTowerData :
        Q2Presentation.Induction.MinimalBlockPreheadExtraspecialEquivariantFamilyDataQ2Presentation.Induction.MinimalBlockPreheadExtraspecialEquivariantFamilyData {p : Q2Presentation.Induction.FramedPair}
      {chief : Q2Presentation.Induction.NonScalarChiefFactor p}
      (D : Q2Presentation.Induction.MinimalBlockPreheadTowerData p chief) : TypeEquivariant extraspecial self-duality data over a pre-head tower.
    
    This is now an assembled packet: the bare central-pushout self-duality family and
    its `C`-naturality/diagonal-invariance proof are separated below, then reassembled
    here for the existing downstream pre-head determinant interfaces. 
          (Q2Presentation.Induction.sec7RawTowerPacketCanonicalQ2Presentation.Induction.sec7RawTowerPacketCanonical {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Induction.Sec7RawTowerPacket chief KThe canonical raw tower packet — the literal §7 constructors (checkpoint-F9).
    Using this definitional packet (instead of an opaque `Nonempty`-obtained one) lets the
    crux-lowered pushout packet of `Section7PushoutConstruction` be consumed directly.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p
              KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).preheadTowerDataQ2Presentation.Induction.Sec7RawTowerPacket.preheadTowerData {p : Q2Presentation.Induction.FramedPair}
      {chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p}
      {K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor}
      (T : Q2Presentation.Induction.Sec7RawTowerPacket chief K) :
      Q2Presentation.Induction.MinimalBlockPreheadTowerData p chief.toNonScalarChiefFactorThe pre-head tower assembled from the packet. )
      (AQ2Presentation.Induction.MinimalBlockPreheadExtraspecialAnnihilationData Fdet :
        Q2Presentation.Induction.MinimalBlockPreheadExtraspecialAnnihilationDataQ2Presentation.Induction.MinimalBlockPreheadExtraspecialAnnihilationData {p : Q2Presentation.Induction.FramedPair}
      {chief : Q2Presentation.Induction.NonScalarChiefFactor p}
      {D : Q2Presentation.Induction.MinimalBlockPreheadTowerData p chief}
      (F : Q2Presentation.Induction.MinimalBlockPreheadExtraspecialEquivariantFamilyData D) : PropThe two annihilation conclusions of `prop:simpleheaddet`, stated over the
    pre-head equivariant determinant family. 
          FdetQ2Presentation.Induction.MinimalBlockPreheadExtraspecialEquivariantFamilyData
      (Q2Presentation.Induction.sec7RawTowerPacketCanonical chief K).preheadTowerData)
      (RdetQ2Presentation.Induction.MinimalBlockPreheadExtraspecialRadicalData Fdet :
        Q2Presentation.Induction.MinimalBlockPreheadExtraspecialRadicalDataQ2Presentation.Induction.MinimalBlockPreheadExtraspecialRadicalData {p : Q2Presentation.Induction.FramedPair}
      {chief : Q2Presentation.Induction.NonScalarChiefFactor p}
      {D : Q2Presentation.Induction.MinimalBlockPreheadTowerData p chief}
      (F : Q2Presentation.Induction.MinimalBlockPreheadExtraspecialEquivariantFamilyData D) : PropThe polar-radical containment conclusion of `prop:simpleheaddet`, stated before
    the head-nontrivial field is installed. 
          FdetQ2Presentation.Induction.MinimalBlockPreheadExtraspecialEquivariantFamilyData
      (Q2Presentation.Induction.sec7RawTowerPacketCanonical chief K).preheadTowerData)
      (NQ2Presentation.Induction.MinimalBlockPreheadExtraspecialNonzeroData Fdet :
        Q2Presentation.Induction.MinimalBlockPreheadExtraspecialNonzeroDataQ2Presentation.Induction.MinimalBlockPreheadExtraspecialNonzeroData {p : Q2Presentation.Induction.FramedPair}
      {chief : Q2Presentation.Induction.NonScalarChiefFactor p}
      {D : Q2Presentation.Induction.MinimalBlockPreheadTowerData p chief}
      (F : Q2Presentation.Induction.MinimalBlockPreheadExtraspecialEquivariantFamilyData D) : PropThe nonzero diagonal conclusion of `prop:simpleheaddet`, stated before the
    head-nontrivial field is installed. 
          FdetQ2Presentation.Induction.MinimalBlockPreheadExtraspecialEquivariantFamilyData
      (Q2Presentation.Induction.sec7RawTowerPacketCanonical chief K).preheadTowerData)
      (h¬Q2Presentation.Induction.ScalarTerminal p : ¬Not (a : Prop) : Prop`Not p`, or `¬p`, is the negation of `p`. It is defined to be `p → False`,
    so if your goal is `¬p` you can use `intro h` to turn the goal into
    `h : p ⊢ False`, and if you have `hn : ¬p` and `h : p` then `hn h : False`
    and `(hn h).elim` will prove anything.
    For more information: [Propositional Logic](https://lean-lang.org/theorem_proving_in_lean4/propositions_and_proofs.html#propositional-logic)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `¬` in identifiers is `not`.Q2Presentation.Induction.ScalarTerminalQ2Presentation.Induction.ScalarTerminal (p : Q2Presentation.Induction.FramedPair) : Prop**Scalar-terminal framed pair.**  pQ2Presentation.Induction.FramedPair)
      (chiModule.Dual (ZMod 2) (Q2Presentation.Induction.BlockR.Bstar chief K X Fdet A Rdet N h).obstructionSpace :
        Module.DualModule.Dual.{u_4, u_5} (R : Type u_4) (M : Type u_5) [Semiring R] [AddCommMonoid M] [Module R M] : Type (max u_5 u_4)The left dual space of an R-module M is the R-module of linear maps `M → R`.  (ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2)
          (Q2Presentation.Induction.BlockR.BstarQ2Presentation.Induction.BlockR.Bstar {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (X :
        Q2Presentation.Induction.MinimalBlockPreheadInvariantCharacterData
          (Q2Presentation.Induction.sec7RawTowerPacketCanonical chief K).preheadTowerData)
      (Fdet :
        Q2Presentation.Induction.MinimalBlockPreheadExtraspecialEquivariantFamilyData
          (Q2Presentation.Induction.sec7RawTowerPacketCanonical chief K).preheadTowerData)
      (A : Q2Presentation.Induction.MinimalBlockPreheadExtraspecialAnnihilationData Fdet)
      (Rdet : Q2Presentation.Induction.MinimalBlockPreheadExtraspecialRadicalData Fdet)
      (N : Q2Presentation.Induction.MinimalBlockPreheadExtraspecialNonzeroData Fdet)
      (h : ¬Q2Presentation.Induction.ScalarTerminal p) : Q2Presentation.Induction.MinimalBlock pThe pinned block.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor XQ2Presentation.Induction.MinimalBlockPreheadInvariantCharacterData
      (Q2Presentation.Induction.sec7RawTowerPacketCanonical chief K).preheadTowerData FdetQ2Presentation.Induction.MinimalBlockPreheadExtraspecialEquivariantFamilyData
      (Q2Presentation.Induction.sec7RawTowerPacketCanonical chief K).preheadTowerData AQ2Presentation.Induction.MinimalBlockPreheadExtraspecialAnnihilationData Fdet RdetQ2Presentation.Induction.MinimalBlockPreheadExtraspecialRadicalData Fdet NQ2Presentation.Induction.MinimalBlockPreheadExtraspecialNonzeroData Fdet
              h¬Q2Presentation.Induction.ScalarTerminal p).obstructionSpaceQ2Presentation.Induction.MinimalBlock.obstructionSpace {p : Q2Presentation.Induction.FramedPair}
      (B : Q2Presentation.Induction.MinimalBlock p) : Type**The `R`-valued obstruction space `W = O_R`** (`prop:finalfourier`).  By
    `lem:obstructionseparation` (l.4213, `𝒳_R = (R^∨)^B = (R^∨)^C` is *canonically the dual of
    the `R`-valued obstruction space*), `O_R = (𝒳_R)^∨`, so `O_R = Module.Dual (ZMod 2) 𝒳_R`.
    This is the finite `𝔽₂` space `FourierBranchData.W` the §8 Fourier branch consumes: the
    `R`-valued lifting obstruction `o_Γ` lands in `O_R`, and its character group
    `Ŵ = Dual O_R ≅ 𝒳_R` is the index of the Fourier sum `eq:recursionR1`. ) :
      (Q2Presentation.Lifting.conjInvDualsQ2Presentation.Lifting.conjInvDuals {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) :
      Submodule (ZMod 2) (Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E))The conjugation-invariant duals `X = (R^∨)^Y = (R^∨)^C` of an
    elementary kernel (consumer spelling of the manuscript's `𝒳_R`,
    §7 l.3720–3723). 
          (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor))
    def Q2Presentation.Induction.BlockR.blockCharDual
      {pQ2Presentation.Induction.FramedPair :
        Q2Presentation.Induction.FramedPairQ2Presentation.Induction.FramedPair : Type 1A **framed pair** `(𝒴, F)`: a boundary-framed marked target together with a
    boundary frame for it (manuscript Definition 4.1 + `eq:beta`).  This is the index of
    Theorem 4.2: the boundary-framed surjection count `e_Γ^β` is a function of the pair.
    The induction of `sec:induction` ranges over *all* such pairs simultaneously
    ("the induction is stated globally", l.1213), ordered by `|L_Y|`. }
      (chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p :
        Q2Presentation.Induction.FirstNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor (p : Q2Presentation.Induction.FramedPair) : TypeA non-scalar chief factor of `L_Y` that is **first**: every chief factor strictly
    below it (i.e. with upper term contained in `lower`) is scalar.  This is the manuscript's
    choice `S ◁ P` at l.3616–3623 ("all chief factors below `S` are scalar and `V` is the
    first non-scalar simple factor"), which `lem:collapse` requires for the coprime step
    `[S, Ñ] = 1`. 
          pQ2Presentation.Induction.FramedPair)
      (KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor :
        Q2Presentation.Induction.KernelMinimalQ2Presentation.Induction.KernelMinimal {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.NonScalarChiefFactor p) : TypeThe manuscript's kernel choice (l.3623): `K ◁ Y`, `K ≤ P`, `KS = P`, and `K` is
    **⊆-minimal** with these properties — stated as: any `Y`-normal `K' ≤ K` still joining
    with `S` to `P` equals `K`.  (This, not leastness among all candidates, is what
    `lem:simplehead` and `lem:collapse` use: both apply it to subgroups of `K`.) 
          chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p.toNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor.toNonScalarChiefFactor {p : Q2Presentation.Induction.FramedPair}
      (self : Q2Presentation.Induction.FirstNonScalarChiefFactor p) : Q2Presentation.Induction.NonScalarChiefFactor p)
      (XQ2Presentation.Induction.MinimalBlockPreheadInvariantCharacterData
      (Q2Presentation.Induction.sec7RawTowerPacketCanonical chief K).preheadTowerData :
        Q2Presentation.Induction.MinimalBlockPreheadInvariantCharacterDataQ2Presentation.Induction.MinimalBlockPreheadInvariantCharacterData {p : Q2Presentation.Induction.FramedPair}
      {chief : Q2Presentation.Induction.NonScalarChiefFactor p}
      (D : Q2Presentation.Induction.MinimalBlockPreheadTowerData p chief) : PropNonzero invariant determinant characters over a pre-head Section 7 tower.
    
    This is the same Frattini-character input as `MinimalBlockInvariantCharacterData`,
    but stated before `M/T` has been proved nonzero. 
          (Q2Presentation.Induction.sec7RawTowerPacketCanonicalQ2Presentation.Induction.sec7RawTowerPacketCanonical {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Induction.Sec7RawTowerPacket chief KThe canonical raw tower packet — the literal §7 constructors (checkpoint-F9).
    Using this definitional packet (instead of an opaque `Nonempty`-obtained one) lets the
    crux-lowered pushout packet of `Section7PushoutConstruction` be consumed directly. 
              chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).preheadTowerDataQ2Presentation.Induction.Sec7RawTowerPacket.preheadTowerData {p : Q2Presentation.Induction.FramedPair}
      {chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p}
      {K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor}
      (T : Q2Presentation.Induction.Sec7RawTowerPacket chief K) :
      Q2Presentation.Induction.MinimalBlockPreheadTowerData p chief.toNonScalarChiefFactorThe pre-head tower assembled from the packet. )
      (FdetQ2Presentation.Induction.MinimalBlockPreheadExtraspecialEquivariantFamilyData
      (Q2Presentation.Induction.sec7RawTowerPacketCanonical chief K).preheadTowerData :
        Q2Presentation.Induction.MinimalBlockPreheadExtraspecialEquivariantFamilyDataQ2Presentation.Induction.MinimalBlockPreheadExtraspecialEquivariantFamilyData {p : Q2Presentation.Induction.FramedPair}
      {chief : Q2Presentation.Induction.NonScalarChiefFactor p}
      (D : Q2Presentation.Induction.MinimalBlockPreheadTowerData p chief) : TypeEquivariant extraspecial self-duality data over a pre-head tower.
    
    This is now an assembled packet: the bare central-pushout self-duality family and
    its `C`-naturality/diagonal-invariance proof are separated below, then reassembled
    here for the existing downstream pre-head determinant interfaces. 
          (Q2Presentation.Induction.sec7RawTowerPacketCanonicalQ2Presentation.Induction.sec7RawTowerPacketCanonical {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Induction.Sec7RawTowerPacket chief KThe canonical raw tower packet — the literal §7 constructors (checkpoint-F9).
    Using this definitional packet (instead of an opaque `Nonempty`-obtained one) lets the
    crux-lowered pushout packet of `Section7PushoutConstruction` be consumed directly. 
              chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).preheadTowerDataQ2Presentation.Induction.Sec7RawTowerPacket.preheadTowerData {p : Q2Presentation.Induction.FramedPair}
      {chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p}
      {K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor}
      (T : Q2Presentation.Induction.Sec7RawTowerPacket chief K) :
      Q2Presentation.Induction.MinimalBlockPreheadTowerData p chief.toNonScalarChiefFactorThe pre-head tower assembled from the packet. )
      (AQ2Presentation.Induction.MinimalBlockPreheadExtraspecialAnnihilationData Fdet :
        Q2Presentation.Induction.MinimalBlockPreheadExtraspecialAnnihilationDataQ2Presentation.Induction.MinimalBlockPreheadExtraspecialAnnihilationData {p : Q2Presentation.Induction.FramedPair}
      {chief : Q2Presentation.Induction.NonScalarChiefFactor p}
      {D : Q2Presentation.Induction.MinimalBlockPreheadTowerData p chief}
      (F : Q2Presentation.Induction.MinimalBlockPreheadExtraspecialEquivariantFamilyData D) : PropThe two annihilation conclusions of `prop:simpleheaddet`, stated over the
    pre-head equivariant determinant family. 
          FdetQ2Presentation.Induction.MinimalBlockPreheadExtraspecialEquivariantFamilyData
      (Q2Presentation.Induction.sec7RawTowerPacketCanonical chief K).preheadTowerData)
      (RdetQ2Presentation.Induction.MinimalBlockPreheadExtraspecialRadicalData Fdet :
        Q2Presentation.Induction.MinimalBlockPreheadExtraspecialRadicalDataQ2Presentation.Induction.MinimalBlockPreheadExtraspecialRadicalData {p : Q2Presentation.Induction.FramedPair}
      {chief : Q2Presentation.Induction.NonScalarChiefFactor p}
      {D : Q2Presentation.Induction.MinimalBlockPreheadTowerData p chief}
      (F : Q2Presentation.Induction.MinimalBlockPreheadExtraspecialEquivariantFamilyData D) : PropThe polar-radical containment conclusion of `prop:simpleheaddet`, stated before
    the head-nontrivial field is installed. 
          FdetQ2Presentation.Induction.MinimalBlockPreheadExtraspecialEquivariantFamilyData
      (Q2Presentation.Induction.sec7RawTowerPacketCanonical chief K).preheadTowerData)
      (NQ2Presentation.Induction.MinimalBlockPreheadExtraspecialNonzeroData Fdet :
        Q2Presentation.Induction.MinimalBlockPreheadExtraspecialNonzeroDataQ2Presentation.Induction.MinimalBlockPreheadExtraspecialNonzeroData {p : Q2Presentation.Induction.FramedPair}
      {chief : Q2Presentation.Induction.NonScalarChiefFactor p}
      {D : Q2Presentation.Induction.MinimalBlockPreheadTowerData p chief}
      (F : Q2Presentation.Induction.MinimalBlockPreheadExtraspecialEquivariantFamilyData D) : PropThe nonzero diagonal conclusion of `prop:simpleheaddet`, stated before the
    head-nontrivial field is installed. 
          FdetQ2Presentation.Induction.MinimalBlockPreheadExtraspecialEquivariantFamilyData
      (Q2Presentation.Induction.sec7RawTowerPacketCanonical chief K).preheadTowerData)
      (h¬Q2Presentation.Induction.ScalarTerminal p :
        ¬Not (a : Prop) : Prop`Not p`, or `¬p`, is the negation of `p`. It is defined to be `p → False`,
    so if your goal is `¬p` you can use `intro h` to turn the goal into
    `h : p ⊢ False`, and if you have `hn : ¬p` and `h : p` then `hn h : False`
    and `(hn h).elim` will prove anything.
    For more information: [Propositional Logic](https://lean-lang.org/theorem_proving_in_lean4/propositions_and_proofs.html#propositional-logic)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `¬` in identifiers is `not`.Q2Presentation.Induction.ScalarTerminalQ2Presentation.Induction.ScalarTerminal (p : Q2Presentation.Induction.FramedPair) : Prop**Scalar-terminal framed pair.** 
            pQ2Presentation.Induction.FramedPair)
      (chiModule.Dual (ZMod 2) (Q2Presentation.Induction.BlockR.Bstar chief K X Fdet A Rdet N h).obstructionSpace :
        Module.DualModule.Dual.{u_4, u_5} (R : Type u_4) (M : Type u_5) [Semiring R] [AddCommMonoid M] [Module R M] : Type (max u_5 u_4)The left dual space of an R-module M is the R-module of linear maps `M → R`.  (ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2)
          (Q2Presentation.Induction.BlockR.BstarQ2Presentation.Induction.BlockR.Bstar {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (X :
        Q2Presentation.Induction.MinimalBlockPreheadInvariantCharacterData
          (Q2Presentation.Induction.sec7RawTowerPacketCanonical chief K).preheadTowerData)
      (Fdet :
        Q2Presentation.Induction.MinimalBlockPreheadExtraspecialEquivariantFamilyData
          (Q2Presentation.Induction.sec7RawTowerPacketCanonical chief K).preheadTowerData)
      (A : Q2Presentation.Induction.MinimalBlockPreheadExtraspecialAnnihilationData Fdet)
      (Rdet : Q2Presentation.Induction.MinimalBlockPreheadExtraspecialRadicalData Fdet)
      (N : Q2Presentation.Induction.MinimalBlockPreheadExtraspecialNonzeroData Fdet)
      (h : ¬Q2Presentation.Induction.ScalarTerminal p) : Q2Presentation.Induction.MinimalBlock pThe pinned block. 
              chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor XQ2Presentation.Induction.MinimalBlockPreheadInvariantCharacterData
      (Q2Presentation.Induction.sec7RawTowerPacketCanonical chief K).preheadTowerData FdetQ2Presentation.Induction.MinimalBlockPreheadExtraspecialEquivariantFamilyData
      (Q2Presentation.Induction.sec7RawTowerPacketCanonical chief K).preheadTowerData AQ2Presentation.Induction.MinimalBlockPreheadExtraspecialAnnihilationData Fdet RdetQ2Presentation.Induction.MinimalBlockPreheadExtraspecialRadicalData Fdet NQ2Presentation.Induction.MinimalBlockPreheadExtraspecialNonzeroData Fdet
              h¬Q2Presentation.Induction.ScalarTerminal p).obstructionSpaceQ2Presentation.Induction.MinimalBlock.obstructionSpace {p : Q2Presentation.Induction.FramedPair}
      (B : Q2Presentation.Induction.MinimalBlock p) : Type**The `R`-valued obstruction space `W = O_R`** (`prop:finalfourier`).  By
    `lem:obstructionseparation` (l.4213, `𝒳_R = (R^∨)^B = (R^∨)^C` is *canonically the dual of
    the `R`-valued obstruction space*), `O_R = (𝒳_R)^∨`, so `O_R = Module.Dual (ZMod 2) 𝒳_R`.
    This is the finite `𝔽₂` space `FourierBranchData.W` the §8 Fourier branch consumes: the
    `R`-valued lifting obstruction `o_Γ` lands in `O_R`, and its character group
    `Ŵ = Dual O_R ≅ 𝒳_R` is the index of the Fourier sum `eq:recursionR1`. ) :
      (Q2Presentation.Lifting.conjInvDualsQ2Presentation.Lifting.conjInvDuals {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) :
      Submodule (ZMod 2) (Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E))The conjugation-invariant duals `X = (R^∨)^Y = (R^∨)^C` of an
    elementary kernel (consumer spelling of the manuscript's `𝒳_R`,
    §7 l.3720–3723). 
          (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian. 
            chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor))
    **The invariant dual attached to a character** of the block
    obstruction space: double-dual reflexivity (`Module.evalEquiv` at the
    finite `𝔽₂` space `𝒳_R`) followed by the `blockXR_eq_conjInvDuals`
    transport — the χ ↔ λ leg of `lem:obstructionseparation`. 
  • theoremdefined in Q2Presentation/Induction/BlockRealizationAssembly.lean
    complete
    theorem Q2Presentation.Induction.BlockR.blockPerCharA_card_eq_coverCount
      {pQ2Presentation.Induction.FramedPair : Q2Presentation.Induction.FramedPairQ2Presentation.Induction.FramedPair : Type 1A **framed pair** `(𝒴, F)`: a boundary-framed marked target together with a
    boundary frame for it (manuscript Definition 4.1 + `eq:beta`).  This is the index of
    Theorem 4.2: the boundary-framed surjection count `e_Γ^β` is a function of the pair.
    The induction of `sec:induction` ranges over *all* such pairs simultaneously
    ("the induction is stated globally", l.1213), ordered by `|L_Y|`. }
      (chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p : Q2Presentation.Induction.FirstNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor (p : Q2Presentation.Induction.FramedPair) : TypeA non-scalar chief factor of `L_Y` that is **first**: every chief factor strictly
    below it (i.e. with upper term contained in `lower`) is scalar.  This is the manuscript's
    choice `S ◁ P` at l.3616–3623 ("all chief factors below `S` are scalar and `V` is the
    first non-scalar simple factor"), which `lem:collapse` requires for the coprime step
    `[S, Ñ] = 1`.  pQ2Presentation.Induction.FramedPair)
      (KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor :
        Q2Presentation.Induction.KernelMinimalQ2Presentation.Induction.KernelMinimal {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.NonScalarChiefFactor p) : TypeThe manuscript's kernel choice (l.3623): `K ◁ Y`, `K ≤ P`, `KS = P`, and `K` is
    **⊆-minimal** with these properties — stated as: any `Y`-normal `K' ≤ K` still joining
    with `S` to `P` equals `K`.  (This, not leastness among all candidates, is what
    `lem:simplehead` and `lem:collapse` use: both apply it to subgroups of `K`.)  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p.toNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor.toNonScalarChiefFactor {p : Q2Presentation.Induction.FramedPair}
      (self : Q2Presentation.Induction.FirstNonScalarChiefFactor p) : Q2Presentation.Induction.NonScalarChiefFactor p)
      (XQ2Presentation.Induction.MinimalBlockPreheadInvariantCharacterData
      (Q2Presentation.Induction.sec7RawTowerPacketCanonical chief K).preheadTowerData :
        Q2Presentation.Induction.MinimalBlockPreheadInvariantCharacterDataQ2Presentation.Induction.MinimalBlockPreheadInvariantCharacterData {p : Q2Presentation.Induction.FramedPair}
      {chief : Q2Presentation.Induction.NonScalarChiefFactor p}
      (D : Q2Presentation.Induction.MinimalBlockPreheadTowerData p chief) : PropNonzero invariant determinant characters over a pre-head Section 7 tower.
    
    This is the same Frattini-character input as `MinimalBlockInvariantCharacterData`,
    but stated before `M/T` has been proved nonzero. 
          (Q2Presentation.Induction.sec7RawTowerPacketCanonicalQ2Presentation.Induction.sec7RawTowerPacketCanonical {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Induction.Sec7RawTowerPacket chief KThe canonical raw tower packet — the literal §7 constructors (checkpoint-F9).
    Using this definitional packet (instead of an opaque `Nonempty`-obtained one) lets the
    crux-lowered pushout packet of `Section7PushoutConstruction` be consumed directly.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p
              KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).preheadTowerDataQ2Presentation.Induction.Sec7RawTowerPacket.preheadTowerData {p : Q2Presentation.Induction.FramedPair}
      {chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p}
      {K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor}
      (T : Q2Presentation.Induction.Sec7RawTowerPacket chief K) :
      Q2Presentation.Induction.MinimalBlockPreheadTowerData p chief.toNonScalarChiefFactorThe pre-head tower assembled from the packet. )
      (FdetQ2Presentation.Induction.MinimalBlockPreheadExtraspecialEquivariantFamilyData
      (Q2Presentation.Induction.sec7RawTowerPacketCanonical chief K).preheadTowerData :
        Q2Presentation.Induction.MinimalBlockPreheadExtraspecialEquivariantFamilyDataQ2Presentation.Induction.MinimalBlockPreheadExtraspecialEquivariantFamilyData {p : Q2Presentation.Induction.FramedPair}
      {chief : Q2Presentation.Induction.NonScalarChiefFactor p}
      (D : Q2Presentation.Induction.MinimalBlockPreheadTowerData p chief) : TypeEquivariant extraspecial self-duality data over a pre-head tower.
    
    This is now an assembled packet: the bare central-pushout self-duality family and
    its `C`-naturality/diagonal-invariance proof are separated below, then reassembled
    here for the existing downstream pre-head determinant interfaces. 
          (Q2Presentation.Induction.sec7RawTowerPacketCanonicalQ2Presentation.Induction.sec7RawTowerPacketCanonical {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Induction.Sec7RawTowerPacket chief KThe canonical raw tower packet — the literal §7 constructors (checkpoint-F9).
    Using this definitional packet (instead of an opaque `Nonempty`-obtained one) lets the
    crux-lowered pushout packet of `Section7PushoutConstruction` be consumed directly.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p
              KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).preheadTowerDataQ2Presentation.Induction.Sec7RawTowerPacket.preheadTowerData {p : Q2Presentation.Induction.FramedPair}
      {chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p}
      {K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor}
      (T : Q2Presentation.Induction.Sec7RawTowerPacket chief K) :
      Q2Presentation.Induction.MinimalBlockPreheadTowerData p chief.toNonScalarChiefFactorThe pre-head tower assembled from the packet. )
      (AQ2Presentation.Induction.MinimalBlockPreheadExtraspecialAnnihilationData Fdet :
        Q2Presentation.Induction.MinimalBlockPreheadExtraspecialAnnihilationDataQ2Presentation.Induction.MinimalBlockPreheadExtraspecialAnnihilationData {p : Q2Presentation.Induction.FramedPair}
      {chief : Q2Presentation.Induction.NonScalarChiefFactor p}
      {D : Q2Presentation.Induction.MinimalBlockPreheadTowerData p chief}
      (F : Q2Presentation.Induction.MinimalBlockPreheadExtraspecialEquivariantFamilyData D) : PropThe two annihilation conclusions of `prop:simpleheaddet`, stated over the
    pre-head equivariant determinant family. 
          FdetQ2Presentation.Induction.MinimalBlockPreheadExtraspecialEquivariantFamilyData
      (Q2Presentation.Induction.sec7RawTowerPacketCanonical chief K).preheadTowerData)
      (RdetQ2Presentation.Induction.MinimalBlockPreheadExtraspecialRadicalData Fdet :
        Q2Presentation.Induction.MinimalBlockPreheadExtraspecialRadicalDataQ2Presentation.Induction.MinimalBlockPreheadExtraspecialRadicalData {p : Q2Presentation.Induction.FramedPair}
      {chief : Q2Presentation.Induction.NonScalarChiefFactor p}
      {D : Q2Presentation.Induction.MinimalBlockPreheadTowerData p chief}
      (F : Q2Presentation.Induction.MinimalBlockPreheadExtraspecialEquivariantFamilyData D) : PropThe polar-radical containment conclusion of `prop:simpleheaddet`, stated before
    the head-nontrivial field is installed. 
          FdetQ2Presentation.Induction.MinimalBlockPreheadExtraspecialEquivariantFamilyData
      (Q2Presentation.Induction.sec7RawTowerPacketCanonical chief K).preheadTowerData)
      (NQ2Presentation.Induction.MinimalBlockPreheadExtraspecialNonzeroData Fdet :
        Q2Presentation.Induction.MinimalBlockPreheadExtraspecialNonzeroDataQ2Presentation.Induction.MinimalBlockPreheadExtraspecialNonzeroData {p : Q2Presentation.Induction.FramedPair}
      {chief : Q2Presentation.Induction.NonScalarChiefFactor p}
      {D : Q2Presentation.Induction.MinimalBlockPreheadTowerData p chief}
      (F : Q2Presentation.Induction.MinimalBlockPreheadExtraspecialEquivariantFamilyData D) : PropThe nonzero diagonal conclusion of `prop:simpleheaddet`, stated before the
    head-nontrivial field is installed. 
          FdetQ2Presentation.Induction.MinimalBlockPreheadExtraspecialEquivariantFamilyData
      (Q2Presentation.Induction.sec7RawTowerPacketCanonical chief K).preheadTowerData)
      (h¬Q2Presentation.Induction.ScalarTerminal p : ¬Not (a : Prop) : Prop`Not p`, or `¬p`, is the negation of `p`. It is defined to be `p → False`,
    so if your goal is `¬p` you can use `intro h` to turn the goal into
    `h : p ⊢ False`, and if you have `hn : ¬p` and `h : p` then `hn h : False`
    and `(hn h).elim` will prove anything.
    For more information: [Propositional Logic](https://lean-lang.org/theorem_proving_in_lean4/propositions_and_proofs.html#propositional-logic)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `¬` in identifiers is `not`.Q2Presentation.Induction.ScalarTerminalQ2Presentation.Induction.ScalarTerminal (p : Q2Presentation.Induction.FramedPair) : Prop**Scalar-terminal framed pair.**  pQ2Presentation.Induction.FramedPair)
      (chiModule.Dual (ZMod 2) (Q2Presentation.Induction.BlockR.Bstar chief K X Fdet A Rdet N h).obstructionSpace :
        Module.DualModule.Dual.{u_4, u_5} (R : Type u_4) (M : Type u_5) [Semiring R] [AddCommMonoid M] [Module R M] : Type (max u_5 u_4)The left dual space of an R-module M is the R-module of linear maps `M → R`.  (ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2)
          (Q2Presentation.Induction.BlockR.BstarQ2Presentation.Induction.BlockR.Bstar {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (X :
        Q2Presentation.Induction.MinimalBlockPreheadInvariantCharacterData
          (Q2Presentation.Induction.sec7RawTowerPacketCanonical chief K).preheadTowerData)
      (Fdet :
        Q2Presentation.Induction.MinimalBlockPreheadExtraspecialEquivariantFamilyData
          (Q2Presentation.Induction.sec7RawTowerPacketCanonical chief K).preheadTowerData)
      (A : Q2Presentation.Induction.MinimalBlockPreheadExtraspecialAnnihilationData Fdet)
      (Rdet : Q2Presentation.Induction.MinimalBlockPreheadExtraspecialRadicalData Fdet)
      (N : Q2Presentation.Induction.MinimalBlockPreheadExtraspecialNonzeroData Fdet)
      (h : ¬Q2Presentation.Induction.ScalarTerminal p) : Q2Presentation.Induction.MinimalBlock pThe pinned block.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor XQ2Presentation.Induction.MinimalBlockPreheadInvariantCharacterData
      (Q2Presentation.Induction.sec7RawTowerPacketCanonical chief K).preheadTowerData FdetQ2Presentation.Induction.MinimalBlockPreheadExtraspecialEquivariantFamilyData
      (Q2Presentation.Induction.sec7RawTowerPacketCanonical chief K).preheadTowerData AQ2Presentation.Induction.MinimalBlockPreheadExtraspecialAnnihilationData Fdet RdetQ2Presentation.Induction.MinimalBlockPreheadExtraspecialRadicalData Fdet NQ2Presentation.Induction.MinimalBlockPreheadExtraspecialNonzeroData Fdet
              h¬Q2Presentation.Induction.ScalarTerminal p).obstructionSpaceQ2Presentation.Induction.MinimalBlock.obstructionSpace {p : Q2Presentation.Induction.FramedPair}
      (B : Q2Presentation.Induction.MinimalBlock p) : Type**The `R`-valued obstruction space `W = O_R`** (`prop:finalfourier`).  By
    `lem:obstructionseparation` (l.4213, `𝒳_R = (R^∨)^B = (R^∨)^C` is *canonically the dual of
    the `R`-valued obstruction space*), `O_R = (𝒳_R)^∨`, so `O_R = Module.Dual (ZMod 2) 𝒳_R`.
    This is the finite `𝔽₂` space `FourierBranchData.W` the §8 Fourier branch consumes: the
    `R`-valued lifting obstruction `o_Γ` lands in `O_R`, and its character group
    `Ŵ = Dual O_R ≅ 𝒳_R` is the index of the Fourier sum `eq:recursionR1`. )
      (hchichi ≠ 0 : chiModule.Dual (ZMod 2) (Q2Presentation.Induction.BlockR.Bstar chief K X Fdet A Rdet N h).obstructionSpace Ne.{u} {α : Sort u} (a b : α) : Prop`a ≠ b`, or `Ne a b` is defined as `¬ (a = b)` or `a = b → False`,
    and asserts that `a` and `b` are not equal.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≠` in identifiers is `ne`. 0) :
      Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number.
    If `α` is infinite, `Nat.card α = 0`. 
          {Subtype.{u} {α : Sort u} (p : α → Prop) : Sort (max 1 u)All the elements of a type that satisfy a predicate.
    
    `Subtype p`, usually written `{ x : α // p x }` or `{ x // p x }`, contains all elements `x : α` for
    which `p x` is true. Its constructor is a pair of the value and the proof that it satisfies the
    predicate. In run-time code, `{ x : α // p x }` is represented identically to `α`.
    
    There is a coercion from `{ x : α // p x }` to `α`, so elements of a subtype may be used where the
    underlying type is expected.
    
    Examples:
     * `{ n : Nat // n % 2 = 0 }` is the type of even numbers.
     * `{ xs : Array String // xs.size = 5 }` is the type of arrays with five `String`s.
     * Given `xs : List α`, `List { x : α // x ∈ xs }` is the type of lists in which all elements are
       contained in `xs`.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `{ x // p x }` in identifiers is `subtype`. gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GammaA
      (Q2Presentation.Induction.XRZero.xrChild chief K).fst (Q2Presentation.Induction.XRZero.xrChild chief K).snd //Subtype.{u} {α : Sort u} (p : α → Prop) : Sort (max 1 u)All the elements of a type that satisfy a predicate.
    
    `Subtype p`, usually written `{ x : α // p x }` or `{ x // p x }`, contains all elements `x : α` for
    which `p x` is true. Its constructor is a pair of the value and the proof that it satisfies the
    predicate. In run-time code, `{ x : α // p x }` is represented identically to `α`.
    
    There is a coercion from `{ x : α // p x }` to `α`, so elements of a subtype may be used where the
    underlying type is expected.
    
    Examples:
     * `{ n : Nat // n % 2 = 0 }` is the type of even numbers.
     * `{ xs : Array String // xs.size = 5 }` is the type of arrays with five `String`s.
     * Given `xs : List α`, `List { x : α // x ∈ xs }` is the type of lists in which all elements are
       contained in `xs`.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `{ x // p x }` in identifiers is `subtype`.
            chiModule.Dual (ZMod 2) (Q2Presentation.Induction.BlockR.Bstar chief K X Fdet A Rdet N h).obstructionSpace
                (Q2Presentation.Induction.BlockR.blockObstructionAQ2Presentation.Induction.BlockR.blockObstructionA {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (X :
        Q2Presentation.Induction.MinimalBlockPreheadInvariantCharacterData
          (Q2Presentation.Induction.sec7RawTowerPacketCanonical chief K).preheadTowerData)
      (Fdet :
        Q2Presentation.Induction.MinimalBlockPreheadExtraspecialEquivariantFamilyData
          (Q2Presentation.Induction.sec7RawTowerPacketCanonical chief K).preheadTowerData)
      (A : Q2Presentation.Induction.MinimalBlockPreheadExtraspecialAnnihilationData Fdet)
      (Rdet : Q2Presentation.Induction.MinimalBlockPreheadExtraspecialRadicalData Fdet)
      (N : Q2Presentation.Induction.MinimalBlockPreheadExtraspecialNonzeroData Fdet)
      (h : ¬Q2Presentation.Induction.ScalarTerminal p)
      (g :
        Q2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GammaA
          (Q2Presentation.Induction.XRZero.xrChild chief K).fst (Q2Presentation.Induction.XRZero.xrChild chief K).snd) :
      (Q2Presentation.Induction.BlockR.Bstar chief K X Fdet A Rdet N h).obstructionSpace**The canonical candidate obstruction in block spelling**: the
    `XRObstruction` defect pairing, transported along
    `blockXR_eq_conjInvDuals`.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor XQ2Presentation.Induction.MinimalBlockPreheadInvariantCharacterData
      (Q2Presentation.Induction.sec7RawTowerPacketCanonical chief K).preheadTowerData
                  FdetQ2Presentation.Induction.MinimalBlockPreheadExtraspecialEquivariantFamilyData
      (Q2Presentation.Induction.sec7RawTowerPacketCanonical chief K).preheadTowerData AQ2Presentation.Induction.MinimalBlockPreheadExtraspecialAnnihilationData Fdet RdetQ2Presentation.Induction.MinimalBlockPreheadExtraspecialRadicalData Fdet NQ2Presentation.Induction.MinimalBlockPreheadExtraspecialNonzeroData Fdet h¬Q2Presentation.Induction.ScalarTerminal p gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GammaA
      (Q2Presentation.Induction.XRZero.xrChild chief K).fst (Q2Presentation.Induction.XRZero.xrChild chief K).snd) =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`.
              0 }Subtype.{u} {α : Sort u} (p : α → Prop) : Sort (max 1 u)All the elements of a type that satisfy a predicate.
    
    `Subtype p`, usually written `{ x : α // p x }` or `{ x // p x }`, contains all elements `x : α` for
    which `p x` is true. Its constructor is a pair of the value and the proof that it satisfies the
    predicate. In run-time code, `{ x : α // p x }` is represented identically to `α`.
    
    There is a coercion from `{ x : α // p x }` to `α`, so elements of a subtype may be used where the
    underlying type is expected.
    
    Examples:
     * `{ n : Nat // n % 2 = 0 }` is the type of even numbers.
     * `{ xs : Array String // xs.size = 5 }` is the type of arrays with five `String`s.
     * Given `xs : List α`, `List { x : α // x ∈ xs }` is the type of lists in which all elements are
       contained in `xs`.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `{ x // p x }` in identifiers is `subtype`. =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`.
        Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number.
    If `α` is infinite, `Nat.card α = 0`. 
          {Subtype.{u} {α : Sort u} (p : α → Prop) : Sort (max 1 u)All the elements of a type that satisfy a predicate.
    
    `Subtype p`, usually written `{ x : α // p x }` or `{ x // p x }`, contains all elements `x : α` for
    which `p x` is true. Its constructor is a pair of the value and the proof that it satisfies the
    predicate. In run-time code, `{ x : α // p x }` is represented identically to `α`.
    
    There is a coercion from `{ x : α // p x }` to `α`, so elements of a subtype may be used where the
    underlying type is expected.
    
    Examples:
     * `{ n : Nat // n % 2 = 0 }` is the type of even numbers.
     * `{ xs : Array String // xs.size = 5 }` is the type of arrays with five `String`s.
     * Given `xs : List α`, `List { x : α // x ∈ xs }` is the type of lists in which all elements are
       contained in `xs`.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `{ x // p x }` in identifiers is `subtype`. gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GammaA
      (Q2Presentation.Induction.XRZero.xrChild chief K).fst (Q2Presentation.Induction.XRZero.xrChild chief K).snd //Subtype.{u} {α : Sort u} (p : α → Prop) : Sort (max 1 u)All the elements of a type that satisfy a predicate.
    
    `Subtype p`, usually written `{ x : α // p x }` or `{ x // p x }`, contains all elements `x : α` for
    which `p x` is true. Its constructor is a pair of the value and the proof that it satisfies the
    predicate. In run-time code, `{ x : α // p x }` is represented identically to `α`.
    
    There is a coercion from `{ x : α // p x }` to `α`, so elements of a subtype may be used where the
    underlying type is expected.
    
    Examples:
     * `{ n : Nat // n % 2 = 0 }` is the type of even numbers.
     * `{ xs : Array String // xs.size = 5 }` is the type of arrays with five `String`s.
     * Given `xs : List α`, `List { x : α // x ∈ xs }` is the type of lists in which all elements are
       contained in `xs`.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `{ x // p x }` in identifiers is `subtype`.
            NonemptyNonempty.{u} (α : Sort u) : Prop`Nonempty α` is a typeclass that says that `α` is not an empty type,
    that is, there exists an element in the type. It differs from `Inhabited α`
    in that `Nonempty α` is a `Prop`, which means that it does not actually carry
    an element of `α`, only a proof that *there exists* such an element.
    Given `Nonempty α`, you can construct an element of `α` *nonconstructively*
    using `Classical.choice`.
    
              (Q2Presentation.Lifting.scalarCoverLiftHomQ2Presentation.Lifting.scalarCoverLiftHom {Yt : Q2Presentation.BoundaryFramedTarget} [Finite Yt.Y]
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals E) {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ)
      (F : Q2Presentation.BoundaryFrame Yt)
      (g :
        Q2Presentation.boundaryFramedSurj B (Q2Presentation.TorsorProgram.quotientFramedTarget Yt E.N ⋯ ⋯)
          (Q2Presentation.TorsorProgram.quotientFrame Yt E.N ⋯ ⋯ F)) :
      Type**Cover lifts of `g`** (`lem:obstructionseparation` l.4219–4223):
    framed homs `Γ ⟶ B_λ` over `g` — surjectivity NOT imposed (the
    manuscript's compatible lifts: `λ_*o` measures weak liftability; images
    are stratified by `eq:recursionR2`/`R3` later). 
                (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
                (Q2Presentation.Induction.BlockR.blockCharDualQ2Presentation.Induction.BlockR.blockCharDual {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (X :
        Q2Presentation.Induction.MinimalBlockPreheadInvariantCharacterData
          (Q2Presentation.Induction.sec7RawTowerPacketCanonical chief K).preheadTowerData)
      (Fdet :
        Q2Presentation.Induction.MinimalBlockPreheadExtraspecialEquivariantFamilyData
          (Q2Presentation.Induction.sec7RawTowerPacketCanonical chief K).preheadTowerData)
      (A : Q2Presentation.Induction.MinimalBlockPreheadExtraspecialAnnihilationData Fdet)
      (Rdet : Q2Presentation.Induction.MinimalBlockPreheadExtraspecialRadicalData Fdet)
      (N : Q2Presentation.Induction.MinimalBlockPreheadExtraspecialNonzeroData Fdet)
      (h : ¬Q2Presentation.Induction.ScalarTerminal p)
      (chi : Module.Dual (ZMod 2) (Q2Presentation.Induction.BlockR.Bstar chief K X Fdet A Rdet N h).obstructionSpace) :
      ↥(Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K))**The invariant dual attached to a character** of the block
    obstruction space: double-dual reflexivity (`Module.evalEquiv` at the
    finite `𝔽₂` space `𝒳_R`) followed by the `blockXR_eq_conjInvDuals`
    transport — the χ ↔ λ leg of `lem:obstructionseparation`.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor XQ2Presentation.Induction.MinimalBlockPreheadInvariantCharacterData
      (Q2Presentation.Induction.sec7RawTowerPacketCanonical chief K).preheadTowerData
                    FdetQ2Presentation.Induction.MinimalBlockPreheadExtraspecialEquivariantFamilyData
      (Q2Presentation.Induction.sec7RawTowerPacketCanonical chief K).preheadTowerData AQ2Presentation.Induction.MinimalBlockPreheadExtraspecialAnnihilationData Fdet RdetQ2Presentation.Induction.MinimalBlockPreheadExtraspecialRadicalData Fdet NQ2Presentation.Induction.MinimalBlockPreheadExtraspecialNonzeroData Fdet h¬Q2Presentation.Induction.ScalarTerminal p chiModule.Dual (ZMod 2) (Q2Presentation.Induction.BlockR.Bstar chief K X Fdet A Rdet N h).obstructionSpace)
                 Q2Presentation.boundaryPackage_GammaAQ2Presentation.boundaryPackage_GammaA : Q2Presentation.BoundaryPackage Q2Presentation.GammaA**The candidate boundary package** (manuscript Prop 3.14, `prop:compatiblemarking`;
    plan Turn 4 §6).  The Stage-C data of `Γ_A`: the common tame quotient `gammaTameMap`,
    the maximal pro-`2` quotient `p : Γ_A ⟶ Π`, and the common unramified character
    `ν = gammaTameMap ≫ ν_t`, through which both factor.  pQ2Presentation.Induction.FramedPair.sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.
     gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GammaA
      (Q2Presentation.Induction.XRZero.xrChild chief K).fst (Q2Presentation.Induction.XRZero.xrChild chief K).snd) }Subtype.{u} {α : Sort u} (p : α → Prop) : Sort (max 1 u)All the elements of a type that satisfy a predicate.
    
    `Subtype p`, usually written `{ x : α // p x }` or `{ x // p x }`, contains all elements `x : α` for
    which `p x` is true. Its constructor is a pair of the value and the proof that it satisfies the
    predicate. In run-time code, `{ x : α // p x }` is represented identically to `α`.
    
    There is a coercion from `{ x : α // p x }` to `α`, so elements of a subtype may be used where the
    underlying type is expected.
    
    Examples:
     * `{ n : Nat // n % 2 = 0 }` is the type of even numbers.
     * `{ xs : Array String // xs.size = 5 }` is the type of arrays with five `String`s.
     * Given `xs : List α`, `List { x : α // x ∈ xs }` is the type of lists in which all elements are
       contained in `xs`.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `{ x // p x }` in identifiers is `subtype`.
    theorem Q2Presentation.Induction.BlockR.blockPerCharA_card_eq_coverCount
      {pQ2Presentation.Induction.FramedPair :
        Q2Presentation.Induction.FramedPairQ2Presentation.Induction.FramedPair : Type 1A **framed pair** `(𝒴, F)`: a boundary-framed marked target together with a
    boundary frame for it (manuscript Definition 4.1 + `eq:beta`).  This is the index of
    Theorem 4.2: the boundary-framed surjection count `e_Γ^β` is a function of the pair.
    The induction of `sec:induction` ranges over *all* such pairs simultaneously
    ("the induction is stated globally", l.1213), ordered by `|L_Y|`. }
      (chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p :
        Q2Presentation.Induction.FirstNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor (p : Q2Presentation.Induction.FramedPair) : TypeA non-scalar chief factor of `L_Y` that is **first**: every chief factor strictly
    below it (i.e. with upper term contained in `lower`) is scalar.  This is the manuscript's
    choice `S ◁ P` at l.3616–3623 ("all chief factors below `S` are scalar and `V` is the
    first non-scalar simple factor"), which `lem:collapse` requires for the coprime step
    `[S, Ñ] = 1`. 
          pQ2Presentation.Induction.FramedPair)
      (KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor :
        Q2Presentation.Induction.KernelMinimalQ2Presentation.Induction.KernelMinimal {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.NonScalarChiefFactor p) : TypeThe manuscript's kernel choice (l.3623): `K ◁ Y`, `K ≤ P`, `KS = P`, and `K` is
    **⊆-minimal** with these properties — stated as: any `Y`-normal `K' ≤ K` still joining
    with `S` to `P` equals `K`.  (This, not leastness among all candidates, is what
    `lem:simplehead` and `lem:collapse` use: both apply it to subgroups of `K`.) 
          chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p.toNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor.toNonScalarChiefFactor {p : Q2Presentation.Induction.FramedPair}
      (self : Q2Presentation.Induction.FirstNonScalarChiefFactor p) : Q2Presentation.Induction.NonScalarChiefFactor p)
      (XQ2Presentation.Induction.MinimalBlockPreheadInvariantCharacterData
      (Q2Presentation.Induction.sec7RawTowerPacketCanonical chief K).preheadTowerData :
        Q2Presentation.Induction.MinimalBlockPreheadInvariantCharacterDataQ2Presentation.Induction.MinimalBlockPreheadInvariantCharacterData {p : Q2Presentation.Induction.FramedPair}
      {chief : Q2Presentation.Induction.NonScalarChiefFactor p}
      (D : Q2Presentation.Induction.MinimalBlockPreheadTowerData p chief) : PropNonzero invariant determinant characters over a pre-head Section 7 tower.
    
    This is the same Frattini-character input as `MinimalBlockInvariantCharacterData`,
    but stated before `M/T` has been proved nonzero. 
          (Q2Presentation.Induction.sec7RawTowerPacketCanonicalQ2Presentation.Induction.sec7RawTowerPacketCanonical {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Induction.Sec7RawTowerPacket chief KThe canonical raw tower packet — the literal §7 constructors (checkpoint-F9).
    Using this definitional packet (instead of an opaque `Nonempty`-obtained one) lets the
    crux-lowered pushout packet of `Section7PushoutConstruction` be consumed directly. 
              chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).preheadTowerDataQ2Presentation.Induction.Sec7RawTowerPacket.preheadTowerData {p : Q2Presentation.Induction.FramedPair}
      {chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p}
      {K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor}
      (T : Q2Presentation.Induction.Sec7RawTowerPacket chief K) :
      Q2Presentation.Induction.MinimalBlockPreheadTowerData p chief.toNonScalarChiefFactorThe pre-head tower assembled from the packet. )
      (FdetQ2Presentation.Induction.MinimalBlockPreheadExtraspecialEquivariantFamilyData
      (Q2Presentation.Induction.sec7RawTowerPacketCanonical chief K).preheadTowerData :
        Q2Presentation.Induction.MinimalBlockPreheadExtraspecialEquivariantFamilyDataQ2Presentation.Induction.MinimalBlockPreheadExtraspecialEquivariantFamilyData {p : Q2Presentation.Induction.FramedPair}
      {chief : Q2Presentation.Induction.NonScalarChiefFactor p}
      (D : Q2Presentation.Induction.MinimalBlockPreheadTowerData p chief) : TypeEquivariant extraspecial self-duality data over a pre-head tower.
    
    This is now an assembled packet: the bare central-pushout self-duality family and
    its `C`-naturality/diagonal-invariance proof are separated below, then reassembled
    here for the existing downstream pre-head determinant interfaces. 
          (Q2Presentation.Induction.sec7RawTowerPacketCanonicalQ2Presentation.Induction.sec7RawTowerPacketCanonical {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Induction.Sec7RawTowerPacket chief KThe canonical raw tower packet — the literal §7 constructors (checkpoint-F9).
    Using this definitional packet (instead of an opaque `Nonempty`-obtained one) lets the
    crux-lowered pushout packet of `Section7PushoutConstruction` be consumed directly. 
              chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).preheadTowerDataQ2Presentation.Induction.Sec7RawTowerPacket.preheadTowerData {p : Q2Presentation.Induction.FramedPair}
      {chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p}
      {K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor}
      (T : Q2Presentation.Induction.Sec7RawTowerPacket chief K) :
      Q2Presentation.Induction.MinimalBlockPreheadTowerData p chief.toNonScalarChiefFactorThe pre-head tower assembled from the packet. )
      (AQ2Presentation.Induction.MinimalBlockPreheadExtraspecialAnnihilationData Fdet :
        Q2Presentation.Induction.MinimalBlockPreheadExtraspecialAnnihilationDataQ2Presentation.Induction.MinimalBlockPreheadExtraspecialAnnihilationData {p : Q2Presentation.Induction.FramedPair}
      {chief : Q2Presentation.Induction.NonScalarChiefFactor p}
      {D : Q2Presentation.Induction.MinimalBlockPreheadTowerData p chief}
      (F : Q2Presentation.Induction.MinimalBlockPreheadExtraspecialEquivariantFamilyData D) : PropThe two annihilation conclusions of `prop:simpleheaddet`, stated over the
    pre-head equivariant determinant family. 
          FdetQ2Presentation.Induction.MinimalBlockPreheadExtraspecialEquivariantFamilyData
      (Q2Presentation.Induction.sec7RawTowerPacketCanonical chief K).preheadTowerData)
      (RdetQ2Presentation.Induction.MinimalBlockPreheadExtraspecialRadicalData Fdet :
        Q2Presentation.Induction.MinimalBlockPreheadExtraspecialRadicalDataQ2Presentation.Induction.MinimalBlockPreheadExtraspecialRadicalData {p : Q2Presentation.Induction.FramedPair}
      {chief : Q2Presentation.Induction.NonScalarChiefFactor p}
      {D : Q2Presentation.Induction.MinimalBlockPreheadTowerData p chief}
      (F : Q2Presentation.Induction.MinimalBlockPreheadExtraspecialEquivariantFamilyData D) : PropThe polar-radical containment conclusion of `prop:simpleheaddet`, stated before
    the head-nontrivial field is installed. 
          FdetQ2Presentation.Induction.MinimalBlockPreheadExtraspecialEquivariantFamilyData
      (Q2Presentation.Induction.sec7RawTowerPacketCanonical chief K).preheadTowerData)
      (NQ2Presentation.Induction.MinimalBlockPreheadExtraspecialNonzeroData Fdet :
        Q2Presentation.Induction.MinimalBlockPreheadExtraspecialNonzeroDataQ2Presentation.Induction.MinimalBlockPreheadExtraspecialNonzeroData {p : Q2Presentation.Induction.FramedPair}
      {chief : Q2Presentation.Induction.NonScalarChiefFactor p}
      {D : Q2Presentation.Induction.MinimalBlockPreheadTowerData p chief}
      (F : Q2Presentation.Induction.MinimalBlockPreheadExtraspecialEquivariantFamilyData D) : PropThe nonzero diagonal conclusion of `prop:simpleheaddet`, stated before the
    head-nontrivial field is installed. 
          FdetQ2Presentation.Induction.MinimalBlockPreheadExtraspecialEquivariantFamilyData
      (Q2Presentation.Induction.sec7RawTowerPacketCanonical chief K).preheadTowerData)
      (h¬Q2Presentation.Induction.ScalarTerminal p :
        ¬Not (a : Prop) : Prop`Not p`, or `¬p`, is the negation of `p`. It is defined to be `p → False`,
    so if your goal is `¬p` you can use `intro h` to turn the goal into
    `h : p ⊢ False`, and if you have `hn : ¬p` and `h : p` then `hn h : False`
    and `(hn h).elim` will prove anything.
    For more information: [Propositional Logic](https://lean-lang.org/theorem_proving_in_lean4/propositions_and_proofs.html#propositional-logic)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `¬` in identifiers is `not`.Q2Presentation.Induction.ScalarTerminalQ2Presentation.Induction.ScalarTerminal (p : Q2Presentation.Induction.FramedPair) : Prop**Scalar-terminal framed pair.** 
            pQ2Presentation.Induction.FramedPair)
      (chiModule.Dual (ZMod 2) (Q2Presentation.Induction.BlockR.Bstar chief K X Fdet A Rdet N h).obstructionSpace :
        Module.DualModule.Dual.{u_4, u_5} (R : Type u_4) (M : Type u_5) [Semiring R] [AddCommMonoid M] [Module R M] : Type (max u_5 u_4)The left dual space of an R-module M is the R-module of linear maps `M → R`.  (ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2)
          (Q2Presentation.Induction.BlockR.BstarQ2Presentation.Induction.BlockR.Bstar {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (X :
        Q2Presentation.Induction.MinimalBlockPreheadInvariantCharacterData
          (Q2Presentation.Induction.sec7RawTowerPacketCanonical chief K).preheadTowerData)
      (Fdet :
        Q2Presentation.Induction.MinimalBlockPreheadExtraspecialEquivariantFamilyData
          (Q2Presentation.Induction.sec7RawTowerPacketCanonical chief K).preheadTowerData)
      (A : Q2Presentation.Induction.MinimalBlockPreheadExtraspecialAnnihilationData Fdet)
      (Rdet : Q2Presentation.Induction.MinimalBlockPreheadExtraspecialRadicalData Fdet)
      (N : Q2Presentation.Induction.MinimalBlockPreheadExtraspecialNonzeroData Fdet)
      (h : ¬Q2Presentation.Induction.ScalarTerminal p) : Q2Presentation.Induction.MinimalBlock pThe pinned block. 
              chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor XQ2Presentation.Induction.MinimalBlockPreheadInvariantCharacterData
      (Q2Presentation.Induction.sec7RawTowerPacketCanonical chief K).preheadTowerData FdetQ2Presentation.Induction.MinimalBlockPreheadExtraspecialEquivariantFamilyData
      (Q2Presentation.Induction.sec7RawTowerPacketCanonical chief K).preheadTowerData AQ2Presentation.Induction.MinimalBlockPreheadExtraspecialAnnihilationData Fdet RdetQ2Presentation.Induction.MinimalBlockPreheadExtraspecialRadicalData Fdet NQ2Presentation.Induction.MinimalBlockPreheadExtraspecialNonzeroData Fdet
              h¬Q2Presentation.Induction.ScalarTerminal p).obstructionSpaceQ2Presentation.Induction.MinimalBlock.obstructionSpace {p : Q2Presentation.Induction.FramedPair}
      (B : Q2Presentation.Induction.MinimalBlock p) : Type**The `R`-valued obstruction space `W = O_R`** (`prop:finalfourier`).  By
    `lem:obstructionseparation` (l.4213, `𝒳_R = (R^∨)^B = (R^∨)^C` is *canonically the dual of
    the `R`-valued obstruction space*), `O_R = (𝒳_R)^∨`, so `O_R = Module.Dual (ZMod 2) 𝒳_R`.
    This is the finite `𝔽₂` space `FourierBranchData.W` the §8 Fourier branch consumes: the
    `R`-valued lifting obstruction `o_Γ` lands in `O_R`, and its character group
    `Ŵ = Dual O_R ≅ 𝒳_R` is the index of the Fourier sum `eq:recursionR1`. )
      (hchichi ≠ 0 : chiModule.Dual (ZMod 2) (Q2Presentation.Induction.BlockR.Bstar chief K X Fdet A Rdet N h).obstructionSpace Ne.{u} {α : Sort u} (a b : α) : Prop`a ≠ b`, or `Ne a b` is defined as `¬ (a = b)` or `a = b → False`,
    and asserts that `a` and `b` are not equal.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≠` in identifiers is `ne`. 0) :
      Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number.
    If `α` is infinite, `Nat.card α = 0`. 
          {Subtype.{u} {α : Sort u} (p : α → Prop) : Sort (max 1 u)All the elements of a type that satisfy a predicate.
    
    `Subtype p`, usually written `{ x : α // p x }` or `{ x // p x }`, contains all elements `x : α` for
    which `p x` is true. Its constructor is a pair of the value and the proof that it satisfies the
    predicate. In run-time code, `{ x : α // p x }` is represented identically to `α`.
    
    There is a coercion from `{ x : α // p x }` to `α`, so elements of a subtype may be used where the
    underlying type is expected.
    
    Examples:
     * `{ n : Nat // n % 2 = 0 }` is the type of even numbers.
     * `{ xs : Array String // xs.size = 5 }` is the type of arrays with five `String`s.
     * Given `xs : List α`, `List { x : α // x ∈ xs }` is the type of lists in which all elements are
       contained in `xs`.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `{ x // p x }` in identifiers is `subtype`. gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GammaA
      (Q2Presentation.Induction.XRZero.xrChild chief K).fst (Q2Presentation.Induction.XRZero.xrChild chief K).snd //Subtype.{u} {α : Sort u} (p : α → Prop) : Sort (max 1 u)All the elements of a type that satisfy a predicate.
    
    `Subtype p`, usually written `{ x : α // p x }` or `{ x // p x }`, contains all elements `x : α` for
    which `p x` is true. Its constructor is a pair of the value and the proof that it satisfies the
    predicate. In run-time code, `{ x : α // p x }` is represented identically to `α`.
    
    There is a coercion from `{ x : α // p x }` to `α`, so elements of a subtype may be used where the
    underlying type is expected.
    
    Examples:
     * `{ n : Nat // n % 2 = 0 }` is the type of even numbers.
     * `{ xs : Array String // xs.size = 5 }` is the type of arrays with five `String`s.
     * Given `xs : List α`, `List { x : α // x ∈ xs }` is the type of lists in which all elements are
       contained in `xs`.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `{ x // p x }` in identifiers is `subtype`.
            chiModule.Dual (ZMod 2) (Q2Presentation.Induction.BlockR.Bstar chief K X Fdet A Rdet N h).obstructionSpace
                (Q2Presentation.Induction.BlockR.blockObstructionAQ2Presentation.Induction.BlockR.blockObstructionA {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (X :
        Q2Presentation.Induction.MinimalBlockPreheadInvariantCharacterData
          (Q2Presentation.Induction.sec7RawTowerPacketCanonical chief K).preheadTowerData)
      (Fdet :
        Q2Presentation.Induction.MinimalBlockPreheadExtraspecialEquivariantFamilyData
          (Q2Presentation.Induction.sec7RawTowerPacketCanonical chief K).preheadTowerData)
      (A : Q2Presentation.Induction.MinimalBlockPreheadExtraspecialAnnihilationData Fdet)
      (Rdet : Q2Presentation.Induction.MinimalBlockPreheadExtraspecialRadicalData Fdet)
      (N : Q2Presentation.Induction.MinimalBlockPreheadExtraspecialNonzeroData Fdet)
      (h : ¬Q2Presentation.Induction.ScalarTerminal p)
      (g :
        Q2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GammaA
          (Q2Presentation.Induction.XRZero.xrChild chief K).fst (Q2Presentation.Induction.XRZero.xrChild chief K).snd) :
      (Q2Presentation.Induction.BlockR.Bstar chief K X Fdet A Rdet N h).obstructionSpace**The canonical candidate obstruction in block spelling**: the
    `XRObstruction` defect pairing, transported along
    `blockXR_eq_conjInvDuals`. 
                  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor XQ2Presentation.Induction.MinimalBlockPreheadInvariantCharacterData
      (Q2Presentation.Induction.sec7RawTowerPacketCanonical chief K).preheadTowerData FdetQ2Presentation.Induction.MinimalBlockPreheadExtraspecialEquivariantFamilyData
      (Q2Presentation.Induction.sec7RawTowerPacketCanonical chief K).preheadTowerData AQ2Presentation.Induction.MinimalBlockPreheadExtraspecialAnnihilationData Fdet RdetQ2Presentation.Induction.MinimalBlockPreheadExtraspecialRadicalData Fdet NQ2Presentation.Induction.MinimalBlockPreheadExtraspecialNonzeroData Fdet h¬Q2Presentation.Induction.ScalarTerminal p
                  gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GammaA
      (Q2Presentation.Induction.XRZero.xrChild chief K).fst (Q2Presentation.Induction.XRZero.xrChild chief K).snd) =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`.
              0 }Subtype.{u} {α : Sort u} (p : α → Prop) : Sort (max 1 u)All the elements of a type that satisfy a predicate.
    
    `Subtype p`, usually written `{ x : α // p x }` or `{ x // p x }`, contains all elements `x : α` for
    which `p x` is true. Its constructor is a pair of the value and the proof that it satisfies the
    predicate. In run-time code, `{ x : α // p x }` is represented identically to `α`.
    
    There is a coercion from `{ x : α // p x }` to `α`, so elements of a subtype may be used where the
    underlying type is expected.
    
    Examples:
     * `{ n : Nat // n % 2 = 0 }` is the type of even numbers.
     * `{ xs : Array String // xs.size = 5 }` is the type of arrays with five `String`s.
     * Given `xs : List α`, `List { x : α // x ∈ xs }` is the type of lists in which all elements are
       contained in `xs`.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `{ x // p x }` in identifiers is `subtype`. =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`.
        Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number.
    If `α` is infinite, `Nat.card α = 0`. 
          {Subtype.{u} {α : Sort u} (p : α → Prop) : Sort (max 1 u)All the elements of a type that satisfy a predicate.
    
    `Subtype p`, usually written `{ x : α // p x }` or `{ x // p x }`, contains all elements `x : α` for
    which `p x` is true. Its constructor is a pair of the value and the proof that it satisfies the
    predicate. In run-time code, `{ x : α // p x }` is represented identically to `α`.
    
    There is a coercion from `{ x : α // p x }` to `α`, so elements of a subtype may be used where the
    underlying type is expected.
    
    Examples:
     * `{ n : Nat // n % 2 = 0 }` is the type of even numbers.
     * `{ xs : Array String // xs.size = 5 }` is the type of arrays with five `String`s.
     * Given `xs : List α`, `List { x : α // x ∈ xs }` is the type of lists in which all elements are
       contained in `xs`.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `{ x // p x }` in identifiers is `subtype`. gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GammaA
      (Q2Presentation.Induction.XRZero.xrChild chief K).fst (Q2Presentation.Induction.XRZero.xrChild chief K).snd //Subtype.{u} {α : Sort u} (p : α → Prop) : Sort (max 1 u)All the elements of a type that satisfy a predicate.
    
    `Subtype p`, usually written `{ x : α // p x }` or `{ x // p x }`, contains all elements `x : α` for
    which `p x` is true. Its constructor is a pair of the value and the proof that it satisfies the
    predicate. In run-time code, `{ x : α // p x }` is represented identically to `α`.
    
    There is a coercion from `{ x : α // p x }` to `α`, so elements of a subtype may be used where the
    underlying type is expected.
    
    Examples:
     * `{ n : Nat // n % 2 = 0 }` is the type of even numbers.
     * `{ xs : Array String // xs.size = 5 }` is the type of arrays with five `String`s.
     * Given `xs : List α`, `List { x : α // x ∈ xs }` is the type of lists in which all elements are
       contained in `xs`.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `{ x // p x }` in identifiers is `subtype`.
            NonemptyNonempty.{u} (α : Sort u) : Prop`Nonempty α` is a typeclass that says that `α` is not an empty type,
    that is, there exists an element in the type. It differs from `Inhabited α`
    in that `Nonempty α` is a `Prop`, which means that it does not actually carry
    an element of `α`, only a proof that *there exists* such an element.
    Given `Nonempty α`, you can construct an element of `α` *nonconstructively*
    using `Classical.choice`.
    
              (Q2Presentation.Lifting.scalarCoverLiftHomQ2Presentation.Lifting.scalarCoverLiftHom {Yt : Q2Presentation.BoundaryFramedTarget} [Finite Yt.Y]
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals E) {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ)
      (F : Q2Presentation.BoundaryFrame Yt)
      (g :
        Q2Presentation.boundaryFramedSurj B (Q2Presentation.TorsorProgram.quotientFramedTarget Yt E.N ⋯ ⋯)
          (Q2Presentation.TorsorProgram.quotientFrame Yt E.N ⋯ ⋯ F)) :
      Type**Cover lifts of `g`** (`lem:obstructionseparation` l.4219–4223):
    framed homs `Γ ⟶ B_λ` over `g` — surjectivity NOT imposed (the
    manuscript's compatible lifts: `λ_*o` measures weak liftability; images
    are stratified by `eq:recursionR2`/`R3` later). 
                (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian. 
                  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
                (Q2Presentation.Induction.BlockR.blockCharDualQ2Presentation.Induction.BlockR.blockCharDual {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (X :
        Q2Presentation.Induction.MinimalBlockPreheadInvariantCharacterData
          (Q2Presentation.Induction.sec7RawTowerPacketCanonical chief K).preheadTowerData)
      (Fdet :
        Q2Presentation.Induction.MinimalBlockPreheadExtraspecialEquivariantFamilyData
          (Q2Presentation.Induction.sec7RawTowerPacketCanonical chief K).preheadTowerData)
      (A : Q2Presentation.Induction.MinimalBlockPreheadExtraspecialAnnihilationData Fdet)
      (Rdet : Q2Presentation.Induction.MinimalBlockPreheadExtraspecialRadicalData Fdet)
      (N : Q2Presentation.Induction.MinimalBlockPreheadExtraspecialNonzeroData Fdet)
      (h : ¬Q2Presentation.Induction.ScalarTerminal p)
      (chi : Module.Dual (ZMod 2) (Q2Presentation.Induction.BlockR.Bstar chief K X Fdet A Rdet N h).obstructionSpace) :
      ↥(Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K))**The invariant dual attached to a character** of the block
    obstruction space: double-dual reflexivity (`Module.evalEquiv` at the
    finite `𝔽₂` space `𝒳_R`) followed by the `blockXR_eq_conjInvDuals`
    transport — the χ ↔ λ leg of `lem:obstructionseparation`. 
                    chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor XQ2Presentation.Induction.MinimalBlockPreheadInvariantCharacterData
      (Q2Presentation.Induction.sec7RawTowerPacketCanonical chief K).preheadTowerData FdetQ2Presentation.Induction.MinimalBlockPreheadExtraspecialEquivariantFamilyData
      (Q2Presentation.Induction.sec7RawTowerPacketCanonical chief K).preheadTowerData AQ2Presentation.Induction.MinimalBlockPreheadExtraspecialAnnihilationData Fdet RdetQ2Presentation.Induction.MinimalBlockPreheadExtraspecialRadicalData Fdet NQ2Presentation.Induction.MinimalBlockPreheadExtraspecialNonzeroData Fdet h¬Q2Presentation.Induction.ScalarTerminal p
                    chiModule.Dual (ZMod 2) (Q2Presentation.Induction.BlockR.Bstar chief K X Fdet A Rdet N h).obstructionSpace)
                
                Q2Presentation.boundaryPackage_GammaAQ2Presentation.boundaryPackage_GammaA : Q2Presentation.BoundaryPackage Q2Presentation.GammaA**The candidate boundary package** (manuscript Prop 3.14, `prop:compatiblemarking`;
    plan Turn 4 §6).  The Stage-C data of `Γ_A`: the common tame quotient `gammaTameMap`,
    the maximal pro-`2` quotient `p : Γ_A ⟶ Π`, and the common unramified character
    `ν = gammaTameMap ≫ ν_t`, through which both factor. 
                pQ2Presentation.Induction.FramedPair.sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.
     gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GammaA
      (Q2Presentation.Induction.XRZero.xrChild chief K).fst (Q2Presentation.Induction.XRZero.xrChild chief K).snd) }Subtype.{u} {α : Sort u} (p : α → Prop) : Sort (max 1 u)All the elements of a type that satisfy a predicate.
    
    `Subtype p`, usually written `{ x : α // p x }` or `{ x // p x }`, contains all elements `x : α` for
    which `p x` is true. Its constructor is a pair of the value and the proof that it satisfies the
    predicate. In run-time code, `{ x : α // p x }` is represented identically to `α`.
    
    There is a coercion from `{ x : α // p x }` to `α`, so elements of a subtype may be used where the
    underlying type is expected.
    
    Examples:
     * `{ n : Nat // n % 2 = 0 }` is the type of even numbers.
     * `{ xs : Array String // xs.size = 5 }` is the type of arrays with five `String`s.
     * Given `xs : List α`, `List { x : α // x ∈ xs }` is the type of lists in which all elements are
       contained in `xs`.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `{ x // p x }` in identifiers is `subtype`.
    **Candidate per-character fibres are cover-lift counts**
    (`lem:obstructionseparation`, candidate half, at `λ := blockCharDual χ`):
    for `χ ≠ 0` the χ-fibre of the canonical candidate obstruction is the
    set of child maps that weakly lift through `B_λ`. 
  • declaration not found (name was not present during directive/code-block registration)
  • theoremdefined in Q2Presentation/Induction/CandidateScalarFrattiniRoute41Proofs.lean
    complete
    theorem Q2Presentation.Induction.centralCover_candidateMiddleRLiftObstructionMapData_from_scalarFrattiniRoute41
      {pQ2Presentation.Induction.FramedPair : Q2Presentation.Induction.FramedPairQ2Presentation.Induction.FramedPair : Type 1A **framed pair** `(𝒴, F)`: a boundary-framed marked target together with a
    boundary frame for it (manuscript Definition 4.1 + `eq:beta`).  This is the index of
    Theorem 4.2: the boundary-framed surjection count `e_Γ^β` is a function of the pair.
    The induction of `sec:induction` ranges over *all* such pairs simultaneously
    ("the induction is stated globally", l.1213), ordered by `|L_Y|`. }
      (BQ2Presentation.Induction.MinimalBlock p : Q2Presentation.Induction.MinimalBlockQ2Presentation.Induction.MinimalBlock (p : Q2Presentation.Induction.FramedPair) : Type 1**The §7 minimal non-scalar block.**  Source-uniform module-level data of the
    manuscript tower (`eq:targettower`), with the deep group/representation inputs of
    `lem:simplehead`/`lem:collapse`/`prop:simpleheaddet` isolated as documented fields.  pQ2Presentation.Induction.FramedPair)
      (TQ2Presentation.Induction.CentralCoverElementaryQuotientTowerData B :
        Q2Presentation.Induction.CentralCoverElementaryQuotientTowerDataQ2Presentation.Induction.CentralCoverElementaryQuotientTowerData {p : Q2Presentation.Induction.FramedPair}
      (B : Q2Presentation.Induction.MinimalBlock p) : Type 1A realized elementary quotient tower for `eq:targettower`.
    
    This is the missing target-side finite group datum behind the lower term in
    `eq:Mstage`: the middle quotient `B = Y/R`, the lower quotient `C = Y/K`, and the
    map `B -> C`.  The cardinal equations record the two quotient steps in a form
    that proves strict decrease.
    
    The current `MinimalBlock` supplies the abstract modules, but not this realized
    quotient tower. 
          BQ2Presentation.Induction.MinimalBlock p) :
      NonemptyNonempty.{u} (α : Sort u) : Prop`Nonempty α` is a typeclass that says that `α` is not an empty type,
    that is, there exists an element in the type. It differs from `Inhabited α`
    in that `Nonempty α` is a `Prop`, which means that it does not actually carry
    an element of `α`, only a proof that *there exists* such an element.
    Given `Nonempty α`, you can construct an element of `α` *nonconstructively*
    using `Classical.choice`.
    
        (Q2Presentation.Induction.CentralCoverCandidateMiddleRLiftObstructionMapDataQ2Presentation.Induction.CentralCoverCandidateMiddleRLiftObstructionMapData {p : Q2Presentation.Induction.FramedPair}
      (B : Q2Presentation.Induction.MinimalBlock p)
      (T : Q2Presentation.Induction.CentralCoverElementaryQuotientTowerData B) : TypeCandidate `R`-lift obstruction map on the canonical middle exact-image
    index.
    
    The index is theorem-level:
    `centralCover_candidateMiddleExactImageIndexBaseData B T` is the finite set of
    middle boundary-framed exact-image maps (`def:Xgamma`).  The residual content is
    only the semantic `R`-valued obstruction evaluation of
    `lem:obstructionseparation` on that index. 
          BQ2Presentation.Induction.MinimalBlock p TQ2Presentation.Induction.CentralCoverElementaryQuotientTowerData B)
    theorem Q2Presentation.Induction.centralCover_candidateMiddleRLiftObstructionMapData_from_scalarFrattiniRoute41
      {pQ2Presentation.Induction.FramedPair :
        Q2Presentation.Induction.FramedPairQ2Presentation.Induction.FramedPair : Type 1A **framed pair** `(𝒴, F)`: a boundary-framed marked target together with a
    boundary frame for it (manuscript Definition 4.1 + `eq:beta`).  This is the index of
    Theorem 4.2: the boundary-framed surjection count `e_Γ^β` is a function of the pair.
    The induction of `sec:induction` ranges over *all* such pairs simultaneously
    ("the induction is stated globally", l.1213), ordered by `|L_Y|`. }
      (BQ2Presentation.Induction.MinimalBlock p :
        Q2Presentation.Induction.MinimalBlockQ2Presentation.Induction.MinimalBlock (p : Q2Presentation.Induction.FramedPair) : Type 1**The §7 minimal non-scalar block.**  Source-uniform module-level data of the
    manuscript tower (`eq:targettower`), with the deep group/representation inputs of
    `lem:simplehead`/`lem:collapse`/`prop:simpleheaddet` isolated as documented fields. 
          pQ2Presentation.Induction.FramedPair)
      (TQ2Presentation.Induction.CentralCoverElementaryQuotientTowerData B :
        Q2Presentation.Induction.CentralCoverElementaryQuotientTowerDataQ2Presentation.Induction.CentralCoverElementaryQuotientTowerData {p : Q2Presentation.Induction.FramedPair}
      (B : Q2Presentation.Induction.MinimalBlock p) : Type 1A realized elementary quotient tower for `eq:targettower`.
    
    This is the missing target-side finite group datum behind the lower term in
    `eq:Mstage`: the middle quotient `B = Y/R`, the lower quotient `C = Y/K`, and the
    map `B -> C`.  The cardinal equations record the two quotient steps in a form
    that proves strict decrease.
    
    The current `MinimalBlock` supplies the abstract modules, but not this realized
    quotient tower. 
          BQ2Presentation.Induction.MinimalBlock p) :
      NonemptyNonempty.{u} (α : Sort u) : Prop`Nonempty α` is a typeclass that says that `α` is not an empty type,
    that is, there exists an element in the type. It differs from `Inhabited α`
    in that `Nonempty α` is a `Prop`, which means that it does not actually carry
    an element of `α`, only a proof that *there exists* such an element.
    Given `Nonempty α`, you can construct an element of `α` *nonconstructively*
    using `Classical.choice`.
    
        (Q2Presentation.Induction.CentralCoverCandidateMiddleRLiftObstructionMapDataQ2Presentation.Induction.CentralCoverCandidateMiddleRLiftObstructionMapData {p : Q2Presentation.Induction.FramedPair}
      (B : Q2Presentation.Induction.MinimalBlock p)
      (T : Q2Presentation.Induction.CentralCoverElementaryQuotientTowerData B) : TypeCandidate `R`-lift obstruction map on the canonical middle exact-image
    index.
    
    The index is theorem-level:
    `centralCover_candidateMiddleExactImageIndexBaseData B T` is the finite set of
    middle boundary-framed exact-image maps (`def:Xgamma`).  The residual content is
    only the semantic `R`-valued obstruction evaluation of
    `lem:obstructionseparation` on that index. 
          BQ2Presentation.Induction.MinimalBlock p TQ2Presentation.Induction.CentralCoverElementaryQuotientTowerData B)
    Route41 middle `R`-lift obstruction map through the pointwise scalar-pushout
    actual closer packets.
    
    Manuscript anchor: Section 8, pages 45--47,
    `lem:obstructionseparation` separates the `R`-valued obstruction by invariant
    scalar pushouts; the actual closer API records the value of each scalar test
    and its linearity in the invariant character. 
  • defdefined in Q2Presentation/Induction/MinimalBlock.lean
    complete
    def Q2Presentation.Induction.MinimalBlock.XR
      {pQ2Presentation.Induction.FramedPair : Q2Presentation.Induction.FramedPairQ2Presentation.Induction.FramedPair : Type 1A **framed pair** `(𝒴, F)`: a boundary-framed marked target together with a
    boundary frame for it (manuscript Definition 4.1 + `eq:beta`).  This is the index of
    Theorem 4.2: the boundary-framed surjection count `e_Γ^β` is a function of the pair.
    The induction of `sec:induction` ranges over *all* such pairs simultaneously
    ("the induction is stated globally", l.1213), ordered by `|L_Y|`. }
      (BQ2Presentation.Induction.MinimalBlock p : Q2Presentation.Induction.MinimalBlockQ2Presentation.Induction.MinimalBlock (p : Q2Presentation.Induction.FramedPair) : Type 1**The §7 minimal non-scalar block.**  Source-uniform module-level data of the
    manuscript tower (`eq:targettower`), with the deep group/representation inputs of
    `lem:simplehead`/`lem:collapse`/`prop:simpleheaddet` isolated as documented fields.  pQ2Presentation.Induction.FramedPair) :
      SubmoduleSubmodule.{u, v} (R : Type u) (M : Type v) [Semiring R] [AddCommMonoid M] [Module R M] : Type vA submodule of a module is one which is closed under vector operations.
    This is a sufficient condition for the subset of vectors in the submodule
    to themselves form a module.  (ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2) (Module.DualModule.Dual.{u_4, u_5} (R : Type u_4) (M : Type u_5) [Semiring R] [AddCommMonoid M] [Module R M] : Type (max u_5 u_4)The left dual space of an R-module M is the R-module of linear maps `M → R`.  (ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2) BQ2Presentation.Induction.MinimalBlock p.RQ2Presentation.Induction.MinimalBlock.R {p : Q2Presentation.Induction.FramedPair}
      (self : Q2Presentation.Induction.MinimalBlock p) : TypeThe central elementary-abelian Frattini quotient `R = Φ(K)` (`lem:collapse`: an
    `𝔽₂`-vector space, since `R` is central of exponent `2` in `K`). )
    def Q2Presentation.Induction.MinimalBlock.XR
      {pQ2Presentation.Induction.FramedPair :
        Q2Presentation.Induction.FramedPairQ2Presentation.Induction.FramedPair : Type 1A **framed pair** `(𝒴, F)`: a boundary-framed marked target together with a
    boundary frame for it (manuscript Definition 4.1 + `eq:beta`).  This is the index of
    Theorem 4.2: the boundary-framed surjection count `e_Γ^β` is a function of the pair.
    The induction of `sec:induction` ranges over *all* such pairs simultaneously
    ("the induction is stated globally", l.1213), ordered by `|L_Y|`. }
      (BQ2Presentation.Induction.MinimalBlock p :
        Q2Presentation.Induction.MinimalBlockQ2Presentation.Induction.MinimalBlock (p : Q2Presentation.Induction.FramedPair) : Type 1**The §7 minimal non-scalar block.**  Source-uniform module-level data of the
    manuscript tower (`eq:targettower`), with the deep group/representation inputs of
    `lem:simplehead`/`lem:collapse`/`prop:simpleheaddet` isolated as documented fields. 
          pQ2Presentation.Induction.FramedPair) :
      SubmoduleSubmodule.{u, v} (R : Type u) (M : Type v) [Semiring R] [AddCommMonoid M] [Module R M] : Type vA submodule of a module is one which is closed under vector operations.
    This is a sufficient condition for the subset of vectors in the submodule
    to themselves form a module.  (ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2)
        (Module.DualModule.Dual.{u_4, u_5} (R : Type u_4) (M : Type u_5) [Semiring R] [AddCommMonoid M] [Module R M] : Type (max u_5 u_4)The left dual space of an R-module M is the R-module of linear maps `M → R`.  (ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2) BQ2Presentation.Induction.MinimalBlock p.RQ2Presentation.Induction.MinimalBlock.R {p : Q2Presentation.Induction.FramedPair}
      (self : Q2Presentation.Induction.MinimalBlock p) : TypeThe central elementary-abelian Frattini quotient `R = Φ(K)` (`lem:collapse`: an
    `𝔽₂`-vector space, since `R` is central of exponent `2` in `K`). )
    **The determinant character space `𝒳_R = (R^∨)^C`** (manuscript l.3722/l.4211:
    `𝒳_R = (R^∨)^B = (R^∨)^C`): the `C`-invariants of the dual of `R`, cut out as a genuine
    `𝔽₂`-submodule of `Module.Dual (ZMod 2) R`.  By `lem:obstructionseparation` (l.4213) this
    is canonically `Ŵ`, the **character group of the obstruction space** `O_R = obstructionSpace`;
    `prop:simpleheaddet` and the §8 Fourier inversion both range over `0 ≠ λ ∈ 𝒳_R` (= `↥XR`). 
  • defdefined in Q2Presentation/Induction/XRObstruction.lean
    complete
    def Q2Presentation.Induction.xrObstructionDual
      {pQ2Presentation.Induction.FramedPair : Q2Presentation.Induction.FramedPairQ2Presentation.Induction.FramedPair : Type 1A **framed pair** `(𝒴, F)`: a boundary-framed marked target together with a
    boundary frame for it (manuscript Definition 4.1 + `eq:beta`).  This is the index of
    Theorem 4.2: the boundary-framed surjection count `e_Γ^β` is a function of the pair.
    The induction of `sec:induction` ranges over *all* such pairs simultaneously
    ("the induction is stated globally", l.1213), ordered by `|L_Y|`. }
      (chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p : Q2Presentation.Induction.FirstNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor (p : Q2Presentation.Induction.FramedPair) : TypeA non-scalar chief factor of `L_Y` that is **first**: every chief factor strictly
    below it (i.e. with upper term contained in `lower`) is scalar.  This is the manuscript's
    choice `S ◁ P` at l.3616–3623 ("all chief factors below `S` are scalar and `V` is the
    first non-scalar simple factor"), which `lem:collapse` requires for the coprime step
    `[S, Ñ] = 1`.  pQ2Presentation.Induction.FramedPair)
      (KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor :
        Q2Presentation.Induction.KernelMinimalQ2Presentation.Induction.KernelMinimal {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.NonScalarChiefFactor p) : TypeThe manuscript's kernel choice (l.3623): `K ◁ Y`, `K ≤ P`, `KS = P`, and `K` is
    **⊆-minimal** with these properties — stated as: any `Y`-normal `K' ≤ K` still joining
    with `S` to `P` equals `K`.  (This, not leastness among all candidates, is what
    `lem:simplehead` and `lem:collapse` use: both apply it to subgroups of `K`.)  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p.toNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor.toNonScalarChiefFactor {p : Q2Presentation.Induction.FramedPair}
      (self : Q2Presentation.Induction.FirstNonScalarChiefFactor p) : Q2Presentation.Induction.NonScalarChiefFactor p)
      (gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GammaA
      (Q2Presentation.TorsorProgram.quotientFramedTarget p.fst (Q2Presentation.Induction.xrKernel chief K).N ⋯ ⋯)
      (Q2Presentation.TorsorProgram.quotientFrame p.fst (Q2Presentation.Induction.xrKernel chief K).N ⋯ ⋯ p.snd) :
        Q2Presentation.boundaryFramedSurjQ2Presentation.boundaryFramedSurj {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ)
      (Yt : Q2Presentation.BoundaryFramedTarget) (F : Q2Presentation.BoundaryFrame Yt) : TypeThe **boundary-framed surjections** `e_Γ^β(𝒴)` (manuscript `eq:eGamma`): the
    continuous surjections `f : Γ ↠ Y` whose induced map to `H × E` is the prescribed
    `β ∘ b_Γ`, i.e. `q_Y ∘ f = β ∘ b_Γ`.  This is the subtype counted in Theorem 4.2;
    its cardinality is `e_Γ^β(𝒴)`. 
          Q2Presentation.boundaryPackage_GammaAQ2Presentation.boundaryPackage_GammaA : Q2Presentation.BoundaryPackage Q2Presentation.GammaA**The candidate boundary package** (manuscript Prop 3.14, `prop:compatiblemarking`;
    plan Turn 4 §6).  The Stage-C data of `Γ_A`: the common tame quotient `gammaTameMap`,
    the maximal pro-`2` quotient `p : Γ_A ⟶ Π`, and the common unramified character
    `ν = gammaTameMap ≫ ν_t`, through which both factor. 
          (Q2Presentation.TorsorProgram.quotientFramedTargetQ2Presentation.TorsorProgram.quotientFramedTarget (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y)
      [hNn : N.Normal] (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) : Q2Presentation.BoundaryFramedTarget**The quotient framed target** `Y/N` (same `H`, same `E`, image wild kernel).  pQ2Presentation.Induction.FramedPair.fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.
    
            (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).NQ2Presentation.Lifting.ElementaryKernel.N {Yt : Q2Presentation.BoundaryFramedTarget}
      (self : Q2Presentation.Lifting.ElementaryKernel Yt) : Subgroup Yt.Y  )
          (Q2Presentation.TorsorProgram.quotientFrameQ2Presentation.TorsorProgram.quotientFrame (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y)
      [hNn : N.Normal] (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) (F : Q2Presentation.BoundaryFrame Yt) :
      Q2Presentation.BoundaryFrame (Q2Presentation.TorsorProgram.quotientFramedTarget Yt N hNLY hNθ)The frame transports verbatim (`H`, `E`, `α`, `ψ`, `β` unchanged).  pQ2Presentation.Induction.FramedPair.fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.
    
            (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).NQ2Presentation.Lifting.ElementaryKernel.N {Yt : Q2Presentation.BoundaryFramedTarget}
      (self : Q2Presentation.Lifting.ElementaryKernel Yt) : Subgroup Yt.Y   pQ2Presentation.Induction.FramedPair.sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.
    )) :
      Module.DualModule.Dual.{u_4, u_5} (R : Type u_4) (M : Type u_5) [Semiring R] [AddCommMonoid M] [Module R M] : Type (max u_5 u_4)The left dual space of an R-module M is the R-module of linear maps `M → R`.  (ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2)
        (Q2Presentation.Lifting.conjInvDualsQ2Presentation.Lifting.conjInvDuals {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) :
      Submodule (ZMod 2) (Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E))The conjugation-invariant duals `X = (R^∨)^Y = (R^∨)^C` of an
    elementary kernel (consumer spelling of the manuscript's `𝒳_R`,
    §7 l.3720–3723). 
            (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor))
    def Q2Presentation.Induction.xrObstructionDual
      {pQ2Presentation.Induction.FramedPair :
        Q2Presentation.Induction.FramedPairQ2Presentation.Induction.FramedPair : Type 1A **framed pair** `(𝒴, F)`: a boundary-framed marked target together with a
    boundary frame for it (manuscript Definition 4.1 + `eq:beta`).  This is the index of
    Theorem 4.2: the boundary-framed surjection count `e_Γ^β` is a function of the pair.
    The induction of `sec:induction` ranges over *all* such pairs simultaneously
    ("the induction is stated globally", l.1213), ordered by `|L_Y|`. }
      (chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p :
        Q2Presentation.Induction.FirstNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor (p : Q2Presentation.Induction.FramedPair) : TypeA non-scalar chief factor of `L_Y` that is **first**: every chief factor strictly
    below it (i.e. with upper term contained in `lower`) is scalar.  This is the manuscript's
    choice `S ◁ P` at l.3616–3623 ("all chief factors below `S` are scalar and `V` is the
    first non-scalar simple factor"), which `lem:collapse` requires for the coprime step
    `[S, Ñ] = 1`. 
          pQ2Presentation.Induction.FramedPair)
      (KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor :
        Q2Presentation.Induction.KernelMinimalQ2Presentation.Induction.KernelMinimal {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.NonScalarChiefFactor p) : TypeThe manuscript's kernel choice (l.3623): `K ◁ Y`, `K ≤ P`, `KS = P`, and `K` is
    **⊆-minimal** with these properties — stated as: any `Y`-normal `K' ≤ K` still joining
    with `S` to `P` equals `K`.  (This, not leastness among all candidates, is what
    `lem:simplehead` and `lem:collapse` use: both apply it to subgroups of `K`.) 
          chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p.toNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor.toNonScalarChiefFactor {p : Q2Presentation.Induction.FramedPair}
      (self : Q2Presentation.Induction.FirstNonScalarChiefFactor p) : Q2Presentation.Induction.NonScalarChiefFactor p)
      (gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GammaA
      (Q2Presentation.TorsorProgram.quotientFramedTarget p.fst (Q2Presentation.Induction.xrKernel chief K).N ⋯ ⋯)
      (Q2Presentation.TorsorProgram.quotientFrame p.fst (Q2Presentation.Induction.xrKernel chief K).N ⋯ ⋯ p.snd) :
        Q2Presentation.boundaryFramedSurjQ2Presentation.boundaryFramedSurj {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ)
      (Yt : Q2Presentation.BoundaryFramedTarget) (F : Q2Presentation.BoundaryFrame Yt) : TypeThe **boundary-framed surjections** `e_Γ^β(𝒴)` (manuscript `eq:eGamma`): the
    continuous surjections `f : Γ ↠ Y` whose induced map to `H × E` is the prescribed
    `β ∘ b_Γ`, i.e. `q_Y ∘ f = β ∘ b_Γ`.  This is the subtype counted in Theorem 4.2;
    its cardinality is `e_Γ^β(𝒴)`. 
          Q2Presentation.boundaryPackage_GammaAQ2Presentation.boundaryPackage_GammaA : Q2Presentation.BoundaryPackage Q2Presentation.GammaA**The candidate boundary package** (manuscript Prop 3.14, `prop:compatiblemarking`;
    plan Turn 4 §6).  The Stage-C data of `Γ_A`: the common tame quotient `gammaTameMap`,
    the maximal pro-`2` quotient `p : Γ_A ⟶ Π`, and the common unramified character
    `ν = gammaTameMap ≫ ν_t`, through which both factor. 
          (Q2Presentation.TorsorProgram.quotientFramedTargetQ2Presentation.TorsorProgram.quotientFramedTarget (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y)
      [hNn : N.Normal] (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) : Q2Presentation.BoundaryFramedTarget**The quotient framed target** `Y/N` (same `H`, same `E`, image wild kernel). 
            pQ2Presentation.Induction.FramedPair.fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.
    
            (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian. 
                chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).NQ2Presentation.Lifting.ElementaryKernel.N {Yt : Q2Presentation.BoundaryFramedTarget}
      (self : Q2Presentation.Lifting.ElementaryKernel Yt) : Subgroup Yt.Y
             )
          (Q2Presentation.TorsorProgram.quotientFrameQ2Presentation.TorsorProgram.quotientFrame (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y)
      [hNn : N.Normal] (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) (F : Q2Presentation.BoundaryFrame Yt) :
      Q2Presentation.BoundaryFrame (Q2Presentation.TorsorProgram.quotientFramedTarget Yt N hNLY hNθ)The frame transports verbatim (`H`, `E`, `α`, `ψ`, `β` unchanged). 
            pQ2Presentation.Induction.FramedPair.fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.
    
            (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian. 
                chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).NQ2Presentation.Lifting.ElementaryKernel.N {Yt : Q2Presentation.BoundaryFramedTarget}
      (self : Q2Presentation.Lifting.ElementaryKernel Yt) : Subgroup Yt.Y
              pQ2Presentation.Induction.FramedPair.sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.
    )) :
      Module.DualModule.Dual.{u_4, u_5} (R : Type u_4) (M : Type u_5) [Semiring R] [AddCommMonoid M] [Module R M] : Type (max u_5 u_4)The left dual space of an R-module M is the R-module of linear maps `M → R`.  (ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2)
        (Q2Presentation.Lifting.conjInvDualsQ2Presentation.Lifting.conjInvDuals {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) :
      Submodule (ZMod 2) (Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E))The conjugation-invariant duals `X = (R^∨)^Y = (R^∨)^C` of an
    elementary kernel (consumer spelling of the manuscript's `𝒳_R`,
    §7 l.3720–3723). 
            (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian. 
              chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor))
    **The canonical candidate obstruction**, valued in the dual of the
    invariant duals (`lem:obstructionseparation`): pair the base-marking
    defect sum against `𝒳_R`. 
  • theoremdefined in Q2Presentation/Induction/XRScalarCover.lean
    complete
    theorem Q2Presentation.Induction.xrObstructionDual_scalar_eq_zero_iff
      {pQ2Presentation.Induction.FramedPair : Q2Presentation.Induction.FramedPairQ2Presentation.Induction.FramedPair : Type 1A **framed pair** `(𝒴, F)`: a boundary-framed marked target together with a
    boundary frame for it (manuscript Definition 4.1 + `eq:beta`).  This is the index of
    Theorem 4.2: the boundary-framed surjection count `e_Γ^β` is a function of the pair.
    The induction of `sec:induction` ranges over *all* such pairs simultaneously
    ("the induction is stated globally", l.1213), ordered by `|L_Y|`. }
      (chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p : Q2Presentation.Induction.FirstNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor (p : Q2Presentation.Induction.FramedPair) : TypeA non-scalar chief factor of `L_Y` that is **first**: every chief factor strictly
    below it (i.e. with upper term contained in `lower`) is scalar.  This is the manuscript's
    choice `S ◁ P` at l.3616–3623 ("all chief factors below `S` are scalar and `V` is the
    first non-scalar simple factor"), which `lem:collapse` requires for the coprime step
    `[S, Ñ] = 1`.  pQ2Presentation.Induction.FramedPair)
      (KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor :
        Q2Presentation.Induction.KernelMinimalQ2Presentation.Induction.KernelMinimal {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.NonScalarChiefFactor p) : TypeThe manuscript's kernel choice (l.3623): `K ◁ Y`, `K ≤ P`, `KS = P`, and `K` is
    **⊆-minimal** with these properties — stated as: any `Y`-normal `K' ≤ K` still joining
    with `S` to `P` equals `K`.  (This, not leastness among all candidates, is what
    `lem:simplehead` and `lem:collapse` use: both apply it to subgroups of `K`.)  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p.toNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor.toNonScalarChiefFactor {p : Q2Presentation.Induction.FramedPair}
      (self : Q2Presentation.Induction.FirstNonScalarChiefFactor p) : Q2Presentation.Induction.NonScalarChiefFactor p)
      (gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GammaA
      (Q2Presentation.TorsorProgram.quotientFramedTarget p.fst (Q2Presentation.Induction.xrKernel chief K).N ⋯ ⋯)
      (Q2Presentation.TorsorProgram.quotientFrame p.fst (Q2Presentation.Induction.xrKernel chief K).N ⋯ ⋯ p.snd) :
        Q2Presentation.boundaryFramedSurjQ2Presentation.boundaryFramedSurj {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ)
      (Yt : Q2Presentation.BoundaryFramedTarget) (F : Q2Presentation.BoundaryFrame Yt) : TypeThe **boundary-framed surjections** `e_Γ^β(𝒴)` (manuscript `eq:eGamma`): the
    continuous surjections `f : Γ ↠ Y` whose induced map to `H × E` is the prescribed
    `β ∘ b_Γ`, i.e. `q_Y ∘ f = β ∘ b_Γ`.  This is the subtype counted in Theorem 4.2;
    its cardinality is `e_Γ^β(𝒴)`. 
          Q2Presentation.boundaryPackage_GammaAQ2Presentation.boundaryPackage_GammaA : Q2Presentation.BoundaryPackage Q2Presentation.GammaA**The candidate boundary package** (manuscript Prop 3.14, `prop:compatiblemarking`;
    plan Turn 4 §6).  The Stage-C data of `Γ_A`: the common tame quotient `gammaTameMap`,
    the maximal pro-`2` quotient `p : Γ_A ⟶ Π`, and the common unramified character
    `ν = gammaTameMap ≫ ν_t`, through which both factor. 
          (Q2Presentation.TorsorProgram.quotientFramedTargetQ2Presentation.TorsorProgram.quotientFramedTarget (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y)
      [hNn : N.Normal] (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) : Q2Presentation.BoundaryFramedTarget**The quotient framed target** `Y/N` (same `H`, same `E`, image wild kernel).  pQ2Presentation.Induction.FramedPair.fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.
    
            (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).NQ2Presentation.Lifting.ElementaryKernel.N {Yt : Q2Presentation.BoundaryFramedTarget}
      (self : Q2Presentation.Lifting.ElementaryKernel Yt) : Subgroup Yt.Y  )
          (Q2Presentation.TorsorProgram.quotientFrameQ2Presentation.TorsorProgram.quotientFrame (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y)
      [hNn : N.Normal] (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) (F : Q2Presentation.BoundaryFrame Yt) :
      Q2Presentation.BoundaryFrame (Q2Presentation.TorsorProgram.quotientFramedTarget Yt N hNLY hNθ)The frame transports verbatim (`H`, `E`, `α`, `ψ`, `β` unchanged).  pQ2Presentation.Induction.FramedPair.fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.
    
            (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).NQ2Presentation.Lifting.ElementaryKernel.N {Yt : Q2Presentation.BoundaryFramedTarget}
      (self : Q2Presentation.Lifting.ElementaryKernel Yt) : Subgroup Yt.Y   pQ2Presentation.Induction.FramedPair.sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.
    ))
      (lam↥(Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) :
        (Q2Presentation.Lifting.conjInvDualsQ2Presentation.Lifting.conjInvDuals {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) :
      Submodule (ZMod 2) (Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E))The conjugation-invariant duals `X = (R^∨)^Y = (R^∨)^C` of an
    elementary kernel (consumer spelling of the manuscript's `𝒳_R`,
    §7 l.3720–3723). 
            (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)))
      (hne↑lam ≠ 0 : lam↥(Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) Ne.{u} {α : Sort u} (a b : α) : Prop`a ≠ b`, or `Ne a b` is defined as `¬ (a = b)` or `a = b → False`,
    and asserts that `a` and `b` are not equal.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≠` in identifiers is `ne`. 0) :
      (Q2Presentation.Induction.xrObstructionDualQ2Presentation.Induction.xrObstructionDual {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (g :
        Q2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GammaA
          (Q2Presentation.TorsorProgram.quotientFramedTarget p.fst (Q2Presentation.Induction.xrKernel chief K).N ⋯ ⋯)
          (Q2Presentation.TorsorProgram.quotientFrame p.fst (Q2Presentation.Induction.xrKernel chief K).N ⋯ ⋯ p.snd)) :
      Module.Dual (ZMod 2) ↥(Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K))**The canonical candidate obstruction**, valued in the dual of the
    invariant duals (`lem:obstructionseparation`): pair the base-marking
    defect sum against `𝒳_R`.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GammaA
      (Q2Presentation.TorsorProgram.quotientFramedTarget p.fst (Q2Presentation.Induction.xrKernel chief K).N ⋯ ⋯)
      (Q2Presentation.TorsorProgram.quotientFrame p.fst (Q2Presentation.Induction.xrKernel chief K).N ⋯ ⋯ p.snd)) lam↥(Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`. 0 Iff (a b : Prop) : PropIf and only if, or logical bi-implication. `a ↔ b` means that `a` implies `b` and vice versa.
    By `propext`, this implies that `a` and `b` are equal and hence any expression involving `a`
    is equivalent to the corresponding expression with `b` instead.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `↔` in identifiers is `iff`.
    
     * The recommended spelling of `<->` in identifiers is `iff` (prefer `↔` over `<->`).
        NonemptyNonempty.{u} (α : Sort u) : Prop`Nonempty α` is a typeclass that says that `α` is not an empty type,
    that is, there exists an element in the type. It differs from `Inhabited α`
    in that `Nonempty α` is a `Prop`, which means that it does not actually carry
    an element of `α`, only a proof that *there exists* such an element.
    Given `Nonempty α`, you can construct an element of `α` *nonconstructively*
    using `Classical.choice`.
    
          (Q2Presentation.Lifting.scalarCoverLiftHomQ2Presentation.Lifting.scalarCoverLiftHom {Yt : Q2Presentation.BoundaryFramedTarget} [Finite Yt.Y]
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals E) {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ)
      (F : Q2Presentation.BoundaryFrame Yt)
      (g :
        Q2Presentation.boundaryFramedSurj B (Q2Presentation.TorsorProgram.quotientFramedTarget Yt E.N ⋯ ⋯)
          (Q2Presentation.TorsorProgram.quotientFrame Yt E.N ⋯ ⋯ F)) :
      Type**Cover lifts of `g`** (`lem:obstructionseparation` l.4219–4223):
    framed homs `Γ ⟶ B_λ` over `g` — surjectivity NOT imposed (the
    manuscript's compatible lifts: `λ_*o` measures weak liftability; images
    are stratified by `eq:recursionR2`/`R3` later). 
            (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) lam↥(Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) 
            Q2Presentation.boundaryPackage_GammaAQ2Presentation.boundaryPackage_GammaA : Q2Presentation.BoundaryPackage Q2Presentation.GammaA**The candidate boundary package** (manuscript Prop 3.14, `prop:compatiblemarking`;
    plan Turn 4 §6).  The Stage-C data of `Γ_A`: the common tame quotient `gammaTameMap`,
    the maximal pro-`2` quotient `p : Γ_A ⟶ Π`, and the common unramified character
    `ν = gammaTameMap ≫ ν_t`, through which both factor.  pQ2Presentation.Induction.FramedPair.sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.
     gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GammaA
      (Q2Presentation.TorsorProgram.quotientFramedTarget p.fst (Q2Presentation.Induction.xrKernel chief K).N ⋯ ⋯)
      (Q2Presentation.TorsorProgram.quotientFrame p.fst (Q2Presentation.Induction.xrKernel chief K).N ⋯ ⋯ p.snd))
    theorem Q2Presentation.Induction.xrObstructionDual_scalar_eq_zero_iff
      {pQ2Presentation.Induction.FramedPair :
        Q2Presentation.Induction.FramedPairQ2Presentation.Induction.FramedPair : Type 1A **framed pair** `(𝒴, F)`: a boundary-framed marked target together with a
    boundary frame for it (manuscript Definition 4.1 + `eq:beta`).  This is the index of
    Theorem 4.2: the boundary-framed surjection count `e_Γ^β` is a function of the pair.
    The induction of `sec:induction` ranges over *all* such pairs simultaneously
    ("the induction is stated globally", l.1213), ordered by `|L_Y|`. }
      (chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p :
        Q2Presentation.Induction.FirstNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor (p : Q2Presentation.Induction.FramedPair) : TypeA non-scalar chief factor of `L_Y` that is **first**: every chief factor strictly
    below it (i.e. with upper term contained in `lower`) is scalar.  This is the manuscript's
    choice `S ◁ P` at l.3616–3623 ("all chief factors below `S` are scalar and `V` is the
    first non-scalar simple factor"), which `lem:collapse` requires for the coprime step
    `[S, Ñ] = 1`. 
          pQ2Presentation.Induction.FramedPair)
      (KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor :
        Q2Presentation.Induction.KernelMinimalQ2Presentation.Induction.KernelMinimal {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.NonScalarChiefFactor p) : TypeThe manuscript's kernel choice (l.3623): `K ◁ Y`, `K ≤ P`, `KS = P`, and `K` is
    **⊆-minimal** with these properties — stated as: any `Y`-normal `K' ≤ K` still joining
    with `S` to `P` equals `K`.  (This, not leastness among all candidates, is what
    `lem:simplehead` and `lem:collapse` use: both apply it to subgroups of `K`.) 
          chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p.toNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor.toNonScalarChiefFactor {p : Q2Presentation.Induction.FramedPair}
      (self : Q2Presentation.Induction.FirstNonScalarChiefFactor p) : Q2Presentation.Induction.NonScalarChiefFactor p)
      (gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GammaA
      (Q2Presentation.TorsorProgram.quotientFramedTarget p.fst (Q2Presentation.Induction.xrKernel chief K).N ⋯ ⋯)
      (Q2Presentation.TorsorProgram.quotientFrame p.fst (Q2Presentation.Induction.xrKernel chief K).N ⋯ ⋯ p.snd) :
        Q2Presentation.boundaryFramedSurjQ2Presentation.boundaryFramedSurj {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ)
      (Yt : Q2Presentation.BoundaryFramedTarget) (F : Q2Presentation.BoundaryFrame Yt) : TypeThe **boundary-framed surjections** `e_Γ^β(𝒴)` (manuscript `eq:eGamma`): the
    continuous surjections `f : Γ ↠ Y` whose induced map to `H × E` is the prescribed
    `β ∘ b_Γ`, i.e. `q_Y ∘ f = β ∘ b_Γ`.  This is the subtype counted in Theorem 4.2;
    its cardinality is `e_Γ^β(𝒴)`. 
          Q2Presentation.boundaryPackage_GammaAQ2Presentation.boundaryPackage_GammaA : Q2Presentation.BoundaryPackage Q2Presentation.GammaA**The candidate boundary package** (manuscript Prop 3.14, `prop:compatiblemarking`;
    plan Turn 4 §6).  The Stage-C data of `Γ_A`: the common tame quotient `gammaTameMap`,
    the maximal pro-`2` quotient `p : Γ_A ⟶ Π`, and the common unramified character
    `ν = gammaTameMap ≫ ν_t`, through which both factor. 
          (Q2Presentation.TorsorProgram.quotientFramedTargetQ2Presentation.TorsorProgram.quotientFramedTarget (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y)
      [hNn : N.Normal] (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) : Q2Presentation.BoundaryFramedTarget**The quotient framed target** `Y/N` (same `H`, same `E`, image wild kernel). 
            pQ2Presentation.Induction.FramedPair.fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.
    
            (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian. 
                chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).NQ2Presentation.Lifting.ElementaryKernel.N {Yt : Q2Presentation.BoundaryFramedTarget}
      (self : Q2Presentation.Lifting.ElementaryKernel Yt) : Subgroup Yt.Y
             )
          (Q2Presentation.TorsorProgram.quotientFrameQ2Presentation.TorsorProgram.quotientFrame (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y)
      [hNn : N.Normal] (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) (F : Q2Presentation.BoundaryFrame Yt) :
      Q2Presentation.BoundaryFrame (Q2Presentation.TorsorProgram.quotientFramedTarget Yt N hNLY hNθ)The frame transports verbatim (`H`, `E`, `α`, `ψ`, `β` unchanged). 
            pQ2Presentation.Induction.FramedPair.fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.
    
            (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian. 
                chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).NQ2Presentation.Lifting.ElementaryKernel.N {Yt : Q2Presentation.BoundaryFramedTarget}
      (self : Q2Presentation.Lifting.ElementaryKernel Yt) : Subgroup Yt.Y
              pQ2Presentation.Induction.FramedPair.sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.
    ))
      (lam↥(Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) :
        (Q2Presentation.Lifting.conjInvDualsQ2Presentation.Lifting.conjInvDuals {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) :
      Submodule (ZMod 2) (Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E))The conjugation-invariant duals `X = (R^∨)^Y = (R^∨)^C` of an
    elementary kernel (consumer spelling of the manuscript's `𝒳_R`,
    §7 l.3720–3723). 
            (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian. 
              chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)))
      (hne↑lam ≠ 0 : lam↥(Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) Ne.{u} {α : Sort u} (a b : α) : Prop`a ≠ b`, or `Ne a b` is defined as `¬ (a = b)` or `a = b → False`,
    and asserts that `a` and `b` are not equal.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≠` in identifiers is `ne`. 0) :
      (Q2Presentation.Induction.xrObstructionDualQ2Presentation.Induction.xrObstructionDual {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (g :
        Q2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GammaA
          (Q2Presentation.TorsorProgram.quotientFramedTarget p.fst (Q2Presentation.Induction.xrKernel chief K).N ⋯ ⋯)
          (Q2Presentation.TorsorProgram.quotientFrame p.fst (Q2Presentation.Induction.xrKernel chief K).N ⋯ ⋯ p.snd)) :
      Module.Dual (ZMod 2) ↥(Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K))**The canonical candidate obstruction**, valued in the dual of the
    invariant duals (`lem:obstructionseparation`): pair the base-marking
    defect sum against `𝒳_R`. 
              chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GammaA
      (Q2Presentation.TorsorProgram.quotientFramedTarget p.fst (Q2Presentation.Induction.xrKernel chief K).N ⋯ ⋯)
      (Q2Presentation.TorsorProgram.quotientFrame p.fst (Q2Presentation.Induction.xrKernel chief K).N ⋯ ⋯ p.snd))
            lam↥(Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`.
          0 Iff (a b : Prop) : PropIf and only if, or logical bi-implication. `a ↔ b` means that `a` implies `b` and vice versa.
    By `propext`, this implies that `a` and `b` are equal and hence any expression involving `a`
    is equivalent to the corresponding expression with `b` instead.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `↔` in identifiers is `iff`.
    
     * The recommended spelling of `<->` in identifiers is `iff` (prefer `↔` over `<->`).
        NonemptyNonempty.{u} (α : Sort u) : Prop`Nonempty α` is a typeclass that says that `α` is not an empty type,
    that is, there exists an element in the type. It differs from `Inhabited α`
    in that `Nonempty α` is a `Prop`, which means that it does not actually carry
    an element of `α`, only a proof that *there exists* such an element.
    Given `Nonempty α`, you can construct an element of `α` *nonconstructively*
    using `Classical.choice`.
    
          (Q2Presentation.Lifting.scalarCoverLiftHomQ2Presentation.Lifting.scalarCoverLiftHom {Yt : Q2Presentation.BoundaryFramedTarget} [Finite Yt.Y]
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals E) {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ)
      (F : Q2Presentation.BoundaryFrame Yt)
      (g :
        Q2Presentation.boundaryFramedSurj B (Q2Presentation.TorsorProgram.quotientFramedTarget Yt E.N ⋯ ⋯)
          (Q2Presentation.TorsorProgram.quotientFrame Yt E.N ⋯ ⋯ F)) :
      Type**Cover lifts of `g`** (`lem:obstructionseparation` l.4219–4223):
    framed homs `Γ ⟶ B_λ` over `g` — surjectivity NOT imposed (the
    manuscript's compatible lifts: `λ_*o` measures weak liftability; images
    are stratified by `eq:recursionR2`/`R3` later). 
            (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian. 
              chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
            lam↥(Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) 
            Q2Presentation.boundaryPackage_GammaAQ2Presentation.boundaryPackage_GammaA : Q2Presentation.BoundaryPackage Q2Presentation.GammaA**The candidate boundary package** (manuscript Prop 3.14, `prop:compatiblemarking`;
    plan Turn 4 §6).  The Stage-C data of `Γ_A`: the common tame quotient `gammaTameMap`,
    the maximal pro-`2` quotient `p : Γ_A ⟶ Π`, and the common unramified character
    `ν = gammaTameMap ≫ ν_t`, through which both factor. 
            pQ2Presentation.Induction.FramedPair.sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.
     gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GammaA
      (Q2Presentation.TorsorProgram.quotientFramedTarget p.fst (Q2Presentation.Induction.xrKernel chief K).N ⋯ ⋯)
      (Q2Presentation.TorsorProgram.quotientFrame p.fst (Q2Presentation.Induction.xrKernel chief K).N ⋯ ⋯ p.snd))
    **P1-A at the Frattini layer**: the canonical candidate
    obstruction's `λ`-component vanishes iff `g` lifts through `B_λ`
    (`lem:obstructionseparation` l.4219–4223).  No `hR`. 
  • theoremdefined in Q2Presentation/Lifting/ScalarObstruction.lean
    complete
    theorem Q2Presentation.Lifting.scalar_defect_eq_zero_iff_coverLift
      {YtQ2Presentation.BoundaryFramedTarget : Q2Presentation.BoundaryFramedTargetQ2Presentation.BoundaryFramedTarget : Type 1A **boundary-framed marked target** `𝒴 = (Y, L_Y, π_Y, θ_Y)` (manuscript
    Definition 4.1, `def:framed`): a finite group `Y` with a normal finite `2`-subgroup
    `L_Y`, a surjection `π_Y : Y ↠ H` onto a finite *tame* quotient with kernel exactly
    `L_Y`, and an *elementary decoration* `θ_Y : Y → Multiplicative E` into the
    multiplicative image of a finite `𝔽₂`-vector space `E`.  The pair
    `q_Y = (π_Y, θ_Y)` fixes both the tame quotient `Y / L_Y ≅ H` and the decoration. } [FiniteFinite.{u_3} (α : Sort u_3) : PropA type is `Finite` if it is in bijective correspondence to some `Fin n`.
    
    This is similar to `Fintype`, but `Finite` is a proposition rather than data.
    A particular benefit to this is that `Finite` instances are definitionally equal to one another
    (due to proof irrelevance) rather than being merely propositionally equal,
    and, furthermore, `Finite` instances generally avoid the need for `Decidable` instances.
    One other notable difference is that `Finite` allows there to be `Finite p` instances
    for all `p : Prop`, which is not allowed by `Fintype` due to universe constraints.
    An application of this is that `Finite (x ∈ s → β x)` follows from the general instance for pi
    types, assuming `[∀ x, Finite (β x)]`.
    Implementation note: this is a reason `Finite α` is not defined as `Nonempty (Fintype α)`.
    
    Every `Fintype` instance provides a `Finite` instance via `Finite.of_fintype`.
    Conversely, one can noncomputably create a `Fintype` instance from a `Finite` instance
    via `Fintype.ofFinite`. In a proof one might write
    ```lean
      have := Fintype.ofFinite α
    ```
    to obtain such an instance.
    
    Do not write noncomputable `Fintype` instances; instead write `Finite` instances
    and use this `Fintype.ofFinite` interface.
    The `Fintype` instances should be relied upon to be computable for evaluation purposes.
    
    Theorems should use `Finite` instead of `Fintype`, unless definitions in the theorem statement
    require `Fintype`.
    Definitions should prefer `Finite` as well, unless it is important that the definitions
    are meant to be computable in the reduction or `#eval` sense.
     YtQ2Presentation.BoundaryFramedTarget.YQ2Presentation.BoundaryFramedTarget.Y (self : Q2Presentation.BoundaryFramedTarget) : TypeThe finite target group `Y`. ]
      (EQ2Presentation.Lifting.ElementaryKernel Yt : Q2Presentation.Lifting.ElementaryKernelQ2Presentation.Lifting.ElementaryKernel (Yt : Q2Presentation.BoundaryFramedTarget) : TypeA normal subgroup of a framed target that is killed by the decoration,
    contained in the wild kernel, **abelian**, and of **exponent 2** — the shape
    of the chief kernels the cochain keeps quantify over.  YtQ2Presentation.BoundaryFramedTarget)
      (FQ2Presentation.BoundaryFrame Yt : Q2Presentation.BoundaryFrameQ2Presentation.BoundaryFrame (Yt : Q2Presentation.BoundaryFramedTarget) : TypeA **boundary frame** on a boundary-framed target `𝒴` (manuscript `eq:beta`):
    the fixed compatible data `α : 𝕋_tame ↠ H`, `ψ : Π → Multiplicative E`, and the
    induced `β : ∂_bd → H × Multiplicative E`.  Surjectivity of `α` records that `H`
    really is a tame quotient (manuscript: "Fix a finite tame quotient `H`, an
    epimorphism `α : 𝕋_A ↠ H`").  YtQ2Presentation.BoundaryFramedTarget)
      (gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GammaA
      (Q2Presentation.TorsorProgram.quotientFramedTarget Yt E.N ⋯ ⋯)
      (Q2Presentation.TorsorProgram.quotientFrame Yt E.N ⋯ ⋯ F) :
        Q2Presentation.boundaryFramedSurjQ2Presentation.boundaryFramedSurj {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ)
      (Yt : Q2Presentation.BoundaryFramedTarget) (F : Q2Presentation.BoundaryFrame Yt) : TypeThe **boundary-framed surjections** `e_Γ^β(𝒴)` (manuscript `eq:eGamma`): the
    continuous surjections `f : Γ ↠ Y` whose induced map to `H × E` is the prescribed
    `β ∘ b_Γ`, i.e. `q_Y ∘ f = β ∘ b_Γ`.  This is the subtype counted in Theorem 4.2;
    its cardinality is `e_Γ^β(𝒴)`. 
          Q2Presentation.boundaryPackage_GammaAQ2Presentation.boundaryPackage_GammaA : Q2Presentation.BoundaryPackage Q2Presentation.GammaA**The candidate boundary package** (manuscript Prop 3.14, `prop:compatiblemarking`;
    plan Turn 4 §6).  The Stage-C data of `Γ_A`: the common tame quotient `gammaTameMap`,
    the maximal pro-`2` quotient `p : Γ_A ⟶ Π`, and the common unramified character
    `ν = gammaTameMap ≫ ν_t`, through which both factor. 
          (Q2Presentation.TorsorProgram.quotientFramedTargetQ2Presentation.TorsorProgram.quotientFramedTarget (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y)
      [hNn : N.Normal] (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) : Q2Presentation.BoundaryFramedTarget**The quotient framed target** `Y/N` (same `H`, same `E`, image wild kernel).  YtQ2Presentation.BoundaryFramedTarget EQ2Presentation.Lifting.ElementaryKernel Yt.NQ2Presentation.Lifting.ElementaryKernel.N {Yt : Q2Presentation.BoundaryFramedTarget}
      (self : Q2Presentation.Lifting.ElementaryKernel Yt) : Subgroup Yt.Y  )
          (Q2Presentation.TorsorProgram.quotientFrameQ2Presentation.TorsorProgram.quotientFrame (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y)
      [hNn : N.Normal] (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) (F : Q2Presentation.BoundaryFrame Yt) :
      Q2Presentation.BoundaryFrame (Q2Presentation.TorsorProgram.quotientFramedTarget Yt N hNLY hNθ)The frame transports verbatim (`H`, `E`, `α`, `ψ`, `β` unchanged).  YtQ2Presentation.BoundaryFramedTarget EQ2Presentation.Lifting.ElementaryKernel Yt.NQ2Presentation.Lifting.ElementaryKernel.N {Yt : Q2Presentation.BoundaryFramedTarget}
      (self : Q2Presentation.Lifting.ElementaryKernel Yt) : Subgroup Yt.Y   FQ2Presentation.BoundaryFrame Yt))
      (lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E) : Module.DualModule.Dual.{u_4, u_5} (R : Type u_4) (M : Type u_5) [Semiring R] [AddCommMonoid M] [Module R M] : Type (max u_5 u_4)The left dual space of an R-module M is the R-module of linear maps `M → R`.  (ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2) (Q2Presentation.Lifting.NAddQ2Presentation.Lifting.NAdd {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) : TypeThe additive `F₂`-carrier of an elementary kernel.  EQ2Presentation.Lifting.ElementaryKernel Yt))
      (hinvlam ∈ Q2Presentation.Lifting.conjInvDuals E : lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E) Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. Q2Presentation.Lifting.conjInvDualsQ2Presentation.Lifting.conjInvDuals {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) :
      Submodule (ZMod 2) (Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E))The conjugation-invariant duals `X = (R^∨)^Y = (R^∨)^C` of an
    elementary kernel (consumer spelling of the manuscript's `𝒳_R`,
    §7 l.3720–3723).  EQ2Presentation.Lifting.ElementaryKernel Yt) (hnelam ≠ 0 : lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E) Ne.{u} {α : Sort u} (a b : α) : Prop`a ≠ b`, or `Ne a b` is defined as `¬ (a = b)` or `a = b → False`,
    and asserts that `a` and `b` are not equal.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≠` in identifiers is `ne`. 0) :
      lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E)
            (HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`.(Q2Presentation.Lifting.defectPairQ2Presentation.Lifting.defectPair {Yt : Q2Presentation.BoundaryFramedTarget} [Finite Yt.Y]
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) (F : Q2Presentation.BoundaryFrame Yt)
      (g :
        Q2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GammaA
          (Q2Presentation.TorsorProgram.quotientFramedTarget Yt E.N ⋯ ⋯)
          (Q2Presentation.TorsorProgram.quotientFrame Yt E.N ⋯ ⋯ F))
      (q : Q2Presentation.Marking Yt.Y)
      (hq :
        ∀ (a : Q2Presentation.Gen),
          (QuotientGroup.mk' E.N) (q a) = (ProfiniteGrp.Hom.hom (↑g).hom) (Q2Presentation.gammaGen a)) :
      Q2Presentation.Lifting.NAdd E × Q2Presentation.Lifting.NAdd EThe relator-defect pair of a compatible marking.  EQ2Presentation.Lifting.ElementaryKernel Yt FQ2Presentation.BoundaryFrame Yt gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GammaA
      (Q2Presentation.TorsorProgram.quotientFramedTarget Yt E.N ⋯ ⋯)
      (Q2Presentation.TorsorProgram.quotientFrame Yt E.N ⋯ ⋯ F)
                  (Q2Presentation.Lifting.baseMarkingQ2Presentation.Lifting.baseMarking {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) (F : Q2Presentation.BoundaryFrame Yt)
      (g :
        Q2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GammaA
          (Q2Presentation.TorsorProgram.quotientFramedTarget Yt E.N ⋯ ⋯)
          (Q2Presentation.TorsorProgram.quotientFrame Yt E.N ⋯ ⋯ F)) :
      Q2Presentation.Marking Yt.YA chosen base marking under `g`.  EQ2Presentation.Lifting.ElementaryKernel Yt FQ2Presentation.BoundaryFrame Yt gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GammaA
      (Q2Presentation.TorsorProgram.quotientFramedTarget Yt E.N ⋯ ⋯)
      (Q2Presentation.TorsorProgram.quotientFrame Yt E.N ⋯ ⋯ F)) ).1 +HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`.
              (Q2Presentation.Lifting.defectPairQ2Presentation.Lifting.defectPair {Yt : Q2Presentation.BoundaryFramedTarget} [Finite Yt.Y]
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) (F : Q2Presentation.BoundaryFrame Yt)
      (g :
        Q2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GammaA
          (Q2Presentation.TorsorProgram.quotientFramedTarget Yt E.N ⋯ ⋯)
          (Q2Presentation.TorsorProgram.quotientFrame Yt E.N ⋯ ⋯ F))
      (q : Q2Presentation.Marking Yt.Y)
      (hq :
        ∀ (a : Q2Presentation.Gen),
          (QuotientGroup.mk' E.N) (q a) = (ProfiniteGrp.Hom.hom (↑g).hom) (Q2Presentation.gammaGen a)) :
      Q2Presentation.Lifting.NAdd E × Q2Presentation.Lifting.NAdd EThe relator-defect pair of a compatible marking.  EQ2Presentation.Lifting.ElementaryKernel Yt FQ2Presentation.BoundaryFrame Yt gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GammaA
      (Q2Presentation.TorsorProgram.quotientFramedTarget Yt E.N ⋯ ⋯)
      (Q2Presentation.TorsorProgram.quotientFrame Yt E.N ⋯ ⋯ F)
                  (Q2Presentation.Lifting.baseMarkingQ2Presentation.Lifting.baseMarking {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) (F : Q2Presentation.BoundaryFrame Yt)
      (g :
        Q2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GammaA
          (Q2Presentation.TorsorProgram.quotientFramedTarget Yt E.N ⋯ ⋯)
          (Q2Presentation.TorsorProgram.quotientFrame Yt E.N ⋯ ⋯ F)) :
      Q2Presentation.Marking Yt.YA chosen base marking under `g`.  EQ2Presentation.Lifting.ElementaryKernel Yt FQ2Presentation.BoundaryFrame Yt gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GammaA
      (Q2Presentation.TorsorProgram.quotientFramedTarget Yt E.N ⋯ ⋯)
      (Q2Presentation.TorsorProgram.quotientFrame Yt E.N ⋯ ⋯ F)) ).2)HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`. =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`.
          0 Iff (a b : Prop) : PropIf and only if, or logical bi-implication. `a ↔ b` means that `a` implies `b` and vice versa.
    By `propext`, this implies that `a` and `b` are equal and hence any expression involving `a`
    is equivalent to the corresponding expression with `b` instead.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `↔` in identifiers is `iff`.
    
     * The recommended spelling of `<->` in identifiers is `iff` (prefer `↔` over `<->`).
        NonemptyNonempty.{u} (α : Sort u) : Prop`Nonempty α` is a typeclass that says that `α` is not an empty type,
    that is, there exists an element in the type. It differs from `Inhabited α`
    in that `Nonempty α` is a `Prop`, which means that it does not actually carry
    an element of `α`, only a proof that *there exists* such an element.
    Given `Nonempty α`, you can construct an element of `α` *nonconstructively*
    using `Classical.choice`.
    
          (Q2Presentation.Lifting.scalarCoverLiftHomQ2Presentation.Lifting.scalarCoverLiftHom {Yt : Q2Presentation.BoundaryFramedTarget} [Finite Yt.Y]
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals E) {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ)
      (F : Q2Presentation.BoundaryFrame Yt)
      (g :
        Q2Presentation.boundaryFramedSurj B (Q2Presentation.TorsorProgram.quotientFramedTarget Yt E.N ⋯ ⋯)
          (Q2Presentation.TorsorProgram.quotientFrame Yt E.N ⋯ ⋯ F)) :
      Type**Cover lifts of `g`** (`lem:obstructionseparation` l.4219–4223):
    framed homs `Γ ⟶ B_λ` over `g` — surjectivity NOT imposed (the
    manuscript's compatible lifts: `λ_*o` measures weak liftability; images
    are stratified by `eq:recursionR2`/`R3` later).  EQ2Presentation.Lifting.ElementaryKernel Yt lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals E
            Q2Presentation.boundaryPackage_GammaAQ2Presentation.boundaryPackage_GammaA : Q2Presentation.BoundaryPackage Q2Presentation.GammaA**The candidate boundary package** (manuscript Prop 3.14, `prop:compatiblemarking`;
    plan Turn 4 §6).  The Stage-C data of `Γ_A`: the common tame quotient `gammaTameMap`,
    the maximal pro-`2` quotient `p : Γ_A ⟶ Π`, and the common unramified character
    `ν = gammaTameMap ≫ ν_t`, through which both factor.  FQ2Presentation.BoundaryFrame Yt gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GammaA
      (Q2Presentation.TorsorProgram.quotientFramedTarget Yt E.N ⋯ ⋯)
      (Q2Presentation.TorsorProgram.quotientFrame Yt E.N ⋯ ⋯ F))
    theorem Q2Presentation.Lifting.scalar_defect_eq_zero_iff_coverLift
      {YtQ2Presentation.BoundaryFramedTarget :
        Q2Presentation.BoundaryFramedTargetQ2Presentation.BoundaryFramedTarget : Type 1A **boundary-framed marked target** `𝒴 = (Y, L_Y, π_Y, θ_Y)` (manuscript
    Definition 4.1, `def:framed`): a finite group `Y` with a normal finite `2`-subgroup
    `L_Y`, a surjection `π_Y : Y ↠ H` onto a finite *tame* quotient with kernel exactly
    `L_Y`, and an *elementary decoration* `θ_Y : Y → Multiplicative E` into the
    multiplicative image of a finite `𝔽₂`-vector space `E`.  The pair
    `q_Y = (π_Y, θ_Y)` fixes both the tame quotient `Y / L_Y ≅ H` and the decoration. }
      [FiniteFinite.{u_3} (α : Sort u_3) : PropA type is `Finite` if it is in bijective correspondence to some `Fin n`.
    
    This is similar to `Fintype`, but `Finite` is a proposition rather than data.
    A particular benefit to this is that `Finite` instances are definitionally equal to one another
    (due to proof irrelevance) rather than being merely propositionally equal,
    and, furthermore, `Finite` instances generally avoid the need for `Decidable` instances.
    One other notable difference is that `Finite` allows there to be `Finite p` instances
    for all `p : Prop`, which is not allowed by `Fintype` due to universe constraints.
    An application of this is that `Finite (x ∈ s → β x)` follows from the general instance for pi
    types, assuming `[∀ x, Finite (β x)]`.
    Implementation note: this is a reason `Finite α` is not defined as `Nonempty (Fintype α)`.
    
    Every `Fintype` instance provides a `Finite` instance via `Finite.of_fintype`.
    Conversely, one can noncomputably create a `Fintype` instance from a `Finite` instance
    via `Fintype.ofFinite`. In a proof one might write
    ```lean
      have := Fintype.ofFinite α
    ```
    to obtain such an instance.
    
    Do not write noncomputable `Fintype` instances; instead write `Finite` instances
    and use this `Fintype.ofFinite` interface.
    The `Fintype` instances should be relied upon to be computable for evaluation purposes.
    
    Theorems should use `Finite` instead of `Fintype`, unless definitions in the theorem statement
    require `Fintype`.
    Definitions should prefer `Finite` as well, unless it is important that the definitions
    are meant to be computable in the reduction or `#eval` sense.
     YtQ2Presentation.BoundaryFramedTarget.YQ2Presentation.BoundaryFramedTarget.Y (self : Q2Presentation.BoundaryFramedTarget) : TypeThe finite target group `Y`. ]
      (EQ2Presentation.Lifting.ElementaryKernel Yt :
        Q2Presentation.Lifting.ElementaryKernelQ2Presentation.Lifting.ElementaryKernel (Yt : Q2Presentation.BoundaryFramedTarget) : TypeA normal subgroup of a framed target that is killed by the decoration,
    contained in the wild kernel, **abelian**, and of **exponent 2** — the shape
    of the chief kernels the cochain keeps quantify over. 
          YtQ2Presentation.BoundaryFramedTarget)
      (FQ2Presentation.BoundaryFrame Yt : Q2Presentation.BoundaryFrameQ2Presentation.BoundaryFrame (Yt : Q2Presentation.BoundaryFramedTarget) : TypeA **boundary frame** on a boundary-framed target `𝒴` (manuscript `eq:beta`):
    the fixed compatible data `α : 𝕋_tame ↠ H`, `ψ : Π → Multiplicative E`, and the
    induced `β : ∂_bd → H × Multiplicative E`.  Surjectivity of `α` records that `H`
    really is a tame quotient (manuscript: "Fix a finite tame quotient `H`, an
    epimorphism `α : 𝕋_A ↠ H`").  YtQ2Presentation.BoundaryFramedTarget)
      (gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GammaA
      (Q2Presentation.TorsorProgram.quotientFramedTarget Yt E.N ⋯ ⋯)
      (Q2Presentation.TorsorProgram.quotientFrame Yt E.N ⋯ ⋯ F) :
        Q2Presentation.boundaryFramedSurjQ2Presentation.boundaryFramedSurj {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ)
      (Yt : Q2Presentation.BoundaryFramedTarget) (F : Q2Presentation.BoundaryFrame Yt) : TypeThe **boundary-framed surjections** `e_Γ^β(𝒴)` (manuscript `eq:eGamma`): the
    continuous surjections `f : Γ ↠ Y` whose induced map to `H × E` is the prescribed
    `β ∘ b_Γ`, i.e. `q_Y ∘ f = β ∘ b_Γ`.  This is the subtype counted in Theorem 4.2;
    its cardinality is `e_Γ^β(𝒴)`. 
          Q2Presentation.boundaryPackage_GammaAQ2Presentation.boundaryPackage_GammaA : Q2Presentation.BoundaryPackage Q2Presentation.GammaA**The candidate boundary package** (manuscript Prop 3.14, `prop:compatiblemarking`;
    plan Turn 4 §6).  The Stage-C data of `Γ_A`: the common tame quotient `gammaTameMap`,
    the maximal pro-`2` quotient `p : Γ_A ⟶ Π`, and the common unramified character
    `ν = gammaTameMap ≫ ν_t`, through which both factor. 
          (Q2Presentation.TorsorProgram.quotientFramedTargetQ2Presentation.TorsorProgram.quotientFramedTarget (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y)
      [hNn : N.Normal] (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) : Q2Presentation.BoundaryFramedTarget**The quotient framed target** `Y/N` (same `H`, same `E`, image wild kernel). 
            YtQ2Presentation.BoundaryFramedTarget EQ2Presentation.Lifting.ElementaryKernel Yt.NQ2Presentation.Lifting.ElementaryKernel.N {Yt : Q2Presentation.BoundaryFramedTarget}
      (self : Q2Presentation.Lifting.ElementaryKernel Yt) : Subgroup Yt.Y  )
          (Q2Presentation.TorsorProgram.quotientFrameQ2Presentation.TorsorProgram.quotientFrame (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y)
      [hNn : N.Normal] (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) (F : Q2Presentation.BoundaryFrame Yt) :
      Q2Presentation.BoundaryFrame (Q2Presentation.TorsorProgram.quotientFramedTarget Yt N hNLY hNθ)The frame transports verbatim (`H`, `E`, `α`, `ψ`, `β` unchanged). 
            YtQ2Presentation.BoundaryFramedTarget EQ2Presentation.Lifting.ElementaryKernel Yt.NQ2Presentation.Lifting.ElementaryKernel.N {Yt : Q2Presentation.BoundaryFramedTarget}
      (self : Q2Presentation.Lifting.ElementaryKernel Yt) : Subgroup Yt.Y   FQ2Presentation.BoundaryFrame Yt))
      (lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E) :
        Module.DualModule.Dual.{u_4, u_5} (R : Type u_4) (M : Type u_5) [Semiring R] [AddCommMonoid M] [Module R M] : Type (max u_5 u_4)The left dual space of an R-module M is the R-module of linear maps `M → R`.  (ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2)
          (Q2Presentation.Lifting.NAddQ2Presentation.Lifting.NAdd {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) : TypeThe additive `F₂`-carrier of an elementary kernel.  EQ2Presentation.Lifting.ElementaryKernel Yt))
      (hinvlam ∈ Q2Presentation.Lifting.conjInvDuals E :
        lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E) Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`.
          Q2Presentation.Lifting.conjInvDualsQ2Presentation.Lifting.conjInvDuals {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) :
      Submodule (ZMod 2) (Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E))The conjugation-invariant duals `X = (R^∨)^Y = (R^∨)^C` of an
    elementary kernel (consumer spelling of the manuscript's `𝒳_R`,
    §7 l.3720–3723). 
            EQ2Presentation.Lifting.ElementaryKernel Yt)
      (hnelam ≠ 0 : lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E) Ne.{u} {α : Sort u} (a b : α) : Prop`a ≠ b`, or `Ne a b` is defined as `¬ (a = b)` or `a = b → False`,
    and asserts that `a` and `b` are not equal.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≠` in identifiers is `ne`. 0) :
      lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E)
            (HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`.(Q2Presentation.Lifting.defectPairQ2Presentation.Lifting.defectPair {Yt : Q2Presentation.BoundaryFramedTarget} [Finite Yt.Y]
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) (F : Q2Presentation.BoundaryFrame Yt)
      (g :
        Q2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GammaA
          (Q2Presentation.TorsorProgram.quotientFramedTarget Yt E.N ⋯ ⋯)
          (Q2Presentation.TorsorProgram.quotientFrame Yt E.N ⋯ ⋯ F))
      (q : Q2Presentation.Marking Yt.Y)
      (hq :
        ∀ (a : Q2Presentation.Gen),
          (QuotientGroup.mk' E.N) (q a) = (ProfiniteGrp.Hom.hom (↑g).hom) (Q2Presentation.gammaGen a)) :
      Q2Presentation.Lifting.NAdd E × Q2Presentation.Lifting.NAdd EThe relator-defect pair of a compatible marking. 
                  EQ2Presentation.Lifting.ElementaryKernel Yt FQ2Presentation.BoundaryFrame Yt gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GammaA
      (Q2Presentation.TorsorProgram.quotientFramedTarget Yt E.N ⋯ ⋯)
      (Q2Presentation.TorsorProgram.quotientFrame Yt E.N ⋯ ⋯ F)
                  (Q2Presentation.Lifting.baseMarkingQ2Presentation.Lifting.baseMarking {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) (F : Q2Presentation.BoundaryFrame Yt)
      (g :
        Q2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GammaA
          (Q2Presentation.TorsorProgram.quotientFramedTarget Yt E.N ⋯ ⋯)
          (Q2Presentation.TorsorProgram.quotientFrame Yt E.N ⋯ ⋯ F)) :
      Q2Presentation.Marking Yt.YA chosen base marking under `g`. 
                    EQ2Presentation.Lifting.ElementaryKernel Yt FQ2Presentation.BoundaryFrame Yt gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GammaA
      (Q2Presentation.TorsorProgram.quotientFramedTarget Yt E.N ⋯ ⋯)
      (Q2Presentation.TorsorProgram.quotientFrame Yt E.N ⋯ ⋯ F))
                  ).1 +HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`.
              (Q2Presentation.Lifting.defectPairQ2Presentation.Lifting.defectPair {Yt : Q2Presentation.BoundaryFramedTarget} [Finite Yt.Y]
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) (F : Q2Presentation.BoundaryFrame Yt)
      (g :
        Q2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GammaA
          (Q2Presentation.TorsorProgram.quotientFramedTarget Yt E.N ⋯ ⋯)
          (Q2Presentation.TorsorProgram.quotientFrame Yt E.N ⋯ ⋯ F))
      (q : Q2Presentation.Marking Yt.Y)
      (hq :
        ∀ (a : Q2Presentation.Gen),
          (QuotientGroup.mk' E.N) (q a) = (ProfiniteGrp.Hom.hom (↑g).hom) (Q2Presentation.gammaGen a)) :
      Q2Presentation.Lifting.NAdd E × Q2Presentation.Lifting.NAdd EThe relator-defect pair of a compatible marking. 
                  EQ2Presentation.Lifting.ElementaryKernel Yt FQ2Presentation.BoundaryFrame Yt gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GammaA
      (Q2Presentation.TorsorProgram.quotientFramedTarget Yt E.N ⋯ ⋯)
      (Q2Presentation.TorsorProgram.quotientFrame Yt E.N ⋯ ⋯ F)
                  (Q2Presentation.Lifting.baseMarkingQ2Presentation.Lifting.baseMarking {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) (F : Q2Presentation.BoundaryFrame Yt)
      (g :
        Q2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GammaA
          (Q2Presentation.TorsorProgram.quotientFramedTarget Yt E.N ⋯ ⋯)
          (Q2Presentation.TorsorProgram.quotientFrame Yt E.N ⋯ ⋯ F)) :
      Q2Presentation.Marking Yt.YA chosen base marking under `g`. 
                    EQ2Presentation.Lifting.ElementaryKernel Yt FQ2Presentation.BoundaryFrame Yt gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GammaA
      (Q2Presentation.TorsorProgram.quotientFramedTarget Yt E.N ⋯ ⋯)
      (Q2Presentation.TorsorProgram.quotientFrame Yt E.N ⋯ ⋯ F))
                  ).2)HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`. =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`.
          0 Iff (a b : Prop) : PropIf and only if, or logical bi-implication. `a ↔ b` means that `a` implies `b` and vice versa.
    By `propext`, this implies that `a` and `b` are equal and hence any expression involving `a`
    is equivalent to the corresponding expression with `b` instead.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `↔` in identifiers is `iff`.
    
     * The recommended spelling of `<->` in identifiers is `iff` (prefer `↔` over `<->`).
        NonemptyNonempty.{u} (α : Sort u) : Prop`Nonempty α` is a typeclass that says that `α` is not an empty type,
    that is, there exists an element in the type. It differs from `Inhabited α`
    in that `Nonempty α` is a `Prop`, which means that it does not actually carry
    an element of `α`, only a proof that *there exists* such an element.
    Given `Nonempty α`, you can construct an element of `α` *nonconstructively*
    using `Classical.choice`.
    
          (Q2Presentation.Lifting.scalarCoverLiftHomQ2Presentation.Lifting.scalarCoverLiftHom {Yt : Q2Presentation.BoundaryFramedTarget} [Finite Yt.Y]
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals E) {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ)
      (F : Q2Presentation.BoundaryFrame Yt)
      (g :
        Q2Presentation.boundaryFramedSurj B (Q2Presentation.TorsorProgram.quotientFramedTarget Yt E.N ⋯ ⋯)
          (Q2Presentation.TorsorProgram.quotientFrame Yt E.N ⋯ ⋯ F)) :
      Type**Cover lifts of `g`** (`lem:obstructionseparation` l.4219–4223):
    framed homs `Γ ⟶ B_λ` over `g` — surjectivity NOT imposed (the
    manuscript's compatible lifts: `λ_*o` measures weak liftability; images
    are stratified by `eq:recursionR2`/`R3` later). 
            EQ2Presentation.Lifting.ElementaryKernel Yt lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals E
            Q2Presentation.boundaryPackage_GammaAQ2Presentation.boundaryPackage_GammaA : Q2Presentation.BoundaryPackage Q2Presentation.GammaA**The candidate boundary package** (manuscript Prop 3.14, `prop:compatiblemarking`;
    plan Turn 4 §6).  The Stage-C data of `Γ_A`: the common tame quotient `gammaTameMap`,
    the maximal pro-`2` quotient `p : Γ_A ⟶ Π`, and the common unramified character
    `ν = gammaTameMap ≫ ν_t`, through which both factor. 
            FQ2Presentation.BoundaryFrame Yt gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GammaA
      (Q2Presentation.TorsorProgram.quotientFramedTarget Yt E.N ⋯ ⋯)
      (Q2Presentation.TorsorProgram.quotientFrame Yt E.N ⋯ ⋯ F))
    **P1-A, generic core** (`lem:obstructionseparation` l.4219–4223,
    candidate half): the λ-pairing of the defect sum vanishes iff `g` lifts
    through `B_λ`.  `hR`-free, diamond-free: the engine at the cover parent
    with the relative kernel, plus the diagonal row image and
    `ker mkN = ker λ`. 
  • theoremdefined in Q2Presentation/Lifting/ScalarPushout.lean
    complete
    theorem Q2Presentation.Lifting.scalarKernel_normal
      {YtQ2Presentation.BoundaryFramedTarget : Q2Presentation.BoundaryFramedTargetQ2Presentation.BoundaryFramedTarget : Type 1A **boundary-framed marked target** `𝒴 = (Y, L_Y, π_Y, θ_Y)` (manuscript
    Definition 4.1, `def:framed`): a finite group `Y` with a normal finite `2`-subgroup
    `L_Y`, a surjection `π_Y : Y ↠ H` onto a finite *tame* quotient with kernel exactly
    `L_Y`, and an *elementary decoration* `θ_Y : Y → Multiplicative E` into the
    multiplicative image of a finite `𝔽₂`-vector space `E`.  The pair
    `q_Y = (π_Y, θ_Y)` fixes both the tame quotient `Y / L_Y ≅ H` and the decoration. } [FiniteFinite.{u_3} (α : Sort u_3) : PropA type is `Finite` if it is in bijective correspondence to some `Fin n`.
    
    This is similar to `Fintype`, but `Finite` is a proposition rather than data.
    A particular benefit to this is that `Finite` instances are definitionally equal to one another
    (due to proof irrelevance) rather than being merely propositionally equal,
    and, furthermore, `Finite` instances generally avoid the need for `Decidable` instances.
    One other notable difference is that `Finite` allows there to be `Finite p` instances
    for all `p : Prop`, which is not allowed by `Fintype` due to universe constraints.
    An application of this is that `Finite (x ∈ s → β x)` follows from the general instance for pi
    types, assuming `[∀ x, Finite (β x)]`.
    Implementation note: this is a reason `Finite α` is not defined as `Nonempty (Fintype α)`.
    
    Every `Fintype` instance provides a `Finite` instance via `Finite.of_fintype`.
    Conversely, one can noncomputably create a `Fintype` instance from a `Finite` instance
    via `Fintype.ofFinite`. In a proof one might write
    ```lean
      have := Fintype.ofFinite α
    ```
    to obtain such an instance.
    
    Do not write noncomputable `Fintype` instances; instead write `Finite` instances
    and use this `Fintype.ofFinite` interface.
    The `Fintype` instances should be relied upon to be computable for evaluation purposes.
    
    Theorems should use `Finite` instead of `Fintype`, unless definitions in the theorem statement
    require `Fintype`.
    Definitions should prefer `Finite` as well, unless it is important that the definitions
    are meant to be computable in the reduction or `#eval` sense.
     YtQ2Presentation.BoundaryFramedTarget.YQ2Presentation.BoundaryFramedTarget.Y (self : Q2Presentation.BoundaryFramedTarget) : TypeThe finite target group `Y`. ]
      (EQ2Presentation.Lifting.ElementaryKernel Yt : Q2Presentation.Lifting.ElementaryKernelQ2Presentation.Lifting.ElementaryKernel (Yt : Q2Presentation.BoundaryFramedTarget) : TypeA normal subgroup of a framed target that is killed by the decoration,
    contained in the wild kernel, **abelian**, and of **exponent 2** — the shape
    of the chief kernels the cochain keeps quantify over.  YtQ2Presentation.BoundaryFramedTarget)
      (lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E) : Module.DualModule.Dual.{u_4, u_5} (R : Type u_4) (M : Type u_5) [Semiring R] [AddCommMonoid M] [Module R M] : Type (max u_5 u_4)The left dual space of an R-module M is the R-module of linear maps `M → R`.  (ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2) (Q2Presentation.Lifting.NAddQ2Presentation.Lifting.NAdd {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) : TypeThe additive `F₂`-carrier of an elementary kernel.  EQ2Presentation.Lifting.ElementaryKernel Yt))
      (hinvlam ∈ Q2Presentation.Lifting.conjInvDuals E : lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E) Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. Q2Presentation.Lifting.conjInvDualsQ2Presentation.Lifting.conjInvDuals {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) :
      Submodule (ZMod 2) (Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E))The conjugation-invariant duals `X = (R^∨)^Y = (R^∨)^C` of an
    elementary kernel (consumer spelling of the manuscript's `𝒳_R`,
    §7 l.3720–3723).  EQ2Presentation.Lifting.ElementaryKernel Yt) :
      (Q2Presentation.Lifting.scalarKernelQ2Presentation.Lifting.scalarKernel {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E)) :
      Subgroup Yt.Y`ker λ` as a subgroup of the ambient target: the additive kernel of
    `lam` inside `NAdd E`, read back multiplicatively and pushed along the
    subtype.  EQ2Presentation.Lifting.ElementaryKernel Yt lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E)).NormalSubgroup.Normal.{u_1} {G : Type u_1} [Group G] (H : Subgroup G) : PropA subgroup `H` is normal if whenever `n ∈ H`, then `g * n * g⁻¹ ∈ H` for every `g : G` 
    theorem Q2Presentation.Lifting.scalarKernel_normal
      {YtQ2Presentation.BoundaryFramedTarget :
        Q2Presentation.BoundaryFramedTargetQ2Presentation.BoundaryFramedTarget : Type 1A **boundary-framed marked target** `𝒴 = (Y, L_Y, π_Y, θ_Y)` (manuscript
    Definition 4.1, `def:framed`): a finite group `Y` with a normal finite `2`-subgroup
    `L_Y`, a surjection `π_Y : Y ↠ H` onto a finite *tame* quotient with kernel exactly
    `L_Y`, and an *elementary decoration* `θ_Y : Y → Multiplicative E` into the
    multiplicative image of a finite `𝔽₂`-vector space `E`.  The pair
    `q_Y = (π_Y, θ_Y)` fixes both the tame quotient `Y / L_Y ≅ H` and the decoration. }
      [FiniteFinite.{u_3} (α : Sort u_3) : PropA type is `Finite` if it is in bijective correspondence to some `Fin n`.
    
    This is similar to `Fintype`, but `Finite` is a proposition rather than data.
    A particular benefit to this is that `Finite` instances are definitionally equal to one another
    (due to proof irrelevance) rather than being merely propositionally equal,
    and, furthermore, `Finite` instances generally avoid the need for `Decidable` instances.
    One other notable difference is that `Finite` allows there to be `Finite p` instances
    for all `p : Prop`, which is not allowed by `Fintype` due to universe constraints.
    An application of this is that `Finite (x ∈ s → β x)` follows from the general instance for pi
    types, assuming `[∀ x, Finite (β x)]`.
    Implementation note: this is a reason `Finite α` is not defined as `Nonempty (Fintype α)`.
    
    Every `Fintype` instance provides a `Finite` instance via `Finite.of_fintype`.
    Conversely, one can noncomputably create a `Fintype` instance from a `Finite` instance
    via `Fintype.ofFinite`. In a proof one might write
    ```lean
      have := Fintype.ofFinite α
    ```
    to obtain such an instance.
    
    Do not write noncomputable `Fintype` instances; instead write `Finite` instances
    and use this `Fintype.ofFinite` interface.
    The `Fintype` instances should be relied upon to be computable for evaluation purposes.
    
    Theorems should use `Finite` instead of `Fintype`, unless definitions in the theorem statement
    require `Fintype`.
    Definitions should prefer `Finite` as well, unless it is important that the definitions
    are meant to be computable in the reduction or `#eval` sense.
     YtQ2Presentation.BoundaryFramedTarget.YQ2Presentation.BoundaryFramedTarget.Y (self : Q2Presentation.BoundaryFramedTarget) : TypeThe finite target group `Y`. ]
      (EQ2Presentation.Lifting.ElementaryKernel Yt :
        Q2Presentation.Lifting.ElementaryKernelQ2Presentation.Lifting.ElementaryKernel (Yt : Q2Presentation.BoundaryFramedTarget) : TypeA normal subgroup of a framed target that is killed by the decoration,
    contained in the wild kernel, **abelian**, and of **exponent 2** — the shape
    of the chief kernels the cochain keeps quantify over. 
          YtQ2Presentation.BoundaryFramedTarget)
      (lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E) :
        Module.DualModule.Dual.{u_4, u_5} (R : Type u_4) (M : Type u_5) [Semiring R] [AddCommMonoid M] [Module R M] : Type (max u_5 u_4)The left dual space of an R-module M is the R-module of linear maps `M → R`.  (ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2)
          (Q2Presentation.Lifting.NAddQ2Presentation.Lifting.NAdd {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) : TypeThe additive `F₂`-carrier of an elementary kernel.  EQ2Presentation.Lifting.ElementaryKernel Yt))
      (hinvlam ∈ Q2Presentation.Lifting.conjInvDuals E :
        lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E) Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`.
          Q2Presentation.Lifting.conjInvDualsQ2Presentation.Lifting.conjInvDuals {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) :
      Submodule (ZMod 2) (Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E))The conjugation-invariant duals `X = (R^∨)^Y = (R^∨)^C` of an
    elementary kernel (consumer spelling of the manuscript's `𝒳_R`,
    §7 l.3720–3723). 
            EQ2Presentation.Lifting.ElementaryKernel Yt) :
      (Q2Presentation.Lifting.scalarKernelQ2Presentation.Lifting.scalarKernel {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E)) :
      Subgroup Yt.Y`ker λ` as a subgroup of the ambient target: the additive kernel of
    `lam` inside `NAdd E`, read back multiplicatively and pushed along the
    subtype.  EQ2Presentation.Lifting.ElementaryKernel Yt
          lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E)).NormalSubgroup.Normal.{u_1} {G : Type u_1} [Group G] (H : Subgroup G) : PropA subgroup `H` is normal if whenever `n ∈ H`, then `g * n * g⁻¹ ∈ H` for every `g : G` 
    **Normality from invariance** (`lem:obstructionseparation`
    l.4230–4231): `λ ∈ (R^∨)^Y` makes `ker λ` conjugation-stable.  Mind the
    right-conjugation orientation `conjEndN E y m = y⁻¹ m y`: normality
    needs `y n y⁻¹ ∈ ker λ`, so invariance is applied at `y⁻¹`. 
  • defdefined in Q2Presentation/Lifting/ScalarPushout.lean
    complete
    def Q2Presentation.Lifting.scalarCoverLiftHom
      {YtQ2Presentation.BoundaryFramedTarget : Q2Presentation.BoundaryFramedTargetQ2Presentation.BoundaryFramedTarget : Type 1A **boundary-framed marked target** `𝒴 = (Y, L_Y, π_Y, θ_Y)` (manuscript
    Definition 4.1, `def:framed`): a finite group `Y` with a normal finite `2`-subgroup
    `L_Y`, a surjection `π_Y : Y ↠ H` onto a finite *tame* quotient with kernel exactly
    `L_Y`, and an *elementary decoration* `θ_Y : Y → Multiplicative E` into the
    multiplicative image of a finite `𝔽₂`-vector space `E`.  The pair
    `q_Y = (π_Y, θ_Y)` fixes both the tame quotient `Y / L_Y ≅ H` and the decoration. } [FiniteFinite.{u_3} (α : Sort u_3) : PropA type is `Finite` if it is in bijective correspondence to some `Fin n`.
    
    This is similar to `Fintype`, but `Finite` is a proposition rather than data.
    A particular benefit to this is that `Finite` instances are definitionally equal to one another
    (due to proof irrelevance) rather than being merely propositionally equal,
    and, furthermore, `Finite` instances generally avoid the need for `Decidable` instances.
    One other notable difference is that `Finite` allows there to be `Finite p` instances
    for all `p : Prop`, which is not allowed by `Fintype` due to universe constraints.
    An application of this is that `Finite (x ∈ s → β x)` follows from the general instance for pi
    types, assuming `[∀ x, Finite (β x)]`.
    Implementation note: this is a reason `Finite α` is not defined as `Nonempty (Fintype α)`.
    
    Every `Fintype` instance provides a `Finite` instance via `Finite.of_fintype`.
    Conversely, one can noncomputably create a `Fintype` instance from a `Finite` instance
    via `Fintype.ofFinite`. In a proof one might write
    ```lean
      have := Fintype.ofFinite α
    ```
    to obtain such an instance.
    
    Do not write noncomputable `Fintype` instances; instead write `Finite` instances
    and use this `Fintype.ofFinite` interface.
    The `Fintype` instances should be relied upon to be computable for evaluation purposes.
    
    Theorems should use `Finite` instead of `Fintype`, unless definitions in the theorem statement
    require `Fintype`.
    Definitions should prefer `Finite` as well, unless it is important that the definitions
    are meant to be computable in the reduction or `#eval` sense.
     YtQ2Presentation.BoundaryFramedTarget.YQ2Presentation.BoundaryFramedTarget.Y (self : Q2Presentation.BoundaryFramedTarget) : TypeThe finite target group `Y`. ]
      (EQ2Presentation.Lifting.ElementaryKernel Yt : Q2Presentation.Lifting.ElementaryKernelQ2Presentation.Lifting.ElementaryKernel (Yt : Q2Presentation.BoundaryFramedTarget) : TypeA normal subgroup of a framed target that is killed by the decoration,
    contained in the wild kernel, **abelian**, and of **exponent 2** — the shape
    of the chief kernels the cochain keeps quantify over.  YtQ2Presentation.BoundaryFramedTarget)
      (lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E) : Module.DualModule.Dual.{u_4, u_5} (R : Type u_4) (M : Type u_5) [Semiring R] [AddCommMonoid M] [Module R M] : Type (max u_5 u_4)The left dual space of an R-module M is the R-module of linear maps `M → R`.  (ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2) (Q2Presentation.Lifting.NAddQ2Presentation.Lifting.NAdd {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) : TypeThe additive `F₂`-carrier of an elementary kernel.  EQ2Presentation.Lifting.ElementaryKernel Yt))
      (hinvlam ∈ Q2Presentation.Lifting.conjInvDuals E : lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E) Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`. Q2Presentation.Lifting.conjInvDualsQ2Presentation.Lifting.conjInvDuals {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) :
      Submodule (ZMod 2) (Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E))The conjugation-invariant duals `X = (R^∨)^Y = (R^∨)^C` of an
    elementary kernel (consumer spelling of the manuscript's `𝒳_R`,
    §7 l.3720–3723).  EQ2Presentation.Lifting.ElementaryKernel Yt)
      {ΓProfiniteGrp.{0} : ProfiniteGrp.{0}ProfiniteGrp.{u_1} : Type (u_1 + 1)The category of profinite groups. A term of this type consists of a profinite
    set with a topological group structure.
    } (BQ2Presentation.BoundaryPackage Γ : Q2Presentation.BoundaryPackageQ2Presentation.BoundaryPackage (Γ : ProfiniteGrp.{0}) : TypeA **boundary package** on a profinite group `Γ`: the uniform Stage-C data of a tame
    quotient, a maximal pro-`2` quotient, and a common unramified character `ℤ₂` through which
    both factor (manuscript Prop 3.14, `prop:compatiblemarking`; plan Turn 4 §6).  The
    compatibility `tameMap ≫ ν_t = ν = pro2Map ≫ ν_2` records that the two markings agree on
    the full unramified coordinate, not merely modulo `2`.  ΓProfiniteGrp.{0})
      (FQ2Presentation.BoundaryFrame Yt : Q2Presentation.BoundaryFrameQ2Presentation.BoundaryFrame (Yt : Q2Presentation.BoundaryFramedTarget) : TypeA **boundary frame** on a boundary-framed target `𝒴` (manuscript `eq:beta`):
    the fixed compatible data `α : 𝕋_tame ↠ H`, `ψ : Π → Multiplicative E`, and the
    induced `β : ∂_bd → H × Multiplicative E`.  Surjectivity of `α` records that `H`
    really is a tame quotient (manuscript: "Fix a finite tame quotient `H`, an
    epimorphism `α : 𝕋_A ↠ H`").  YtQ2Presentation.BoundaryFramedTarget)
      (gQ2Presentation.boundaryFramedSurj B (Q2Presentation.TorsorProgram.quotientFramedTarget Yt E.N ⋯ ⋯)
      (Q2Presentation.TorsorProgram.quotientFrame Yt E.N ⋯ ⋯ F) :
        Q2Presentation.boundaryFramedSurjQ2Presentation.boundaryFramedSurj {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ)
      (Yt : Q2Presentation.BoundaryFramedTarget) (F : Q2Presentation.BoundaryFrame Yt) : TypeThe **boundary-framed surjections** `e_Γ^β(𝒴)` (manuscript `eq:eGamma`): the
    continuous surjections `f : Γ ↠ Y` whose induced map to `H × E` is the prescribed
    `β ∘ b_Γ`, i.e. `q_Y ∘ f = β ∘ b_Γ`.  This is the subtype counted in Theorem 4.2;
    its cardinality is `e_Γ^β(𝒴)`.  BQ2Presentation.BoundaryPackage Γ
          (Q2Presentation.TorsorProgram.quotientFramedTargetQ2Presentation.TorsorProgram.quotientFramedTarget (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y)
      [hNn : N.Normal] (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) : Q2Presentation.BoundaryFramedTarget**The quotient framed target** `Y/N` (same `H`, same `E`, image wild kernel).  YtQ2Presentation.BoundaryFramedTarget EQ2Presentation.Lifting.ElementaryKernel Yt.NQ2Presentation.Lifting.ElementaryKernel.N {Yt : Q2Presentation.BoundaryFramedTarget}
      (self : Q2Presentation.Lifting.ElementaryKernel Yt) : Subgroup Yt.Y  )
          (Q2Presentation.TorsorProgram.quotientFrameQ2Presentation.TorsorProgram.quotientFrame (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y)
      [hNn : N.Normal] (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) (F : Q2Presentation.BoundaryFrame Yt) :
      Q2Presentation.BoundaryFrame (Q2Presentation.TorsorProgram.quotientFramedTarget Yt N hNLY hNθ)The frame transports verbatim (`H`, `E`, `α`, `ψ`, `β` unchanged).  YtQ2Presentation.BoundaryFramedTarget EQ2Presentation.Lifting.ElementaryKernel Yt.NQ2Presentation.Lifting.ElementaryKernel.N {Yt : Q2Presentation.BoundaryFramedTarget}
      (self : Q2Presentation.Lifting.ElementaryKernel Yt) : Subgroup Yt.Y   FQ2Presentation.BoundaryFrame Yt)) :
      TypeA type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. 
    def Q2Presentation.Lifting.scalarCoverLiftHom
      {YtQ2Presentation.BoundaryFramedTarget :
        Q2Presentation.BoundaryFramedTargetQ2Presentation.BoundaryFramedTarget : Type 1A **boundary-framed marked target** `𝒴 = (Y, L_Y, π_Y, θ_Y)` (manuscript
    Definition 4.1, `def:framed`): a finite group `Y` with a normal finite `2`-subgroup
    `L_Y`, a surjection `π_Y : Y ↠ H` onto a finite *tame* quotient with kernel exactly
    `L_Y`, and an *elementary decoration* `θ_Y : Y → Multiplicative E` into the
    multiplicative image of a finite `𝔽₂`-vector space `E`.  The pair
    `q_Y = (π_Y, θ_Y)` fixes both the tame quotient `Y / L_Y ≅ H` and the decoration. }
      [FiniteFinite.{u_3} (α : Sort u_3) : PropA type is `Finite` if it is in bijective correspondence to some `Fin n`.
    
    This is similar to `Fintype`, but `Finite` is a proposition rather than data.
    A particular benefit to this is that `Finite` instances are definitionally equal to one another
    (due to proof irrelevance) rather than being merely propositionally equal,
    and, furthermore, `Finite` instances generally avoid the need for `Decidable` instances.
    One other notable difference is that `Finite` allows there to be `Finite p` instances
    for all `p : Prop`, which is not allowed by `Fintype` due to universe constraints.
    An application of this is that `Finite (x ∈ s → β x)` follows from the general instance for pi
    types, assuming `[∀ x, Finite (β x)]`.
    Implementation note: this is a reason `Finite α` is not defined as `Nonempty (Fintype α)`.
    
    Every `Fintype` instance provides a `Finite` instance via `Finite.of_fintype`.
    Conversely, one can noncomputably create a `Fintype` instance from a `Finite` instance
    via `Fintype.ofFinite`. In a proof one might write
    ```lean
      have := Fintype.ofFinite α
    ```
    to obtain such an instance.
    
    Do not write noncomputable `Fintype` instances; instead write `Finite` instances
    and use this `Fintype.ofFinite` interface.
    The `Fintype` instances should be relied upon to be computable for evaluation purposes.
    
    Theorems should use `Finite` instead of `Fintype`, unless definitions in the theorem statement
    require `Fintype`.
    Definitions should prefer `Finite` as well, unless it is important that the definitions
    are meant to be computable in the reduction or `#eval` sense.
     YtQ2Presentation.BoundaryFramedTarget.YQ2Presentation.BoundaryFramedTarget.Y (self : Q2Presentation.BoundaryFramedTarget) : TypeThe finite target group `Y`. ]
      (EQ2Presentation.Lifting.ElementaryKernel Yt :
        Q2Presentation.Lifting.ElementaryKernelQ2Presentation.Lifting.ElementaryKernel (Yt : Q2Presentation.BoundaryFramedTarget) : TypeA normal subgroup of a framed target that is killed by the decoration,
    contained in the wild kernel, **abelian**, and of **exponent 2** — the shape
    of the chief kernels the cochain keeps quantify over. 
          YtQ2Presentation.BoundaryFramedTarget)
      (lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E) :
        Module.DualModule.Dual.{u_4, u_5} (R : Type u_4) (M : Type u_5) [Semiring R] [AddCommMonoid M] [Module R M] : Type (max u_5 u_4)The left dual space of an R-module M is the R-module of linear maps `M → R`.  (ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2)
          (Q2Presentation.Lifting.NAddQ2Presentation.Lifting.NAdd {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) : TypeThe additive `F₂`-carrier of an elementary kernel.  EQ2Presentation.Lifting.ElementaryKernel Yt))
      (hinvlam ∈ Q2Presentation.Lifting.conjInvDuals E :
        lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E) Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`.
          Q2Presentation.Lifting.conjInvDualsQ2Presentation.Lifting.conjInvDuals {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) :
      Submodule (ZMod 2) (Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E))The conjugation-invariant duals `X = (R^∨)^Y = (R^∨)^C` of an
    elementary kernel (consumer spelling of the manuscript's `𝒳_R`,
    §7 l.3720–3723). 
            EQ2Presentation.Lifting.ElementaryKernel Yt)
      {ΓProfiniteGrp.{0} : ProfiniteGrp.{0}ProfiniteGrp.{u_1} : Type (u_1 + 1)The category of profinite groups. A term of this type consists of a profinite
    set with a topological group structure.
    }
      (BQ2Presentation.BoundaryPackage Γ : Q2Presentation.BoundaryPackageQ2Presentation.BoundaryPackage (Γ : ProfiniteGrp.{0}) : TypeA **boundary package** on a profinite group `Γ`: the uniform Stage-C data of a tame
    quotient, a maximal pro-`2` quotient, and a common unramified character `ℤ₂` through which
    both factor (manuscript Prop 3.14, `prop:compatiblemarking`; plan Turn 4 §6).  The
    compatibility `tameMap ≫ ν_t = ν = pro2Map ≫ ν_2` records that the two markings agree on
    the full unramified coordinate, not merely modulo `2`.  ΓProfiniteGrp.{0})
      (FQ2Presentation.BoundaryFrame Yt : Q2Presentation.BoundaryFrameQ2Presentation.BoundaryFrame (Yt : Q2Presentation.BoundaryFramedTarget) : TypeA **boundary frame** on a boundary-framed target `𝒴` (manuscript `eq:beta`):
    the fixed compatible data `α : 𝕋_tame ↠ H`, `ψ : Π → Multiplicative E`, and the
    induced `β : ∂_bd → H × Multiplicative E`.  Surjectivity of `α` records that `H`
    really is a tame quotient (manuscript: "Fix a finite tame quotient `H`, an
    epimorphism `α : 𝕋_A ↠ H`").  YtQ2Presentation.BoundaryFramedTarget)
      (gQ2Presentation.boundaryFramedSurj B (Q2Presentation.TorsorProgram.quotientFramedTarget Yt E.N ⋯ ⋯)
      (Q2Presentation.TorsorProgram.quotientFrame Yt E.N ⋯ ⋯ F) :
        Q2Presentation.boundaryFramedSurjQ2Presentation.boundaryFramedSurj {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ)
      (Yt : Q2Presentation.BoundaryFramedTarget) (F : Q2Presentation.BoundaryFrame Yt) : TypeThe **boundary-framed surjections** `e_Γ^β(𝒴)` (manuscript `eq:eGamma`): the
    continuous surjections `f : Γ ↠ Y` whose induced map to `H × E` is the prescribed
    `β ∘ b_Γ`, i.e. `q_Y ∘ f = β ∘ b_Γ`.  This is the subtype counted in Theorem 4.2;
    its cardinality is `e_Γ^β(𝒴)`.  BQ2Presentation.BoundaryPackage Γ
          (Q2Presentation.TorsorProgram.quotientFramedTargetQ2Presentation.TorsorProgram.quotientFramedTarget (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y)
      [hNn : N.Normal] (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) : Q2Presentation.BoundaryFramedTarget**The quotient framed target** `Y/N` (same `H`, same `E`, image wild kernel). 
            YtQ2Presentation.BoundaryFramedTarget EQ2Presentation.Lifting.ElementaryKernel Yt.NQ2Presentation.Lifting.ElementaryKernel.N {Yt : Q2Presentation.BoundaryFramedTarget}
      (self : Q2Presentation.Lifting.ElementaryKernel Yt) : Subgroup Yt.Y  )
          (Q2Presentation.TorsorProgram.quotientFrameQ2Presentation.TorsorProgram.quotientFrame (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y)
      [hNn : N.Normal] (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) (F : Q2Presentation.BoundaryFrame Yt) :
      Q2Presentation.BoundaryFrame (Q2Presentation.TorsorProgram.quotientFramedTarget Yt N hNLY hNθ)The frame transports verbatim (`H`, `E`, `α`, `ψ`, `β` unchanged). 
            YtQ2Presentation.BoundaryFramedTarget EQ2Presentation.Lifting.ElementaryKernel Yt.NQ2Presentation.Lifting.ElementaryKernel.N {Yt : Q2Presentation.BoundaryFramedTarget}
      (self : Q2Presentation.Lifting.ElementaryKernel Yt) : Subgroup Yt.Y   FQ2Presentation.BoundaryFrame Yt)) :
      TypeA type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. 
    **Cover lifts of `g`** (`lem:obstructionseparation` l.4219–4223):
    framed homs `Γ ⟶ B_λ` over `g` — surjectivity NOT imposed (the
    manuscript's compatible lifts: `λ_*o` measures weak liftability; images
    are stratified by `eq:recursionR2`/`R3` later). 
Proof

Proved in §8 of the paper. Ingredients: Lemma 7.2.

Proposition 8.11 of the paper (Fourier inversion for the final Frattini obstruction).

Assume R\ne1 and put

z_R=|Z^1_{\Gamma,\rho}(R)| =2^{2\dim R+\dim\mathcal X_R}.

For \lambda\in\mathcal X_R, let m_{\Gamma,\lambda}(B) be the number of exact-image maps to B for which the scalar pushout \lambda_*o_R vanishes. Then m_{\Gamma,0}(B)=e_\Gamma(B) and

\boxed{ e_\Gamma(Y)=\frac{z_R}{|\mathcal X_R|} \sum_{\lambda\in\mathcal X_R} \bigl(2m_{\Gamma,\lambda}(B)-e_\Gamma(B)\bigr).}

Lean code for Theorem8.1110 declarations
  • defdefined in Q2Presentation/Induction/BlockRealizationAssembly.lean
    complete
    def Q2Presentation.Induction.BlockR.blockCountingPartialFormula
      {pQ2Presentation.Induction.FramedPair : Q2Presentation.Induction.FramedPairQ2Presentation.Induction.FramedPair : Type 1A **framed pair** `(𝒴, F)`: a boundary-framed marked target together with a
    boundary frame for it (manuscript Definition 4.1 + `eq:beta`).  This is the index of
    Theorem 4.2: the boundary-framed surjection count `e_Γ^β` is a function of the pair.
    The induction of `sec:induction` ranges over *all* such pairs simultaneously
    ("the induction is stated globally", l.1213), ordered by `|L_Y|`. }
      (chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p : Q2Presentation.Induction.FirstNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor (p : Q2Presentation.Induction.FramedPair) : TypeA non-scalar chief factor of `L_Y` that is **first**: every chief factor strictly
    below it (i.e. with upper term contained in `lower`) is scalar.  This is the manuscript's
    choice `S ◁ P` at l.3616–3623 ("all chief factors below `S` are scalar and `V` is the
    first non-scalar simple factor"), which `lem:collapse` requires for the coprime step
    `[S, Ñ] = 1`.  pQ2Presentation.Induction.FramedPair)
      (KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor :
        Q2Presentation.Induction.KernelMinimalQ2Presentation.Induction.KernelMinimal {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.NonScalarChiefFactor p) : TypeThe manuscript's kernel choice (l.3623): `K ◁ Y`, `K ≤ P`, `KS = P`, and `K` is
    **⊆-minimal** with these properties — stated as: any `Y`-normal `K' ≤ K` still joining
    with `S` to `P` equals `K`.  (This, not leastness among all candidates, is what
    `lem:simplehead` and `lem:collapse` use: both apply it to subgroups of `K`.)  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p.toNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor.toNonScalarChiefFactor {p : Q2Presentation.Induction.FramedPair}
      (self : Q2Presentation.Induction.FirstNonScalarChiefFactor p) : Q2Presentation.Induction.NonScalarChiefFactor p)
      (XQ2Presentation.Induction.MinimalBlockPreheadInvariantCharacterData
      (Q2Presentation.Induction.sec7RawTowerPacketCanonical chief K).preheadTowerData :
        Q2Presentation.Induction.MinimalBlockPreheadInvariantCharacterDataQ2Presentation.Induction.MinimalBlockPreheadInvariantCharacterData {p : Q2Presentation.Induction.FramedPair}
      {chief : Q2Presentation.Induction.NonScalarChiefFactor p}
      (D : Q2Presentation.Induction.MinimalBlockPreheadTowerData p chief) : PropNonzero invariant determinant characters over a pre-head Section 7 tower.
    
    This is the same Frattini-character input as `MinimalBlockInvariantCharacterData`,
    but stated before `M/T` has been proved nonzero. 
          (Q2Presentation.Induction.sec7RawTowerPacketCanonicalQ2Presentation.Induction.sec7RawTowerPacketCanonical {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Induction.Sec7RawTowerPacket chief KThe canonical raw tower packet — the literal §7 constructors (checkpoint-F9).
    Using this definitional packet (instead of an opaque `Nonempty`-obtained one) lets the
    crux-lowered pushout packet of `Section7PushoutConstruction` be consumed directly.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p
              KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).preheadTowerDataQ2Presentation.Induction.Sec7RawTowerPacket.preheadTowerData {p : Q2Presentation.Induction.FramedPair}
      {chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p}
      {K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor}
      (T : Q2Presentation.Induction.Sec7RawTowerPacket chief K) :
      Q2Presentation.Induction.MinimalBlockPreheadTowerData p chief.toNonScalarChiefFactorThe pre-head tower assembled from the packet. )
      (FdetQ2Presentation.Induction.MinimalBlockPreheadExtraspecialEquivariantFamilyData
      (Q2Presentation.Induction.sec7RawTowerPacketCanonical chief K).preheadTowerData :
        Q2Presentation.Induction.MinimalBlockPreheadExtraspecialEquivariantFamilyDataQ2Presentation.Induction.MinimalBlockPreheadExtraspecialEquivariantFamilyData {p : Q2Presentation.Induction.FramedPair}
      {chief : Q2Presentation.Induction.NonScalarChiefFactor p}
      (D : Q2Presentation.Induction.MinimalBlockPreheadTowerData p chief) : TypeEquivariant extraspecial self-duality data over a pre-head tower.
    
    This is now an assembled packet: the bare central-pushout self-duality family and
    its `C`-naturality/diagonal-invariance proof are separated below, then reassembled
    here for the existing downstream pre-head determinant interfaces. 
          (Q2Presentation.Induction.sec7RawTowerPacketCanonicalQ2Presentation.Induction.sec7RawTowerPacketCanonical {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Induction.Sec7RawTowerPacket chief KThe canonical raw tower packet — the literal §7 constructors (checkpoint-F9).
    Using this definitional packet (instead of an opaque `Nonempty`-obtained one) lets the
    crux-lowered pushout packet of `Section7PushoutConstruction` be consumed directly.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p
              KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).preheadTowerDataQ2Presentation.Induction.Sec7RawTowerPacket.preheadTowerData {p : Q2Presentation.Induction.FramedPair}
      {chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p}
      {K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor}
      (T : Q2Presentation.Induction.Sec7RawTowerPacket chief K) :
      Q2Presentation.Induction.MinimalBlockPreheadTowerData p chief.toNonScalarChiefFactorThe pre-head tower assembled from the packet. )
      (AQ2Presentation.Induction.MinimalBlockPreheadExtraspecialAnnihilationData Fdet :
        Q2Presentation.Induction.MinimalBlockPreheadExtraspecialAnnihilationDataQ2Presentation.Induction.MinimalBlockPreheadExtraspecialAnnihilationData {p : Q2Presentation.Induction.FramedPair}
      {chief : Q2Presentation.Induction.NonScalarChiefFactor p}
      {D : Q2Presentation.Induction.MinimalBlockPreheadTowerData p chief}
      (F : Q2Presentation.Induction.MinimalBlockPreheadExtraspecialEquivariantFamilyData D) : PropThe two annihilation conclusions of `prop:simpleheaddet`, stated over the
    pre-head equivariant determinant family. 
          FdetQ2Presentation.Induction.MinimalBlockPreheadExtraspecialEquivariantFamilyData
      (Q2Presentation.Induction.sec7RawTowerPacketCanonical chief K).preheadTowerData)
      (RdetQ2Presentation.Induction.MinimalBlockPreheadExtraspecialRadicalData Fdet :
        Q2Presentation.Induction.MinimalBlockPreheadExtraspecialRadicalDataQ2Presentation.Induction.MinimalBlockPreheadExtraspecialRadicalData {p : Q2Presentation.Induction.FramedPair}
      {chief : Q2Presentation.Induction.NonScalarChiefFactor p}
      {D : Q2Presentation.Induction.MinimalBlockPreheadTowerData p chief}
      (F : Q2Presentation.Induction.MinimalBlockPreheadExtraspecialEquivariantFamilyData D) : PropThe polar-radical containment conclusion of `prop:simpleheaddet`, stated before
    the head-nontrivial field is installed. 
          FdetQ2Presentation.Induction.MinimalBlockPreheadExtraspecialEquivariantFamilyData
      (Q2Presentation.Induction.sec7RawTowerPacketCanonical chief K).preheadTowerData)
      (NQ2Presentation.Induction.MinimalBlockPreheadExtraspecialNonzeroData Fdet :
        Q2Presentation.Induction.MinimalBlockPreheadExtraspecialNonzeroDataQ2Presentation.Induction.MinimalBlockPreheadExtraspecialNonzeroData {p : Q2Presentation.Induction.FramedPair}
      {chief : Q2Presentation.Induction.NonScalarChiefFactor p}
      {D : Q2Presentation.Induction.MinimalBlockPreheadTowerData p chief}
      (F : Q2Presentation.Induction.MinimalBlockPreheadExtraspecialEquivariantFamilyData D) : PropThe nonzero diagonal conclusion of `prop:simpleheaddet`, stated before the
    head-nontrivial field is installed. 
          FdetQ2Presentation.Induction.MinimalBlockPreheadExtraspecialEquivariantFamilyData
      (Q2Presentation.Induction.sec7RawTowerPacketCanonical chief K).preheadTowerData)
      (h¬Q2Presentation.Induction.ScalarTerminal p : ¬Not (a : Prop) : Prop`Not p`, or `¬p`, is the negation of `p`. It is defined to be `p → False`,
    so if your goal is `¬p` you can use `intro h` to turn the goal into
    `h : p ⊢ False`, and if you have `hn : ¬p` and `h : p` then `hn h : False`
    and `(hn h).elim` will prove anything.
    For more information: [Propositional Logic](https://lean-lang.org/theorem_proving_in_lean4/propositions_and_proofs.html#propositional-logic)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `¬` in identifiers is `not`.Q2Presentation.Induction.ScalarTerminalQ2Presentation.Induction.ScalarTerminal (p : Q2Presentation.Induction.FramedPair) : Prop**Scalar-terminal framed pair.**  pQ2Presentation.Induction.FramedPair)
      (LQ2Presentation.Induction.CentralCoverLiftTorsorData (Q2Presentation.Induction.BlockR.Bstar chief K X Fdet A Rdet N h) :
        Q2Presentation.Induction.CentralCoverLiftTorsorDataQ2Presentation.Induction.CentralCoverLiftTorsorData {p : Q2Presentation.Induction.FramedPair}
      (B : Q2Presentation.Induction.MinimalBlock p) : Type 1The per-source lift-torsor and exact-image orbit data needed for the
    `prop:finalfourier` numerator over a fixed minimal block.
    
    This is strictly weaker than `CoverRealization B`: it contains only the finite
    lift indices, obstruction maps, `Z^1(R)` torsor fibres, and the two
    boundary-framed surjection decompositions.  It does not assert any recursive
    children or any source-independent partial-count recipe. 
          (Q2Presentation.Induction.BlockR.BstarQ2Presentation.Induction.BlockR.Bstar {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (X :
        Q2Presentation.Induction.MinimalBlockPreheadInvariantCharacterData
          (Q2Presentation.Induction.sec7RawTowerPacketCanonical chief K).preheadTowerData)
      (Fdet :
        Q2Presentation.Induction.MinimalBlockPreheadExtraspecialEquivariantFamilyData
          (Q2Presentation.Induction.sec7RawTowerPacketCanonical chief K).preheadTowerData)
      (A : Q2Presentation.Induction.MinimalBlockPreheadExtraspecialAnnihilationData Fdet)
      (Rdet : Q2Presentation.Induction.MinimalBlockPreheadExtraspecialRadicalData Fdet)
      (N : Q2Presentation.Induction.MinimalBlockPreheadExtraspecialNonzeroData Fdet)
      (h : ¬Q2Presentation.Induction.ScalarTerminal p) : Q2Presentation.Induction.MinimalBlock pThe pinned block.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor XQ2Presentation.Induction.MinimalBlockPreheadInvariantCharacterData
      (Q2Presentation.Induction.sec7RawTowerPacketCanonical chief K).preheadTowerData FdetQ2Presentation.Induction.MinimalBlockPreheadExtraspecialEquivariantFamilyData
      (Q2Presentation.Induction.sec7RawTowerPacketCanonical chief K).preheadTowerData AQ2Presentation.Induction.MinimalBlockPreheadExtraspecialAnnihilationData Fdet RdetQ2Presentation.Induction.MinimalBlockPreheadExtraspecialRadicalData Fdet NQ2Presentation.Induction.MinimalBlockPreheadExtraspecialNonzeroData Fdet h¬Q2Presentation.Induction.ScalarTerminal p))
      (CQ2Presentation.Induction.CentralCoverChildrenData (Q2Presentation.Induction.BlockR.Bstar chief K X Fdet A Rdet N h) :
        Q2Presentation.Induction.CentralCoverChildrenDataQ2Presentation.Induction.CentralCoverChildrenData {p : Q2Presentation.Induction.FramedPair}
      (B : Q2Presentation.Induction.MinimalBlock p) : Type 1Strictly smaller recursive targets, isolated from the partial-count formula.
    
    Manuscript anchor: `lem:strictdecrease`. 
          (Q2Presentation.Induction.BlockR.BstarQ2Presentation.Induction.BlockR.Bstar {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (X :
        Q2Presentation.Induction.MinimalBlockPreheadInvariantCharacterData
          (Q2Presentation.Induction.sec7RawTowerPacketCanonical chief K).preheadTowerData)
      (Fdet :
        Q2Presentation.Induction.MinimalBlockPreheadExtraspecialEquivariantFamilyData
          (Q2Presentation.Induction.sec7RawTowerPacketCanonical chief K).preheadTowerData)
      (A : Q2Presentation.Induction.MinimalBlockPreheadExtraspecialAnnihilationData Fdet)
      (Rdet : Q2Presentation.Induction.MinimalBlockPreheadExtraspecialRadicalData Fdet)
      (N : Q2Presentation.Induction.MinimalBlockPreheadExtraspecialNonzeroData Fdet)
      (h : ¬Q2Presentation.Induction.ScalarTerminal p) : Q2Presentation.Induction.MinimalBlock pThe pinned block.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor XQ2Presentation.Induction.MinimalBlockPreheadInvariantCharacterData
      (Q2Presentation.Induction.sec7RawTowerPacketCanonical chief K).preheadTowerData FdetQ2Presentation.Induction.MinimalBlockPreheadExtraspecialEquivariantFamilyData
      (Q2Presentation.Induction.sec7RawTowerPacketCanonical chief K).preheadTowerData AQ2Presentation.Induction.MinimalBlockPreheadExtraspecialAnnihilationData Fdet RdetQ2Presentation.Induction.MinimalBlockPreheadExtraspecialRadicalData Fdet NQ2Presentation.Induction.MinimalBlockPreheadExtraspecialNonzeroData Fdet
            h¬Q2Presentation.Induction.ScalarTerminal p)) :
      Q2Presentation.Induction.CentralCoverSourcePartialFormulaQ2Presentation.Induction.CentralCoverSourcePartialFormula {p : Q2Presentation.Induction.FramedPair}
      (B : Q2Presentation.Induction.MinimalBlock p) (T : Q2Presentation.Induction.CentralCoverLiftTorsorData B)
      (C : Q2Presentation.Induction.CentralCoverChildrenData B) : TypeThe source-side formula components whose sum is the partial-count recipe.
    
    These are the finite/combinatorial pieces of `eq:recursionR2` through
    `eq:phasecovertransform`: elementary lifting, proper-image subtraction,
    nonzero radical-edge terms, zero-edge constrained Gauss terms, and phase-cover
    transforms.  The terms are kept separate so the public partial-data theorem is
    not a single arbitrary function. 
        (Q2Presentation.Induction.BlockR.BstarQ2Presentation.Induction.BlockR.Bstar {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (X :
        Q2Presentation.Induction.MinimalBlockPreheadInvariantCharacterData
          (Q2Presentation.Induction.sec7RawTowerPacketCanonical chief K).preheadTowerData)
      (Fdet :
        Q2Presentation.Induction.MinimalBlockPreheadExtraspecialEquivariantFamilyData
          (Q2Presentation.Induction.sec7RawTowerPacketCanonical chief K).preheadTowerData)
      (A : Q2Presentation.Induction.MinimalBlockPreheadExtraspecialAnnihilationData Fdet)
      (Rdet : Q2Presentation.Induction.MinimalBlockPreheadExtraspecialRadicalData Fdet)
      (N : Q2Presentation.Induction.MinimalBlockPreheadExtraspecialNonzeroData Fdet)
      (h : ¬Q2Presentation.Induction.ScalarTerminal p) : Q2Presentation.Induction.MinimalBlock pThe pinned block.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor XQ2Presentation.Induction.MinimalBlockPreheadInvariantCharacterData
      (Q2Presentation.Induction.sec7RawTowerPacketCanonical chief K).preheadTowerData FdetQ2Presentation.Induction.MinimalBlockPreheadExtraspecialEquivariantFamilyData
      (Q2Presentation.Induction.sec7RawTowerPacketCanonical chief K).preheadTowerData AQ2Presentation.Induction.MinimalBlockPreheadExtraspecialAnnihilationData Fdet RdetQ2Presentation.Induction.MinimalBlockPreheadExtraspecialRadicalData Fdet NQ2Presentation.Induction.MinimalBlockPreheadExtraspecialNonzeroData Fdet h¬Q2Presentation.Induction.ScalarTerminal p) LQ2Presentation.Induction.CentralCoverLiftTorsorData (Q2Presentation.Induction.BlockR.Bstar chief K X Fdet A Rdet N h)
        CQ2Presentation.Induction.CentralCoverChildrenData (Q2Presentation.Induction.BlockR.Bstar chief K X Fdet A Rdet N h)
    def Q2Presentation.Induction.BlockR.blockCountingPartialFormula
      {pQ2Presentation.Induction.FramedPair :
        Q2Presentation.Induction.FramedPairQ2Presentation.Induction.FramedPair : Type 1A **framed pair** `(𝒴, F)`: a boundary-framed marked target together with a
    boundary frame for it (manuscript Definition 4.1 + `eq:beta`).  This is the index of
    Theorem 4.2: the boundary-framed surjection count `e_Γ^β` is a function of the pair.
    The induction of `sec:induction` ranges over *all* such pairs simultaneously
    ("the induction is stated globally", l.1213), ordered by `|L_Y|`. }
      (chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p :
        Q2Presentation.Induction.FirstNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor (p : Q2Presentation.Induction.FramedPair) : TypeA non-scalar chief factor of `L_Y` that is **first**: every chief factor strictly
    below it (i.e. with upper term contained in `lower`) is scalar.  This is the manuscript's
    choice `S ◁ P` at l.3616–3623 ("all chief factors below `S` are scalar and `V` is the
    first non-scalar simple factor"), which `lem:collapse` requires for the coprime step
    `[S, Ñ] = 1`. 
          pQ2Presentation.Induction.FramedPair)
      (KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor :
        Q2Presentation.Induction.KernelMinimalQ2Presentation.Induction.KernelMinimal {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.NonScalarChiefFactor p) : TypeThe manuscript's kernel choice (l.3623): `K ◁ Y`, `K ≤ P`, `KS = P`, and `K` is
    **⊆-minimal** with these properties — stated as: any `Y`-normal `K' ≤ K` still joining
    with `S` to `P` equals `K`.  (This, not leastness among all candidates, is what
    `lem:simplehead` and `lem:collapse` use: both apply it to subgroups of `K`.) 
          chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p.toNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor.toNonScalarChiefFactor {p : Q2Presentation.Induction.FramedPair}
      (self : Q2Presentation.Induction.FirstNonScalarChiefFactor p) : Q2Presentation.Induction.NonScalarChiefFactor p)
      (XQ2Presentation.Induction.MinimalBlockPreheadInvariantCharacterData
      (Q2Presentation.Induction.sec7RawTowerPacketCanonical chief K).preheadTowerData :
        Q2Presentation.Induction.MinimalBlockPreheadInvariantCharacterDataQ2Presentation.Induction.MinimalBlockPreheadInvariantCharacterData {p : Q2Presentation.Induction.FramedPair}
      {chief : Q2Presentation.Induction.NonScalarChiefFactor p}
      (D : Q2Presentation.Induction.MinimalBlockPreheadTowerData p chief) : PropNonzero invariant determinant characters over a pre-head Section 7 tower.
    
    This is the same Frattini-character input as `MinimalBlockInvariantCharacterData`,
    but stated before `M/T` has been proved nonzero. 
          (Q2Presentation.Induction.sec7RawTowerPacketCanonicalQ2Presentation.Induction.sec7RawTowerPacketCanonical {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Induction.Sec7RawTowerPacket chief KThe canonical raw tower packet — the literal §7 constructors (checkpoint-F9).
    Using this definitional packet (instead of an opaque `Nonempty`-obtained one) lets the
    crux-lowered pushout packet of `Section7PushoutConstruction` be consumed directly. 
              chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).preheadTowerDataQ2Presentation.Induction.Sec7RawTowerPacket.preheadTowerData {p : Q2Presentation.Induction.FramedPair}
      {chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p}
      {K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor}
      (T : Q2Presentation.Induction.Sec7RawTowerPacket chief K) :
      Q2Presentation.Induction.MinimalBlockPreheadTowerData p chief.toNonScalarChiefFactorThe pre-head tower assembled from the packet. )
      (FdetQ2Presentation.Induction.MinimalBlockPreheadExtraspecialEquivariantFamilyData
      (Q2Presentation.Induction.sec7RawTowerPacketCanonical chief K).preheadTowerData :
        Q2Presentation.Induction.MinimalBlockPreheadExtraspecialEquivariantFamilyDataQ2Presentation.Induction.MinimalBlockPreheadExtraspecialEquivariantFamilyData {p : Q2Presentation.Induction.FramedPair}
      {chief : Q2Presentation.Induction.NonScalarChiefFactor p}
      (D : Q2Presentation.Induction.MinimalBlockPreheadTowerData p chief) : TypeEquivariant extraspecial self-duality data over a pre-head tower.
    
    This is now an assembled packet: the bare central-pushout self-duality family and
    its `C`-naturality/diagonal-invariance proof are separated below, then reassembled
    here for the existing downstream pre-head determinant interfaces. 
          (Q2Presentation.Induction.sec7RawTowerPacketCanonicalQ2Presentation.Induction.sec7RawTowerPacketCanonical {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Induction.Sec7RawTowerPacket chief KThe canonical raw tower packet — the literal §7 constructors (checkpoint-F9).
    Using this definitional packet (instead of an opaque `Nonempty`-obtained one) lets the
    crux-lowered pushout packet of `Section7PushoutConstruction` be consumed directly. 
              chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).preheadTowerDataQ2Presentation.Induction.Sec7RawTowerPacket.preheadTowerData {p : Q2Presentation.Induction.FramedPair}
      {chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p}
      {K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor}
      (T : Q2Presentation.Induction.Sec7RawTowerPacket chief K) :
      Q2Presentation.Induction.MinimalBlockPreheadTowerData p chief.toNonScalarChiefFactorThe pre-head tower assembled from the packet. )
      (AQ2Presentation.Induction.MinimalBlockPreheadExtraspecialAnnihilationData Fdet :
        Q2Presentation.Induction.MinimalBlockPreheadExtraspecialAnnihilationDataQ2Presentation.Induction.MinimalBlockPreheadExtraspecialAnnihilationData {p : Q2Presentation.Induction.FramedPair}
      {chief : Q2Presentation.Induction.NonScalarChiefFactor p}
      {D : Q2Presentation.Induction.MinimalBlockPreheadTowerData p chief}
      (F : Q2Presentation.Induction.MinimalBlockPreheadExtraspecialEquivariantFamilyData D) : PropThe two annihilation conclusions of `prop:simpleheaddet`, stated over the
    pre-head equivariant determinant family. 
          FdetQ2Presentation.Induction.MinimalBlockPreheadExtraspecialEquivariantFamilyData
      (Q2Presentation.Induction.sec7RawTowerPacketCanonical chief K).preheadTowerData)
      (RdetQ2Presentation.Induction.MinimalBlockPreheadExtraspecialRadicalData Fdet :
        Q2Presentation.Induction.MinimalBlockPreheadExtraspecialRadicalDataQ2Presentation.Induction.MinimalBlockPreheadExtraspecialRadicalData {p : Q2Presentation.Induction.FramedPair}
      {chief : Q2Presentation.Induction.NonScalarChiefFactor p}
      {D : Q2Presentation.Induction.MinimalBlockPreheadTowerData p chief}
      (F : Q2Presentation.Induction.MinimalBlockPreheadExtraspecialEquivariantFamilyData D) : PropThe polar-radical containment conclusion of `prop:simpleheaddet`, stated before
    the head-nontrivial field is installed. 
          FdetQ2Presentation.Induction.MinimalBlockPreheadExtraspecialEquivariantFamilyData
      (Q2Presentation.Induction.sec7RawTowerPacketCanonical chief K).preheadTowerData)
      (NQ2Presentation.Induction.MinimalBlockPreheadExtraspecialNonzeroData Fdet :
        Q2Presentation.Induction.MinimalBlockPreheadExtraspecialNonzeroDataQ2Presentation.Induction.MinimalBlockPreheadExtraspecialNonzeroData {p : Q2Presentation.Induction.FramedPair}
      {chief : Q2Presentation.Induction.NonScalarChiefFactor p}
      {D : Q2Presentation.Induction.MinimalBlockPreheadTowerData p chief}
      (F : Q2Presentation.Induction.MinimalBlockPreheadExtraspecialEquivariantFamilyData D) : PropThe nonzero diagonal conclusion of `prop:simpleheaddet`, stated before the
    head-nontrivial field is installed. 
          FdetQ2Presentation.Induction.MinimalBlockPreheadExtraspecialEquivariantFamilyData
      (Q2Presentation.Induction.sec7RawTowerPacketCanonical chief K).preheadTowerData)
      (h¬Q2Presentation.Induction.ScalarTerminal p :
        ¬Not (a : Prop) : Prop`Not p`, or `¬p`, is the negation of `p`. It is defined to be `p → False`,
    so if your goal is `¬p` you can use `intro h` to turn the goal into
    `h : p ⊢ False`, and if you have `hn : ¬p` and `h : p` then `hn h : False`
    and `(hn h).elim` will prove anything.
    For more information: [Propositional Logic](https://lean-lang.org/theorem_proving_in_lean4/propositions_and_proofs.html#propositional-logic)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `¬` in identifiers is `not`.Q2Presentation.Induction.ScalarTerminalQ2Presentation.Induction.ScalarTerminal (p : Q2Presentation.Induction.FramedPair) : Prop**Scalar-terminal framed pair.** 
            pQ2Presentation.Induction.FramedPair)
      (LQ2Presentation.Induction.CentralCoverLiftTorsorData (Q2Presentation.Induction.BlockR.Bstar chief K X Fdet A Rdet N h) :
        Q2Presentation.Induction.CentralCoverLiftTorsorDataQ2Presentation.Induction.CentralCoverLiftTorsorData {p : Q2Presentation.Induction.FramedPair}
      (B : Q2Presentation.Induction.MinimalBlock p) : Type 1The per-source lift-torsor and exact-image orbit data needed for the
    `prop:finalfourier` numerator over a fixed minimal block.
    
    This is strictly weaker than `CoverRealization B`: it contains only the finite
    lift indices, obstruction maps, `Z^1(R)` torsor fibres, and the two
    boundary-framed surjection decompositions.  It does not assert any recursive
    children or any source-independent partial-count recipe. 
          (Q2Presentation.Induction.BlockR.BstarQ2Presentation.Induction.BlockR.Bstar {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (X :
        Q2Presentation.Induction.MinimalBlockPreheadInvariantCharacterData
          (Q2Presentation.Induction.sec7RawTowerPacketCanonical chief K).preheadTowerData)
      (Fdet :
        Q2Presentation.Induction.MinimalBlockPreheadExtraspecialEquivariantFamilyData
          (Q2Presentation.Induction.sec7RawTowerPacketCanonical chief K).preheadTowerData)
      (A : Q2Presentation.Induction.MinimalBlockPreheadExtraspecialAnnihilationData Fdet)
      (Rdet : Q2Presentation.Induction.MinimalBlockPreheadExtraspecialRadicalData Fdet)
      (N : Q2Presentation.Induction.MinimalBlockPreheadExtraspecialNonzeroData Fdet)
      (h : ¬Q2Presentation.Induction.ScalarTerminal p) : Q2Presentation.Induction.MinimalBlock pThe pinned block. 
            chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor XQ2Presentation.Induction.MinimalBlockPreheadInvariantCharacterData
      (Q2Presentation.Induction.sec7RawTowerPacketCanonical chief K).preheadTowerData FdetQ2Presentation.Induction.MinimalBlockPreheadExtraspecialEquivariantFamilyData
      (Q2Presentation.Induction.sec7RawTowerPacketCanonical chief K).preheadTowerData AQ2Presentation.Induction.MinimalBlockPreheadExtraspecialAnnihilationData Fdet RdetQ2Presentation.Induction.MinimalBlockPreheadExtraspecialRadicalData Fdet NQ2Presentation.Induction.MinimalBlockPreheadExtraspecialNonzeroData Fdet h¬Q2Presentation.Induction.ScalarTerminal p))
      (CQ2Presentation.Induction.CentralCoverChildrenData (Q2Presentation.Induction.BlockR.Bstar chief K X Fdet A Rdet N h) :
        Q2Presentation.Induction.CentralCoverChildrenDataQ2Presentation.Induction.CentralCoverChildrenData {p : Q2Presentation.Induction.FramedPair}
      (B : Q2Presentation.Induction.MinimalBlock p) : Type 1Strictly smaller recursive targets, isolated from the partial-count formula.
    
    Manuscript anchor: `lem:strictdecrease`. 
          (Q2Presentation.Induction.BlockR.BstarQ2Presentation.Induction.BlockR.Bstar {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (X :
        Q2Presentation.Induction.MinimalBlockPreheadInvariantCharacterData
          (Q2Presentation.Induction.sec7RawTowerPacketCanonical chief K).preheadTowerData)
      (Fdet :
        Q2Presentation.Induction.MinimalBlockPreheadExtraspecialEquivariantFamilyData
          (Q2Presentation.Induction.sec7RawTowerPacketCanonical chief K).preheadTowerData)
      (A : Q2Presentation.Induction.MinimalBlockPreheadExtraspecialAnnihilationData Fdet)
      (Rdet : Q2Presentation.Induction.MinimalBlockPreheadExtraspecialRadicalData Fdet)
      (N : Q2Presentation.Induction.MinimalBlockPreheadExtraspecialNonzeroData Fdet)
      (h : ¬Q2Presentation.Induction.ScalarTerminal p) : Q2Presentation.Induction.MinimalBlock pThe pinned block. 
            chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor XQ2Presentation.Induction.MinimalBlockPreheadInvariantCharacterData
      (Q2Presentation.Induction.sec7RawTowerPacketCanonical chief K).preheadTowerData FdetQ2Presentation.Induction.MinimalBlockPreheadExtraspecialEquivariantFamilyData
      (Q2Presentation.Induction.sec7RawTowerPacketCanonical chief K).preheadTowerData AQ2Presentation.Induction.MinimalBlockPreheadExtraspecialAnnihilationData Fdet RdetQ2Presentation.Induction.MinimalBlockPreheadExtraspecialRadicalData Fdet NQ2Presentation.Induction.MinimalBlockPreheadExtraspecialNonzeroData Fdet h¬Q2Presentation.Induction.ScalarTerminal p)) :
      Q2Presentation.Induction.CentralCoverSourcePartialFormulaQ2Presentation.Induction.CentralCoverSourcePartialFormula {p : Q2Presentation.Induction.FramedPair}
      (B : Q2Presentation.Induction.MinimalBlock p) (T : Q2Presentation.Induction.CentralCoverLiftTorsorData B)
      (C : Q2Presentation.Induction.CentralCoverChildrenData B) : TypeThe source-side formula components whose sum is the partial-count recipe.
    
    These are the finite/combinatorial pieces of `eq:recursionR2` through
    `eq:phasecovertransform`: elementary lifting, proper-image subtraction,
    nonzero radical-edge terms, zero-edge constrained Gauss terms, and phase-cover
    transforms.  The terms are kept separate so the public partial-data theorem is
    not a single arbitrary function. 
        (Q2Presentation.Induction.BlockR.BstarQ2Presentation.Induction.BlockR.Bstar {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (X :
        Q2Presentation.Induction.MinimalBlockPreheadInvariantCharacterData
          (Q2Presentation.Induction.sec7RawTowerPacketCanonical chief K).preheadTowerData)
      (Fdet :
        Q2Presentation.Induction.MinimalBlockPreheadExtraspecialEquivariantFamilyData
          (Q2Presentation.Induction.sec7RawTowerPacketCanonical chief K).preheadTowerData)
      (A : Q2Presentation.Induction.MinimalBlockPreheadExtraspecialAnnihilationData Fdet)
      (Rdet : Q2Presentation.Induction.MinimalBlockPreheadExtraspecialRadicalData Fdet)
      (N : Q2Presentation.Induction.MinimalBlockPreheadExtraspecialNonzeroData Fdet)
      (h : ¬Q2Presentation.Induction.ScalarTerminal p) : Q2Presentation.Induction.MinimalBlock pThe pinned block. 
          chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor XQ2Presentation.Induction.MinimalBlockPreheadInvariantCharacterData
      (Q2Presentation.Induction.sec7RawTowerPacketCanonical chief K).preheadTowerData FdetQ2Presentation.Induction.MinimalBlockPreheadExtraspecialEquivariantFamilyData
      (Q2Presentation.Induction.sec7RawTowerPacketCanonical chief K).preheadTowerData AQ2Presentation.Induction.MinimalBlockPreheadExtraspecialAnnihilationData Fdet RdetQ2Presentation.Induction.MinimalBlockPreheadExtraspecialRadicalData Fdet NQ2Presentation.Induction.MinimalBlockPreheadExtraspecialNonzeroData Fdet h¬Q2Presentation.Induction.ScalarTerminal p)
        LQ2Presentation.Induction.CentralCoverLiftTorsorData (Q2Presentation.Induction.BlockR.Bstar chief K X Fdet A Rdet N h) CQ2Presentation.Induction.CentralCoverChildrenData (Q2Presentation.Induction.BlockR.Bstar chief K X Fdet A Rdet N h)
    **The split counting formula** (P8-lite): at `χ = 0` the partial count
    is the CHILD count (`counts.headI` — threaded through `children`, so the
    engine's induction hypothesis supplies the source-agreement there,
    `m_{Γ,0}(B) = e_Γ(B)`, `prop:finalfourier` l.4249); at `χ ≠ 0` with
    `4 ≤ |Φ(K)|` it is the `χ`-strata chunk sum of the children counts divided
    by 8 (`eq:covertransform` at the scalar cover `B_{λ(χ)}`: the strata are
    children, so the engine IH supplies the per-stratum source-agreement, and
    the division is exact — at the realized lists the numerator is
    `8·m_{Γ,λ(χ)}(B)` by `sec7_scalarCoverPartition_gammaA/gq2`); at `χ ≠ 0`
    with `|Φ(K)| = 2` it is the R2–R5 recursion term `cardTwoTerm`
    (design §3.3): `zeroEdgeZterm − properTerm`, both read positionally from
    the card-2 children counts — one shared source-independent term, so
    `partialRecipe_of_sourceAgreement … rfl` survives unchanged. 
  • structure(1 field)defined in Q2Presentation/Induction/CandidateScalarFrattiniRoute29Proofs.lean
    complete
    structure Q2Presentation.Induction.CentralCoverCandidateRoute29FrattiniFourierCountData
      {pQ2Presentation.Induction.FramedPair : Q2Presentation.Induction.FramedPairQ2Presentation.Induction.FramedPair : Type 1A **framed pair** `(𝒴, F)`: a boundary-framed marked target together with a
    boundary frame for it (manuscript Definition 4.1 + `eq:beta`).  This is the index of
    Theorem 4.2: the boundary-framed surjection count `e_Γ^β` is a function of the pair.
    The induction of `sec:induction` ranges over *all* such pairs simultaneously
    ("the induction is stated globally", l.1213), ordered by `|L_Y|`. }
      (BQ2Presentation.Induction.MinimalBlock p : Q2Presentation.Induction.MinimalBlockQ2Presentation.Induction.MinimalBlock (p : Q2Presentation.Induction.FramedPair) : Type 1**The §7 minimal non-scalar block.**  Source-uniform module-level data of the
    manuscript tower (`eq:targettower`), with the deep group/representation inputs of
    `lem:simplehead`/`lem:collapse`/`prop:simpleheaddet` isolated as documented fields.  pQ2Presentation.Induction.FramedPair)
      (TQ2Presentation.Induction.CentralCoverElementaryQuotientTowerData B :
        Q2Presentation.Induction.CentralCoverElementaryQuotientTowerDataQ2Presentation.Induction.CentralCoverElementaryQuotientTowerData {p : Q2Presentation.Induction.FramedPair}
      (B : Q2Presentation.Induction.MinimalBlock p) : Type 1A realized elementary quotient tower for `eq:targettower`.
    
    This is the missing target-side finite group datum behind the lower term in
    `eq:Mstage`: the middle quotient `B = Y/R`, the lower quotient `C = Y/K`, and the
    map `B -> C`.  The cardinal equations record the two quotient steps in a form
    that proves strict decrease.
    
    The current `MinimalBlock` supplies the abstract modules, but not this realized
    quotient tower.  BQ2Presentation.Induction.MinimalBlock p)
      (DQ2Presentation.Induction.CentralCoverCandidateMiddleRLiftObstructionMapData B T :
        Q2Presentation.Induction.CentralCoverCandidateMiddleRLiftObstructionMapDataQ2Presentation.Induction.CentralCoverCandidateMiddleRLiftObstructionMapData {p : Q2Presentation.Induction.FramedPair}
      (B : Q2Presentation.Induction.MinimalBlock p)
      (T : Q2Presentation.Induction.CentralCoverElementaryQuotientTowerData B) : TypeCandidate `R`-lift obstruction map on the canonical middle exact-image
    index.
    
    The index is theorem-level:
    `centralCover_candidateMiddleExactImageIndexBaseData B T` is the finite set of
    middle boundary-framed exact-image maps (`def:Xgamma`).  The residual content is
    only the semantic `R`-valued obstruction evaluation of
    `lem:obstructionseparation` on that index. 
          BQ2Presentation.Induction.MinimalBlock p TQ2Presentation.Induction.CentralCoverElementaryQuotientTowerData B) :
      TypeA type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. 
    structure Q2Presentation.Induction.CentralCoverCandidateRoute29FrattiniFourierCountData
      {pQ2Presentation.Induction.FramedPair :
        Q2Presentation.Induction.FramedPairQ2Presentation.Induction.FramedPair : Type 1A **framed pair** `(𝒴, F)`: a boundary-framed marked target together with a
    boundary frame for it (manuscript Definition 4.1 + `eq:beta`).  This is the index of
    Theorem 4.2: the boundary-framed surjection count `e_Γ^β` is a function of the pair.
    The induction of `sec:induction` ranges over *all* such pairs simultaneously
    ("the induction is stated globally", l.1213), ordered by `|L_Y|`. }
      (BQ2Presentation.Induction.MinimalBlock p :
        Q2Presentation.Induction.MinimalBlockQ2Presentation.Induction.MinimalBlock (p : Q2Presentation.Induction.FramedPair) : Type 1**The §7 minimal non-scalar block.**  Source-uniform module-level data of the
    manuscript tower (`eq:targettower`), with the deep group/representation inputs of
    `lem:simplehead`/`lem:collapse`/`prop:simpleheaddet` isolated as documented fields. 
          pQ2Presentation.Induction.FramedPair)
      (TQ2Presentation.Induction.CentralCoverElementaryQuotientTowerData B :
        Q2Presentation.Induction.CentralCoverElementaryQuotientTowerDataQ2Presentation.Induction.CentralCoverElementaryQuotientTowerData {p : Q2Presentation.Induction.FramedPair}
      (B : Q2Presentation.Induction.MinimalBlock p) : Type 1A realized elementary quotient tower for `eq:targettower`.
    
    This is the missing target-side finite group datum behind the lower term in
    `eq:Mstage`: the middle quotient `B = Y/R`, the lower quotient `C = Y/K`, and the
    map `B -> C`.  The cardinal equations record the two quotient steps in a form
    that proves strict decrease.
    
    The current `MinimalBlock` supplies the abstract modules, but not this realized
    quotient tower. 
          BQ2Presentation.Induction.MinimalBlock p)
      (DQ2Presentation.Induction.CentralCoverCandidateMiddleRLiftObstructionMapData B T :
        Q2Presentation.Induction.CentralCoverCandidateMiddleRLiftObstructionMapDataQ2Presentation.Induction.CentralCoverCandidateMiddleRLiftObstructionMapData {p : Q2Presentation.Induction.FramedPair}
      (B : Q2Presentation.Induction.MinimalBlock p)
      (T : Q2Presentation.Induction.CentralCoverElementaryQuotientTowerData B) : TypeCandidate `R`-lift obstruction map on the canonical middle exact-image
    index.
    
    The index is theorem-level:
    `centralCover_candidateMiddleExactImageIndexBaseData B T` is the finite set of
    middle boundary-framed exact-image maps (`def:Xgamma`).  The residual content is
    only the semantic `R`-valued obstruction evaluation of
    `lem:obstructionseparation` on that index. 
          BQ2Presentation.Induction.MinimalBlock p TQ2Presentation.Induction.CentralCoverElementaryQuotientTowerData B) :
      TypeA type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. 
    **Route29 Frattini Fourier count packet.**
    
    Manuscript anchor: Section 8, `prop:finalfourier`.  This is the numerator form
    of the final Frattini obstruction count for the chosen canonical middle
    obstruction: top exact-image candidate maps are counted as `z_R` times the
    unobstructed middle exact-image locus.  The conversion from this statement to
    the full route28 cardinality packet is theorem-level below. 

    Fields

    top_count_eqNat.card Q2Presentation.Induction.centralCoverCandidateSource =
      B.zR * Nat.card { x // D.obstructionIndexToBaseMapData.O.o x = 0 } : Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number.
    If `α` is infinite, `Nat.card α = 0`.  Q2Presentation.Induction.centralCoverCandidateSourceQ2Presentation.Induction.centralCoverCandidateSource {p : Q2Presentation.Induction.FramedPair} : TypeCandidate source set for the fixed boundary-framed target.  =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`.
      BQ2Presentation.Induction.MinimalBlock p.zRQ2Presentation.Induction.MinimalBlock.zR {p : Q2Presentation.Induction.FramedPair}
      (B : Q2Presentation.Induction.MinimalBlock p) : ℕ**`zR = 2^{2 dim R}·|𝒳_R| = 2^{dimExp}·|Ŵ|`** (manuscript `prop:finalfourier`,
    `z_R = |Z¹_{Γ,ρ}(R)| = 2^{2 dim R + dim 𝒳_R}`, l.4244).  Since `𝒳_R = Ŵ` is the character
    group of `W = O_R`, this is exactly the value `FourierBranchData.hzR` demands for the
    common lift-torsor size.  *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number.
    If `α` is infinite, `Nat.card α = 0`.  {Subtype.{u} {α : Sort u} (p : α → Prop) : Sort (max 1 u)All the elements of a type that satisfy a predicate.
    
    `Subtype p`, usually written `{ x : α // p x }` or `{ x // p x }`, contains all elements `x : α` for
    which `p x` is true. Its constructor is a pair of the value and the proof that it satisfies the
    predicate. In run-time code, `{ x : α // p x }` is represented identically to `α`.
    
    There is a coercion from `{ x : α // p x }` to `α`, so elements of a subtype may be used where the
    underlying type is expected.
    
    Examples:
     * `{ n : Nat // n % 2 = 0 }` is the type of even numbers.
     * `{ xs : Array String // xs.size = 5 }` is the type of arrays with five `String`s.
     * Given `xs : List α`, `List { x : α // x ∈ xs }` is the type of lists in which all elements are
       contained in `xs`.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `{ x // p x }` in identifiers is `subtype`. xD.obstructionIndexToBaseMapData.O.X //Subtype.{u} {α : Sort u} (p : α → Prop) : Sort (max 1 u)All the elements of a type that satisfy a predicate.
    
    `Subtype p`, usually written `{ x : α // p x }` or `{ x // p x }`, contains all elements `x : α` for
    which `p x` is true. Its constructor is a pair of the value and the proof that it satisfies the
    predicate. In run-time code, `{ x : α // p x }` is represented identically to `α`.
    
    There is a coercion from `{ x : α // p x }` to `α`, so elements of a subtype may be used where the
    underlying type is expected.
    
    Examples:
     * `{ n : Nat // n % 2 = 0 }` is the type of even numbers.
     * `{ xs : Array String // xs.size = 5 }` is the type of arrays with five `String`s.
     * Given `xs : List α`, `List { x : α // x ∈ xs }` is the type of lists in which all elements are
       contained in `xs`.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `{ x // p x }` in identifiers is `subtype`. DQ2Presentation.Induction.CentralCoverCandidateMiddleRLiftObstructionMapData B T.obstructionIndexToBaseMapDataQ2Presentation.Induction.CentralCoverCandidateMiddleRLiftObstructionMapData.obstructionIndexToBaseMapData
      {p : Q2Presentation.Induction.FramedPair} {B : Q2Presentation.Induction.MinimalBlock p}
      {T : Q2Presentation.Induction.CentralCoverElementaryQuotientTowerData B}
      (D : Q2Presentation.Induction.CentralCoverCandidateMiddleRLiftObstructionMapData B T) :
      Q2Presentation.Induction.CentralCoverCandidateObstructionIndexToBaseMapData B TReassemble the obstruction-index-to-base packet.  Since the chosen index is
    the middle exact-image source itself, the forgetful map is the canonical one
    already stored in `centralCover_candidateMiddleExactImageIndexBaseData`. .OQ2Presentation.Induction.CentralCoverCandidateObstructionIndexToBaseMapData.O {p : Q2Presentation.Induction.FramedPair}
      {B : Q2Presentation.Induction.MinimalBlock p} {T : Q2Presentation.Induction.CentralCoverElementaryQuotientTowerData B}
      (self : Q2Presentation.Induction.CentralCoverCandidateObstructionIndexToBaseMapData B T) :
      Q2Presentation.Induction.CentralCoverSourceObstructionData B Q2Presentation.Induction.centralCoverCandidateSource.oQ2Presentation.Induction.CentralCoverSourceObstructionData.o {p : Q2Presentation.Induction.FramedPair}
      {B : Q2Presentation.Induction.MinimalBlock p} {S : Type}
      (self : Q2Presentation.Induction.CentralCoverSourceObstructionData B S) : self.X → B.obstructionSpace xD.obstructionIndexToBaseMapData.O.X =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`. 0 }Subtype.{u} {α : Sort u} (p : α → Prop) : Sort (max 1 u)All the elements of a type that satisfy a predicate.
    
    `Subtype p`, usually written `{ x : α // p x }` or `{ x // p x }`, contains all elements `x : α` for
    which `p x` is true. Its constructor is a pair of the value and the proof that it satisfies the
    predicate. In run-time code, `{ x : α // p x }` is represented identically to `α`.
    
    There is a coercion from `{ x : α // p x }` to `α`, so elements of a subtype may be used where the
    underlying type is expected.
    
    Examples:
     * `{ n : Nat // n % 2 = 0 }` is the type of even numbers.
     * `{ xs : Array String // xs.size = 5 }` is the type of arrays with five `String`s.
     * Given `xs : List α`, `List { x : α // x ∈ xs }` is the type of lists in which all elements are
       contained in `xs`.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `{ x // p x }` in identifiers is `subtype`.
  • theoremdefined in Q2Presentation/Induction/CentralCovers.lean
    complete
    theorem Q2Presentation.Induction.CoverRealization.realizeA_of
      {pQ2Presentation.Induction.FramedPair : Q2Presentation.Induction.FramedPairQ2Presentation.Induction.FramedPair : Type 1A **framed pair** `(𝒴, F)`: a boundary-framed marked target together with a
    boundary frame for it (manuscript Definition 4.1 + `eq:beta`).  This is the index of
    Theorem 4.2: the boundary-framed surjection count `e_Γ^β` is a function of the pair.
    The induction of `sec:induction` ranges over *all* such pairs simultaneously
    ("the induction is stated globally", l.1213), ordered by `|L_Y|`. }
      {BQ2Presentation.Induction.MinimalBlock p : Q2Presentation.Induction.MinimalBlockQ2Presentation.Induction.MinimalBlock (p : Q2Presentation.Induction.FramedPair) : Type 1**The §7 minimal non-scalar block.**  Source-uniform module-level data of the
    manuscript tower (`eq:targettower`), with the deep group/representation inputs of
    `lem:simplehead`/`lem:collapse`/`prop:simpleheaddet` isolated as documented fields.  pQ2Presentation.Induction.FramedPair}
      (RQ2Presentation.Induction.CoverRealization B : Q2Presentation.Induction.CoverRealizationQ2Presentation.Induction.CoverRealization {p : Q2Presentation.Induction.FramedPair}
      (B : Q2Presentation.Induction.MinimalBlock p) : Type 1**The §8 central-cover obstruction realization over a minimal block** (`sec:fourier`).
    Source-uniform: the strictly-smaller `children`, the source-independent partial-count
    recipe `partialN`.  Per source `Γ`: a finite lift index `X_Γ`, the `R`-valued obstruction
    `o_Γ : X_Γ → O_R = B.obstructionSpace`, the `R`-cocycle group `Z_Γ = Z¹_Γ(R)` (`|Z_Γ| = z_R`)
    with the per-point `R`-lift torsors `Lift_Γ`, and the **lift-torsor decomposition** `bijΓ`
    (`prop:finalfourier`: boundary-framed surjections onto `Y` = the disjoint union `Σ` over the
    unobstructed exact-image base maps of the `z_R`-sized `R`-lift torsor), and the partial-count
    realization `partial_Γ` (`eq:recursionR2`–`eq:phasecovertransform`).  The `realize_Γ` count
    equation is **derived** from `bijΓ` via `Lifting.lift_torsor_card`
    (`realizeA_of`/`realizeQ_of`), not stored.  BQ2Presentation.Induction.MinimalBlock p) :
      Q2Presentation.Induction.framedCountAQ2Presentation.Induction.framedCountA (p : Q2Presentation.Induction.FramedPair) : Cardinal.{0}The **candidate** boundary-framed surjection count `e_{Γ_A}^β(𝒴)`
    (`eq:eGamma`), as a cardinal `|boundaryFramedSurj boundaryPackage_GammaA 𝒴 F|`.  pQ2Presentation.Induction.FramedPair =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`.
        (HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.BQ2Presentation.Induction.MinimalBlock p.zRQ2Presentation.Induction.MinimalBlock.zR {p : Q2Presentation.Induction.FramedPair}
      (B : Q2Presentation.Induction.MinimalBlock p) : ℕ**`zR = 2^{2 dim R}·|𝒳_R| = 2^{dimExp}·|Ŵ|`** (manuscript `prop:finalfourier`,
    `z_R = |Z¹_{Γ,ρ}(R)| = 2^{2 dim R + dim 𝒳_R}`, l.4244).  Since `𝒳_R = Ŵ` is the character
    group of `W = O_R`, this is exactly the value `FourierBranchData.hzR` demands for the
    common lift-torsor size.  *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number.
    If `α` is infinite, `Nat.card α = 0`.  {Subtype.{u} {α : Sort u} (p : α → Prop) : Sort (max 1 u)All the elements of a type that satisfy a predicate.
    
    `Subtype p`, usually written `{ x : α // p x }` or `{ x // p x }`, contains all elements `x : α` for
    which `p x` is true. Its constructor is a pair of the value and the proof that it satisfies the
    predicate. In run-time code, `{ x : α // p x }` is represented identically to `α`.
    
    There is a coercion from `{ x : α // p x }` to `α`, so elements of a subtype may be used where the
    underlying type is expected.
    
    Examples:
     * `{ n : Nat // n % 2 = 0 }` is the type of even numbers.
     * `{ xs : Array String // xs.size = 5 }` is the type of arrays with five `String`s.
     * Given `xs : List α`, `List { x : α // x ∈ xs }` is the type of lists in which all elements are
       contained in `xs`.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `{ x // p x }` in identifiers is `subtype`. xR.XA //Subtype.{u} {α : Sort u} (p : α → Prop) : Sort (max 1 u)All the elements of a type that satisfy a predicate.
    
    `Subtype p`, usually written `{ x : α // p x }` or `{ x // p x }`, contains all elements `x : α` for
    which `p x` is true. Its constructor is a pair of the value and the proof that it satisfies the
    predicate. In run-time code, `{ x : α // p x }` is represented identically to `α`.
    
    There is a coercion from `{ x : α // p x }` to `α`, so elements of a subtype may be used where the
    underlying type is expected.
    
    Examples:
     * `{ n : Nat // n % 2 = 0 }` is the type of even numbers.
     * `{ xs : Array String // xs.size = 5 }` is the type of arrays with five `String`s.
     * Given `xs : List α`, `List { x : α // x ∈ xs }` is the type of lists in which all elements are
       contained in `xs`.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `{ x // p x }` in identifiers is `subtype`. RQ2Presentation.Induction.CoverRealization B.oAQ2Presentation.Induction.CoverRealization.oA {p : Q2Presentation.Induction.FramedPair}
      {B : Q2Presentation.Induction.MinimalBlock p} (self : Q2Presentation.Induction.CoverRealization B) :
      self.XA → B.obstructionSpaceCandidate-source `R`-valued obstruction `o_{Γ_A} : X_{Γ_A} → O_R`.  xR.XA =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`. 0 }Subtype.{u} {α : Sort u} (p : α → Prop) : Sort (max 1 u)All the elements of a type that satisfy a predicate.
    
    `Subtype p`, usually written `{ x : α // p x }` or `{ x // p x }`, contains all elements `x : α` for
    which `p x` is true. Its constructor is a pair of the value and the proof that it satisfies the
    predicate. In run-time code, `{ x : α // p x }` is represented identically to `α`.
    
    There is a coercion from `{ x : α // p x }` to `α`, so elements of a subtype may be used where the
    underlying type is expected.
    
    Examples:
     * `{ n : Nat // n % 2 = 0 }` is the type of even numbers.
     * `{ xs : Array String // xs.size = 5 }` is the type of arrays with five `String`s.
     * Given `xs : List α`, `List { x : α // x ∈ xs }` is the type of lists in which all elements are
       contained in `xs`.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `{ x // p x }` in identifiers is `subtype`.)HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
    theorem Q2Presentation.Induction.CoverRealization.realizeA_of
      {pQ2Presentation.Induction.FramedPair :
        Q2Presentation.Induction.FramedPairQ2Presentation.Induction.FramedPair : Type 1A **framed pair** `(𝒴, F)`: a boundary-framed marked target together with a
    boundary frame for it (manuscript Definition 4.1 + `eq:beta`).  This is the index of
    Theorem 4.2: the boundary-framed surjection count `e_Γ^β` is a function of the pair.
    The induction of `sec:induction` ranges over *all* such pairs simultaneously
    ("the induction is stated globally", l.1213), ordered by `|L_Y|`. }
      {BQ2Presentation.Induction.MinimalBlock p :
        Q2Presentation.Induction.MinimalBlockQ2Presentation.Induction.MinimalBlock (p : Q2Presentation.Induction.FramedPair) : Type 1**The §7 minimal non-scalar block.**  Source-uniform module-level data of the
    manuscript tower (`eq:targettower`), with the deep group/representation inputs of
    `lem:simplehead`/`lem:collapse`/`prop:simpleheaddet` isolated as documented fields. 
          pQ2Presentation.Induction.FramedPair}
      (RQ2Presentation.Induction.CoverRealization B :
        Q2Presentation.Induction.CoverRealizationQ2Presentation.Induction.CoverRealization {p : Q2Presentation.Induction.FramedPair}
      (B : Q2Presentation.Induction.MinimalBlock p) : Type 1**The §8 central-cover obstruction realization over a minimal block** (`sec:fourier`).
    Source-uniform: the strictly-smaller `children`, the source-independent partial-count
    recipe `partialN`.  Per source `Γ`: a finite lift index `X_Γ`, the `R`-valued obstruction
    `o_Γ : X_Γ → O_R = B.obstructionSpace`, the `R`-cocycle group `Z_Γ = Z¹_Γ(R)` (`|Z_Γ| = z_R`)
    with the per-point `R`-lift torsors `Lift_Γ`, and the **lift-torsor decomposition** `bijΓ`
    (`prop:finalfourier`: boundary-framed surjections onto `Y` = the disjoint union `Σ` over the
    unobstructed exact-image base maps of the `z_R`-sized `R`-lift torsor), and the partial-count
    realization `partial_Γ` (`eq:recursionR2`–`eq:phasecovertransform`).  The `realize_Γ` count
    equation is **derived** from `bijΓ` via `Lifting.lift_torsor_card`
    (`realizeA_of`/`realizeQ_of`), not stored. 
          BQ2Presentation.Induction.MinimalBlock p) :
      Q2Presentation.Induction.framedCountAQ2Presentation.Induction.framedCountA (p : Q2Presentation.Induction.FramedPair) : Cardinal.{0}The **candidate** boundary-framed surjection count `e_{Γ_A}^β(𝒴)`
    (`eq:eGamma`), as a cardinal `|boundaryFramedSurj boundaryPackage_GammaA 𝒴 F|`. 
          pQ2Presentation.Induction.FramedPair =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`.
        (HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.BQ2Presentation.Induction.MinimalBlock p.zRQ2Presentation.Induction.MinimalBlock.zR {p : Q2Presentation.Induction.FramedPair}
      (B : Q2Presentation.Induction.MinimalBlock p) : ℕ**`zR = 2^{2 dim R}·|𝒳_R| = 2^{dimExp}·|Ŵ|`** (manuscript `prop:finalfourier`,
    `z_R = |Z¹_{Γ,ρ}(R)| = 2^{2 dim R + dim 𝒳_R}`, l.4244).  Since `𝒳_R = Ŵ` is the character
    group of `W = O_R`, this is exactly the value `FourierBranchData.hzR` demands for the
    common lift-torsor size.  *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number.
    If `α` is infinite, `Nat.card α = 0`.  {Subtype.{u} {α : Sort u} (p : α → Prop) : Sort (max 1 u)All the elements of a type that satisfy a predicate.
    
    `Subtype p`, usually written `{ x : α // p x }` or `{ x // p x }`, contains all elements `x : α` for
    which `p x` is true. Its constructor is a pair of the value and the proof that it satisfies the
    predicate. In run-time code, `{ x : α // p x }` is represented identically to `α`.
    
    There is a coercion from `{ x : α // p x }` to `α`, so elements of a subtype may be used where the
    underlying type is expected.
    
    Examples:
     * `{ n : Nat // n % 2 = 0 }` is the type of even numbers.
     * `{ xs : Array String // xs.size = 5 }` is the type of arrays with five `String`s.
     * Given `xs : List α`, `List { x : α // x ∈ xs }` is the type of lists in which all elements are
       contained in `xs`.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `{ x // p x }` in identifiers is `subtype`. xR.XA //Subtype.{u} {α : Sort u} (p : α → Prop) : Sort (max 1 u)All the elements of a type that satisfy a predicate.
    
    `Subtype p`, usually written `{ x : α // p x }` or `{ x // p x }`, contains all elements `x : α` for
    which `p x` is true. Its constructor is a pair of the value and the proof that it satisfies the
    predicate. In run-time code, `{ x : α // p x }` is represented identically to `α`.
    
    There is a coercion from `{ x : α // p x }` to `α`, so elements of a subtype may be used where the
    underlying type is expected.
    
    Examples:
     * `{ n : Nat // n % 2 = 0 }` is the type of even numbers.
     * `{ xs : Array String // xs.size = 5 }` is the type of arrays with five `String`s.
     * Given `xs : List α`, `List { x : α // x ∈ xs }` is the type of lists in which all elements are
       contained in `xs`.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `{ x // p x }` in identifiers is `subtype`. RQ2Presentation.Induction.CoverRealization B.oAQ2Presentation.Induction.CoverRealization.oA {p : Q2Presentation.Induction.FramedPair}
      {B : Q2Presentation.Induction.MinimalBlock p} (self : Q2Presentation.Induction.CoverRealization B) :
      self.XA → B.obstructionSpaceCandidate-source `R`-valued obstruction `o_{Γ_A} : X_{Γ_A} → O_R`.  xR.XA =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`. 0 }Subtype.{u} {α : Sort u} (p : α → Prop) : Sort (max 1 u)All the elements of a type that satisfy a predicate.
    
    `Subtype p`, usually written `{ x : α // p x }` or `{ x // p x }`, contains all elements `x : α` for
    which `p x` is true. Its constructor is a pair of the value and the proof that it satisfies the
    predicate. In run-time code, `{ x : α // p x }` is represented identically to `α`.
    
    There is a coercion from `{ x : α // p x }` to `α`, so elements of a subtype may be used where the
    underlying type is expected.
    
    Examples:
     * `{ n : Nat // n % 2 = 0 }` is the type of even numbers.
     * `{ xs : Array String // xs.size = 5 }` is the type of arrays with five `String`s.
     * Given `xs : List α`, `List { x : α // x ∈ xs }` is the type of lists in which all elements are
       contained in `xs`.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `{ x // p x }` in identifiers is `subtype`.)HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
    **`realize_{Γ_A}` is PROVEN** (`prop:finalfourier`, `eq:recursionR1` numerator):
    `e_{Γ_A}(Y) = z_R · #{x : o_{Γ_A} x = 0}`, by the lift-torsor mechanism
    `framedCount_eq_zR_of_torsorDecomp` applied to the candidate decomposition `bijA` — the
    `z_R` factor is `Lifting.lift_torsor_card` (each unobstructed map has a `Z¹_A(R)`-torsor of
    `z_R` lifts).  Genuinely uses the `Lifting/Duality.lean` scaffolding. 
  • theoremdefined in Q2Presentation/Induction/CentralCovers.lean
    complete
    theorem Q2Presentation.Induction.CoverRealization.realizeQ_of
      {pQ2Presentation.Induction.FramedPair : Q2Presentation.Induction.FramedPairQ2Presentation.Induction.FramedPair : Type 1A **framed pair** `(𝒴, F)`: a boundary-framed marked target together with a
    boundary frame for it (manuscript Definition 4.1 + `eq:beta`).  This is the index of
    Theorem 4.2: the boundary-framed surjection count `e_Γ^β` is a function of the pair.
    The induction of `sec:induction` ranges over *all* such pairs simultaneously
    ("the induction is stated globally", l.1213), ordered by `|L_Y|`. }
      {BQ2Presentation.Induction.MinimalBlock p : Q2Presentation.Induction.MinimalBlockQ2Presentation.Induction.MinimalBlock (p : Q2Presentation.Induction.FramedPair) : Type 1**The §7 minimal non-scalar block.**  Source-uniform module-level data of the
    manuscript tower (`eq:targettower`), with the deep group/representation inputs of
    `lem:simplehead`/`lem:collapse`/`prop:simpleheaddet` isolated as documented fields.  pQ2Presentation.Induction.FramedPair}
      (RQ2Presentation.Induction.CoverRealization B : Q2Presentation.Induction.CoverRealizationQ2Presentation.Induction.CoverRealization {p : Q2Presentation.Induction.FramedPair}
      (B : Q2Presentation.Induction.MinimalBlock p) : Type 1**The §8 central-cover obstruction realization over a minimal block** (`sec:fourier`).
    Source-uniform: the strictly-smaller `children`, the source-independent partial-count
    recipe `partialN`.  Per source `Γ`: a finite lift index `X_Γ`, the `R`-valued obstruction
    `o_Γ : X_Γ → O_R = B.obstructionSpace`, the `R`-cocycle group `Z_Γ = Z¹_Γ(R)` (`|Z_Γ| = z_R`)
    with the per-point `R`-lift torsors `Lift_Γ`, and the **lift-torsor decomposition** `bijΓ`
    (`prop:finalfourier`: boundary-framed surjections onto `Y` = the disjoint union `Σ` over the
    unobstructed exact-image base maps of the `z_R`-sized `R`-lift torsor), and the partial-count
    realization `partial_Γ` (`eq:recursionR2`–`eq:phasecovertransform`).  The `realize_Γ` count
    equation is **derived** from `bijΓ` via `Lifting.lift_torsor_card`
    (`realizeA_of`/`realizeQ_of`), not stored.  BQ2Presentation.Induction.MinimalBlock p) :
      Q2Presentation.Induction.framedCountQQ2Presentation.Induction.framedCountQ (p : Q2Presentation.Induction.FramedPair) : Cardinal.{0}The **local** boundary-framed surjection count `e_{G_{ℚ₂}}^β(𝒴)`
    (`eq:eGamma`), as a cardinal `|boundaryFramedSurj boundaryPackage_GQ2 𝒴 F|`.  pQ2Presentation.Induction.FramedPair =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`.
        (HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.BQ2Presentation.Induction.MinimalBlock p.zRQ2Presentation.Induction.MinimalBlock.zR {p : Q2Presentation.Induction.FramedPair}
      (B : Q2Presentation.Induction.MinimalBlock p) : ℕ**`zR = 2^{2 dim R}·|𝒳_R| = 2^{dimExp}·|Ŵ|`** (manuscript `prop:finalfourier`,
    `z_R = |Z¹_{Γ,ρ}(R)| = 2^{2 dim R + dim 𝒳_R}`, l.4244).  Since `𝒳_R = Ŵ` is the character
    group of `W = O_R`, this is exactly the value `FourierBranchData.hzR` demands for the
    common lift-torsor size.  *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number.
    If `α` is infinite, `Nat.card α = 0`.  {Subtype.{u} {α : Sort u} (p : α → Prop) : Sort (max 1 u)All the elements of a type that satisfy a predicate.
    
    `Subtype p`, usually written `{ x : α // p x }` or `{ x // p x }`, contains all elements `x : α` for
    which `p x` is true. Its constructor is a pair of the value and the proof that it satisfies the
    predicate. In run-time code, `{ x : α // p x }` is represented identically to `α`.
    
    There is a coercion from `{ x : α // p x }` to `α`, so elements of a subtype may be used where the
    underlying type is expected.
    
    Examples:
     * `{ n : Nat // n % 2 = 0 }` is the type of even numbers.
     * `{ xs : Array String // xs.size = 5 }` is the type of arrays with five `String`s.
     * Given `xs : List α`, `List { x : α // x ∈ xs }` is the type of lists in which all elements are
       contained in `xs`.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `{ x // p x }` in identifiers is `subtype`. xR.XQ //Subtype.{u} {α : Sort u} (p : α → Prop) : Sort (max 1 u)All the elements of a type that satisfy a predicate.
    
    `Subtype p`, usually written `{ x : α // p x }` or `{ x // p x }`, contains all elements `x : α` for
    which `p x` is true. Its constructor is a pair of the value and the proof that it satisfies the
    predicate. In run-time code, `{ x : α // p x }` is represented identically to `α`.
    
    There is a coercion from `{ x : α // p x }` to `α`, so elements of a subtype may be used where the
    underlying type is expected.
    
    Examples:
     * `{ n : Nat // n % 2 = 0 }` is the type of even numbers.
     * `{ xs : Array String // xs.size = 5 }` is the type of arrays with five `String`s.
     * Given `xs : List α`, `List { x : α // x ∈ xs }` is the type of lists in which all elements are
       contained in `xs`.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `{ x // p x }` in identifiers is `subtype`. RQ2Presentation.Induction.CoverRealization B.oQQ2Presentation.Induction.CoverRealization.oQ {p : Q2Presentation.Induction.FramedPair}
      {B : Q2Presentation.Induction.MinimalBlock p} (self : Q2Presentation.Induction.CoverRealization B) :
      self.XQ → B.obstructionSpaceLocal-source `R`-valued obstruction `o_{G_{ℚ₂}} : X_{G_{ℚ₂}} → O_R`.  xR.XQ =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`. 0 }Subtype.{u} {α : Sort u} (p : α → Prop) : Sort (max 1 u)All the elements of a type that satisfy a predicate.
    
    `Subtype p`, usually written `{ x : α // p x }` or `{ x // p x }`, contains all elements `x : α` for
    which `p x` is true. Its constructor is a pair of the value and the proof that it satisfies the
    predicate. In run-time code, `{ x : α // p x }` is represented identically to `α`.
    
    There is a coercion from `{ x : α // p x }` to `α`, so elements of a subtype may be used where the
    underlying type is expected.
    
    Examples:
     * `{ n : Nat // n % 2 = 0 }` is the type of even numbers.
     * `{ xs : Array String // xs.size = 5 }` is the type of arrays with five `String`s.
     * Given `xs : List α`, `List { x : α // x ∈ xs }` is the type of lists in which all elements are
       contained in `xs`.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `{ x // p x }` in identifiers is `subtype`.)HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
    theorem Q2Presentation.Induction.CoverRealization.realizeQ_of
      {pQ2Presentation.Induction.FramedPair :
        Q2Presentation.Induction.FramedPairQ2Presentation.Induction.FramedPair : Type 1A **framed pair** `(𝒴, F)`: a boundary-framed marked target together with a
    boundary frame for it (manuscript Definition 4.1 + `eq:beta`).  This is the index of
    Theorem 4.2: the boundary-framed surjection count `e_Γ^β` is a function of the pair.
    The induction of `sec:induction` ranges over *all* such pairs simultaneously
    ("the induction is stated globally", l.1213), ordered by `|L_Y|`. }
      {BQ2Presentation.Induction.MinimalBlock p :
        Q2Presentation.Induction.MinimalBlockQ2Presentation.Induction.MinimalBlock (p : Q2Presentation.Induction.FramedPair) : Type 1**The §7 minimal non-scalar block.**  Source-uniform module-level data of the
    manuscript tower (`eq:targettower`), with the deep group/representation inputs of
    `lem:simplehead`/`lem:collapse`/`prop:simpleheaddet` isolated as documented fields. 
          pQ2Presentation.Induction.FramedPair}
      (RQ2Presentation.Induction.CoverRealization B :
        Q2Presentation.Induction.CoverRealizationQ2Presentation.Induction.CoverRealization {p : Q2Presentation.Induction.FramedPair}
      (B : Q2Presentation.Induction.MinimalBlock p) : Type 1**The §8 central-cover obstruction realization over a minimal block** (`sec:fourier`).
    Source-uniform: the strictly-smaller `children`, the source-independent partial-count
    recipe `partialN`.  Per source `Γ`: a finite lift index `X_Γ`, the `R`-valued obstruction
    `o_Γ : X_Γ → O_R = B.obstructionSpace`, the `R`-cocycle group `Z_Γ = Z¹_Γ(R)` (`|Z_Γ| = z_R`)
    with the per-point `R`-lift torsors `Lift_Γ`, and the **lift-torsor decomposition** `bijΓ`
    (`prop:finalfourier`: boundary-framed surjections onto `Y` = the disjoint union `Σ` over the
    unobstructed exact-image base maps of the `z_R`-sized `R`-lift torsor), and the partial-count
    realization `partial_Γ` (`eq:recursionR2`–`eq:phasecovertransform`).  The `realize_Γ` count
    equation is **derived** from `bijΓ` via `Lifting.lift_torsor_card`
    (`realizeA_of`/`realizeQ_of`), not stored. 
          BQ2Presentation.Induction.MinimalBlock p) :
      Q2Presentation.Induction.framedCountQQ2Presentation.Induction.framedCountQ (p : Q2Presentation.Induction.FramedPair) : Cardinal.{0}The **local** boundary-framed surjection count `e_{G_{ℚ₂}}^β(𝒴)`
    (`eq:eGamma`), as a cardinal `|boundaryFramedSurj boundaryPackage_GQ2 𝒴 F|`. 
          pQ2Presentation.Induction.FramedPair =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`.
        (HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.BQ2Presentation.Induction.MinimalBlock p.zRQ2Presentation.Induction.MinimalBlock.zR {p : Q2Presentation.Induction.FramedPair}
      (B : Q2Presentation.Induction.MinimalBlock p) : ℕ**`zR = 2^{2 dim R}·|𝒳_R| = 2^{dimExp}·|Ŵ|`** (manuscript `prop:finalfourier`,
    `z_R = |Z¹_{Γ,ρ}(R)| = 2^{2 dim R + dim 𝒳_R}`, l.4244).  Since `𝒳_R = Ŵ` is the character
    group of `W = O_R`, this is exactly the value `FourierBranchData.hzR` demands for the
    common lift-torsor size.  *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number.
    If `α` is infinite, `Nat.card α = 0`.  {Subtype.{u} {α : Sort u} (p : α → Prop) : Sort (max 1 u)All the elements of a type that satisfy a predicate.
    
    `Subtype p`, usually written `{ x : α // p x }` or `{ x // p x }`, contains all elements `x : α` for
    which `p x` is true. Its constructor is a pair of the value and the proof that it satisfies the
    predicate. In run-time code, `{ x : α // p x }` is represented identically to `α`.
    
    There is a coercion from `{ x : α // p x }` to `α`, so elements of a subtype may be used where the
    underlying type is expected.
    
    Examples:
     * `{ n : Nat // n % 2 = 0 }` is the type of even numbers.
     * `{ xs : Array String // xs.size = 5 }` is the type of arrays with five `String`s.
     * Given `xs : List α`, `List { x : α // x ∈ xs }` is the type of lists in which all elements are
       contained in `xs`.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `{ x // p x }` in identifiers is `subtype`. xR.XQ //Subtype.{u} {α : Sort u} (p : α → Prop) : Sort (max 1 u)All the elements of a type that satisfy a predicate.
    
    `Subtype p`, usually written `{ x : α // p x }` or `{ x // p x }`, contains all elements `x : α` for
    which `p x` is true. Its constructor is a pair of the value and the proof that it satisfies the
    predicate. In run-time code, `{ x : α // p x }` is represented identically to `α`.
    
    There is a coercion from `{ x : α // p x }` to `α`, so elements of a subtype may be used where the
    underlying type is expected.
    
    Examples:
     * `{ n : Nat // n % 2 = 0 }` is the type of even numbers.
     * `{ xs : Array String // xs.size = 5 }` is the type of arrays with five `String`s.
     * Given `xs : List α`, `List { x : α // x ∈ xs }` is the type of lists in which all elements are
       contained in `xs`.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `{ x // p x }` in identifiers is `subtype`. RQ2Presentation.Induction.CoverRealization B.oQQ2Presentation.Induction.CoverRealization.oQ {p : Q2Presentation.Induction.FramedPair}
      {B : Q2Presentation.Induction.MinimalBlock p} (self : Q2Presentation.Induction.CoverRealization B) :
      self.XQ → B.obstructionSpaceLocal-source `R`-valued obstruction `o_{G_{ℚ₂}} : X_{G_{ℚ₂}} → O_R`.  xR.XQ =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`. 0 }Subtype.{u} {α : Sort u} (p : α → Prop) : Sort (max 1 u)All the elements of a type that satisfy a predicate.
    
    `Subtype p`, usually written `{ x : α // p x }` or `{ x // p x }`, contains all elements `x : α` for
    which `p x` is true. Its constructor is a pair of the value and the proof that it satisfies the
    predicate. In run-time code, `{ x : α // p x }` is represented identically to `α`.
    
    There is a coercion from `{ x : α // p x }` to `α`, so elements of a subtype may be used where the
    underlying type is expected.
    
    Examples:
     * `{ n : Nat // n % 2 = 0 }` is the type of even numbers.
     * `{ xs : Array String // xs.size = 5 }` is the type of arrays with five `String`s.
     * Given `xs : List α`, `List { x : α // x ∈ xs }` is the type of lists in which all elements are
       contained in `xs`.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `{ x // p x }` in identifiers is `subtype`.)HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
    **`realize_{G_{ℚ₂}}` is PROVEN** (`prop:finalfourier`): `e_{G_{ℚ₂}}(Y) = z_R · #{o_Q = 0}`,
    by the lift-torsor mechanism applied to the local decomposition `bijQ` (the `Z¹_Q(R)`-torsor
    of `z_R` lifts, `Lifting.lift_torsor_card`). 
  • abbrevdefined in Q2Presentation/Induction/MinimalBlock.lean
    complete
    abbrev Q2Presentation.Induction.MinimalBlock.obstructionSpace
      {pQ2Presentation.Induction.FramedPair : Q2Presentation.Induction.FramedPairQ2Presentation.Induction.FramedPair : Type 1A **framed pair** `(𝒴, F)`: a boundary-framed marked target together with a
    boundary frame for it (manuscript Definition 4.1 + `eq:beta`).  This is the index of
    Theorem 4.2: the boundary-framed surjection count `e_Γ^β` is a function of the pair.
    The induction of `sec:induction` ranges over *all* such pairs simultaneously
    ("the induction is stated globally", l.1213), ordered by `|L_Y|`. }
      (BQ2Presentation.Induction.MinimalBlock p : Q2Presentation.Induction.MinimalBlockQ2Presentation.Induction.MinimalBlock (p : Q2Presentation.Induction.FramedPair) : Type 1**The §7 minimal non-scalar block.**  Source-uniform module-level data of the
    manuscript tower (`eq:targettower`), with the deep group/representation inputs of
    `lem:simplehead`/`lem:collapse`/`prop:simpleheaddet` isolated as documented fields.  pQ2Presentation.Induction.FramedPair) : TypeA type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. 
    abbrev Q2Presentation.Induction.MinimalBlock.obstructionSpace
      {pQ2Presentation.Induction.FramedPair :
        Q2Presentation.Induction.FramedPairQ2Presentation.Induction.FramedPair : Type 1A **framed pair** `(𝒴, F)`: a boundary-framed marked target together with a
    boundary frame for it (manuscript Definition 4.1 + `eq:beta`).  This is the index of
    Theorem 4.2: the boundary-framed surjection count `e_Γ^β` is a function of the pair.
    The induction of `sec:induction` ranges over *all* such pairs simultaneously
    ("the induction is stated globally", l.1213), ordered by `|L_Y|`. }
      (BQ2Presentation.Induction.MinimalBlock p :
        Q2Presentation.Induction.MinimalBlockQ2Presentation.Induction.MinimalBlock (p : Q2Presentation.Induction.FramedPair) : Type 1**The §7 minimal non-scalar block.**  Source-uniform module-level data of the
    manuscript tower (`eq:targettower`), with the deep group/representation inputs of
    `lem:simplehead`/`lem:collapse`/`prop:simpleheaddet` isolated as documented fields. 
          pQ2Presentation.Induction.FramedPair) :
      TypeA type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. 
    **The `R`-valued obstruction space `W = O_R`** (`prop:finalfourier`).  By
    `lem:obstructionseparation` (l.4213, `𝒳_R = (R^∨)^B = (R^∨)^C` is *canonically the dual of
    the `R`-valued obstruction space*), `O_R = (𝒳_R)^∨`, so `O_R = Module.Dual (ZMod 2) 𝒳_R`.
    This is the finite `𝔽₂` space `FourierBranchData.W` the §8 Fourier branch consumes: the
    `R`-valued lifting obstruction `o_Γ` lands in `O_R`, and its character group
    `Ŵ = Dual O_R ≅ 𝒳_R` is the index of the Fourier sum `eq:recursionR1`. 
  • defdefined in Q2Presentation/Induction/MinimalBlock.lean
    complete
    def Q2Presentation.Induction.MinimalBlock.dimExp
      {pQ2Presentation.Induction.FramedPair : Q2Presentation.Induction.FramedPairQ2Presentation.Induction.FramedPair : Type 1A **framed pair** `(𝒴, F)`: a boundary-framed marked target together with a
    boundary frame for it (manuscript Definition 4.1 + `eq:beta`).  This is the index of
    Theorem 4.2: the boundary-framed surjection count `e_Γ^β` is a function of the pair.
    The induction of `sec:induction` ranges over *all* such pairs simultaneously
    ("the induction is stated globally", l.1213), ordered by `|L_Y|`. }
      (BQ2Presentation.Induction.MinimalBlock p : Q2Presentation.Induction.MinimalBlockQ2Presentation.Induction.MinimalBlock (p : Q2Presentation.Induction.FramedPair) : Type 1**The §7 minimal non-scalar block.**  Source-uniform module-level data of the
    manuscript tower (`eq:targettower`), with the deep group/representation inputs of
    `lem:simplehead`/`lem:collapse`/`prop:simpleheaddet` isolated as documented fields.  pQ2Presentation.Induction.FramedPair) : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    
    def Q2Presentation.Induction.MinimalBlock.dimExp
      {pQ2Presentation.Induction.FramedPair :
        Q2Presentation.Induction.FramedPairQ2Presentation.Induction.FramedPair : Type 1A **framed pair** `(𝒴, F)`: a boundary-framed marked target together with a
    boundary frame for it (manuscript Definition 4.1 + `eq:beta`).  This is the index of
    Theorem 4.2: the boundary-framed surjection count `e_Γ^β` is a function of the pair.
    The induction of `sec:induction` ranges over *all* such pairs simultaneously
    ("the induction is stated globally", l.1213), ordered by `|L_Y|`. }
      (BQ2Presentation.Induction.MinimalBlock p :
        Q2Presentation.Induction.MinimalBlockQ2Presentation.Induction.MinimalBlock (p : Q2Presentation.Induction.FramedPair) : Type 1**The §7 minimal non-scalar block.**  Source-uniform module-level data of the
    manuscript tower (`eq:targettower`), with the deep group/representation inputs of
    `lem:simplehead`/`lem:collapse`/`prop:simpleheaddet` isolated as documented fields. 
          pQ2Presentation.Induction.FramedPair) :
      Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    
    **`dimExp = 2·dim R`** (manuscript: the lift-torsor exponent `2 dim R`,
    `prop:finalfourier`, `z_R = 2^{2 dim R + dim 𝒳_R}`). 
  • defdefined in Q2Presentation/Induction/MinimalBlock.lean
    complete
    def Q2Presentation.Induction.MinimalBlock.zR
      {pQ2Presentation.Induction.FramedPair : Q2Presentation.Induction.FramedPairQ2Presentation.Induction.FramedPair : Type 1A **framed pair** `(𝒴, F)`: a boundary-framed marked target together with a
    boundary frame for it (manuscript Definition 4.1 + `eq:beta`).  This is the index of
    Theorem 4.2: the boundary-framed surjection count `e_Γ^β` is a function of the pair.
    The induction of `sec:induction` ranges over *all* such pairs simultaneously
    ("the induction is stated globally", l.1213), ordered by `|L_Y|`. }
      (BQ2Presentation.Induction.MinimalBlock p : Q2Presentation.Induction.MinimalBlockQ2Presentation.Induction.MinimalBlock (p : Q2Presentation.Induction.FramedPair) : Type 1**The §7 minimal non-scalar block.**  Source-uniform module-level data of the
    manuscript tower (`eq:targettower`), with the deep group/representation inputs of
    `lem:simplehead`/`lem:collapse`/`prop:simpleheaddet` isolated as documented fields.  pQ2Presentation.Induction.FramedPair) : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    
    def Q2Presentation.Induction.MinimalBlock.zR
      {pQ2Presentation.Induction.FramedPair :
        Q2Presentation.Induction.FramedPairQ2Presentation.Induction.FramedPair : Type 1A **framed pair** `(𝒴, F)`: a boundary-framed marked target together with a
    boundary frame for it (manuscript Definition 4.1 + `eq:beta`).  This is the index of
    Theorem 4.2: the boundary-framed surjection count `e_Γ^β` is a function of the pair.
    The induction of `sec:induction` ranges over *all* such pairs simultaneously
    ("the induction is stated globally", l.1213), ordered by `|L_Y|`. }
      (BQ2Presentation.Induction.MinimalBlock p :
        Q2Presentation.Induction.MinimalBlockQ2Presentation.Induction.MinimalBlock (p : Q2Presentation.Induction.FramedPair) : Type 1**The §7 minimal non-scalar block.**  Source-uniform module-level data of the
    manuscript tower (`eq:targettower`), with the deep group/representation inputs of
    `lem:simplehead`/`lem:collapse`/`prop:simpleheaddet` isolated as documented fields. 
          pQ2Presentation.Induction.FramedPair) :
      Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    
    **`zR = 2^{2 dim R}·|𝒳_R| = 2^{dimExp}·|Ŵ|`** (manuscript `prop:finalfourier`,
    `z_R = |Z¹_{Γ,ρ}(R)| = 2^{2 dim R + dim 𝒳_R}`, l.4244).  Since `𝒳_R = Ŵ` is the character
    group of `W = O_R`, this is exactly the value `FourierBranchData.hzR` demands for the
    common lift-torsor size. 
  • defdefined in Q2Presentation/Induction/ProperImageSubtraction.lean
    complete
    def Q2Presentation.Induction.properCoverLiftable
      {pQ2Presentation.Induction.FramedPair : Q2Presentation.Induction.FramedPairQ2Presentation.Induction.FramedPair : Type 1A **framed pair** `(𝒴, F)`: a boundary-framed marked target together with a
    boundary frame for it (manuscript Definition 4.1 + `eq:beta`).  This is the index of
    Theorem 4.2: the boundary-framed surjection count `e_Γ^β` is a function of the pair.
    The induction of `sec:induction` ranges over *all* such pairs simultaneously
    ("the induction is stated globally", l.1213), ordered by `|L_Y|`. }
      (chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p : Q2Presentation.Induction.FirstNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor (p : Q2Presentation.Induction.FramedPair) : TypeA non-scalar chief factor of `L_Y` that is **first**: every chief factor strictly
    below it (i.e. with upper term contained in `lower`) is scalar.  This is the manuscript's
    choice `S ◁ P` at l.3616–3623 ("all chief factors below `S` are scalar and `V` is the
    first non-scalar simple factor"), which `lem:collapse` requires for the coprime step
    `[S, Ñ] = 1`.  pQ2Presentation.Induction.FramedPair)
      (KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor :
        Q2Presentation.Induction.KernelMinimalQ2Presentation.Induction.KernelMinimal {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.NonScalarChiefFactor p) : TypeThe manuscript's kernel choice (l.3623): `K ◁ Y`, `K ≤ P`, `KS = P`, and `K` is
    **⊆-minimal** with these properties — stated as: any `Y`-normal `K' ≤ K` still joining
    with `S` to `P` equals `K`.  (This, not leastness among all candidates, is what
    `lem:simplehead` and `lem:collapse` use: both apply it to subgroups of `K`.)  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p.toNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor.toNonScalarChiefFactor {p : Q2Presentation.Induction.FramedPair}
      (self : Q2Presentation.Induction.FirstNonScalarChiefFactor p) : Q2Presentation.Induction.NonScalarChiefFactor p)
      (lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) :
        Module.DualModule.Dual.{u_4, u_5} (R : Type u_4) (M : Type u_5) [Semiring R] [AddCommMonoid M] [Module R M] : Type (max u_5 u_4)The left dual space of an R-module M is the R-module of linear maps `M → R`.  (ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2)
          (Q2Presentation.Lifting.NAddQ2Presentation.Lifting.NAdd {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) : TypeThe additive `F₂`-carrier of an elementary kernel. 
            (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)))
      (hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K) :
        lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`.
          Q2Presentation.Lifting.conjInvDualsQ2Presentation.Lifting.conjInvDuals {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) :
      Submodule (ZMod 2) (Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E))The conjugation-invariant duals `X = (R^∨)^Y = (R^∨)^C` of an
    elementary kernel (consumer spelling of the manuscript's `𝒳_R`,
    §7 l.3720–3723). 
            (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor))
      (JQ2Presentation.Induction.mImageStrata chief K : Q2Presentation.Induction.mImageStrataQ2Presentation.Induction.mImageStrata {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Type**The proper-image index** (`eq:recursionR2`'s sum): exact-image subgroups
    `J ≤ B = Y/Φ(K)` mapping onto `C` (`J·M' = B`).  Includes the top `J = B`;
    "proper" is `J.1 ≠ ⊤`.  `Fintype` is the canonical global `coverStrata`
    instance (`CoverLiftPartition.lean:54`).  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      {ΓProfiniteGrp.{0} : ProfiniteGrp.{0}ProfiniteGrp.{u_1} : Type (u_1 + 1)The category of profinite groups. A term of this type consists of a profinite
    set with a topological group structure.
    } (BQ2Presentation.BoundaryPackage Γ : Q2Presentation.BoundaryPackageQ2Presentation.BoundaryPackage (Γ : ProfiniteGrp.{0}) : TypeA **boundary package** on a profinite group `Γ`: the uniform Stage-C data of a tame
    quotient, a maximal pro-`2` quotient, and a common unramified character `ℤ₂` through which
    both factor (manuscript Prop 3.14, `prop:compatiblemarking`; plan Turn 4 §6).  The
    compatibility `tameMap ≫ ν_t = ν = pro2Map ≫ ν_2` records that the two markings agree on
    the full unramified coordinate, not merely modulo `2`.  ΓProfiniteGrp.{0})
      (hQ2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.mImageStratumPair chief K J).fst
      (Q2Presentation.Induction.mImageStratumPair chief K J).snd :
        Q2Presentation.boundaryFramedSurjQ2Presentation.boundaryFramedSurj {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ)
      (Yt : Q2Presentation.BoundaryFramedTarget) (F : Q2Presentation.BoundaryFrame Yt) : TypeThe **boundary-framed surjections** `e_Γ^β(𝒴)` (manuscript `eq:eGamma`): the
    continuous surjections `f : Γ ↠ Y` whose induced map to `H × E` is the prescribed
    `β ∘ b_Γ`, i.e. `q_Y ∘ f = β ∘ b_Γ`.  This is the subtype counted in Theorem 4.2;
    its cardinality is `e_Γ^β(𝒴)`.  BQ2Presentation.BoundaryPackage Γ
          (Q2Presentation.Induction.mImageStratumPairQ2Presentation.Induction.mImageStratumPair {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (J : Q2Presentation.Induction.mImageStrata chief K) : Q2Presentation.Induction.FramedPairThe stratum framed pair `(J, J ∩ L_B, π|_J, θ|_J; p.2's frame)` —
    manuscript: the exact-image object `𝒥` at the child.  Measure `|J ∩ L_B|`.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor JQ2Presentation.Induction.mImageStrata chief K).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.
    
          (Q2Presentation.Induction.mImageStratumPairQ2Presentation.Induction.mImageStratumPair {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (J : Q2Presentation.Induction.mImageStrata chief K) : Q2Presentation.Induction.FramedPairThe stratum framed pair `(J, J ∩ L_B, π|_J, θ|_J; p.2's frame)` —
    manuscript: the exact-image object `𝒥` at the child.  Measure `|J ∩ L_B|`.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor JQ2Presentation.Induction.mImageStrata chief K).sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.
    ) :
      PropThe universe of propositions. `Prop ≡ Sort 0`.
    
    Every proposition is propositionally equal to either `True` or `False`. 
    def Q2Presentation.Induction.properCoverLiftable
      {pQ2Presentation.Induction.FramedPair :
        Q2Presentation.Induction.FramedPairQ2Presentation.Induction.FramedPair : Type 1A **framed pair** `(𝒴, F)`: a boundary-framed marked target together with a
    boundary frame for it (manuscript Definition 4.1 + `eq:beta`).  This is the index of
    Theorem 4.2: the boundary-framed surjection count `e_Γ^β` is a function of the pair.
    The induction of `sec:induction` ranges over *all* such pairs simultaneously
    ("the induction is stated globally", l.1213), ordered by `|L_Y|`. }
      (chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p :
        Q2Presentation.Induction.FirstNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor (p : Q2Presentation.Induction.FramedPair) : TypeA non-scalar chief factor of `L_Y` that is **first**: every chief factor strictly
    below it (i.e. with upper term contained in `lower`) is scalar.  This is the manuscript's
    choice `S ◁ P` at l.3616–3623 ("all chief factors below `S` are scalar and `V` is the
    first non-scalar simple factor"), which `lem:collapse` requires for the coprime step
    `[S, Ñ] = 1`. 
          pQ2Presentation.Induction.FramedPair)
      (KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor :
        Q2Presentation.Induction.KernelMinimalQ2Presentation.Induction.KernelMinimal {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.NonScalarChiefFactor p) : TypeThe manuscript's kernel choice (l.3623): `K ◁ Y`, `K ≤ P`, `KS = P`, and `K` is
    **⊆-minimal** with these properties — stated as: any `Y`-normal `K' ≤ K` still joining
    with `S` to `P` equals `K`.  (This, not leastness among all candidates, is what
    `lem:simplehead` and `lem:collapse` use: both apply it to subgroups of `K`.) 
          chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p.toNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor.toNonScalarChiefFactor {p : Q2Presentation.Induction.FramedPair}
      (self : Q2Presentation.Induction.FirstNonScalarChiefFactor p) : Q2Presentation.Induction.NonScalarChiefFactor p)
      (lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) :
        Module.DualModule.Dual.{u_4, u_5} (R : Type u_4) (M : Type u_5) [Semiring R] [AddCommMonoid M] [Module R M] : Type (max u_5 u_4)The left dual space of an R-module M is the R-module of linear maps `M → R`.  (ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2)
          (Q2Presentation.Lifting.NAddQ2Presentation.Lifting.NAdd {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) : TypeThe additive `F₂`-carrier of an elementary kernel. 
            (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian. 
              chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)))
      (hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K) :
        lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`.
          Q2Presentation.Lifting.conjInvDualsQ2Presentation.Lifting.conjInvDuals {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) :
      Submodule (ZMod 2) (Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E))The conjugation-invariant duals `X = (R^∨)^Y = (R^∨)^C` of an
    elementary kernel (consumer spelling of the manuscript's `𝒳_R`,
    §7 l.3720–3723). 
            (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian. 
              chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor))
      (JQ2Presentation.Induction.mImageStrata chief K :
        Q2Presentation.Induction.mImageStrataQ2Presentation.Induction.mImageStrata {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Type**The proper-image index** (`eq:recursionR2`'s sum): exact-image subgroups
    `J ≤ B = Y/Φ(K)` mapping onto `C` (`J·M' = B`).  Includes the top `J = B`;
    "proper" is `J.1 ≠ ⊤`.  `Fintype` is the canonical global `coverStrata`
    instance (`CoverLiftPartition.lean:54`). 
          chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      {ΓProfiniteGrp.{0} : ProfiniteGrp.{0}ProfiniteGrp.{u_1} : Type (u_1 + 1)The category of profinite groups. A term of this type consists of a profinite
    set with a topological group structure.
    }
      (BQ2Presentation.BoundaryPackage Γ : Q2Presentation.BoundaryPackageQ2Presentation.BoundaryPackage (Γ : ProfiniteGrp.{0}) : TypeA **boundary package** on a profinite group `Γ`: the uniform Stage-C data of a tame
    quotient, a maximal pro-`2` quotient, and a common unramified character `ℤ₂` through which
    both factor (manuscript Prop 3.14, `prop:compatiblemarking`; plan Turn 4 §6).  The
    compatibility `tameMap ≫ ν_t = ν = pro2Map ≫ ν_2` records that the two markings agree on
    the full unramified coordinate, not merely modulo `2`.  ΓProfiniteGrp.{0})
      (hQ2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.mImageStratumPair chief K J).fst
      (Q2Presentation.Induction.mImageStratumPair chief K J).snd :
        Q2Presentation.boundaryFramedSurjQ2Presentation.boundaryFramedSurj {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ)
      (Yt : Q2Presentation.BoundaryFramedTarget) (F : Q2Presentation.BoundaryFrame Yt) : TypeThe **boundary-framed surjections** `e_Γ^β(𝒴)` (manuscript `eq:eGamma`): the
    continuous surjections `f : Γ ↠ Y` whose induced map to `H × E` is the prescribed
    `β ∘ b_Γ`, i.e. `q_Y ∘ f = β ∘ b_Γ`.  This is the subtype counted in Theorem 4.2;
    its cardinality is `e_Γ^β(𝒴)`.  BQ2Presentation.BoundaryPackage Γ
          (Q2Presentation.Induction.mImageStratumPairQ2Presentation.Induction.mImageStratumPair {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (J : Q2Presentation.Induction.mImageStrata chief K) : Q2Presentation.Induction.FramedPairThe stratum framed pair `(J, J ∩ L_B, π|_J, θ|_J; p.2's frame)` —
    manuscript: the exact-image object `𝒥` at the child.  Measure `|J ∩ L_B|`. 
              chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor JQ2Presentation.Induction.mImageStrata chief K).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.
    
          (Q2Presentation.Induction.mImageStratumPairQ2Presentation.Induction.mImageStratumPair {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (J : Q2Presentation.Induction.mImageStrata chief K) : Q2Presentation.Induction.FramedPairThe stratum framed pair `(J, J ∩ L_B, π|_J, θ|_J; p.2's frame)` —
    manuscript: the exact-image object `𝒥` at the child.  Measure `|J ∩ L_B|`. 
              chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor JQ2Presentation.Induction.mImageStrata chief K).sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.
    ) :
      PropThe universe of propositions. `Prop ≡ Sort 0`.
    
    Every proposition is propositionally equal to either `True` or `False`. 
    **Per-stratum λ-liftability** (the `m_{Γ,λ}(J)`-condition of
    `prop:finalfourier` l.4246–4248, `lem:obstructionseparation` reading): some
    framed hom into `B_λ` projects to the stratum surjection's values.  Same
    `∃`-raw-hom shape as `coverLiftableWeak` (P3-U5) and
    `restrictLiftHom_iff_exists` (P4-V2). 
  • structure(21 fields)defined in Q2Presentation/Induction/Recursion.lean
    complete
    structure Q2Presentation.Induction.FourierBranchData
      (pQ2Presentation.Induction.FramedPair : Q2Presentation.Induction.FramedPairQ2Presentation.Induction.FramedPair : Type 1A **framed pair** `(𝒴, F)`: a boundary-framed marked target together with a
    boundary frame for it (manuscript Definition 4.1 + `eq:beta`).  This is the index of
    Theorem 4.2: the boundary-framed surjection count `e_Γ^β` is a function of the pair.
    The induction of `sec:induction` ranges over *all* such pairs simultaneously
    ("the induction is stated globally", l.1213), ordered by `|L_Y|`. ) : Type 1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. 
    structure Q2Presentation.Induction.FourierBranchData
      (pQ2Presentation.Induction.FramedPair :
        Q2Presentation.Induction.FramedPairQ2Presentation.Induction.FramedPair : Type 1A **framed pair** `(𝒴, F)`: a boundary-framed marked target together with a
    boundary frame for it (manuscript Definition 4.1 + `eq:beta`).  This is the index of
    Theorem 4.2: the boundary-framed surjection count `e_Γ^β` is a function of the pair.
    The induction of `sec:induction` ranges over *all* such pairs simultaneously
    ("the induction is stated globally", l.1213), ordered by `|L_Y|`. ) :
      Type 1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. 
    **Nonterminal Fourier-recursion packet.**  Source-uniform data: the finite `𝔽₂`
    obstruction space `W = O_R`, the lift-torsor exponent/size `dimExp`/`zR`
    (`prop:finalfourier`), the strictly-smaller `children`, and the *single* partial-count
    recipe `partialN` (`eq:recursionR2`–`eq:phasecovertransform`).  Per-source data: the
    finite lift index `X_Γ`, the `R`-obstruction `o_Γ : X_Γ → O_R`, the lift-torsor
    identity `realize_Γ` (`e_Γ(Y) = z_R·#{o_Γ = 0}`), and the partial-count identity
    `partial_Γ`.  The two recursion equations are **not** fields: they are derived from
    `fourier_recursion_step`. 

    Fields

    WTypeThe finite `𝔽₂` obstruction space `O_R` of the minimal non-scalar layer.  : TypeA type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. 
    The finite `𝔽₂` obstruction space `O_R` of the minimal non-scalar layer. 
    acgAddCommGroup self.W : AddCommGroupAddCommGroup.{u} (G : Type u) : Type uAn additive commutative group is an additive group with commutative `(+)`.  selfQ2Presentation.Induction.FourierBranchData p.WQ2Presentation.Induction.FourierBranchData.W {p : Q2Presentation.Induction.FramedPair}
      (self : Q2Presentation.Induction.FourierBranchData p) : TypeThe finite `𝔽₂` obstruction space `O_R` of the minimal non-scalar layer. 
    modModule (ZMod 2) self.W : ModuleModule.{u, v} (R : Type u) (M : Type v) [Semiring R] [AddCommMonoid M] : Type (max u v)A module is a generalization of vector spaces to a scalar semiring.
    It consists of a scalar semiring `R` and an additive monoid of "vectors" `M`,
    connected by a "scalar multiplication" operation `r • x : M`
    (where `r : R` and `x : M`) with some natural associativity and
    distributivity axioms similar to those on a ring.  (ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2) selfQ2Presentation.Induction.FourierBranchData p.WQ2Presentation.Induction.FourierBranchData.W {p : Q2Presentation.Induction.FramedPair}
      (self : Q2Presentation.Induction.FourierBranchData p) : TypeThe finite `𝔽₂` obstruction space `O_R` of the minimal non-scalar layer. 
    finWFintype self.W : FintypeFintype.{u_4} (α : Type u_4) : Type u_4`Fintype α` means that `α` is finite, i.e. there are only
    finitely many distinct elements of type `α`. The evidence of this
    is a finset `elems` (a list up to permutation without duplicates),
    together with a proof that everything of type `α` is in the list.  selfQ2Presentation.Induction.FourierBranchData p.WQ2Presentation.Induction.FourierBranchData.W {p : Q2Presentation.Induction.FramedPair}
      (self : Q2Presentation.Induction.FourierBranchData p) : TypeThe finite `𝔽₂` obstruction space `O_R` of the minimal non-scalar layer. 
    decWDecidableEq self.W : DecidableEqDecidableEq.{u} (α : Sort u) : Sort (max 1 u)Propositional equality is `Decidable` for all elements of a type.
    
    In other words, an instance of `DecidableEq α` is a means of deciding the proposition `a = b` is
    for all `a b : α`.
     selfQ2Presentation.Induction.FourierBranchData p.WQ2Presentation.Induction.FourierBranchData.W {p : Q2Presentation.Induction.FramedPair}
      (self : Q2Presentation.Induction.FourierBranchData p) : TypeThe finite `𝔽₂` obstruction space `O_R` of the minimal non-scalar layer. 
    dimExp`2·dim R`: the lift-torsor exponent.  : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    
    `2·dim R`: the lift-torsor exponent. 
    zRThe common lift-torsor size `z_R = 2^{2 dim R}·|X_R|`.  : Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    
    The common lift-torsor size `z_R = 2^{2 dim R}·|X_R|`. 
    hzRself.zR = 2 ^ self.dimExp * Fintype.card (Module.Dual (ZMod 2) self.W) : selfQ2Presentation.Induction.FourierBranchData p.zRQ2Presentation.Induction.FourierBranchData.zR {p : Q2Presentation.Induction.FramedPair}
      (self : Q2Presentation.Induction.FourierBranchData p) : ℕThe common lift-torsor size `z_R = 2^{2 dim R}·|X_R|`.  =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`. 2 ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. selfQ2Presentation.Induction.FourierBranchData p.dimExpQ2Presentation.Induction.FourierBranchData.dimExp {p : Q2Presentation.Induction.FramedPair}
      (self : Q2Presentation.Induction.FourierBranchData p) : ℕ`2·dim R`: the lift-torsor exponent.  *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. Fintype.cardFintype.card.{u_4} (α : Type u_4) [Fintype α] : ℕ`card α` is the number of elements in `α`, defined when `α` is a fintype.  (Module.DualModule.Dual.{u_4, u_5} (R : Type u_4) (M : Type u_5) [Semiring R] [AddCommMonoid M] [Module R M] : Type (max u_5 u_4)The left dual space of an R-module M is the R-module of linear maps `M → R`.  (ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2) selfQ2Presentation.Induction.FourierBranchData p.WQ2Presentation.Induction.FourierBranchData.W {p : Q2Presentation.Induction.FramedPair}
      (self : Q2Presentation.Induction.FourierBranchData p) : TypeThe finite `𝔽₂` obstruction space `O_R` of the minimal non-scalar layer. )
    childrenList Q2Presentation.Induction.FramedPairThe strictly-smaller exact-image children targets.  : ListList.{u} (α : Type u) : Type uLinked lists: ordered lists, in which each element has a reference to the next element.
    
    Most operations on linked lists take time proportional to the length of the list, because each
    element must be traversed to find the next element.
    
    `List α` is isomorphic to `Array α`, but they are useful for different things:
    * `List α` is easier for reasoning, and `Array α` is modeled as a wrapper around `List α`.
    * `List α` works well as a persistent data structure, when many copies of the tail are shared. When
      the value is not shared, `Array α` will have better performance because it can do destructive
      updates.
     Q2Presentation.Induction.FramedPairQ2Presentation.Induction.FramedPair : Type 1A **framed pair** `(𝒴, F)`: a boundary-framed marked target together with a
    boundary frame for it (manuscript Definition 4.1 + `eq:beta`).  This is the index of
    Theorem 4.2: the boundary-framed surjection count `e_Γ^β` is a function of the pair.
    The induction of `sec:induction` ranges over *all* such pairs simultaneously
    ("the induction is stated globally", l.1213), ordered by `|L_Y|`. 
    The strictly-smaller exact-image children targets. 
    small∀ c ∈ self.children, Q2Presentation.Induction.framedMeasure c < Q2Presentation.Induction.framedMeasure p :  cQ2Presentation.Induction.FramedPair  selfQ2Presentation.Induction.FourierBranchData p.childrenQ2Presentation.Induction.FourierBranchData.children {p : Q2Presentation.Induction.FramedPair}
      (self : Q2Presentation.Induction.FourierBranchData p) : List Q2Presentation.Induction.FramedPairThe strictly-smaller exact-image children targets. , Q2Presentation.Induction.framedMeasureQ2Presentation.Induction.framedMeasure (p : Q2Presentation.Induction.FramedPair) : ℕThe induction measure `|L_Y|`: the order of the marked `2`-kernel of the framed
    target (manuscript: the strong induction of `thm:fixedframe` is on `|L_Y|`).  cQ2Presentation.Induction.FramedPair <LT.lt.{u} {α : Type u} [self : LT α] : α → α → PropThe less-than relation: `x < y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `<` in identifiers is `lt`. Q2Presentation.Induction.framedMeasureQ2Presentation.Induction.framedMeasure (p : Q2Presentation.Induction.FramedPair) : ℕThe induction measure `|L_Y|`: the order of the marked `2`-kernel of the framed
    target (manuscript: the strong induction of `thm:fixedframe` is on `|L_Y|`).  pQ2Presentation.Induction.FramedPair
    partialNModule.Dual (ZMod 2) self.W → List ℕ → ℕSource-independent partial-count recipe (`eq:recursionR2`–`eq:phasecovertransform`).  : Module.DualModule.Dual.{u_4, u_5} (R : Type u_4) (M : Type u_5) [Semiring R] [AddCommMonoid M] [Module R M] : Type (max u_5 u_4)The left dual space of an R-module M is the R-module of linear maps `M → R`.  (ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2) selfQ2Presentation.Induction.FourierBranchData p.WQ2Presentation.Induction.FourierBranchData.W {p : Q2Presentation.Induction.FramedPair}
      (self : Q2Presentation.Induction.FourierBranchData p) : TypeThe finite `𝔽₂` obstruction space `O_R` of the minimal non-scalar layer.   ListList.{u} (α : Type u) : Type uLinked lists: ordered lists, in which each element has a reference to the next element.
    
    Most operations on linked lists take time proportional to the length of the list, because each
    element must be traversed to find the next element.
    
    `List α` is isomorphic to `Array α`, but they are useful for different things:
    * `List α` is easier for reasoning, and `Array α` is modeled as a wrapper around `List α`.
    * `List α` works well as a persistent data structure, when many copies of the tail are shared. When
      the value is not shared, `Array α` will have better performance because it can do destructive
      updates.
     Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
      Nat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    
    Source-independent partial-count recipe (`eq:recursionR2`–`eq:phasecovertransform`). 
    XATypeCandidate-source finite lift index and `R`-obstruction.  : TypeA type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. 
    Candidate-source finite lift index and `R`-obstruction. 
    finXAFintype self.XA : FintypeFintype.{u_4} (α : Type u_4) : Type u_4`Fintype α` means that `α` is finite, i.e. there are only
    finitely many distinct elements of type `α`. The evidence of this
    is a finset `elems` (a list up to permutation without duplicates),
    together with a proof that everything of type `α` is in the list.  selfQ2Presentation.Induction.FourierBranchData p.XAQ2Presentation.Induction.FourierBranchData.XA {p : Q2Presentation.Induction.FramedPair}
      (self : Q2Presentation.Induction.FourierBranchData p) : TypeCandidate-source finite lift index and `R`-obstruction. 
    oAself.XA → self.W : selfQ2Presentation.Induction.FourierBranchData p.XAQ2Presentation.Induction.FourierBranchData.XA {p : Q2Presentation.Induction.FramedPair}
      (self : Q2Presentation.Induction.FourierBranchData p) : TypeCandidate-source finite lift index and `R`-obstruction.   selfQ2Presentation.Induction.FourierBranchData p.WQ2Presentation.Induction.FourierBranchData.W {p : Q2Presentation.Induction.FramedPair}
      (self : Q2Presentation.Induction.FourierBranchData p) : TypeThe finite `𝔽₂` obstruction space `O_R` of the minimal non-scalar layer. 
    XQTypeLocal-source finite lift index and `R`-obstruction.  : TypeA type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. 
    Local-source finite lift index and `R`-obstruction. 
    finXQFintype self.XQ : FintypeFintype.{u_4} (α : Type u_4) : Type u_4`Fintype α` means that `α` is finite, i.e. there are only
    finitely many distinct elements of type `α`. The evidence of this
    is a finset `elems` (a list up to permutation without duplicates),
    together with a proof that everything of type `α` is in the list.  selfQ2Presentation.Induction.FourierBranchData p.XQQ2Presentation.Induction.FourierBranchData.XQ {p : Q2Presentation.Induction.FramedPair}
      (self : Q2Presentation.Induction.FourierBranchData p) : TypeLocal-source finite lift index and `R`-obstruction. 
    oQself.XQ → self.W : selfQ2Presentation.Induction.FourierBranchData p.XQQ2Presentation.Induction.FourierBranchData.XQ {p : Q2Presentation.Induction.FramedPair}
      (self : Q2Presentation.Induction.FourierBranchData p) : TypeLocal-source finite lift index and `R`-obstruction.   selfQ2Presentation.Induction.FourierBranchData p.WQ2Presentation.Induction.FourierBranchData.W {p : Q2Presentation.Induction.FramedPair}
      (self : Q2Presentation.Induction.FourierBranchData p) : TypeThe finite `𝔽₂` obstruction space `O_R` of the minimal non-scalar layer. 
    realizeAQ2Presentation.Induction.framedCountA p = ↑(self.zR * Nat.card { x // self.oA x = 0 })Candidate lift-torsor identity `e_{Γ_A}(Y) = z_R·#{o_A = 0}` (`eq:recursionR1`).  : Q2Presentation.Induction.framedCountAQ2Presentation.Induction.framedCountA (p : Q2Presentation.Induction.FramedPair) : Cardinal.{0}The **candidate** boundary-framed surjection count `e_{Γ_A}^β(𝒴)`
    (`eq:eGamma`), as a cardinal `|boundaryFramedSurj boundaryPackage_GammaA 𝒴 F|`.  pQ2Presentation.Induction.FramedPair =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`. (HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.selfQ2Presentation.Induction.FourierBranchData p.zRQ2Presentation.Induction.FourierBranchData.zR {p : Q2Presentation.Induction.FramedPair}
      (self : Q2Presentation.Induction.FourierBranchData p) : ℕThe common lift-torsor size `z_R = 2^{2 dim R}·|X_R|`.  *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number.
    If `α` is infinite, `Nat.card α = 0`.  {Subtype.{u} {α : Sort u} (p : α → Prop) : Sort (max 1 u)All the elements of a type that satisfy a predicate.
    
    `Subtype p`, usually written `{ x : α // p x }` or `{ x // p x }`, contains all elements `x : α` for
    which `p x` is true. Its constructor is a pair of the value and the proof that it satisfies the
    predicate. In run-time code, `{ x : α // p x }` is represented identically to `α`.
    
    There is a coercion from `{ x : α // p x }` to `α`, so elements of a subtype may be used where the
    underlying type is expected.
    
    Examples:
     * `{ n : Nat // n % 2 = 0 }` is the type of even numbers.
     * `{ xs : Array String // xs.size = 5 }` is the type of arrays with five `String`s.
     * Given `xs : List α`, `List { x : α // x ∈ xs }` is the type of lists in which all elements are
       contained in `xs`.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `{ x // p x }` in identifiers is `subtype`. xself.XA //Subtype.{u} {α : Sort u} (p : α → Prop) : Sort (max 1 u)All the elements of a type that satisfy a predicate.
    
    `Subtype p`, usually written `{ x : α // p x }` or `{ x // p x }`, contains all elements `x : α` for
    which `p x` is true. Its constructor is a pair of the value and the proof that it satisfies the
    predicate. In run-time code, `{ x : α // p x }` is represented identically to `α`.
    
    There is a coercion from `{ x : α // p x }` to `α`, so elements of a subtype may be used where the
    underlying type is expected.
    
    Examples:
     * `{ n : Nat // n % 2 = 0 }` is the type of even numbers.
     * `{ xs : Array String // xs.size = 5 }` is the type of arrays with five `String`s.
     * Given `xs : List α`, `List { x : α // x ∈ xs }` is the type of lists in which all elements are
       contained in `xs`.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `{ x // p x }` in identifiers is `subtype`. selfQ2Presentation.Induction.FourierBranchData p.oAQ2Presentation.Induction.FourierBranchData.oA {p : Q2Presentation.Induction.FramedPair}
      (self : Q2Presentation.Induction.FourierBranchData p) : self.XA → self.W xself.XA =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`. 0 }Subtype.{u} {α : Sort u} (p : α → Prop) : Sort (max 1 u)All the elements of a type that satisfy a predicate.
    
    `Subtype p`, usually written `{ x : α // p x }` or `{ x // p x }`, contains all elements `x : α` for
    which `p x` is true. Its constructor is a pair of the value and the proof that it satisfies the
    predicate. In run-time code, `{ x : α // p x }` is represented identically to `α`.
    
    There is a coercion from `{ x : α // p x }` to `α`, so elements of a subtype may be used where the
    underlying type is expected.
    
    Examples:
     * `{ n : Nat // n % 2 = 0 }` is the type of even numbers.
     * `{ xs : Array String // xs.size = 5 }` is the type of arrays with five `String`s.
     * Given `xs : List α`, `List { x : α // x ∈ xs }` is the type of lists in which all elements are
       contained in `xs`.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `{ x // p x }` in identifiers is `subtype`.)HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
    Candidate lift-torsor identity `e_{Γ_A}(Y) = z_R·#{o_A = 0}` (`eq:recursionR1`). 
    realizeQQ2Presentation.Induction.framedCountQ p = ↑(self.zR * Nat.card { x // self.oQ x = 0 })Local lift-torsor identity `e_{G_{ℚ₂}}(Y) = z_R·#{o_Q = 0}`.  : Q2Presentation.Induction.framedCountQQ2Presentation.Induction.framedCountQ (p : Q2Presentation.Induction.FramedPair) : Cardinal.{0}The **local** boundary-framed surjection count `e_{G_{ℚ₂}}^β(𝒴)`
    (`eq:eGamma`), as a cardinal `|boundaryFramedSurj boundaryPackage_GQ2 𝒴 F|`.  pQ2Presentation.Induction.FramedPair =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`. (HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.selfQ2Presentation.Induction.FourierBranchData p.zRQ2Presentation.Induction.FourierBranchData.zR {p : Q2Presentation.Induction.FramedPair}
      (self : Q2Presentation.Induction.FourierBranchData p) : ℕThe common lift-torsor size `z_R = 2^{2 dim R}·|X_R|`.  *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number.
    If `α` is infinite, `Nat.card α = 0`.  {Subtype.{u} {α : Sort u} (p : α → Prop) : Sort (max 1 u)All the elements of a type that satisfy a predicate.
    
    `Subtype p`, usually written `{ x : α // p x }` or `{ x // p x }`, contains all elements `x : α` for
    which `p x` is true. Its constructor is a pair of the value and the proof that it satisfies the
    predicate. In run-time code, `{ x : α // p x }` is represented identically to `α`.
    
    There is a coercion from `{ x : α // p x }` to `α`, so elements of a subtype may be used where the
    underlying type is expected.
    
    Examples:
     * `{ n : Nat // n % 2 = 0 }` is the type of even numbers.
     * `{ xs : Array String // xs.size = 5 }` is the type of arrays with five `String`s.
     * Given `xs : List α`, `List { x : α // x ∈ xs }` is the type of lists in which all elements are
       contained in `xs`.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `{ x // p x }` in identifiers is `subtype`. xself.XQ //Subtype.{u} {α : Sort u} (p : α → Prop) : Sort (max 1 u)All the elements of a type that satisfy a predicate.
    
    `Subtype p`, usually written `{ x : α // p x }` or `{ x // p x }`, contains all elements `x : α` for
    which `p x` is true. Its constructor is a pair of the value and the proof that it satisfies the
    predicate. In run-time code, `{ x : α // p x }` is represented identically to `α`.
    
    There is a coercion from `{ x : α // p x }` to `α`, so elements of a subtype may be used where the
    underlying type is expected.
    
    Examples:
     * `{ n : Nat // n % 2 = 0 }` is the type of even numbers.
     * `{ xs : Array String // xs.size = 5 }` is the type of arrays with five `String`s.
     * Given `xs : List α`, `List { x : α // x ∈ xs }` is the type of lists in which all elements are
       contained in `xs`.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `{ x // p x }` in identifiers is `subtype`. selfQ2Presentation.Induction.FourierBranchData p.oQQ2Presentation.Induction.FourierBranchData.oQ {p : Q2Presentation.Induction.FramedPair}
      (self : Q2Presentation.Induction.FourierBranchData p) : self.XQ → self.W xself.XQ =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`. 0 }Subtype.{u} {α : Sort u} (p : α → Prop) : Sort (max 1 u)All the elements of a type that satisfy a predicate.
    
    `Subtype p`, usually written `{ x : α // p x }` or `{ x // p x }`, contains all elements `x : α` for
    which `p x` is true. Its constructor is a pair of the value and the proof that it satisfies the
    predicate. In run-time code, `{ x : α // p x }` is represented identically to `α`.
    
    There is a coercion from `{ x : α // p x }` to `α`, so elements of a subtype may be used where the
    underlying type is expected.
    
    Examples:
     * `{ n : Nat // n % 2 = 0 }` is the type of even numbers.
     * `{ xs : Array String // xs.size = 5 }` is the type of arrays with five `String`s.
     * Given `xs : List α`, `List { x : α // x ∈ xs }` is the type of lists in which all elements are
       contained in `xs`.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `{ x // p x }` in identifiers is `subtype`.)HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
    Local lift-torsor identity `e_{G_{ℚ₂}}(Y) = z_R·#{o_Q = 0}`. 
    partialA∀ (χ : Module.Dual (ZMod 2) self.W),
      Nat.card { x // χ (self.oA x) = 0 } =
        self.partialN χ (List.map (⇑Cardinal.toNat) (List.map Q2Presentation.Induction.framedCountA self.children))Candidate partial-count realization `m_{Γ_A,χ} = partialN χ (children counts)`.  :  (χModule.Dual (ZMod 2) self.W : Module.DualModule.Dual.{u_4, u_5} (R : Type u_4) (M : Type u_5) [Semiring R] [AddCommMonoid M] [Module R M] : Type (max u_5 u_4)The left dual space of an R-module M is the R-module of linear maps `M → R`.  (ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2) selfQ2Presentation.Induction.FourierBranchData p.WQ2Presentation.Induction.FourierBranchData.W {p : Q2Presentation.Induction.FramedPair}
      (self : Q2Presentation.Induction.FourierBranchData p) : TypeThe finite `𝔽₂` obstruction space `O_R` of the minimal non-scalar layer. ),
      Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number.
    If `α` is infinite, `Nat.card α = 0`.  {Subtype.{u} {α : Sort u} (p : α → Prop) : Sort (max 1 u)All the elements of a type that satisfy a predicate.
    
    `Subtype p`, usually written `{ x : α // p x }` or `{ x // p x }`, contains all elements `x : α` for
    which `p x` is true. Its constructor is a pair of the value and the proof that it satisfies the
    predicate. In run-time code, `{ x : α // p x }` is represented identically to `α`.
    
    There is a coercion from `{ x : α // p x }` to `α`, so elements of a subtype may be used where the
    underlying type is expected.
    
    Examples:
     * `{ n : Nat // n % 2 = 0 }` is the type of even numbers.
     * `{ xs : Array String // xs.size = 5 }` is the type of arrays with five `String`s.
     * Given `xs : List α`, `List { x : α // x ∈ xs }` is the type of lists in which all elements are
       contained in `xs`.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `{ x // p x }` in identifiers is `subtype`. xself.XA //Subtype.{u} {α : Sort u} (p : α → Prop) : Sort (max 1 u)All the elements of a type that satisfy a predicate.
    
    `Subtype p`, usually written `{ x : α // p x }` or `{ x // p x }`, contains all elements `x : α` for
    which `p x` is true. Its constructor is a pair of the value and the proof that it satisfies the
    predicate. In run-time code, `{ x : α // p x }` is represented identically to `α`.
    
    There is a coercion from `{ x : α // p x }` to `α`, so elements of a subtype may be used where the
    underlying type is expected.
    
    Examples:
     * `{ n : Nat // n % 2 = 0 }` is the type of even numbers.
     * `{ xs : Array String // xs.size = 5 }` is the type of arrays with five `String`s.
     * Given `xs : List α`, `List { x : α // x ∈ xs }` is the type of lists in which all elements are
       contained in `xs`.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `{ x // p x }` in identifiers is `subtype`. χModule.Dual (ZMod 2) self.W (selfQ2Presentation.Induction.FourierBranchData p.oAQ2Presentation.Induction.FourierBranchData.oA {p : Q2Presentation.Induction.FramedPair}
      (self : Q2Presentation.Induction.FourierBranchData p) : self.XA → self.W xself.XA) =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`. 0 }Subtype.{u} {α : Sort u} (p : α → Prop) : Sort (max 1 u)All the elements of a type that satisfy a predicate.
    
    `Subtype p`, usually written `{ x : α // p x }` or `{ x // p x }`, contains all elements `x : α` for
    which `p x` is true. Its constructor is a pair of the value and the proof that it satisfies the
    predicate. In run-time code, `{ x : α // p x }` is represented identically to `α`.
    
    There is a coercion from `{ x : α // p x }` to `α`, so elements of a subtype may be used where the
    underlying type is expected.
    
    Examples:
     * `{ n : Nat // n % 2 = 0 }` is the type of even numbers.
     * `{ xs : Array String // xs.size = 5 }` is the type of arrays with five `String`s.
     * Given `xs : List α`, `List { x : α // x ∈ xs }` is the type of lists in which all elements are
       contained in `xs`.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `{ x // p x }` in identifiers is `subtype`. =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`.
        selfQ2Presentation.Induction.FourierBranchData p.partialNQ2Presentation.Induction.FourierBranchData.partialN {p : Q2Presentation.Induction.FramedPair}
      (self : Q2Presentation.Induction.FourierBranchData p) : Module.Dual (ZMod 2) self.W → List ℕ → ℕSource-independent partial-count recipe (`eq:recursionR2`–`eq:phasecovertransform`).  χModule.Dual (ZMod 2) self.W (List.mapList.map.{u_1, u_2} {α : Type u_1} {β : Type u_2} (f : α → β) (l : List α) : List βApplies a function to each element of the list, returning the resulting list of values.
    
    `O(|l|)`.
    
    Examples:
    * `[a, b, c].map f = [f a, f b, f c]`
    * `[].map Nat.succ = []`
    * `["one", "two", "three"].map (·.length) = [3, 3, 5]`
    * `["one", "two", "three"].map (·.reverse) = ["eno", "owt", "eerht"]`
     (⇑Cardinal.toNatCardinal.toNat.{u_1} : Cardinal.{u_1} →*₀ ℕThis function sends finite cardinals to the corresponding natural, and infinite cardinals
    to 0. ) (List.mapList.map.{u_1, u_2} {α : Type u_1} {β : Type u_2} (f : α → β) (l : List α) : List βApplies a function to each element of the list, returning the resulting list of values.
    
    `O(|l|)`.
    
    Examples:
    * `[a, b, c].map f = [f a, f b, f c]`
    * `[].map Nat.succ = []`
    * `["one", "two", "three"].map (·.length) = [3, 3, 5]`
    * `["one", "two", "three"].map (·.reverse) = ["eno", "owt", "eerht"]`
     Q2Presentation.Induction.framedCountAQ2Presentation.Induction.framedCountA (p : Q2Presentation.Induction.FramedPair) : Cardinal.{0}The **candidate** boundary-framed surjection count `e_{Γ_A}^β(𝒴)`
    (`eq:eGamma`), as a cardinal `|boundaryFramedSurj boundaryPackage_GammaA 𝒴 F|`.  selfQ2Presentation.Induction.FourierBranchData p.childrenQ2Presentation.Induction.FourierBranchData.children {p : Q2Presentation.Induction.FramedPair}
      (self : Q2Presentation.Induction.FourierBranchData p) : List Q2Presentation.Induction.FramedPairThe strictly-smaller exact-image children targets. ))
    Candidate partial-count realization `m_{Γ_A,χ} = partialN χ (children counts)`. 
    partialQ∀ (χ : Module.Dual (ZMod 2) self.W),
      Nat.card { x // χ (self.oQ x) = 0 } =
        self.partialN χ (List.map (⇑Cardinal.toNat) (List.map Q2Presentation.Induction.framedCountQ self.children))Local partial-count realization `m_{G_{ℚ₂},χ} = partialN χ (children counts)`.  :  (χModule.Dual (ZMod 2) self.W : Module.DualModule.Dual.{u_4, u_5} (R : Type u_4) (M : Type u_5) [Semiring R] [AddCommMonoid M] [Module R M] : Type (max u_5 u_4)The left dual space of an R-module M is the R-module of linear maps `M → R`.  (ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2) selfQ2Presentation.Induction.FourierBranchData p.WQ2Presentation.Induction.FourierBranchData.W {p : Q2Presentation.Induction.FramedPair}
      (self : Q2Presentation.Induction.FourierBranchData p) : TypeThe finite `𝔽₂` obstruction space `O_R` of the minimal non-scalar layer. ),
      Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number.
    If `α` is infinite, `Nat.card α = 0`.  {Subtype.{u} {α : Sort u} (p : α → Prop) : Sort (max 1 u)All the elements of a type that satisfy a predicate.
    
    `Subtype p`, usually written `{ x : α // p x }` or `{ x // p x }`, contains all elements `x : α` for
    which `p x` is true. Its constructor is a pair of the value and the proof that it satisfies the
    predicate. In run-time code, `{ x : α // p x }` is represented identically to `α`.
    
    There is a coercion from `{ x : α // p x }` to `α`, so elements of a subtype may be used where the
    underlying type is expected.
    
    Examples:
     * `{ n : Nat // n % 2 = 0 }` is the type of even numbers.
     * `{ xs : Array String // xs.size = 5 }` is the type of arrays with five `String`s.
     * Given `xs : List α`, `List { x : α // x ∈ xs }` is the type of lists in which all elements are
       contained in `xs`.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `{ x // p x }` in identifiers is `subtype`. xself.XQ //Subtype.{u} {α : Sort u} (p : α → Prop) : Sort (max 1 u)All the elements of a type that satisfy a predicate.
    
    `Subtype p`, usually written `{ x : α // p x }` or `{ x // p x }`, contains all elements `x : α` for
    which `p x` is true. Its constructor is a pair of the value and the proof that it satisfies the
    predicate. In run-time code, `{ x : α // p x }` is represented identically to `α`.
    
    There is a coercion from `{ x : α // p x }` to `α`, so elements of a subtype may be used where the
    underlying type is expected.
    
    Examples:
     * `{ n : Nat // n % 2 = 0 }` is the type of even numbers.
     * `{ xs : Array String // xs.size = 5 }` is the type of arrays with five `String`s.
     * Given `xs : List α`, `List { x : α // x ∈ xs }` is the type of lists in which all elements are
       contained in `xs`.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `{ x // p x }` in identifiers is `subtype`. χModule.Dual (ZMod 2) self.W (selfQ2Presentation.Induction.FourierBranchData p.oQQ2Presentation.Induction.FourierBranchData.oQ {p : Q2Presentation.Induction.FramedPair}
      (self : Q2Presentation.Induction.FourierBranchData p) : self.XQ → self.W xself.XQ) =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`. 0 }Subtype.{u} {α : Sort u} (p : α → Prop) : Sort (max 1 u)All the elements of a type that satisfy a predicate.
    
    `Subtype p`, usually written `{ x : α // p x }` or `{ x // p x }`, contains all elements `x : α` for
    which `p x` is true. Its constructor is a pair of the value and the proof that it satisfies the
    predicate. In run-time code, `{ x : α // p x }` is represented identically to `α`.
    
    There is a coercion from `{ x : α // p x }` to `α`, so elements of a subtype may be used where the
    underlying type is expected.
    
    Examples:
     * `{ n : Nat // n % 2 = 0 }` is the type of even numbers.
     * `{ xs : Array String // xs.size = 5 }` is the type of arrays with five `String`s.
     * Given `xs : List α`, `List { x : α // x ∈ xs }` is the type of lists in which all elements are
       contained in `xs`.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `{ x // p x }` in identifiers is `subtype`. =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`.
        selfQ2Presentation.Induction.FourierBranchData p.partialNQ2Presentation.Induction.FourierBranchData.partialN {p : Q2Presentation.Induction.FramedPair}
      (self : Q2Presentation.Induction.FourierBranchData p) : Module.Dual (ZMod 2) self.W → List ℕ → ℕSource-independent partial-count recipe (`eq:recursionR2`–`eq:phasecovertransform`).  χModule.Dual (ZMod 2) self.W (List.mapList.map.{u_1, u_2} {α : Type u_1} {β : Type u_2} (f : α → β) (l : List α) : List βApplies a function to each element of the list, returning the resulting list of values.
    
    `O(|l|)`.
    
    Examples:
    * `[a, b, c].map f = [f a, f b, f c]`
    * `[].map Nat.succ = []`
    * `["one", "two", "three"].map (·.length) = [3, 3, 5]`
    * `["one", "two", "three"].map (·.reverse) = ["eno", "owt", "eerht"]`
     (⇑Cardinal.toNatCardinal.toNat.{u_1} : Cardinal.{u_1} →*₀ ℕThis function sends finite cardinals to the corresponding natural, and infinite cardinals
    to 0. ) (List.mapList.map.{u_1, u_2} {α : Type u_1} {β : Type u_2} (f : α → β) (l : List α) : List βApplies a function to each element of the list, returning the resulting list of values.
    
    `O(|l|)`.
    
    Examples:
    * `[a, b, c].map f = [f a, f b, f c]`
    * `[].map Nat.succ = []`
    * `["one", "two", "three"].map (·.length) = [3, 3, 5]`
    * `["one", "two", "three"].map (·.reverse) = ["eno", "owt", "eerht"]`
     Q2Presentation.Induction.framedCountQQ2Presentation.Induction.framedCountQ (p : Q2Presentation.Induction.FramedPair) : Cardinal.{0}The **local** boundary-framed surjection count `e_{G_{ℚ₂}}^β(𝒴)`
    (`eq:eGamma`), as a cardinal `|boundaryFramedSurj boundaryPackage_GQ2 𝒴 F|`.  selfQ2Presentation.Induction.FourierBranchData p.childrenQ2Presentation.Induction.FourierBranchData.children {p : Q2Presentation.Induction.FramedPair}
      (self : Q2Presentation.Induction.FourierBranchData p) : List Q2Presentation.Induction.FramedPairThe strictly-smaller exact-image children targets. ))
    Local partial-count realization `m_{G_{ℚ₂},χ} = partialN χ (children counts)`. 
  • theoremdefined in Q2Presentation/Induction/XRObstruction.lean
    complete
    theorem Q2Presentation.Induction.xr_ker_rowMap_card
      {pQ2Presentation.Induction.FramedPair : Q2Presentation.Induction.FramedPairQ2Presentation.Induction.FramedPair : Type 1A **framed pair** `(𝒴, F)`: a boundary-framed marked target together with a
    boundary frame for it (manuscript Definition 4.1 + `eq:beta`).  This is the index of
    Theorem 4.2: the boundary-framed surjection count `e_Γ^β` is a function of the pair.
    The induction of `sec:induction` ranges over *all* such pairs simultaneously
    ("the induction is stated globally", l.1213), ordered by `|L_Y|`. }
      (chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p : Q2Presentation.Induction.FirstNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor (p : Q2Presentation.Induction.FramedPair) : TypeA non-scalar chief factor of `L_Y` that is **first**: every chief factor strictly
    below it (i.e. with upper term contained in `lower`) is scalar.  This is the manuscript's
    choice `S ◁ P` at l.3616–3623 ("all chief factors below `S` are scalar and `V` is the
    first non-scalar simple factor"), which `lem:collapse` requires for the coprime step
    `[S, Ñ] = 1`.  pQ2Presentation.Induction.FramedPair)
      (KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor :
        Q2Presentation.Induction.KernelMinimalQ2Presentation.Induction.KernelMinimal {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.NonScalarChiefFactor p) : TypeThe manuscript's kernel choice (l.3623): `K ◁ Y`, `K ≤ P`, `KS = P`, and `K` is
    **⊆-minimal** with these properties — stated as: any `Y`-normal `K' ≤ K` still joining
    with `S` to `P` equals `K`.  (This, not leastness among all candidates, is what
    `lem:simplehead` and `lem:collapse` use: both apply it to subgroups of `K`.)  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p.toNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor.toNonScalarChiefFactor {p : Q2Presentation.Induction.FramedPair}
      (self : Q2Presentation.Induction.FirstNonScalarChiefFactor p) : Q2Presentation.Induction.NonScalarChiefFactor p)
      (gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GammaA
      (Q2Presentation.TorsorProgram.quotientFramedTarget p.fst (Q2Presentation.Induction.xrKernel chief K).N ⋯ ⋯)
      (Q2Presentation.TorsorProgram.quotientFrame p.fst (Q2Presentation.Induction.xrKernel chief K).N ⋯ ⋯ p.snd) :
        Q2Presentation.boundaryFramedSurjQ2Presentation.boundaryFramedSurj {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ)
      (Yt : Q2Presentation.BoundaryFramedTarget) (F : Q2Presentation.BoundaryFrame Yt) : TypeThe **boundary-framed surjections** `e_Γ^β(𝒴)` (manuscript `eq:eGamma`): the
    continuous surjections `f : Γ ↠ Y` whose induced map to `H × E` is the prescribed
    `β ∘ b_Γ`, i.e. `q_Y ∘ f = β ∘ b_Γ`.  This is the subtype counted in Theorem 4.2;
    its cardinality is `e_Γ^β(𝒴)`. 
          Q2Presentation.boundaryPackage_GammaAQ2Presentation.boundaryPackage_GammaA : Q2Presentation.BoundaryPackage Q2Presentation.GammaA**The candidate boundary package** (manuscript Prop 3.14, `prop:compatiblemarking`;
    plan Turn 4 §6).  The Stage-C data of `Γ_A`: the common tame quotient `gammaTameMap`,
    the maximal pro-`2` quotient `p : Γ_A ⟶ Π`, and the common unramified character
    `ν = gammaTameMap ≫ ν_t`, through which both factor. 
          (Q2Presentation.TorsorProgram.quotientFramedTargetQ2Presentation.TorsorProgram.quotientFramedTarget (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y)
      [hNn : N.Normal] (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) : Q2Presentation.BoundaryFramedTarget**The quotient framed target** `Y/N` (same `H`, same `E`, image wild kernel).  pQ2Presentation.Induction.FramedPair.fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.
    
            (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).NQ2Presentation.Lifting.ElementaryKernel.N {Yt : Q2Presentation.BoundaryFramedTarget}
      (self : Q2Presentation.Lifting.ElementaryKernel Yt) : Subgroup Yt.Y  )
          (Q2Presentation.TorsorProgram.quotientFrameQ2Presentation.TorsorProgram.quotientFrame (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y)
      [hNn : N.Normal] (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) (F : Q2Presentation.BoundaryFrame Yt) :
      Q2Presentation.BoundaryFrame (Q2Presentation.TorsorProgram.quotientFramedTarget Yt N hNLY hNθ)The frame transports verbatim (`H`, `E`, `α`, `ψ`, `β` unchanged).  pQ2Presentation.Induction.FramedPair.fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.
    
            (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).NQ2Presentation.Lifting.ElementaryKernel.N {Yt : Q2Presentation.BoundaryFramedTarget}
      (self : Q2Presentation.Lifting.ElementaryKernel Yt) : Subgroup Yt.Y   pQ2Presentation.Induction.FramedPair.sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.
    ))
      (hR1 < Nat.card ↥(Q2Presentation.Induction.kernelFrattini K) : 1 <LT.lt.{u} {α : Type u} [self : LT α] : α → α → PropThe less-than relation: `x < y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `<` in identifiers is `lt`. Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number.
    If `α` is infinite, `Nat.card α = 0`.  (Q2Presentation.Induction.kernelFrattiniQ2Presentation.Induction.kernelFrattini {p : Q2Presentation.Induction.FramedPair}
      {chief : Q2Presentation.Induction.NonScalarChiefFactor p} (K : Q2Presentation.Induction.KernelMinimal chief) :
      Subgroup p.fst.YThe literal Frattini subgroup `R = Φ(K)` of the kernel, as a subgroup of `Y`
    (the manuscript's `R`, l.3626).  KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)) :
      Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number.
    If `α` is infinite, `Nat.card α = 0`. 
          (Q2Presentation.Lifting.rowMapQ2Presentation.Lifting.rowMap {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) [Finite Yt.Y] (q : Q2Presentation.Marking Yt.Y) :
      (Q2Presentation.Gen → Q2Presentation.Lifting.NAdd E) →ₗ[ZMod 2]
        Q2Presentation.Lifting.NAdd E × Q2Presentation.Lifting.NAdd E**The row map**: both relator shadows, as one linear map. 
                (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
                (Q2Presentation.Lifting.baseMarkingQ2Presentation.Lifting.baseMarking {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) (F : Q2Presentation.BoundaryFrame Yt)
      (g :
        Q2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GammaA
          (Q2Presentation.TorsorProgram.quotientFramedTarget Yt E.N ⋯ ⋯)
          (Q2Presentation.TorsorProgram.quotientFrame Yt E.N ⋯ ⋯ F)) :
      Q2Presentation.Marking Yt.YA chosen base marking under `g`. 
                  (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) pQ2Presentation.Induction.FramedPair.sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.
    
                  gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GammaA
      (Q2Presentation.TorsorProgram.quotientFramedTarget p.fst (Q2Presentation.Induction.xrKernel chief K).N ⋯ ⋯)
      (Q2Presentation.TorsorProgram.quotientFrame p.fst (Q2Presentation.Induction.xrKernel chief K).N ⋯ ⋯ p.snd))).kerLinearMap.ker.{u_1, u_2, u_5, u_7} {R : Type u_1} {R₂ : Type u_2} {M : Type u_5} {M₂ : Type u_7} [Semiring R]
      [Semiring R₂] [AddCommMonoid M] [AddCommMonoid M₂] [Module R M] [Module R₂ M₂] {τ₁₂ : R →+* R₂} (f : M →ₛₗ[τ₁₂] M₂) :
      Submodule R MThe kernel of a linear map `f : M → M₂` is defined to be `comap f ⊥`. This is equivalent to the
    set of `x : M` such that `f x = 0`. The kernel is a submodule of `M`.  =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`.
        2 ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`.
            (HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.2 *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
              Module.finrankModule.finrank.{u_1, u_2} (R : Type u_1) (M : Type u_2) [Semiring R] [AddCommMonoid M] [Module R M] : ℕThe rank of a module as a natural number.
    
    For a finite-dimensional vector space `V` over a field `k`, `Module.finrank k V` is equal to
    the dimension of `V` over `k`.
    
    For a general module `M` over a ring `R`, `Module.finrank R M` is defined to be the supremum of the
    cardinalities of the `R`-linearly independent subsets of `M`, if this supremum is finite. It is
    defined by convention to be `0` if this supremum is infinite. See `Module.rank` for a
    cardinal-valued version where infinite rank modules have rank an infinite cardinal.
    
    Note that if `R` is not a field then there can exist modules `M` with `¬(Module.Finite R M)` but
    `finrank R M ≠ 0`. For example `ℚ` has `finrank` equal to `1` over `ℤ`, because the nonempty
    `ℤ`-linearly independent subsets of `ℚ` are precisely the nonzero singletons.  (ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2)
                (Q2Presentation.Lifting.NAddQ2Presentation.Lifting.NAdd {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) : TypeThe additive `F₂`-carrier of an elementary kernel. 
                  (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)))HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
          Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number.
    If `α` is infinite, `Nat.card α = 0`. 
            (Q2Presentation.Lifting.conjInvDualsQ2Presentation.Lifting.conjInvDuals {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) :
      Submodule (ZMod 2) (Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E))The conjugation-invariant duals `X = (R^∨)^Y = (R^∨)^C` of an
    elementary kernel (consumer spelling of the manuscript's `𝒳_R`,
    §7 l.3720–3723). 
                (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor))
    theorem Q2Presentation.Induction.xr_ker_rowMap_card
      {pQ2Presentation.Induction.FramedPair :
        Q2Presentation.Induction.FramedPairQ2Presentation.Induction.FramedPair : Type 1A **framed pair** `(𝒴, F)`: a boundary-framed marked target together with a
    boundary frame for it (manuscript Definition 4.1 + `eq:beta`).  This is the index of
    Theorem 4.2: the boundary-framed surjection count `e_Γ^β` is a function of the pair.
    The induction of `sec:induction` ranges over *all* such pairs simultaneously
    ("the induction is stated globally", l.1213), ordered by `|L_Y|`. }
      (chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p :
        Q2Presentation.Induction.FirstNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor (p : Q2Presentation.Induction.FramedPair) : TypeA non-scalar chief factor of `L_Y` that is **first**: every chief factor strictly
    below it (i.e. with upper term contained in `lower`) is scalar.  This is the manuscript's
    choice `S ◁ P` at l.3616–3623 ("all chief factors below `S` are scalar and `V` is the
    first non-scalar simple factor"), which `lem:collapse` requires for the coprime step
    `[S, Ñ] = 1`. 
          pQ2Presentation.Induction.FramedPair)
      (KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor :
        Q2Presentation.Induction.KernelMinimalQ2Presentation.Induction.KernelMinimal {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.NonScalarChiefFactor p) : TypeThe manuscript's kernel choice (l.3623): `K ◁ Y`, `K ≤ P`, `KS = P`, and `K` is
    **⊆-minimal** with these properties — stated as: any `Y`-normal `K' ≤ K` still joining
    with `S` to `P` equals `K`.  (This, not leastness among all candidates, is what
    `lem:simplehead` and `lem:collapse` use: both apply it to subgroups of `K`.) 
          chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p.toNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor.toNonScalarChiefFactor {p : Q2Presentation.Induction.FramedPair}
      (self : Q2Presentation.Induction.FirstNonScalarChiefFactor p) : Q2Presentation.Induction.NonScalarChiefFactor p)
      (gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GammaA
      (Q2Presentation.TorsorProgram.quotientFramedTarget p.fst (Q2Presentation.Induction.xrKernel chief K).N ⋯ ⋯)
      (Q2Presentation.TorsorProgram.quotientFrame p.fst (Q2Presentation.Induction.xrKernel chief K).N ⋯ ⋯ p.snd) :
        Q2Presentation.boundaryFramedSurjQ2Presentation.boundaryFramedSurj {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ)
      (Yt : Q2Presentation.BoundaryFramedTarget) (F : Q2Presentation.BoundaryFrame Yt) : TypeThe **boundary-framed surjections** `e_Γ^β(𝒴)` (manuscript `eq:eGamma`): the
    continuous surjections `f : Γ ↠ Y` whose induced map to `H × E` is the prescribed
    `β ∘ b_Γ`, i.e. `q_Y ∘ f = β ∘ b_Γ`.  This is the subtype counted in Theorem 4.2;
    its cardinality is `e_Γ^β(𝒴)`. 
          Q2Presentation.boundaryPackage_GammaAQ2Presentation.boundaryPackage_GammaA : Q2Presentation.BoundaryPackage Q2Presentation.GammaA**The candidate boundary package** (manuscript Prop 3.14, `prop:compatiblemarking`;
    plan Turn 4 §6).  The Stage-C data of `Γ_A`: the common tame quotient `gammaTameMap`,
    the maximal pro-`2` quotient `p : Γ_A ⟶ Π`, and the common unramified character
    `ν = gammaTameMap ≫ ν_t`, through which both factor. 
          (Q2Presentation.TorsorProgram.quotientFramedTargetQ2Presentation.TorsorProgram.quotientFramedTarget (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y)
      [hNn : N.Normal] (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) : Q2Presentation.BoundaryFramedTarget**The quotient framed target** `Y/N` (same `H`, same `E`, image wild kernel). 
            pQ2Presentation.Induction.FramedPair.fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.
    
            (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian. 
                chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).NQ2Presentation.Lifting.ElementaryKernel.N {Yt : Q2Presentation.BoundaryFramedTarget}
      (self : Q2Presentation.Lifting.ElementaryKernel Yt) : Subgroup Yt.Y
             )
          (Q2Presentation.TorsorProgram.quotientFrameQ2Presentation.TorsorProgram.quotientFrame (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y)
      [hNn : N.Normal] (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) (F : Q2Presentation.BoundaryFrame Yt) :
      Q2Presentation.BoundaryFrame (Q2Presentation.TorsorProgram.quotientFramedTarget Yt N hNLY hNθ)The frame transports verbatim (`H`, `E`, `α`, `ψ`, `β` unchanged). 
            pQ2Presentation.Induction.FramedPair.fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.
    
            (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian. 
                chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).NQ2Presentation.Lifting.ElementaryKernel.N {Yt : Q2Presentation.BoundaryFramedTarget}
      (self : Q2Presentation.Lifting.ElementaryKernel Yt) : Subgroup Yt.Y
              pQ2Presentation.Induction.FramedPair.sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.
    ))
      (hR1 < Nat.card ↥(Q2Presentation.Induction.kernelFrattini K) :
        1 <LT.lt.{u} {α : Type u} [self : LT α] : α → α → PropThe less-than relation: `x < y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `<` in identifiers is `lt`.
          Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number.
    If `α` is infinite, `Nat.card α = 0`. 
            (Q2Presentation.Induction.kernelFrattiniQ2Presentation.Induction.kernelFrattini {p : Q2Presentation.Induction.FramedPair}
      {chief : Q2Presentation.Induction.NonScalarChiefFactor p} (K : Q2Presentation.Induction.KernelMinimal chief) :
      Subgroup p.fst.YThe literal Frattini subgroup `R = Φ(K)` of the kernel, as a subgroup of `Y`
    (the manuscript's `R`, l.3626). 
                KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)) :
      Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number.
    If `α` is infinite, `Nat.card α = 0`. 
          (Q2Presentation.Lifting.rowMapQ2Presentation.Lifting.rowMap {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) [Finite Yt.Y] (q : Q2Presentation.Marking Yt.Y) :
      (Q2Presentation.Gen → Q2Presentation.Lifting.NAdd E) →ₗ[ZMod 2]
        Q2Presentation.Lifting.NAdd E × Q2Presentation.Lifting.NAdd E**The row map**: both relator shadows, as one linear map. 
                (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian. 
                  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
                (Q2Presentation.Lifting.baseMarkingQ2Presentation.Lifting.baseMarking {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) (F : Q2Presentation.BoundaryFrame Yt)
      (g :
        Q2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GammaA
          (Q2Presentation.TorsorProgram.quotientFramedTarget Yt E.N ⋯ ⋯)
          (Q2Presentation.TorsorProgram.quotientFrame Yt E.N ⋯ ⋯ F)) :
      Q2Presentation.Marking Yt.YA chosen base marking under `g`. 
                  (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian. 
                    chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
                  pQ2Presentation.Induction.FramedPair.sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.
     gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GammaA
      (Q2Presentation.TorsorProgram.quotientFramedTarget p.fst (Q2Presentation.Induction.xrKernel chief K).N ⋯ ⋯)
      (Q2Presentation.TorsorProgram.quotientFrame p.fst (Q2Presentation.Induction.xrKernel chief K).N ⋯ ⋯ p.snd))).kerLinearMap.ker.{u_1, u_2, u_5, u_7} {R : Type u_1} {R₂ : Type u_2} {M : Type u_5} {M₂ : Type u_7} [Semiring R]
      [Semiring R₂] [AddCommMonoid M] [AddCommMonoid M₂] [Module R M] [Module R₂ M₂] {τ₁₂ : R →+* R₂} (f : M →ₛₗ[τ₁₂] M₂) :
      Submodule R MThe kernel of a linear map `f : M → M₂` is defined to be `comap f ⊥`. This is equivalent to the
    set of `x : M` such that `f x = 0`. The kernel is a submodule of `M`.  =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`.
        2 ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`.
            (HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.2 *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
              Module.finrankModule.finrank.{u_1, u_2} (R : Type u_1) (M : Type u_2) [Semiring R] [AddCommMonoid M] [Module R M] : ℕThe rank of a module as a natural number.
    
    For a finite-dimensional vector space `V` over a field `k`, `Module.finrank k V` is equal to
    the dimension of `V` over `k`.
    
    For a general module `M` over a ring `R`, `Module.finrank R M` is defined to be the supremum of the
    cardinalities of the `R`-linearly independent subsets of `M`, if this supremum is finite. It is
    defined by convention to be `0` if this supremum is infinite. See `Module.rank` for a
    cardinal-valued version where infinite rank modules have rank an infinite cardinal.
    
    Note that if `R` is not a field then there can exist modules `M` with `¬(Module.Finite R M)` but
    `finrank R M ≠ 0`. For example `ℚ` has `finrank` equal to `1` over `ℤ`, because the nonempty
    `ℤ`-linearly independent subsets of `ℚ` are precisely the nonzero singletons.  (ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2)
                (Q2Presentation.Lifting.NAddQ2Presentation.Lifting.NAdd {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) : TypeThe additive `F₂`-carrier of an elementary kernel. 
                  (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian. 
                    chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)))HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
          Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number.
    If `α` is infinite, `Nat.card α = 0`. 
            (Q2Presentation.Lifting.conjInvDualsQ2Presentation.Lifting.conjInvDuals {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) :
      Submodule (ZMod 2) (Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E))The conjugation-invariant duals `X = (R^∨)^Y = (R^∨)^C` of an
    elementary kernel (consumer spelling of the manuscript's `𝒳_R`,
    §7 l.3720–3723). 
                (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian. 
                  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor))
    **The kernel count** `|ker (rowMap)| = 2^{2·dim R}·|𝒳_R|`
    (`prop:finalfourier` l.4243–4245): rank–nullity against the sum-line
    size of the row image and the coannihilator dimension count. 

Lemma 8.12 of the paper (Proper-image subtraction for a scalar pushout).

Fix 0\ne\lambda\in\mathcal X_R. Let Z_{\Gamma,\lambda}(B/C) count all compatible lifts of exact-image maps to C, without imposing generation in B. Then

\boxed{ m_{\Gamma,\lambda}(B)=Z_{\Gamma,\lambda}(B/C) -\sum_{\substack{J<B\\J\twoheadrightarrow C}} m_{\Gamma,\lambda}(J).}

For every proper J in the sum,

\boxed{ 8m_{\Gamma,\lambda}(J)= \sum_{\substack{\widetilde J\le p_\lambda^{-1}(J)\\ p_\lambda(\widetilde J)=J}} e_\Gamma(\widetilde J).}

Lean code for Lemma8.121 definition
  • defdefined in Q2Presentation/Induction/RadicalEdgeCount.lean
    complete
    def Q2Presentation.Induction.coverLiftableWeak
      {pQ2Presentation.Induction.FramedPair : Q2Presentation.Induction.FramedPairQ2Presentation.Induction.FramedPair : Type 1A **framed pair** `(𝒴, F)`: a boundary-framed marked target together with a
    boundary frame for it (manuscript Definition 4.1 + `eq:beta`).  This is the index of
    Theorem 4.2: the boundary-framed surjection count `e_Γ^β` is a function of the pair.
    The induction of `sec:induction` ranges over *all* such pairs simultaneously
    ("the induction is stated globally", l.1213), ordered by `|L_Y|`. }
      (chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p : Q2Presentation.Induction.FirstNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor (p : Q2Presentation.Induction.FramedPair) : TypeA non-scalar chief factor of `L_Y` that is **first**: every chief factor strictly
    below it (i.e. with upper term contained in `lower`) is scalar.  This is the manuscript's
    choice `S ◁ P` at l.3616–3623 ("all chief factors below `S` are scalar and `V` is the
    first non-scalar simple factor"), which `lem:collapse` requires for the coprime step
    `[S, Ñ] = 1`.  pQ2Presentation.Induction.FramedPair)
      (KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor :
        Q2Presentation.Induction.KernelMinimalQ2Presentation.Induction.KernelMinimal {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.NonScalarChiefFactor p) : TypeThe manuscript's kernel choice (l.3623): `K ◁ Y`, `K ≤ P`, `KS = P`, and `K` is
    **⊆-minimal** with these properties — stated as: any `Y`-normal `K' ≤ K` still joining
    with `S` to `P` equals `K`.  (This, not leastness among all candidates, is what
    `lem:simplehead` and `lem:collapse` use: both apply it to subgroups of `K`.)  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p.toNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor.toNonScalarChiefFactor {p : Q2Presentation.Induction.FramedPair}
      (self : Q2Presentation.Induction.FirstNonScalarChiefFactor p) : Q2Presentation.Induction.NonScalarChiefFactor p)
      (lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) :
        Module.DualModule.Dual.{u_4, u_5} (R : Type u_4) (M : Type u_5) [Semiring R] [AddCommMonoid M] [Module R M] : Type (max u_5 u_4)The left dual space of an R-module M is the R-module of linear maps `M → R`.  (ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2)
          (Q2Presentation.Lifting.NAddQ2Presentation.Lifting.NAdd {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) : TypeThe additive `F₂`-carrier of an elementary kernel. 
            (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)))
      (hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K) :
        lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`.
          Q2Presentation.Lifting.conjInvDualsQ2Presentation.Lifting.conjInvDuals {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) :
      Submodule (ZMod 2) (Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E))The conjugation-invariant duals `X = (R^∨)^Y = (R^∨)^C` of an
    elementary kernel (consumer spelling of the manuscript's `𝒳_R`,
    §7 l.3720–3723). 
            (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor))
      {ΓProfiniteGrp.{0} : ProfiniteGrp.{0}ProfiniteGrp.{u_1} : Type (u_1 + 1)The category of profinite groups. A term of this type consists of a profinite
    set with a topological group structure.
    } (BQ2Presentation.BoundaryPackage Γ : Q2Presentation.BoundaryPackageQ2Presentation.BoundaryPackage (Γ : ProfiniteGrp.{0}) : TypeA **boundary package** on a profinite group `Γ`: the uniform Stage-C data of a tame
    quotient, a maximal pro-`2` quotient, and a common unramified character `ℤ₂` through which
    both factor (manuscript Prop 3.14, `prop:compatiblemarking`; plan Turn 4 §6).  The
    compatibility `tameMap ≫ ν_t = ν = pro2Map ≫ ν_2` records that the two markings agree on
    the full unramified coordinate, not merely modulo `2`.  ΓProfiniteGrp.{0})
      (fQ2Presentation.TorsorProgram.coverLiftTotal (Q2Presentation.Induction.XRZero.xrChild chief K).fst
      (Q2Presentation.Induction.mChildKernel chief K).N B (Q2Presentation.Induction.XRZero.xrChild chief K).snd :
        Q2Presentation.TorsorProgram.coverLiftTotalQ2Presentation.TorsorProgram.coverLiftTotal (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y)
      [hNn : N.Normal] {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (F : Q2Presentation.BoundaryFrame Yt) :
      Type**The cover-lift total space**: framed continuous homs into the AMBIENT
    target whose projection to the child is onto (`lem:covertransform`: all lifts
    of all unobstructed exact-image maps at once; surjectivity onto the ambient
    target NOT imposed — these are the weak lifts). 
          (Q2Presentation.Induction.XRZero.xrChildQ2Presentation.Induction.XRZero.xrChild {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPairThe `𝒳_R = 0` child: the quotient framed pair at `N = Φ`-layer.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.
    
          (Q2Presentation.Induction.mChildKernelQ2Presentation.Induction.mChildKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel (Q2Presentation.Induction.XRZero.xrChild chief K).fst**The elementary `M`-kernel at the child** `B = Y/Φ(K)`
    (`lem:simplehead` carrier for `lem:elementarystage`): `N = M' = K/Φ(K)`.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).NQ2Presentation.Lifting.ElementaryKernel.N {Yt : Q2Presentation.BoundaryFramedTarget}
      (self : Q2Presentation.Lifting.ElementaryKernel Yt) : Subgroup Yt.Y BQ2Presentation.BoundaryPackage Γ
          (Q2Presentation.Induction.XRZero.xrChildQ2Presentation.Induction.XRZero.xrChild {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPairThe `𝒳_R = 0` child: the quotient framed pair at `N = Φ`-layer.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.
    ) :
      PropThe universe of propositions. `Prop ≡ Sort 0`.
    
    Every proposition is propositionally equal to either `True` or `False`. 
    def Q2Presentation.Induction.coverLiftableWeak
      {pQ2Presentation.Induction.FramedPair :
        Q2Presentation.Induction.FramedPairQ2Presentation.Induction.FramedPair : Type 1A **framed pair** `(𝒴, F)`: a boundary-framed marked target together with a
    boundary frame for it (manuscript Definition 4.1 + `eq:beta`).  This is the index of
    Theorem 4.2: the boundary-framed surjection count `e_Γ^β` is a function of the pair.
    The induction of `sec:induction` ranges over *all* such pairs simultaneously
    ("the induction is stated globally", l.1213), ordered by `|L_Y|`. }
      (chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p :
        Q2Presentation.Induction.FirstNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor (p : Q2Presentation.Induction.FramedPair) : TypeA non-scalar chief factor of `L_Y` that is **first**: every chief factor strictly
    below it (i.e. with upper term contained in `lower`) is scalar.  This is the manuscript's
    choice `S ◁ P` at l.3616–3623 ("all chief factors below `S` are scalar and `V` is the
    first non-scalar simple factor"), which `lem:collapse` requires for the coprime step
    `[S, Ñ] = 1`. 
          pQ2Presentation.Induction.FramedPair)
      (KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor :
        Q2Presentation.Induction.KernelMinimalQ2Presentation.Induction.KernelMinimal {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.NonScalarChiefFactor p) : TypeThe manuscript's kernel choice (l.3623): `K ◁ Y`, `K ≤ P`, `KS = P`, and `K` is
    **⊆-minimal** with these properties — stated as: any `Y`-normal `K' ≤ K` still joining
    with `S` to `P` equals `K`.  (This, not leastness among all candidates, is what
    `lem:simplehead` and `lem:collapse` use: both apply it to subgroups of `K`.) 
          chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p.toNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor.toNonScalarChiefFactor {p : Q2Presentation.Induction.FramedPair}
      (self : Q2Presentation.Induction.FirstNonScalarChiefFactor p) : Q2Presentation.Induction.NonScalarChiefFactor p)
      (lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) :
        Module.DualModule.Dual.{u_4, u_5} (R : Type u_4) (M : Type u_5) [Semiring R] [AddCommMonoid M] [Module R M] : Type (max u_5 u_4)The left dual space of an R-module M is the R-module of linear maps `M → R`.  (ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2)
          (Q2Presentation.Lifting.NAddQ2Presentation.Lifting.NAdd {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) : TypeThe additive `F₂`-carrier of an elementary kernel. 
            (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian. 
              chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)))
      (hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K) :
        lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`.
          Q2Presentation.Lifting.conjInvDualsQ2Presentation.Lifting.conjInvDuals {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) :
      Submodule (ZMod 2) (Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E))The conjugation-invariant duals `X = (R^∨)^Y = (R^∨)^C` of an
    elementary kernel (consumer spelling of the manuscript's `𝒳_R`,
    §7 l.3720–3723). 
            (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian. 
              chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor))
      {ΓProfiniteGrp.{0} : ProfiniteGrp.{0}ProfiniteGrp.{u_1} : Type (u_1 + 1)The category of profinite groups. A term of this type consists of a profinite
    set with a topological group structure.
    }
      (BQ2Presentation.BoundaryPackage Γ : Q2Presentation.BoundaryPackageQ2Presentation.BoundaryPackage (Γ : ProfiniteGrp.{0}) : TypeA **boundary package** on a profinite group `Γ`: the uniform Stage-C data of a tame
    quotient, a maximal pro-`2` quotient, and a common unramified character `ℤ₂` through which
    both factor (manuscript Prop 3.14, `prop:compatiblemarking`; plan Turn 4 §6).  The
    compatibility `tameMap ≫ ν_t = ν = pro2Map ≫ ν_2` records that the two markings agree on
    the full unramified coordinate, not merely modulo `2`.  ΓProfiniteGrp.{0})
      (fQ2Presentation.TorsorProgram.coverLiftTotal (Q2Presentation.Induction.XRZero.xrChild chief K).fst
      (Q2Presentation.Induction.mChildKernel chief K).N B (Q2Presentation.Induction.XRZero.xrChild chief K).snd :
        Q2Presentation.TorsorProgram.coverLiftTotalQ2Presentation.TorsorProgram.coverLiftTotal (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y)
      [hNn : N.Normal] {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (F : Q2Presentation.BoundaryFrame Yt) :
      Type**The cover-lift total space**: framed continuous homs into the AMBIENT
    target whose projection to the child is onto (`lem:covertransform`: all lifts
    of all unobstructed exact-image maps at once; surjectivity onto the ambient
    target NOT imposed — these are the weak lifts). 
          (Q2Presentation.Induction.XRZero.xrChildQ2Presentation.Induction.XRZero.xrChild {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPairThe `𝒳_R = 0` child: the quotient framed pair at `N = Φ`-layer. 
              chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.
    
          (Q2Presentation.Induction.mChildKernelQ2Presentation.Induction.mChildKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel (Q2Presentation.Induction.XRZero.xrChild chief K).fst**The elementary `M`-kernel at the child** `B = Y/Φ(K)`
    (`lem:simplehead` carrier for `lem:elementarystage`): `N = M' = K/Φ(K)`. 
              chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).NQ2Presentation.Lifting.ElementaryKernel.N {Yt : Q2Presentation.BoundaryFramedTarget}
      (self : Q2Presentation.Lifting.ElementaryKernel Yt) : Subgroup Yt.Y
          BQ2Presentation.BoundaryPackage Γ
          (Q2Presentation.Induction.XRZero.xrChildQ2Presentation.Induction.XRZero.xrChild {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPairThe `𝒳_R = 0` child: the quotient framed pair at `N = Φ`-layer. 
              chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.
    ) :
      PropThe universe of propositions. `Prop ≡ Sort 0`.
    
    Every proposition is propositionally equal to either `True` or `False`. 
    **λ-liftability of a weak `M`-lift** (`lem:properimagesubtraction`
    l.4269–4271): a point of the W2a total space at the child M-kernel is
    λ-liftable when some framed hom into `B_λ` projects to it along
    `p_λ = scalarCoverProj` — surjectivity onto `B_λ` NOT imposed (weak
    solvability; images are stratified by `eq:recursionR2`/`R3`). 
Proof

Proved in §8 of the paper. Ingredients: Lemma 8.3.

Proposition 8.13 of the paper (The nonzero radical-edge case).

If the radical edge of p_\lambda is nonzero, then

\boxed{ Z_{\Gamma,\lambda}(B/C) =2^{2\dim M-1}e_\Gamma(C).}

Lean code for Theorem8.132 theorems
  • theoremdefined in Q2Presentation/Induction/RadicalEdgeHalving.lean
    complete
    theorem Q2Presentation.Induction.sec7_nonzeroEdge_count_gammaA
      {pQ2Presentation.Induction.FramedPair : Q2Presentation.Induction.FramedPairQ2Presentation.Induction.FramedPair : Type 1A **framed pair** `(𝒴, F)`: a boundary-framed marked target together with a
    boundary frame for it (manuscript Definition 4.1 + `eq:beta`).  This is the index of
    Theorem 4.2: the boundary-framed surjection count `e_Γ^β` is a function of the pair.
    The induction of `sec:induction` ranges over *all* such pairs simultaneously
    ("the induction is stated globally", l.1213), ordered by `|L_Y|`. }
      (chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p : Q2Presentation.Induction.FirstNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor (p : Q2Presentation.Induction.FramedPair) : TypeA non-scalar chief factor of `L_Y` that is **first**: every chief factor strictly
    below it (i.e. with upper term contained in `lower`) is scalar.  This is the manuscript's
    choice `S ◁ P` at l.3616–3623 ("all chief factors below `S` are scalar and `V` is the
    first non-scalar simple factor"), which `lem:collapse` requires for the coprime step
    `[S, Ñ] = 1`.  pQ2Presentation.Induction.FramedPair)
      (KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor :
        Q2Presentation.Induction.KernelMinimalQ2Presentation.Induction.KernelMinimal {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.NonScalarChiefFactor p) : TypeThe manuscript's kernel choice (l.3623): `K ◁ Y`, `K ≤ P`, `KS = P`, and `K` is
    **⊆-minimal** with these properties — stated as: any `Y`-normal `K' ≤ K` still joining
    with `S` to `P` equals `K`.  (This, not leastness among all candidates, is what
    `lem:simplehead` and `lem:collapse` use: both apply it to subgroups of `K`.)  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p.toNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor.toNonScalarChiefFactor {p : Q2Presentation.Induction.FramedPair}
      (self : Q2Presentation.Induction.FirstNonScalarChiefFactor p) : Q2Presentation.Induction.NonScalarChiefFactor p)
      (lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) :
        Module.DualModule.Dual.{u_4, u_5} (R : Type u_4) (M : Type u_5) [Semiring R] [AddCommMonoid M] [Module R M] : Type (max u_5 u_4)The left dual space of an R-module M is the R-module of linear maps `M → R`.  (ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2)
          (Q2Presentation.Lifting.NAddQ2Presentation.Lifting.NAdd {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) : TypeThe additive `F₂`-carrier of an elementary kernel. 
            (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)))
      (hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K) :
        lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`.
          Q2Presentation.Lifting.conjInvDualsQ2Presentation.Lifting.conjInvDuals {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) :
      Submodule (ZMod 2) (Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E))The conjugation-invariant duals `X = (R^∨)^Y = (R^∨)^C` of an
    elementary kernel (consumer spelling of the manuscript's `𝒳_R`,
    §7 l.3720–3723). 
            (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor))
      (_hnelam ≠ 0 : lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) Ne.{u} {α : Sort u} (a b : α) : Prop`a ≠ b`, or `Ne a b` is defined as `¬ (a = b)` or `a = b → False`,
    and asserts that `a` and `b` are not equal.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≠` in identifiers is `ne`. 0)
      (_hedge¬Q2Presentation.Induction.ZeroEdge chief K lam hinv : ¬Not (a : Prop) : Prop`Not p`, or `¬p`, is the negation of `p`. It is defined to be `p → False`,
    so if your goal is `¬p` you can use `intro h` to turn the goal into
    `h : p ⊢ False`, and if you have `hn : ¬p` and `h : p` then `hn h : False`
    and `(hn h).elim` will prove anything.
    For more information: [Propositional Logic](https://lean-lang.org/theorem_proving_in_lean4/propositions_and_proofs.html#propositional-logic)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `¬` in identifiers is `not`.Q2Presentation.Induction.ZeroEdgeQ2Presentation.Induction.ZeroEdge {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) : Prop**The zero-edge predicate** (`lem:radicaledge`'s `[ε̄] = 0` branch,
    cocycle-free): some edge complement is normal in the whole cover.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K))
      (hhalfQ2Presentation.Induction.EdgeHalvingGammaA chief K lam hinv :
        Q2Presentation.Induction.EdgeHalvingGammaAQ2Presentation.Induction.EdgeHalvingGammaA {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) : Prop**The R4a per-fibre halving, candidate source** — THE sharply-scoped
    R4a residual (manuscript `lem:radicaledge` step 6, l.4006–4019: exact
    variation formula + perfect degree-one duality; candidate half =
    `prop:chainmap` l.1687 + `prop:defduality`-grade degree-one content):
    over each `g_C`, exactly half of the weak `M`-lifts are λ-liftable,
    stated division-free per fibre.  Deliberately does NOT assert the fibre
    size `2^{2·dim M}` (that is the separate, PROVEN `lem:elementarystage`
    obligation — design §6.3), and is deliberately NOT conditioned here on
    `¬ ZeroEdge` — the conditioning belongs to its (future, coordinated)
    keep `sec7_edgeHalving_gammaA (hne) (hedge) : EdgeHalvingGammaA …`,
    whose dissolution program is recorded in the design §4.6: (i) the ledger
    variation formula from U3's `edgeDefect` calculus + the weak-base defect
    engine; (ii) `edgeShadow ≠ 0` on the `T`-cocycle space by the
    trivial-chain dévissage over the PROVEN `Sec7TrivialChainData`;
    (iii) the free-orbit torsor bookkeeping.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) :
      2 *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
          Q2Presentation.Induction.ZcountQ2Presentation.Induction.Zcount {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) {Γ : ProfiniteGrp.{0}}
      (B : Q2Presentation.BoundaryPackage Γ) : ℕ**The unrestricted top count `Z_{Γ,λ}(B/C)`**: framed maps to `B`
    whose composite to `C` is onto ("without imposing generation in `B`",
    l.4270) and which weakly lift through `p_λ`.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)
            Q2Presentation.boundaryPackage_GammaAQ2Presentation.boundaryPackage_GammaA : Q2Presentation.BoundaryPackage Q2Presentation.GammaA**The candidate boundary package** (manuscript Prop 3.14, `prop:compatiblemarking`;
    plan Turn 4 §6).  The Stage-C data of `Γ_A`: the common tame quotient `gammaTameMap`,
    the maximal pro-`2` quotient `p : Γ_A ⟶ Π`, and the common unramified character
    `ν = gammaTameMap ≫ ν_t`, through which both factor.  =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`.
        2 ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. (HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.2 *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. Q2Presentation.Induction.dimMQ2Presentation.Induction.dimM {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : ℕ`dim M` (the `2^{2·dimM}` of `lem:elementarystage`).  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
          Q2Presentation.Induction.eCQ2Presentation.Induction.eC {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) {Γ : ProfiniteGrp.{0}}
      (B : Q2Presentation.BoundaryPackage Γ) : ℕ**The C-child count** (the `e_Γ(C')` of R4a/R4b): boundary-framed
    surjections onto the C-child pair (P3-U2's `cChild`).  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor
            Q2Presentation.boundaryPackage_GammaAQ2Presentation.boundaryPackage_GammaA : Q2Presentation.BoundaryPackage Q2Presentation.GammaA**The candidate boundary package** (manuscript Prop 3.14, `prop:compatiblemarking`;
    plan Turn 4 §6).  The Stage-C data of `Γ_A`: the common tame quotient `gammaTameMap`,
    the maximal pro-`2` quotient `p : Γ_A ⟶ Π`, and the common unramified character
    `ν = gammaTameMap ≫ ν_t`, through which both factor. 
    theorem Q2Presentation.Induction.sec7_nonzeroEdge_count_gammaA
      {pQ2Presentation.Induction.FramedPair :
        Q2Presentation.Induction.FramedPairQ2Presentation.Induction.FramedPair : Type 1A **framed pair** `(𝒴, F)`: a boundary-framed marked target together with a
    boundary frame for it (manuscript Definition 4.1 + `eq:beta`).  This is the index of
    Theorem 4.2: the boundary-framed surjection count `e_Γ^β` is a function of the pair.
    The induction of `sec:induction` ranges over *all* such pairs simultaneously
    ("the induction is stated globally", l.1213), ordered by `|L_Y|`. }
      (chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p :
        Q2Presentation.Induction.FirstNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor (p : Q2Presentation.Induction.FramedPair) : TypeA non-scalar chief factor of `L_Y` that is **first**: every chief factor strictly
    below it (i.e. with upper term contained in `lower`) is scalar.  This is the manuscript's
    choice `S ◁ P` at l.3616–3623 ("all chief factors below `S` are scalar and `V` is the
    first non-scalar simple factor"), which `lem:collapse` requires for the coprime step
    `[S, Ñ] = 1`. 
          pQ2Presentation.Induction.FramedPair)
      (KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor :
        Q2Presentation.Induction.KernelMinimalQ2Presentation.Induction.KernelMinimal {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.NonScalarChiefFactor p) : TypeThe manuscript's kernel choice (l.3623): `K ◁ Y`, `K ≤ P`, `KS = P`, and `K` is
    **⊆-minimal** with these properties — stated as: any `Y`-normal `K' ≤ K` still joining
    with `S` to `P` equals `K`.  (This, not leastness among all candidates, is what
    `lem:simplehead` and `lem:collapse` use: both apply it to subgroups of `K`.) 
          chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p.toNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor.toNonScalarChiefFactor {p : Q2Presentation.Induction.FramedPair}
      (self : Q2Presentation.Induction.FirstNonScalarChiefFactor p) : Q2Presentation.Induction.NonScalarChiefFactor p)
      (lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) :
        Module.DualModule.Dual.{u_4, u_5} (R : Type u_4) (M : Type u_5) [Semiring R] [AddCommMonoid M] [Module R M] : Type (max u_5 u_4)The left dual space of an R-module M is the R-module of linear maps `M → R`.  (ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2)
          (Q2Presentation.Lifting.NAddQ2Presentation.Lifting.NAdd {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) : TypeThe additive `F₂`-carrier of an elementary kernel. 
            (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian. 
              chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)))
      (hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K) :
        lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`.
          Q2Presentation.Lifting.conjInvDualsQ2Presentation.Lifting.conjInvDuals {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) :
      Submodule (ZMod 2) (Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E))The conjugation-invariant duals `X = (R^∨)^Y = (R^∨)^C` of an
    elementary kernel (consumer spelling of the manuscript's `𝒳_R`,
    §7 l.3720–3723). 
            (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian. 
              chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor))
      (_hnelam ≠ 0 : lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) Ne.{u} {α : Sort u} (a b : α) : Prop`a ≠ b`, or `Ne a b` is defined as `¬ (a = b)` or `a = b → False`,
    and asserts that `a` and `b` are not equal.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≠` in identifiers is `ne`. 0)
      (_hedge¬Q2Presentation.Induction.ZeroEdge chief K lam hinv :
        ¬Not (a : Prop) : Prop`Not p`, or `¬p`, is the negation of `p`. It is defined to be `p → False`,
    so if your goal is `¬p` you can use `intro h` to turn the goal into
    `h : p ⊢ False`, and if you have `hn : ¬p` and `h : p` then `hn h : False`
    and `(hn h).elim` will prove anything.
    For more information: [Propositional Logic](https://lean-lang.org/theorem_proving_in_lean4/propositions_and_proofs.html#propositional-logic)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `¬` in identifiers is `not`.Q2Presentation.Induction.ZeroEdgeQ2Presentation.Induction.ZeroEdge {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) : Prop**The zero-edge predicate** (`lem:radicaledge`'s `[ε̄] = 0` branch,
    cocycle-free): some edge complement is normal in the whole cover. 
            chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K))
      (hhalfQ2Presentation.Induction.EdgeHalvingGammaA chief K lam hinv :
        Q2Presentation.Induction.EdgeHalvingGammaAQ2Presentation.Induction.EdgeHalvingGammaA {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) : Prop**The R4a per-fibre halving, candidate source** — THE sharply-scoped
    R4a residual (manuscript `lem:radicaledge` step 6, l.4006–4019: exact
    variation formula + perfect degree-one duality; candidate half =
    `prop:chainmap` l.1687 + `prop:defduality`-grade degree-one content):
    over each `g_C`, exactly half of the weak `M`-lifts are λ-liftable,
    stated division-free per fibre.  Deliberately does NOT assert the fibre
    size `2^{2·dim M}` (that is the separate, PROVEN `lem:elementarystage`
    obligation — design §6.3), and is deliberately NOT conditioned here on
    `¬ ZeroEdge` — the conditioning belongs to its (future, coordinated)
    keep `sec7_edgeHalving_gammaA (hne) (hedge) : EdgeHalvingGammaA …`,
    whose dissolution program is recorded in the design §4.6: (i) the ledger
    variation formula from U3's `edgeDefect` calculus + the weak-base defect
    engine; (ii) `edgeShadow ≠ 0` on the `T`-cocycle space by the
    trivial-chain dévissage over the PROVEN `Sec7TrivialChainData`;
    (iii) the free-orbit torsor bookkeeping. 
          chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) :
      2 *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
          Q2Presentation.Induction.ZcountQ2Presentation.Induction.Zcount {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) {Γ : ProfiniteGrp.{0}}
      (B : Q2Presentation.BoundaryPackage Γ) : ℕ**The unrestricted top count `Z_{Γ,λ}(B/C)`**: framed maps to `B`
    whose composite to `C` is onto ("without imposing generation in `B`",
    l.4270) and which weakly lift through `p_λ`. 
            chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)
            Q2Presentation.boundaryPackage_GammaAQ2Presentation.boundaryPackage_GammaA : Q2Presentation.BoundaryPackage Q2Presentation.GammaA**The candidate boundary package** (manuscript Prop 3.14, `prop:compatiblemarking`;
    plan Turn 4 §6).  The Stage-C data of `Γ_A`: the common tame quotient `gammaTameMap`,
    the maximal pro-`2` quotient `p : Γ_A ⟶ Π`, and the common unramified character
    `ν = gammaTameMap ≫ ν_t`, through which both factor.  =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`.
        2 ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`.
            (HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.2 *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
              Q2Presentation.Induction.dimMQ2Presentation.Induction.dimM {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : ℕ`dim M` (the `2^{2·dimM}` of `lem:elementarystage`). 
                chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
          Q2Presentation.Induction.eCQ2Presentation.Induction.eC {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) {Γ : ProfiniteGrp.{0}}
      (B : Q2Presentation.BoundaryPackage Γ) : ℕ**The C-child count** (the `e_Γ(C')` of R4a/R4b): boundary-framed
    surjections onto the C-child pair (P3-U2's `cChild`).  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor
            Q2Presentation.boundaryPackage_GammaAQ2Presentation.boundaryPackage_GammaA : Q2Presentation.BoundaryPackage Q2Presentation.GammaA**The candidate boundary package** (manuscript Prop 3.14, `prop:compatiblemarking`;
    plan Turn 4 §6).  The Stage-C data of `Γ_A`: the common tame quotient `gammaTameMap`,
    the maximal pro-`2` quotient `p : Γ_A ⟶ Π`, and the common unramified character
    `ν = gammaTameMap ≫ ν_t`, through which both factor. 
    **R4a, candidate source** (`prop:nonzeroedge`, `eq:recursionR4a`
    l.4299–4303, division-free): on the nonzero-edge branch,
    `2·Z_{Γ_A,λ}(B/C) = 2^{2·dim M}·e_{Γ_A}(C')`.  The branch hypotheses
    `_hne`/`_hedge` pin the R4a case (design §4.6's exit signature; they are
    consumed by P8's `Classical.byCases` split and by the keeps discharging
    `hhalf`, not by this counting proof).  The halving clause enters as an
    explicit HYPOTHESIS (`EdgeHalvingGammaA`); the fibre size is the PROVEN
    candidate `lem:elementarystage` count (P3-U6). 
  • theoremdefined in Q2Presentation/Induction/RadicalEdgeHalving.lean
    complete
    theorem Q2Presentation.Induction.sec7_nonzeroEdge_count_gq2
      {pQ2Presentation.Induction.FramedPair : Q2Presentation.Induction.FramedPairQ2Presentation.Induction.FramedPair : Type 1A **framed pair** `(𝒴, F)`: a boundary-framed marked target together with a
    boundary frame for it (manuscript Definition 4.1 + `eq:beta`).  This is the index of
    Theorem 4.2: the boundary-framed surjection count `e_Γ^β` is a function of the pair.
    The induction of `sec:induction` ranges over *all* such pairs simultaneously
    ("the induction is stated globally", l.1213), ordered by `|L_Y|`. }
      (chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p : Q2Presentation.Induction.FirstNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor (p : Q2Presentation.Induction.FramedPair) : TypeA non-scalar chief factor of `L_Y` that is **first**: every chief factor strictly
    below it (i.e. with upper term contained in `lower`) is scalar.  This is the manuscript's
    choice `S ◁ P` at l.3616–3623 ("all chief factors below `S` are scalar and `V` is the
    first non-scalar simple factor"), which `lem:collapse` requires for the coprime step
    `[S, Ñ] = 1`.  pQ2Presentation.Induction.FramedPair)
      (KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor :
        Q2Presentation.Induction.KernelMinimalQ2Presentation.Induction.KernelMinimal {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.NonScalarChiefFactor p) : TypeThe manuscript's kernel choice (l.3623): `K ◁ Y`, `K ≤ P`, `KS = P`, and `K` is
    **⊆-minimal** with these properties — stated as: any `Y`-normal `K' ≤ K` still joining
    with `S` to `P` equals `K`.  (This, not leastness among all candidates, is what
    `lem:simplehead` and `lem:collapse` use: both apply it to subgroups of `K`.)  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p.toNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor.toNonScalarChiefFactor {p : Q2Presentation.Induction.FramedPair}
      (self : Q2Presentation.Induction.FirstNonScalarChiefFactor p) : Q2Presentation.Induction.NonScalarChiefFactor p)
      (lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) :
        Module.DualModule.Dual.{u_4, u_5} (R : Type u_4) (M : Type u_5) [Semiring R] [AddCommMonoid M] [Module R M] : Type (max u_5 u_4)The left dual space of an R-module M is the R-module of linear maps `M → R`.  (ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2)
          (Q2Presentation.Lifting.NAddQ2Presentation.Lifting.NAdd {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) : TypeThe additive `F₂`-carrier of an elementary kernel. 
            (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)))
      (hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K) :
        lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`.
          Q2Presentation.Lifting.conjInvDualsQ2Presentation.Lifting.conjInvDuals {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) :
      Submodule (ZMod 2) (Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E))The conjugation-invariant duals `X = (R^∨)^Y = (R^∨)^C` of an
    elementary kernel (consumer spelling of the manuscript's `𝒳_R`,
    §7 l.3720–3723). 
            (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor))
      (_hnelam ≠ 0 : lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) Ne.{u} {α : Sort u} (a b : α) : Prop`a ≠ b`, or `Ne a b` is defined as `¬ (a = b)` or `a = b → False`,
    and asserts that `a` and `b` are not equal.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≠` in identifiers is `ne`. 0)
      (_hedge¬Q2Presentation.Induction.ZeroEdge chief K lam hinv : ¬Not (a : Prop) : Prop`Not p`, or `¬p`, is the negation of `p`. It is defined to be `p → False`,
    so if your goal is `¬p` you can use `intro h` to turn the goal into
    `h : p ⊢ False`, and if you have `hn : ¬p` and `h : p` then `hn h : False`
    and `(hn h).elim` will prove anything.
    For more information: [Propositional Logic](https://lean-lang.org/theorem_proving_in_lean4/propositions_and_proofs.html#propositional-logic)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `¬` in identifiers is `not`.Q2Presentation.Induction.ZeroEdgeQ2Presentation.Induction.ZeroEdge {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) : Prop**The zero-edge predicate** (`lem:radicaledge`'s `[ε̄] = 0` branch,
    cocycle-free): some edge complement is normal in the whole cover.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K))
      (hhalfQ2Presentation.Induction.EdgeHalvingGQ2 chief K lam hinv : Q2Presentation.Induction.EdgeHalvingGQ2Q2Presentation.Induction.EdgeHalvingGQ2 {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) : Prop**The R4a per-fibre halving, local source** (manuscript
    `lem:radicaledge` step 6, l.4006–4019, with `prop:localduality` — NSW
    VII.2, perfectness of the degree-one local pairing — the
    citable-with-derivation trust class of `localObstruction_scalar`,
    BLOCKR_P1_DESIGN §5.3).  Same statement shape as the candidate clause;
    its (future, coordinated) keep is
    `q2_edgeHalving (hne) (hedge) : EdgeHalvingGQ2 …`.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) :
      2 *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
          Q2Presentation.Induction.ZcountQ2Presentation.Induction.Zcount {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) {Γ : ProfiniteGrp.{0}}
      (B : Q2Presentation.BoundaryPackage Γ) : ℕ**The unrestricted top count `Z_{Γ,λ}(B/C)`**: framed maps to `B`
    whose composite to `C` is onto ("without imposing generation in `B`",
    l.4270) and which weakly lift through `p_λ`.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)
            Q2Presentation.boundaryPackage_GQ2Q2Presentation.boundaryPackage_GQ2 : Q2Presentation.BoundaryPackage Q2Presentation.GQ2Profinite**The local boundary package** `boundaryPackage_GQ2 : BoundaryPackage G_{ℚ₂}`
    (manuscript Prop 3.14 `prop:compatiblemarking` for `Γ = G_{ℚ₂}`; plan Turn 4 §6),
    the `G_{ℚ₂}`-side instance of the uniform Stage-C boundary datum.
    
    * `tameMap`/`tame_surj`/`tame_nu` — the local tame quotient `G_{ℚ₂} ↠ T_A` with
      unramified marking `ν_loc`, from the axiom `gq2_tame_quotient` (Prop 3.2 + the
      local half of Prop `compatiblemarking`);
    * `pro2Map`/`pro2_surj`/`pro2_nu` — the local maximal pro-`2` quotient
      `G_{ℚ₂} ↠ Π` with the *same* unramified marking `ν_loc`, proved from the fully
      marked Labute comparison `labute_GQ2_maxPro2_marked` (`pro2Map_loc`,
      `pro2Map_loc_surjective`, `pro2Map_loc_nu`);
    * `nu := ν_loc` — the common unramified character through which both factor.  =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`.
        2 ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. (HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.2 *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. Q2Presentation.Induction.dimMQ2Presentation.Induction.dimM {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : ℕ`dim M` (the `2^{2·dimM}` of `lem:elementarystage`).  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
          Q2Presentation.Induction.eCQ2Presentation.Induction.eC {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) {Γ : ProfiniteGrp.{0}}
      (B : Q2Presentation.BoundaryPackage Γ) : ℕ**The C-child count** (the `e_Γ(C')` of R4a/R4b): boundary-framed
    surjections onto the C-child pair (P3-U2's `cChild`).  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor
            Q2Presentation.boundaryPackage_GQ2Q2Presentation.boundaryPackage_GQ2 : Q2Presentation.BoundaryPackage Q2Presentation.GQ2Profinite**The local boundary package** `boundaryPackage_GQ2 : BoundaryPackage G_{ℚ₂}`
    (manuscript Prop 3.14 `prop:compatiblemarking` for `Γ = G_{ℚ₂}`; plan Turn 4 §6),
    the `G_{ℚ₂}`-side instance of the uniform Stage-C boundary datum.
    
    * `tameMap`/`tame_surj`/`tame_nu` — the local tame quotient `G_{ℚ₂} ↠ T_A` with
      unramified marking `ν_loc`, from the axiom `gq2_tame_quotient` (Prop 3.2 + the
      local half of Prop `compatiblemarking`);
    * `pro2Map`/`pro2_surj`/`pro2_nu` — the local maximal pro-`2` quotient
      `G_{ℚ₂} ↠ Π` with the *same* unramified marking `ν_loc`, proved from the fully
      marked Labute comparison `labute_GQ2_maxPro2_marked` (`pro2Map_loc`,
      `pro2Map_loc_surjective`, `pro2Map_loc_nu`);
    * `nu := ν_loc` — the common unramified character through which both factor. 
    theorem Q2Presentation.Induction.sec7_nonzeroEdge_count_gq2
      {pQ2Presentation.Induction.FramedPair :
        Q2Presentation.Induction.FramedPairQ2Presentation.Induction.FramedPair : Type 1A **framed pair** `(𝒴, F)`: a boundary-framed marked target together with a
    boundary frame for it (manuscript Definition 4.1 + `eq:beta`).  This is the index of
    Theorem 4.2: the boundary-framed surjection count `e_Γ^β` is a function of the pair.
    The induction of `sec:induction` ranges over *all* such pairs simultaneously
    ("the induction is stated globally", l.1213), ordered by `|L_Y|`. }
      (chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p :
        Q2Presentation.Induction.FirstNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor (p : Q2Presentation.Induction.FramedPair) : TypeA non-scalar chief factor of `L_Y` that is **first**: every chief factor strictly
    below it (i.e. with upper term contained in `lower`) is scalar.  This is the manuscript's
    choice `S ◁ P` at l.3616–3623 ("all chief factors below `S` are scalar and `V` is the
    first non-scalar simple factor"), which `lem:collapse` requires for the coprime step
    `[S, Ñ] = 1`. 
          pQ2Presentation.Induction.FramedPair)
      (KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor :
        Q2Presentation.Induction.KernelMinimalQ2Presentation.Induction.KernelMinimal {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.NonScalarChiefFactor p) : TypeThe manuscript's kernel choice (l.3623): `K ◁ Y`, `K ≤ P`, `KS = P`, and `K` is
    **⊆-minimal** with these properties — stated as: any `Y`-normal `K' ≤ K` still joining
    with `S` to `P` equals `K`.  (This, not leastness among all candidates, is what
    `lem:simplehead` and `lem:collapse` use: both apply it to subgroups of `K`.) 
          chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p.toNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor.toNonScalarChiefFactor {p : Q2Presentation.Induction.FramedPair}
      (self : Q2Presentation.Induction.FirstNonScalarChiefFactor p) : Q2Presentation.Induction.NonScalarChiefFactor p)
      (lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) :
        Module.DualModule.Dual.{u_4, u_5} (R : Type u_4) (M : Type u_5) [Semiring R] [AddCommMonoid M] [Module R M] : Type (max u_5 u_4)The left dual space of an R-module M is the R-module of linear maps `M → R`.  (ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2)
          (Q2Presentation.Lifting.NAddQ2Presentation.Lifting.NAdd {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) : TypeThe additive `F₂`-carrier of an elementary kernel. 
            (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian. 
              chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)))
      (hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K) :
        lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`.
          Q2Presentation.Lifting.conjInvDualsQ2Presentation.Lifting.conjInvDuals {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) :
      Submodule (ZMod 2) (Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E))The conjugation-invariant duals `X = (R^∨)^Y = (R^∨)^C` of an
    elementary kernel (consumer spelling of the manuscript's `𝒳_R`,
    §7 l.3720–3723). 
            (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian. 
              chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor))
      (_hnelam ≠ 0 : lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) Ne.{u} {α : Sort u} (a b : α) : Prop`a ≠ b`, or `Ne a b` is defined as `¬ (a = b)` or `a = b → False`,
    and asserts that `a` and `b` are not equal.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≠` in identifiers is `ne`. 0)
      (_hedge¬Q2Presentation.Induction.ZeroEdge chief K lam hinv :
        ¬Not (a : Prop) : Prop`Not p`, or `¬p`, is the negation of `p`. It is defined to be `p → False`,
    so if your goal is `¬p` you can use `intro h` to turn the goal into
    `h : p ⊢ False`, and if you have `hn : ¬p` and `h : p` then `hn h : False`
    and `(hn h).elim` will prove anything.
    For more information: [Propositional Logic](https://lean-lang.org/theorem_proving_in_lean4/propositions_and_proofs.html#propositional-logic)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `¬` in identifiers is `not`.Q2Presentation.Induction.ZeroEdgeQ2Presentation.Induction.ZeroEdge {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) : Prop**The zero-edge predicate** (`lem:radicaledge`'s `[ε̄] = 0` branch,
    cocycle-free): some edge complement is normal in the whole cover. 
            chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K))
      (hhalfQ2Presentation.Induction.EdgeHalvingGQ2 chief K lam hinv :
        Q2Presentation.Induction.EdgeHalvingGQ2Q2Presentation.Induction.EdgeHalvingGQ2 {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) : Prop**The R4a per-fibre halving, local source** (manuscript
    `lem:radicaledge` step 6, l.4006–4019, with `prop:localduality` — NSW
    VII.2, perfectness of the degree-one local pairing — the
    citable-with-derivation trust class of `localObstruction_scalar`,
    BLOCKR_P1_DESIGN §5.3).  Same statement shape as the candidate clause;
    its (future, coordinated) keep is
    `q2_edgeHalving (hne) (hedge) : EdgeHalvingGQ2 …`. 
          chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) :
      2 *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
          Q2Presentation.Induction.ZcountQ2Presentation.Induction.Zcount {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) {Γ : ProfiniteGrp.{0}}
      (B : Q2Presentation.BoundaryPackage Γ) : ℕ**The unrestricted top count `Z_{Γ,λ}(B/C)`**: framed maps to `B`
    whose composite to `C` is onto ("without imposing generation in `B`",
    l.4270) and which weakly lift through `p_λ`. 
            chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)
            Q2Presentation.boundaryPackage_GQ2Q2Presentation.boundaryPackage_GQ2 : Q2Presentation.BoundaryPackage Q2Presentation.GQ2Profinite**The local boundary package** `boundaryPackage_GQ2 : BoundaryPackage G_{ℚ₂}`
    (manuscript Prop 3.14 `prop:compatiblemarking` for `Γ = G_{ℚ₂}`; plan Turn 4 §6),
    the `G_{ℚ₂}`-side instance of the uniform Stage-C boundary datum.
    
    * `tameMap`/`tame_surj`/`tame_nu` — the local tame quotient `G_{ℚ₂} ↠ T_A` with
      unramified marking `ν_loc`, from the axiom `gq2_tame_quotient` (Prop 3.2 + the
      local half of Prop `compatiblemarking`);
    * `pro2Map`/`pro2_surj`/`pro2_nu` — the local maximal pro-`2` quotient
      `G_{ℚ₂} ↠ Π` with the *same* unramified marking `ν_loc`, proved from the fully
      marked Labute comparison `labute_GQ2_maxPro2_marked` (`pro2Map_loc`,
      `pro2Map_loc_surjective`, `pro2Map_loc_nu`);
    * `nu := ν_loc` — the common unramified character through which both factor.  =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`.
        2 ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`.
            (HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.2 *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
              Q2Presentation.Induction.dimMQ2Presentation.Induction.dimM {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : ℕ`dim M` (the `2^{2·dimM}` of `lem:elementarystage`). 
                chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
          Q2Presentation.Induction.eCQ2Presentation.Induction.eC {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) {Γ : ProfiniteGrp.{0}}
      (B : Q2Presentation.BoundaryPackage Γ) : ℕ**The C-child count** (the `e_Γ(C')` of R4a/R4b): boundary-framed
    surjections onto the C-child pair (P3-U2's `cChild`).  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor
            Q2Presentation.boundaryPackage_GQ2Q2Presentation.boundaryPackage_GQ2 : Q2Presentation.BoundaryPackage Q2Presentation.GQ2Profinite**The local boundary package** `boundaryPackage_GQ2 : BoundaryPackage G_{ℚ₂}`
    (manuscript Prop 3.14 `prop:compatiblemarking` for `Γ = G_{ℚ₂}`; plan Turn 4 §6),
    the `G_{ℚ₂}`-side instance of the uniform Stage-C boundary datum.
    
    * `tameMap`/`tame_surj`/`tame_nu` — the local tame quotient `G_{ℚ₂} ↠ T_A` with
      unramified marking `ν_loc`, from the axiom `gq2_tame_quotient` (Prop 3.2 + the
      local half of Prop `compatiblemarking`);
    * `pro2Map`/`pro2_surj`/`pro2_nu` — the local maximal pro-`2` quotient
      `G_{ℚ₂} ↠ Π` with the *same* unramified marking `ν_loc`, proved from the fully
      marked Labute comparison `labute_GQ2_maxPro2_marked` (`pro2Map_loc`,
      `pro2Map_loc_surjective`, `pro2Map_loc_nu`);
    * `nu := ν_loc` — the common unramified character through which both factor. 
    **R4a, local source** (`prop:nonzeroedge`, mirror): on the
    nonzero-edge branch, `2·Z_{G_{ℚ₂},λ}(B/C) = 2^{2·dim M}·e_{G_{ℚ₂}}(C')`.
    The fibre size is the local `lem:elementarystage` count (P3-U5, THEOREM
    from the citable `q2_localduality_general`); the halving clause enters
    as an explicit HYPOTHESIS (`EdgeHalvingGQ2`). 
Proof

Proved in §8 of the paper. Ingredients: Lemma 8.6.

Proposition 8.14 of the paper (The zero radical-edge case).

Assume that the radical edge vanishes. Write the descended scalar pushout class as

\kappa=\kappa_q^0+\Gamma_{\gamma_\kappa} +\operatorname{inf}\delta_\kappa \quad\text{on }V\rtimes C,

and put

\mathcal X_T=(T^\vee)^C, \qquad r=\dim\mathcal X_T, \qquad d=\dim V, \qquad \mu=|B^1_{\Gamma,\rho}(V)|\,|Z^1_{\Gamma,\rho}(T)|.

For each lower map \rho,

\begin{aligned}&\#\{c:\partial_{\Gamma,\rho}c=\rho^*e, \ Q_{\kappa,\Gamma,\rho}(c)=0\} \\ &\qquad=\frac1{2^{r+1}} \left(2^d+G(Q^0)\sum_{\chi\in\mathcal X_T} (-1)^{\iota_\Gamma(\rho^*\Delta_{\chi,\kappa})}\right).\end{aligned}

Consequently

\boxed{ Z_{\Gamma,\lambda}(B/C) =\frac{\mu}{2^{r+1}} \left(2^d e_\Gamma(C) +G(Q^0)\sum_{\chi\in\mathcal X_T} s_\Gamma(\Delta_{\chi,\kappa})\right),}

where

s_\Gamma(\zeta)= \sum_{\rho\in X_\Gamma(C)} (-1)^{\iota_\Gamma(\rho^*\zeta)}.

Lean code for Theorem8.147 declarations
  • defdefined in Q2Presentation/Induction/ZeroEdgeCount.lean
    complete
    def Q2Presentation.Induction.ZeroEdgeCountGammaA
      {pQ2Presentation.Induction.FramedPair : Q2Presentation.Induction.FramedPairQ2Presentation.Induction.FramedPair : Type 1A **framed pair** `(𝒴, F)`: a boundary-framed marked target together with a
    boundary frame for it (manuscript Definition 4.1 + `eq:beta`).  This is the index of
    Theorem 4.2: the boundary-framed surjection count `e_Γ^β` is a function of the pair.
    The induction of `sec:induction` ranges over *all* such pairs simultaneously
    ("the induction is stated globally", l.1213), ordered by `|L_Y|`. }
      (chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p : Q2Presentation.Induction.FirstNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor (p : Q2Presentation.Induction.FramedPair) : TypeA non-scalar chief factor of `L_Y` that is **first**: every chief factor strictly
    below it (i.e. with upper term contained in `lower`) is scalar.  This is the manuscript's
    choice `S ◁ P` at l.3616–3623 ("all chief factors below `S` are scalar and `V` is the
    first non-scalar simple factor"), which `lem:collapse` requires for the coprime step
    `[S, Ñ] = 1`.  pQ2Presentation.Induction.FramedPair)
      (KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor :
        Q2Presentation.Induction.KernelMinimalQ2Presentation.Induction.KernelMinimal {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.NonScalarChiefFactor p) : TypeThe manuscript's kernel choice (l.3623): `K ◁ Y`, `K ≤ P`, `KS = P`, and `K` is
    **⊆-minimal** with these properties — stated as: any `Y`-normal `K' ≤ K` still joining
    with `S` to `P` equals `K`.  (This, not leastness among all candidates, is what
    `lem:simplehead` and `lem:collapse` use: both apply it to subgroups of `K`.)  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p.toNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor.toNonScalarChiefFactor {p : Q2Presentation.Induction.FramedPair}
      (self : Q2Presentation.Induction.FirstNonScalarChiefFactor p) : Q2Presentation.Induction.NonScalarChiefFactor p)
      (lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) :
        Module.DualModule.Dual.{u_4, u_5} (R : Type u_4) (M : Type u_5) [Semiring R] [AddCommMonoid M] [Module R M] : Type (max u_5 u_4)The left dual space of an R-module M is the R-module of linear maps `M → R`.  (ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2)
          (Q2Presentation.Lifting.NAddQ2Presentation.Lifting.NAdd {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) : TypeThe additive `F₂`-carrier of an elementary kernel. 
            (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)))
      (hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K) :
        lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`.
          Q2Presentation.Lifting.conjInvDualsQ2Presentation.Lifting.conjInvDuals {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) :
      Submodule (ZMod 2) (Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E))The conjugation-invariant duals `X = (R^∨)^Y = (R^∨)^C` of an
    elementary kernel (consumer spelling of the manuscript's `𝒳_R`,
    §7 l.3720–3723). 
            (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor))
      (ZQ2Presentation.Induction.ZeroEdgeDescentData chief K lam hinv : Q2Presentation.Induction.ZeroEdgeDescentDataQ2Presentation.Induction.ZeroEdgeDescentData {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) : Type**The zero-edge descent data** (`eq:descendedclass` l.4037–4045 +
    `lem:affinelifting` l.4048–4083, as one choice bundle — the §6.5 choice
    discipline: both R4b keeps take the SAME bundle):
    
    * `D`/`hW` — the zero-edge witness (a normal edge complement, P3-U3); the
      bundle therefore implies `ZeroEdge` (`ZeroEdgeDescentData.zeroEdge`);
    * `Csec` + `hdisj`/`hsup` — the `lem:transgression` splitting coordinates
      `B/T' = V ⋊ C` (`Csec` a complement to the `V`-layer);
    * `gammaK`/`deltaK` — the normalized decomposition data `γ_κ ∈ Z¹(C,V^∨)`,
      `δ_κ ∈ Z²(C,𝔽₂)` of the descended class, with concrete cocycle laws
      (dual action `(c·φ)(v) = φ(c⁻¹·v)`);
    * `eT` — the `lem:affinelifting` class `e ∈ Z²(C,T)` (pullback of
      `B → V⋊C` along the zero section), twisted cocycle law in the
      `hzc`-ready orientation;
    * `mC` — the equivariant-lift correction functions `m_c` of the
      `κ_q⁰`-model (`eq:mquadratic`/`eq:mcoherent` l.4118–4125, stated
      against the bilinear factor set `edgeBaseFactor`).
    
    The deep pinning identity — that a normalized section cocycle of the
    descended double cover `descTarget D hW` equals
    `κ_q⁰-model + Γ_{γ_κ} + inf δ_κ` in the `Csec`-coordinates, and that `eT`
    is the actual zero-section pullback — is owned by the deferred
    transgression unit (`btChild_splits`/`zeroEdgeDescentData_nonempty`,
    design §4.7); until it lands, the coordinated R4b keep must carry that
    pinning alongside this bundle (same discipline as U7's `¬ZeroEdge`
    conditioning living on the future keep).  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K))
      (ramBool : BoolBool : TypeThe Boolean values, `true` and `false`.
    
    Logically speaking, this is equivalent to `Prop` (the type of propositions). The distinction is
    public important for programming: both propositions and their proofs are erased in the code generator,
    while `Bool` corresponds to the Boolean type in most programming languages and carries precisely one
    bit of run-time information.
    ) : PropThe universe of propositions. `Prop ≡ Sort 0`.
    
    Every proposition is propositionally equal to either `True` or `False`. 
    def Q2Presentation.Induction.ZeroEdgeCountGammaA
      {pQ2Presentation.Induction.FramedPair :
        Q2Presentation.Induction.FramedPairQ2Presentation.Induction.FramedPair : Type 1A **framed pair** `(𝒴, F)`: a boundary-framed marked target together with a
    boundary frame for it (manuscript Definition 4.1 + `eq:beta`).  This is the index of
    Theorem 4.2: the boundary-framed surjection count `e_Γ^β` is a function of the pair.
    The induction of `sec:induction` ranges over *all* such pairs simultaneously
    ("the induction is stated globally", l.1213), ordered by `|L_Y|`. }
      (chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p :
        Q2Presentation.Induction.FirstNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor (p : Q2Presentation.Induction.FramedPair) : TypeA non-scalar chief factor of `L_Y` that is **first**: every chief factor strictly
    below it (i.e. with upper term contained in `lower`) is scalar.  This is the manuscript's
    choice `S ◁ P` at l.3616–3623 ("all chief factors below `S` are scalar and `V` is the
    first non-scalar simple factor"), which `lem:collapse` requires for the coprime step
    `[S, Ñ] = 1`. 
          pQ2Presentation.Induction.FramedPair)
      (KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor :
        Q2Presentation.Induction.KernelMinimalQ2Presentation.Induction.KernelMinimal {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.NonScalarChiefFactor p) : TypeThe manuscript's kernel choice (l.3623): `K ◁ Y`, `K ≤ P`, `KS = P`, and `K` is
    **⊆-minimal** with these properties — stated as: any `Y`-normal `K' ≤ K` still joining
    with `S` to `P` equals `K`.  (This, not leastness among all candidates, is what
    `lem:simplehead` and `lem:collapse` use: both apply it to subgroups of `K`.) 
          chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p.toNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor.toNonScalarChiefFactor {p : Q2Presentation.Induction.FramedPair}
      (self : Q2Presentation.Induction.FirstNonScalarChiefFactor p) : Q2Presentation.Induction.NonScalarChiefFactor p)
      (lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) :
        Module.DualModule.Dual.{u_4, u_5} (R : Type u_4) (M : Type u_5) [Semiring R] [AddCommMonoid M] [Module R M] : Type (max u_5 u_4)The left dual space of an R-module M is the R-module of linear maps `M → R`.  (ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2)
          (Q2Presentation.Lifting.NAddQ2Presentation.Lifting.NAdd {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) : TypeThe additive `F₂`-carrier of an elementary kernel. 
            (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian. 
              chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)))
      (hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K) :
        lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`.
          Q2Presentation.Lifting.conjInvDualsQ2Presentation.Lifting.conjInvDuals {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) :
      Submodule (ZMod 2) (Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E))The conjugation-invariant duals `X = (R^∨)^Y = (R^∨)^C` of an
    elementary kernel (consumer spelling of the manuscript's `𝒳_R`,
    §7 l.3720–3723). 
            (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian. 
              chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor))
      (ZQ2Presentation.Induction.ZeroEdgeDescentData chief K lam hinv :
        Q2Presentation.Induction.ZeroEdgeDescentDataQ2Presentation.Induction.ZeroEdgeDescentData {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) : Type**The zero-edge descent data** (`eq:descendedclass` l.4037–4045 +
    `lem:affinelifting` l.4048–4083, as one choice bundle — the §6.5 choice
    discipline: both R4b keeps take the SAME bundle):
    
    * `D`/`hW` — the zero-edge witness (a normal edge complement, P3-U3); the
      bundle therefore implies `ZeroEdge` (`ZeroEdgeDescentData.zeroEdge`);
    * `Csec` + `hdisj`/`hsup` — the `lem:transgression` splitting coordinates
      `B/T' = V ⋊ C` (`Csec` a complement to the `V`-layer);
    * `gammaK`/`deltaK` — the normalized decomposition data `γ_κ ∈ Z¹(C,V^∨)`,
      `δ_κ ∈ Z²(C,𝔽₂)` of the descended class, with concrete cocycle laws
      (dual action `(c·φ)(v) = φ(c⁻¹·v)`);
    * `eT` — the `lem:affinelifting` class `e ∈ Z²(C,T)` (pullback of
      `B → V⋊C` along the zero section), twisted cocycle law in the
      `hzc`-ready orientation;
    * `mC` — the equivariant-lift correction functions `m_c` of the
      `κ_q⁰`-model (`eq:mquadratic`/`eq:mcoherent` l.4118–4125, stated
      against the bilinear factor set `edgeBaseFactor`).
    
    The deep pinning identity — that a normalized section cocycle of the
    descended double cover `descTarget D hW` equals
    `κ_q⁰-model + Γ_{γ_κ} + inf δ_κ` in the `Csec`-coordinates, and that `eT`
    is the actual zero-section pullback — is owned by the deferred
    transgression unit (`btChild_splits`/`zeroEdgeDescentData_nonempty`,
    design §4.7); until it lands, the coordinated R4b keep must carry that
    pinning alongside this bundle (same discipline as U7's `¬ZeroEdge`
    conditioning living on the future keep). 
          chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K))
      (ramBool : BoolBool : TypeThe Boolean values, `true` and `false`.
    
    Logically speaking, this is equivalent to `Prop` (the type of propositions). The distinction is
    public important for programming: both propositions and their proofs are erased in the code generator,
    while `Bool` corresponds to the Boolean type in most programming languages and carries precisely one
    bit of run-time information.
    ) : PropThe universe of propositions. `Prop ≡ Sort 0`.
    
    Every proposition is propositionally equal to either `True` or `False`. 
    **The R4b count, candidate source** — THE zero-edge interim keep
    (manuscript `prop:zeroedge` l.4314–4369, `eq:recursionR4b` l.4342–4353
    with the candidate functional `ι_A` of `prop:chainmap`; division-free):
    
    `2^{r+1}·Z_{Γ_A,λ}(B/C) = μ·(2^d·e_{Γ_A}(C) + G⁰·Σ_{χ∈𝒳_T} (2·n_{Γ_A,0}(Δ_{χ,κ}) − e_{Γ_A}(C)))`
    
    with `μ = muT` (the `eq:mumultiplicity` value), `G⁰ = baseGaussSign ram ·
    2^{d/2}` (the base Gauss sum of `q̄_λ`, `gaussSum_eq_sign_two_pow`-shaped),
    and `Δ_{χ,κ} = Delta Z χ` the U8 phase classes of ONE fixed bundle `Z`.
    `s_Γ` enters pre-absorbed as `2·n − e` (`eq:recursionR5a` = the proven
    `sGammaZ_eq`; the ι_Γ-sign is BY DEFINITION the splitting indicator).
    
    Deliberately NOT conditioned here on anything beyond the bundle — the
    `hne`/`ZeroEdge`/`ram`-pinning conditioning lives on the exits and on the
    (future, coordinated) keep
    `axiom … (hne) (Z) (ram) (hram) (hpin) : ZeroEdgeCountGammaA …`, which
    must also carry the base-identity pinning of `Z` until the transgression
    unit lands (U8 bundle note).  Dissolution program (design §4.7): (i) P8
    realization over the P6 engine (`constrainedGauss_count` +
    `prop:phaseidentity` via `completedSquare`/`addLinear` at the descended
    class, `eq:pointwiseconstrained` per lower map, then `μ`-multiplication
    and summation); (ii) `∂`-surjectivity = the `H²(M) = 0` content (U6-grade
    dévissage at the child); (iii) `lem:affinelifting` per source (candidate:
    ledger dévissage at `V`/`T`; local: citable numerics at `tChildKernel`);
    (iv) the `signChar ↔` splitting-indicator identification (P8, per P6 §3's
    contract, `δ_κ`-absorption per P6 §7.6 — `Delta` includes `δ_κ` exactly
    once); (v) the sign pinnings P6.4–P6.8 discharging `ram`. 
  • defdefined in Q2Presentation/Induction/ZeroEdgeCount.lean
    complete
    def Q2Presentation.Induction.ZeroEdgeCountGQ2
      {pQ2Presentation.Induction.FramedPair : Q2Presentation.Induction.FramedPairQ2Presentation.Induction.FramedPair : Type 1A **framed pair** `(𝒴, F)`: a boundary-framed marked target together with a
    boundary frame for it (manuscript Definition 4.1 + `eq:beta`).  This is the index of
    Theorem 4.2: the boundary-framed surjection count `e_Γ^β` is a function of the pair.
    The induction of `sec:induction` ranges over *all* such pairs simultaneously
    ("the induction is stated globally", l.1213), ordered by `|L_Y|`. }
      (chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p : Q2Presentation.Induction.FirstNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor (p : Q2Presentation.Induction.FramedPair) : TypeA non-scalar chief factor of `L_Y` that is **first**: every chief factor strictly
    below it (i.e. with upper term contained in `lower`) is scalar.  This is the manuscript's
    choice `S ◁ P` at l.3616–3623 ("all chief factors below `S` are scalar and `V` is the
    first non-scalar simple factor"), which `lem:collapse` requires for the coprime step
    `[S, Ñ] = 1`.  pQ2Presentation.Induction.FramedPair)
      (KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor :
        Q2Presentation.Induction.KernelMinimalQ2Presentation.Induction.KernelMinimal {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.NonScalarChiefFactor p) : TypeThe manuscript's kernel choice (l.3623): `K ◁ Y`, `K ≤ P`, `KS = P`, and `K` is
    **⊆-minimal** with these properties — stated as: any `Y`-normal `K' ≤ K` still joining
    with `S` to `P` equals `K`.  (This, not leastness among all candidates, is what
    `lem:simplehead` and `lem:collapse` use: both apply it to subgroups of `K`.)  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p.toNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor.toNonScalarChiefFactor {p : Q2Presentation.Induction.FramedPair}
      (self : Q2Presentation.Induction.FirstNonScalarChiefFactor p) : Q2Presentation.Induction.NonScalarChiefFactor p)
      (lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) :
        Module.DualModule.Dual.{u_4, u_5} (R : Type u_4) (M : Type u_5) [Semiring R] [AddCommMonoid M] [Module R M] : Type (max u_5 u_4)The left dual space of an R-module M is the R-module of linear maps `M → R`.  (ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2)
          (Q2Presentation.Lifting.NAddQ2Presentation.Lifting.NAdd {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) : TypeThe additive `F₂`-carrier of an elementary kernel. 
            (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)))
      (hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K) :
        lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`.
          Q2Presentation.Lifting.conjInvDualsQ2Presentation.Lifting.conjInvDuals {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) :
      Submodule (ZMod 2) (Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E))The conjugation-invariant duals `X = (R^∨)^Y = (R^∨)^C` of an
    elementary kernel (consumer spelling of the manuscript's `𝒳_R`,
    §7 l.3720–3723). 
            (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor))
      (ZQ2Presentation.Induction.ZeroEdgeDescentData chief K lam hinv : Q2Presentation.Induction.ZeroEdgeDescentDataQ2Presentation.Induction.ZeroEdgeDescentData {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) : Type**The zero-edge descent data** (`eq:descendedclass` l.4037–4045 +
    `lem:affinelifting` l.4048–4083, as one choice bundle — the §6.5 choice
    discipline: both R4b keeps take the SAME bundle):
    
    * `D`/`hW` — the zero-edge witness (a normal edge complement, P3-U3); the
      bundle therefore implies `ZeroEdge` (`ZeroEdgeDescentData.zeroEdge`);
    * `Csec` + `hdisj`/`hsup` — the `lem:transgression` splitting coordinates
      `B/T' = V ⋊ C` (`Csec` a complement to the `V`-layer);
    * `gammaK`/`deltaK` — the normalized decomposition data `γ_κ ∈ Z¹(C,V^∨)`,
      `δ_κ ∈ Z²(C,𝔽₂)` of the descended class, with concrete cocycle laws
      (dual action `(c·φ)(v) = φ(c⁻¹·v)`);
    * `eT` — the `lem:affinelifting` class `e ∈ Z²(C,T)` (pullback of
      `B → V⋊C` along the zero section), twisted cocycle law in the
      `hzc`-ready orientation;
    * `mC` — the equivariant-lift correction functions `m_c` of the
      `κ_q⁰`-model (`eq:mquadratic`/`eq:mcoherent` l.4118–4125, stated
      against the bilinear factor set `edgeBaseFactor`).
    
    The deep pinning identity — that a normalized section cocycle of the
    descended double cover `descTarget D hW` equals
    `κ_q⁰-model + Γ_{γ_κ} + inf δ_κ` in the `Csec`-coordinates, and that `eT`
    is the actual zero-section pullback — is owned by the deferred
    transgression unit (`btChild_splits`/`zeroEdgeDescentData_nonempty`,
    design §4.7); until it lands, the coordinated R4b keep must carry that
    pinning alongside this bundle (same discipline as U7's `¬ZeroEdge`
    conditioning living on the future keep).  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K))
      (ramBool : BoolBool : TypeThe Boolean values, `true` and `false`.
    
    Logically speaking, this is equivalent to `Prop` (the type of propositions). The distinction is
    public important for programming: both propositions and their proofs are erased in the code generator,
    while `Bool` corresponds to the Boolean type in most programming languages and carries precisely one
    bit of run-time information.
    ) : PropThe universe of propositions. `Prop ≡ Sort 0`.
    
    Every proposition is propositionally equal to either `True` or `False`. 
    def Q2Presentation.Induction.ZeroEdgeCountGQ2
      {pQ2Presentation.Induction.FramedPair :
        Q2Presentation.Induction.FramedPairQ2Presentation.Induction.FramedPair : Type 1A **framed pair** `(𝒴, F)`: a boundary-framed marked target together with a
    boundary frame for it (manuscript Definition 4.1 + `eq:beta`).  This is the index of
    Theorem 4.2: the boundary-framed surjection count `e_Γ^β` is a function of the pair.
    The induction of `sec:induction` ranges over *all* such pairs simultaneously
    ("the induction is stated globally", l.1213), ordered by `|L_Y|`. }
      (chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p :
        Q2Presentation.Induction.FirstNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor (p : Q2Presentation.Induction.FramedPair) : TypeA non-scalar chief factor of `L_Y` that is **first**: every chief factor strictly
    below it (i.e. with upper term contained in `lower`) is scalar.  This is the manuscript's
    choice `S ◁ P` at l.3616–3623 ("all chief factors below `S` are scalar and `V` is the
    first non-scalar simple factor"), which `lem:collapse` requires for the coprime step
    `[S, Ñ] = 1`. 
          pQ2Presentation.Induction.FramedPair)
      (KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor :
        Q2Presentation.Induction.KernelMinimalQ2Presentation.Induction.KernelMinimal {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.NonScalarChiefFactor p) : TypeThe manuscript's kernel choice (l.3623): `K ◁ Y`, `K ≤ P`, `KS = P`, and `K` is
    **⊆-minimal** with these properties — stated as: any `Y`-normal `K' ≤ K` still joining
    with `S` to `P` equals `K`.  (This, not leastness among all candidates, is what
    `lem:simplehead` and `lem:collapse` use: both apply it to subgroups of `K`.) 
          chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p.toNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor.toNonScalarChiefFactor {p : Q2Presentation.Induction.FramedPair}
      (self : Q2Presentation.Induction.FirstNonScalarChiefFactor p) : Q2Presentation.Induction.NonScalarChiefFactor p)
      (lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) :
        Module.DualModule.Dual.{u_4, u_5} (R : Type u_4) (M : Type u_5) [Semiring R] [AddCommMonoid M] [Module R M] : Type (max u_5 u_4)The left dual space of an R-module M is the R-module of linear maps `M → R`.  (ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2)
          (Q2Presentation.Lifting.NAddQ2Presentation.Lifting.NAdd {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) : TypeThe additive `F₂`-carrier of an elementary kernel. 
            (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian. 
              chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)))
      (hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K) :
        lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`.
          Q2Presentation.Lifting.conjInvDualsQ2Presentation.Lifting.conjInvDuals {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) :
      Submodule (ZMod 2) (Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E))The conjugation-invariant duals `X = (R^∨)^Y = (R^∨)^C` of an
    elementary kernel (consumer spelling of the manuscript's `𝒳_R`,
    §7 l.3720–3723). 
            (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian. 
              chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor))
      (ZQ2Presentation.Induction.ZeroEdgeDescentData chief K lam hinv :
        Q2Presentation.Induction.ZeroEdgeDescentDataQ2Presentation.Induction.ZeroEdgeDescentData {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) : Type**The zero-edge descent data** (`eq:descendedclass` l.4037–4045 +
    `lem:affinelifting` l.4048–4083, as one choice bundle — the §6.5 choice
    discipline: both R4b keeps take the SAME bundle):
    
    * `D`/`hW` — the zero-edge witness (a normal edge complement, P3-U3); the
      bundle therefore implies `ZeroEdge` (`ZeroEdgeDescentData.zeroEdge`);
    * `Csec` + `hdisj`/`hsup` — the `lem:transgression` splitting coordinates
      `B/T' = V ⋊ C` (`Csec` a complement to the `V`-layer);
    * `gammaK`/`deltaK` — the normalized decomposition data `γ_κ ∈ Z¹(C,V^∨)`,
      `δ_κ ∈ Z²(C,𝔽₂)` of the descended class, with concrete cocycle laws
      (dual action `(c·φ)(v) = φ(c⁻¹·v)`);
    * `eT` — the `lem:affinelifting` class `e ∈ Z²(C,T)` (pullback of
      `B → V⋊C` along the zero section), twisted cocycle law in the
      `hzc`-ready orientation;
    * `mC` — the equivariant-lift correction functions `m_c` of the
      `κ_q⁰`-model (`eq:mquadratic`/`eq:mcoherent` l.4118–4125, stated
      against the bilinear factor set `edgeBaseFactor`).
    
    The deep pinning identity — that a normalized section cocycle of the
    descended double cover `descTarget D hW` equals
    `κ_q⁰-model + Γ_{γ_κ} + inf δ_κ` in the `Csec`-coordinates, and that `eT`
    is the actual zero-section pullback — is owned by the deferred
    transgression unit (`btChild_splits`/`zeroEdgeDescentData_nonempty`,
    design §4.7); until it lands, the coordinated R4b keep must carry that
    pinning alongside this bundle (same discipline as U7's `¬ZeroEdge`
    conditioning living on the future keep). 
          chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K))
      (ramBool : BoolBool : TypeThe Boolean values, `true` and `false`.
    
    Logically speaking, this is equivalent to `Prop` (the type of propositions). The distinction is
    public important for programming: both propositions and their proofs are erased in the code generator,
    while `Bool` corresponds to the Boolean type in most programming languages and carries precisely one
    bit of run-time information.
    ) : PropThe universe of propositions. `Prop ≡ Sort 0`.
    
    Every proposition is propositionally equal to either `True` or `False`. 
    **The R4b count, local source** (manuscript `prop:zeroedge` mirror,
    with the local functional `ι_F = inv_{ℚ₂}`; same fixed bundle `Z` as the
    candidate clause — design §6.5).  Same statement shape, provenance and
    dissolution program as `ZeroEdgeCountGammaA`. 
  • theoremdefined in Q2Presentation/Induction/ZeroEdgeCount.lean
    complete
    theorem Q2Presentation.Induction.sec7_zeroEdge_count_gammaA
      {pQ2Presentation.Induction.FramedPair : Q2Presentation.Induction.FramedPairQ2Presentation.Induction.FramedPair : Type 1A **framed pair** `(𝒴, F)`: a boundary-framed marked target together with a
    boundary frame for it (manuscript Definition 4.1 + `eq:beta`).  This is the index of
    Theorem 4.2: the boundary-framed surjection count `e_Γ^β` is a function of the pair.
    The induction of `sec:induction` ranges over *all* such pairs simultaneously
    ("the induction is stated globally", l.1213), ordered by `|L_Y|`. }
      (chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p : Q2Presentation.Induction.FirstNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor (p : Q2Presentation.Induction.FramedPair) : TypeA non-scalar chief factor of `L_Y` that is **first**: every chief factor strictly
    below it (i.e. with upper term contained in `lower`) is scalar.  This is the manuscript's
    choice `S ◁ P` at l.3616–3623 ("all chief factors below `S` are scalar and `V` is the
    first non-scalar simple factor"), which `lem:collapse` requires for the coprime step
    `[S, Ñ] = 1`.  pQ2Presentation.Induction.FramedPair)
      (KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor :
        Q2Presentation.Induction.KernelMinimalQ2Presentation.Induction.KernelMinimal {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.NonScalarChiefFactor p) : TypeThe manuscript's kernel choice (l.3623): `K ◁ Y`, `K ≤ P`, `KS = P`, and `K` is
    **⊆-minimal** with these properties — stated as: any `Y`-normal `K' ≤ K` still joining
    with `S` to `P` equals `K`.  (This, not leastness among all candidates, is what
    `lem:simplehead` and `lem:collapse` use: both apply it to subgroups of `K`.)  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p.toNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor.toNonScalarChiefFactor {p : Q2Presentation.Induction.FramedPair}
      (self : Q2Presentation.Induction.FirstNonScalarChiefFactor p) : Q2Presentation.Induction.NonScalarChiefFactor p)
      (lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) :
        Module.DualModule.Dual.{u_4, u_5} (R : Type u_4) (M : Type u_5) [Semiring R] [AddCommMonoid M] [Module R M] : Type (max u_5 u_4)The left dual space of an R-module M is the R-module of linear maps `M → R`.  (ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2)
          (Q2Presentation.Lifting.NAddQ2Presentation.Lifting.NAdd {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) : TypeThe additive `F₂`-carrier of an elementary kernel. 
            (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)))
      (hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K) :
        lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`.
          Q2Presentation.Lifting.conjInvDualsQ2Presentation.Lifting.conjInvDuals {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) :
      Submodule (ZMod 2) (Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E))The conjugation-invariant duals `X = (R^∨)^Y = (R^∨)^C` of an
    elementary kernel (consumer spelling of the manuscript's `𝒳_R`,
    §7 l.3720–3723). 
            (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor))
      (_hnelam ≠ 0 : lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) Ne.{u} {α : Sort u} (a b : α) : Prop`a ≠ b`, or `Ne a b` is defined as `¬ (a = b)` or `a = b → False`,
    and asserts that `a` and `b` are not equal.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≠` in identifiers is `ne`. 0)
      (ZQ2Presentation.Induction.ZeroEdgeDescentData chief K lam hinv : Q2Presentation.Induction.ZeroEdgeDescentDataQ2Presentation.Induction.ZeroEdgeDescentData {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) : Type**The zero-edge descent data** (`eq:descendedclass` l.4037–4045 +
    `lem:affinelifting` l.4048–4083, as one choice bundle — the §6.5 choice
    discipline: both R4b keeps take the SAME bundle):
    
    * `D`/`hW` — the zero-edge witness (a normal edge complement, P3-U3); the
      bundle therefore implies `ZeroEdge` (`ZeroEdgeDescentData.zeroEdge`);
    * `Csec` + `hdisj`/`hsup` — the `lem:transgression` splitting coordinates
      `B/T' = V ⋊ C` (`Csec` a complement to the `V`-layer);
    * `gammaK`/`deltaK` — the normalized decomposition data `γ_κ ∈ Z¹(C,V^∨)`,
      `δ_κ ∈ Z²(C,𝔽₂)` of the descended class, with concrete cocycle laws
      (dual action `(c·φ)(v) = φ(c⁻¹·v)`);
    * `eT` — the `lem:affinelifting` class `e ∈ Z²(C,T)` (pullback of
      `B → V⋊C` along the zero section), twisted cocycle law in the
      `hzc`-ready orientation;
    * `mC` — the equivariant-lift correction functions `m_c` of the
      `κ_q⁰`-model (`eq:mquadratic`/`eq:mcoherent` l.4118–4125, stated
      against the bilinear factor set `edgeBaseFactor`).
    
    The deep pinning identity — that a normalized section cocycle of the
    descended double cover `descTarget D hW` equals
    `κ_q⁰-model + Γ_{γ_κ} + inf δ_κ` in the `Csec`-coordinates, and that `eT`
    is the actual zero-section pullback — is owned by the deferred
    transgression unit (`btChild_splits`/`zeroEdgeDescentData_nonempty`,
    design §4.7); until it lands, the coordinated R4b keep must carry that
    pinning alongside this bundle (same discipline as U7's `¬ZeroEdge`
    conditioning living on the future keep).  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K))
      (ramBool : BoolBool : TypeThe Boolean values, `true` and `false`.
    
    Logically speaking, this is equivalent to `Prop` (the type of propositions). The distinction is
    public important for programming: both propositions and their proofs are erased in the code generator,
    while `Bool` corresponds to the Boolean type in most programming languages and carries precisely one
    bit of run-time information.
    )
      (_hramQ2Presentation.Quadratic.gaussType (Q2Presentation.Induction.edgeHeadForm chief K lam hinv ⋯) = ram :
        Q2Presentation.Quadratic.gaussTypeQ2Presentation.Quadratic.gaussType.{u_1} {V : Type u_1} [AddCommGroup V] [Module (ZMod 2) V]
      (q : Q2Presentation.Quadratic.QuadF2 V) : BoolThe **Gauss type** of a quadratic form: the `Bool`-valued ramification flag read
    off from its zero count — `true` (plus type / ramified) iff the count is the plus
    value `baseZeroCount true d`, else `false` (minus type / unramified).  This is the
    form's own Arf type made into the *unique* `ram` for which `# Q⁻¹(0) = baseZeroCount
    ram d` (uniqueness is `baseZeroCount_ne`; that this `ram` is *realized* is the Dickson
    zero count, `candidate_numZeros_eq_gaussType` / `q2_local_numZeros_eq_gaussType`
    in `DicksonCount.lean`).  Tying the flag to the form this way is exactly
    the de-bugging of the old *free* `ram` argument. 
            (Q2Presentation.Induction.edgeHeadFormQ2Presentation.Induction.edgeHeadForm {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) (hne : lam ≠ 0) :
      Q2Presentation.Quadratic.QuadF2 (Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K)**The descended head form `q̄_λ : QuadF2 (M/T)`** (`prop:simpleheaddet`
    at the tower, the U1-aligned carrier of the R4b Gauss data).  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K) ) =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`.
          ramBool)
      (hkeepQ2Presentation.Induction.ZeroEdgeCountGammaA chief K lam hinv Z ram :
        Q2Presentation.Induction.ZeroEdgeCountGammaAQ2Presentation.Induction.ZeroEdgeCountGammaA {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K))
      (Z : Q2Presentation.Induction.ZeroEdgeDescentData chief K lam hinv) (ram : Bool) : Prop**The R4b count, candidate source** — THE zero-edge interim keep
    (manuscript `prop:zeroedge` l.4314–4369, `eq:recursionR4b` l.4342–4353
    with the candidate functional `ι_A` of `prop:chainmap`; division-free):
    
    `2^{r+1}·Z_{Γ_A,λ}(B/C) = μ·(2^d·e_{Γ_A}(C) + G⁰·Σ_{χ∈𝒳_T} (2·n_{Γ_A,0}(Δ_{χ,κ}) − e_{Γ_A}(C)))`
    
    with `μ = muT` (the `eq:mumultiplicity` value), `G⁰ = baseGaussSign ram ·
    2^{d/2}` (the base Gauss sum of `q̄_λ`, `gaussSum_eq_sign_two_pow`-shaped),
    and `Δ_{χ,κ} = Delta Z χ` the U8 phase classes of ONE fixed bundle `Z`.
    `s_Γ` enters pre-absorbed as `2·n − e` (`eq:recursionR5a` = the proven
    `sGammaZ_eq`; the ι_Γ-sign is BY DEFINITION the splitting indicator).
    
    Deliberately NOT conditioned here on anything beyond the bundle — the
    `hne`/`ZeroEdge`/`ram`-pinning conditioning lives on the exits and on the
    (future, coordinated) keep
    `axiom … (hne) (Z) (ram) (hram) (hpin) : ZeroEdgeCountGammaA …`, which
    must also carry the base-identity pinning of `Z` until the transgression
    unit lands (U8 bundle note).  Dissolution program (design §4.7): (i) P8
    realization over the P6 engine (`constrainedGauss_count` +
    `prop:phaseidentity` via `completedSquare`/`addLinear` at the descended
    class, `eq:pointwiseconstrained` per lower map, then `μ`-multiplication
    and summation); (ii) `∂`-surjectivity = the `H²(M) = 0` content (U6-grade
    dévissage at the child); (iii) `lem:affinelifting` per source (candidate:
    ledger dévissage at `V`/`T`; local: citable numerics at `tChildKernel`);
    (iv) the `signChar ↔` splitting-indicator identification (P8, per P6 §3's
    contract, `δ_κ`-absorption per P6 §7.6 — `Delta` includes `δ_κ` exactly
    once); (v) the sign pinnings P6.4–P6.8 discharging `ram`.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K) ZQ2Presentation.Induction.ZeroEdgeDescentData chief K lam hinv
          ramBool) :
      2 ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. (HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`.Q2Presentation.Induction.rTQ2Presentation.Induction.rT {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : ℕ`r = dim 𝒳_T`.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor +HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`. 1)HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`. *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
          (Q2Presentation.Induction.ZcountQ2Presentation.Induction.Zcount {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) {Γ : ProfiniteGrp.{0}}
      (B : Q2Presentation.BoundaryPackage Γ) : ℕ**The unrestricted top count `Z_{Γ,λ}(B/C)`**: framed maps to `B`
    whose composite to `C` is onto ("without imposing generation in `B`",
    l.4270) and which weakly lift through `p_λ`.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)
              Q2Presentation.boundaryPackage_GammaAQ2Presentation.boundaryPackage_GammaA : Q2Presentation.BoundaryPackage Q2Presentation.GammaA**The candidate boundary package** (manuscript Prop 3.14, `prop:compatiblemarking`;
    plan Turn 4 §6).  The Stage-C data of `Γ_A`: the common tame quotient `gammaTameMap`,
    the maximal pro-`2` quotient `p : Γ_A ⟶ Π`, and the common unramified character
    `ν = gammaTameMap ≫ ν_t`, through which both factor. ) =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`.
        (Q2Presentation.Induction.muTQ2Presentation.Induction.muT {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : ℕ**The affine-lifting multiplicity VALUE**
    `μ = |B¹(V)|·|Z¹(T)| = 2^d · 2^{2·dimT + r}` (`eq:mumultiplicity`; the
    per-source realization of this count is the §4.5–4.6 lane, not U2).  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
          (HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`.2 ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. Q2Presentation.Induction.dimVQ2Presentation.Induction.dimV {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : ℕ`d = dim V` (the head `V = M/T`).  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
              (Q2Presentation.Induction.eCQ2Presentation.Induction.eC {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) {Γ : ProfiniteGrp.{0}}
      (B : Q2Presentation.BoundaryPackage Γ) : ℕ**The C-child count** (the `e_Γ(C')` of R4a/R4b): boundary-framed
    surjections onto the C-child pair (P3-U2's `cChild`).  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor
                  Q2Presentation.boundaryPackage_GammaAQ2Presentation.boundaryPackage_GammaA : Q2Presentation.BoundaryPackage Q2Presentation.GammaA**The candidate boundary package** (manuscript Prop 3.14, `prop:compatiblemarking`;
    plan Turn 4 §6).  The Stage-C data of `Γ_A`: the common tame quotient `gammaTameMap`,
    the maximal pro-`2` quotient `p : Γ_A ⟶ Π`, and the common unramified character
    `ν = gammaTameMap ≫ ν_t`, through which both factor. ) +HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`.
            Q2Presentation.Quadratic.baseGaussSignQ2Presentation.Quadratic.baseGaussSign (ramified : Bool) : ℤThe **base Gauss sign** (`prop:candidatezero`/`prop:localzero`): `+1` (plus type)
    in the ramified case, `-1` (minus type) in the unramified case.  ramBool *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
                2 ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. (HDiv.hDiv.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HDiv α β γ] : α → β → γ`a / b` computes the result of dividing `a` by `b`.
    The meaning of this notation is type-dependent.
    * For most types like `Nat`, `Int`, `Rat`, `Real`, `a / 0` is defined to be `0`.
    * For `Nat`, `a / b` rounds downwards.
    * For `Int`, `a / b` rounds downwards if `b` is positive or upwards if `b` is negative.
      It is implemented as `Int.ediv`, the unique function satisfying
      `a % b + b * (a / b) = a` and `0 ≤ a % b < natAbs b` for `b ≠ 0`.
      Other rounding conventions are available using the functions
      `Int.fdiv` (floor rounding) and `Int.tdiv` (truncation rounding).
    * For `Float`, `a / 0` follows the IEEE 754 semantics for division,
      usually resulting in `inf` or `nan`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `/` in identifiers is `div`.Q2Presentation.Induction.dimVQ2Presentation.Induction.dimV {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : ℕ`d = dim V` (the head `V = M/T`).  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor /HDiv.hDiv.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HDiv α β γ] : α → β → γ`a / b` computes the result of dividing `a` by `b`.
    The meaning of this notation is type-dependent.
    * For most types like `Nat`, `Int`, `Rat`, `Real`, `a / 0` is defined to be `0`.
    * For `Nat`, `a / b` rounds downwards.
    * For `Int`, `a / b` rounds downwards if `b` is positive or upwards if `b` is negative.
      It is implemented as `Int.ediv`, the unique function satisfying
      `a % b + b * (a / b) = a` and `0 ≤ a % b < natAbs b` for `b ≠ 0`.
      Other rounding conventions are available using the functions
      `Int.fdiv` (floor rounding) and `Int.tdiv` (truncation rounding).
    * For `Float`, `a / 0` follows the IEEE 754 semantics for division,
      usually resulting in `inf` or `nan`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `/` in identifiers is `div`. 2)HDiv.hDiv.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HDiv α β γ] : α → β → γ`a / b` computes the result of dividing `a` by `b`.
    The meaning of this notation is type-dependent.
    * For most types like `Nat`, `Int`, `Rat`, `Real`, `a / 0` is defined to be `0`.
    * For `Nat`, `a / b` rounds downwards.
    * For `Int`, `a / b` rounds downwards if `b` is positive or upwards if `b` is negative.
      It is implemented as `Int.ediv`, the unique function satisfying
      `a % b + b * (a / b) = a` and `0 ≤ a % b < natAbs b` for `b ≠ 0`.
      Other rounding conventions are available using the functions
      `Int.fdiv` (floor rounding) and `Int.tdiv` (truncation rounding).
    * For `Float`, `a / 0` follows the IEEE 754 semantics for division,
      usually resulting in `inf` or `nan`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `/` in identifiers is `div`. *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
               chi↥(Q2Presentation.Induction.XT chief K),
                (HSub.hSub.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HSub α β γ] : α → β → γ`a - b` computes the difference of `a` and `b`.
    The meaning of this notation is type-dependent.
    * For natural numbers, this operator saturates at 0: `a - b = 0` when `a ≤ b`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `-` in identifiers is `sub` (when used as a binary operator).2 *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
                    (Q2Presentation.Induction.phaseCountQ2Presentation.Induction.phaseCount {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (zeta : (Q2Presentation.Induction.cChild chief K).fst.Y → (Q2Presentation.Induction.cChild chief K).fst.Y → ZMod 2)
      (hz1 : ∀ (y : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta 1 y = 0)
      (hz2 : ∀ (y : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta y 1 = 0)
      (hzc :
        ∀ (a b c : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta a b + zeta (a * b) c = zeta b c + zeta a (b * c))
      {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) : ℕ**`n_{Γ,0}(ζ)`** (l.4377–4379): the number of lower exact-image maps
    `ρ ∈ X_Γ(C)` for which the phase cover is unobstructed, i.e. which admit a
    weak (no image condition) framed lift through `p_ζ`.  The child transport
    of P3-§4.7's `phaseChildTransport` slot is W7a's `cocycleChildEquiv`,
    absorbed into `cocycleCoverLiftHom`.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor
                        (Q2Presentation.Induction.DeltaQ2Presentation.Induction.Delta {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K))
      (Z : Q2Presentation.Induction.ZeroEdgeDescentData chief K lam hinv) (chi : ↥(Q2Presentation.Induction.XT chief K)) :
      (Q2Presentation.Induction.cChild chief K).fst.Y → (Q2Presentation.Induction.cChild chief K).fst.Y → ZMod 2**The phase class `Δ_{χ,κ}` on the C-child carrier** — `DeltaC`
    transported along the canonical collapse `B/M' ≃* C` (`cChildCollapse`);
    the cocycle P7's `phaseCount`/`phaseCoverPair` consume at
    `ζ := Delta Z chi` (design §4.7; per-cocycle discipline, no
    class-invariance asserted).  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K) ZQ2Presentation.Induction.ZeroEdgeDescentData chief K lam hinv
                          chi↥(Q2Presentation.Induction.XT chief K))
                           Q2Presentation.boundaryPackage_GammaAQ2Presentation.boundaryPackage_GammaA : Q2Presentation.BoundaryPackage Q2Presentation.GammaA**The candidate boundary package** (manuscript Prop 3.14, `prop:compatiblemarking`;
    plan Turn 4 §6).  The Stage-C data of `Γ_A`: the common tame quotient `gammaTameMap`,
    the maximal pro-`2` quotient `p : Γ_A ⟶ Π`, and the common unramified character
    `ν = gammaTameMap ≫ ν_t`, through which both factor. ) -HSub.hSub.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HSub α β γ] : α → β → γ`a - b` computes the difference of `a` and `b`.
    The meaning of this notation is type-dependent.
    * For natural numbers, this operator saturates at 0: `a - b = 0` when `a ≤ b`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `-` in identifiers is `sub` (when used as a binary operator).
                  (Q2Presentation.Induction.eCQ2Presentation.Induction.eC {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) {Γ : ProfiniteGrp.{0}}
      (B : Q2Presentation.BoundaryPackage Γ) : ℕ**The C-child count** (the `e_Γ(C')` of R4a/R4b): boundary-framed
    surjections onto the C-child pair (P3-U2's `cChild`).  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor
                      Q2Presentation.boundaryPackage_GammaAQ2Presentation.boundaryPackage_GammaA : Q2Presentation.BoundaryPackage Q2Presentation.GammaA**The candidate boundary package** (manuscript Prop 3.14, `prop:compatiblemarking`;
    plan Turn 4 §6).  The Stage-C data of `Γ_A`: the common tame quotient `gammaTameMap`,
    the maximal pro-`2` quotient `p : Γ_A ⟶ Π`, and the common unramified character
    `ν = gammaTameMap ≫ ν_t`, through which both factor. ))HSub.hSub.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HSub α β γ] : α → β → γ`a - b` computes the difference of `a` and `b`.
    The meaning of this notation is type-dependent.
    * For natural numbers, this operator saturates at 0: `a - b = 0` when `a ≤ b`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `-` in identifiers is `sub` (when used as a binary operator).)HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`.
    theorem Q2Presentation.Induction.sec7_zeroEdge_count_gammaA
      {pQ2Presentation.Induction.FramedPair :
        Q2Presentation.Induction.FramedPairQ2Presentation.Induction.FramedPair : Type 1A **framed pair** `(𝒴, F)`: a boundary-framed marked target together with a
    boundary frame for it (manuscript Definition 4.1 + `eq:beta`).  This is the index of
    Theorem 4.2: the boundary-framed surjection count `e_Γ^β` is a function of the pair.
    The induction of `sec:induction` ranges over *all* such pairs simultaneously
    ("the induction is stated globally", l.1213), ordered by `|L_Y|`. }
      (chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p :
        Q2Presentation.Induction.FirstNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor (p : Q2Presentation.Induction.FramedPair) : TypeA non-scalar chief factor of `L_Y` that is **first**: every chief factor strictly
    below it (i.e. with upper term contained in `lower`) is scalar.  This is the manuscript's
    choice `S ◁ P` at l.3616–3623 ("all chief factors below `S` are scalar and `V` is the
    first non-scalar simple factor"), which `lem:collapse` requires for the coprime step
    `[S, Ñ] = 1`. 
          pQ2Presentation.Induction.FramedPair)
      (KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor :
        Q2Presentation.Induction.KernelMinimalQ2Presentation.Induction.KernelMinimal {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.NonScalarChiefFactor p) : TypeThe manuscript's kernel choice (l.3623): `K ◁ Y`, `K ≤ P`, `KS = P`, and `K` is
    **⊆-minimal** with these properties — stated as: any `Y`-normal `K' ≤ K` still joining
    with `S` to `P` equals `K`.  (This, not leastness among all candidates, is what
    `lem:simplehead` and `lem:collapse` use: both apply it to subgroups of `K`.) 
          chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p.toNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor.toNonScalarChiefFactor {p : Q2Presentation.Induction.FramedPair}
      (self : Q2Presentation.Induction.FirstNonScalarChiefFactor p) : Q2Presentation.Induction.NonScalarChiefFactor p)
      (lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) :
        Module.DualModule.Dual.{u_4, u_5} (R : Type u_4) (M : Type u_5) [Semiring R] [AddCommMonoid M] [Module R M] : Type (max u_5 u_4)The left dual space of an R-module M is the R-module of linear maps `M → R`.  (ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2)
          (Q2Presentation.Lifting.NAddQ2Presentation.Lifting.NAdd {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) : TypeThe additive `F₂`-carrier of an elementary kernel. 
            (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian. 
              chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)))
      (hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K) :
        lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`.
          Q2Presentation.Lifting.conjInvDualsQ2Presentation.Lifting.conjInvDuals {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) :
      Submodule (ZMod 2) (Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E))The conjugation-invariant duals `X = (R^∨)^Y = (R^∨)^C` of an
    elementary kernel (consumer spelling of the manuscript's `𝒳_R`,
    §7 l.3720–3723). 
            (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian. 
              chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor))
      (_hnelam ≠ 0 : lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) Ne.{u} {α : Sort u} (a b : α) : Prop`a ≠ b`, or `Ne a b` is defined as `¬ (a = b)` or `a = b → False`,
    and asserts that `a` and `b` are not equal.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≠` in identifiers is `ne`. 0)
      (ZQ2Presentation.Induction.ZeroEdgeDescentData chief K lam hinv :
        Q2Presentation.Induction.ZeroEdgeDescentDataQ2Presentation.Induction.ZeroEdgeDescentData {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) : Type**The zero-edge descent data** (`eq:descendedclass` l.4037–4045 +
    `lem:affinelifting` l.4048–4083, as one choice bundle — the §6.5 choice
    discipline: both R4b keeps take the SAME bundle):
    
    * `D`/`hW` — the zero-edge witness (a normal edge complement, P3-U3); the
      bundle therefore implies `ZeroEdge` (`ZeroEdgeDescentData.zeroEdge`);
    * `Csec` + `hdisj`/`hsup` — the `lem:transgression` splitting coordinates
      `B/T' = V ⋊ C` (`Csec` a complement to the `V`-layer);
    * `gammaK`/`deltaK` — the normalized decomposition data `γ_κ ∈ Z¹(C,V^∨)`,
      `δ_κ ∈ Z²(C,𝔽₂)` of the descended class, with concrete cocycle laws
      (dual action `(c·φ)(v) = φ(c⁻¹·v)`);
    * `eT` — the `lem:affinelifting` class `e ∈ Z²(C,T)` (pullback of
      `B → V⋊C` along the zero section), twisted cocycle law in the
      `hzc`-ready orientation;
    * `mC` — the equivariant-lift correction functions `m_c` of the
      `κ_q⁰`-model (`eq:mquadratic`/`eq:mcoherent` l.4118–4125, stated
      against the bilinear factor set `edgeBaseFactor`).
    
    The deep pinning identity — that a normalized section cocycle of the
    descended double cover `descTarget D hW` equals
    `κ_q⁰-model + Γ_{γ_κ} + inf δ_κ` in the `Csec`-coordinates, and that `eT`
    is the actual zero-section pullback — is owned by the deferred
    transgression unit (`btChild_splits`/`zeroEdgeDescentData_nonempty`,
    design §4.7); until it lands, the coordinated R4b keep must carry that
    pinning alongside this bundle (same discipline as U7's `¬ZeroEdge`
    conditioning living on the future keep). 
          chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K))
      (ramBool : BoolBool : TypeThe Boolean values, `true` and `false`.
    
    Logically speaking, this is equivalent to `Prop` (the type of propositions). The distinction is
    public important for programming: both propositions and their proofs are erased in the code generator,
    while `Bool` corresponds to the Boolean type in most programming languages and carries precisely one
    bit of run-time information.
    )
      (_hramQ2Presentation.Quadratic.gaussType (Q2Presentation.Induction.edgeHeadForm chief K lam hinv ⋯) = ram :
        Q2Presentation.Quadratic.gaussTypeQ2Presentation.Quadratic.gaussType.{u_1} {V : Type u_1} [AddCommGroup V] [Module (ZMod 2) V]
      (q : Q2Presentation.Quadratic.QuadF2 V) : BoolThe **Gauss type** of a quadratic form: the `Bool`-valued ramification flag read
    off from its zero count — `true` (plus type / ramified) iff the count is the plus
    value `baseZeroCount true d`, else `false` (minus type / unramified).  This is the
    form's own Arf type made into the *unique* `ram` for which `# Q⁻¹(0) = baseZeroCount
    ram d` (uniqueness is `baseZeroCount_ne`; that this `ram` is *realized* is the Dickson
    zero count, `candidate_numZeros_eq_gaussType` / `q2_local_numZeros_eq_gaussType`
    in `DicksonCount.lean`).  Tying the flag to the form this way is exactly
    the de-bugging of the old *free* `ram` argument. 
            (Q2Presentation.Induction.edgeHeadFormQ2Presentation.Induction.edgeHeadForm {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) (hne : lam ≠ 0) :
      Q2Presentation.Quadratic.QuadF2 (Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K)**The descended head form `q̄_λ : QuadF2 (M/T)`** (`prop:simpleheaddet`
    at the tower, the U1-aligned carrier of the R4b Gauss data). 
              chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K) ) =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`.
          ramBool)
      (hkeepQ2Presentation.Induction.ZeroEdgeCountGammaA chief K lam hinv Z ram :
        Q2Presentation.Induction.ZeroEdgeCountGammaAQ2Presentation.Induction.ZeroEdgeCountGammaA {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K))
      (Z : Q2Presentation.Induction.ZeroEdgeDescentData chief K lam hinv) (ram : Bool) : Prop**The R4b count, candidate source** — THE zero-edge interim keep
    (manuscript `prop:zeroedge` l.4314–4369, `eq:recursionR4b` l.4342–4353
    with the candidate functional `ι_A` of `prop:chainmap`; division-free):
    
    `2^{r+1}·Z_{Γ_A,λ}(B/C) = μ·(2^d·e_{Γ_A}(C) + G⁰·Σ_{χ∈𝒳_T} (2·n_{Γ_A,0}(Δ_{χ,κ}) − e_{Γ_A}(C)))`
    
    with `μ = muT` (the `eq:mumultiplicity` value), `G⁰ = baseGaussSign ram ·
    2^{d/2}` (the base Gauss sum of `q̄_λ`, `gaussSum_eq_sign_two_pow`-shaped),
    and `Δ_{χ,κ} = Delta Z χ` the U8 phase classes of ONE fixed bundle `Z`.
    `s_Γ` enters pre-absorbed as `2·n − e` (`eq:recursionR5a` = the proven
    `sGammaZ_eq`; the ι_Γ-sign is BY DEFINITION the splitting indicator).
    
    Deliberately NOT conditioned here on anything beyond the bundle — the
    `hne`/`ZeroEdge`/`ram`-pinning conditioning lives on the exits and on the
    (future, coordinated) keep
    `axiom … (hne) (Z) (ram) (hram) (hpin) : ZeroEdgeCountGammaA …`, which
    must also carry the base-identity pinning of `Z` until the transgression
    unit lands (U8 bundle note).  Dissolution program (design §4.7): (i) P8
    realization over the P6 engine (`constrainedGauss_count` +
    `prop:phaseidentity` via `completedSquare`/`addLinear` at the descended
    class, `eq:pointwiseconstrained` per lower map, then `μ`-multiplication
    and summation); (ii) `∂`-surjectivity = the `H²(M) = 0` content (U6-grade
    dévissage at the child); (iii) `lem:affinelifting` per source (candidate:
    ledger dévissage at `V`/`T`; local: citable numerics at `tChildKernel`);
    (iv) the `signChar ↔` splitting-indicator identification (P8, per P6 §3's
    contract, `δ_κ`-absorption per P6 §7.6 — `Delta` includes `δ_κ` exactly
    once); (v) the sign pinnings P6.4–P6.8 discharging `ram`. 
          chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K) ZQ2Presentation.Induction.ZeroEdgeDescentData chief K lam hinv ramBool) :
      2 ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`.
            (HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`.Q2Presentation.Induction.rTQ2Presentation.Induction.rT {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : ℕ`r = dim 𝒳_T`.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p
                KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor +HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`.
              1)HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`. *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
          (Q2Presentation.Induction.ZcountQ2Presentation.Induction.Zcount {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) {Γ : ProfiniteGrp.{0}}
      (B : Q2Presentation.BoundaryPackage Γ) : ℕ**The unrestricted top count `Z_{Γ,λ}(B/C)`**: framed maps to `B`
    whose composite to `C` is onto ("without imposing generation in `B`",
    l.4270) and which weakly lift through `p_λ`. 
              chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)
              Q2Presentation.boundaryPackage_GammaAQ2Presentation.boundaryPackage_GammaA : Q2Presentation.BoundaryPackage Q2Presentation.GammaA**The candidate boundary package** (manuscript Prop 3.14, `prop:compatiblemarking`;
    plan Turn 4 §6).  The Stage-C data of `Γ_A`: the common tame quotient `gammaTameMap`,
    the maximal pro-`2` quotient `p : Γ_A ⟶ Π`, and the common unramified character
    `ν = gammaTameMap ≫ ν_t`, through which both factor. ) =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`.
        (Q2Presentation.Induction.muTQ2Presentation.Induction.muT {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : ℕ**The affine-lifting multiplicity VALUE**
    `μ = |B¹(V)|·|Z¹(T)| = 2^d · 2^{2·dimT + r}` (`eq:mumultiplicity`; the
    per-source realization of this count is the §4.5–4.6 lane, not U2).  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p
              KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
          (HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`.2 ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`.
                Q2Presentation.Induction.dimVQ2Presentation.Induction.dimV {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : ℕ`d = dim V` (the head `V = M/T`). 
                  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
              (Q2Presentation.Induction.eCQ2Presentation.Induction.eC {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) {Γ : ProfiniteGrp.{0}}
      (B : Q2Presentation.BoundaryPackage Γ) : ℕ**The C-child count** (the `e_Γ(C')` of R4a/R4b): boundary-framed
    surjections onto the C-child pair (P3-U2's `cChild`). 
                  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor
                  Q2Presentation.boundaryPackage_GammaAQ2Presentation.boundaryPackage_GammaA : Q2Presentation.BoundaryPackage Q2Presentation.GammaA**The candidate boundary package** (manuscript Prop 3.14, `prop:compatiblemarking`;
    plan Turn 4 §6).  The Stage-C data of `Γ_A`: the common tame quotient `gammaTameMap`,
    the maximal pro-`2` quotient `p : Γ_A ⟶ Π`, and the common unramified character
    `ν = gammaTameMap ≫ ν_t`, through which both factor. ) +HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`.
            Q2Presentation.Quadratic.baseGaussSignQ2Presentation.Quadratic.baseGaussSign (ramified : Bool) : ℤThe **base Gauss sign** (`prop:candidatezero`/`prop:localzero`): `+1` (plus type)
    in the ramified case, `-1` (minus type) in the unramified case. 
                  ramBool *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
                2 ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`.
                  (HDiv.hDiv.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HDiv α β γ] : α → β → γ`a / b` computes the result of dividing `a` by `b`.
    The meaning of this notation is type-dependent.
    * For most types like `Nat`, `Int`, `Rat`, `Real`, `a / 0` is defined to be `0`.
    * For `Nat`, `a / b` rounds downwards.
    * For `Int`, `a / b` rounds downwards if `b` is positive or upwards if `b` is negative.
      It is implemented as `Int.ediv`, the unique function satisfying
      `a % b + b * (a / b) = a` and `0 ≤ a % b < natAbs b` for `b ≠ 0`.
      Other rounding conventions are available using the functions
      `Int.fdiv` (floor rounding) and `Int.tdiv` (truncation rounding).
    * For `Float`, `a / 0` follows the IEEE 754 semantics for division,
      usually resulting in `inf` or `nan`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `/` in identifiers is `div`.Q2Presentation.Induction.dimVQ2Presentation.Induction.dimV {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : ℕ`d = dim V` (the head `V = M/T`). 
                      chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor /HDiv.hDiv.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HDiv α β γ] : α → β → γ`a / b` computes the result of dividing `a` by `b`.
    The meaning of this notation is type-dependent.
    * For most types like `Nat`, `Int`, `Rat`, `Real`, `a / 0` is defined to be `0`.
    * For `Nat`, `a / b` rounds downwards.
    * For `Int`, `a / b` rounds downwards if `b` is positive or upwards if `b` is negative.
      It is implemented as `Int.ediv`, the unique function satisfying
      `a % b + b * (a / b) = a` and `0 ≤ a % b < natAbs b` for `b ≠ 0`.
      Other rounding conventions are available using the functions
      `Int.fdiv` (floor rounding) and `Int.tdiv` (truncation rounding).
    * For `Float`, `a / 0` follows the IEEE 754 semantics for division,
      usually resulting in `inf` or `nan`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `/` in identifiers is `div`.
                    2)HDiv.hDiv.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HDiv α β γ] : α → β → γ`a / b` computes the result of dividing `a` by `b`.
    The meaning of this notation is type-dependent.
    * For most types like `Nat`, `Int`, `Rat`, `Real`, `a / 0` is defined to be `0`.
    * For `Nat`, `a / b` rounds downwards.
    * For `Int`, `a / b` rounds downwards if `b` is positive or upwards if `b` is negative.
      It is implemented as `Int.ediv`, the unique function satisfying
      `a % b + b * (a / b) = a` and `0 ≤ a % b < natAbs b` for `b ≠ 0`.
      Other rounding conventions are available using the functions
      `Int.fdiv` (floor rounding) and `Int.tdiv` (truncation rounding).
    * For `Float`, `a / 0` follows the IEEE 754 semantics for division,
      usually resulting in `inf` or `nan`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `/` in identifiers is `div`. *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
               chi↥(Q2Presentation.Induction.XT chief K),
                (HSub.hSub.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HSub α β γ] : α → β → γ`a - b` computes the difference of `a` and `b`.
    The meaning of this notation is type-dependent.
    * For natural numbers, this operator saturates at 0: `a - b = 0` when `a ≤ b`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `-` in identifiers is `sub` (when used as a binary operator).2 *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
                    (Q2Presentation.Induction.phaseCountQ2Presentation.Induction.phaseCount {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (zeta : (Q2Presentation.Induction.cChild chief K).fst.Y → (Q2Presentation.Induction.cChild chief K).fst.Y → ZMod 2)
      (hz1 : ∀ (y : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta 1 y = 0)
      (hz2 : ∀ (y : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta y 1 = 0)
      (hzc :
        ∀ (a b c : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta a b + zeta (a * b) c = zeta b c + zeta a (b * c))
      {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) : ℕ**`n_{Γ,0}(ζ)`** (l.4377–4379): the number of lower exact-image maps
    `ρ ∈ X_Γ(C)` for which the phase cover is unobstructed, i.e. which admit a
    weak (no image condition) framed lift through `p_ζ`.  The child transport
    of P3-§4.7's `phaseChildTransport` slot is W7a's `cocycleChildEquiv`,
    absorbed into `cocycleCoverLiftHom`. 
                        chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor
                        (Q2Presentation.Induction.DeltaQ2Presentation.Induction.Delta {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K))
      (Z : Q2Presentation.Induction.ZeroEdgeDescentData chief K lam hinv) (chi : ↥(Q2Presentation.Induction.XT chief K)) :
      (Q2Presentation.Induction.cChild chief K).fst.Y → (Q2Presentation.Induction.cChild chief K).fst.Y → ZMod 2**The phase class `Δ_{χ,κ}` on the C-child carrier** — `DeltaC`
    transported along the canonical collapse `B/M' ≃* C` (`cChildCollapse`);
    the cocycle P7's `phaseCount`/`phaseCoverPair` consume at
    `ζ := Delta Z chi` (design §4.7; per-cocycle discipline, no
    class-invariance asserted). 
                          chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K) ZQ2Presentation.Induction.ZeroEdgeDescentData chief K lam hinv
                          chi↥(Q2Presentation.Induction.XT chief K))
                          
                        Q2Presentation.boundaryPackage_GammaAQ2Presentation.boundaryPackage_GammaA : Q2Presentation.BoundaryPackage Q2Presentation.GammaA**The candidate boundary package** (manuscript Prop 3.14, `prop:compatiblemarking`;
    plan Turn 4 §6).  The Stage-C data of `Γ_A`: the common tame quotient `gammaTameMap`,
    the maximal pro-`2` quotient `p : Γ_A ⟶ Π`, and the common unramified character
    `ν = gammaTameMap ≫ ν_t`, through which both factor. ) -HSub.hSub.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HSub α β γ] : α → β → γ`a - b` computes the difference of `a` and `b`.
    The meaning of this notation is type-dependent.
    * For natural numbers, this operator saturates at 0: `a - b = 0` when `a ≤ b`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `-` in identifiers is `sub` (when used as a binary operator).
                  (Q2Presentation.Induction.eCQ2Presentation.Induction.eC {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) {Γ : ProfiniteGrp.{0}}
      (B : Q2Presentation.BoundaryPackage Γ) : ℕ**The C-child count** (the `e_Γ(C')` of R4a/R4b): boundary-framed
    surjections onto the C-child pair (P3-U2's `cChild`). 
                      chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor
                      Q2Presentation.boundaryPackage_GammaAQ2Presentation.boundaryPackage_GammaA : Q2Presentation.BoundaryPackage Q2Presentation.GammaA**The candidate boundary package** (manuscript Prop 3.14, `prop:compatiblemarking`;
    plan Turn 4 §6).  The Stage-C data of `Γ_A`: the common tame quotient `gammaTameMap`,
    the maximal pro-`2` quotient `p : Γ_A ⟶ Π`, and the common unramified character
    `ν = gammaTameMap ≫ ν_t`, through which both factor. ))HSub.hSub.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HSub α β γ] : α → β → γ`a - b` computes the difference of `a` and `b`.
    The meaning of this notation is type-dependent.
    * For natural numbers, this operator saturates at 0: `a - b = 0` when `a ≤ b`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `-` in identifiers is `sub` (when used as a binary operator).)HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`.
    **R4b, candidate source** (`prop:zeroedge`, division-free ℤ-spelling):
    on the zero-edge branch, `2^{r+1}·Z_{Γ_A,λ}(B/C)` equals the
    `μ·(2^d·e_C + G⁰·Σ_χ(2·n − e_C))` closed form.  The branch hypotheses pin
    the R4b case (design §4.7 exit signature): `_hne` mirrors U7's spelling
    (the bundle already carries `Z.hne`; consumed by P8's `Classical.byCases`
    split via `Z.zeroEdge`), and `_hram` is the P6 pinning slot tying the
    `ram`-flag to the target-side head form (`gaussType q̄_λ = ram`,
    discharged by P6.4–P6.8 through `candidate_numZeros_eq_gaussType`-grade
    theorems at `[Nontrivial V]` — supplied by `edgeHead_nontrivial`).  The
    count clause enters as an explicit HYPOTHESIS (`ZeroEdgeCountGammaA`). 
  • theoremdefined in Q2Presentation/Induction/ZeroEdgeCount.lean
    complete
    theorem Q2Presentation.Induction.sec7_zeroEdge_count_gq2
      {pQ2Presentation.Induction.FramedPair : Q2Presentation.Induction.FramedPairQ2Presentation.Induction.FramedPair : Type 1A **framed pair** `(𝒴, F)`: a boundary-framed marked target together with a
    boundary frame for it (manuscript Definition 4.1 + `eq:beta`).  This is the index of
    Theorem 4.2: the boundary-framed surjection count `e_Γ^β` is a function of the pair.
    The induction of `sec:induction` ranges over *all* such pairs simultaneously
    ("the induction is stated globally", l.1213), ordered by `|L_Y|`. }
      (chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p : Q2Presentation.Induction.FirstNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor (p : Q2Presentation.Induction.FramedPair) : TypeA non-scalar chief factor of `L_Y` that is **first**: every chief factor strictly
    below it (i.e. with upper term contained in `lower`) is scalar.  This is the manuscript's
    choice `S ◁ P` at l.3616–3623 ("all chief factors below `S` are scalar and `V` is the
    first non-scalar simple factor"), which `lem:collapse` requires for the coprime step
    `[S, Ñ] = 1`.  pQ2Presentation.Induction.FramedPair)
      (KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor :
        Q2Presentation.Induction.KernelMinimalQ2Presentation.Induction.KernelMinimal {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.NonScalarChiefFactor p) : TypeThe manuscript's kernel choice (l.3623): `K ◁ Y`, `K ≤ P`, `KS = P`, and `K` is
    **⊆-minimal** with these properties — stated as: any `Y`-normal `K' ≤ K` still joining
    with `S` to `P` equals `K`.  (This, not leastness among all candidates, is what
    `lem:simplehead` and `lem:collapse` use: both apply it to subgroups of `K`.)  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p.toNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor.toNonScalarChiefFactor {p : Q2Presentation.Induction.FramedPair}
      (self : Q2Presentation.Induction.FirstNonScalarChiefFactor p) : Q2Presentation.Induction.NonScalarChiefFactor p)
      (lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) :
        Module.DualModule.Dual.{u_4, u_5} (R : Type u_4) (M : Type u_5) [Semiring R] [AddCommMonoid M] [Module R M] : Type (max u_5 u_4)The left dual space of an R-module M is the R-module of linear maps `M → R`.  (ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2)
          (Q2Presentation.Lifting.NAddQ2Presentation.Lifting.NAdd {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) : TypeThe additive `F₂`-carrier of an elementary kernel. 
            (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)))
      (hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K) :
        lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`.
          Q2Presentation.Lifting.conjInvDualsQ2Presentation.Lifting.conjInvDuals {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) :
      Submodule (ZMod 2) (Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E))The conjugation-invariant duals `X = (R^∨)^Y = (R^∨)^C` of an
    elementary kernel (consumer spelling of the manuscript's `𝒳_R`,
    §7 l.3720–3723). 
            (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor))
      (_hnelam ≠ 0 : lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) Ne.{u} {α : Sort u} (a b : α) : Prop`a ≠ b`, or `Ne a b` is defined as `¬ (a = b)` or `a = b → False`,
    and asserts that `a` and `b` are not equal.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≠` in identifiers is `ne`. 0)
      (ZQ2Presentation.Induction.ZeroEdgeDescentData chief K lam hinv : Q2Presentation.Induction.ZeroEdgeDescentDataQ2Presentation.Induction.ZeroEdgeDescentData {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) : Type**The zero-edge descent data** (`eq:descendedclass` l.4037–4045 +
    `lem:affinelifting` l.4048–4083, as one choice bundle — the §6.5 choice
    discipline: both R4b keeps take the SAME bundle):
    
    * `D`/`hW` — the zero-edge witness (a normal edge complement, P3-U3); the
      bundle therefore implies `ZeroEdge` (`ZeroEdgeDescentData.zeroEdge`);
    * `Csec` + `hdisj`/`hsup` — the `lem:transgression` splitting coordinates
      `B/T' = V ⋊ C` (`Csec` a complement to the `V`-layer);
    * `gammaK`/`deltaK` — the normalized decomposition data `γ_κ ∈ Z¹(C,V^∨)`,
      `δ_κ ∈ Z²(C,𝔽₂)` of the descended class, with concrete cocycle laws
      (dual action `(c·φ)(v) = φ(c⁻¹·v)`);
    * `eT` — the `lem:affinelifting` class `e ∈ Z²(C,T)` (pullback of
      `B → V⋊C` along the zero section), twisted cocycle law in the
      `hzc`-ready orientation;
    * `mC` — the equivariant-lift correction functions `m_c` of the
      `κ_q⁰`-model (`eq:mquadratic`/`eq:mcoherent` l.4118–4125, stated
      against the bilinear factor set `edgeBaseFactor`).
    
    The deep pinning identity — that a normalized section cocycle of the
    descended double cover `descTarget D hW` equals
    `κ_q⁰-model + Γ_{γ_κ} + inf δ_κ` in the `Csec`-coordinates, and that `eT`
    is the actual zero-section pullback — is owned by the deferred
    transgression unit (`btChild_splits`/`zeroEdgeDescentData_nonempty`,
    design §4.7); until it lands, the coordinated R4b keep must carry that
    pinning alongside this bundle (same discipline as U7's `¬ZeroEdge`
    conditioning living on the future keep).  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K))
      (ramBool : BoolBool : TypeThe Boolean values, `true` and `false`.
    
    Logically speaking, this is equivalent to `Prop` (the type of propositions). The distinction is
    public important for programming: both propositions and their proofs are erased in the code generator,
    while `Bool` corresponds to the Boolean type in most programming languages and carries precisely one
    bit of run-time information.
    )
      (_hramQ2Presentation.Quadratic.gaussType (Q2Presentation.Induction.edgeHeadForm chief K lam hinv ⋯) = ram :
        Q2Presentation.Quadratic.gaussTypeQ2Presentation.Quadratic.gaussType.{u_1} {V : Type u_1} [AddCommGroup V] [Module (ZMod 2) V]
      (q : Q2Presentation.Quadratic.QuadF2 V) : BoolThe **Gauss type** of a quadratic form: the `Bool`-valued ramification flag read
    off from its zero count — `true` (plus type / ramified) iff the count is the plus
    value `baseZeroCount true d`, else `false` (minus type / unramified).  This is the
    form's own Arf type made into the *unique* `ram` for which `# Q⁻¹(0) = baseZeroCount
    ram d` (uniqueness is `baseZeroCount_ne`; that this `ram` is *realized* is the Dickson
    zero count, `candidate_numZeros_eq_gaussType` / `q2_local_numZeros_eq_gaussType`
    in `DicksonCount.lean`).  Tying the flag to the form this way is exactly
    the de-bugging of the old *free* `ram` argument. 
            (Q2Presentation.Induction.edgeHeadFormQ2Presentation.Induction.edgeHeadForm {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) (hne : lam ≠ 0) :
      Q2Presentation.Quadratic.QuadF2 (Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K)**The descended head form `q̄_λ : QuadF2 (M/T)`** (`prop:simpleheaddet`
    at the tower, the U1-aligned carrier of the R4b Gauss data).  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K) ) =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`.
          ramBool)
      (hkeepQ2Presentation.Induction.ZeroEdgeCountGQ2 chief K lam hinv Z ram :
        Q2Presentation.Induction.ZeroEdgeCountGQ2Q2Presentation.Induction.ZeroEdgeCountGQ2 {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K))
      (Z : Q2Presentation.Induction.ZeroEdgeDescentData chief K lam hinv) (ram : Bool) : Prop**The R4b count, local source** (manuscript `prop:zeroedge` mirror,
    with the local functional `ι_F = inv_{ℚ₂}`; same fixed bundle `Z` as the
    candidate clause — design §6.5).  Same statement shape, provenance and
    dissolution program as `ZeroEdgeCountGammaA`.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K) ZQ2Presentation.Induction.ZeroEdgeDescentData chief K lam hinv ramBool) :
      2 ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. (HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`.Q2Presentation.Induction.rTQ2Presentation.Induction.rT {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : ℕ`r = dim 𝒳_T`.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor +HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`. 1)HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`. *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
          (Q2Presentation.Induction.ZcountQ2Presentation.Induction.Zcount {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) {Γ : ProfiniteGrp.{0}}
      (B : Q2Presentation.BoundaryPackage Γ) : ℕ**The unrestricted top count `Z_{Γ,λ}(B/C)`**: framed maps to `B`
    whose composite to `C` is onto ("without imposing generation in `B`",
    l.4270) and which weakly lift through `p_λ`.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)
              Q2Presentation.boundaryPackage_GQ2Q2Presentation.boundaryPackage_GQ2 : Q2Presentation.BoundaryPackage Q2Presentation.GQ2Profinite**The local boundary package** `boundaryPackage_GQ2 : BoundaryPackage G_{ℚ₂}`
    (manuscript Prop 3.14 `prop:compatiblemarking` for `Γ = G_{ℚ₂}`; plan Turn 4 §6),
    the `G_{ℚ₂}`-side instance of the uniform Stage-C boundary datum.
    
    * `tameMap`/`tame_surj`/`tame_nu` — the local tame quotient `G_{ℚ₂} ↠ T_A` with
      unramified marking `ν_loc`, from the axiom `gq2_tame_quotient` (Prop 3.2 + the
      local half of Prop `compatiblemarking`);
    * `pro2Map`/`pro2_surj`/`pro2_nu` — the local maximal pro-`2` quotient
      `G_{ℚ₂} ↠ Π` with the *same* unramified marking `ν_loc`, proved from the fully
      marked Labute comparison `labute_GQ2_maxPro2_marked` (`pro2Map_loc`,
      `pro2Map_loc_surjective`, `pro2Map_loc_nu`);
    * `nu := ν_loc` — the common unramified character through which both factor. ) =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`.
        (Q2Presentation.Induction.muTQ2Presentation.Induction.muT {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : ℕ**The affine-lifting multiplicity VALUE**
    `μ = |B¹(V)|·|Z¹(T)| = 2^d · 2^{2·dimT + r}` (`eq:mumultiplicity`; the
    per-source realization of this count is the §4.5–4.6 lane, not U2).  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
          (HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`.2 ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. Q2Presentation.Induction.dimVQ2Presentation.Induction.dimV {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : ℕ`d = dim V` (the head `V = M/T`).  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
              (Q2Presentation.Induction.eCQ2Presentation.Induction.eC {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) {Γ : ProfiniteGrp.{0}}
      (B : Q2Presentation.BoundaryPackage Γ) : ℕ**The C-child count** (the `e_Γ(C')` of R4a/R4b): boundary-framed
    surjections onto the C-child pair (P3-U2's `cChild`).  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor
                  Q2Presentation.boundaryPackage_GQ2Q2Presentation.boundaryPackage_GQ2 : Q2Presentation.BoundaryPackage Q2Presentation.GQ2Profinite**The local boundary package** `boundaryPackage_GQ2 : BoundaryPackage G_{ℚ₂}`
    (manuscript Prop 3.14 `prop:compatiblemarking` for `Γ = G_{ℚ₂}`; plan Turn 4 §6),
    the `G_{ℚ₂}`-side instance of the uniform Stage-C boundary datum.
    
    * `tameMap`/`tame_surj`/`tame_nu` — the local tame quotient `G_{ℚ₂} ↠ T_A` with
      unramified marking `ν_loc`, from the axiom `gq2_tame_quotient` (Prop 3.2 + the
      local half of Prop `compatiblemarking`);
    * `pro2Map`/`pro2_surj`/`pro2_nu` — the local maximal pro-`2` quotient
      `G_{ℚ₂} ↠ Π` with the *same* unramified marking `ν_loc`, proved from the fully
      marked Labute comparison `labute_GQ2_maxPro2_marked` (`pro2Map_loc`,
      `pro2Map_loc_surjective`, `pro2Map_loc_nu`);
    * `nu := ν_loc` — the common unramified character through which both factor. ) +HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`.
            Q2Presentation.Quadratic.baseGaussSignQ2Presentation.Quadratic.baseGaussSign (ramified : Bool) : ℤThe **base Gauss sign** (`prop:candidatezero`/`prop:localzero`): `+1` (plus type)
    in the ramified case, `-1` (minus type) in the unramified case.  ramBool *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
                2 ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. (HDiv.hDiv.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HDiv α β γ] : α → β → γ`a / b` computes the result of dividing `a` by `b`.
    The meaning of this notation is type-dependent.
    * For most types like `Nat`, `Int`, `Rat`, `Real`, `a / 0` is defined to be `0`.
    * For `Nat`, `a / b` rounds downwards.
    * For `Int`, `a / b` rounds downwards if `b` is positive or upwards if `b` is negative.
      It is implemented as `Int.ediv`, the unique function satisfying
      `a % b + b * (a / b) = a` and `0 ≤ a % b < natAbs b` for `b ≠ 0`.
      Other rounding conventions are available using the functions
      `Int.fdiv` (floor rounding) and `Int.tdiv` (truncation rounding).
    * For `Float`, `a / 0` follows the IEEE 754 semantics for division,
      usually resulting in `inf` or `nan`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `/` in identifiers is `div`.Q2Presentation.Induction.dimVQ2Presentation.Induction.dimV {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : ℕ`d = dim V` (the head `V = M/T`).  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor /HDiv.hDiv.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HDiv α β γ] : α → β → γ`a / b` computes the result of dividing `a` by `b`.
    The meaning of this notation is type-dependent.
    * For most types like `Nat`, `Int`, `Rat`, `Real`, `a / 0` is defined to be `0`.
    * For `Nat`, `a / b` rounds downwards.
    * For `Int`, `a / b` rounds downwards if `b` is positive or upwards if `b` is negative.
      It is implemented as `Int.ediv`, the unique function satisfying
      `a % b + b * (a / b) = a` and `0 ≤ a % b < natAbs b` for `b ≠ 0`.
      Other rounding conventions are available using the functions
      `Int.fdiv` (floor rounding) and `Int.tdiv` (truncation rounding).
    * For `Float`, `a / 0` follows the IEEE 754 semantics for division,
      usually resulting in `inf` or `nan`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `/` in identifiers is `div`. 2)HDiv.hDiv.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HDiv α β γ] : α → β → γ`a / b` computes the result of dividing `a` by `b`.
    The meaning of this notation is type-dependent.
    * For most types like `Nat`, `Int`, `Rat`, `Real`, `a / 0` is defined to be `0`.
    * For `Nat`, `a / b` rounds downwards.
    * For `Int`, `a / b` rounds downwards if `b` is positive or upwards if `b` is negative.
      It is implemented as `Int.ediv`, the unique function satisfying
      `a % b + b * (a / b) = a` and `0 ≤ a % b < natAbs b` for `b ≠ 0`.
      Other rounding conventions are available using the functions
      `Int.fdiv` (floor rounding) and `Int.tdiv` (truncation rounding).
    * For `Float`, `a / 0` follows the IEEE 754 semantics for division,
      usually resulting in `inf` or `nan`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `/` in identifiers is `div`. *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
               chi↥(Q2Presentation.Induction.XT chief K),
                (HSub.hSub.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HSub α β γ] : α → β → γ`a - b` computes the difference of `a` and `b`.
    The meaning of this notation is type-dependent.
    * For natural numbers, this operator saturates at 0: `a - b = 0` when `a ≤ b`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `-` in identifiers is `sub` (when used as a binary operator).2 *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
                    (Q2Presentation.Induction.phaseCountQ2Presentation.Induction.phaseCount {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (zeta : (Q2Presentation.Induction.cChild chief K).fst.Y → (Q2Presentation.Induction.cChild chief K).fst.Y → ZMod 2)
      (hz1 : ∀ (y : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta 1 y = 0)
      (hz2 : ∀ (y : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta y 1 = 0)
      (hzc :
        ∀ (a b c : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta a b + zeta (a * b) c = zeta b c + zeta a (b * c))
      {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) : ℕ**`n_{Γ,0}(ζ)`** (l.4377–4379): the number of lower exact-image maps
    `ρ ∈ X_Γ(C)` for which the phase cover is unobstructed, i.e. which admit a
    weak (no image condition) framed lift through `p_ζ`.  The child transport
    of P3-§4.7's `phaseChildTransport` slot is W7a's `cocycleChildEquiv`,
    absorbed into `cocycleCoverLiftHom`.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor
                        (Q2Presentation.Induction.DeltaQ2Presentation.Induction.Delta {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K))
      (Z : Q2Presentation.Induction.ZeroEdgeDescentData chief K lam hinv) (chi : ↥(Q2Presentation.Induction.XT chief K)) :
      (Q2Presentation.Induction.cChild chief K).fst.Y → (Q2Presentation.Induction.cChild chief K).fst.Y → ZMod 2**The phase class `Δ_{χ,κ}` on the C-child carrier** — `DeltaC`
    transported along the canonical collapse `B/M' ≃* C` (`cChildCollapse`);
    the cocycle P7's `phaseCount`/`phaseCoverPair` consume at
    `ζ := Delta Z chi` (design §4.7; per-cocycle discipline, no
    class-invariance asserted).  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K) ZQ2Presentation.Induction.ZeroEdgeDescentData chief K lam hinv
                          chi↥(Q2Presentation.Induction.XT chief K))
                           Q2Presentation.boundaryPackage_GQ2Q2Presentation.boundaryPackage_GQ2 : Q2Presentation.BoundaryPackage Q2Presentation.GQ2Profinite**The local boundary package** `boundaryPackage_GQ2 : BoundaryPackage G_{ℚ₂}`
    (manuscript Prop 3.14 `prop:compatiblemarking` for `Γ = G_{ℚ₂}`; plan Turn 4 §6),
    the `G_{ℚ₂}`-side instance of the uniform Stage-C boundary datum.
    
    * `tameMap`/`tame_surj`/`tame_nu` — the local tame quotient `G_{ℚ₂} ↠ T_A` with
      unramified marking `ν_loc`, from the axiom `gq2_tame_quotient` (Prop 3.2 + the
      local half of Prop `compatiblemarking`);
    * `pro2Map`/`pro2_surj`/`pro2_nu` — the local maximal pro-`2` quotient
      `G_{ℚ₂} ↠ Π` with the *same* unramified marking `ν_loc`, proved from the fully
      marked Labute comparison `labute_GQ2_maxPro2_marked` (`pro2Map_loc`,
      `pro2Map_loc_surjective`, `pro2Map_loc_nu`);
    * `nu := ν_loc` — the common unramified character through which both factor. ) -HSub.hSub.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HSub α β γ] : α → β → γ`a - b` computes the difference of `a` and `b`.
    The meaning of this notation is type-dependent.
    * For natural numbers, this operator saturates at 0: `a - b = 0` when `a ≤ b`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `-` in identifiers is `sub` (when used as a binary operator).
                  (Q2Presentation.Induction.eCQ2Presentation.Induction.eC {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) {Γ : ProfiniteGrp.{0}}
      (B : Q2Presentation.BoundaryPackage Γ) : ℕ**The C-child count** (the `e_Γ(C')` of R4a/R4b): boundary-framed
    surjections onto the C-child pair (P3-U2's `cChild`).  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor
                      Q2Presentation.boundaryPackage_GQ2Q2Presentation.boundaryPackage_GQ2 : Q2Presentation.BoundaryPackage Q2Presentation.GQ2Profinite**The local boundary package** `boundaryPackage_GQ2 : BoundaryPackage G_{ℚ₂}`
    (manuscript Prop 3.14 `prop:compatiblemarking` for `Γ = G_{ℚ₂}`; plan Turn 4 §6),
    the `G_{ℚ₂}`-side instance of the uniform Stage-C boundary datum.
    
    * `tameMap`/`tame_surj`/`tame_nu` — the local tame quotient `G_{ℚ₂} ↠ T_A` with
      unramified marking `ν_loc`, from the axiom `gq2_tame_quotient` (Prop 3.2 + the
      local half of Prop `compatiblemarking`);
    * `pro2Map`/`pro2_surj`/`pro2_nu` — the local maximal pro-`2` quotient
      `G_{ℚ₂} ↠ Π` with the *same* unramified marking `ν_loc`, proved from the fully
      marked Labute comparison `labute_GQ2_maxPro2_marked` (`pro2Map_loc`,
      `pro2Map_loc_surjective`, `pro2Map_loc_nu`);
    * `nu := ν_loc` — the common unramified character through which both factor. ))HSub.hSub.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HSub α β γ] : α → β → γ`a - b` computes the difference of `a` and `b`.
    The meaning of this notation is type-dependent.
    * For natural numbers, this operator saturates at 0: `a - b = 0` when `a ≤ b`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `-` in identifiers is `sub` (when used as a binary operator).)HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`.
    theorem Q2Presentation.Induction.sec7_zeroEdge_count_gq2
      {pQ2Presentation.Induction.FramedPair :
        Q2Presentation.Induction.FramedPairQ2Presentation.Induction.FramedPair : Type 1A **framed pair** `(𝒴, F)`: a boundary-framed marked target together with a
    boundary frame for it (manuscript Definition 4.1 + `eq:beta`).  This is the index of
    Theorem 4.2: the boundary-framed surjection count `e_Γ^β` is a function of the pair.
    The induction of `sec:induction` ranges over *all* such pairs simultaneously
    ("the induction is stated globally", l.1213), ordered by `|L_Y|`. }
      (chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p :
        Q2Presentation.Induction.FirstNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor (p : Q2Presentation.Induction.FramedPair) : TypeA non-scalar chief factor of `L_Y` that is **first**: every chief factor strictly
    below it (i.e. with upper term contained in `lower`) is scalar.  This is the manuscript's
    choice `S ◁ P` at l.3616–3623 ("all chief factors below `S` are scalar and `V` is the
    first non-scalar simple factor"), which `lem:collapse` requires for the coprime step
    `[S, Ñ] = 1`. 
          pQ2Presentation.Induction.FramedPair)
      (KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor :
        Q2Presentation.Induction.KernelMinimalQ2Presentation.Induction.KernelMinimal {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.NonScalarChiefFactor p) : TypeThe manuscript's kernel choice (l.3623): `K ◁ Y`, `K ≤ P`, `KS = P`, and `K` is
    **⊆-minimal** with these properties — stated as: any `Y`-normal `K' ≤ K` still joining
    with `S` to `P` equals `K`.  (This, not leastness among all candidates, is what
    `lem:simplehead` and `lem:collapse` use: both apply it to subgroups of `K`.) 
          chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p.toNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor.toNonScalarChiefFactor {p : Q2Presentation.Induction.FramedPair}
      (self : Q2Presentation.Induction.FirstNonScalarChiefFactor p) : Q2Presentation.Induction.NonScalarChiefFactor p)
      (lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) :
        Module.DualModule.Dual.{u_4, u_5} (R : Type u_4) (M : Type u_5) [Semiring R] [AddCommMonoid M] [Module R M] : Type (max u_5 u_4)The left dual space of an R-module M is the R-module of linear maps `M → R`.  (ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2)
          (Q2Presentation.Lifting.NAddQ2Presentation.Lifting.NAdd {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) : TypeThe additive `F₂`-carrier of an elementary kernel. 
            (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian. 
              chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)))
      (hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K) :
        lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`.
          Q2Presentation.Lifting.conjInvDualsQ2Presentation.Lifting.conjInvDuals {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) :
      Submodule (ZMod 2) (Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E))The conjugation-invariant duals `X = (R^∨)^Y = (R^∨)^C` of an
    elementary kernel (consumer spelling of the manuscript's `𝒳_R`,
    §7 l.3720–3723). 
            (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian. 
              chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor))
      (_hnelam ≠ 0 : lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) Ne.{u} {α : Sort u} (a b : α) : Prop`a ≠ b`, or `Ne a b` is defined as `¬ (a = b)` or `a = b → False`,
    and asserts that `a` and `b` are not equal.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≠` in identifiers is `ne`. 0)
      (ZQ2Presentation.Induction.ZeroEdgeDescentData chief K lam hinv :
        Q2Presentation.Induction.ZeroEdgeDescentDataQ2Presentation.Induction.ZeroEdgeDescentData {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) : Type**The zero-edge descent data** (`eq:descendedclass` l.4037–4045 +
    `lem:affinelifting` l.4048–4083, as one choice bundle — the §6.5 choice
    discipline: both R4b keeps take the SAME bundle):
    
    * `D`/`hW` — the zero-edge witness (a normal edge complement, P3-U3); the
      bundle therefore implies `ZeroEdge` (`ZeroEdgeDescentData.zeroEdge`);
    * `Csec` + `hdisj`/`hsup` — the `lem:transgression` splitting coordinates
      `B/T' = V ⋊ C` (`Csec` a complement to the `V`-layer);
    * `gammaK`/`deltaK` — the normalized decomposition data `γ_κ ∈ Z¹(C,V^∨)`,
      `δ_κ ∈ Z²(C,𝔽₂)` of the descended class, with concrete cocycle laws
      (dual action `(c·φ)(v) = φ(c⁻¹·v)`);
    * `eT` — the `lem:affinelifting` class `e ∈ Z²(C,T)` (pullback of
      `B → V⋊C` along the zero section), twisted cocycle law in the
      `hzc`-ready orientation;
    * `mC` — the equivariant-lift correction functions `m_c` of the
      `κ_q⁰`-model (`eq:mquadratic`/`eq:mcoherent` l.4118–4125, stated
      against the bilinear factor set `edgeBaseFactor`).
    
    The deep pinning identity — that a normalized section cocycle of the
    descended double cover `descTarget D hW` equals
    `κ_q⁰-model + Γ_{γ_κ} + inf δ_κ` in the `Csec`-coordinates, and that `eT`
    is the actual zero-section pullback — is owned by the deferred
    transgression unit (`btChild_splits`/`zeroEdgeDescentData_nonempty`,
    design §4.7); until it lands, the coordinated R4b keep must carry that
    pinning alongside this bundle (same discipline as U7's `¬ZeroEdge`
    conditioning living on the future keep). 
          chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K))
      (ramBool : BoolBool : TypeThe Boolean values, `true` and `false`.
    
    Logically speaking, this is equivalent to `Prop` (the type of propositions). The distinction is
    public important for programming: both propositions and their proofs are erased in the code generator,
    while `Bool` corresponds to the Boolean type in most programming languages and carries precisely one
    bit of run-time information.
    )
      (_hramQ2Presentation.Quadratic.gaussType (Q2Presentation.Induction.edgeHeadForm chief K lam hinv ⋯) = ram :
        Q2Presentation.Quadratic.gaussTypeQ2Presentation.Quadratic.gaussType.{u_1} {V : Type u_1} [AddCommGroup V] [Module (ZMod 2) V]
      (q : Q2Presentation.Quadratic.QuadF2 V) : BoolThe **Gauss type** of a quadratic form: the `Bool`-valued ramification flag read
    off from its zero count — `true` (plus type / ramified) iff the count is the plus
    value `baseZeroCount true d`, else `false` (minus type / unramified).  This is the
    form's own Arf type made into the *unique* `ram` for which `# Q⁻¹(0) = baseZeroCount
    ram d` (uniqueness is `baseZeroCount_ne`; that this `ram` is *realized* is the Dickson
    zero count, `candidate_numZeros_eq_gaussType` / `q2_local_numZeros_eq_gaussType`
    in `DicksonCount.lean`).  Tying the flag to the form this way is exactly
    the de-bugging of the old *free* `ram` argument. 
            (Q2Presentation.Induction.edgeHeadFormQ2Presentation.Induction.edgeHeadForm {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) (hne : lam ≠ 0) :
      Q2Presentation.Quadratic.QuadF2 (Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K)**The descended head form `q̄_λ : QuadF2 (M/T)`** (`prop:simpleheaddet`
    at the tower, the U1-aligned carrier of the R4b Gauss data). 
              chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K) ) =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`.
          ramBool)
      (hkeepQ2Presentation.Induction.ZeroEdgeCountGQ2 chief K lam hinv Z ram :
        Q2Presentation.Induction.ZeroEdgeCountGQ2Q2Presentation.Induction.ZeroEdgeCountGQ2 {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K))
      (Z : Q2Presentation.Induction.ZeroEdgeDescentData chief K lam hinv) (ram : Bool) : Prop**The R4b count, local source** (manuscript `prop:zeroedge` mirror,
    with the local functional `ι_F = inv_{ℚ₂}`; same fixed bundle `Z` as the
    candidate clause — design §6.5).  Same statement shape, provenance and
    dissolution program as `ZeroEdgeCountGammaA`. 
          chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K) ZQ2Presentation.Induction.ZeroEdgeDescentData chief K lam hinv ramBool) :
      2 ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`.
            (HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`.Q2Presentation.Induction.rTQ2Presentation.Induction.rT {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : ℕ`r = dim 𝒳_T`.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p
                KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor +HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`.
              1)HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`. *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
          (Q2Presentation.Induction.ZcountQ2Presentation.Induction.Zcount {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) {Γ : ProfiniteGrp.{0}}
      (B : Q2Presentation.BoundaryPackage Γ) : ℕ**The unrestricted top count `Z_{Γ,λ}(B/C)`**: framed maps to `B`
    whose composite to `C` is onto ("without imposing generation in `B`",
    l.4270) and which weakly lift through `p_λ`. 
              chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)
              Q2Presentation.boundaryPackage_GQ2Q2Presentation.boundaryPackage_GQ2 : Q2Presentation.BoundaryPackage Q2Presentation.GQ2Profinite**The local boundary package** `boundaryPackage_GQ2 : BoundaryPackage G_{ℚ₂}`
    (manuscript Prop 3.14 `prop:compatiblemarking` for `Γ = G_{ℚ₂}`; plan Turn 4 §6),
    the `G_{ℚ₂}`-side instance of the uniform Stage-C boundary datum.
    
    * `tameMap`/`tame_surj`/`tame_nu` — the local tame quotient `G_{ℚ₂} ↠ T_A` with
      unramified marking `ν_loc`, from the axiom `gq2_tame_quotient` (Prop 3.2 + the
      local half of Prop `compatiblemarking`);
    * `pro2Map`/`pro2_surj`/`pro2_nu` — the local maximal pro-`2` quotient
      `G_{ℚ₂} ↠ Π` with the *same* unramified marking `ν_loc`, proved from the fully
      marked Labute comparison `labute_GQ2_maxPro2_marked` (`pro2Map_loc`,
      `pro2Map_loc_surjective`, `pro2Map_loc_nu`);
    * `nu := ν_loc` — the common unramified character through which both factor. ) =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`.
        (Q2Presentation.Induction.muTQ2Presentation.Induction.muT {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : ℕ**The affine-lifting multiplicity VALUE**
    `μ = |B¹(V)|·|Z¹(T)| = 2^d · 2^{2·dimT + r}` (`eq:mumultiplicity`; the
    per-source realization of this count is the §4.5–4.6 lane, not U2).  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p
              KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
          (HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`.2 ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`.
                Q2Presentation.Induction.dimVQ2Presentation.Induction.dimV {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : ℕ`d = dim V` (the head `V = M/T`). 
                  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
              (Q2Presentation.Induction.eCQ2Presentation.Induction.eC {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) {Γ : ProfiniteGrp.{0}}
      (B : Q2Presentation.BoundaryPackage Γ) : ℕ**The C-child count** (the `e_Γ(C')` of R4a/R4b): boundary-framed
    surjections onto the C-child pair (P3-U2's `cChild`). 
                  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor
                  Q2Presentation.boundaryPackage_GQ2Q2Presentation.boundaryPackage_GQ2 : Q2Presentation.BoundaryPackage Q2Presentation.GQ2Profinite**The local boundary package** `boundaryPackage_GQ2 : BoundaryPackage G_{ℚ₂}`
    (manuscript Prop 3.14 `prop:compatiblemarking` for `Γ = G_{ℚ₂}`; plan Turn 4 §6),
    the `G_{ℚ₂}`-side instance of the uniform Stage-C boundary datum.
    
    * `tameMap`/`tame_surj`/`tame_nu` — the local tame quotient `G_{ℚ₂} ↠ T_A` with
      unramified marking `ν_loc`, from the axiom `gq2_tame_quotient` (Prop 3.2 + the
      local half of Prop `compatiblemarking`);
    * `pro2Map`/`pro2_surj`/`pro2_nu` — the local maximal pro-`2` quotient
      `G_{ℚ₂} ↠ Π` with the *same* unramified marking `ν_loc`, proved from the fully
      marked Labute comparison `labute_GQ2_maxPro2_marked` (`pro2Map_loc`,
      `pro2Map_loc_surjective`, `pro2Map_loc_nu`);
    * `nu := ν_loc` — the common unramified character through which both factor. ) +HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`.
            Q2Presentation.Quadratic.baseGaussSignQ2Presentation.Quadratic.baseGaussSign (ramified : Bool) : ℤThe **base Gauss sign** (`prop:candidatezero`/`prop:localzero`): `+1` (plus type)
    in the ramified case, `-1` (minus type) in the unramified case. 
                  ramBool *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
                2 ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`.
                  (HDiv.hDiv.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HDiv α β γ] : α → β → γ`a / b` computes the result of dividing `a` by `b`.
    The meaning of this notation is type-dependent.
    * For most types like `Nat`, `Int`, `Rat`, `Real`, `a / 0` is defined to be `0`.
    * For `Nat`, `a / b` rounds downwards.
    * For `Int`, `a / b` rounds downwards if `b` is positive or upwards if `b` is negative.
      It is implemented as `Int.ediv`, the unique function satisfying
      `a % b + b * (a / b) = a` and `0 ≤ a % b < natAbs b` for `b ≠ 0`.
      Other rounding conventions are available using the functions
      `Int.fdiv` (floor rounding) and `Int.tdiv` (truncation rounding).
    * For `Float`, `a / 0` follows the IEEE 754 semantics for division,
      usually resulting in `inf` or `nan`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `/` in identifiers is `div`.Q2Presentation.Induction.dimVQ2Presentation.Induction.dimV {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : ℕ`d = dim V` (the head `V = M/T`). 
                      chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor /HDiv.hDiv.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HDiv α β γ] : α → β → γ`a / b` computes the result of dividing `a` by `b`.
    The meaning of this notation is type-dependent.
    * For most types like `Nat`, `Int`, `Rat`, `Real`, `a / 0` is defined to be `0`.
    * For `Nat`, `a / b` rounds downwards.
    * For `Int`, `a / b` rounds downwards if `b` is positive or upwards if `b` is negative.
      It is implemented as `Int.ediv`, the unique function satisfying
      `a % b + b * (a / b) = a` and `0 ≤ a % b < natAbs b` for `b ≠ 0`.
      Other rounding conventions are available using the functions
      `Int.fdiv` (floor rounding) and `Int.tdiv` (truncation rounding).
    * For `Float`, `a / 0` follows the IEEE 754 semantics for division,
      usually resulting in `inf` or `nan`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `/` in identifiers is `div`.
                    2)HDiv.hDiv.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HDiv α β γ] : α → β → γ`a / b` computes the result of dividing `a` by `b`.
    The meaning of this notation is type-dependent.
    * For most types like `Nat`, `Int`, `Rat`, `Real`, `a / 0` is defined to be `0`.
    * For `Nat`, `a / b` rounds downwards.
    * For `Int`, `a / b` rounds downwards if `b` is positive or upwards if `b` is negative.
      It is implemented as `Int.ediv`, the unique function satisfying
      `a % b + b * (a / b) = a` and `0 ≤ a % b < natAbs b` for `b ≠ 0`.
      Other rounding conventions are available using the functions
      `Int.fdiv` (floor rounding) and `Int.tdiv` (truncation rounding).
    * For `Float`, `a / 0` follows the IEEE 754 semantics for division,
      usually resulting in `inf` or `nan`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `/` in identifiers is `div`. *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
               chi↥(Q2Presentation.Induction.XT chief K),
                (HSub.hSub.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HSub α β γ] : α → β → γ`a - b` computes the difference of `a` and `b`.
    The meaning of this notation is type-dependent.
    * For natural numbers, this operator saturates at 0: `a - b = 0` when `a ≤ b`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `-` in identifiers is `sub` (when used as a binary operator).2 *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
                    (Q2Presentation.Induction.phaseCountQ2Presentation.Induction.phaseCount {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (zeta : (Q2Presentation.Induction.cChild chief K).fst.Y → (Q2Presentation.Induction.cChild chief K).fst.Y → ZMod 2)
      (hz1 : ∀ (y : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta 1 y = 0)
      (hz2 : ∀ (y : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta y 1 = 0)
      (hzc :
        ∀ (a b c : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta a b + zeta (a * b) c = zeta b c + zeta a (b * c))
      {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) : ℕ**`n_{Γ,0}(ζ)`** (l.4377–4379): the number of lower exact-image maps
    `ρ ∈ X_Γ(C)` for which the phase cover is unobstructed, i.e. which admit a
    weak (no image condition) framed lift through `p_ζ`.  The child transport
    of P3-§4.7's `phaseChildTransport` slot is W7a's `cocycleChildEquiv`,
    absorbed into `cocycleCoverLiftHom`. 
                        chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor
                        (Q2Presentation.Induction.DeltaQ2Presentation.Induction.Delta {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K))
      (Z : Q2Presentation.Induction.ZeroEdgeDescentData chief K lam hinv) (chi : ↥(Q2Presentation.Induction.XT chief K)) :
      (Q2Presentation.Induction.cChild chief K).fst.Y → (Q2Presentation.Induction.cChild chief K).fst.Y → ZMod 2**The phase class `Δ_{χ,κ}` on the C-child carrier** — `DeltaC`
    transported along the canonical collapse `B/M' ≃* C` (`cChildCollapse`);
    the cocycle P7's `phaseCount`/`phaseCoverPair` consume at
    `ζ := Delta Z chi` (design §4.7; per-cocycle discipline, no
    class-invariance asserted). 
                          chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K) ZQ2Presentation.Induction.ZeroEdgeDescentData chief K lam hinv
                          chi↥(Q2Presentation.Induction.XT chief K))
                          
                        Q2Presentation.boundaryPackage_GQ2Q2Presentation.boundaryPackage_GQ2 : Q2Presentation.BoundaryPackage Q2Presentation.GQ2Profinite**The local boundary package** `boundaryPackage_GQ2 : BoundaryPackage G_{ℚ₂}`
    (manuscript Prop 3.14 `prop:compatiblemarking` for `Γ = G_{ℚ₂}`; plan Turn 4 §6),
    the `G_{ℚ₂}`-side instance of the uniform Stage-C boundary datum.
    
    * `tameMap`/`tame_surj`/`tame_nu` — the local tame quotient `G_{ℚ₂} ↠ T_A` with
      unramified marking `ν_loc`, from the axiom `gq2_tame_quotient` (Prop 3.2 + the
      local half of Prop `compatiblemarking`);
    * `pro2Map`/`pro2_surj`/`pro2_nu` — the local maximal pro-`2` quotient
      `G_{ℚ₂} ↠ Π` with the *same* unramified marking `ν_loc`, proved from the fully
      marked Labute comparison `labute_GQ2_maxPro2_marked` (`pro2Map_loc`,
      `pro2Map_loc_surjective`, `pro2Map_loc_nu`);
    * `nu := ν_loc` — the common unramified character through which both factor. ) -HSub.hSub.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HSub α β γ] : α → β → γ`a - b` computes the difference of `a` and `b`.
    The meaning of this notation is type-dependent.
    * For natural numbers, this operator saturates at 0: `a - b = 0` when `a ≤ b`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `-` in identifiers is `sub` (when used as a binary operator).
                  (Q2Presentation.Induction.eCQ2Presentation.Induction.eC {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) {Γ : ProfiniteGrp.{0}}
      (B : Q2Presentation.BoundaryPackage Γ) : ℕ**The C-child count** (the `e_Γ(C')` of R4a/R4b): boundary-framed
    surjections onto the C-child pair (P3-U2's `cChild`). 
                      chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor
                      Q2Presentation.boundaryPackage_GQ2Q2Presentation.boundaryPackage_GQ2 : Q2Presentation.BoundaryPackage Q2Presentation.GQ2Profinite**The local boundary package** `boundaryPackage_GQ2 : BoundaryPackage G_{ℚ₂}`
    (manuscript Prop 3.14 `prop:compatiblemarking` for `Γ = G_{ℚ₂}`; plan Turn 4 §6),
    the `G_{ℚ₂}`-side instance of the uniform Stage-C boundary datum.
    
    * `tameMap`/`tame_surj`/`tame_nu` — the local tame quotient `G_{ℚ₂} ↠ T_A` with
      unramified marking `ν_loc`, from the axiom `gq2_tame_quotient` (Prop 3.2 + the
      local half of Prop `compatiblemarking`);
    * `pro2Map`/`pro2_surj`/`pro2_nu` — the local maximal pro-`2` quotient
      `G_{ℚ₂} ↠ Π` with the *same* unramified marking `ν_loc`, proved from the fully
      marked Labute comparison `labute_GQ2_maxPro2_marked` (`pro2Map_loc`,
      `pro2Map_loc_surjective`, `pro2Map_loc_nu`);
    * `nu := ν_loc` — the common unramified character through which both factor. ))HSub.hSub.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HSub α β γ] : α → β → γ`a - b` computes the difference of `a` and `b`.
    The meaning of this notation is type-dependent.
    * For natural numbers, this operator saturates at 0: `a - b = 0` when `a ≤ b`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `-` in identifiers is `sub` (when used as a binary operator).)HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`.
    **R4b, local source** (`prop:zeroedge` mirror): same shape, same
    bundle `Z`, same `ram`-pinning slot; the count clause enters as an
    explicit HYPOTHESIS (`ZeroEdgeCountGQ2`). 
  • theoremdefined in Q2Presentation/Induction/ZeroEdgePointwise.lean
    complete
    theorem Q2Presentation.Induction.q2_edgePointwise_count
      {pQ2Presentation.Induction.FramedPair : Q2Presentation.Induction.FramedPairQ2Presentation.Induction.FramedPair : Type 1A **framed pair** `(𝒴, F)`: a boundary-framed marked target together with a
    boundary frame for it (manuscript Definition 4.1 + `eq:beta`).  This is the index of
    Theorem 4.2: the boundary-framed surjection count `e_Γ^β` is a function of the pair.
    The induction of `sec:induction` ranges over *all* such pairs simultaneously
    ("the induction is stated globally", l.1213), ordered by `|L_Y|`. }
      (chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p : Q2Presentation.Induction.FirstNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor (p : Q2Presentation.Induction.FramedPair) : TypeA non-scalar chief factor of `L_Y` that is **first**: every chief factor strictly
    below it (i.e. with upper term contained in `lower`) is scalar.  This is the manuscript's
    choice `S ◁ P` at l.3616–3623 ("all chief factors below `S` are scalar and `V` is the
    first non-scalar simple factor"), which `lem:collapse` requires for the coprime step
    `[S, Ñ] = 1`.  pQ2Presentation.Induction.FramedPair)
      (KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor :
        Q2Presentation.Induction.KernelMinimalQ2Presentation.Induction.KernelMinimal {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.NonScalarChiefFactor p) : TypeThe manuscript's kernel choice (l.3623): `K ◁ Y`, `K ≤ P`, `KS = P`, and `K` is
    **⊆-minimal** with these properties — stated as: any `Y`-normal `K' ≤ K` still joining
    with `S` to `P` equals `K`.  (This, not leastness among all candidates, is what
    `lem:simplehead` and `lem:collapse` use: both apply it to subgroups of `K`.)  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p.toNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor.toNonScalarChiefFactor {p : Q2Presentation.Induction.FramedPair}
      (self : Q2Presentation.Induction.FirstNonScalarChiefFactor p) : Q2Presentation.Induction.NonScalarChiefFactor p)
      (lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) :
        Module.DualModule.Dual.{u_4, u_5} (R : Type u_4) (M : Type u_5) [Semiring R] [AddCommMonoid M] [Module R M] : Type (max u_5 u_4)The left dual space of an R-module M is the R-module of linear maps `M → R`.  (ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2)
          (Q2Presentation.Lifting.NAddQ2Presentation.Lifting.NAdd {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) : TypeThe additive `F₂`-carrier of an elementary kernel. 
            (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)))
      (hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K) :
        lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`.
          Q2Presentation.Lifting.conjInvDualsQ2Presentation.Lifting.conjInvDuals {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) :
      Submodule (ZMod 2) (Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E))The conjugation-invariant duals `X = (R^∨)^Y = (R^∨)^C` of an
    elementary kernel (consumer spelling of the manuscript's `𝒳_R`,
    §7 l.3720–3723). 
            (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor))
      (ZQ2Presentation.Induction.ZeroEdgeDescentData chief K lam hinv : Q2Presentation.Induction.ZeroEdgeDescentDataQ2Presentation.Induction.ZeroEdgeDescentData {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) : Type**The zero-edge descent data** (`eq:descendedclass` l.4037–4045 +
    `lem:affinelifting` l.4048–4083, as one choice bundle — the §6.5 choice
    discipline: both R4b keeps take the SAME bundle):
    
    * `D`/`hW` — the zero-edge witness (a normal edge complement, P3-U3); the
      bundle therefore implies `ZeroEdge` (`ZeroEdgeDescentData.zeroEdge`);
    * `Csec` + `hdisj`/`hsup` — the `lem:transgression` splitting coordinates
      `B/T' = V ⋊ C` (`Csec` a complement to the `V`-layer);
    * `gammaK`/`deltaK` — the normalized decomposition data `γ_κ ∈ Z¹(C,V^∨)`,
      `δ_κ ∈ Z²(C,𝔽₂)` of the descended class, with concrete cocycle laws
      (dual action `(c·φ)(v) = φ(c⁻¹·v)`);
    * `eT` — the `lem:affinelifting` class `e ∈ Z²(C,T)` (pullback of
      `B → V⋊C` along the zero section), twisted cocycle law in the
      `hzc`-ready orientation;
    * `mC` — the equivariant-lift correction functions `m_c` of the
      `κ_q⁰`-model (`eq:mquadratic`/`eq:mcoherent` l.4118–4125, stated
      against the bilinear factor set `edgeBaseFactor`).
    
    The deep pinning identity — that a normalized section cocycle of the
    descended double cover `descTarget D hW` equals
    `κ_q⁰-model + Γ_{γ_κ} + inf δ_κ` in the `Csec`-coordinates, and that `eT`
    is the actual zero-section pullback — is owned by the deferred
    transgression unit (`btChild_splits`/`zeroEdgeDescentData_nonempty`,
    design §4.7); until it lands, the coordinated R4b keep must carry that
    pinning alongside this bundle (same discipline as U7's `¬ZeroEdge`
    conditioning living on the future keep).  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K))
      (BQ2Presentation.BoundaryPackage Q2Presentation.GQ2Profinite : Q2Presentation.BoundaryPackageQ2Presentation.BoundaryPackage (Γ : ProfiniteGrp.{0}) : TypeA **boundary package** on a profinite group `Γ`: the uniform Stage-C data of a tame
    quotient, a maximal pro-`2` quotient, and a common unramified character `ℤ₂` through which
    both factor (manuscript Prop 3.14, `prop:compatiblemarking`; plan Turn 4 §6).  The
    compatibility `tameMap ≫ ν_t = ν = pro2Map ≫ ν_2` records that the two markings agree on
    the full unramified coordinate, not merely modulo `2`.  Q2Presentation.GQ2ProfiniteQ2Presentation.GQ2Profinite : ProfiniteGrp.{0}The absolute Galois group `G_{ℚ₂} = Gal(Q̄₂/ℚ₂)` of the `2`-adic field
    `ℚ₂ = ℚ_[2]`, as a profinite group.
    
    Concretely it is `Gal(SeparableClosure ℚ_[2] / ℚ_[2])`, packaged as an object of
    `ProfiniteGrp` by `InfiniteGalois.profiniteGalGrp`.  Since `ℚ_[2]` has
    characteristic `0` its separable closure is an algebraic closure, so this is the
    absolute Galois group in the usual sense, matching the manuscript's `G_{ℚ₂}`. )
      (ρQ2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst
      (Q2Presentation.Induction.cChild chief K).snd :
        Q2Presentation.boundaryFramedSurjQ2Presentation.boundaryFramedSurj {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ)
      (Yt : Q2Presentation.BoundaryFramedTarget) (F : Q2Presentation.BoundaryFrame Yt) : TypeThe **boundary-framed surjections** `e_Γ^β(𝒴)` (manuscript `eq:eGamma`): the
    continuous surjections `f : Γ ↠ Y` whose induced map to `H × E` is the prescribed
    `β ∘ b_Γ`, i.e. `q_Y ∘ f = β ∘ b_Γ`.  This is the subtype counted in Theorem 4.2;
    its cardinality is `e_Γ^β(𝒴)`.  BQ2Presentation.BoundaryPackage Q2Presentation.GQ2Profinite
          (Q2Presentation.Induction.cChildQ2Presentation.Induction.cChild {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPair**The C-child framed pair** (the carrier of `X_Γ(C)`; manuscript
    `C = Y/K` via `B/M' ≅ C`, `mChildCollapse`).  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.
    
          (Q2Presentation.Induction.cChildQ2Presentation.Induction.cChild {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPair**The C-child framed pair** (the carrier of `X_Γ(C)`; manuscript
    `C = Y/K` via `B/M' ≅ C`, `mChildCollapse`).  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.
    )
      (PQ2Presentation.Induction.ZeroEdgePinning chief K lam hinv Z : Q2Presentation.Induction.ZeroEdgePinningQ2Presentation.Induction.ZeroEdgePinning {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K))
      (Z : Q2Presentation.Induction.ZeroEdgeDescentData chief K lam hinv) : Type**The base-identity pinning of a bundle `Z`** — the §13 deferral's
    third item, concrete.  In the `Z.Csec`-coordinates (a multiplicative
    section `s`, so the section cochain `η` vanishes), the normalized
    section cocycle of the ACTUAL descended cover `descTarget Z.D Z.hW` at
    the total section `(v,c) ↦ ℓ̂(v)·σ̂(c)` is
    `κ((v,c),(w,d)) = g(v,cw) + n_c(w) + e(c,d)` with `g/n/e` the three deck
    readings; the fields pin
    
    * `g = edgeBaseFactor` (`fib_*`): the fibre part is the `κ_q⁰`-model
      factor set — `eq:basekappacochain`'s fibre normalization;
    * `n_c = Z.mC c + Z.gammaK c ∘ (c·)` (`conj_*`): the conjugation defect
      is the model correction plus the `Γ_{γ_κ}`-term (`eq:Gammagamma`);
    * `e = Z.deltaK` (`sec_*`): the pure base part is the inflated scalar —
    
    i.e. `κ = κ_q⁰ + Γ_{γ_κ} + inf δ_κ` as normalized cochains,
    `eq:descendedclass` l.4037–4045 ON THE NOSE; and `tau_eT` pins `Z.eT` as
    the actual zero-section pullback of `B → V⋊C` along the `Csec`-section
    (`lem:affinelifting` l.4050–4056).  `Nonempty (ZeroEdgePinning … Z)` is
    the pinning hypothesis the FUTURE coordinated R4b keep must carry
    alongside `Z` (both U8/U9 zero-edge keep docstrings + §13 note 6).  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K) ZQ2Presentation.Induction.ZeroEdgeDescentData chief K lam hinv)
      (hdelQ2Presentation.Induction.EdgeDelSurj chief K B ρ : Q2Presentation.Induction.EdgeDelSurjQ2Presentation.Induction.EdgeDelSurj {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) {Γ : ProfiniteGrp.{0}}
      (B : Q2Presentation.BoundaryPackage Γ)
      (ρ :
        Q2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst
          (Q2Presentation.Induction.cChild chief K).snd) :
      Prop**F-∂ floor `Prop`** (design §5 #F-∂; `lem:elementarystage`
    l.4171–4205, dual-injectivity spelling): no `0 ≠ χ ∈ 𝒳_T` kills every
    constraint defect reading — i.e. the transpose of `∂_{Γ,ρ}` is
    injective.  PROVENANCE + dissolution program: the manuscript proof is
    the counting dévissage `H²_{Γ,ρ}(M) = 0` at the intermediate
    `χ`-pushout kernels `M_χ = ker χ̃`; in-tree this is the clause-(d)
    ladder (`q2_localduality_weakZ1_card`) at `M_χ`-kernels for the LOCAL
    source — derivable, expected NOT to survive — and the N6 corank engine
    for the candidate (manuscript fallback per the §5 table).  Consumed as
    a HYPOTHESIS (never an axiom) by the engine fire below;
    `edgeL_surjective_of_delSurj` converts it to the engine's `hL`.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor BQ2Presentation.BoundaryPackage Q2Presentation.GQ2Profinite ρQ2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst
      (Q2Presentation.Induction.cChild chief K).snd) :
      2 *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. 2 ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. Q2Presentation.Induction.rTQ2Presentation.Induction.rT {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : ℕ`r = dim 𝒳_T`.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
          (Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number.
    If `α` is infinite, `Nat.card α = 0`. 
              {Subtype.{u} {α : Sort u} (p : α → Prop) : Sort (max 1 u)All the elements of a type that satisfy a predicate.
    
    `Subtype p`, usually written `{ x : α // p x }` or `{ x // p x }`, contains all elements `x : α` for
    which `p x` is true. Its constructor is a pair of the value and the proof that it satisfies the
    predicate. In run-time code, `{ x : α // p x }` is represented identically to `α`.
    
    There is a coercion from `{ x : α // p x }` to `α`, so elements of a subtype may be used where the
    underlying type is expected.
    
    Examples:
     * `{ n : Nat // n % 2 = 0 }` is the type of even numbers.
     * `{ xs : Array String // xs.size = 5 }` is the type of arrays with five `String`s.
     * Given `xs : List α`, `List { x : α // x ∈ xs }` is the type of lists in which all elements are
       contained in `xs`.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `{ x // p x }` in identifiers is `subtype`. z↥(Q2Presentation.Induction.edgeZ1 chief K B ρ) //Subtype.{u} {α : Sort u} (p : α → Prop) : Sort (max 1 u)All the elements of a type that satisfy a predicate.
    
    `Subtype p`, usually written `{ x : α // p x }` or `{ x // p x }`, contains all elements `x : α` for
    which `p x` is true. Its constructor is a pair of the value and the proof that it satisfies the
    predicate. In run-time code, `{ x : α // p x }` is represented identically to `α`.
    
    There is a coercion from `{ x : α // p x }` to `α`, so elements of a subtype may be used where the
    underlying type is expected.
    
    Examples:
     * `{ n : Nat // n % 2 = 0 }` is the type of even numbers.
     * `{ xs : Array String // xs.size = 5 }` is the type of arrays with five `String`s.
     * Given `xs : List α`, `List { x : α // x ∈ xs }` is the type of lists in which all elements are
       contained in `xs`.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `{ x // p x }` in identifiers is `subtype`.
                (Q2Presentation.Induction.edgeLQ2Presentation.Induction.edgeL {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) {Γ : ProfiniteGrp.{0}}
      (B : Q2Presentation.BoundaryPackage Γ)
      (ρ :
        Q2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst
          (Q2Presentation.Induction.cChild chief K).snd)
      (tok : Q2Presentation.Induction.IotaToken Γ) :
      ↥(Q2Presentation.Induction.edgeZ1 chief K B ρ) →ₗ[ZMod 2] Module.Dual (ZMod 2) ↥(Q2Presentation.Induction.XT chief K)**The constraint map `L : W_ρ →ₗ 𝒳_T^∨`** (design §4-N7 bullet 4:
    `L z = (χ ↦ ι(χ-pushout defect))`, in the coboundary-free graph
    spelling; `edgeLRead_eq_chiDefect` aligns it with the `∂`-defect).  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor BQ2Presentation.BoundaryPackage Q2Presentation.GQ2Profinite ρQ2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst
      (Q2Presentation.Induction.cChild chief K).snd ) z↥(Q2Presentation.Induction.edgeZ1 chief K B ρ) =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`.
                    Q2Presentation.Induction.edgeKappaQ2Presentation.Induction.edgeKappa {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K))
      (Z : Q2Presentation.Induction.ZeroEdgeDescentData chief K lam hinv) {Γ : ProfiniteGrp.{0}}
      (B : Q2Presentation.BoundaryPackage Γ)
      (ρ :
        Q2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst
          (Q2Presentation.Induction.cChild chief K).snd)
      (tok : Q2Presentation.Induction.IotaToken Γ) : Module.Dual (ZMod 2) ↥(Q2Presentation.Induction.XT chief K)**The constraint target `κ₀ ∈ 𝒳_T^∨`** (the `ρ*e`-class read).  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K) ZQ2Presentation.Induction.ZeroEdgeDescentData chief K lam hinv BQ2Presentation.BoundaryPackage Q2Presentation.GQ2Profinite
                      ρQ2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst
      (Q2Presentation.Induction.cChild chief K).snd  And (a b : Prop) : Prop`And a b`, or `a ∧ b`, is the conjunction of propositions. It can be
    constructed and destructed like a pair: if `ha : a` and `hb : b` then
    `⟨ha, hb⟩ : a ∧ b`, and if `h : a ∧ b` then `h.left : a` and `h.right : b`.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∧` in identifiers is `and`.
    
     * The recommended spelling of `/\` in identifiers is `and` (prefer `∧` over `/\`).
                  Q2Presentation.Induction.edgeLiftableDescQ2Presentation.Induction.edgeLiftableDesc {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K))
      (Z : Q2Presentation.Induction.ZeroEdgeDescentData chief K lam hinv) {Γ : ProfiniteGrp.{0}}
      (B : Q2Presentation.BoundaryPackage Γ)
      (ρ :
        Q2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst
          (Q2Presentation.Induction.cChild chief K).snd)
      (P : Q2Presentation.Induction.ZeroEdgePinning chief K lam hinv Z)
      (z : ↥(Q2Presentation.Induction.edgeZ1 chief K B ρ)) : Prop**Desc-liftability of the `z`-twisted lift** — N1's
    `descLiftableWeak` shape at the pinned `V⋊C`-lift `γ ↦ vInG(z γ)·s(ρ̄γ)`
    (= `btLiftVal (edgeTrivial … P.s … z)`, `edgeTrivial_apply`).  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)
                    ZQ2Presentation.Induction.ZeroEdgeDescentData chief K lam hinv BQ2Presentation.BoundaryPackage Q2Presentation.GQ2Profinite ρQ2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst
      (Q2Presentation.Induction.cChild chief K).snd PQ2Presentation.Induction.ZeroEdgePinning chief K lam hinv Z z↥(Q2Presentation.Induction.edgeZ1 chief K B ρ) }Subtype.{u} {α : Sort u} (p : α → Prop) : Sort (max 1 u)All the elements of a type that satisfy a predicate.
    
    `Subtype p`, usually written `{ x : α // p x }` or `{ x // p x }`, contains all elements `x : α` for
    which `p x` is true. Its constructor is a pair of the value and the proof that it satisfies the
    predicate. In run-time code, `{ x : α // p x }` is represented identically to `α`.
    
    There is a coercion from `{ x : α // p x }` to `α`, so elements of a subtype may be used where the
    underlying type is expected.
    
    Examples:
     * `{ n : Nat // n % 2 = 0 }` is the type of even numbers.
     * `{ xs : Array String // xs.size = 5 }` is the type of arrays with five `String`s.
     * Given `xs : List α`, `List { x : α // x ∈ xs }` is the type of lists in which all elements are
       contained in `xs`.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `{ x // p x }` in identifiers is `subtype`.) =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`.
        (Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number.
    If `α` is infinite, `Nat.card α = 0`.  (Q2Presentation.Induction.edgeZ1Q2Presentation.Induction.edgeZ1 {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) {Γ : ProfiniteGrp.{0}}
      (B : Q2Presentation.BoundaryPackage Γ)
      (ρ :
        Q2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst
          (Q2Presentation.Induction.cChild chief K).snd) :
      Submodule (ZMod 2) (↑Γ.toProfinite.toTop → Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K)**`Z¹_ρ(V)`** — the `ZMod 2`-module of continuous (locally constant)
    `V`-valued ρ̄-twisted 1-cocycles: `z(γγ′) = z(γ) + ρ̄(γ)·z(γ′)` (THE
    orientation pin — `aRep_cocycle`'s house orientation; design §2.1's
    `W_ρ`, the engine carrier of the W2 instantiation).  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor BQ2Presentation.BoundaryPackage Q2Presentation.GQ2Profinite ρQ2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst
      (Q2Presentation.Induction.cChild chief K).snd)) +HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`.
          Q2Presentation.Quadratic.Dickson.gaussSumQ2Presentation.Quadratic.Dickson.gaussSum.{u_1} {V : Type u_1} [AddCommGroup V] [Module (ZMod 2) V] [Fintype V]
      (q : Q2Presentation.Quadratic.QuadF2 V) : ℤThe **Gauss sum** `D(q) = ∑_v χ(q v)`. 
              (Q2Presentation.Induction.edgeQQ2Presentation.Induction.edgeQ {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K))
      (Z : Q2Presentation.Induction.ZeroEdgeDescentData chief K lam hinv) {Γ : ProfiniteGrp.{0}}
      (B : Q2Presentation.BoundaryPackage Γ)
      (ρ :
        Q2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst
          (Q2Presentation.Induction.cChild chief K).snd)
      (tok : Q2Presentation.Induction.IotaToken Γ) :
      Q2Presentation.Quadratic.QuadF2 ↥(Q2Presentation.Induction.edgeZ1 chief K B ρ)**`edgeQ` — the P6-engine form at `W_ρ = Z¹_ρ(V)`** (design §2.1,
    the W2 instantiation): form `= ι∘F₀`, polar `= ι∘P`; quadratic law from
    the completed-square cochain identity plus the token.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K) ZQ2Presentation.Induction.ZeroEdgeDescentData chief K lam hinv BQ2Presentation.BoundaryPackage Q2Presentation.GQ2Profinite ρQ2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst
      (Q2Presentation.Induction.cChild chief K).snd ) *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
             chi↥(Q2Presentation.Induction.XT chief K),
              Q2Presentation.Induction.iotaSignQ2Presentation.Induction.iotaSign (Γ : ProfiniteGrp.{0}) (F : ↑Γ.toProfinite.toTop → ↑Γ.toProfinite.toTop → ZMod 2) : ℤ**The `±1`-indicator** of solvability in `ℤ`: `+1` if solvable, `−1`
    if not — the summand shape of `eq:recursionR5a`'s `s_Γ(ζ) = Σ_ρ (±1)`
    absorption (`sGammaZ_eq` downstream).  Q2Presentation.GQ2ProfiniteQ2Presentation.GQ2Profinite : ProfiniteGrp.{0}The absolute Galois group `G_{ℚ₂} = Gal(Q̄₂/ℚ₂)` of the `2`-adic field
    `ℚ₂ = ℚ_[2]`, as a profinite group.
    
    Concretely it is `Gal(SeparableClosure ℚ_[2] / ℚ_[2])`, packaged as an object of
    `ProfiniteGrp` by `InfiniteGalois.profiniteGalGrp`.  Since `ℚ_[2]` has
    characteristic `0` its separable closure is an algebraic closure, so this is the
    absolute Galois group in the usual sense, matching the manuscript's `G_{ℚ₂}`. 
                (Q2Presentation.Induction.pullCochainQ2Presentation.Induction.pullCochain (Yt : Q2Presentation.BoundaryFramedTarget) (zeta : Yt.Y → Yt.Y → ZMod 2)
      {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (F : Q2Presentation.BoundaryFrame Yt)
      (g : Q2Presentation.boundaryFramedSurj B Yt F) : ↑Γ.toProfinite.toTop → ↑Γ.toProfinite.toTop → ZMod 2**The pulled-back 2-cochain `g*ζ`** of a boundary-framed surjection
    `g : Γ ↠ Y` — the source-side equation whose solvability the ζ-cover lift
    indicator reads (`lem:phasecover` l.4377–4379). 
                  (Q2Presentation.Induction.cChildQ2Presentation.Induction.cChild {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPair**The C-child framed pair** (the carrier of `X_Γ(C)`; manuscript
    `C = Y/K` via `B/M' ≅ C`, `mChildCollapse`).  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.
    
                  (Q2Presentation.Induction.DeltaQ2Presentation.Induction.Delta {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K))
      (Z : Q2Presentation.Induction.ZeroEdgeDescentData chief K lam hinv) (chi : ↥(Q2Presentation.Induction.XT chief K)) :
      (Q2Presentation.Induction.cChild chief K).fst.Y → (Q2Presentation.Induction.cChild chief K).fst.Y → ZMod 2**The phase class `Δ_{χ,κ}` on the C-child carrier** — `DeltaC`
    transported along the canonical collapse `B/M' ≃* C` (`cChildCollapse`);
    the cocycle P7's `phaseCount`/`phaseCoverPair` consume at
    `ζ := Delta Z chi` (design §4.7; per-cocycle discipline, no
    class-invariance asserted).  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K) ZQ2Presentation.Induction.ZeroEdgeDescentData chief K lam hinv chi↥(Q2Presentation.Induction.XT chief K)) BQ2Presentation.BoundaryPackage Q2Presentation.GQ2Profinite
                  (Q2Presentation.Induction.cChildQ2Presentation.Induction.cChild {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPair**The C-child framed pair** (the carrier of `X_Γ(C)`; manuscript
    `C = Y/K` via `B/M' ≅ C`, `mChildCollapse`).  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.
     ρQ2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst
      (Q2Presentation.Induction.cChild chief K).snd)
    theorem Q2Presentation.Induction.q2_edgePointwise_count
      {pQ2Presentation.Induction.FramedPair :
        Q2Presentation.Induction.FramedPairQ2Presentation.Induction.FramedPair : Type 1A **framed pair** `(𝒴, F)`: a boundary-framed marked target together with a
    boundary frame for it (manuscript Definition 4.1 + `eq:beta`).  This is the index of
    Theorem 4.2: the boundary-framed surjection count `e_Γ^β` is a function of the pair.
    The induction of `sec:induction` ranges over *all* such pairs simultaneously
    ("the induction is stated globally", l.1213), ordered by `|L_Y|`. }
      (chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p :
        Q2Presentation.Induction.FirstNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor (p : Q2Presentation.Induction.FramedPair) : TypeA non-scalar chief factor of `L_Y` that is **first**: every chief factor strictly
    below it (i.e. with upper term contained in `lower`) is scalar.  This is the manuscript's
    choice `S ◁ P` at l.3616–3623 ("all chief factors below `S` are scalar and `V` is the
    first non-scalar simple factor"), which `lem:collapse` requires for the coprime step
    `[S, Ñ] = 1`. 
          pQ2Presentation.Induction.FramedPair)
      (KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor :
        Q2Presentation.Induction.KernelMinimalQ2Presentation.Induction.KernelMinimal {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.NonScalarChiefFactor p) : TypeThe manuscript's kernel choice (l.3623): `K ◁ Y`, `K ≤ P`, `KS = P`, and `K` is
    **⊆-minimal** with these properties — stated as: any `Y`-normal `K' ≤ K` still joining
    with `S` to `P` equals `K`.  (This, not leastness among all candidates, is what
    `lem:simplehead` and `lem:collapse` use: both apply it to subgroups of `K`.) 
          chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p.toNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor.toNonScalarChiefFactor {p : Q2Presentation.Induction.FramedPair}
      (self : Q2Presentation.Induction.FirstNonScalarChiefFactor p) : Q2Presentation.Induction.NonScalarChiefFactor p)
      (lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) :
        Module.DualModule.Dual.{u_4, u_5} (R : Type u_4) (M : Type u_5) [Semiring R] [AddCommMonoid M] [Module R M] : Type (max u_5 u_4)The left dual space of an R-module M is the R-module of linear maps `M → R`.  (ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2)
          (Q2Presentation.Lifting.NAddQ2Presentation.Lifting.NAdd {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) : TypeThe additive `F₂`-carrier of an elementary kernel. 
            (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian. 
              chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)))
      (hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K) :
        lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`.
          Q2Presentation.Lifting.conjInvDualsQ2Presentation.Lifting.conjInvDuals {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) :
      Submodule (ZMod 2) (Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E))The conjugation-invariant duals `X = (R^∨)^Y = (R^∨)^C` of an
    elementary kernel (consumer spelling of the manuscript's `𝒳_R`,
    §7 l.3720–3723). 
            (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian. 
              chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor))
      (ZQ2Presentation.Induction.ZeroEdgeDescentData chief K lam hinv :
        Q2Presentation.Induction.ZeroEdgeDescentDataQ2Presentation.Induction.ZeroEdgeDescentData {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) : Type**The zero-edge descent data** (`eq:descendedclass` l.4037–4045 +
    `lem:affinelifting` l.4048–4083, as one choice bundle — the §6.5 choice
    discipline: both R4b keeps take the SAME bundle):
    
    * `D`/`hW` — the zero-edge witness (a normal edge complement, P3-U3); the
      bundle therefore implies `ZeroEdge` (`ZeroEdgeDescentData.zeroEdge`);
    * `Csec` + `hdisj`/`hsup` — the `lem:transgression` splitting coordinates
      `B/T' = V ⋊ C` (`Csec` a complement to the `V`-layer);
    * `gammaK`/`deltaK` — the normalized decomposition data `γ_κ ∈ Z¹(C,V^∨)`,
      `δ_κ ∈ Z²(C,𝔽₂)` of the descended class, with concrete cocycle laws
      (dual action `(c·φ)(v) = φ(c⁻¹·v)`);
    * `eT` — the `lem:affinelifting` class `e ∈ Z²(C,T)` (pullback of
      `B → V⋊C` along the zero section), twisted cocycle law in the
      `hzc`-ready orientation;
    * `mC` — the equivariant-lift correction functions `m_c` of the
      `κ_q⁰`-model (`eq:mquadratic`/`eq:mcoherent` l.4118–4125, stated
      against the bilinear factor set `edgeBaseFactor`).
    
    The deep pinning identity — that a normalized section cocycle of the
    descended double cover `descTarget D hW` equals
    `κ_q⁰-model + Γ_{γ_κ} + inf δ_κ` in the `Csec`-coordinates, and that `eT`
    is the actual zero-section pullback — is owned by the deferred
    transgression unit (`btChild_splits`/`zeroEdgeDescentData_nonempty`,
    design §4.7); until it lands, the coordinated R4b keep must carry that
    pinning alongside this bundle (same discipline as U7's `¬ZeroEdge`
    conditioning living on the future keep). 
          chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K))
      (BQ2Presentation.BoundaryPackage Q2Presentation.GQ2Profinite :
        Q2Presentation.BoundaryPackageQ2Presentation.BoundaryPackage (Γ : ProfiniteGrp.{0}) : TypeA **boundary package** on a profinite group `Γ`: the uniform Stage-C data of a tame
    quotient, a maximal pro-`2` quotient, and a common unramified character `ℤ₂` through which
    both factor (manuscript Prop 3.14, `prop:compatiblemarking`; plan Turn 4 §6).  The
    compatibility `tameMap ≫ ν_t = ν = pro2Map ≫ ν_2` records that the two markings agree on
    the full unramified coordinate, not merely modulo `2`. 
          Q2Presentation.GQ2ProfiniteQ2Presentation.GQ2Profinite : ProfiniteGrp.{0}The absolute Galois group `G_{ℚ₂} = Gal(Q̄₂/ℚ₂)` of the `2`-adic field
    `ℚ₂ = ℚ_[2]`, as a profinite group.
    
    Concretely it is `Gal(SeparableClosure ℚ_[2] / ℚ_[2])`, packaged as an object of
    `ProfiniteGrp` by `InfiniteGalois.profiniteGalGrp`.  Since `ℚ_[2]` has
    characteristic `0` its separable closure is an algebraic closure, so this is the
    absolute Galois group in the usual sense, matching the manuscript's `G_{ℚ₂}`. )
      (ρQ2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst
      (Q2Presentation.Induction.cChild chief K).snd :
        Q2Presentation.boundaryFramedSurjQ2Presentation.boundaryFramedSurj {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ)
      (Yt : Q2Presentation.BoundaryFramedTarget) (F : Q2Presentation.BoundaryFrame Yt) : TypeThe **boundary-framed surjections** `e_Γ^β(𝒴)` (manuscript `eq:eGamma`): the
    continuous surjections `f : Γ ↠ Y` whose induced map to `H × E` is the prescribed
    `β ∘ b_Γ`, i.e. `q_Y ∘ f = β ∘ b_Γ`.  This is the subtype counted in Theorem 4.2;
    its cardinality is `e_Γ^β(𝒴)`.  BQ2Presentation.BoundaryPackage Q2Presentation.GQ2Profinite
          (Q2Presentation.Induction.cChildQ2Presentation.Induction.cChild {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPair**The C-child framed pair** (the carrier of `X_Γ(C)`; manuscript
    `C = Y/K` via `B/M' ≅ C`, `mChildCollapse`). 
              chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.
    
          (Q2Presentation.Induction.cChildQ2Presentation.Induction.cChild {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPair**The C-child framed pair** (the carrier of `X_Γ(C)`; manuscript
    `C = Y/K` via `B/M' ≅ C`, `mChildCollapse`). 
              chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.
    )
      (PQ2Presentation.Induction.ZeroEdgePinning chief K lam hinv Z :
        Q2Presentation.Induction.ZeroEdgePinningQ2Presentation.Induction.ZeroEdgePinning {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K))
      (Z : Q2Presentation.Induction.ZeroEdgeDescentData chief K lam hinv) : Type**The base-identity pinning of a bundle `Z`** — the §13 deferral's
    third item, concrete.  In the `Z.Csec`-coordinates (a multiplicative
    section `s`, so the section cochain `η` vanishes), the normalized
    section cocycle of the ACTUAL descended cover `descTarget Z.D Z.hW` at
    the total section `(v,c) ↦ ℓ̂(v)·σ̂(c)` is
    `κ((v,c),(w,d)) = g(v,cw) + n_c(w) + e(c,d)` with `g/n/e` the three deck
    readings; the fields pin
    
    * `g = edgeBaseFactor` (`fib_*`): the fibre part is the `κ_q⁰`-model
      factor set — `eq:basekappacochain`'s fibre normalization;
    * `n_c = Z.mC c + Z.gammaK c ∘ (c·)` (`conj_*`): the conjugation defect
      is the model correction plus the `Γ_{γ_κ}`-term (`eq:Gammagamma`);
    * `e = Z.deltaK` (`sec_*`): the pure base part is the inflated scalar —
    
    i.e. `κ = κ_q⁰ + Γ_{γ_κ} + inf δ_κ` as normalized cochains,
    `eq:descendedclass` l.4037–4045 ON THE NOSE; and `tau_eT` pins `Z.eT` as
    the actual zero-section pullback of `B → V⋊C` along the `Csec`-section
    (`lem:affinelifting` l.4050–4056).  `Nonempty (ZeroEdgePinning … Z)` is
    the pinning hypothesis the FUTURE coordinated R4b keep must carry
    alongside `Z` (both U8/U9 zero-edge keep docstrings + §13 note 6). 
          chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K) ZQ2Presentation.Induction.ZeroEdgeDescentData chief K lam hinv)
      (hdelQ2Presentation.Induction.EdgeDelSurj chief K B ρ :
        Q2Presentation.Induction.EdgeDelSurjQ2Presentation.Induction.EdgeDelSurj {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) {Γ : ProfiniteGrp.{0}}
      (B : Q2Presentation.BoundaryPackage Γ)
      (ρ :
        Q2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst
          (Q2Presentation.Induction.cChild chief K).snd) :
      Prop**F-∂ floor `Prop`** (design §5 #F-∂; `lem:elementarystage`
    l.4171–4205, dual-injectivity spelling): no `0 ≠ χ ∈ 𝒳_T` kills every
    constraint defect reading — i.e. the transpose of `∂_{Γ,ρ}` is
    injective.  PROVENANCE + dissolution program: the manuscript proof is
    the counting dévissage `H²_{Γ,ρ}(M) = 0` at the intermediate
    `χ`-pushout kernels `M_χ = ker χ̃`; in-tree this is the clause-(d)
    ladder (`q2_localduality_weakZ1_card`) at `M_χ`-kernels for the LOCAL
    source — derivable, expected NOT to survive — and the N6 corank engine
    for the candidate (manuscript fallback per the §5 table).  Consumed as
    a HYPOTHESIS (never an axiom) by the engine fire below;
    `edgeL_surjective_of_delSurj` converts it to the engine's `hL`. 
          chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor BQ2Presentation.BoundaryPackage Q2Presentation.GQ2Profinite ρQ2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst
      (Q2Presentation.Induction.cChild chief K).snd) :
      2 *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
            2 ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`.
              Q2Presentation.Induction.rTQ2Presentation.Induction.rT {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : ℕ`r = dim 𝒳_T`. 
                chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
          (Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number.
    If `α` is infinite, `Nat.card α = 0`. 
              {Subtype.{u} {α : Sort u} (p : α → Prop) : Sort (max 1 u)All the elements of a type that satisfy a predicate.
    
    `Subtype p`, usually written `{ x : α // p x }` or `{ x // p x }`, contains all elements `x : α` for
    which `p x` is true. Its constructor is a pair of the value and the proof that it satisfies the
    predicate. In run-time code, `{ x : α // p x }` is represented identically to `α`.
    
    There is a coercion from `{ x : α // p x }` to `α`, so elements of a subtype may be used where the
    underlying type is expected.
    
    Examples:
     * `{ n : Nat // n % 2 = 0 }` is the type of even numbers.
     * `{ xs : Array String // xs.size = 5 }` is the type of arrays with five `String`s.
     * Given `xs : List α`, `List { x : α // x ∈ xs }` is the type of lists in which all elements are
       contained in `xs`.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `{ x // p x }` in identifiers is `subtype`. z↥(Q2Presentation.Induction.edgeZ1 chief K B ρ) //Subtype.{u} {α : Sort u} (p : α → Prop) : Sort (max 1 u)All the elements of a type that satisfy a predicate.
    
    `Subtype p`, usually written `{ x : α // p x }` or `{ x // p x }`, contains all elements `x : α` for
    which `p x` is true. Its constructor is a pair of the value and the proof that it satisfies the
    predicate. In run-time code, `{ x : α // p x }` is represented identically to `α`.
    
    There is a coercion from `{ x : α // p x }` to `α`, so elements of a subtype may be used where the
    underlying type is expected.
    
    Examples:
     * `{ n : Nat // n % 2 = 0 }` is the type of even numbers.
     * `{ xs : Array String // xs.size = 5 }` is the type of arrays with five `String`s.
     * Given `xs : List α`, `List { x : α // x ∈ xs }` is the type of lists in which all elements are
       contained in `xs`.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `{ x // p x }` in identifiers is `subtype`.
                (Q2Presentation.Induction.edgeLQ2Presentation.Induction.edgeL {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) {Γ : ProfiniteGrp.{0}}
      (B : Q2Presentation.BoundaryPackage Γ)
      (ρ :
        Q2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst
          (Q2Presentation.Induction.cChild chief K).snd)
      (tok : Q2Presentation.Induction.IotaToken Γ) :
      ↥(Q2Presentation.Induction.edgeZ1 chief K B ρ) →ₗ[ZMod 2] Module.Dual (ZMod 2) ↥(Q2Presentation.Induction.XT chief K)**The constraint map `L : W_ρ →ₗ 𝒳_T^∨`** (design §4-N7 bullet 4:
    `L z = (χ ↦ ι(χ-pushout defect))`, in the coboundary-free graph
    spelling; `edgeLRead_eq_chiDefect` aligns it with the `∂`-defect). 
                        chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor BQ2Presentation.BoundaryPackage Q2Presentation.GQ2Profinite ρQ2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst
      (Q2Presentation.Induction.cChild chief K).snd )
                      z↥(Q2Presentation.Induction.edgeZ1 chief K B ρ) =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`.
                    Q2Presentation.Induction.edgeKappaQ2Presentation.Induction.edgeKappa {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K))
      (Z : Q2Presentation.Induction.ZeroEdgeDescentData chief K lam hinv) {Γ : ProfiniteGrp.{0}}
      (B : Q2Presentation.BoundaryPackage Γ)
      (ρ :
        Q2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst
          (Q2Presentation.Induction.cChild chief K).snd)
      (tok : Q2Presentation.Induction.IotaToken Γ) : Module.Dual (ZMod 2) ↥(Q2Presentation.Induction.XT chief K)**The constraint target `κ₀ ∈ 𝒳_T^∨`** (the `ρ*e`-class read). 
                      chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K) ZQ2Presentation.Induction.ZeroEdgeDescentData chief K lam hinv BQ2Presentation.BoundaryPackage Q2Presentation.GQ2Profinite ρQ2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst
      (Q2Presentation.Induction.cChild chief K).snd
                       And (a b : Prop) : Prop`And a b`, or `a ∧ b`, is the conjunction of propositions. It can be
    constructed and destructed like a pair: if `ha : a` and `hb : b` then
    `⟨ha, hb⟩ : a ∧ b`, and if `h : a ∧ b` then `h.left : a` and `h.right : b`.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∧` in identifiers is `and`.
    
     * The recommended spelling of `/\` in identifiers is `and` (prefer `∧` over `/\`).
                  Q2Presentation.Induction.edgeLiftableDescQ2Presentation.Induction.edgeLiftableDesc {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K))
      (Z : Q2Presentation.Induction.ZeroEdgeDescentData chief K lam hinv) {Γ : ProfiniteGrp.{0}}
      (B : Q2Presentation.BoundaryPackage Γ)
      (ρ :
        Q2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst
          (Q2Presentation.Induction.cChild chief K).snd)
      (P : Q2Presentation.Induction.ZeroEdgePinning chief K lam hinv Z)
      (z : ↥(Q2Presentation.Induction.edgeZ1 chief K B ρ)) : Prop**Desc-liftability of the `z`-twisted lift** — N1's
    `descLiftableWeak` shape at the pinned `V⋊C`-lift `γ ↦ vInG(z γ)·s(ρ̄γ)`
    (= `btLiftVal (edgeTrivial … P.s … z)`, `edgeTrivial_apply`). 
                    chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K) ZQ2Presentation.Induction.ZeroEdgeDescentData chief K lam hinv BQ2Presentation.BoundaryPackage Q2Presentation.GQ2Profinite ρQ2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst
      (Q2Presentation.Induction.cChild chief K).snd PQ2Presentation.Induction.ZeroEdgePinning chief K lam hinv Z
                    z↥(Q2Presentation.Induction.edgeZ1 chief K B ρ) }Subtype.{u} {α : Sort u} (p : α → Prop) : Sort (max 1 u)All the elements of a type that satisfy a predicate.
    
    `Subtype p`, usually written `{ x : α // p x }` or `{ x // p x }`, contains all elements `x : α` for
    which `p x` is true. Its constructor is a pair of the value and the proof that it satisfies the
    predicate. In run-time code, `{ x : α // p x }` is represented identically to `α`.
    
    There is a coercion from `{ x : α // p x }` to `α`, so elements of a subtype may be used where the
    underlying type is expected.
    
    Examples:
     * `{ n : Nat // n % 2 = 0 }` is the type of even numbers.
     * `{ xs : Array String // xs.size = 5 }` is the type of arrays with five `String`s.
     * Given `xs : List α`, `List { x : α // x ∈ xs }` is the type of lists in which all elements are
       contained in `xs`.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `{ x // p x }` in identifiers is `subtype`.) =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`.
        (Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number.
    If `α` is infinite, `Nat.card α = 0`. 
              (Q2Presentation.Induction.edgeZ1Q2Presentation.Induction.edgeZ1 {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) {Γ : ProfiniteGrp.{0}}
      (B : Q2Presentation.BoundaryPackage Γ)
      (ρ :
        Q2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst
          (Q2Presentation.Induction.cChild chief K).snd) :
      Submodule (ZMod 2) (↑Γ.toProfinite.toTop → Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K)**`Z¹_ρ(V)`** — the `ZMod 2`-module of continuous (locally constant)
    `V`-valued ρ̄-twisted 1-cocycles: `z(γγ′) = z(γ) + ρ̄(γ)·z(γ′)` (THE
    orientation pin — `aRep_cocycle`'s house orientation; design §2.1's
    `W_ρ`, the engine carrier of the W2 instantiation). 
                  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor BQ2Presentation.BoundaryPackage Q2Presentation.GQ2Profinite ρQ2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst
      (Q2Presentation.Induction.cChild chief K).snd)) +HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`.
          Q2Presentation.Quadratic.Dickson.gaussSumQ2Presentation.Quadratic.Dickson.gaussSum.{u_1} {V : Type u_1} [AddCommGroup V] [Module (ZMod 2) V] [Fintype V]
      (q : Q2Presentation.Quadratic.QuadF2 V) : ℤThe **Gauss sum** `D(q) = ∑_v χ(q v)`. 
              (Q2Presentation.Induction.edgeQQ2Presentation.Induction.edgeQ {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K))
      (Z : Q2Presentation.Induction.ZeroEdgeDescentData chief K lam hinv) {Γ : ProfiniteGrp.{0}}
      (B : Q2Presentation.BoundaryPackage Γ)
      (ρ :
        Q2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst
          (Q2Presentation.Induction.cChild chief K).snd)
      (tok : Q2Presentation.Induction.IotaToken Γ) :
      Q2Presentation.Quadratic.QuadF2 ↥(Q2Presentation.Induction.edgeZ1 chief K B ρ)**`edgeQ` — the P6-engine form at `W_ρ = Z¹_ρ(V)`** (design §2.1,
    the W2 instantiation): form `= ι∘F₀`, polar `= ι∘P`; quadratic law from
    the completed-square cochain identity plus the token. 
                chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K) ZQ2Presentation.Induction.ZeroEdgeDescentData chief K lam hinv BQ2Presentation.BoundaryPackage Q2Presentation.GQ2Profinite ρQ2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst
      (Q2Presentation.Induction.cChild chief K).snd ) *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
             chi↥(Q2Presentation.Induction.XT chief K),
              Q2Presentation.Induction.iotaSignQ2Presentation.Induction.iotaSign (Γ : ProfiniteGrp.{0}) (F : ↑Γ.toProfinite.toTop → ↑Γ.toProfinite.toTop → ZMod 2) : ℤ**The `±1`-indicator** of solvability in `ℤ`: `+1` if solvable, `−1`
    if not — the summand shape of `eq:recursionR5a`'s `s_Γ(ζ) = Σ_ρ (±1)`
    absorption (`sGammaZ_eq` downstream). 
                Q2Presentation.GQ2ProfiniteQ2Presentation.GQ2Profinite : ProfiniteGrp.{0}The absolute Galois group `G_{ℚ₂} = Gal(Q̄₂/ℚ₂)` of the `2`-adic field
    `ℚ₂ = ℚ_[2]`, as a profinite group.
    
    Concretely it is `Gal(SeparableClosure ℚ_[2] / ℚ_[2])`, packaged as an object of
    `ProfiniteGrp` by `InfiniteGalois.profiniteGalGrp`.  Since `ℚ_[2]` has
    characteristic `0` its separable closure is an algebraic closure, so this is the
    absolute Galois group in the usual sense, matching the manuscript's `G_{ℚ₂}`. 
                (Q2Presentation.Induction.pullCochainQ2Presentation.Induction.pullCochain (Yt : Q2Presentation.BoundaryFramedTarget) (zeta : Yt.Y → Yt.Y → ZMod 2)
      {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (F : Q2Presentation.BoundaryFrame Yt)
      (g : Q2Presentation.boundaryFramedSurj B Yt F) : ↑Γ.toProfinite.toTop → ↑Γ.toProfinite.toTop → ZMod 2**The pulled-back 2-cochain `g*ζ`** of a boundary-framed surjection
    `g : Γ ↠ Y` — the source-side equation whose solvability the ζ-cover lift
    indicator reads (`lem:phasecover` l.4377–4379). 
                  (Q2Presentation.Induction.cChildQ2Presentation.Induction.cChild {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPair**The C-child framed pair** (the carrier of `X_Γ(C)`; manuscript
    `C = Y/K` via `B/M' ≅ C`, `mChildCollapse`). 
                      chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.
    
                  (Q2Presentation.Induction.DeltaQ2Presentation.Induction.Delta {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K))
      (Z : Q2Presentation.Induction.ZeroEdgeDescentData chief K lam hinv) (chi : ↥(Q2Presentation.Induction.XT chief K)) :
      (Q2Presentation.Induction.cChild chief K).fst.Y → (Q2Presentation.Induction.cChild chief K).fst.Y → ZMod 2**The phase class `Δ_{χ,κ}` on the C-child carrier** — `DeltaC`
    transported along the canonical collapse `B/M' ≃* C` (`cChildCollapse`);
    the cocycle P7's `phaseCount`/`phaseCoverPair` consume at
    `ζ := Delta Z chi` (design §4.7; per-cocycle discipline, no
    class-invariance asserted). 
                    chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K) ZQ2Presentation.Induction.ZeroEdgeDescentData chief K lam hinv chi↥(Q2Presentation.Induction.XT chief K))
                  BQ2Presentation.BoundaryPackage Q2Presentation.GQ2Profinite
                  (Q2Presentation.Induction.cChildQ2Presentation.Induction.cChild {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPair**The C-child framed pair** (the carrier of `X_Γ(C)`; manuscript
    `C = Y/K` via `B/M' ≅ C`, `mChildCollapse`). 
                      chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.
    
                  ρQ2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst
      (Q2Presentation.Induction.cChild chief K).snd)
    **`q2_zeroEdgePointwise` — the R4b pointwise identity at the LOCAL
    source** (`prop:zeroedge` clauses S3–S5 at `G_ℚ₂`, engine form): the
    `ι`-token is the placed citable `q2_trivialCoeff_h2_line` (NSW (7.1.8)(ii)
    + (7.2.6), audit §H); only the F-∂ floor remains hypothesis-shaped. 
  • theoremdefined in Q2Presentation/Quadratic/ConstrainedGauss.lean
    complete
    theorem Q2Presentation.Quadratic.QuadF2.addLinear_nonsingular_iff.{u_1}
      {VType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } [AddCommGroupAddCommGroup.{u} (G : Type u) : Type uAn additive commutative group is an additive group with commutative `(+)`.  VType u_1] [ModuleModule.{u, v} (R : Type u) (M : Type v) [Semiring R] [AddCommMonoid M] : Type (max u v)A module is a generalization of vector spaces to a scalar semiring.
    It consists of a scalar semiring `R` and an additive monoid of "vectors" `M`,
    connected by a "scalar multiplication" operation `r • x : M`
    (where `r : R` and `x : M`) with some natural associativity and
    distributivity axioms similar to those on a ring.  (ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2) VType u_1]
      (qQ2Presentation.Quadratic.QuadF2 V : Q2Presentation.Quadratic.QuadF2Q2Presentation.Quadratic.QuadF2.{u_2} (V : Type u_2) [AddCommGroup V] [Module (ZMod 2) V] : Type u_2A **quadratic form over `F₂`** with its bilinear polar (commutator) form.  VType u_1) (lModule.Dual (ZMod 2) V : Module.DualModule.Dual.{u_4, u_5} (R : Type u_4) (M : Type u_5) [Semiring R] [AddCommMonoid M] [Module R M] : Type (max u_5 u_4)The left dual space of an R-module M is the R-module of linear maps `M → R`.  (ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2) VType u_1) :
      (qQ2Presentation.Quadratic.QuadF2 V.addLinearQ2Presentation.Quadratic.QuadF2.addLinear.{u_1} {V : Type u_1} [AddCommGroup V] [Module (ZMod 2) V]
      (q : Q2Presentation.Quadratic.QuadF2 V) (l : Module.Dual (ZMod 2) V) : Q2Presentation.Quadratic.QuadF2 VAdding a **linear term** to a `QuadF2` (`eq:Qkappadifference` l.2158–2163 /
    `eq:candidategeneralQ` l.2487–2491 at form level, constants dropped): the polar
    form is unchanged.  lModule.Dual (ZMod 2) V).NonsingularQ2Presentation.Quadratic.QuadF2.Nonsingular.{u_1} {V : Type u_1} [AddCommGroup V] [Module (ZMod 2) V]
      (q : Q2Presentation.Quadratic.QuadF2 V) : Prop**Nonsingularity** (the polar form is nondegenerate / perfect): the only vector
    pairing to `0` with everything is `0`.  For a nonzero invariant form on a simple
    self-dual `V` this is automatic (`lem:zeropolar`, l.3452).  Iff (a b : Prop) : PropIf and only if, or logical bi-implication. `a ↔ b` means that `a` implies `b` and vice versa.
    By `propext`, this implies that `a` and `b` are equal and hence any expression involving `a`
    is equivalent to the corresponding expression with `b` instead.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `↔` in identifiers is `iff`.
    
     * The recommended spelling of `<->` in identifiers is `iff` (prefer `↔` over `<->`). qQ2Presentation.Quadratic.QuadF2 V.NonsingularQ2Presentation.Quadratic.QuadF2.Nonsingular.{u_1} {V : Type u_1} [AddCommGroup V] [Module (ZMod 2) V]
      (q : Q2Presentation.Quadratic.QuadF2 V) : Prop**Nonsingularity** (the polar form is nondegenerate / perfect): the only vector
    pairing to `0` with everything is `0`.  For a nonzero invariant form on a simple
    self-dual `V` this is automatic (`lem:zeropolar`, l.3452). 
    theorem Q2Presentation.Quadratic.QuadF2.addLinear_nonsingular_iff.{u_1}
      {VType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } [AddCommGroupAddCommGroup.{u} (G : Type u) : Type uAn additive commutative group is an additive group with commutative `(+)`.  VType u_1]
      [ModuleModule.{u, v} (R : Type u) (M : Type v) [Semiring R] [AddCommMonoid M] : Type (max u v)A module is a generalization of vector spaces to a scalar semiring.
    It consists of a scalar semiring `R` and an additive monoid of "vectors" `M`,
    connected by a "scalar multiplication" operation `r • x : M`
    (where `r : R` and `x : M`) with some natural associativity and
    distributivity axioms similar to those on a ring.  (ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2) VType u_1]
      (qQ2Presentation.Quadratic.QuadF2 V : Q2Presentation.Quadratic.QuadF2Q2Presentation.Quadratic.QuadF2.{u_2} (V : Type u_2) [AddCommGroup V] [Module (ZMod 2) V] : Type u_2A **quadratic form over `F₂`** with its bilinear polar (commutator) form.  VType u_1)
      (lModule.Dual (ZMod 2) V : Module.DualModule.Dual.{u_4, u_5} (R : Type u_4) (M : Type u_5) [Semiring R] [AddCommMonoid M] [Module R M] : Type (max u_5 u_4)The left dual space of an R-module M is the R-module of linear maps `M → R`.  (ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2) VType u_1) :
      (qQ2Presentation.Quadratic.QuadF2 V.addLinearQ2Presentation.Quadratic.QuadF2.addLinear.{u_1} {V : Type u_1} [AddCommGroup V] [Module (ZMod 2) V]
      (q : Q2Presentation.Quadratic.QuadF2 V) (l : Module.Dual (ZMod 2) V) : Q2Presentation.Quadratic.QuadF2 VAdding a **linear term** to a `QuadF2` (`eq:Qkappadifference` l.2158–2163 /
    `eq:candidategeneralQ` l.2487–2491 at form level, constants dropped): the polar
    form is unchanged.  lModule.Dual (ZMod 2) V).NonsingularQ2Presentation.Quadratic.QuadF2.Nonsingular.{u_1} {V : Type u_1} [AddCommGroup V] [Module (ZMod 2) V]
      (q : Q2Presentation.Quadratic.QuadF2 V) : Prop**Nonsingularity** (the polar form is nondegenerate / perfect): the only vector
    pairing to `0` with everything is `0`.  For a nonzero invariant form on a simple
    self-dual `V` this is automatic (`lem:zeropolar`, l.3452).  Iff (a b : Prop) : PropIf and only if, or logical bi-implication. `a ↔ b` means that `a` implies `b` and vice versa.
    By `propext`, this implies that `a` and `b` are equal and hence any expression involving `a`
    is equivalent to the corresponding expression with `b` instead.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `↔` in identifiers is `iff`.
    
     * The recommended spelling of `<->` in identifiers is `iff` (prefer `↔` over `<->`).
        qQ2Presentation.Quadratic.QuadF2 V.NonsingularQ2Presentation.Quadratic.QuadF2.Nonsingular.{u_1} {V : Type u_1} [AddCommGroup V] [Module (ZMod 2) V]
      (q : Q2Presentation.Quadratic.QuadF2 V) : Prop**Nonsingularity** (the polar form is nondegenerate / perfect): the only vector
    pairing to `0` with everything is `0`.  For a nonzero invariant form on a simple
    self-dual `V` this is automatic (`lem:zeropolar`, l.3452). 
    A linear shift preserves nonsingularity (same polar form).  This is why the
    zero-edge count of the *actual* pushout form `Q_κ` may be computed against the
    *base* form `Q⁰` (`prop:zeroedge` l.4358–4366). 
  • theoremdefined in Q2Presentation/Quadratic/GaussSumValue.lean
    complete
    theorem Q2Presentation.Quadratic.gaussSum_eq_of_gaussType_eq.{u_1, u_2}
      {VcType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } {VlType u_2 : Type u_2A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } [AddCommGroupAddCommGroup.{u} (G : Type u) : Type uAn additive commutative group is an additive group with commutative `(+)`.  VcType u_1] [ModuleModule.{u, v} (R : Type u) (M : Type v) [Semiring R] [AddCommMonoid M] : Type (max u v)A module is a generalization of vector spaces to a scalar semiring.
    It consists of a scalar semiring `R` and an additive monoid of "vectors" `M`,
    connected by a "scalar multiplication" operation `r • x : M`
    (where `r : R` and `x : M`) with some natural associativity and
    distributivity axioms similar to those on a ring.  (ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2) VcType u_1]
      [FintypeFintype.{u_4} (α : Type u_4) : Type u_4`Fintype α` means that `α` is finite, i.e. there are only
    finitely many distinct elements of type `α`. The evidence of this
    is a finset `elems` (a list up to permutation without duplicates),
    together with a proof that everything of type `α` is in the list.  VcType u_1] [AddCommGroupAddCommGroup.{u} (G : Type u) : Type uAn additive commutative group is an additive group with commutative `(+)`.  VlType u_2] [ModuleModule.{u, v} (R : Type u) (M : Type v) [Semiring R] [AddCommMonoid M] : Type (max u v)A module is a generalization of vector spaces to a scalar semiring.
    It consists of a scalar semiring `R` and an additive monoid of "vectors" `M`,
    connected by a "scalar multiplication" operation `r • x : M`
    (where `r : R` and `x : M`) with some natural associativity and
    distributivity axioms similar to those on a ring.  (ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2) VlType u_2] [FintypeFintype.{u_4} (α : Type u_4) : Type u_4`Fintype α` means that `α` is finite, i.e. there are only
    finitely many distinct elements of type `α`. The evidence of this
    is a finset `elems` (a list up to permutation without duplicates),
    together with a proof that everything of type `α` is in the list.  VlType u_2]
      (qcQ2Presentation.Quadratic.QuadF2 Vc : Q2Presentation.Quadratic.QuadF2Q2Presentation.Quadratic.QuadF2.{u_2} (V : Type u_2) [AddCommGroup V] [Module (ZMod 2) V] : Type u_2A **quadratic form over `F₂`** with its bilinear polar (commutator) form.  VcType u_1) (hnscqc.Nonsingular : qcQ2Presentation.Quadratic.QuadF2 Vc.NonsingularQ2Presentation.Quadratic.QuadF2.Nonsingular.{u_1} {V : Type u_1} [AddCommGroup V] [Module (ZMod 2) V]
      (q : Q2Presentation.Quadratic.QuadF2 V) : Prop**Nonsingularity** (the polar form is nondegenerate / perfect): the only vector
    pairing to `0` with everything is `0`.  For a nonzero invariant form on a simple
    self-dual `V` this is automatic (`lem:zeropolar`, l.3452). )
      (qlQ2Presentation.Quadratic.QuadF2 Vl : Q2Presentation.Quadratic.QuadF2Q2Presentation.Quadratic.QuadF2.{u_2} (V : Type u_2) [AddCommGroup V] [Module (ZMod 2) V] : Type u_2A **quadratic form over `F₂`** with its bilinear polar (commutator) form.  VlType u_2) (hnslql.Nonsingular : qlQ2Presentation.Quadratic.QuadF2 Vl.NonsingularQ2Presentation.Quadratic.QuadF2.Nonsingular.{u_1} {V : Type u_1} [AddCommGroup V] [Module (ZMod 2) V]
      (q : Q2Presentation.Quadratic.QuadF2 V) : Prop**Nonsingularity** (the polar form is nondegenerate / perfect): the only vector
    pairing to `0` with everything is `0`.  For a nonzero invariant form on a simple
    self-dual `V` this is automatic (`lem:zeropolar`, l.3452). )
      (hdimModule.finrank (ZMod 2) Vc = Module.finrank (ZMod 2) Vl : Module.finrankModule.finrank.{u_1, u_2} (R : Type u_1) (M : Type u_2) [Semiring R] [AddCommMonoid M] [Module R M] : ℕThe rank of a module as a natural number.
    
    For a finite-dimensional vector space `V` over a field `k`, `Module.finrank k V` is equal to
    the dimension of `V` over `k`.
    
    For a general module `M` over a ring `R`, `Module.finrank R M` is defined to be the supremum of the
    cardinalities of the `R`-linearly independent subsets of `M`, if this supremum is finite. It is
    defined by convention to be `0` if this supremum is infinite. See `Module.rank` for a
    cardinal-valued version where infinite rank modules have rank an infinite cardinal.
    
    Note that if `R` is not a field then there can exist modules `M` with `¬(Module.Finite R M)` but
    `finrank R M ≠ 0`. For example `ℚ` has `finrank` equal to `1` over `ℤ`, because the nonempty
    `ℤ`-linearly independent subsets of `ℚ` are precisely the nonzero singletons.  (ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2) VcType u_1 =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`. Module.finrankModule.finrank.{u_1, u_2} (R : Type u_1) (M : Type u_2) [Semiring R] [AddCommMonoid M] [Module R M] : ℕThe rank of a module as a natural number.
    
    For a finite-dimensional vector space `V` over a field `k`, `Module.finrank k V` is equal to
    the dimension of `V` over `k`.
    
    For a general module `M` over a ring `R`, `Module.finrank R M` is defined to be the supremum of the
    cardinalities of the `R`-linearly independent subsets of `M`, if this supremum is finite. It is
    defined by convention to be `0` if this supremum is infinite. See `Module.rank` for a
    cardinal-valued version where infinite rank modules have rank an infinite cardinal.
    
    Note that if `R` is not a field then there can exist modules `M` with `¬(Module.Finite R M)` but
    `finrank R M ≠ 0`. For example `ℚ` has `finrank` equal to `1` over `ℤ`, because the nonempty
    `ℤ`-linearly independent subsets of `ℚ` are precisely the nonzero singletons.  (ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2) VlType u_2)
      (hpos0 < Module.finrank (ZMod 2) Vc : 0 <LT.lt.{u} {α : Type u} [self : LT α] : α → α → PropThe less-than relation: `x < y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `<` in identifiers is `lt`. Module.finrankModule.finrank.{u_1, u_2} (R : Type u_1) (M : Type u_2) [Semiring R] [AddCommMonoid M] [Module R M] : ℕThe rank of a module as a natural number.
    
    For a finite-dimensional vector space `V` over a field `k`, `Module.finrank k V` is equal to
    the dimension of `V` over `k`.
    
    For a general module `M` over a ring `R`, `Module.finrank R M` is defined to be the supremum of the
    cardinalities of the `R`-linearly independent subsets of `M`, if this supremum is finite. It is
    defined by convention to be `0` if this supremum is infinite. See `Module.rank` for a
    cardinal-valued version where infinite rank modules have rank an infinite cardinal.
    
    Note that if `R` is not a field then there can exist modules `M` with `¬(Module.Finite R M)` but
    `finrank R M ≠ 0`. For example `ℚ` has `finrank` equal to `1` over `ℤ`, because the nonempty
    `ℤ`-linearly independent subsets of `ℚ` are precisely the nonzero singletons.  (ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2) VcType u_1)
      (htypeQ2Presentation.Quadratic.gaussType qc = Q2Presentation.Quadratic.gaussType ql :
        Q2Presentation.Quadratic.gaussTypeQ2Presentation.Quadratic.gaussType.{u_1} {V : Type u_1} [AddCommGroup V] [Module (ZMod 2) V]
      (q : Q2Presentation.Quadratic.QuadF2 V) : BoolThe **Gauss type** of a quadratic form: the `Bool`-valued ramification flag read
    off from its zero count — `true` (plus type / ramified) iff the count is the plus
    value `baseZeroCount true d`, else `false` (minus type / unramified).  This is the
    form's own Arf type made into the *unique* `ram` for which `# Q⁻¹(0) = baseZeroCount
    ram d` (uniqueness is `baseZeroCount_ne`; that this `ram` is *realized* is the Dickson
    zero count, `candidate_numZeros_eq_gaussType` / `q2_local_numZeros_eq_gaussType`
    in `DicksonCount.lean`).  Tying the flag to the form this way is exactly
    the de-bugging of the old *free* `ram` argument.  qcQ2Presentation.Quadratic.QuadF2 Vc =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`.
          Q2Presentation.Quadratic.gaussTypeQ2Presentation.Quadratic.gaussType.{u_1} {V : Type u_1} [AddCommGroup V] [Module (ZMod 2) V]
      (q : Q2Presentation.Quadratic.QuadF2 V) : BoolThe **Gauss type** of a quadratic form: the `Bool`-valued ramification flag read
    off from its zero count — `true` (plus type / ramified) iff the count is the plus
    value `baseZeroCount true d`, else `false` (minus type / unramified).  This is the
    form's own Arf type made into the *unique* `ram` for which `# Q⁻¹(0) = baseZeroCount
    ram d` (uniqueness is `baseZeroCount_ne`; that this `ram` is *realized* is the Dickson
    zero count, `candidate_numZeros_eq_gaussType` / `q2_local_numZeros_eq_gaussType`
    in `DicksonCount.lean`).  Tying the flag to the form this way is exactly
    the de-bugging of the old *free* `ram` argument.  qlQ2Presentation.Quadratic.QuadF2 Vl) :
      Q2Presentation.Quadratic.Dickson.gaussSumQ2Presentation.Quadratic.Dickson.gaussSum.{u_1} {V : Type u_1} [AddCommGroup V] [Module (ZMod 2) V] [Fintype V]
      (q : Q2Presentation.Quadratic.QuadF2 V) : ℤThe **Gauss sum** `D(q) = ∑_v χ(q v)`.  qcQ2Presentation.Quadratic.QuadF2 Vc =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`.
        Q2Presentation.Quadratic.Dickson.gaussSumQ2Presentation.Quadratic.Dickson.gaussSum.{u_1} {V : Type u_1} [AddCommGroup V] [Module (ZMod 2) V] [Fintype V]
      (q : Q2Presentation.Quadratic.QuadF2 V) : ℤThe **Gauss sum** `D(q) = ∑_v χ(q v)`.  qlQ2Presentation.Quadratic.QuadF2 Vl
    theorem Q2Presentation.Quadratic.gaussSum_eq_of_gaussType_eq.{u_1,
        u_2}
      {VcType u_1 : Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. } {VlType u_2 : Type u_2A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. }
      [AddCommGroupAddCommGroup.{u} (G : Type u) : Type uAn additive commutative group is an additive group with commutative `(+)`.  VcType u_1] [ModuleModule.{u, v} (R : Type u) (M : Type v) [Semiring R] [AddCommMonoid M] : Type (max u v)A module is a generalization of vector spaces to a scalar semiring.
    It consists of a scalar semiring `R` and an additive monoid of "vectors" `M`,
    connected by a "scalar multiplication" operation `r • x : M`
    (where `r : R` and `x : M`) with some natural associativity and
    distributivity axioms similar to those on a ring.  (ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2) VcType u_1]
      [FintypeFintype.{u_4} (α : Type u_4) : Type u_4`Fintype α` means that `α` is finite, i.e. there are only
    finitely many distinct elements of type `α`. The evidence of this
    is a finset `elems` (a list up to permutation without duplicates),
    together with a proof that everything of type `α` is in the list.  VcType u_1] [AddCommGroupAddCommGroup.{u} (G : Type u) : Type uAn additive commutative group is an additive group with commutative `(+)`.  VlType u_2]
      [ModuleModule.{u, v} (R : Type u) (M : Type v) [Semiring R] [AddCommMonoid M] : Type (max u v)A module is a generalization of vector spaces to a scalar semiring.
    It consists of a scalar semiring `R` and an additive monoid of "vectors" `M`,
    connected by a "scalar multiplication" operation `r • x : M`
    (where `r : R` and `x : M`) with some natural associativity and
    distributivity axioms similar to those on a ring.  (ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2) VlType u_2] [FintypeFintype.{u_4} (α : Type u_4) : Type u_4`Fintype α` means that `α` is finite, i.e. there are only
    finitely many distinct elements of type `α`. The evidence of this
    is a finset `elems` (a list up to permutation without duplicates),
    together with a proof that everything of type `α` is in the list.  VlType u_2]
      (qcQ2Presentation.Quadratic.QuadF2 Vc :
        Q2Presentation.Quadratic.QuadF2Q2Presentation.Quadratic.QuadF2.{u_2} (V : Type u_2) [AddCommGroup V] [Module (ZMod 2) V] : Type u_2A **quadratic form over `F₂`** with its bilinear polar (commutator) form.  VcType u_1)
      (hnscqc.Nonsingular : qcQ2Presentation.Quadratic.QuadF2 Vc.NonsingularQ2Presentation.Quadratic.QuadF2.Nonsingular.{u_1} {V : Type u_1} [AddCommGroup V] [Module (ZMod 2) V]
      (q : Q2Presentation.Quadratic.QuadF2 V) : Prop**Nonsingularity** (the polar form is nondegenerate / perfect): the only vector
    pairing to `0` with everything is `0`.  For a nonzero invariant form on a simple
    self-dual `V` this is automatic (`lem:zeropolar`, l.3452). )
      (qlQ2Presentation.Quadratic.QuadF2 Vl :
        Q2Presentation.Quadratic.QuadF2Q2Presentation.Quadratic.QuadF2.{u_2} (V : Type u_2) [AddCommGroup V] [Module (ZMod 2) V] : Type u_2A **quadratic form over `F₂`** with its bilinear polar (commutator) form.  VlType u_2)
      (hnslql.Nonsingular : qlQ2Presentation.Quadratic.QuadF2 Vl.NonsingularQ2Presentation.Quadratic.QuadF2.Nonsingular.{u_1} {V : Type u_1} [AddCommGroup V] [Module (ZMod 2) V]
      (q : Q2Presentation.Quadratic.QuadF2 V) : Prop**Nonsingularity** (the polar form is nondegenerate / perfect): the only vector
    pairing to `0` with everything is `0`.  For a nonzero invariant form on a simple
    self-dual `V` this is automatic (`lem:zeropolar`, l.3452). )
      (hdimModule.finrank (ZMod 2) Vc = Module.finrank (ZMod 2) Vl :
        Module.finrankModule.finrank.{u_1, u_2} (R : Type u_1) (M : Type u_2) [Semiring R] [AddCommMonoid M] [Module R M] : ℕThe rank of a module as a natural number.
    
    For a finite-dimensional vector space `V` over a field `k`, `Module.finrank k V` is equal to
    the dimension of `V` over `k`.
    
    For a general module `M` over a ring `R`, `Module.finrank R M` is defined to be the supremum of the
    cardinalities of the `R`-linearly independent subsets of `M`, if this supremum is finite. It is
    defined by convention to be `0` if this supremum is infinite. See `Module.rank` for a
    cardinal-valued version where infinite rank modules have rank an infinite cardinal.
    
    Note that if `R` is not a field then there can exist modules `M` with `¬(Module.Finite R M)` but
    `finrank R M ≠ 0`. For example `ℚ` has `finrank` equal to `1` over `ℤ`, because the nonempty
    `ℤ`-linearly independent subsets of `ℚ` are precisely the nonzero singletons.  (ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2) VcType u_1 =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`.
          Module.finrankModule.finrank.{u_1, u_2} (R : Type u_1) (M : Type u_2) [Semiring R] [AddCommMonoid M] [Module R M] : ℕThe rank of a module as a natural number.
    
    For a finite-dimensional vector space `V` over a field `k`, `Module.finrank k V` is equal to
    the dimension of `V` over `k`.
    
    For a general module `M` over a ring `R`, `Module.finrank R M` is defined to be the supremum of the
    cardinalities of the `R`-linearly independent subsets of `M`, if this supremum is finite. It is
    defined by convention to be `0` if this supremum is infinite. See `Module.rank` for a
    cardinal-valued version where infinite rank modules have rank an infinite cardinal.
    
    Note that if `R` is not a field then there can exist modules `M` with `¬(Module.Finite R M)` but
    `finrank R M ≠ 0`. For example `ℚ` has `finrank` equal to `1` over `ℤ`, because the nonempty
    `ℤ`-linearly independent subsets of `ℚ` are precisely the nonzero singletons.  (ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2) VlType u_2)
      (hpos0 < Module.finrank (ZMod 2) Vc : 0 <LT.lt.{u} {α : Type u} [self : LT α] : α → α → PropThe less-than relation: `x < y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `<` in identifiers is `lt`. Module.finrankModule.finrank.{u_1, u_2} (R : Type u_1) (M : Type u_2) [Semiring R] [AddCommMonoid M] [Module R M] : ℕThe rank of a module as a natural number.
    
    For a finite-dimensional vector space `V` over a field `k`, `Module.finrank k V` is equal to
    the dimension of `V` over `k`.
    
    For a general module `M` over a ring `R`, `Module.finrank R M` is defined to be the supremum of the
    cardinalities of the `R`-linearly independent subsets of `M`, if this supremum is finite. It is
    defined by convention to be `0` if this supremum is infinite. See `Module.rank` for a
    cardinal-valued version where infinite rank modules have rank an infinite cardinal.
    
    Note that if `R` is not a field then there can exist modules `M` with `¬(Module.Finite R M)` but
    `finrank R M ≠ 0`. For example `ℚ` has `finrank` equal to `1` over `ℤ`, because the nonempty
    `ℤ`-linearly independent subsets of `ℚ` are precisely the nonzero singletons.  (ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2) VcType u_1)
      (htypeQ2Presentation.Quadratic.gaussType qc = Q2Presentation.Quadratic.gaussType ql :
        Q2Presentation.Quadratic.gaussTypeQ2Presentation.Quadratic.gaussType.{u_1} {V : Type u_1} [AddCommGroup V] [Module (ZMod 2) V]
      (q : Q2Presentation.Quadratic.QuadF2 V) : BoolThe **Gauss type** of a quadratic form: the `Bool`-valued ramification flag read
    off from its zero count — `true` (plus type / ramified) iff the count is the plus
    value `baseZeroCount true d`, else `false` (minus type / unramified).  This is the
    form's own Arf type made into the *unique* `ram` for which `# Q⁻¹(0) = baseZeroCount
    ram d` (uniqueness is `baseZeroCount_ne`; that this `ram` is *realized* is the Dickson
    zero count, `candidate_numZeros_eq_gaussType` / `q2_local_numZeros_eq_gaussType`
    in `DicksonCount.lean`).  Tying the flag to the form this way is exactly
    the de-bugging of the old *free* `ram` argument. 
            qcQ2Presentation.Quadratic.QuadF2 Vc =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`.
          Q2Presentation.Quadratic.gaussTypeQ2Presentation.Quadratic.gaussType.{u_1} {V : Type u_1} [AddCommGroup V] [Module (ZMod 2) V]
      (q : Q2Presentation.Quadratic.QuadF2 V) : BoolThe **Gauss type** of a quadratic form: the `Bool`-valued ramification flag read
    off from its zero count — `true` (plus type / ramified) iff the count is the plus
    value `baseZeroCount true d`, else `false` (minus type / unramified).  This is the
    form's own Arf type made into the *unique* `ram` for which `# Q⁻¹(0) = baseZeroCount
    ram d` (uniqueness is `baseZeroCount_ne`; that this `ram` is *realized* is the Dickson
    zero count, `candidate_numZeros_eq_gaussType` / `q2_local_numZeros_eq_gaussType`
    in `DicksonCount.lean`).  Tying the flag to the form this way is exactly
    the de-bugging of the old *free* `ram` argument. 
            qlQ2Presentation.Quadratic.QuadF2 Vl) :
      Q2Presentation.Quadratic.Dickson.gaussSumQ2Presentation.Quadratic.Dickson.gaussSum.{u_1} {V : Type u_1} [AddCommGroup V] [Module (ZMod 2) V] [Fintype V]
      (q : Q2Presentation.Quadratic.QuadF2 V) : ℤThe **Gauss sum** `D(q) = ∑_v χ(q v)`. 
          qcQ2Presentation.Quadratic.QuadF2 Vc =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`.
        Q2Presentation.Quadratic.Dickson.gaussSumQ2Presentation.Quadratic.Dickson.gaussSum.{u_1} {V : Type u_1} [AddCommGroup V] [Module (ZMod 2) V] [Fintype V]
      (q : Q2Presentation.Quadratic.QuadF2 V) : ℤThe **Gauss sum** `D(q) = ∑_v χ(q v)`. 
          qlQ2Presentation.Quadratic.QuadF2 Vl
    **The common-Gauss-sum glue for `prop:zeroedge`** (`eq:recursionR4b`
    l.4342–4349): two nonsingular forms of the same positive dimension and the same
    Gauss *type* have the same Gauss *sum* `G(Q⁰) = ±2^{d/2}`.  The two §6
    type-pinning inputs (`gaussType Q_A⁰ = ram(V)` from `prop:candidatezero`,
    `gaussType Q⁰_loc = ram(V)` from `prop:localzero`) plug in here to produce the
    single common factor `G(Q⁰)` of the zero-edge formula. 
Proof

Proved in §8 of the paper. Ingredients: Lemma 8.7 Lemma 6.8 Theorem 6.4 Theorem 6.5.

Lemma 8.15 of the paper (Phase-cover transform).

For \zeta\in H^2(C,\F_2), let p_\zeta:C_\zeta\twoheadrightarrow C be the corresponding central double cover and let n_{\Gamma,0}(\zeta) count the lower exact-image maps for which it is unobstructed. Then

s_\Gamma(\zeta)=2n_{\Gamma,0}(\zeta)-e_\Gamma(C)

and

\boxed{ 8n_{\Gamma,0}(\zeta)= \sum_{\substack{\widetilde J\le C_\zeta\\ p_\zeta(\widetilde J)=C}} e_\Gamma(\widetilde J).}

Lean code for Lemma8.155 declarations
  • defdefined in Q2Presentation/Induction/PhaseCoverTransform.lean
    complete
    def Q2Presentation.Induction.phaseCoverPair
      {pQ2Presentation.Induction.FramedPair : Q2Presentation.Induction.FramedPairQ2Presentation.Induction.FramedPair : Type 1A **framed pair** `(𝒴, F)`: a boundary-framed marked target together with a
    boundary frame for it (manuscript Definition 4.1 + `eq:beta`).  This is the index of
    Theorem 4.2: the boundary-framed surjection count `e_Γ^β` is a function of the pair.
    The induction of `sec:induction` ranges over *all* such pairs simultaneously
    ("the induction is stated globally", l.1213), ordered by `|L_Y|`. }
      (chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p : Q2Presentation.Induction.FirstNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor (p : Q2Presentation.Induction.FramedPair) : TypeA non-scalar chief factor of `L_Y` that is **first**: every chief factor strictly
    below it (i.e. with upper term contained in `lower`) is scalar.  This is the manuscript's
    choice `S ◁ P` at l.3616–3623 ("all chief factors below `S` are scalar and `V` is the
    first non-scalar simple factor"), which `lem:collapse` requires for the coprime step
    `[S, Ñ] = 1`.  pQ2Presentation.Induction.FramedPair)
      (KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor :
        Q2Presentation.Induction.KernelMinimalQ2Presentation.Induction.KernelMinimal {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.NonScalarChiefFactor p) : TypeThe manuscript's kernel choice (l.3623): `K ◁ Y`, `K ≤ P`, `KS = P`, and `K` is
    **⊆-minimal** with these properties — stated as: any `Y`-normal `K' ≤ K` still joining
    with `S` to `P` equals `K`.  (This, not leastness among all candidates, is what
    `lem:simplehead` and `lem:collapse` use: both apply it to subgroups of `K`.)  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p.toNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor.toNonScalarChiefFactor {p : Q2Presentation.Induction.FramedPair}
      (self : Q2Presentation.Induction.FirstNonScalarChiefFactor p) : Q2Presentation.Induction.NonScalarChiefFactor p)
      (zeta(Q2Presentation.Induction.cChild chief K).fst.Y → (Q2Presentation.Induction.cChild chief K).fst.Y → ZMod 2 :
        (Q2Presentation.Induction.cChildQ2Presentation.Induction.cChild {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPair**The C-child framed pair** (the carrier of `X_Γ(C)`; manuscript
    `C = Y/K` via `B/M' ≅ C`, `mChildCollapse`).  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.
    .YQ2Presentation.BoundaryFramedTarget.Y (self : Q2Presentation.BoundaryFramedTarget) : TypeThe finite target group `Y`.  
          (Q2Presentation.Induction.cChildQ2Presentation.Induction.cChild {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPair**The C-child framed pair** (the carrier of `X_Γ(C)`; manuscript
    `C = Y/K` via `B/M' ≅ C`, `mChildCollapse`).  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.
    .YQ2Presentation.BoundaryFramedTarget.Y (self : Q2Presentation.BoundaryFramedTarget) : TypeThe finite target group `Y`.   ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2)
      (hz1∀ (y : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta 1 y = 0 :
         (y(Q2Presentation.Induction.cChild chief K).fst.Y : (Q2Presentation.Induction.cChildQ2Presentation.Induction.cChild {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPair**The C-child framed pair** (the carrier of `X_Γ(C)`; manuscript
    `C = Y/K` via `B/M' ≅ C`, `mChildCollapse`).  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.
    .YQ2Presentation.BoundaryFramedTarget.Y (self : Q2Presentation.BoundaryFramedTarget) : TypeThe finite target group `Y`. ),
          zeta(Q2Presentation.Induction.cChild chief K).fst.Y → (Q2Presentation.Induction.cChild chief K).fst.Y → ZMod 2 1 y(Q2Presentation.Induction.cChild chief K).fst.Y =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`. 0)
      (hz2∀ (y : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta y 1 = 0 :
         (y(Q2Presentation.Induction.cChild chief K).fst.Y : (Q2Presentation.Induction.cChildQ2Presentation.Induction.cChild {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPair**The C-child framed pair** (the carrier of `X_Γ(C)`; manuscript
    `C = Y/K` via `B/M' ≅ C`, `mChildCollapse`).  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.
    .YQ2Presentation.BoundaryFramedTarget.Y (self : Q2Presentation.BoundaryFramedTarget) : TypeThe finite target group `Y`. ),
          zeta(Q2Presentation.Induction.cChild chief K).fst.Y → (Q2Presentation.Induction.cChild chief K).fst.Y → ZMod 2 y(Q2Presentation.Induction.cChild chief K).fst.Y 1 =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`. 0)
      (hzc∀ (a b c : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta a b + zeta (a * b) c = zeta b c + zeta a (b * c) :
         (a(Q2Presentation.Induction.cChild chief K).fst.Y b(Q2Presentation.Induction.cChild chief K).fst.Y c(Q2Presentation.Induction.cChild chief K).fst.Y : (Q2Presentation.Induction.cChildQ2Presentation.Induction.cChild {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPair**The C-child framed pair** (the carrier of `X_Γ(C)`; manuscript
    `C = Y/K` via `B/M' ≅ C`, `mChildCollapse`).  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.
    .YQ2Presentation.BoundaryFramedTarget.Y (self : Q2Presentation.BoundaryFramedTarget) : TypeThe finite target group `Y`. ),
          zeta(Q2Presentation.Induction.cChild chief K).fst.Y → (Q2Presentation.Induction.cChild chief K).fst.Y → ZMod 2 a(Q2Presentation.Induction.cChild chief K).fst.Y b(Q2Presentation.Induction.cChild chief K).fst.Y +HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`. zeta(Q2Presentation.Induction.cChild chief K).fst.Y → (Q2Presentation.Induction.cChild chief K).fst.Y → ZMod 2 (HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.a(Q2Presentation.Induction.cChild chief K).fst.Y *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. b(Q2Presentation.Induction.cChild chief K).fst.Y)HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. c(Q2Presentation.Induction.cChild chief K).fst.Y =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`. zeta(Q2Presentation.Induction.cChild chief K).fst.Y → (Q2Presentation.Induction.cChild chief K).fst.Y → ZMod 2 b(Q2Presentation.Induction.cChild chief K).fst.Y c(Q2Presentation.Induction.cChild chief K).fst.Y +HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`. zeta(Q2Presentation.Induction.cChild chief K).fst.Y → (Q2Presentation.Induction.cChild chief K).fst.Y → ZMod 2 a(Q2Presentation.Induction.cChild chief K).fst.Y (HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.b(Q2Presentation.Induction.cChild chief K).fst.Y *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. c(Q2Presentation.Induction.cChild chief K).fst.Y)HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.) :
      Q2Presentation.Induction.FramedPairQ2Presentation.Induction.FramedPair : Type 1A **framed pair** `(𝒴, F)`: a boundary-framed marked target together with a
    boundary frame for it (manuscript Definition 4.1 + `eq:beta`).  This is the index of
    Theorem 4.2: the boundary-framed surjection count `e_Γ^β` is a function of the pair.
    The induction of `sec:induction` ranges over *all* such pairs simultaneously
    ("the induction is stated globally", l.1213), ordered by `|L_Y|`. 
    def Q2Presentation.Induction.phaseCoverPair
      {pQ2Presentation.Induction.FramedPair :
        Q2Presentation.Induction.FramedPairQ2Presentation.Induction.FramedPair : Type 1A **framed pair** `(𝒴, F)`: a boundary-framed marked target together with a
    boundary frame for it (manuscript Definition 4.1 + `eq:beta`).  This is the index of
    Theorem 4.2: the boundary-framed surjection count `e_Γ^β` is a function of the pair.
    The induction of `sec:induction` ranges over *all* such pairs simultaneously
    ("the induction is stated globally", l.1213), ordered by `|L_Y|`. }
      (chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p :
        Q2Presentation.Induction.FirstNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor (p : Q2Presentation.Induction.FramedPair) : TypeA non-scalar chief factor of `L_Y` that is **first**: every chief factor strictly
    below it (i.e. with upper term contained in `lower`) is scalar.  This is the manuscript's
    choice `S ◁ P` at l.3616–3623 ("all chief factors below `S` are scalar and `V` is the
    first non-scalar simple factor"), which `lem:collapse` requires for the coprime step
    `[S, Ñ] = 1`. 
          pQ2Presentation.Induction.FramedPair)
      (KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor :
        Q2Presentation.Induction.KernelMinimalQ2Presentation.Induction.KernelMinimal {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.NonScalarChiefFactor p) : TypeThe manuscript's kernel choice (l.3623): `K ◁ Y`, `K ≤ P`, `KS = P`, and `K` is
    **⊆-minimal** with these properties — stated as: any `Y`-normal `K' ≤ K` still joining
    with `S` to `P` equals `K`.  (This, not leastness among all candidates, is what
    `lem:simplehead` and `lem:collapse` use: both apply it to subgroups of `K`.) 
          chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p.toNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor.toNonScalarChiefFactor {p : Q2Presentation.Induction.FramedPair}
      (self : Q2Presentation.Induction.FirstNonScalarChiefFactor p) : Q2Presentation.Induction.NonScalarChiefFactor p)
      (zeta(Q2Presentation.Induction.cChild chief K).fst.Y → (Q2Presentation.Induction.cChild chief K).fst.Y → ZMod 2 :
        (Q2Presentation.Induction.cChildQ2Presentation.Induction.cChild {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPair**The C-child framed pair** (the carrier of `X_Γ(C)`; manuscript
    `C = Y/K` via `B/M' ≅ C`, `mChildCollapse`).  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p
                KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.
    .YQ2Presentation.BoundaryFramedTarget.Y (self : Q2Presentation.BoundaryFramedTarget) : TypeThe finite target group `Y`.  
          (Q2Presentation.Induction.cChildQ2Presentation.Induction.cChild {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPair**The C-child framed pair** (the carrier of `X_Γ(C)`; manuscript
    `C = Y/K` via `B/M' ≅ C`, `mChildCollapse`). 
                  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.
    .YQ2Presentation.BoundaryFramedTarget.Y (self : Q2Presentation.BoundaryFramedTarget) : TypeThe finite target group `Y`.  
            ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2)
      (hz1∀ (y : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta 1 y = 0 :
        
          (y(Q2Presentation.Induction.cChild chief K).fst.Y :
            (Q2Presentation.Induction.cChildQ2Presentation.Induction.cChild {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPair**The C-child framed pair** (the carrier of `X_Γ(C)`; manuscript
    `C = Y/K` via `B/M' ≅ C`, `mChildCollapse`). 
                  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.
    .YQ2Presentation.BoundaryFramedTarget.Y (self : Q2Presentation.BoundaryFramedTarget) : TypeThe finite target group `Y`. ),
          zeta(Q2Presentation.Induction.cChild chief K).fst.Y → (Q2Presentation.Induction.cChild chief K).fst.Y → ZMod 2 1 y(Q2Presentation.Induction.cChild chief K).fst.Y =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`. 0)
      (hz2∀ (y : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta y 1 = 0 :
        
          (y(Q2Presentation.Induction.cChild chief K).fst.Y :
            (Q2Presentation.Induction.cChildQ2Presentation.Induction.cChild {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPair**The C-child framed pair** (the carrier of `X_Γ(C)`; manuscript
    `C = Y/K` via `B/M' ≅ C`, `mChildCollapse`). 
                  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.
    .YQ2Presentation.BoundaryFramedTarget.Y (self : Q2Presentation.BoundaryFramedTarget) : TypeThe finite target group `Y`. ),
          zeta(Q2Presentation.Induction.cChild chief K).fst.Y → (Q2Presentation.Induction.cChild chief K).fst.Y → ZMod 2 y(Q2Presentation.Induction.cChild chief K).fst.Y 1 =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`. 0)
      (hzc∀ (a b c : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta a b + zeta (a * b) c = zeta b c + zeta a (b * c) :
        
          (a(Q2Presentation.Induction.cChild chief K).fst.Y b(Q2Presentation.Induction.cChild chief K).fst.Y c(Q2Presentation.Induction.cChild chief K).fst.Y :
            (Q2Presentation.Induction.cChildQ2Presentation.Induction.cChild {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPair**The C-child framed pair** (the carrier of `X_Γ(C)`; manuscript
    `C = Y/K` via `B/M' ≅ C`, `mChildCollapse`). 
                  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.
    .YQ2Presentation.BoundaryFramedTarget.Y (self : Q2Presentation.BoundaryFramedTarget) : TypeThe finite target group `Y`. ),
          zeta(Q2Presentation.Induction.cChild chief K).fst.Y → (Q2Presentation.Induction.cChild chief K).fst.Y → ZMod 2 a(Q2Presentation.Induction.cChild chief K).fst.Y b(Q2Presentation.Induction.cChild chief K).fst.Y +HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`. zeta(Q2Presentation.Induction.cChild chief K).fst.Y → (Q2Presentation.Induction.cChild chief K).fst.Y → ZMod 2 (HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.a(Q2Presentation.Induction.cChild chief K).fst.Y *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. b(Q2Presentation.Induction.cChild chief K).fst.Y)HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. c(Q2Presentation.Induction.cChild chief K).fst.Y =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`.
            zeta(Q2Presentation.Induction.cChild chief K).fst.Y → (Q2Presentation.Induction.cChild chief K).fst.Y → ZMod 2 b(Q2Presentation.Induction.cChild chief K).fst.Y c(Q2Presentation.Induction.cChild chief K).fst.Y +HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`. zeta(Q2Presentation.Induction.cChild chief K).fst.Y → (Q2Presentation.Induction.cChild chief K).fst.Y → ZMod 2 a(Q2Presentation.Induction.cChild chief K).fst.Y (HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.b(Q2Presentation.Induction.cChild chief K).fst.Y *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. c(Q2Presentation.Induction.cChild chief K).fst.Y)HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.) :
      Q2Presentation.Induction.FramedPairQ2Presentation.Induction.FramedPair : Type 1A **framed pair** `(𝒴, F)`: a boundary-framed marked target together with a
    boundary frame for it (manuscript Definition 4.1 + `eq:beta`).  This is the index of
    Theorem 4.2: the boundary-framed surjection count `e_Γ^β` is a function of the pair.
    The induction of `sec:induction` ranges over *all* such pairs simultaneously
    ("the induction is stated globally", l.1213), ordered by `|L_Y|`. 
    **The phase-cover framed pair `C_ζ`** (`lem:phasecover`'s carrier,
    l.4376–4378): the normalized-cocycle central double cover of the C-child,
    with the pulled-back boundary framing of `lem:covertransform`
    (l.3822–3830).  Built by W7a (`Lifting/CocycleCover.lean`); P3-U8's
    `phaseCoverPair` sketch resolves to this definition (P7 owns the carrier,
    U8 imports it — the §2.5/§7 coordination note of the P7 design). 
  • theoremdefined in Q2Presentation/Induction/PhaseCoverTransform.lean
    complete
    theorem Q2Presentation.Induction.sec7_phaseCoverPartition_gammaA
      {pQ2Presentation.Induction.FramedPair : Q2Presentation.Induction.FramedPairQ2Presentation.Induction.FramedPair : Type 1A **framed pair** `(𝒴, F)`: a boundary-framed marked target together with a
    boundary frame for it (manuscript Definition 4.1 + `eq:beta`).  This is the index of
    Theorem 4.2: the boundary-framed surjection count `e_Γ^β` is a function of the pair.
    The induction of `sec:induction` ranges over *all* such pairs simultaneously
    ("the induction is stated globally", l.1213), ordered by `|L_Y|`. }
      (chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p : Q2Presentation.Induction.FirstNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor (p : Q2Presentation.Induction.FramedPair) : TypeA non-scalar chief factor of `L_Y` that is **first**: every chief factor strictly
    below it (i.e. with upper term contained in `lower`) is scalar.  This is the manuscript's
    choice `S ◁ P` at l.3616–3623 ("all chief factors below `S` are scalar and `V` is the
    first non-scalar simple factor"), which `lem:collapse` requires for the coprime step
    `[S, Ñ] = 1`.  pQ2Presentation.Induction.FramedPair)
      (KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor :
        Q2Presentation.Induction.KernelMinimalQ2Presentation.Induction.KernelMinimal {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.NonScalarChiefFactor p) : TypeThe manuscript's kernel choice (l.3623): `K ◁ Y`, `K ≤ P`, `KS = P`, and `K` is
    **⊆-minimal** with these properties — stated as: any `Y`-normal `K' ≤ K` still joining
    with `S` to `P` equals `K`.  (This, not leastness among all candidates, is what
    `lem:simplehead` and `lem:collapse` use: both apply it to subgroups of `K`.)  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p.toNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor.toNonScalarChiefFactor {p : Q2Presentation.Induction.FramedPair}
      (self : Q2Presentation.Induction.FirstNonScalarChiefFactor p) : Q2Presentation.Induction.NonScalarChiefFactor p)
      (zeta(Q2Presentation.Induction.cChild chief K).fst.Y → (Q2Presentation.Induction.cChild chief K).fst.Y → ZMod 2 :
        (Q2Presentation.Induction.cChildQ2Presentation.Induction.cChild {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPair**The C-child framed pair** (the carrier of `X_Γ(C)`; manuscript
    `C = Y/K` via `B/M' ≅ C`, `mChildCollapse`).  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.
    .YQ2Presentation.BoundaryFramedTarget.Y (self : Q2Presentation.BoundaryFramedTarget) : TypeThe finite target group `Y`.  
          (Q2Presentation.Induction.cChildQ2Presentation.Induction.cChild {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPair**The C-child framed pair** (the carrier of `X_Γ(C)`; manuscript
    `C = Y/K` via `B/M' ≅ C`, `mChildCollapse`).  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.
    .YQ2Presentation.BoundaryFramedTarget.Y (self : Q2Presentation.BoundaryFramedTarget) : TypeThe finite target group `Y`.   ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2)
      (hz1∀ (y : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta 1 y = 0 :
         (y(Q2Presentation.Induction.cChild chief K).fst.Y : (Q2Presentation.Induction.cChildQ2Presentation.Induction.cChild {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPair**The C-child framed pair** (the carrier of `X_Γ(C)`; manuscript
    `C = Y/K` via `B/M' ≅ C`, `mChildCollapse`).  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.
    .YQ2Presentation.BoundaryFramedTarget.Y (self : Q2Presentation.BoundaryFramedTarget) : TypeThe finite target group `Y`. ),
          zeta(Q2Presentation.Induction.cChild chief K).fst.Y → (Q2Presentation.Induction.cChild chief K).fst.Y → ZMod 2 1 y(Q2Presentation.Induction.cChild chief K).fst.Y =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`. 0)
      (hz2∀ (y : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta y 1 = 0 :
         (y(Q2Presentation.Induction.cChild chief K).fst.Y : (Q2Presentation.Induction.cChildQ2Presentation.Induction.cChild {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPair**The C-child framed pair** (the carrier of `X_Γ(C)`; manuscript
    `C = Y/K` via `B/M' ≅ C`, `mChildCollapse`).  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.
    .YQ2Presentation.BoundaryFramedTarget.Y (self : Q2Presentation.BoundaryFramedTarget) : TypeThe finite target group `Y`. ),
          zeta(Q2Presentation.Induction.cChild chief K).fst.Y → (Q2Presentation.Induction.cChild chief K).fst.Y → ZMod 2 y(Q2Presentation.Induction.cChild chief K).fst.Y 1 =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`. 0)
      (hzc∀ (a b c : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta a b + zeta (a * b) c = zeta b c + zeta a (b * c) :
         (a(Q2Presentation.Induction.cChild chief K).fst.Y b(Q2Presentation.Induction.cChild chief K).fst.Y c(Q2Presentation.Induction.cChild chief K).fst.Y : (Q2Presentation.Induction.cChildQ2Presentation.Induction.cChild {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPair**The C-child framed pair** (the carrier of `X_Γ(C)`; manuscript
    `C = Y/K` via `B/M' ≅ C`, `mChildCollapse`).  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.
    .YQ2Presentation.BoundaryFramedTarget.Y (self : Q2Presentation.BoundaryFramedTarget) : TypeThe finite target group `Y`. ),
          zeta(Q2Presentation.Induction.cChild chief K).fst.Y → (Q2Presentation.Induction.cChild chief K).fst.Y → ZMod 2 a(Q2Presentation.Induction.cChild chief K).fst.Y b(Q2Presentation.Induction.cChild chief K).fst.Y +HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`. zeta(Q2Presentation.Induction.cChild chief K).fst.Y → (Q2Presentation.Induction.cChild chief K).fst.Y → ZMod 2 (HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.a(Q2Presentation.Induction.cChild chief K).fst.Y *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. b(Q2Presentation.Induction.cChild chief K).fst.Y)HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. c(Q2Presentation.Induction.cChild chief K).fst.Y =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`. zeta(Q2Presentation.Induction.cChild chief K).fst.Y → (Q2Presentation.Induction.cChild chief K).fst.Y → ZMod 2 b(Q2Presentation.Induction.cChild chief K).fst.Y c(Q2Presentation.Induction.cChild chief K).fst.Y +HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`. zeta(Q2Presentation.Induction.cChild chief K).fst.Y → (Q2Presentation.Induction.cChild chief K).fst.Y → ZMod 2 a(Q2Presentation.Induction.cChild chief K).fst.Y (HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.b(Q2Presentation.Induction.cChild chief K).fst.Y *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. c(Q2Presentation.Induction.cChild chief K).fst.Y)HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.) :
      8 *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
          Q2Presentation.Induction.phaseCountQ2Presentation.Induction.phaseCount {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (zeta : (Q2Presentation.Induction.cChild chief K).fst.Y → (Q2Presentation.Induction.cChild chief K).fst.Y → ZMod 2)
      (hz1 : ∀ (y : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta 1 y = 0)
      (hz2 : ∀ (y : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta y 1 = 0)
      (hzc :
        ∀ (a b c : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta a b + zeta (a * b) c = zeta b c + zeta a (b * c))
      {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) : ℕ**`n_{Γ,0}(ζ)`** (l.4377–4379): the number of lower exact-image maps
    `ρ ∈ X_Γ(C)` for which the phase cover is unobstructed, i.e. which admit a
    weak (no image condition) framed lift through `p_ζ`.  The child transport
    of P3-§4.7's `phaseChildTransport` slot is W7a's `cocycleChildEquiv`,
    absorbed into `cocycleCoverLiftHom`.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor zeta(Q2Presentation.Induction.cChild chief K).fst.Y → (Q2Presentation.Induction.cChild chief K).fst.Y → ZMod 2 hz1∀ (y : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta 1 y = 0 hz2∀ (y : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta y 1 = 0 hzc∀ (a b c : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta a b + zeta (a * b) c = zeta b c + zeta a (b * c)
            Q2Presentation.boundaryPackage_GammaAQ2Presentation.boundaryPackage_GammaA : Q2Presentation.BoundaryPackage Q2Presentation.GammaA**The candidate boundary package** (manuscript Prop 3.14, `prop:compatiblemarking`;
    plan Turn 4 §6).  The Stage-C data of `Γ_A`: the common tame quotient `gammaTameMap`,
    the maximal pro-`2` quotient `p : Γ_A ⟶ Π`, and the common unramified character
    `ν = gammaTameMap ≫ ν_t`, through which both factor.  =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`.
         JQ2Presentation.Induction.phaseCoverStrata chief K zeta hz1 hz2 hzc,
          Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number.
    If `α` is infinite, `Nat.card α = 0`. 
            (Q2Presentation.boundaryFramedSurjQ2Presentation.boundaryFramedSurj {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ)
      (Yt : Q2Presentation.BoundaryFramedTarget) (F : Q2Presentation.BoundaryFrame Yt) : TypeThe **boundary-framed surjections** `e_Γ^β(𝒴)` (manuscript `eq:eGamma`): the
    continuous surjections `f : Γ ↠ Y` whose induced map to `H × E` is the prescribed
    `β ∘ b_Γ`, i.e. `q_Y ∘ f = β ∘ b_Γ`.  This is the subtype counted in Theorem 4.2;
    its cardinality is `e_Γ^β(𝒴)`. 
              Q2Presentation.boundaryPackage_GammaAQ2Presentation.boundaryPackage_GammaA : Q2Presentation.BoundaryPackage Q2Presentation.GammaA**The candidate boundary package** (manuscript Prop 3.14, `prop:compatiblemarking`;
    plan Turn 4 §6).  The Stage-C data of `Γ_A`: the common tame quotient `gammaTameMap`,
    the maximal pro-`2` quotient `p : Γ_A ⟶ Π`, and the common unramified character
    `ν = gammaTameMap ≫ ν_t`, through which both factor. 
              (Q2Presentation.Induction.phaseStratumPairQ2Presentation.Induction.phaseStratumPair {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (zeta : (Q2Presentation.Induction.cChild chief K).fst.Y → (Q2Presentation.Induction.cChild chief K).fst.Y → ZMod 2)
      (hz1 : ∀ (y : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta 1 y = 0)
      (hz2 : ∀ (y : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta y 1 = 0)
      (hzc :
        ∀ (a b c : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta a b + zeta (a * b) c = zeta b c + zeta a (b * c))
      (J : Q2Presentation.Induction.phaseCoverStrata chief K zeta hz1 hz2 hzc) : Q2Presentation.Induction.FramedPairThe stratum framed pair `(J̃, J̃ ∩ L̃, π̃|_J̃, θ̃|_J̃; same frame)` — an
    ordinary exact-image object in the same global boundary-framed category
    (l.3841–3843; mirror of `scalarCoverStratumPair`).  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor zeta(Q2Presentation.Induction.cChild chief K).fst.Y → (Q2Presentation.Induction.cChild chief K).fst.Y → ZMod 2 hz1∀ (y : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta 1 y = 0
                  hz2∀ (y : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta y 1 = 0 hzc∀ (a b c : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta a b + zeta (a * b) c = zeta b c + zeta a (b * c) JQ2Presentation.Induction.phaseCoverStrata chief K zeta hz1 hz2 hzc).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.
    
              (Q2Presentation.Induction.phaseStratumPairQ2Presentation.Induction.phaseStratumPair {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (zeta : (Q2Presentation.Induction.cChild chief K).fst.Y → (Q2Presentation.Induction.cChild chief K).fst.Y → ZMod 2)
      (hz1 : ∀ (y : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta 1 y = 0)
      (hz2 : ∀ (y : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta y 1 = 0)
      (hzc :
        ∀ (a b c : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta a b + zeta (a * b) c = zeta b c + zeta a (b * c))
      (J : Q2Presentation.Induction.phaseCoverStrata chief K zeta hz1 hz2 hzc) : Q2Presentation.Induction.FramedPairThe stratum framed pair `(J̃, J̃ ∩ L̃, π̃|_J̃, θ̃|_J̃; same frame)` — an
    ordinary exact-image object in the same global boundary-framed category
    (l.3841–3843; mirror of `scalarCoverStratumPair`).  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor zeta(Q2Presentation.Induction.cChild chief K).fst.Y → (Q2Presentation.Induction.cChild chief K).fst.Y → ZMod 2 hz1∀ (y : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta 1 y = 0
                  hz2∀ (y : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta y 1 = 0 hzc∀ (a b c : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta a b + zeta (a * b) c = zeta b c + zeta a (b * c) JQ2Presentation.Induction.phaseCoverStrata chief K zeta hz1 hz2 hzc).sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.
    )
    theorem Q2Presentation.Induction.sec7_phaseCoverPartition_gammaA
      {pQ2Presentation.Induction.FramedPair :
        Q2Presentation.Induction.FramedPairQ2Presentation.Induction.FramedPair : Type 1A **framed pair** `(𝒴, F)`: a boundary-framed marked target together with a
    boundary frame for it (manuscript Definition 4.1 + `eq:beta`).  This is the index of
    Theorem 4.2: the boundary-framed surjection count `e_Γ^β` is a function of the pair.
    The induction of `sec:induction` ranges over *all* such pairs simultaneously
    ("the induction is stated globally", l.1213), ordered by `|L_Y|`. }
      (chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p :
        Q2Presentation.Induction.FirstNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor (p : Q2Presentation.Induction.FramedPair) : TypeA non-scalar chief factor of `L_Y` that is **first**: every chief factor strictly
    below it (i.e. with upper term contained in `lower`) is scalar.  This is the manuscript's
    choice `S ◁ P` at l.3616–3623 ("all chief factors below `S` are scalar and `V` is the
    first non-scalar simple factor"), which `lem:collapse` requires for the coprime step
    `[S, Ñ] = 1`. 
          pQ2Presentation.Induction.FramedPair)
      (KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor :
        Q2Presentation.Induction.KernelMinimalQ2Presentation.Induction.KernelMinimal {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.NonScalarChiefFactor p) : TypeThe manuscript's kernel choice (l.3623): `K ◁ Y`, `K ≤ P`, `KS = P`, and `K` is
    **⊆-minimal** with these properties — stated as: any `Y`-normal `K' ≤ K` still joining
    with `S` to `P` equals `K`.  (This, not leastness among all candidates, is what
    `lem:simplehead` and `lem:collapse` use: both apply it to subgroups of `K`.) 
          chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p.toNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor.toNonScalarChiefFactor {p : Q2Presentation.Induction.FramedPair}
      (self : Q2Presentation.Induction.FirstNonScalarChiefFactor p) : Q2Presentation.Induction.NonScalarChiefFactor p)
      (zeta(Q2Presentation.Induction.cChild chief K).fst.Y → (Q2Presentation.Induction.cChild chief K).fst.Y → ZMod 2 :
        (Q2Presentation.Induction.cChildQ2Presentation.Induction.cChild {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPair**The C-child framed pair** (the carrier of `X_Γ(C)`; manuscript
    `C = Y/K` via `B/M' ≅ C`, `mChildCollapse`).  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p
                KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.
    .YQ2Presentation.BoundaryFramedTarget.Y (self : Q2Presentation.BoundaryFramedTarget) : TypeThe finite target group `Y`.  
          (Q2Presentation.Induction.cChildQ2Presentation.Induction.cChild {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPair**The C-child framed pair** (the carrier of `X_Γ(C)`; manuscript
    `C = Y/K` via `B/M' ≅ C`, `mChildCollapse`). 
                  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.
    .YQ2Presentation.BoundaryFramedTarget.Y (self : Q2Presentation.BoundaryFramedTarget) : TypeThe finite target group `Y`.  
            ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2)
      (hz1∀ (y : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta 1 y = 0 :
        
          (y(Q2Presentation.Induction.cChild chief K).fst.Y :
            (Q2Presentation.Induction.cChildQ2Presentation.Induction.cChild {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPair**The C-child framed pair** (the carrier of `X_Γ(C)`; manuscript
    `C = Y/K` via `B/M' ≅ C`, `mChildCollapse`). 
                  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.
    .YQ2Presentation.BoundaryFramedTarget.Y (self : Q2Presentation.BoundaryFramedTarget) : TypeThe finite target group `Y`. ),
          zeta(Q2Presentation.Induction.cChild chief K).fst.Y → (Q2Presentation.Induction.cChild chief K).fst.Y → ZMod 2 1 y(Q2Presentation.Induction.cChild chief K).fst.Y =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`. 0)
      (hz2∀ (y : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta y 1 = 0 :
        
          (y(Q2Presentation.Induction.cChild chief K).fst.Y :
            (Q2Presentation.Induction.cChildQ2Presentation.Induction.cChild {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPair**The C-child framed pair** (the carrier of `X_Γ(C)`; manuscript
    `C = Y/K` via `B/M' ≅ C`, `mChildCollapse`). 
                  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.
    .YQ2Presentation.BoundaryFramedTarget.Y (self : Q2Presentation.BoundaryFramedTarget) : TypeThe finite target group `Y`. ),
          zeta(Q2Presentation.Induction.cChild chief K).fst.Y → (Q2Presentation.Induction.cChild chief K).fst.Y → ZMod 2 y(Q2Presentation.Induction.cChild chief K).fst.Y 1 =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`. 0)
      (hzc∀ (a b c : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta a b + zeta (a * b) c = zeta b c + zeta a (b * c) :
        
          (a(Q2Presentation.Induction.cChild chief K).fst.Y b(Q2Presentation.Induction.cChild chief K).fst.Y c(Q2Presentation.Induction.cChild chief K).fst.Y :
            (Q2Presentation.Induction.cChildQ2Presentation.Induction.cChild {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPair**The C-child framed pair** (the carrier of `X_Γ(C)`; manuscript
    `C = Y/K` via `B/M' ≅ C`, `mChildCollapse`). 
                  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.
    .YQ2Presentation.BoundaryFramedTarget.Y (self : Q2Presentation.BoundaryFramedTarget) : TypeThe finite target group `Y`. ),
          zeta(Q2Presentation.Induction.cChild chief K).fst.Y → (Q2Presentation.Induction.cChild chief K).fst.Y → ZMod 2 a(Q2Presentation.Induction.cChild chief K).fst.Y b(Q2Presentation.Induction.cChild chief K).fst.Y +HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`. zeta(Q2Presentation.Induction.cChild chief K).fst.Y → (Q2Presentation.Induction.cChild chief K).fst.Y → ZMod 2 (HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.a(Q2Presentation.Induction.cChild chief K).fst.Y *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. b(Q2Presentation.Induction.cChild chief K).fst.Y)HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. c(Q2Presentation.Induction.cChild chief K).fst.Y =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`.
            zeta(Q2Presentation.Induction.cChild chief K).fst.Y → (Q2Presentation.Induction.cChild chief K).fst.Y → ZMod 2 b(Q2Presentation.Induction.cChild chief K).fst.Y c(Q2Presentation.Induction.cChild chief K).fst.Y +HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`. zeta(Q2Presentation.Induction.cChild chief K).fst.Y → (Q2Presentation.Induction.cChild chief K).fst.Y → ZMod 2 a(Q2Presentation.Induction.cChild chief K).fst.Y (HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.b(Q2Presentation.Induction.cChild chief K).fst.Y *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. c(Q2Presentation.Induction.cChild chief K).fst.Y)HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.) :
      8 *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
          Q2Presentation.Induction.phaseCountQ2Presentation.Induction.phaseCount {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (zeta : (Q2Presentation.Induction.cChild chief K).fst.Y → (Q2Presentation.Induction.cChild chief K).fst.Y → ZMod 2)
      (hz1 : ∀ (y : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta 1 y = 0)
      (hz2 : ∀ (y : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta y 1 = 0)
      (hzc :
        ∀ (a b c : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta a b + zeta (a * b) c = zeta b c + zeta a (b * c))
      {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) : ℕ**`n_{Γ,0}(ζ)`** (l.4377–4379): the number of lower exact-image maps
    `ρ ∈ X_Γ(C)` for which the phase cover is unobstructed, i.e. which admit a
    weak (no image condition) framed lift through `p_ζ`.  The child transport
    of P3-§4.7's `phaseChildTransport` slot is W7a's `cocycleChildEquiv`,
    absorbed into `cocycleCoverLiftHom`. 
            chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor zeta(Q2Presentation.Induction.cChild chief K).fst.Y → (Q2Presentation.Induction.cChild chief K).fst.Y → ZMod 2 hz1∀ (y : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta 1 y = 0 hz2∀ (y : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta y 1 = 0 hzc∀ (a b c : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta a b + zeta (a * b) c = zeta b c + zeta a (b * c)
            Q2Presentation.boundaryPackage_GammaAQ2Presentation.boundaryPackage_GammaA : Q2Presentation.BoundaryPackage Q2Presentation.GammaA**The candidate boundary package** (manuscript Prop 3.14, `prop:compatiblemarking`;
    plan Turn 4 §6).  The Stage-C data of `Γ_A`: the common tame quotient `gammaTameMap`,
    the maximal pro-`2` quotient `p : Γ_A ⟶ Π`, and the common unramified character
    `ν = gammaTameMap ≫ ν_t`, through which both factor.  =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`.
         JQ2Presentation.Induction.phaseCoverStrata chief K zeta hz1 hz2 hzc,
          Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number.
    If `α` is infinite, `Nat.card α = 0`. 
            (Q2Presentation.boundaryFramedSurjQ2Presentation.boundaryFramedSurj {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ)
      (Yt : Q2Presentation.BoundaryFramedTarget) (F : Q2Presentation.BoundaryFrame Yt) : TypeThe **boundary-framed surjections** `e_Γ^β(𝒴)` (manuscript `eq:eGamma`): the
    continuous surjections `f : Γ ↠ Y` whose induced map to `H × E` is the prescribed
    `β ∘ b_Γ`, i.e. `q_Y ∘ f = β ∘ b_Γ`.  This is the subtype counted in Theorem 4.2;
    its cardinality is `e_Γ^β(𝒴)`. 
              Q2Presentation.boundaryPackage_GammaAQ2Presentation.boundaryPackage_GammaA : Q2Presentation.BoundaryPackage Q2Presentation.GammaA**The candidate boundary package** (manuscript Prop 3.14, `prop:compatiblemarking`;
    plan Turn 4 §6).  The Stage-C data of `Γ_A`: the common tame quotient `gammaTameMap`,
    the maximal pro-`2` quotient `p : Γ_A ⟶ Π`, and the common unramified character
    `ν = gammaTameMap ≫ ν_t`, through which both factor. 
              (Q2Presentation.Induction.phaseStratumPairQ2Presentation.Induction.phaseStratumPair {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (zeta : (Q2Presentation.Induction.cChild chief K).fst.Y → (Q2Presentation.Induction.cChild chief K).fst.Y → ZMod 2)
      (hz1 : ∀ (y : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta 1 y = 0)
      (hz2 : ∀ (y : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta y 1 = 0)
      (hzc :
        ∀ (a b c : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta a b + zeta (a * b) c = zeta b c + zeta a (b * c))
      (J : Q2Presentation.Induction.phaseCoverStrata chief K zeta hz1 hz2 hzc) : Q2Presentation.Induction.FramedPairThe stratum framed pair `(J̃, J̃ ∩ L̃, π̃|_J̃, θ̃|_J̃; same frame)` — an
    ordinary exact-image object in the same global boundary-framed category
    (l.3841–3843; mirror of `scalarCoverStratumPair`). 
                  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor zeta(Q2Presentation.Induction.cChild chief K).fst.Y → (Q2Presentation.Induction.cChild chief K).fst.Y → ZMod 2 hz1∀ (y : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta 1 y = 0 hz2∀ (y : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta y 1 = 0 hzc∀ (a b c : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta a b + zeta (a * b) c = zeta b c + zeta a (b * c)
                  JQ2Presentation.Induction.phaseCoverStrata chief K zeta hz1 hz2 hzc).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.
    
              (Q2Presentation.Induction.phaseStratumPairQ2Presentation.Induction.phaseStratumPair {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (zeta : (Q2Presentation.Induction.cChild chief K).fst.Y → (Q2Presentation.Induction.cChild chief K).fst.Y → ZMod 2)
      (hz1 : ∀ (y : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta 1 y = 0)
      (hz2 : ∀ (y : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta y 1 = 0)
      (hzc :
        ∀ (a b c : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta a b + zeta (a * b) c = zeta b c + zeta a (b * c))
      (J : Q2Presentation.Induction.phaseCoverStrata chief K zeta hz1 hz2 hzc) : Q2Presentation.Induction.FramedPairThe stratum framed pair `(J̃, J̃ ∩ L̃, π̃|_J̃, θ̃|_J̃; same frame)` — an
    ordinary exact-image object in the same global boundary-framed category
    (l.3841–3843; mirror of `scalarCoverStratumPair`). 
                  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor zeta(Q2Presentation.Induction.cChild chief K).fst.Y → (Q2Presentation.Induction.cChild chief K).fst.Y → ZMod 2 hz1∀ (y : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta 1 y = 0 hz2∀ (y : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta y 1 = 0 hzc∀ (a b c : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta a b + zeta (a * b) c = zeta b c + zeta a (b * c)
                  JQ2Presentation.Induction.phaseCoverStrata chief K zeta hz1 hz2 hzc).sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.
    )
    **`lem:phasecover` `eq:phasecovertransform` (l.4384–4390), candidate
    source**: the exact eight-lift partition of `lem:covertransform` applied to
    `p_ζ` at the FULL lower target (manuscript proof l.4395–4396) — a literal
    partition, no equidistribution assumption (l.3853–3856), `hR`-free and
    division-free. 
  • theoremdefined in Q2Presentation/Induction/PhaseCoverTransform.lean
    complete
    theorem Q2Presentation.Induction.sec7_phaseCoverPartition_gq2
      {pQ2Presentation.Induction.FramedPair : Q2Presentation.Induction.FramedPairQ2Presentation.Induction.FramedPair : Type 1A **framed pair** `(𝒴, F)`: a boundary-framed marked target together with a
    boundary frame for it (manuscript Definition 4.1 + `eq:beta`).  This is the index of
    Theorem 4.2: the boundary-framed surjection count `e_Γ^β` is a function of the pair.
    The induction of `sec:induction` ranges over *all* such pairs simultaneously
    ("the induction is stated globally", l.1213), ordered by `|L_Y|`. }
      (chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p : Q2Presentation.Induction.FirstNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor (p : Q2Presentation.Induction.FramedPair) : TypeA non-scalar chief factor of `L_Y` that is **first**: every chief factor strictly
    below it (i.e. with upper term contained in `lower`) is scalar.  This is the manuscript's
    choice `S ◁ P` at l.3616–3623 ("all chief factors below `S` are scalar and `V` is the
    first non-scalar simple factor"), which `lem:collapse` requires for the coprime step
    `[S, Ñ] = 1`.  pQ2Presentation.Induction.FramedPair)
      (KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor :
        Q2Presentation.Induction.KernelMinimalQ2Presentation.Induction.KernelMinimal {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.NonScalarChiefFactor p) : TypeThe manuscript's kernel choice (l.3623): `K ◁ Y`, `K ≤ P`, `KS = P`, and `K` is
    **⊆-minimal** with these properties — stated as: any `Y`-normal `K' ≤ K` still joining
    with `S` to `P` equals `K`.  (This, not leastness among all candidates, is what
    `lem:simplehead` and `lem:collapse` use: both apply it to subgroups of `K`.)  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p.toNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor.toNonScalarChiefFactor {p : Q2Presentation.Induction.FramedPair}
      (self : Q2Presentation.Induction.FirstNonScalarChiefFactor p) : Q2Presentation.Induction.NonScalarChiefFactor p)
      (zeta(Q2Presentation.Induction.cChild chief K).fst.Y → (Q2Presentation.Induction.cChild chief K).fst.Y → ZMod 2 :
        (Q2Presentation.Induction.cChildQ2Presentation.Induction.cChild {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPair**The C-child framed pair** (the carrier of `X_Γ(C)`; manuscript
    `C = Y/K` via `B/M' ≅ C`, `mChildCollapse`).  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.
    .YQ2Presentation.BoundaryFramedTarget.Y (self : Q2Presentation.BoundaryFramedTarget) : TypeThe finite target group `Y`.  
          (Q2Presentation.Induction.cChildQ2Presentation.Induction.cChild {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPair**The C-child framed pair** (the carrier of `X_Γ(C)`; manuscript
    `C = Y/K` via `B/M' ≅ C`, `mChildCollapse`).  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.
    .YQ2Presentation.BoundaryFramedTarget.Y (self : Q2Presentation.BoundaryFramedTarget) : TypeThe finite target group `Y`.   ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2)
      (hz1∀ (y : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta 1 y = 0 :
         (y(Q2Presentation.Induction.cChild chief K).fst.Y : (Q2Presentation.Induction.cChildQ2Presentation.Induction.cChild {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPair**The C-child framed pair** (the carrier of `X_Γ(C)`; manuscript
    `C = Y/K` via `B/M' ≅ C`, `mChildCollapse`).  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.
    .YQ2Presentation.BoundaryFramedTarget.Y (self : Q2Presentation.BoundaryFramedTarget) : TypeThe finite target group `Y`. ),
          zeta(Q2Presentation.Induction.cChild chief K).fst.Y → (Q2Presentation.Induction.cChild chief K).fst.Y → ZMod 2 1 y(Q2Presentation.Induction.cChild chief K).fst.Y =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`. 0)
      (hz2∀ (y : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta y 1 = 0 :
         (y(Q2Presentation.Induction.cChild chief K).fst.Y : (Q2Presentation.Induction.cChildQ2Presentation.Induction.cChild {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPair**The C-child framed pair** (the carrier of `X_Γ(C)`; manuscript
    `C = Y/K` via `B/M' ≅ C`, `mChildCollapse`).  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.
    .YQ2Presentation.BoundaryFramedTarget.Y (self : Q2Presentation.BoundaryFramedTarget) : TypeThe finite target group `Y`. ),
          zeta(Q2Presentation.Induction.cChild chief K).fst.Y → (Q2Presentation.Induction.cChild chief K).fst.Y → ZMod 2 y(Q2Presentation.Induction.cChild chief K).fst.Y 1 =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`. 0)
      (hzc∀ (a b c : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta a b + zeta (a * b) c = zeta b c + zeta a (b * c) :
         (a(Q2Presentation.Induction.cChild chief K).fst.Y b(Q2Presentation.Induction.cChild chief K).fst.Y c(Q2Presentation.Induction.cChild chief K).fst.Y : (Q2Presentation.Induction.cChildQ2Presentation.Induction.cChild {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPair**The C-child framed pair** (the carrier of `X_Γ(C)`; manuscript
    `C = Y/K` via `B/M' ≅ C`, `mChildCollapse`).  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.
    .YQ2Presentation.BoundaryFramedTarget.Y (self : Q2Presentation.BoundaryFramedTarget) : TypeThe finite target group `Y`. ),
          zeta(Q2Presentation.Induction.cChild chief K).fst.Y → (Q2Presentation.Induction.cChild chief K).fst.Y → ZMod 2 a(Q2Presentation.Induction.cChild chief K).fst.Y b(Q2Presentation.Induction.cChild chief K).fst.Y +HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`. zeta(Q2Presentation.Induction.cChild chief K).fst.Y → (Q2Presentation.Induction.cChild chief K).fst.Y → ZMod 2 (HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.a(Q2Presentation.Induction.cChild chief K).fst.Y *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. b(Q2Presentation.Induction.cChild chief K).fst.Y)HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. c(Q2Presentation.Induction.cChild chief K).fst.Y =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`. zeta(Q2Presentation.Induction.cChild chief K).fst.Y → (Q2Presentation.Induction.cChild chief K).fst.Y → ZMod 2 b(Q2Presentation.Induction.cChild chief K).fst.Y c(Q2Presentation.Induction.cChild chief K).fst.Y +HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`. zeta(Q2Presentation.Induction.cChild chief K).fst.Y → (Q2Presentation.Induction.cChild chief K).fst.Y → ZMod 2 a(Q2Presentation.Induction.cChild chief K).fst.Y (HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.b(Q2Presentation.Induction.cChild chief K).fst.Y *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. c(Q2Presentation.Induction.cChild chief K).fst.Y)HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.) :
      8 *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
          Q2Presentation.Induction.phaseCountQ2Presentation.Induction.phaseCount {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (zeta : (Q2Presentation.Induction.cChild chief K).fst.Y → (Q2Presentation.Induction.cChild chief K).fst.Y → ZMod 2)
      (hz1 : ∀ (y : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta 1 y = 0)
      (hz2 : ∀ (y : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta y 1 = 0)
      (hzc :
        ∀ (a b c : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta a b + zeta (a * b) c = zeta b c + zeta a (b * c))
      {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) : ℕ**`n_{Γ,0}(ζ)`** (l.4377–4379): the number of lower exact-image maps
    `ρ ∈ X_Γ(C)` for which the phase cover is unobstructed, i.e. which admit a
    weak (no image condition) framed lift through `p_ζ`.  The child transport
    of P3-§4.7's `phaseChildTransport` slot is W7a's `cocycleChildEquiv`,
    absorbed into `cocycleCoverLiftHom`.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor zeta(Q2Presentation.Induction.cChild chief K).fst.Y → (Q2Presentation.Induction.cChild chief K).fst.Y → ZMod 2 hz1∀ (y : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta 1 y = 0 hz2∀ (y : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta y 1 = 0 hzc∀ (a b c : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta a b + zeta (a * b) c = zeta b c + zeta a (b * c)
            Q2Presentation.boundaryPackage_GQ2Q2Presentation.boundaryPackage_GQ2 : Q2Presentation.BoundaryPackage Q2Presentation.GQ2Profinite**The local boundary package** `boundaryPackage_GQ2 : BoundaryPackage G_{ℚ₂}`
    (manuscript Prop 3.14 `prop:compatiblemarking` for `Γ = G_{ℚ₂}`; plan Turn 4 §6),
    the `G_{ℚ₂}`-side instance of the uniform Stage-C boundary datum.
    
    * `tameMap`/`tame_surj`/`tame_nu` — the local tame quotient `G_{ℚ₂} ↠ T_A` with
      unramified marking `ν_loc`, from the axiom `gq2_tame_quotient` (Prop 3.2 + the
      local half of Prop `compatiblemarking`);
    * `pro2Map`/`pro2_surj`/`pro2_nu` — the local maximal pro-`2` quotient
      `G_{ℚ₂} ↠ Π` with the *same* unramified marking `ν_loc`, proved from the fully
      marked Labute comparison `labute_GQ2_maxPro2_marked` (`pro2Map_loc`,
      `pro2Map_loc_surjective`, `pro2Map_loc_nu`);
    * `nu := ν_loc` — the common unramified character through which both factor.  =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`.
         JQ2Presentation.Induction.phaseCoverStrata chief K zeta hz1 hz2 hzc,
          Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number.
    If `α` is infinite, `Nat.card α = 0`. 
            (Q2Presentation.boundaryFramedSurjQ2Presentation.boundaryFramedSurj {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ)
      (Yt : Q2Presentation.BoundaryFramedTarget) (F : Q2Presentation.BoundaryFrame Yt) : TypeThe **boundary-framed surjections** `e_Γ^β(𝒴)` (manuscript `eq:eGamma`): the
    continuous surjections `f : Γ ↠ Y` whose induced map to `H × E` is the prescribed
    `β ∘ b_Γ`, i.e. `q_Y ∘ f = β ∘ b_Γ`.  This is the subtype counted in Theorem 4.2;
    its cardinality is `e_Γ^β(𝒴)`. 
              Q2Presentation.boundaryPackage_GQ2Q2Presentation.boundaryPackage_GQ2 : Q2Presentation.BoundaryPackage Q2Presentation.GQ2Profinite**The local boundary package** `boundaryPackage_GQ2 : BoundaryPackage G_{ℚ₂}`
    (manuscript Prop 3.14 `prop:compatiblemarking` for `Γ = G_{ℚ₂}`; plan Turn 4 §6),
    the `G_{ℚ₂}`-side instance of the uniform Stage-C boundary datum.
    
    * `tameMap`/`tame_surj`/`tame_nu` — the local tame quotient `G_{ℚ₂} ↠ T_A` with
      unramified marking `ν_loc`, from the axiom `gq2_tame_quotient` (Prop 3.2 + the
      local half of Prop `compatiblemarking`);
    * `pro2Map`/`pro2_surj`/`pro2_nu` — the local maximal pro-`2` quotient
      `G_{ℚ₂} ↠ Π` with the *same* unramified marking `ν_loc`, proved from the fully
      marked Labute comparison `labute_GQ2_maxPro2_marked` (`pro2Map_loc`,
      `pro2Map_loc_surjective`, `pro2Map_loc_nu`);
    * `nu := ν_loc` — the common unramified character through which both factor. 
              (Q2Presentation.Induction.phaseStratumPairQ2Presentation.Induction.phaseStratumPair {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (zeta : (Q2Presentation.Induction.cChild chief K).fst.Y → (Q2Presentation.Induction.cChild chief K).fst.Y → ZMod 2)
      (hz1 : ∀ (y : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta 1 y = 0)
      (hz2 : ∀ (y : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta y 1 = 0)
      (hzc :
        ∀ (a b c : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta a b + zeta (a * b) c = zeta b c + zeta a (b * c))
      (J : Q2Presentation.Induction.phaseCoverStrata chief K zeta hz1 hz2 hzc) : Q2Presentation.Induction.FramedPairThe stratum framed pair `(J̃, J̃ ∩ L̃, π̃|_J̃, θ̃|_J̃; same frame)` — an
    ordinary exact-image object in the same global boundary-framed category
    (l.3841–3843; mirror of `scalarCoverStratumPair`).  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor zeta(Q2Presentation.Induction.cChild chief K).fst.Y → (Q2Presentation.Induction.cChild chief K).fst.Y → ZMod 2 hz1∀ (y : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta 1 y = 0
                  hz2∀ (y : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta y 1 = 0 hzc∀ (a b c : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta a b + zeta (a * b) c = zeta b c + zeta a (b * c) JQ2Presentation.Induction.phaseCoverStrata chief K zeta hz1 hz2 hzc).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.
    
              (Q2Presentation.Induction.phaseStratumPairQ2Presentation.Induction.phaseStratumPair {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (zeta : (Q2Presentation.Induction.cChild chief K).fst.Y → (Q2Presentation.Induction.cChild chief K).fst.Y → ZMod 2)
      (hz1 : ∀ (y : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta 1 y = 0)
      (hz2 : ∀ (y : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta y 1 = 0)
      (hzc :
        ∀ (a b c : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta a b + zeta (a * b) c = zeta b c + zeta a (b * c))
      (J : Q2Presentation.Induction.phaseCoverStrata chief K zeta hz1 hz2 hzc) : Q2Presentation.Induction.FramedPairThe stratum framed pair `(J̃, J̃ ∩ L̃, π̃|_J̃, θ̃|_J̃; same frame)` — an
    ordinary exact-image object in the same global boundary-framed category
    (l.3841–3843; mirror of `scalarCoverStratumPair`).  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor zeta(Q2Presentation.Induction.cChild chief K).fst.Y → (Q2Presentation.Induction.cChild chief K).fst.Y → ZMod 2 hz1∀ (y : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta 1 y = 0
                  hz2∀ (y : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta y 1 = 0 hzc∀ (a b c : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta a b + zeta (a * b) c = zeta b c + zeta a (b * c) JQ2Presentation.Induction.phaseCoverStrata chief K zeta hz1 hz2 hzc).sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.
    )
    theorem Q2Presentation.Induction.sec7_phaseCoverPartition_gq2
      {pQ2Presentation.Induction.FramedPair :
        Q2Presentation.Induction.FramedPairQ2Presentation.Induction.FramedPair : Type 1A **framed pair** `(𝒴, F)`: a boundary-framed marked target together with a
    boundary frame for it (manuscript Definition 4.1 + `eq:beta`).  This is the index of
    Theorem 4.2: the boundary-framed surjection count `e_Γ^β` is a function of the pair.
    The induction of `sec:induction` ranges over *all* such pairs simultaneously
    ("the induction is stated globally", l.1213), ordered by `|L_Y|`. }
      (chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p :
        Q2Presentation.Induction.FirstNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor (p : Q2Presentation.Induction.FramedPair) : TypeA non-scalar chief factor of `L_Y` that is **first**: every chief factor strictly
    below it (i.e. with upper term contained in `lower`) is scalar.  This is the manuscript's
    choice `S ◁ P` at l.3616–3623 ("all chief factors below `S` are scalar and `V` is the
    first non-scalar simple factor"), which `lem:collapse` requires for the coprime step
    `[S, Ñ] = 1`. 
          pQ2Presentation.Induction.FramedPair)
      (KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor :
        Q2Presentation.Induction.KernelMinimalQ2Presentation.Induction.KernelMinimal {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.NonScalarChiefFactor p) : TypeThe manuscript's kernel choice (l.3623): `K ◁ Y`, `K ≤ P`, `KS = P`, and `K` is
    **⊆-minimal** with these properties — stated as: any `Y`-normal `K' ≤ K` still joining
    with `S` to `P` equals `K`.  (This, not leastness among all candidates, is what
    `lem:simplehead` and `lem:collapse` use: both apply it to subgroups of `K`.) 
          chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p.toNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor.toNonScalarChiefFactor {p : Q2Presentation.Induction.FramedPair}
      (self : Q2Presentation.Induction.FirstNonScalarChiefFactor p) : Q2Presentation.Induction.NonScalarChiefFactor p)
      (zeta(Q2Presentation.Induction.cChild chief K).fst.Y → (Q2Presentation.Induction.cChild chief K).fst.Y → ZMod 2 :
        (Q2Presentation.Induction.cChildQ2Presentation.Induction.cChild {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPair**The C-child framed pair** (the carrier of `X_Γ(C)`; manuscript
    `C = Y/K` via `B/M' ≅ C`, `mChildCollapse`).  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p
                KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.
    .YQ2Presentation.BoundaryFramedTarget.Y (self : Q2Presentation.BoundaryFramedTarget) : TypeThe finite target group `Y`.  
          (Q2Presentation.Induction.cChildQ2Presentation.Induction.cChild {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPair**The C-child framed pair** (the carrier of `X_Γ(C)`; manuscript
    `C = Y/K` via `B/M' ≅ C`, `mChildCollapse`). 
                  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.
    .YQ2Presentation.BoundaryFramedTarget.Y (self : Q2Presentation.BoundaryFramedTarget) : TypeThe finite target group `Y`.  
            ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2)
      (hz1∀ (y : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta 1 y = 0 :
        
          (y(Q2Presentation.Induction.cChild chief K).fst.Y :
            (Q2Presentation.Induction.cChildQ2Presentation.Induction.cChild {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPair**The C-child framed pair** (the carrier of `X_Γ(C)`; manuscript
    `C = Y/K` via `B/M' ≅ C`, `mChildCollapse`). 
                  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.
    .YQ2Presentation.BoundaryFramedTarget.Y (self : Q2Presentation.BoundaryFramedTarget) : TypeThe finite target group `Y`. ),
          zeta(Q2Presentation.Induction.cChild chief K).fst.Y → (Q2Presentation.Induction.cChild chief K).fst.Y → ZMod 2 1 y(Q2Presentation.Induction.cChild chief K).fst.Y =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`. 0)
      (hz2∀ (y : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta y 1 = 0 :
        
          (y(Q2Presentation.Induction.cChild chief K).fst.Y :
            (Q2Presentation.Induction.cChildQ2Presentation.Induction.cChild {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPair**The C-child framed pair** (the carrier of `X_Γ(C)`; manuscript
    `C = Y/K` via `B/M' ≅ C`, `mChildCollapse`). 
                  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.
    .YQ2Presentation.BoundaryFramedTarget.Y (self : Q2Presentation.BoundaryFramedTarget) : TypeThe finite target group `Y`. ),
          zeta(Q2Presentation.Induction.cChild chief K).fst.Y → (Q2Presentation.Induction.cChild chief K).fst.Y → ZMod 2 y(Q2Presentation.Induction.cChild chief K).fst.Y 1 =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`. 0)
      (hzc∀ (a b c : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta a b + zeta (a * b) c = zeta b c + zeta a (b * c) :
        
          (a(Q2Presentation.Induction.cChild chief K).fst.Y b(Q2Presentation.Induction.cChild chief K).fst.Y c(Q2Presentation.Induction.cChild chief K).fst.Y :
            (Q2Presentation.Induction.cChildQ2Presentation.Induction.cChild {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPair**The C-child framed pair** (the carrier of `X_Γ(C)`; manuscript
    `C = Y/K` via `B/M' ≅ C`, `mChildCollapse`). 
                  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.
    .YQ2Presentation.BoundaryFramedTarget.Y (self : Q2Presentation.BoundaryFramedTarget) : TypeThe finite target group `Y`. ),
          zeta(Q2Presentation.Induction.cChild chief K).fst.Y → (Q2Presentation.Induction.cChild chief K).fst.Y → ZMod 2 a(Q2Presentation.Induction.cChild chief K).fst.Y b(Q2Presentation.Induction.cChild chief K).fst.Y +HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`. zeta(Q2Presentation.Induction.cChild chief K).fst.Y → (Q2Presentation.Induction.cChild chief K).fst.Y → ZMod 2 (HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.a(Q2Presentation.Induction.cChild chief K).fst.Y *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. b(Q2Presentation.Induction.cChild chief K).fst.Y)HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. c(Q2Presentation.Induction.cChild chief K).fst.Y =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`.
            zeta(Q2Presentation.Induction.cChild chief K).fst.Y → (Q2Presentation.Induction.cChild chief K).fst.Y → ZMod 2 b(Q2Presentation.Induction.cChild chief K).fst.Y c(Q2Presentation.Induction.cChild chief K).fst.Y +HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`. zeta(Q2Presentation.Induction.cChild chief K).fst.Y → (Q2Presentation.Induction.cChild chief K).fst.Y → ZMod 2 a(Q2Presentation.Induction.cChild chief K).fst.Y (HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.b(Q2Presentation.Induction.cChild chief K).fst.Y *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. c(Q2Presentation.Induction.cChild chief K).fst.Y)HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.) :
      8 *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
          Q2Presentation.Induction.phaseCountQ2Presentation.Induction.phaseCount {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (zeta : (Q2Presentation.Induction.cChild chief K).fst.Y → (Q2Presentation.Induction.cChild chief K).fst.Y → ZMod 2)
      (hz1 : ∀ (y : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta 1 y = 0)
      (hz2 : ∀ (y : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta y 1 = 0)
      (hzc :
        ∀ (a b c : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta a b + zeta (a * b) c = zeta b c + zeta a (b * c))
      {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) : ℕ**`n_{Γ,0}(ζ)`** (l.4377–4379): the number of lower exact-image maps
    `ρ ∈ X_Γ(C)` for which the phase cover is unobstructed, i.e. which admit a
    weak (no image condition) framed lift through `p_ζ`.  The child transport
    of P3-§4.7's `phaseChildTransport` slot is W7a's `cocycleChildEquiv`,
    absorbed into `cocycleCoverLiftHom`. 
            chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor zeta(Q2Presentation.Induction.cChild chief K).fst.Y → (Q2Presentation.Induction.cChild chief K).fst.Y → ZMod 2 hz1∀ (y : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta 1 y = 0 hz2∀ (y : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta y 1 = 0 hzc∀ (a b c : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta a b + zeta (a * b) c = zeta b c + zeta a (b * c)
            Q2Presentation.boundaryPackage_GQ2Q2Presentation.boundaryPackage_GQ2 : Q2Presentation.BoundaryPackage Q2Presentation.GQ2Profinite**The local boundary package** `boundaryPackage_GQ2 : BoundaryPackage G_{ℚ₂}`
    (manuscript Prop 3.14 `prop:compatiblemarking` for `Γ = G_{ℚ₂}`; plan Turn 4 §6),
    the `G_{ℚ₂}`-side instance of the uniform Stage-C boundary datum.
    
    * `tameMap`/`tame_surj`/`tame_nu` — the local tame quotient `G_{ℚ₂} ↠ T_A` with
      unramified marking `ν_loc`, from the axiom `gq2_tame_quotient` (Prop 3.2 + the
      local half of Prop `compatiblemarking`);
    * `pro2Map`/`pro2_surj`/`pro2_nu` — the local maximal pro-`2` quotient
      `G_{ℚ₂} ↠ Π` with the *same* unramified marking `ν_loc`, proved from the fully
      marked Labute comparison `labute_GQ2_maxPro2_marked` (`pro2Map_loc`,
      `pro2Map_loc_surjective`, `pro2Map_loc_nu`);
    * `nu := ν_loc` — the common unramified character through which both factor.  =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`.
         JQ2Presentation.Induction.phaseCoverStrata chief K zeta hz1 hz2 hzc,
          Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number.
    If `α` is infinite, `Nat.card α = 0`. 
            (Q2Presentation.boundaryFramedSurjQ2Presentation.boundaryFramedSurj {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ)
      (Yt : Q2Presentation.BoundaryFramedTarget) (F : Q2Presentation.BoundaryFrame Yt) : TypeThe **boundary-framed surjections** `e_Γ^β(𝒴)` (manuscript `eq:eGamma`): the
    continuous surjections `f : Γ ↠ Y` whose induced map to `H × E` is the prescribed
    `β ∘ b_Γ`, i.e. `q_Y ∘ f = β ∘ b_Γ`.  This is the subtype counted in Theorem 4.2;
    its cardinality is `e_Γ^β(𝒴)`. 
              Q2Presentation.boundaryPackage_GQ2Q2Presentation.boundaryPackage_GQ2 : Q2Presentation.BoundaryPackage Q2Presentation.GQ2Profinite**The local boundary package** `boundaryPackage_GQ2 : BoundaryPackage G_{ℚ₂}`
    (manuscript Prop 3.14 `prop:compatiblemarking` for `Γ = G_{ℚ₂}`; plan Turn 4 §6),
    the `G_{ℚ₂}`-side instance of the uniform Stage-C boundary datum.
    
    * `tameMap`/`tame_surj`/`tame_nu` — the local tame quotient `G_{ℚ₂} ↠ T_A` with
      unramified marking `ν_loc`, from the axiom `gq2_tame_quotient` (Prop 3.2 + the
      local half of Prop `compatiblemarking`);
    * `pro2Map`/`pro2_surj`/`pro2_nu` — the local maximal pro-`2` quotient
      `G_{ℚ₂} ↠ Π` with the *same* unramified marking `ν_loc`, proved from the fully
      marked Labute comparison `labute_GQ2_maxPro2_marked` (`pro2Map_loc`,
      `pro2Map_loc_surjective`, `pro2Map_loc_nu`);
    * `nu := ν_loc` — the common unramified character through which both factor. 
              (Q2Presentation.Induction.phaseStratumPairQ2Presentation.Induction.phaseStratumPair {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (zeta : (Q2Presentation.Induction.cChild chief K).fst.Y → (Q2Presentation.Induction.cChild chief K).fst.Y → ZMod 2)
      (hz1 : ∀ (y : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta 1 y = 0)
      (hz2 : ∀ (y : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta y 1 = 0)
      (hzc :
        ∀ (a b c : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta a b + zeta (a * b) c = zeta b c + zeta a (b * c))
      (J : Q2Presentation.Induction.phaseCoverStrata chief K zeta hz1 hz2 hzc) : Q2Presentation.Induction.FramedPairThe stratum framed pair `(J̃, J̃ ∩ L̃, π̃|_J̃, θ̃|_J̃; same frame)` — an
    ordinary exact-image object in the same global boundary-framed category
    (l.3841–3843; mirror of `scalarCoverStratumPair`). 
                  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor zeta(Q2Presentation.Induction.cChild chief K).fst.Y → (Q2Presentation.Induction.cChild chief K).fst.Y → ZMod 2 hz1∀ (y : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta 1 y = 0 hz2∀ (y : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta y 1 = 0 hzc∀ (a b c : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta a b + zeta (a * b) c = zeta b c + zeta a (b * c)
                  JQ2Presentation.Induction.phaseCoverStrata chief K zeta hz1 hz2 hzc).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.
    
              (Q2Presentation.Induction.phaseStratumPairQ2Presentation.Induction.phaseStratumPair {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (zeta : (Q2Presentation.Induction.cChild chief K).fst.Y → (Q2Presentation.Induction.cChild chief K).fst.Y → ZMod 2)
      (hz1 : ∀ (y : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta 1 y = 0)
      (hz2 : ∀ (y : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta y 1 = 0)
      (hzc :
        ∀ (a b c : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta a b + zeta (a * b) c = zeta b c + zeta a (b * c))
      (J : Q2Presentation.Induction.phaseCoverStrata chief K zeta hz1 hz2 hzc) : Q2Presentation.Induction.FramedPairThe stratum framed pair `(J̃, J̃ ∩ L̃, π̃|_J̃, θ̃|_J̃; same frame)` — an
    ordinary exact-image object in the same global boundary-framed category
    (l.3841–3843; mirror of `scalarCoverStratumPair`). 
                  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor zeta(Q2Presentation.Induction.cChild chief K).fst.Y → (Q2Presentation.Induction.cChild chief K).fst.Y → ZMod 2 hz1∀ (y : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta 1 y = 0 hz2∀ (y : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta y 1 = 0 hzc∀ (a b c : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta a b + zeta (a * b) c = zeta b c + zeta a (b * c)
                  JQ2Presentation.Induction.phaseCoverStrata chief K zeta hz1 hz2 hzc).sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.
    )
    **`lem:phasecover` `eq:phasecovertransform` (l.4384–4390), local
    source**: mirror of `sec7_phaseCoverPartition_gammaA` for `G_{ℚ₂}`; the
    uniform 8 is `cover_Z1_card_gq2`, derived from the EXISTING citable
    `q2_localduality_general` count clause (NSW VII.2–3 Euler–Poincaré —
    provenance note of `CoverEightLocal`); no keep is touched. 
  • defdefined in Q2Presentation/Induction/ZeroEdgeIndicator.lean
    complete
    def Q2Presentation.Induction.pullCochain
      (YtQ2Presentation.BoundaryFramedTarget : Q2Presentation.BoundaryFramedTargetQ2Presentation.BoundaryFramedTarget : Type 1A **boundary-framed marked target** `𝒴 = (Y, L_Y, π_Y, θ_Y)` (manuscript
    Definition 4.1, `def:framed`): a finite group `Y` with a normal finite `2`-subgroup
    `L_Y`, a surjection `π_Y : Y ↠ H` onto a finite *tame* quotient with kernel exactly
    `L_Y`, and an *elementary decoration* `θ_Y : Y → Multiplicative E` into the
    multiplicative image of a finite `𝔽₂`-vector space `E`.  The pair
    `q_Y = (π_Y, θ_Y)` fixes both the tame quotient `Y / L_Y ≅ H` and the decoration. )
      (zetaYt.Y → Yt.Y → ZMod 2 : YtQ2Presentation.BoundaryFramedTarget.YQ2Presentation.BoundaryFramedTarget.Y (self : Q2Presentation.BoundaryFramedTarget) : TypeThe finite target group `Y`.   YtQ2Presentation.BoundaryFramedTarget.YQ2Presentation.BoundaryFramedTarget.Y (self : Q2Presentation.BoundaryFramedTarget) : TypeThe finite target group `Y`.   ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2) {ΓProfiniteGrp.{0} : ProfiniteGrp.{0}ProfiniteGrp.{u_1} : Type (u_1 + 1)The category of profinite groups. A term of this type consists of a profinite
    set with a topological group structure.
    }
      (BQ2Presentation.BoundaryPackage Γ : Q2Presentation.BoundaryPackageQ2Presentation.BoundaryPackage (Γ : ProfiniteGrp.{0}) : TypeA **boundary package** on a profinite group `Γ`: the uniform Stage-C data of a tame
    quotient, a maximal pro-`2` quotient, and a common unramified character `ℤ₂` through which
    both factor (manuscript Prop 3.14, `prop:compatiblemarking`; plan Turn 4 §6).  The
    compatibility `tameMap ≫ ν_t = ν = pro2Map ≫ ν_2` records that the two markings agree on
    the full unramified coordinate, not merely modulo `2`.  ΓProfiniteGrp.{0})
      (FQ2Presentation.BoundaryFrame Yt : Q2Presentation.BoundaryFrameQ2Presentation.BoundaryFrame (Yt : Q2Presentation.BoundaryFramedTarget) : TypeA **boundary frame** on a boundary-framed target `𝒴` (manuscript `eq:beta`):
    the fixed compatible data `α : 𝕋_tame ↠ H`, `ψ : Π → Multiplicative E`, and the
    induced `β : ∂_bd → H × Multiplicative E`.  Surjectivity of `α` records that `H`
    really is a tame quotient (manuscript: "Fix a finite tame quotient `H`, an
    epimorphism `α : 𝕋_A ↠ H`").  YtQ2Presentation.BoundaryFramedTarget)
      (gQ2Presentation.boundaryFramedSurj B Yt F : Q2Presentation.boundaryFramedSurjQ2Presentation.boundaryFramedSurj {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ)
      (Yt : Q2Presentation.BoundaryFramedTarget) (F : Q2Presentation.BoundaryFrame Yt) : TypeThe **boundary-framed surjections** `e_Γ^β(𝒴)` (manuscript `eq:eGamma`): the
    continuous surjections `f : Γ ↠ Y` whose induced map to `H × E` is the prescribed
    `β ∘ b_Γ`, i.e. `q_Y ∘ f = β ∘ b_Γ`.  This is the subtype counted in Theorem 4.2;
    its cardinality is `e_Γ^β(𝒴)`.  BQ2Presentation.BoundaryPackage Γ YtQ2Presentation.BoundaryFramedTarget FQ2Presentation.BoundaryFrame Yt) :
      ΓProfiniteGrp.{0}.toProfiniteProfiniteGrp.toProfinite.{u_1} (self : ProfiniteGrp.{u_1}) : ProfiniteThe underlying profinite topological space. .toTopCompHausLike.toTop.{u} {P : TopCat → Prop} (self : CompHausLike P) : TopCatThe underlying topological space of an object of `CompHausLike P`.   ΓProfiniteGrp.{0}.toProfiniteProfiniteGrp.toProfinite.{u_1} (self : ProfiniteGrp.{u_1}) : ProfiniteThe underlying profinite topological space. .toTopCompHausLike.toTop.{u} {P : TopCat → Prop} (self : CompHausLike P) : TopCatThe underlying topological space of an object of `CompHausLike P`.   ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2
    def Q2Presentation.Induction.pullCochain
      (YtQ2Presentation.BoundaryFramedTarget :
        Q2Presentation.BoundaryFramedTargetQ2Presentation.BoundaryFramedTarget : Type 1A **boundary-framed marked target** `𝒴 = (Y, L_Y, π_Y, θ_Y)` (manuscript
    Definition 4.1, `def:framed`): a finite group `Y` with a normal finite `2`-subgroup
    `L_Y`, a surjection `π_Y : Y ↠ H` onto a finite *tame* quotient with kernel exactly
    `L_Y`, and an *elementary decoration* `θ_Y : Y → Multiplicative E` into the
    multiplicative image of a finite `𝔽₂`-vector space `E`.  The pair
    `q_Y = (π_Y, θ_Y)` fixes both the tame quotient `Y / L_Y ≅ H` and the decoration. )
      (zetaYt.Y → Yt.Y → ZMod 2 : YtQ2Presentation.BoundaryFramedTarget.YQ2Presentation.BoundaryFramedTarget.Y (self : Q2Presentation.BoundaryFramedTarget) : TypeThe finite target group `Y`.   YtQ2Presentation.BoundaryFramedTarget.YQ2Presentation.BoundaryFramedTarget.Y (self : Q2Presentation.BoundaryFramedTarget) : TypeThe finite target group `Y`.   ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2)
      {ΓProfiniteGrp.{0} : ProfiniteGrp.{0}ProfiniteGrp.{u_1} : Type (u_1 + 1)The category of profinite groups. A term of this type consists of a profinite
    set with a topological group structure.
    }
      (BQ2Presentation.BoundaryPackage Γ : Q2Presentation.BoundaryPackageQ2Presentation.BoundaryPackage (Γ : ProfiniteGrp.{0}) : TypeA **boundary package** on a profinite group `Γ`: the uniform Stage-C data of a tame
    quotient, a maximal pro-`2` quotient, and a common unramified character `ℤ₂` through which
    both factor (manuscript Prop 3.14, `prop:compatiblemarking`; plan Turn 4 §6).  The
    compatibility `tameMap ≫ ν_t = ν = pro2Map ≫ ν_2` records that the two markings agree on
    the full unramified coordinate, not merely modulo `2`.  ΓProfiniteGrp.{0})
      (FQ2Presentation.BoundaryFrame Yt : Q2Presentation.BoundaryFrameQ2Presentation.BoundaryFrame (Yt : Q2Presentation.BoundaryFramedTarget) : TypeA **boundary frame** on a boundary-framed target `𝒴` (manuscript `eq:beta`):
    the fixed compatible data `α : 𝕋_tame ↠ H`, `ψ : Π → Multiplicative E`, and the
    induced `β : ∂_bd → H × Multiplicative E`.  Surjectivity of `α` records that `H`
    really is a tame quotient (manuscript: "Fix a finite tame quotient `H`, an
    epimorphism `α : 𝕋_A ↠ H`").  YtQ2Presentation.BoundaryFramedTarget)
      (gQ2Presentation.boundaryFramedSurj B Yt F :
        Q2Presentation.boundaryFramedSurjQ2Presentation.boundaryFramedSurj {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ)
      (Yt : Q2Presentation.BoundaryFramedTarget) (F : Q2Presentation.BoundaryFrame Yt) : TypeThe **boundary-framed surjections** `e_Γ^β(𝒴)` (manuscript `eq:eGamma`): the
    continuous surjections `f : Γ ↠ Y` whose induced map to `H × E` is the prescribed
    `β ∘ b_Γ`, i.e. `q_Y ∘ f = β ∘ b_Γ`.  This is the subtype counted in Theorem 4.2;
    its cardinality is `e_Γ^β(𝒴)`.  BQ2Presentation.BoundaryPackage Γ YtQ2Presentation.BoundaryFramedTarget
          FQ2Presentation.BoundaryFrame Yt) :
      ΓProfiniteGrp.{0}.toProfiniteProfiniteGrp.toProfinite.{u_1} (self : ProfiniteGrp.{u_1}) : ProfiniteThe underlying profinite topological space. .toTopCompHausLike.toTop.{u} {P : TopCat → Prop} (self : CompHausLike P) : TopCatThe underlying topological space of an object of `CompHausLike P`.  
        ΓProfiniteGrp.{0}.toProfiniteProfiniteGrp.toProfinite.{u_1} (self : ProfiniteGrp.{u_1}) : ProfiniteThe underlying profinite topological space. .toTopCompHausLike.toTop.{u} {P : TopCat → Prop} (self : CompHausLike P) : TopCatThe underlying topological space of an object of `CompHausLike P`.   ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2
    **The pulled-back 2-cochain `g*ζ`** of a boundary-framed surjection
    `g : Γ ↠ Y` — the source-side equation whose solvability the ζ-cover lift
    indicator reads (`lem:phasecover` l.4377–4379). 
  • abbrevdefined in Q2Presentation/Lifting/CocycleCover.lean
    complete
    abbrev Q2Presentation.Lifting.cocycleCoverLiftHom
      (YtQ2Presentation.BoundaryFramedTarget : Q2Presentation.BoundaryFramedTargetQ2Presentation.BoundaryFramedTarget : Type 1A **boundary-framed marked target** `𝒴 = (Y, L_Y, π_Y, θ_Y)` (manuscript
    Definition 4.1, `def:framed`): a finite group `Y` with a normal finite `2`-subgroup
    `L_Y`, a surjection `π_Y : Y ↠ H` onto a finite *tame* quotient with kernel exactly
    `L_Y`, and an *elementary decoration* `θ_Y : Y → Multiplicative E` into the
    multiplicative image of a finite `𝔽₂`-vector space `E`.  The pair
    `q_Y = (π_Y, θ_Y)` fixes both the tame quotient `Y / L_Y ≅ H` and the decoration. )
      (zetaYt.Y → Yt.Y → ZMod 2 : YtQ2Presentation.BoundaryFramedTarget.YQ2Presentation.BoundaryFramedTarget.Y (self : Q2Presentation.BoundaryFramedTarget) : TypeThe finite target group `Y`.   YtQ2Presentation.BoundaryFramedTarget.YQ2Presentation.BoundaryFramedTarget.Y (self : Q2Presentation.BoundaryFramedTarget) : TypeThe finite target group `Y`.   ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2) (hz1∀ (y : Yt.Y), zeta 1 y = 0 :  (yYt.Y : YtQ2Presentation.BoundaryFramedTarget.YQ2Presentation.BoundaryFramedTarget.Y (self : Q2Presentation.BoundaryFramedTarget) : TypeThe finite target group `Y`. ), zetaYt.Y → Yt.Y → ZMod 2 1 yYt.Y =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`. 0)
      (hz2∀ (y : Yt.Y), zeta y 1 = 0 :  (yYt.Y : YtQ2Presentation.BoundaryFramedTarget.YQ2Presentation.BoundaryFramedTarget.Y (self : Q2Presentation.BoundaryFramedTarget) : TypeThe finite target group `Y`. ), zetaYt.Y → Yt.Y → ZMod 2 yYt.Y 1 =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`. 0)
      (hzc∀ (a b c : Yt.Y), zeta a b + zeta (a * b) c = zeta b c + zeta a (b * c) :
         (aYt.Y bYt.Y cYt.Y : YtQ2Presentation.BoundaryFramedTarget.YQ2Presentation.BoundaryFramedTarget.Y (self : Q2Presentation.BoundaryFramedTarget) : TypeThe finite target group `Y`. ),
          zetaYt.Y → Yt.Y → ZMod 2 aYt.Y bYt.Y +HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`. zetaYt.Y → Yt.Y → ZMod 2 (HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.aYt.Y *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. bYt.Y)HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. cYt.Y =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`. zetaYt.Y → Yt.Y → ZMod 2 bYt.Y cYt.Y +HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`. zetaYt.Y → Yt.Y → ZMod 2 aYt.Y (HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.bYt.Y *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. cYt.Y)HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.)
      {ΓProfiniteGrp.{0} : ProfiniteGrp.{0}ProfiniteGrp.{u_1} : Type (u_1 + 1)The category of profinite groups. A term of this type consists of a profinite
    set with a topological group structure.
    } (BQ2Presentation.BoundaryPackage Γ : Q2Presentation.BoundaryPackageQ2Presentation.BoundaryPackage (Γ : ProfiniteGrp.{0}) : TypeA **boundary package** on a profinite group `Γ`: the uniform Stage-C data of a tame
    quotient, a maximal pro-`2` quotient, and a common unramified character `ℤ₂` through which
    both factor (manuscript Prop 3.14, `prop:compatiblemarking`; plan Turn 4 §6).  The
    compatibility `tameMap ≫ ν_t = ν = pro2Map ≫ ν_2` records that the two markings agree on
    the full unramified coordinate, not merely modulo `2`.  ΓProfiniteGrp.{0})
      (FQ2Presentation.BoundaryFrame Yt : Q2Presentation.BoundaryFrameQ2Presentation.BoundaryFrame (Yt : Q2Presentation.BoundaryFramedTarget) : TypeA **boundary frame** on a boundary-framed target `𝒴` (manuscript `eq:beta`):
    the fixed compatible data `α : 𝕋_tame ↠ H`, `ψ : Π → Multiplicative E`, and the
    induced `β : ∂_bd → H × Multiplicative E`.  Surjectivity of `α` records that `H`
    really is a tame quotient (manuscript: "Fix a finite tame quotient `H`, an
    epimorphism `α : 𝕋_A ↠ H`").  YtQ2Presentation.BoundaryFramedTarget)
      (gQ2Presentation.boundaryFramedSurj B Yt F : Q2Presentation.boundaryFramedSurjQ2Presentation.boundaryFramedSurj {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ)
      (Yt : Q2Presentation.BoundaryFramedTarget) (F : Q2Presentation.BoundaryFrame Yt) : TypeThe **boundary-framed surjections** `e_Γ^β(𝒴)` (manuscript `eq:eGamma`): the
    continuous surjections `f : Γ ↠ Y` whose induced map to `H × E` is the prescribed
    `β ∘ b_Γ`, i.e. `q_Y ∘ f = β ∘ b_Γ`.  This is the subtype counted in Theorem 4.2;
    its cardinality is `e_Γ^β(𝒴)`.  BQ2Presentation.BoundaryPackage Γ YtQ2Presentation.BoundaryFramedTarget FQ2Presentation.BoundaryFrame Yt) : TypeA type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. 
    abbrev Q2Presentation.Lifting.cocycleCoverLiftHom
      (YtQ2Presentation.BoundaryFramedTarget :
        Q2Presentation.BoundaryFramedTargetQ2Presentation.BoundaryFramedTarget : Type 1A **boundary-framed marked target** `𝒴 = (Y, L_Y, π_Y, θ_Y)` (manuscript
    Definition 4.1, `def:framed`): a finite group `Y` with a normal finite `2`-subgroup
    `L_Y`, a surjection `π_Y : Y ↠ H` onto a finite *tame* quotient with kernel exactly
    `L_Y`, and an *elementary decoration* `θ_Y : Y → Multiplicative E` into the
    multiplicative image of a finite `𝔽₂`-vector space `E`.  The pair
    `q_Y = (π_Y, θ_Y)` fixes both the tame quotient `Y / L_Y ≅ H` and the decoration. )
      (zetaYt.Y → Yt.Y → ZMod 2 : YtQ2Presentation.BoundaryFramedTarget.YQ2Presentation.BoundaryFramedTarget.Y (self : Q2Presentation.BoundaryFramedTarget) : TypeThe finite target group `Y`.   YtQ2Presentation.BoundaryFramedTarget.YQ2Presentation.BoundaryFramedTarget.Y (self : Q2Presentation.BoundaryFramedTarget) : TypeThe finite target group `Y`.   ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2)
      (hz1∀ (y : Yt.Y), zeta 1 y = 0 :  (yYt.Y : YtQ2Presentation.BoundaryFramedTarget.YQ2Presentation.BoundaryFramedTarget.Y (self : Q2Presentation.BoundaryFramedTarget) : TypeThe finite target group `Y`. ), zetaYt.Y → Yt.Y → ZMod 2 1 yYt.Y =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`. 0)
      (hz2∀ (y : Yt.Y), zeta y 1 = 0 :  (yYt.Y : YtQ2Presentation.BoundaryFramedTarget.YQ2Presentation.BoundaryFramedTarget.Y (self : Q2Presentation.BoundaryFramedTarget) : TypeThe finite target group `Y`. ), zetaYt.Y → Yt.Y → ZMod 2 yYt.Y 1 =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`. 0)
      (hzc∀ (a b c : Yt.Y), zeta a b + zeta (a * b) c = zeta b c + zeta a (b * c) :
         (aYt.Y bYt.Y cYt.Y : YtQ2Presentation.BoundaryFramedTarget.YQ2Presentation.BoundaryFramedTarget.Y (self : Q2Presentation.BoundaryFramedTarget) : TypeThe finite target group `Y`. ),
          zetaYt.Y → Yt.Y → ZMod 2 aYt.Y bYt.Y +HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`. zetaYt.Y → Yt.Y → ZMod 2 (HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.aYt.Y *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. bYt.Y)HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. cYt.Y =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`.
            zetaYt.Y → Yt.Y → ZMod 2 bYt.Y cYt.Y +HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`. zetaYt.Y → Yt.Y → ZMod 2 aYt.Y (HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.bYt.Y *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. cYt.Y)HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.)
      {ΓProfiniteGrp.{0} : ProfiniteGrp.{0}ProfiniteGrp.{u_1} : Type (u_1 + 1)The category of profinite groups. A term of this type consists of a profinite
    set with a topological group structure.
    }
      (BQ2Presentation.BoundaryPackage Γ : Q2Presentation.BoundaryPackageQ2Presentation.BoundaryPackage (Γ : ProfiniteGrp.{0}) : TypeA **boundary package** on a profinite group `Γ`: the uniform Stage-C data of a tame
    quotient, a maximal pro-`2` quotient, and a common unramified character `ℤ₂` through which
    both factor (manuscript Prop 3.14, `prop:compatiblemarking`; plan Turn 4 §6).  The
    compatibility `tameMap ≫ ν_t = ν = pro2Map ≫ ν_2` records that the two markings agree on
    the full unramified coordinate, not merely modulo `2`.  ΓProfiniteGrp.{0})
      (FQ2Presentation.BoundaryFrame Yt : Q2Presentation.BoundaryFrameQ2Presentation.BoundaryFrame (Yt : Q2Presentation.BoundaryFramedTarget) : TypeA **boundary frame** on a boundary-framed target `𝒴` (manuscript `eq:beta`):
    the fixed compatible data `α : 𝕋_tame ↠ H`, `ψ : Π → Multiplicative E`, and the
    induced `β : ∂_bd → H × Multiplicative E`.  Surjectivity of `α` records that `H`
    really is a tame quotient (manuscript: "Fix a finite tame quotient `H`, an
    epimorphism `α : 𝕋_A ↠ H`").  YtQ2Presentation.BoundaryFramedTarget)
      (gQ2Presentation.boundaryFramedSurj B Yt F :
        Q2Presentation.boundaryFramedSurjQ2Presentation.boundaryFramedSurj {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ)
      (Yt : Q2Presentation.BoundaryFramedTarget) (F : Q2Presentation.BoundaryFrame Yt) : TypeThe **boundary-framed surjections** `e_Γ^β(𝒴)` (manuscript `eq:eGamma`): the
    continuous surjections `f : Γ ↠ Y` whose induced map to `H × E` is the prescribed
    `β ∘ b_Γ`, i.e. `q_Y ∘ f = β ∘ b_Γ`.  This is the subtype counted in Theorem 4.2;
    its cardinality is `e_Γ^β(𝒴)`.  BQ2Presentation.BoundaryPackage Γ YtQ2Presentation.BoundaryFramedTarget
          FQ2Presentation.BoundaryFrame Yt) :
      TypeA type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. 
    **The weak cover-lift set** of a base framed surjection — the
    splitting-indicator carrier of `lem:phasecover`: `Nonempty` ⟺ `ρ*ζ` is
    unobstructed (l.4377–4379).  Surjectivity onto `C_ζ` is NOT imposed (weak
    lifts, the P1 §5.1-vetted reading). 
Proof

Proved in §8 of the paper. Ingredients: Lemma 8.3.

Lemma 8.16 of the paper (Strict decrease of recursive targets).

Every target occurring on the right sides of (137), (140), (141), and (146) has marked 2-kernel strictly smaller than |L_Y|. More precisely,

|L_C|=\frac{|L_Y|}{|K|}<|L_Y|,

2|J\cap L_B|\le |L_B|<|L_Y|

for a proper scalar-cover stratum, and

|L_{C_\zeta}|=2|L_C| =\frac{2|L_Y|}{|K|}<|L_Y|.

The proper-image bound in the elementary stage is (138).

Lean code for Lemma8.163 declarations
  • theoremdefined in Q2Presentation/Induction/PhaseCoverTransform.lean
    complete
    theorem Q2Presentation.Induction.phaseStratumPair_measure_lt
      {pQ2Presentation.Induction.FramedPair : Q2Presentation.Induction.FramedPairQ2Presentation.Induction.FramedPair : Type 1A **framed pair** `(𝒴, F)`: a boundary-framed marked target together with a
    boundary frame for it (manuscript Definition 4.1 + `eq:beta`).  This is the index of
    Theorem 4.2: the boundary-framed surjection count `e_Γ^β` is a function of the pair.
    The induction of `sec:induction` ranges over *all* such pairs simultaneously
    ("the induction is stated globally", l.1213), ordered by `|L_Y|`. }
      (chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p : Q2Presentation.Induction.FirstNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor (p : Q2Presentation.Induction.FramedPair) : TypeA non-scalar chief factor of `L_Y` that is **first**: every chief factor strictly
    below it (i.e. with upper term contained in `lower`) is scalar.  This is the manuscript's
    choice `S ◁ P` at l.3616–3623 ("all chief factors below `S` are scalar and `V` is the
    first non-scalar simple factor"), which `lem:collapse` requires for the coprime step
    `[S, Ñ] = 1`.  pQ2Presentation.Induction.FramedPair)
      (KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor :
        Q2Presentation.Induction.KernelMinimalQ2Presentation.Induction.KernelMinimal {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.NonScalarChiefFactor p) : TypeThe manuscript's kernel choice (l.3623): `K ◁ Y`, `K ≤ P`, `KS = P`, and `K` is
    **⊆-minimal** with these properties — stated as: any `Y`-normal `K' ≤ K` still joining
    with `S` to `P` equals `K`.  (This, not leastness among all candidates, is what
    `lem:simplehead` and `lem:collapse` use: both apply it to subgroups of `K`.)  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p.toNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor.toNonScalarChiefFactor {p : Q2Presentation.Induction.FramedPair}
      (self : Q2Presentation.Induction.FirstNonScalarChiefFactor p) : Q2Presentation.Induction.NonScalarChiefFactor p)
      (zeta(Q2Presentation.Induction.cChild chief K).fst.Y → (Q2Presentation.Induction.cChild chief K).fst.Y → ZMod 2 :
        (Q2Presentation.Induction.cChildQ2Presentation.Induction.cChild {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPair**The C-child framed pair** (the carrier of `X_Γ(C)`; manuscript
    `C = Y/K` via `B/M' ≅ C`, `mChildCollapse`).  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.
    .YQ2Presentation.BoundaryFramedTarget.Y (self : Q2Presentation.BoundaryFramedTarget) : TypeThe finite target group `Y`.  
          (Q2Presentation.Induction.cChildQ2Presentation.Induction.cChild {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPair**The C-child framed pair** (the carrier of `X_Γ(C)`; manuscript
    `C = Y/K` via `B/M' ≅ C`, `mChildCollapse`).  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.
    .YQ2Presentation.BoundaryFramedTarget.Y (self : Q2Presentation.BoundaryFramedTarget) : TypeThe finite target group `Y`.   ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2)
      (hz1∀ (y : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta 1 y = 0 :
         (y(Q2Presentation.Induction.cChild chief K).fst.Y : (Q2Presentation.Induction.cChildQ2Presentation.Induction.cChild {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPair**The C-child framed pair** (the carrier of `X_Γ(C)`; manuscript
    `C = Y/K` via `B/M' ≅ C`, `mChildCollapse`).  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.
    .YQ2Presentation.BoundaryFramedTarget.Y (self : Q2Presentation.BoundaryFramedTarget) : TypeThe finite target group `Y`. ),
          zeta(Q2Presentation.Induction.cChild chief K).fst.Y → (Q2Presentation.Induction.cChild chief K).fst.Y → ZMod 2 1 y(Q2Presentation.Induction.cChild chief K).fst.Y =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`. 0)
      (hz2∀ (y : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta y 1 = 0 :
         (y(Q2Presentation.Induction.cChild chief K).fst.Y : (Q2Presentation.Induction.cChildQ2Presentation.Induction.cChild {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPair**The C-child framed pair** (the carrier of `X_Γ(C)`; manuscript
    `C = Y/K` via `B/M' ≅ C`, `mChildCollapse`).  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.
    .YQ2Presentation.BoundaryFramedTarget.Y (self : Q2Presentation.BoundaryFramedTarget) : TypeThe finite target group `Y`. ),
          zeta(Q2Presentation.Induction.cChild chief K).fst.Y → (Q2Presentation.Induction.cChild chief K).fst.Y → ZMod 2 y(Q2Presentation.Induction.cChild chief K).fst.Y 1 =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`. 0)
      (hzc∀ (a b c : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta a b + zeta (a * b) c = zeta b c + zeta a (b * c) :
         (a(Q2Presentation.Induction.cChild chief K).fst.Y b(Q2Presentation.Induction.cChild chief K).fst.Y c(Q2Presentation.Induction.cChild chief K).fst.Y : (Q2Presentation.Induction.cChildQ2Presentation.Induction.cChild {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPair**The C-child framed pair** (the carrier of `X_Γ(C)`; manuscript
    `C = Y/K` via `B/M' ≅ C`, `mChildCollapse`).  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.
    .YQ2Presentation.BoundaryFramedTarget.Y (self : Q2Presentation.BoundaryFramedTarget) : TypeThe finite target group `Y`. ),
          zeta(Q2Presentation.Induction.cChild chief K).fst.Y → (Q2Presentation.Induction.cChild chief K).fst.Y → ZMod 2 a(Q2Presentation.Induction.cChild chief K).fst.Y b(Q2Presentation.Induction.cChild chief K).fst.Y +HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`. zeta(Q2Presentation.Induction.cChild chief K).fst.Y → (Q2Presentation.Induction.cChild chief K).fst.Y → ZMod 2 (HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.a(Q2Presentation.Induction.cChild chief K).fst.Y *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. b(Q2Presentation.Induction.cChild chief K).fst.Y)HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. c(Q2Presentation.Induction.cChild chief K).fst.Y =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`. zeta(Q2Presentation.Induction.cChild chief K).fst.Y → (Q2Presentation.Induction.cChild chief K).fst.Y → ZMod 2 b(Q2Presentation.Induction.cChild chief K).fst.Y c(Q2Presentation.Induction.cChild chief K).fst.Y +HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`. zeta(Q2Presentation.Induction.cChild chief K).fst.Y → (Q2Presentation.Induction.cChild chief K).fst.Y → ZMod 2 a(Q2Presentation.Induction.cChild chief K).fst.Y (HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.b(Q2Presentation.Induction.cChild chief K).fst.Y *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. c(Q2Presentation.Induction.cChild chief K).fst.Y)HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.)
      (hR1 < Nat.card ↥(Q2Presentation.Induction.kernelFrattini K) : 1 <LT.lt.{u} {α : Type u} [self : LT α] : α → α → PropThe less-than relation: `x < y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `<` in identifiers is `lt`. Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number.
    If `α` is infinite, `Nat.card α = 0`.  (Q2Presentation.Induction.kernelFrattiniQ2Presentation.Induction.kernelFrattini {p : Q2Presentation.Induction.FramedPair}
      {chief : Q2Presentation.Induction.NonScalarChiefFactor p} (K : Q2Presentation.Induction.KernelMinimal chief) :
      Subgroup p.fst.YThe literal Frattini subgroup `R = Φ(K)` of the kernel, as a subgroup of `Y`
    (the manuscript's `R`, l.3626).  KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor))
      (JQ2Presentation.Induction.phaseCoverStrata chief K zeta hz1 hz2 hzc :
        Q2Presentation.Induction.phaseCoverStrataQ2Presentation.Induction.phaseCoverStrata {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (zeta : (Q2Presentation.Induction.cChild chief K).fst.Y → (Q2Presentation.Induction.cChild chief K).fst.Y → ZMod 2)
      (hz1 : ∀ (y : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta 1 y = 0)
      (hz2 : ∀ (y : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta y 1 = 0)
      (hzc :
        ∀ (a b c : (Q2Presentation.Induction.cChild chief K).fst.Y),
          zeta a b + zeta (a * b) c = zeta b c + zeta a (b * c)) :
      TypeThe exact-image strata of the phase cover — the manuscript sum index
    `{J̃ ≤ C_ζ : p_ζ(J̃) = C}` (l.4386–4389), as P2's generic `coverStrata`
    (the top stratum `J̃ = ⊤` included, manuscript-faithfully).  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor zeta(Q2Presentation.Induction.cChild chief K).fst.Y → (Q2Presentation.Induction.cChild chief K).fst.Y → ZMod 2 hz1∀ (y : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta 1 y = 0 hz2∀ (y : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta y 1 = 0
          hzc∀ (a b c : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta a b + zeta (a * b) c = zeta b c + zeta a (b * c)) :
      Q2Presentation.Induction.framedMeasureQ2Presentation.Induction.framedMeasure (p : Q2Presentation.Induction.FramedPair) : ℕThe induction measure `|L_Y|`: the order of the marked `2`-kernel of the framed
    target (manuscript: the strong induction of `thm:fixedframe` is on `|L_Y|`). 
          (Q2Presentation.Induction.phaseStratumPairQ2Presentation.Induction.phaseStratumPair {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (zeta : (Q2Presentation.Induction.cChild chief K).fst.Y → (Q2Presentation.Induction.cChild chief K).fst.Y → ZMod 2)
      (hz1 : ∀ (y : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta 1 y = 0)
      (hz2 : ∀ (y : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta y 1 = 0)
      (hzc :
        ∀ (a b c : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta a b + zeta (a * b) c = zeta b c + zeta a (b * c))
      (J : Q2Presentation.Induction.phaseCoverStrata chief K zeta hz1 hz2 hzc) : Q2Presentation.Induction.FramedPairThe stratum framed pair `(J̃, J̃ ∩ L̃, π̃|_J̃, θ̃|_J̃; same frame)` — an
    ordinary exact-image object in the same global boundary-framed category
    (l.3841–3843; mirror of `scalarCoverStratumPair`).  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor zeta(Q2Presentation.Induction.cChild chief K).fst.Y → (Q2Presentation.Induction.cChild chief K).fst.Y → ZMod 2 hz1∀ (y : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta 1 y = 0 hz2∀ (y : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta y 1 = 0
            hzc∀ (a b c : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta a b + zeta (a * b) c = zeta b c + zeta a (b * c) JQ2Presentation.Induction.phaseCoverStrata chief K zeta hz1 hz2 hzc) <LT.lt.{u} {α : Type u} [self : LT α] : α → α → PropThe less-than relation: `x < y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `<` in identifiers is `lt`.
        Q2Presentation.Induction.framedMeasureQ2Presentation.Induction.framedMeasure (p : Q2Presentation.Induction.FramedPair) : ℕThe induction measure `|L_Y|`: the order of the marked `2`-kernel of the framed
    target (manuscript: the strong induction of `thm:fixedframe` is on `|L_Y|`).  pQ2Presentation.Induction.FramedPair
    theorem Q2Presentation.Induction.phaseStratumPair_measure_lt
      {pQ2Presentation.Induction.FramedPair :
        Q2Presentation.Induction.FramedPairQ2Presentation.Induction.FramedPair : Type 1A **framed pair** `(𝒴, F)`: a boundary-framed marked target together with a
    boundary frame for it (manuscript Definition 4.1 + `eq:beta`).  This is the index of
    Theorem 4.2: the boundary-framed surjection count `e_Γ^β` is a function of the pair.
    The induction of `sec:induction` ranges over *all* such pairs simultaneously
    ("the induction is stated globally", l.1213), ordered by `|L_Y|`. }
      (chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p :
        Q2Presentation.Induction.FirstNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor (p : Q2Presentation.Induction.FramedPair) : TypeA non-scalar chief factor of `L_Y` that is **first**: every chief factor strictly
    below it (i.e. with upper term contained in `lower`) is scalar.  This is the manuscript's
    choice `S ◁ P` at l.3616–3623 ("all chief factors below `S` are scalar and `V` is the
    first non-scalar simple factor"), which `lem:collapse` requires for the coprime step
    `[S, Ñ] = 1`. 
          pQ2Presentation.Induction.FramedPair)
      (KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor :
        Q2Presentation.Induction.KernelMinimalQ2Presentation.Induction.KernelMinimal {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.NonScalarChiefFactor p) : TypeThe manuscript's kernel choice (l.3623): `K ◁ Y`, `K ≤ P`, `KS = P`, and `K` is
    **⊆-minimal** with these properties — stated as: any `Y`-normal `K' ≤ K` still joining
    with `S` to `P` equals `K`.  (This, not leastness among all candidates, is what
    `lem:simplehead` and `lem:collapse` use: both apply it to subgroups of `K`.) 
          chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p.toNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor.toNonScalarChiefFactor {p : Q2Presentation.Induction.FramedPair}
      (self : Q2Presentation.Induction.FirstNonScalarChiefFactor p) : Q2Presentation.Induction.NonScalarChiefFactor p)
      (zeta(Q2Presentation.Induction.cChild chief K).fst.Y → (Q2Presentation.Induction.cChild chief K).fst.Y → ZMod 2 :
        (Q2Presentation.Induction.cChildQ2Presentation.Induction.cChild {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPair**The C-child framed pair** (the carrier of `X_Γ(C)`; manuscript
    `C = Y/K` via `B/M' ≅ C`, `mChildCollapse`).  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p
                KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.
    .YQ2Presentation.BoundaryFramedTarget.Y (self : Q2Presentation.BoundaryFramedTarget) : TypeThe finite target group `Y`.  
          (Q2Presentation.Induction.cChildQ2Presentation.Induction.cChild {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPair**The C-child framed pair** (the carrier of `X_Γ(C)`; manuscript
    `C = Y/K` via `B/M' ≅ C`, `mChildCollapse`). 
                  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.
    .YQ2Presentation.BoundaryFramedTarget.Y (self : Q2Presentation.BoundaryFramedTarget) : TypeThe finite target group `Y`.  
            ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2)
      (hz1∀ (y : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta 1 y = 0 :
        
          (y(Q2Presentation.Induction.cChild chief K).fst.Y :
            (Q2Presentation.Induction.cChildQ2Presentation.Induction.cChild {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPair**The C-child framed pair** (the carrier of `X_Γ(C)`; manuscript
    `C = Y/K` via `B/M' ≅ C`, `mChildCollapse`). 
                  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.
    .YQ2Presentation.BoundaryFramedTarget.Y (self : Q2Presentation.BoundaryFramedTarget) : TypeThe finite target group `Y`. ),
          zeta(Q2Presentation.Induction.cChild chief K).fst.Y → (Q2Presentation.Induction.cChild chief K).fst.Y → ZMod 2 1 y(Q2Presentation.Induction.cChild chief K).fst.Y =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`. 0)
      (hz2∀ (y : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta y 1 = 0 :
        
          (y(Q2Presentation.Induction.cChild chief K).fst.Y :
            (Q2Presentation.Induction.cChildQ2Presentation.Induction.cChild {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPair**The C-child framed pair** (the carrier of `X_Γ(C)`; manuscript
    `C = Y/K` via `B/M' ≅ C`, `mChildCollapse`). 
                  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.
    .YQ2Presentation.BoundaryFramedTarget.Y (self : Q2Presentation.BoundaryFramedTarget) : TypeThe finite target group `Y`. ),
          zeta(Q2Presentation.Induction.cChild chief K).fst.Y → (Q2Presentation.Induction.cChild chief K).fst.Y → ZMod 2 y(Q2Presentation.Induction.cChild chief K).fst.Y 1 =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`. 0)
      (hzc∀ (a b c : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta a b + zeta (a * b) c = zeta b c + zeta a (b * c) :
        
          (a(Q2Presentation.Induction.cChild chief K).fst.Y b(Q2Presentation.Induction.cChild chief K).fst.Y c(Q2Presentation.Induction.cChild chief K).fst.Y :
            (Q2Presentation.Induction.cChildQ2Presentation.Induction.cChild {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPair**The C-child framed pair** (the carrier of `X_Γ(C)`; manuscript
    `C = Y/K` via `B/M' ≅ C`, `mChildCollapse`). 
                  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.
    .YQ2Presentation.BoundaryFramedTarget.Y (self : Q2Presentation.BoundaryFramedTarget) : TypeThe finite target group `Y`. ),
          zeta(Q2Presentation.Induction.cChild chief K).fst.Y → (Q2Presentation.Induction.cChild chief K).fst.Y → ZMod 2 a(Q2Presentation.Induction.cChild chief K).fst.Y b(Q2Presentation.Induction.cChild chief K).fst.Y +HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`. zeta(Q2Presentation.Induction.cChild chief K).fst.Y → (Q2Presentation.Induction.cChild chief K).fst.Y → ZMod 2 (HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.a(Q2Presentation.Induction.cChild chief K).fst.Y *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. b(Q2Presentation.Induction.cChild chief K).fst.Y)HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. c(Q2Presentation.Induction.cChild chief K).fst.Y =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`.
            zeta(Q2Presentation.Induction.cChild chief K).fst.Y → (Q2Presentation.Induction.cChild chief K).fst.Y → ZMod 2 b(Q2Presentation.Induction.cChild chief K).fst.Y c(Q2Presentation.Induction.cChild chief K).fst.Y +HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`. zeta(Q2Presentation.Induction.cChild chief K).fst.Y → (Q2Presentation.Induction.cChild chief K).fst.Y → ZMod 2 a(Q2Presentation.Induction.cChild chief K).fst.Y (HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.b(Q2Presentation.Induction.cChild chief K).fst.Y *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`. c(Q2Presentation.Induction.cChild chief K).fst.Y)HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.)
      (hR1 < Nat.card ↥(Q2Presentation.Induction.kernelFrattini K) :
        1 <LT.lt.{u} {α : Type u} [self : LT α] : α → α → PropThe less-than relation: `x < y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `<` in identifiers is `lt`.
          Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number.
    If `α` is infinite, `Nat.card α = 0`. 
            (Q2Presentation.Induction.kernelFrattiniQ2Presentation.Induction.kernelFrattini {p : Q2Presentation.Induction.FramedPair}
      {chief : Q2Presentation.Induction.NonScalarChiefFactor p} (K : Q2Presentation.Induction.KernelMinimal chief) :
      Subgroup p.fst.YThe literal Frattini subgroup `R = Φ(K)` of the kernel, as a subgroup of `Y`
    (the manuscript's `R`, l.3626). 
                KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor))
      (JQ2Presentation.Induction.phaseCoverStrata chief K zeta hz1 hz2 hzc :
        Q2Presentation.Induction.phaseCoverStrataQ2Presentation.Induction.phaseCoverStrata {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (zeta : (Q2Presentation.Induction.cChild chief K).fst.Y → (Q2Presentation.Induction.cChild chief K).fst.Y → ZMod 2)
      (hz1 : ∀ (y : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta 1 y = 0)
      (hz2 : ∀ (y : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta y 1 = 0)
      (hzc :
        ∀ (a b c : (Q2Presentation.Induction.cChild chief K).fst.Y),
          zeta a b + zeta (a * b) c = zeta b c + zeta a (b * c)) :
      TypeThe exact-image strata of the phase cover — the manuscript sum index
    `{J̃ ≤ C_ζ : p_ζ(J̃) = C}` (l.4386–4389), as P2's generic `coverStrata`
    (the top stratum `J̃ = ⊤` included, manuscript-faithfully). 
          chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor zeta(Q2Presentation.Induction.cChild chief K).fst.Y → (Q2Presentation.Induction.cChild chief K).fst.Y → ZMod 2 hz1∀ (y : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta 1 y = 0 hz2∀ (y : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta y 1 = 0 hzc∀ (a b c : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta a b + zeta (a * b) c = zeta b c + zeta a (b * c)) :
      Q2Presentation.Induction.framedMeasureQ2Presentation.Induction.framedMeasure (p : Q2Presentation.Induction.FramedPair) : ℕThe induction measure `|L_Y|`: the order of the marked `2`-kernel of the framed
    target (manuscript: the strong induction of `thm:fixedframe` is on `|L_Y|`). 
          (Q2Presentation.Induction.phaseStratumPairQ2Presentation.Induction.phaseStratumPair {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (zeta : (Q2Presentation.Induction.cChild chief K).fst.Y → (Q2Presentation.Induction.cChild chief K).fst.Y → ZMod 2)
      (hz1 : ∀ (y : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta 1 y = 0)
      (hz2 : ∀ (y : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta y 1 = 0)
      (hzc :
        ∀ (a b c : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta a b + zeta (a * b) c = zeta b c + zeta a (b * c))
      (J : Q2Presentation.Induction.phaseCoverStrata chief K zeta hz1 hz2 hzc) : Q2Presentation.Induction.FramedPairThe stratum framed pair `(J̃, J̃ ∩ L̃, π̃|_J̃, θ̃|_J̃; same frame)` — an
    ordinary exact-image object in the same global boundary-framed category
    (l.3841–3843; mirror of `scalarCoverStratumPair`). 
            chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor zeta(Q2Presentation.Induction.cChild chief K).fst.Y → (Q2Presentation.Induction.cChild chief K).fst.Y → ZMod 2 hz1∀ (y : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta 1 y = 0 hz2∀ (y : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta y 1 = 0 hzc∀ (a b c : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta a b + zeta (a * b) c = zeta b c + zeta a (b * c) JQ2Presentation.Induction.phaseCoverStrata chief K zeta hz1 hz2 hzc) <LT.lt.{u} {α : Type u} [self : LT α] : α → α → PropThe less-than relation: `x < y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `<` in identifiers is `lt`.
        Q2Presentation.Induction.framedMeasureQ2Presentation.Induction.framedMeasure (p : Q2Presentation.Induction.FramedPair) : ℕThe induction measure `|L_Y|`: the order of the marked `2`-kernel of the framed
    target (manuscript: the strong induction of `thm:fixedframe` is on `|L_Y|`). 
          pQ2Presentation.Induction.FramedPair
    **Strict decrease below the PARENT** (`lem:strictdecrease`
    `eq:phasecoverdescent` l.4411–4414 + l.4422–4424, in-tree chain
    `≤ 2·m_C ≤ |M'|·m_C = m_B < P`): every phase-cover stratum — including the
    top stratum `J̃ = ⊤` — is a strictly smaller induction target.  `hR`
    (implied by P8's `hcard`) enters only here. 
  • defdefined in Q2Presentation/Induction/ScalarCoverPartition.lean
    complete
    def Q2Presentation.Induction.scalarCoverStratumPair
      {pQ2Presentation.Induction.FramedPair : Q2Presentation.Induction.FramedPairQ2Presentation.Induction.FramedPair : Type 1A **framed pair** `(𝒴, F)`: a boundary-framed marked target together with a
    boundary frame for it (manuscript Definition 4.1 + `eq:beta`).  This is the index of
    Theorem 4.2: the boundary-framed surjection count `e_Γ^β` is a function of the pair.
    The induction of `sec:induction` ranges over *all* such pairs simultaneously
    ("the induction is stated globally", l.1213), ordered by `|L_Y|`. }
      (chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p : Q2Presentation.Induction.FirstNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor (p : Q2Presentation.Induction.FramedPair) : TypeA non-scalar chief factor of `L_Y` that is **first**: every chief factor strictly
    below it (i.e. with upper term contained in `lower`) is scalar.  This is the manuscript's
    choice `S ◁ P` at l.3616–3623 ("all chief factors below `S` are scalar and `V` is the
    first non-scalar simple factor"), which `lem:collapse` requires for the coprime step
    `[S, Ñ] = 1`.  pQ2Presentation.Induction.FramedPair)
      (KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor :
        Q2Presentation.Induction.KernelMinimalQ2Presentation.Induction.KernelMinimal {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.NonScalarChiefFactor p) : TypeThe manuscript's kernel choice (l.3623): `K ◁ Y`, `K ≤ P`, `KS = P`, and `K` is
    **⊆-minimal** with these properties — stated as: any `Y`-normal `K' ≤ K` still joining
    with `S` to `P` equals `K`.  (This, not leastness among all candidates, is what
    `lem:simplehead` and `lem:collapse` use: both apply it to subgroups of `K`.)  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p.toNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor.toNonScalarChiefFactor {p : Q2Presentation.Induction.FramedPair}
      (self : Q2Presentation.Induction.FirstNonScalarChiefFactor p) : Q2Presentation.Induction.NonScalarChiefFactor p)
      (lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) :
        Module.DualModule.Dual.{u_4, u_5} (R : Type u_4) (M : Type u_5) [Semiring R] [AddCommMonoid M] [Module R M] : Type (max u_5 u_4)The left dual space of an R-module M is the R-module of linear maps `M → R`.  (ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2)
          (Q2Presentation.Lifting.NAddQ2Presentation.Lifting.NAdd {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) : TypeThe additive `F₂`-carrier of an elementary kernel. 
            (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)))
      (hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K) :
        lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`.
          Q2Presentation.Lifting.conjInvDualsQ2Presentation.Lifting.conjInvDuals {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) :
      Submodule (ZMod 2) (Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E))The conjugation-invariant duals `X = (R^∨)^Y = (R^∨)^C` of an
    elementary kernel (consumer spelling of the manuscript's `𝒳_R`,
    §7 l.3720–3723). 
            (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor))
      (JQ2Presentation.Induction.scalarCoverStrata chief K lam hinv : Q2Presentation.Induction.scalarCoverStrataQ2Presentation.Induction.scalarCoverStrata {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) : Type**The exact-image strata of the scalar cover**: subgroups of `B_λ` mapping
    onto the child (`J̃ ≤ p_λ⁻¹(B)` with `p_λ(J̃) = B` — the manuscript sum index
    of `eq:covertransform` at the full lower target).  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) :
      Q2Presentation.Induction.FramedPairQ2Presentation.Induction.FramedPair : Type 1A **framed pair** `(𝒴, F)`: a boundary-framed marked target together with a
    boundary frame for it (manuscript Definition 4.1 + `eq:beta`).  This is the index of
    Theorem 4.2: the boundary-framed surjection count `e_Γ^β` is a function of the pair.
    The induction of `sec:induction` ranges over *all* such pairs simultaneously
    ("the induction is stated globally", l.1213), ordered by `|L_Y|`. 
    def Q2Presentation.Induction.scalarCoverStratumPair
      {pQ2Presentation.Induction.FramedPair :
        Q2Presentation.Induction.FramedPairQ2Presentation.Induction.FramedPair : Type 1A **framed pair** `(𝒴, F)`: a boundary-framed marked target together with a
    boundary frame for it (manuscript Definition 4.1 + `eq:beta`).  This is the index of
    Theorem 4.2: the boundary-framed surjection count `e_Γ^β` is a function of the pair.
    The induction of `sec:induction` ranges over *all* such pairs simultaneously
    ("the induction is stated globally", l.1213), ordered by `|L_Y|`. }
      (chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p :
        Q2Presentation.Induction.FirstNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor (p : Q2Presentation.Induction.FramedPair) : TypeA non-scalar chief factor of `L_Y` that is **first**: every chief factor strictly
    below it (i.e. with upper term contained in `lower`) is scalar.  This is the manuscript's
    choice `S ◁ P` at l.3616–3623 ("all chief factors below `S` are scalar and `V` is the
    first non-scalar simple factor"), which `lem:collapse` requires for the coprime step
    `[S, Ñ] = 1`. 
          pQ2Presentation.Induction.FramedPair)
      (KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor :
        Q2Presentation.Induction.KernelMinimalQ2Presentation.Induction.KernelMinimal {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.NonScalarChiefFactor p) : TypeThe manuscript's kernel choice (l.3623): `K ◁ Y`, `K ≤ P`, `KS = P`, and `K` is
    **⊆-minimal** with these properties — stated as: any `Y`-normal `K' ≤ K` still joining
    with `S` to `P` equals `K`.  (This, not leastness among all candidates, is what
    `lem:simplehead` and `lem:collapse` use: both apply it to subgroups of `K`.) 
          chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p.toNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor.toNonScalarChiefFactor {p : Q2Presentation.Induction.FramedPair}
      (self : Q2Presentation.Induction.FirstNonScalarChiefFactor p) : Q2Presentation.Induction.NonScalarChiefFactor p)
      (lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) :
        Module.DualModule.Dual.{u_4, u_5} (R : Type u_4) (M : Type u_5) [Semiring R] [AddCommMonoid M] [Module R M] : Type (max u_5 u_4)The left dual space of an R-module M is the R-module of linear maps `M → R`.  (ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2)
          (Q2Presentation.Lifting.NAddQ2Presentation.Lifting.NAdd {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) : TypeThe additive `F₂`-carrier of an elementary kernel. 
            (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian. 
              chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)))
      (hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K) :
        lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∈` in identifiers is `mem`.
          Q2Presentation.Lifting.conjInvDualsQ2Presentation.Lifting.conjInvDuals {Yt : Q2Presentation.BoundaryFramedTarget}
      (E : Q2Presentation.Lifting.ElementaryKernel Yt) :
      Submodule (ZMod 2) (Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E))The conjugation-invariant duals `X = (R^∨)^Y = (R^∨)^C` of an
    elementary kernel (consumer spelling of the manuscript's `𝒳_R`,
    §7 l.3720–3723). 
            (Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
      Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel**
    (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian. 
              chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor))
      (JQ2Presentation.Induction.scalarCoverStrata chief K lam hinv :
        Q2Presentation.Induction.scalarCoverStrataQ2Presentation.Induction.scalarCoverStrata {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)))
      (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) : Type**The exact-image strata of the scalar cover**: subgroups of `B_λ` mapping
    onto the child (`J̃ ≤ p_λ⁻¹(B)` with `p_λ(J̃) = B` — the manuscript sum index
    of `eq:covertransform` at the full lower target). 
          chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K)) hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) :
      Q2Presentation.Induction.FramedPairQ2Presentation.Induction.FramedPair : Type 1A **framed pair** `(𝒴, F)`: a boundary-framed marked target together with a
    boundary frame for it (manuscript Definition 4.1 + `eq:beta`).  This is the index of
    Theorem 4.2: the boundary-framed surjection count `e_Γ^β` is a function of the pair.
    The induction of `sec:induction` ranges over *all* such pairs simultaneously
    ("the induction is stated globally", l.1213), ordered by `|L_Y|`. 
    **The stratum framed pair** `(J̃, J̃ ∩ L̃, π̃|_J̃, θ̃|_J̃; same frame)` —
    an ordinary exact-image object in the same global boundary-framed category
    (same `H`, same `E`, `p.2`'s frame verbatim), ready for the engine's children
    lists.  Its measure is `|J̃ ∩ L̃|`, `lem:strictdecrease`'s quantity. 
  • theoremdefined in Q2Presentation/Lifting/CoverLiftPartition.lean
    complete
    theorem Q2Presentation.TorsorProgram.coverStrata_LY_card_le
      (YtQ2Presentation.BoundaryFramedTarget : Q2Presentation.BoundaryFramedTargetQ2Presentation.BoundaryFramedTarget : Type 1A **boundary-framed marked target** `𝒴 = (Y, L_Y, π_Y, θ_Y)` (manuscript
    Definition 4.1, `def:framed`): a finite group `Y` with a normal finite `2`-subgroup
    `L_Y`, a surjection `π_Y : Y ↠ H` onto a finite *tame* quotient with kernel exactly
    `L_Y`, and an *elementary decoration* `θ_Y : Y → Multiplicative E` into the
    multiplicative image of a finite `𝔽₂`-vector space `E`.  The pair
    `q_Y = (π_Y, θ_Y)` fixes both the tame quotient `Y / L_Y ≅ H` and the decoration. ) (NSubgroup Yt.Y : SubgroupSubgroup.{u_3} (G : Type u_3) [Group G] : Type u_3A subgroup of a group `G` is a subset containing 1, closed under multiplication
    and closed under multiplicative inverse.  YtQ2Presentation.BoundaryFramedTarget.YQ2Presentation.BoundaryFramedTarget.Y (self : Q2Presentation.BoundaryFramedTarget) : TypeThe finite target group `Y`. )
      [hNnN.Normal : NSubgroup Yt.Y.NormalSubgroup.Normal.{u_1} {G : Type u_1} [Group G] (H : Subgroup G) : PropA subgroup `H` is normal if whenever `n ∈ H`, then `g * n * g⁻¹ ∈ H` for every `g : G` ] (hNLYN ≤ Yt.LY : NSubgroup Yt.Y LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`.
    
     * The recommended spelling of `<=` in identifiers is `le` (prefer `≤` over `<=`). YtQ2Presentation.BoundaryFramedTarget.LYQ2Presentation.BoundaryFramedTarget.LY (self : Q2Presentation.BoundaryFramedTarget) : Subgroup self.YThe marked normal `2`-subgroup `L_Y ◁ Y` (the wild part). ) (hNθ∀ n ∈ N, Yt.thetaY n = 1 :  nYt.Y  NSubgroup Yt.Y, YtQ2Presentation.BoundaryFramedTarget.thetaYQ2Presentation.BoundaryFramedTarget.thetaY (self : Q2Presentation.BoundaryFramedTarget) :
      self.Y →* Multiplicative self.EThe elementary decoration `θ_Y : Y → Multiplicative E`.  nYt.Y =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`. 1)
      (JQ2Presentation.TorsorProgram.coverStrata Yt N : Q2Presentation.TorsorProgram.coverStrataQ2Presentation.TorsorProgram.coverStrata (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y)
      [hNn : N.Normal] : Type**The exact-image strata index**: subgroups of the ambient target mapping
    ONTO the child (`J̃ ≤ p⁻¹(J)` with `p(J̃) = J` at `J` = the full child;
    manuscript sum index of `eq:covertransform`).  YtQ2Presentation.BoundaryFramedTarget NSubgroup Yt.Y) :
      Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number.
    If `α` is infinite, `Nat.card α = 0`.  (YtQ2Presentation.BoundaryFramedTarget.exactImageTargetQ2Presentation.BoundaryFramedTarget.exactImageTarget (Yt : Q2Presentation.BoundaryFramedTarget) (J : Subgroup Yt.Y)
      (hJ : Function.Surjective ⇑(Yt.piY.comp J.subtype)) : Q2Presentation.BoundaryFramedTarget**The exact-image stratum** `𝒥 = (J, J ∩ L_Y, π_Y|_J, θ_Y|_J)` (manuscript
    Definition 4.1, exact-image paragraph), as a genuine `BoundaryFramedTarget`.
    
    The hypothesis `hJ` says `J` *projects onto* `H` (`π_Y|_J` surjective), which is the
    manuscript's "`J ≤ Y` projects onto `H`".  All four boundary-framed axioms are
    inherited:
    
    * `J ∩ L_Y` is normal in `J` (`Normal.subgroupOf`);
    * `J ∩ L_Y` is a `2`-group (`subgroupOf_LY_isTwoGroup`);
    * `π_Y|_J : J ↠ H` is surjective (the hypothesis `hJ`) with kernel `J ∩ L_Y`
      (`ker_piY_comp_subtype`).
    
    The tame quotient `H` and the elementary decoration `E` are preserved on the nose.
    This *is* the inheritance lemma: it being well-typed is the content.  JQ2Presentation.TorsorProgram.coverStrata Yt N ).LYQ2Presentation.BoundaryFramedTarget.LY (self : Q2Presentation.BoundaryFramedTarget) : Subgroup self.YThe marked normal `2`-subgroup `L_Y ◁ Y` (the wild part).  LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`.
    
     * The recommended spelling of `<=` in identifiers is `le` (prefer `≤` over `<=`).
        Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number.
    If `α` is infinite, `Nat.card α = 0`.  NSubgroup Yt.Y *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
          Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number.
    If `α` is infinite, `Nat.card α = 0`. 
            (Q2Presentation.TorsorProgram.quotientFramedTargetQ2Presentation.TorsorProgram.quotientFramedTarget (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y)
      [hNn : N.Normal] (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) : Q2Presentation.BoundaryFramedTarget**The quotient framed target** `Y/N` (same `H`, same `E`, image wild kernel).  YtQ2Presentation.BoundaryFramedTarget NSubgroup Yt.Y hNLYN ≤ Yt.LY
                  hNθ∀ n ∈ N, Yt.thetaY n = 1).LYQ2Presentation.BoundaryFramedTarget.LY (self : Q2Presentation.BoundaryFramedTarget) : Subgroup self.YThe marked normal `2`-subgroup `L_Y ◁ Y` (the wild part). 
    theorem Q2Presentation.TorsorProgram.coverStrata_LY_card_le
      (YtQ2Presentation.BoundaryFramedTarget :
        Q2Presentation.BoundaryFramedTargetQ2Presentation.BoundaryFramedTarget : Type 1A **boundary-framed marked target** `𝒴 = (Y, L_Y, π_Y, θ_Y)` (manuscript
    Definition 4.1, `def:framed`): a finite group `Y` with a normal finite `2`-subgroup
    `L_Y`, a surjection `π_Y : Y ↠ H` onto a finite *tame* quotient with kernel exactly
    `L_Y`, and an *elementary decoration* `θ_Y : Y → Multiplicative E` into the
    multiplicative image of a finite `𝔽₂`-vector space `E`.  The pair
    `q_Y = (π_Y, θ_Y)` fixes both the tame quotient `Y / L_Y ≅ H` and the decoration. )
      (NSubgroup Yt.Y : SubgroupSubgroup.{u_3} (G : Type u_3) [Group G] : Type u_3A subgroup of a group `G` is a subset containing 1, closed under multiplication
    and closed under multiplicative inverse.  YtQ2Presentation.BoundaryFramedTarget.YQ2Presentation.BoundaryFramedTarget.Y (self : Q2Presentation.BoundaryFramedTarget) : TypeThe finite target group `Y`. ) [hNnN.Normal : NSubgroup Yt.Y.NormalSubgroup.Normal.{u_1} {G : Type u_1} [Group G] (H : Subgroup G) : PropA subgroup `H` is normal if whenever `n ∈ H`, then `g * n * g⁻¹ ∈ H` for every `g : G` ]
      (hNLYN ≤ Yt.LY : NSubgroup Yt.Y LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`.
    
     * The recommended spelling of `<=` in identifiers is `le` (prefer `≤` over `<=`). YtQ2Presentation.BoundaryFramedTarget.LYQ2Presentation.BoundaryFramedTarget.LY (self : Q2Presentation.BoundaryFramedTarget) : Subgroup self.YThe marked normal `2`-subgroup `L_Y ◁ Y` (the wild part). )
      (hNθ∀ n ∈ N, Yt.thetaY n = 1 :  nYt.Y  NSubgroup Yt.Y, YtQ2Presentation.BoundaryFramedTarget.thetaYQ2Presentation.BoundaryFramedTarget.thetaY (self : Q2Presentation.BoundaryFramedTarget) :
      self.Y →* Multiplicative self.EThe elementary decoration `θ_Y : Y → Multiplicative E`.  nYt.Y =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`. 1)
      (JQ2Presentation.TorsorProgram.coverStrata Yt N :
        Q2Presentation.TorsorProgram.coverStrataQ2Presentation.TorsorProgram.coverStrata (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y)
      [hNn : N.Normal] : Type**The exact-image strata index**: subgroups of the ambient target mapping
    ONTO the child (`J̃ ≤ p⁻¹(J)` with `p(J̃) = J` at `J` = the full child;
    manuscript sum index of `eq:covertransform`). 
          YtQ2Presentation.BoundaryFramedTarget NSubgroup Yt.Y) :
      Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number.
    If `α` is infinite, `Nat.card α = 0`. 
          (YtQ2Presentation.BoundaryFramedTarget.exactImageTargetQ2Presentation.BoundaryFramedTarget.exactImageTarget (Yt : Q2Presentation.BoundaryFramedTarget) (J : Subgroup Yt.Y)
      (hJ : Function.Surjective ⇑(Yt.piY.comp J.subtype)) : Q2Presentation.BoundaryFramedTarget**The exact-image stratum** `𝒥 = (J, J ∩ L_Y, π_Y|_J, θ_Y|_J)` (manuscript
    Definition 4.1, exact-image paragraph), as a genuine `BoundaryFramedTarget`.
    
    The hypothesis `hJ` says `J` *projects onto* `H` (`π_Y|_J` surjective), which is the
    manuscript's "`J ≤ Y` projects onto `H`".  All four boundary-framed axioms are
    inherited:
    
    * `J ∩ L_Y` is normal in `J` (`Normal.subgroupOf`);
    * `J ∩ L_Y` is a `2`-group (`subgroupOf_LY_isTwoGroup`);
    * `π_Y|_J : J ↠ H` is surjective (the hypothesis `hJ`) with kernel `J ∩ L_Y`
      (`ker_piY_comp_subtype`).
    
    The tame quotient `H` and the elementary decoration `E` are preserved on the nose.
    This *is* the inheritance lemma: it being well-typed is the content.  JQ2Presentation.TorsorProgram.coverStrata Yt N ).LYQ2Presentation.BoundaryFramedTarget.LY (self : Q2Presentation.BoundaryFramedTarget) : Subgroup self.YThe marked normal `2`-subgroup `L_Y ◁ Y` (the wild part).  LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`.
    
     * The recommended spelling of `<=` in identifiers is `le` (prefer `≤` over `<=`).
        Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number.
    If `α` is infinite, `Nat.card α = 0`.  NSubgroup Yt.Y *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `*` in identifiers is `mul`.
          Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number.
    If `α` is infinite, `Nat.card α = 0`. 
            (Q2Presentation.TorsorProgram.quotientFramedTargetQ2Presentation.TorsorProgram.quotientFramedTarget (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y)
      [hNn : N.Normal] (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) : Q2Presentation.BoundaryFramedTarget**The quotient framed target** `Y/N` (same `H`, same `E`, image wild kernel). 
                  YtQ2Presentation.BoundaryFramedTarget NSubgroup Yt.Y hNLYN ≤ Yt.LY hNθ∀ n ∈ N, Yt.thetaY n = 1).LYQ2Presentation.BoundaryFramedTarget.LY (self : Q2Presentation.BoundaryFramedTarget) : Subgroup self.YThe marked normal `2`-subgroup `L_Y ◁ Y` (the wild part). 
    **Generic stratum measure bound** (`lem:strictdecrease`
    `eq:properweighteddescent` engine, l.4407): a stratum's marked kernel
    `J̃ ∩ L̃` is at most `|N|` times the child's marked kernel — the exact-sequence
    count `|J̃ ∩ L̃| = |ker| · |image|` with the kernel side inside `N` and the
    image side inside the child `L`. 

Theorem 8.17 of the paper (Closed exact-image recursion).

Suppose L_Y has a non-scalar simple head. The exact-image count e_\Gamma(Y) is obtained from (137) and, when R\ne1, from (139)–(146). Every exact-image count on the right-hand sides belongs to a boundary-framed target with strictly smaller marked 2-kernel. Hence the count is determined by the source interface of Corollary 6.6 and the exact-image counts for smaller targets.

Lean code for Theorem8.174 theorems
  • theoremdefined in Q2Presentation/Induction/MinimalBlock.lean
    complete
    theorem Q2Presentation.Induction.nonempty_minimalBlock_iff
      (pQ2Presentation.Induction.FramedPair : Q2Presentation.Induction.FramedPairQ2Presentation.Induction.FramedPair : Type 1A **framed pair** `(𝒴, F)`: a boundary-framed marked target together with a
    boundary frame for it (manuscript Definition 4.1 + `eq:beta`).  This is the index of
    Theorem 4.2: the boundary-framed surjection count `e_Γ^β` is a function of the pair.
    The induction of `sec:induction` ranges over *all* such pairs simultaneously
    ("the induction is stated globally", l.1213), ordered by `|L_Y|`. ) :
      NonemptyNonempty.{u} (α : Sort u) : Prop`Nonempty α` is a typeclass that says that `α` is not an empty type,
    that is, there exists an element in the type. It differs from `Inhabited α`
    in that `Nonempty α` is a `Prop`, which means that it does not actually carry
    an element of `α`, only a proof that *there exists* such an element.
    Given `Nonempty α`, you can construct an element of `α` *nonconstructively*
    using `Classical.choice`.
     (Q2Presentation.Induction.MinimalBlockQ2Presentation.Induction.MinimalBlock (p : Q2Presentation.Induction.FramedPair) : Type 1**The §7 minimal non-scalar block.**  Source-uniform module-level data of the
    manuscript tower (`eq:targettower`), with the deep group/representation inputs of
    `lem:simplehead`/`lem:collapse`/`prop:simpleheaddet` isolated as documented fields.  pQ2Presentation.Induction.FramedPair) Iff (a b : Prop) : PropIf and only if, or logical bi-implication. `a ↔ b` means that `a` implies `b` and vice versa.
    By `propext`, this implies that `a` and `b` are equal and hence any expression involving `a`
    is equivalent to the corresponding expression with `b` instead.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `↔` in identifiers is `iff`.
    
     * The recommended spelling of `<->` in identifiers is `iff` (prefer `↔` over `<->`).
        ¬Not (a : Prop) : Prop`Not p`, or `¬p`, is the negation of `p`. It is defined to be `p → False`,
    so if your goal is `¬p` you can use `intro h` to turn the goal into
    `h : p ⊢ False`, and if you have `hn : ¬p` and `h : p` then `hn h : False`
    and `(hn h).elim` will prove anything.
    For more information: [Propositional Logic](https://lean-lang.org/theorem_proving_in_lean4/propositions_and_proofs.html#propositional-logic)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `¬` in identifiers is `not`.Q2Presentation.Induction.ScalarTerminalQ2Presentation.Induction.ScalarTerminal (p : Q2Presentation.Induction.FramedPair) : Prop**Scalar-terminal framed pair.**  pQ2Presentation.Induction.FramedPair
    theorem Q2Presentation.Induction.nonempty_minimalBlock_iff
      (pQ2Presentation.Induction.FramedPair :
        Q2Presentation.Induction.FramedPairQ2Presentation.Induction.FramedPair : Type 1A **framed pair** `(𝒴, F)`: a boundary-framed marked target together with a
    boundary frame for it (manuscript Definition 4.1 + `eq:beta`).  This is the index of
    Theorem 4.2: the boundary-framed surjection count `e_Γ^β` is a function of the pair.
    The induction of `sec:induction` ranges over *all* such pairs simultaneously
    ("the induction is stated globally", l.1213), ordered by `|L_Y|`. ) :
      NonemptyNonempty.{u} (α : Sort u) : Prop`Nonempty α` is a typeclass that says that `α` is not an empty type,
    that is, there exists an element in the type. It differs from `Inhabited α`
    in that `Nonempty α` is a `Prop`, which means that it does not actually carry
    an element of `α`, only a proof that *there exists* such an element.
    Given `Nonempty α`, you can construct an element of `α` *nonconstructively*
    using `Classical.choice`.
    
          (Q2Presentation.Induction.MinimalBlockQ2Presentation.Induction.MinimalBlock (p : Q2Presentation.Induction.FramedPair) : Type 1**The §7 minimal non-scalar block.**  Source-uniform module-level data of the
    manuscript tower (`eq:targettower`), with the deep group/representation inputs of
    `lem:simplehead`/`lem:collapse`/`prop:simpleheaddet` isolated as documented fields. 
            pQ2Presentation.Induction.FramedPair) Iff (a b : Prop) : PropIf and only if, or logical bi-implication. `a ↔ b` means that `a` implies `b` and vice versa.
    By `propext`, this implies that `a` and `b` are equal and hence any expression involving `a`
    is equivalent to the corresponding expression with `b` instead.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `↔` in identifiers is `iff`.
    
     * The recommended spelling of `<->` in identifiers is `iff` (prefer `↔` over `<->`).
        ¬Not (a : Prop) : Prop`Not p`, or `¬p`, is the negation of `p`. It is defined to be `p → False`,
    so if your goal is `¬p` you can use `intro h` to turn the goal into
    `h : p ⊢ False`, and if you have `hn : ¬p` and `h : p` then `hn h : False`
    and `(hn h).elim` will prove anything.
    For more information: [Propositional Logic](https://lean-lang.org/theorem_proving_in_lean4/propositions_and_proofs.html#propositional-logic)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `¬` in identifiers is `not`.Q2Presentation.Induction.ScalarTerminalQ2Presentation.Induction.ScalarTerminal (p : Q2Presentation.Induction.FramedPair) : Prop**Scalar-terminal framed pair.** 
            pQ2Presentation.Induction.FramedPair
    **Non-scalarity is exactly block-existence** (`sec:block` entry/exit): combining the
    tightness projection with the §7 bridge axiom, a target admits a minimal non-scalar block
    iff it is not scalar-terminal.  This pins the bridge axiom to the manuscript dichotomy
    (`thm:closedrecursion` ∨ `lem:scalarterminal`) and rules out a vacuous block. 
  • theoremdefined in Q2Presentation/Induction/Section7ChiefKernelFoundation.lean
    complete
    theorem Q2Presentation.Induction.frattini_case_split
      {pQ2Presentation.Induction.FramedPair : Q2Presentation.Induction.FramedPairQ2Presentation.Induction.FramedPair : Type 1A **framed pair** `(𝒴, F)`: a boundary-framed marked target together with a
    boundary frame for it (manuscript Definition 4.1 + `eq:beta`).  This is the index of
    Theorem 4.2: the boundary-framed surjection count `e_Γ^β` is a function of the pair.
    The induction of `sec:induction` ranges over *all* such pairs simultaneously
    ("the induction is stated globally", l.1213), ordered by `|L_Y|`. }
      {chiefQ2Presentation.Induction.NonScalarChiefFactor p : Q2Presentation.Induction.NonScalarChiefFactorQ2Presentation.Induction.NonScalarChiefFactor (p : Q2Presentation.Induction.FramedPair) : TypeA concrete non-scalar chief factor in the marked wild kernel `L_Y`.
    
    This is the Lean form of the Section 7 entry point: choose `S triangleleft P <= L_Y`
    with `P/S` the first non-scalar simple factor.  Here the existing project predicate
    `ChiefFactorInLY` supplies the chief-factor condition, and `not ChiefFactorTrivial`
    records non-scalarity.  pQ2Presentation.Induction.FramedPair}
      (KQ2Presentation.Induction.KernelMinimal chief : Q2Presentation.Induction.KernelMinimalQ2Presentation.Induction.KernelMinimal {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.NonScalarChiefFactor p) : TypeThe manuscript's kernel choice (l.3623): `K ◁ Y`, `K ≤ P`, `KS = P`, and `K` is
    **⊆-minimal** with these properties — stated as: any `Y`-normal `K' ≤ K` still joining
    with `S` to `P` equals `K`.  (This, not leastness among all candidates, is what
    `lem:simplehead` and `lem:collapse` use: both apply it to subgroups of `K`.)  chiefQ2Presentation.Induction.NonScalarChiefFactor p) :
      Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number.
    If `α` is infinite, `Nat.card α = 0`.  (Q2Presentation.Induction.kernelFrattiniQ2Presentation.Induction.kernelFrattini {p : Q2Presentation.Induction.FramedPair}
      {chief : Q2Presentation.Induction.NonScalarChiefFactor p} (K : Q2Presentation.Induction.KernelMinimal chief) :
      Subgroup p.fst.YThe literal Frattini subgroup `R = Φ(K)` of the kernel, as a subgroup of `Y`
    (the manuscript's `R`, l.3626).  KQ2Presentation.Induction.KernelMinimal chief) =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`. 1 Or (a b : Prop) : Prop`Or a b`, or `a ∨ b`, is the disjunction of propositions. There are two
    constructors for `Or`, called `Or.inl : a → a ∨ b` and `Or.inr : b → a ∨ b`,
    and you can use `match` or `cases` to destruct an `Or` assumption into the
    two cases.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∨` in identifiers is `or`.
    
     * The recommended spelling of `\/` in identifiers is `or` (prefer `∨` over `\/`).
        1 <LT.lt.{u} {α : Type u} [self : LT α] : α → α → PropThe less-than relation: `x < y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `<` in identifiers is `lt`. Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number.
    If `α` is infinite, `Nat.card α = 0`.  (Q2Presentation.Induction.kernelFrattiniQ2Presentation.Induction.kernelFrattini {p : Q2Presentation.Induction.FramedPair}
      {chief : Q2Presentation.Induction.NonScalarChiefFactor p} (K : Q2Presentation.Induction.KernelMinimal chief) :
      Subgroup p.fst.YThe literal Frattini subgroup `R = Φ(K)` of the kernel, as a subgroup of `Y`
    (the manuscript's `R`, l.3626).  KQ2Presentation.Induction.KernelMinimal chief)
    theorem Q2Presentation.Induction.frattini_case_split
      {pQ2Presentation.Induction.FramedPair :
        Q2Presentation.Induction.FramedPairQ2Presentation.Induction.FramedPair : Type 1A **framed pair** `(𝒴, F)`: a boundary-framed marked target together with a
    boundary frame for it (manuscript Definition 4.1 + `eq:beta`).  This is the index of
    Theorem 4.2: the boundary-framed surjection count `e_Γ^β` is a function of the pair.
    The induction of `sec:induction` ranges over *all* such pairs simultaneously
    ("the induction is stated globally", l.1213), ordered by `|L_Y|`. }
      {chiefQ2Presentation.Induction.NonScalarChiefFactor p :
        Q2Presentation.Induction.NonScalarChiefFactorQ2Presentation.Induction.NonScalarChiefFactor (p : Q2Presentation.Induction.FramedPair) : TypeA concrete non-scalar chief factor in the marked wild kernel `L_Y`.
    
    This is the Lean form of the Section 7 entry point: choose `S triangleleft P <= L_Y`
    with `P/S` the first non-scalar simple factor.  Here the existing project predicate
    `ChiefFactorInLY` supplies the chief-factor condition, and `not ChiefFactorTrivial`
    records non-scalarity. 
          pQ2Presentation.Induction.FramedPair}
      (KQ2Presentation.Induction.KernelMinimal chief :
        Q2Presentation.Induction.KernelMinimalQ2Presentation.Induction.KernelMinimal {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.NonScalarChiefFactor p) : TypeThe manuscript's kernel choice (l.3623): `K ◁ Y`, `K ≤ P`, `KS = P`, and `K` is
    **⊆-minimal** with these properties — stated as: any `Y`-normal `K' ≤ K` still joining
    with `S` to `P` equals `K`.  (This, not leastness among all candidates, is what
    `lem:simplehead` and `lem:collapse` use: both apply it to subgroups of `K`.) 
          chiefQ2Presentation.Induction.NonScalarChiefFactor p) :
      Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number.
    If `α` is infinite, `Nat.card α = 0`. 
            (Q2Presentation.Induction.kernelFrattiniQ2Presentation.Induction.kernelFrattini {p : Q2Presentation.Induction.FramedPair}
      {chief : Q2Presentation.Induction.NonScalarChiefFactor p} (K : Q2Presentation.Induction.KernelMinimal chief) :
      Subgroup p.fst.YThe literal Frattini subgroup `R = Φ(K)` of the kernel, as a subgroup of `Y`
    (the manuscript's `R`, l.3626). 
                KQ2Presentation.Induction.KernelMinimal chief) =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`.
          1 Or (a b : Prop) : Prop`Or a b`, or `a ∨ b`, is the disjunction of propositions. There are two
    constructors for `Or`, called `Or.inl : a → a ∨ b` and `Or.inr : b → a ∨ b`,
    and you can use `match` or `cases` to destruct an `Or` assumption into the
    two cases.
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `∨` in identifiers is `or`.
    
     * The recommended spelling of `\/` in identifiers is `or` (prefer `∨` over `\/`).
        1 <LT.lt.{u} {α : Type u} [self : LT α] : α → α → PropThe less-than relation: `x < y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `<` in identifiers is `lt`.
          Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number.
    If `α` is infinite, `Nat.card α = 0`. 
            (Q2Presentation.Induction.kernelFrattiniQ2Presentation.Induction.kernelFrattini {p : Q2Presentation.Induction.FramedPair}
      {chief : Q2Presentation.Induction.NonScalarChiefFactor p} (K : Q2Presentation.Induction.KernelMinimal chief) :
      Subgroup p.fst.YThe literal Frattini subgroup `R = Φ(K)` of the kernel, as a subgroup of `Y`
    (the manuscript's `R`, l.3626). 
                KQ2Presentation.Induction.KernelMinimal chief)
    **The `R = 1` / `R ≠ 1` dichotomy** of `thm:closedrecursion` (l.4429/4437): either
    the Frattini layer is trivial — "`B = Y` and the induction closes at the elementary
    stage" — or it is a genuine strict layer and the `R`-obstruction stages apply. 
  • theoremdefined in Q2Presentation/Induction/Section7CorrectedBranch.lean
    complete
    theorem Q2Presentation.Induction.boundaryFramed_nonterminal_fourier_branch_corrected
      (pQ2Presentation.Induction.FramedPair : Q2Presentation.Induction.FramedPairQ2Presentation.Induction.FramedPair : Type 1A **framed pair** `(𝒴, F)`: a boundary-framed marked target together with a
    boundary frame for it (manuscript Definition 4.1 + `eq:beta`).  This is the index of
    Theorem 4.2: the boundary-framed surjection count `e_Γ^β` is a function of the pair.
    The induction of `sec:induction` ranges over *all* such pairs simultaneously
    ("the induction is stated globally", l.1213), ordered by `|L_Y|`. )
      (h¬Q2Presentation.Induction.ScalarTerminal p : ¬Not (a : Prop) : Prop`Not p`, or `¬p`, is the negation of `p`. It is defined to be `p → False`,
    so if your goal is `¬p` you can use `intro h` to turn the goal into
    `h : p ⊢ False`, and if you have `hn : ¬p` and `h : p` then `hn h : False`
    and `(hn h).elim` will prove anything.
    For more information: [Propositional Logic](https://lean-lang.org/theorem_proving_in_lean4/propositions_and_proofs.html#propositional-logic)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `¬` in identifiers is `not`.Q2Presentation.Induction.ScalarTerminalQ2Presentation.Induction.ScalarTerminal (p : Q2Presentation.Induction.FramedPair) : Prop**Scalar-terminal framed pair.**  pQ2Presentation.Induction.FramedPair) :
      NonemptyNonempty.{u} (α : Sort u) : Prop`Nonempty α` is a typeclass that says that `α` is not an empty type,
    that is, there exists an element in the type. It differs from `Inhabited α`
    in that `Nonempty α` is a `Prop`, which means that it does not actually carry
    an element of `α`, only a proof that *there exists* such an element.
    Given `Nonempty α`, you can construct an element of `α` *nonconstructively*
    using `Classical.choice`.
     (Q2Presentation.Induction.FourierBranchDataQ2Presentation.Induction.FourierBranchData (p : Q2Presentation.Induction.FramedPair) : Type 1**Nonterminal Fourier-recursion packet.**  Source-uniform data: the finite `𝔽₂`
    obstruction space `W = O_R`, the lift-torsor exponent/size `dimExp`/`zR`
    (`prop:finalfourier`), the strictly-smaller `children`, and the *single* partial-count
    recipe `partialN` (`eq:recursionR2`–`eq:phasecovertransform`).  Per-source data: the
    finite lift index `X_Γ`, the `R`-obstruction `o_Γ : X_Γ → O_R`, the lift-torsor
    identity `realize_Γ` (`e_Γ(Y) = z_R·#{o_Γ = 0}`), and the partial-count identity
    `partial_Γ`.  The two recursion equations are **not** fields: they are derived from
    `fourier_recursion_step`.  pQ2Presentation.Induction.FramedPair)
    theorem Q2Presentation.Induction.boundaryFramed_nonterminal_fourier_branch_corrected
      (pQ2Presentation.Induction.FramedPair :
        Q2Presentation.Induction.FramedPairQ2Presentation.Induction.FramedPair : Type 1A **framed pair** `(𝒴, F)`: a boundary-framed marked target together with a
    boundary frame for it (manuscript Definition 4.1 + `eq:beta`).  This is the index of
    Theorem 4.2: the boundary-framed surjection count `e_Γ^β` is a function of the pair.
    The induction of `sec:induction` ranges over *all* such pairs simultaneously
    ("the induction is stated globally", l.1213), ordered by `|L_Y|`. )
      (h¬Q2Presentation.Induction.ScalarTerminal p :
        ¬Not (a : Prop) : Prop`Not p`, or `¬p`, is the negation of `p`. It is defined to be `p → False`,
    so if your goal is `¬p` you can use `intro h` to turn the goal into
    `h : p ⊢ False`, and if you have `hn : ¬p` and `h : p` then `hn h : False`
    and `(hn h).elim` will prove anything.
    For more information: [Propositional Logic](https://lean-lang.org/theorem_proving_in_lean4/propositions_and_proofs.html#propositional-logic)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `¬` in identifiers is `not`.Q2Presentation.Induction.ScalarTerminalQ2Presentation.Induction.ScalarTerminal (p : Q2Presentation.Induction.FramedPair) : Prop**Scalar-terminal framed pair.** 
            pQ2Presentation.Induction.FramedPair) :
      NonemptyNonempty.{u} (α : Sort u) : Prop`Nonempty α` is a typeclass that says that `α` is not an empty type,
    that is, there exists an element in the type. It differs from `Inhabited α`
    in that `Nonempty α` is a `Prop`, which means that it does not actually carry
    an element of `α`, only a proof that *there exists* such an element.
    Given `Nonempty α`, you can construct an element of `α` *nonconstructively*
    using `Classical.choice`.
    
        (Q2Presentation.Induction.FourierBranchDataQ2Presentation.Induction.FourierBranchData (p : Q2Presentation.Induction.FramedPair) : Type 1**Nonterminal Fourier-recursion packet.**  Source-uniform data: the finite `𝔽₂`
    obstruction space `W = O_R`, the lift-torsor exponent/size `dimExp`/`zR`
    (`prop:finalfourier`), the strictly-smaller `children`, and the *single* partial-count
    recipe `partialN` (`eq:recursionR2`–`eq:phasecovertransform`).  Per-source data: the
    finite lift index `X_Γ`, the `R`-obstruction `o_Γ : X_Γ → O_R`, the lift-torsor
    identity `realize_Γ` (`e_Γ(Y) = z_R·#{o_Γ = 0}`), and the partial-count identity
    `partial_Γ`.  The two recursion equations are **not** fields: they are derived from
    `fourier_recursion_step`. 
          pQ2Presentation.Induction.FramedPair)
    **The corrected nonterminal Fourier branch.**  From non-scalar-terminality alone:
    choose a *first* non-scalar chief factor (proven), a ⊆-*minimal* kernel (proven), and
    split on the `R = Φ(K)` dichotomy (proven) — exactly the shape of `thm:closedrecursion`.
    No unconditional `|Φ(K)| > 1`, no least-form kernel, no `𝒳_R ≠ 0`. 
  • theoremdefined in Q2Presentation/PresentationCorrect.lean
    complete
    theorem Q2Presentation.surj_counts_equal (GType : TypeA type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. ) [GroupGroup.{u} (G : Type u) : Type uA `Group` is a `Monoid` with an operation `⁻¹` satisfying `a⁻¹ * a = 1`.
    
    There is also a division operation `/` such that `a / b = a * b⁻¹`,
    with a default so that `a / b = a * b⁻¹` holds by definition.
    
    Use `Group.ofLeftAxioms` or `Group.ofRightAxioms` to define a group structure
    on a type with the minimum proof obligations.
     GType] [FiniteFinite.{u_3} (α : Sort u_3) : PropA type is `Finite` if it is in bijective correspondence to some `Fin n`.
    
    This is similar to `Fintype`, but `Finite` is a proposition rather than data.
    A particular benefit to this is that `Finite` instances are definitionally equal to one another
    (due to proof irrelevance) rather than being merely propositionally equal,
    and, furthermore, `Finite` instances generally avoid the need for `Decidable` instances.
    One other notable difference is that `Finite` allows there to be `Finite p` instances
    for all `p : Prop`, which is not allowed by `Fintype` due to universe constraints.
    An application of this is that `Finite (x ∈ s → β x)` follows from the general instance for pi
    types, assuming `[∀ x, Finite (β x)]`.
    Implementation note: this is a reason `Finite α` is not defined as `Nonempty (Fintype α)`.
    
    Every `Fintype` instance provides a `Finite` instance via `Finite.of_fintype`.
    Conversely, one can noncomputably create a `Fintype` instance from a `Finite` instance
    via `Fintype.ofFinite`. In a proof one might write
    ```lean
      have := Fintype.ofFinite α
    ```
    to obtain such an instance.
    
    Do not write noncomputable `Fintype` instances; instead write `Finite` instances
    and use this `Fintype.ofFinite` interface.
    The `Fintype` instances should be relied upon to be computable for evaluation purposes.
    
    Theorems should use `Finite` instead of `Fintype`, unless definitions in the theorem statement
    require `Fintype`.
    Definitions should prefer `Finite` as well, unless it is important that the definitions
    are meant to be computable in the reduction or `#eval` sense.
     GType] :
      Cardinal.mkCardinal.mk.{u} : Type u → Cardinal.{u}The cardinal number of a type 
          (Q2Presentation.Profinite.SurjContHomQ2Presentation.Profinite.SurjContHom.{u} (P Q : ProfiniteGrp.{u}) : Type uA surjective continuous homomorphism of profinite groups (a profinite
    "epimorphism", recorded as data: the morphism together with surjectivity of the
    underlying map).  Q2Presentation.GammaAQ2Presentation.GammaA : ProfiniteGrp.{0}The candidate profinite group `Γ_A`, the cofiltered inverse limit (in
    `ProfiniteGrp`) of all admissible finite marked quotients (manuscript
    eq. `candidateinverse`). 
            (ProfiniteGrp.ofFiniteGrpProfiniteGrp.ofFiniteGrp.{u_1} (G : FiniteGrp.{u_1}) : ProfiniteGrp.{u_1}A `FiniteGrp` when given the discrete topology can be considered as a profinite group.  (FiniteGrp.ofFiniteGrp.of.{u} (G : Type u) [Group G] [Finite G] : FiniteGrp.{u}Construct a term of `FiniteGrp` from a type endowed with the structure of a finite group.  GType))) =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`.
        Cardinal.mkCardinal.mk.{u} : Type u → Cardinal.{u}The cardinal number of a type 
          (Q2Presentation.Profinite.SurjContHomQ2Presentation.Profinite.SurjContHom.{u} (P Q : ProfiniteGrp.{u}) : Type uA surjective continuous homomorphism of profinite groups (a profinite
    "epimorphism", recorded as data: the morphism together with surjectivity of the
    underlying map).  Q2Presentation.GQ2ProfiniteQ2Presentation.GQ2Profinite : ProfiniteGrp.{0}The absolute Galois group `G_{ℚ₂} = Gal(Q̄₂/ℚ₂)` of the `2`-adic field
    `ℚ₂ = ℚ_[2]`, as a profinite group.
    
    Concretely it is `Gal(SeparableClosure ℚ_[2] / ℚ_[2])`, packaged as an object of
    `ProfiniteGrp` by `InfiniteGalois.profiniteGalGrp`.  Since `ℚ_[2]` has
    characteristic `0` its separable closure is an algebraic closure, so this is the
    absolute Galois group in the usual sense, matching the manuscript's `G_{ℚ₂}`. 
            (ProfiniteGrp.ofFiniteGrpProfiniteGrp.ofFiniteGrp.{u_1} (G : FiniteGrp.{u_1}) : ProfiniteGrp.{u_1}A `FiniteGrp` when given the discrete topology can be considered as a profinite group.  (FiniteGrp.ofFiniteGrp.of.{u} (G : Type u) [Group G] [Finite G] : FiniteGrp.{u}Construct a term of `FiniteGrp` from a type endowed with the structure of a finite group.  GType)))
    theorem Q2Presentation.surj_counts_equal
      (GType : TypeA type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. ) [GroupGroup.{u} (G : Type u) : Type uA `Group` is a `Monoid` with an operation `⁻¹` satisfying `a⁻¹ * a = 1`.
    
    There is also a division operation `/` such that `a / b = a * b⁻¹`,
    with a default so that `a / b = a * b⁻¹` holds by definition.
    
    Use `Group.ofLeftAxioms` or `Group.ofRightAxioms` to define a group structure
    on a type with the minimum proof obligations.
     GType] [FiniteFinite.{u_3} (α : Sort u_3) : PropA type is `Finite` if it is in bijective correspondence to some `Fin n`.
    
    This is similar to `Fintype`, but `Finite` is a proposition rather than data.
    A particular benefit to this is that `Finite` instances are definitionally equal to one another
    (due to proof irrelevance) rather than being merely propositionally equal,
    and, furthermore, `Finite` instances generally avoid the need for `Decidable` instances.
    One other notable difference is that `Finite` allows there to be `Finite p` instances
    for all `p : Prop`, which is not allowed by `Fintype` due to universe constraints.
    An application of this is that `Finite (x ∈ s → β x)` follows from the general instance for pi
    types, assuming `[∀ x, Finite (β x)]`.
    Implementation note: this is a reason `Finite α` is not defined as `Nonempty (Fintype α)`.
    
    Every `Fintype` instance provides a `Finite` instance via `Finite.of_fintype`.
    Conversely, one can noncomputably create a `Fintype` instance from a `Finite` instance
    via `Fintype.ofFinite`. In a proof one might write
    ```lean
      have := Fintype.ofFinite α
    ```
    to obtain such an instance.
    
    Do not write noncomputable `Fintype` instances; instead write `Finite` instances
    and use this `Fintype.ofFinite` interface.
    The `Fintype` instances should be relied upon to be computable for evaluation purposes.
    
    Theorems should use `Finite` instead of `Fintype`, unless definitions in the theorem statement
    require `Fintype`.
    Definitions should prefer `Finite` as well, unless it is important that the definitions
    are meant to be computable in the reduction or `#eval` sense.
     GType] :
      Cardinal.mkCardinal.mk.{u} : Type u → Cardinal.{u}The cardinal number of a type 
          (Q2Presentation.Profinite.SurjContHomQ2Presentation.Profinite.SurjContHom.{u} (P Q : ProfiniteGrp.{u}) : Type uA surjective continuous homomorphism of profinite groups (a profinite
    "epimorphism", recorded as data: the morphism together with surjectivity of the
    underlying map). 
            Q2Presentation.GammaAQ2Presentation.GammaA : ProfiniteGrp.{0}The candidate profinite group `Γ_A`, the cofiltered inverse limit (in
    `ProfiniteGrp`) of all admissible finite marked quotients (manuscript
    eq. `candidateinverse`). 
            (ProfiniteGrp.ofFiniteGrpProfiniteGrp.ofFiniteGrp.{u_1} (G : FiniteGrp.{u_1}) : ProfiniteGrp.{u_1}A `FiniteGrp` when given the discrete topology can be considered as a profinite group. 
              (FiniteGrp.ofFiniteGrp.of.{u} (G : Type u) [Group G] [Finite G] : FiniteGrp.{u}Construct a term of `FiniteGrp` from a type endowed with the structure of a finite group.  GType))) =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`.
        Cardinal.mkCardinal.mk.{u} : Type u → Cardinal.{u}The cardinal number of a type 
          (Q2Presentation.Profinite.SurjContHomQ2Presentation.Profinite.SurjContHom.{u} (P Q : ProfiniteGrp.{u}) : Type uA surjective continuous homomorphism of profinite groups (a profinite
    "epimorphism", recorded as data: the morphism together with surjectivity of the
    underlying map). 
            Q2Presentation.GQ2ProfiniteQ2Presentation.GQ2Profinite : ProfiniteGrp.{0}The absolute Galois group `G_{ℚ₂} = Gal(Q̄₂/ℚ₂)` of the `2`-adic field
    `ℚ₂ = ℚ_[2]`, as a profinite group.
    
    Concretely it is `Gal(SeparableClosure ℚ_[2] / ℚ_[2])`, packaged as an object of
    `ProfiniteGrp` by `InfiniteGalois.profiniteGalGrp`.  Since `ℚ_[2]` has
    characteristic `0` its separable closure is an algebraic closure, so this is the
    absolute Galois group in the usual sense, matching the manuscript's `G_{ℚ₂}`. 
            (ProfiniteGrp.ofFiniteGrpProfiniteGrp.ofFiniteGrp.{u_1} (G : FiniteGrp.{u_1}) : ProfiniteGrp.{u_1}A `FiniteGrp` when given the discrete topology can be considered as a profinite group. 
              (FiniteGrp.ofFiniteGrp.of.{u} (G : Type u) [Group G] [Finite G] : FiniteGrp.{u}Construct a term of `FiniteGrp` from a type endowed with the structure of a finite group.  GType)))
    **Equal finite surjection counts, packaged for the reconstruction lemma.**  This
    is `finite_surjection_counts_equal_corrected` — the manuscript-faithful §7 route
    (first non-scalar chief factor + ⊆-minimal kernel + the `R = Φ(K)` dichotomy of
    `thm:closedrecursion`; see `Induction/Section7ChiefKernelFoundation.lean` and
    PROGRESS.md "SOUNDNESS FINDINGS") — with its redundant `[Nonempty G]` discharged:
    every group is nonempty via its identity `⟨1⟩`.  The shape now matches the
    hypothesis `h` of `profinite_reconstruction_of_surj_counts`, which quantifies over
    all finite groups without a nonemptiness assumption. 
Proof