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

6. Quadratic determinant obstructions🔗

Lemma6.1
Group: Quadratic determinant obstructions (7)
Hover another entry in this group to preview it.
L∃∀Nused by 0

Lemma 6.1 of the paper (Equivariant extraspecial connecting cocycle).

Let V be an elementary \F_2[C]-module, let q:V\to\F_2 be a C-invariant quadratic form with polar form b_q, and let

f:V\times V\to\F_2, \qquad f(v,v)=q(v),\qquad f(v,w)+f(w,v)=b_q(v,w),

be a normalized factor set for the central extension

E_f=V\times\F_2, \qquad (v,z)(w,t)=(v+w,z+t+f(v,w)).

When an equivariant lift is chosen, its action in the normalized section is written by functions m_c:V\to\F_2 satisfying

m_c(v+w)+m_c(v)+m_c(w)=f(cv,cw)+f(v,w)

and

m_{cd}(v)=m_c(dv)+m_d(v),\qquad m_1=0.

Equivalently,

c\cdot(v,z)=(cv,z+m_c(v))

defines an action by automorphisms of E_f. The associated normalized base central cocycle on V\rtimes C is

\kappa_q^0((v,c),(w,d))=f(v,cw)+m_c(w).

Consequently, for a source \Gamma, a lower map \rho:\Gamma\to C, and a normalized V-valued 1-cocycle b, the base connecting cocycle is

(b,\rho)^*\kappa_q^0(g,h) =f(b(g),\rho(g)b(h))+m_{\rho(g)}(b(h)).

If \kappa is another normalized central cocycle on V\rtimes C whose restriction to V is the same quadratic form q, then, after replacing \kappa by a cohomologous normalized cocycle and changing the normalized section, the following is an equality of normalized 2-cochains:

\kappa=\kappa_q^0+\Gamma_\gamma+ \operatorname{inf}_C^{V\rtimes C}\delta,

where

\Gamma_\gamma((v,c),(w,d))=\gamma(c)(cw), \qquad \gamma\in Z^1(C,V^\vee),\quad \delta\in Z^2(C,\F_2).

After graph pullback and application of the source functional \iota_\Gamma, the corresponding scalar quadratic obstruction is

Q_{\kappa,\Gamma,\rho}(b) =Q^0_{\Gamma,\rho}(b) +\langle b,\rho^*\gamma\rangle_\Gamma +\iota_\Gamma(\rho^*\delta),

where

Q^0_{\Gamma,\rho}(b)= \iota_\Gamma\bigl((b,\rho)^*\kappa_q^0\bigr).

Its polarization is the source pairing transported by b_q.

Lean code for Lemma6.11 definition
  • structure(4 fields)defined in Q2Presentation/Induction/TransgressionUnit.lean
    complete
    structure Q2Presentation.Induction.BaseModelData
      {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) : TypeA type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. 
    structure Q2Presentation.Induction.BaseModelData
      {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) : TypeA type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. 
    **The `κ_q⁰`-model data** at the R4b head: the coherent equivariant
    correction functions `m_c` of `lem:extraspecialconnecting`
    (`eq:mquadratic` l.2118–2120 + `eq:mcoherent` l.2122–2124) against the
    bilinear factor set `edgeBaseFactor` — exactly the `mC`-slots of
    `ZeroEdgeDescentData`. 

    Fields

    mQ2Presentation.Induction.towerC K → Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K → ZMod 2 : 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.towerMQ2Presentation.Induction.towerM {p : Q2Presentation.Induction.FramedPair}
      {chief : Q2Presentation.Induction.NonScalarChiefFactor p} (K : Q2Presentation.Induction.KernelMinimal chief) : TypeThe additive elementary module layer `M = K/Φ(K)` (`lem:simplehead`).  KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor 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.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  ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2
    m_one∀ (v : Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K), self.m 1 v = 0 :  (vQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K : Q2Presentation.Induction.towerMQ2Presentation.Induction.towerM {p : Q2Presentation.Induction.FramedPair}
      {chief : Q2Presentation.Induction.NonScalarChiefFactor p} (K : Q2Presentation.Induction.KernelMinimal chief) : TypeThe additive elementary module layer `M = K/Φ(K)` (`lem:simplehead`).  KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor 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.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), selfQ2Presentation.Induction.BaseModelData chief K lam hinv hne.mQ2Presentation.Induction.BaseModelData.m {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}
      (self : Q2Presentation.Induction.BaseModelData chief K lam hinv hne) :
      Q2Presentation.Induction.towerC K → Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K → ZMod 2 1 vQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT 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
    m_quadratic∀ (c : Q2Presentation.Induction.towerC K) (v w : Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K),
      self.m c (v + w) + self.m c v + self.m c w =
        ((Q2Presentation.Induction.edgeBaseFactor chief K lam hinv hne) ((Q2Presentation.Induction.headActE chief K c) v))
            ((Q2Presentation.Induction.headActE chief K c) w) +
          ((Q2Presentation.Induction.edgeBaseFactor chief K lam hinv hne) v) w :  (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) (vQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K wQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K : Q2Presentation.Induction.towerMQ2Presentation.Induction.towerM {p : Q2Presentation.Induction.FramedPair}
      {chief : Q2Presentation.Induction.NonScalarChiefFactor p} (K : Q2Presentation.Induction.KernelMinimal chief) : TypeThe additive elementary module layer `M = K/Φ(K)` (`lem:simplehead`).  KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor 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.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),
      selfQ2Presentation.Induction.BaseModelData chief K lam hinv hne.mQ2Presentation.Induction.BaseModelData.m {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}
      (self : Q2Presentation.Induction.BaseModelData chief K lam hinv hne) :
      Q2Presentation.Induction.towerC K → Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K → ZMod 2 cQ2Presentation.Induction.towerC 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`.vQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT 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`. wQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT 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`. +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`. selfQ2Presentation.Induction.BaseModelData chief K lam hinv hne.mQ2Presentation.Induction.BaseModelData.m {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}
      (self : Q2Presentation.Induction.BaseModelData chief K lam hinv hne) :
      Q2Presentation.Induction.towerC K → Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K → ZMod 2 cQ2Presentation.Induction.towerC K vQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT 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`. selfQ2Presentation.Induction.BaseModelData chief K lam hinv hne.mQ2Presentation.Induction.BaseModelData.m {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}
      (self : Q2Presentation.Induction.BaseModelData chief K lam hinv hne) :
      Q2Presentation.Induction.towerC K → Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K → ZMod 2 cQ2Presentation.Induction.towerC K wQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT 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.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) hnelam ≠ 0) ((Q2Presentation.Induction.headActEQ2Presentation.Induction.headActE {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (c : Q2Presentation.Induction.towerC K) :
      Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K →ₗ[ZMod 2]
        Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT KThe descended `C`-action on the head `V = M/T` (`towerActM` mod the
    stable radical layer, via `Submodule.mapQ`).  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor cQ2Presentation.Induction.towerC K) vQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K))
            ((Q2Presentation.Induction.headActEQ2Presentation.Induction.headActE {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (c : Q2Presentation.Induction.towerC K) :
      Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K →ₗ[ZMod 2]
        Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT KThe descended `C`-action on the head `V = M/T` (`towerActM` mod the
    stable radical layer, via `Submodule.mapQ`).  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor cQ2Presentation.Induction.towerC K) wQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT 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`.
          ((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) hnelam ≠ 0) vQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K) wQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K
    m_coherent∀ (c d : Q2Presentation.Induction.towerC K) (v : Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K),
      self.m (c * d) v = self.m c ((Q2Presentation.Induction.headActE chief K d) v) + self.m d v :  (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) (vQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K : Q2Presentation.Induction.towerMQ2Presentation.Induction.towerM {p : Q2Presentation.Induction.FramedPair}
      {chief : Q2Presentation.Induction.NonScalarChiefFactor p} (K : Q2Presentation.Induction.KernelMinimal chief) : TypeThe additive elementary module layer `M = K/Φ(K)` (`lem:simplehead`).  KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor 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.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),
      selfQ2Presentation.Induction.BaseModelData chief K lam hinv hne.mQ2Presentation.Induction.BaseModelData.m {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}
      (self : Q2Presentation.Induction.BaseModelData chief K lam hinv hne) :
      Q2Presentation.Induction.towerC K → Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K → 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`.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`. vQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT 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`. selfQ2Presentation.Induction.BaseModelData chief K lam hinv hne.mQ2Presentation.Induction.BaseModelData.m {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}
      (self : Q2Presentation.Induction.BaseModelData chief K lam hinv hne) :
      Q2Presentation.Induction.towerC K → Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K → ZMod 2 cQ2Presentation.Induction.towerC K ((Q2Presentation.Induction.headActEQ2Presentation.Induction.headActE {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (c : Q2Presentation.Induction.towerC K) :
      Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K →ₗ[ZMod 2]
        Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT KThe descended `C`-action on the head `V = M/T` (`towerActM` mod the
    stable radical layer, via `Submodule.mapQ`).  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor dQ2Presentation.Induction.towerC K) vQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT 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`. selfQ2Presentation.Induction.BaseModelData chief K lam hinv hne.mQ2Presentation.Induction.BaseModelData.m {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}
      (self : Q2Presentation.Induction.BaseModelData chief K lam hinv hne) :
      Q2Presentation.Induction.towerC K → Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K → ZMod 2 dQ2Presentation.Induction.towerC K vQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K
Lemma6.2
Group: Quadratic determinant obstructions (7)
Hover another entry in this group to preview it.
L∃∀Nused by 0

Lemma 6.3 of the paper (Base equivariant determinant class).

Let V be a nontrivial simple self-dual tame \F_2[C]-module, let H=H_V be its faithful tame image, and let q:V\to\F_2 be a nonzero H-invariant nonsingular quadratic form. There is a normalized base class

\kappa_q^0\in Z^2(V\rtimes H,\F_2)

whose restriction to V has square map q.

Choose an H-split pair

V\xrightarrow{i}W=\F_2[H]^N\xrightarrow{p}V, \qquad pi=1,

and put q_W=q\circ p. In the left-regular coordinates X_{j,h} of W, the unique algebraic normal form of the H-invariant quadratic map q_W is a sum of orbit polynomials of the following three types:

\begin{aligned}S_j&=\sum_{h\in H}X_{j,h}^2, \\ C_{j,k,g}&=\sum_{h\in H}X_{j,h}X_{k,hg} \quad\text{when the corresponding unordered pair has trivial stabilizer}, \\ E_{j,g}&=\sum_{u\in\mathcal R_g}X_{j,u}X_{j,ug}, \qquad g^2=1,\ g\ne1,\end{aligned}

where \mathcal R_g is any set of representatives for the right cosets of \langle g\rangle in H. For a square orbit use the H-invariant factor set

f_{S_j}(x,y)=\sum_{h\in H}x_{j,h}y_{j,h}, \qquad m_c=0.

For a free orbit use

f_{C_{j,k,g}}(x,y)=\sum_{h\in H}x_{j,h}y_{k,hg}, \qquad m_c=0.

For an involution-stabilized orbit use the cocycle (73) of Lemma 6.2 on the jth regular summand, with \mathcal R=\mathcal R_g. Let \kappa_{q_W}^0 be the sum of the cocycles corresponding to the orbit polynomials occurring in q_W, and put

\kappa_q^0=(i\rtimes1)^*\kappa_{q_W}^0.

Then \kappa_q^0 vanishes on the zero section and \operatorname{res}_V(\kappa_q^0) has square map q. If a lower target has quotient C acting through H, we inflate this class along C\to H and keep the same notation.

Lean code for Lemma6.210 declarations
  • theoremdefined in Q2Presentation/Induction/BaseModelHeadStructure.lean
    complete
    theorem Q2Presentation.Induction.headIm_odd_of_unramified
      {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)
      (h1Q2Presentation.Induction.headTau chief K = 1 : Q2Presentation.Induction.headTauQ2Presentation.Induction.headTau {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.HeadIm chief K**`τ̃` — THE canonical ramification operator of the block** (design
    §4.2/§4.5: `headTau = 1` exactly captures the unramified discharge
    below; when P8-S2a lands, `blockTameRamFlag` is to be DEFINED as the
    Bool-spelling of `headTau ≠ 1`, so the F-ram gate and the sign-lane
    flag are the same object).  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p 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) :
      OddOdd.{u_2} {α : Type u_2} [Semiring α] (a : α) : PropAn element `a` of a semiring is odd if there exists `k` such `a = 2*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.HeadImQ2Presentation.Induction.HeadIm {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Type**The faithful head-action image** (the carrier of the averaging;
    the manuscript's `H_V`-quotient of `lem:basedetclass`).  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor))
    theorem Q2Presentation.Induction.headIm_odd_of_unramified
      {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)
      (h1Q2Presentation.Induction.headTau chief K = 1 :
        Q2Presentation.Induction.headTauQ2Presentation.Induction.headTau {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.HeadIm chief K**`τ̃` — THE canonical ramification operator of the block** (design
    §4.2/§4.5: `headTau = 1` exactly captures the unramified discharge
    below; when P8-S2a lands, `blockTameRamFlag` is to be DEFINED as the
    Bool-spelling of `headTau ≠ 1`, so the F-ram gate and the sign-lane
    flag are the same object).  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p
            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) :
      OddOdd.{u_2} {α : Type u_2} [Semiring α] (a : α) : PropAn element `a` of a semiring is odd if there exists `k` such `a = 2*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.HeadImQ2Presentation.Induction.HeadIm {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Type**The faithful head-action image** (the carrier of the averaging;
    the manuscript's `H_V`-quotient of `lem:basedetclass`). 
            chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor))
    **F-H5 — the unramified clause is a THEOREM** (`lem:basedetclass`
    l.2342–2345): at `headTau = 1` the faithful image is cyclic; by Cauchy
    an even order would give an element `t` of order 2, whose (normal,
    since the group is cyclic) `⟨t⟩` acts trivially by F-H2 over F-H1's
    dichotomy — contradicting faithfulness of `actQ`
    (`QuotientGroup.kerLift_injective`).  So `|HeadIm|` is odd.
    IMPLICATION ONLY — the converse is FALSE (odd ramified blocks exist,
    design §4.3): never state this as an iff. 
  • theoremdefined in Q2Presentation/Induction/BaseModelHeadStructure.lean
    complete
    theorem Q2Presentation.Induction.baseModelExists_of_unramified
      {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) (h1Q2Presentation.Induction.headTau chief K = 1 : Q2Presentation.Induction.headTauQ2Presentation.Induction.headTau {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.HeadIm chief K**`τ̃` — THE canonical ramification operator of the block** (design
    §4.2/§4.5: `headTau = 1` exactly captures the unramified discharge
    below; when P8-S2a lands, `blockTameRamFlag` is to be DEFINED as the
    Bool-spelling of `headTau ≠ 1`, so the F-ram gate and the sign-lane
    flag are the same object).  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p 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) :
      Q2Presentation.Induction.BaseModelExistsQ2Presentation.Induction.BaseModelExists {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**KEEP-SHAPED INPUT (named `Prop`, consumed as a hypothesis):
    the base equivariant determinant class exists at the R4b head.**
    
    Provenance (manuscript): `lem:basedetclass` l.2286–2360 — the normalized
    base class `κ_q⁰ ∈ Z²(V⋊H,𝔽₂)` with fibre square map `q`, built on an
    `H`-split regular pair via the three orbit-polynomial factor sets
    (`eq:squareorbitfactor`, `eq:freeorbitfactor`, `eq:kappahalforbit`);
    its normalized-section action data are exactly the `m_c` of
    `lem:extraspecialconnecting`.  The proof consumes the tame module
    structure (projectivity via `lem:faithfulprojective` in the ramified
    case, Maschke in the odd unramified case) — genuinely arithmetic input
    about `V`, NOT finite bookkeeping.
    
    Dissolution program (owner: the P6 base-class lane, coordinated with
    BLOCKR_P6_DESIGN §1.1 which records the `eq:basekappacochain`
    normalization shape): (i) the split pair `V → 𝔽₂[H]^N → V` at the head
    (`edgeHead`-carrier Maschke/projectivity); (ii) the three orbit factor
    sets with their `m_c = 0` resp. half-orbit corrections; (iii) pullback
    and the `eq:mquadratic`/`eq:mcoherent` laws.  Until it lands, both
    `btChild_splits_of` and `zeroEdgeDescentData_nonempty_of` consume the
    DATA (`BaseModelData`) as an explicit hypothesis.  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.baseModelExists_of_unramified
      {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)
      (h1Q2Presentation.Induction.headTau chief K = 1 :
        Q2Presentation.Induction.headTauQ2Presentation.Induction.headTau {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.HeadIm chief K**`τ̃` — THE canonical ramification operator of the block** (design
    §4.2/§4.5: `headTau = 1` exactly captures the unramified discharge
    below; when P8-S2a lands, `blockTameRamFlag` is to be DEFINED as the
    Bool-spelling of `headTau ≠ 1`, so the F-ram gate and the sign-lane
    flag are the same object).  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p
            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) :
      Q2Presentation.Induction.BaseModelExistsQ2Presentation.Induction.BaseModelExists {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**KEEP-SHAPED INPUT (named `Prop`, consumed as a hypothesis):
    the base equivariant determinant class exists at the R4b head.**
    
    Provenance (manuscript): `lem:basedetclass` l.2286–2360 — the normalized
    base class `κ_q⁰ ∈ Z²(V⋊H,𝔽₂)` with fibre square map `q`, built on an
    `H`-split regular pair via the three orbit-polynomial factor sets
    (`eq:squareorbitfactor`, `eq:freeorbitfactor`, `eq:kappahalforbit`);
    its normalized-section action data are exactly the `m_c` of
    `lem:extraspecialconnecting`.  The proof consumes the tame module
    structure (projectivity via `lem:faithfulprojective` in the ramified
    case, Maschke in the odd unramified case) — genuinely arithmetic input
    about `V`, NOT finite bookkeeping.
    
    Dissolution program (owner: the P6 base-class lane, coordinated with
    BLOCKR_P6_DESIGN §1.1 which records the `eq:basekappacochain`
    normalization shape): (i) the split pair `V → 𝔽₂[H]^N → V` at the head
    (`edgeHead`-carrier Maschke/projectivity); (ii) the three orbit factor
    sets with their `m_c = 0` resp. half-orbit corrections; (iii) pullback
    and the `eq:mquadratic`/`eq:mcoherent` laws.  Until it lands, both
    `btChild_splits_of` and `zeroEdgeDescentData_nonempty_of` consume the
    DATA (`BaseModelData`) as an explicit hypothesis. 
        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
    **The unramified branch of `q2_baseModel` is a THEOREM** (F-H5
    exit): `headTau = 1 ⟹ Odd |HeadIm| ⟹ BaseModelExists`, through the
    banked `baseModelExists_of_oddHeadAction`.  This makes the
    manuscript's entire unramified clause of `lem:basedetclass`
    (l.2342–2345) in-tree; composed with the F-G3 assembly it certifies
    the residual keep's content as EXACTLY the ramified `4 < dimV`
    branch. 
  • abbrevdefined in Q2Presentation/Induction/BaseModelSplitting.lean
    complete
    abbrev Q2Presentation.Induction.HeadIm
      {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) :
      TypeA type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. 
    abbrev Q2Presentation.Induction.HeadIm
      {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) :
      TypeA type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. 
    **The faithful head-action image** (the carrier of the averaging;
    the manuscript's `H_V`-quotient of `lem:basedetclass`). 
  • theoremdefined in Q2Presentation/Induction/BaseModelSplitting.lean
    complete
    theorem Q2Presentation.Induction.baseModelExists_of_oddHeadAction
      {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)
      (hoddOdd (Nat.card (Q2Presentation.Induction.HeadIm chief K)) : OddOdd.{u_2} {α : Type u_2} [Semiring α] (a : α) : PropAn element `a` of a semiring is odd if there exists `k` such `a = 2*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.HeadImQ2Presentation.Induction.HeadIm {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Type**The faithful head-action image** (the carrier of the averaging;
    the manuscript's `H_V`-quotient of `lem:basedetclass`).  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor))) :
      Q2Presentation.Induction.BaseModelExistsQ2Presentation.Induction.BaseModelExists {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**KEEP-SHAPED INPUT (named `Prop`, consumed as a hypothesis):
    the base equivariant determinant class exists at the R4b head.**
    
    Provenance (manuscript): `lem:basedetclass` l.2286–2360 — the normalized
    base class `κ_q⁰ ∈ Z²(V⋊H,𝔽₂)` with fibre square map `q`, built on an
    `H`-split regular pair via the three orbit-polynomial factor sets
    (`eq:squareorbitfactor`, `eq:freeorbitfactor`, `eq:kappahalforbit`);
    its normalized-section action data are exactly the `m_c` of
    `lem:extraspecialconnecting`.  The proof consumes the tame module
    structure (projectivity via `lem:faithfulprojective` in the ramified
    case, Maschke in the odd unramified case) — genuinely arithmetic input
    about `V`, NOT finite bookkeeping.
    
    Dissolution program (owner: the P6 base-class lane, coordinated with
    BLOCKR_P6_DESIGN §1.1 which records the `eq:basekappacochain`
    normalization shape): (i) the split pair `V → 𝔽₂[H]^N → V` at the head
    (`edgeHead`-carrier Maschke/projectivity); (ii) the three orbit factor
    sets with their `m_c = 0` resp. half-orbit corrections; (iii) pullback
    and the `eq:mquadratic`/`eq:mcoherent` laws.  Until it lands, both
    `btChild_splits_of` and `zeroEdgeDescentData_nonempty_of` consume the
    DATA (`BaseModelData`) as an explicit hypothesis.  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.baseModelExists_of_oddHeadAction
      {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)
      (hoddOdd (Nat.card (Q2Presentation.Induction.HeadIm chief K)) :
        OddOdd.{u_2} {α : Type u_2} [Semiring α] (a : α) : PropAn element `a` of a semiring is odd if there exists `k` such `a = 2*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.HeadImQ2Presentation.Induction.HeadIm {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Type**The faithful head-action image** (the carrier of the averaging;
    the manuscript's `H_V`-quotient of `lem:basedetclass`). 
              chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor))) :
      Q2Presentation.Induction.BaseModelExistsQ2Presentation.Induction.BaseModelExists {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**KEEP-SHAPED INPUT (named `Prop`, consumed as a hypothesis):
    the base equivariant determinant class exists at the R4b head.**
    
    Provenance (manuscript): `lem:basedetclass` l.2286–2360 — the normalized
    base class `κ_q⁰ ∈ Z²(V⋊H,𝔽₂)` with fibre square map `q`, built on an
    `H`-split regular pair via the three orbit-polynomial factor sets
    (`eq:squareorbitfactor`, `eq:freeorbitfactor`, `eq:kappahalforbit`);
    its normalized-section action data are exactly the `m_c` of
    `lem:extraspecialconnecting`.  The proof consumes the tame module
    structure (projectivity via `lem:faithfulprojective` in the ramified
    case, Maschke in the odd unramified case) — genuinely arithmetic input
    about `V`, NOT finite bookkeeping.
    
    Dissolution program (owner: the P6 base-class lane, coordinated with
    BLOCKR_P6_DESIGN §1.1 which records the `eq:basekappacochain`
    normalization shape): (i) the split pair `V → 𝔽₂[H]^N → V` at the head
    (`edgeHead`-carrier Maschke/projectivity); (ii) the three orbit factor
    sets with their `m_c = 0` resp. half-orbit corrections; (iii) pullback
    and the `eq:mquadratic`/`eq:mcoherent` laws.  Until it lands, both
    `btChild_splits_of` and `zeroEdgeDescentData_nonempty_of` consume the
    DATA (`BaseModelData`) as an explicit hypothesis. 
        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
    **`BaseModelExists` holds when the faithful head-action image is
    odd** — the manuscript's unramified clause of `lem:basedetclass`
    (l.2342–2345: the cyclic unramified image has trivial 2-primary action,
    so the faithful image is odd and the averaging applies).  No `ZeroEdge`
    needed: the model is cover-free.  On the ramified branch (even faithful
    image) the input remains P6-owned (`lem:faithfulprojective` + the orbit
    factor sets); the §15 `baseModelExists_iff_splits` pins that residual. 
  • theoremdefined in Q2Presentation/Induction/BaseModelSplitting.lean
    complete
    theorem Q2Presentation.Induction.splitsBtChild_of_zeroEdge_of_oddHeadAction
      {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)
      (hZQ2Presentation.Induction.ZeroEdge chief K lam hinv : 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))
      (hoddOdd (Nat.card (Q2Presentation.Induction.HeadIm chief K)) : OddOdd.{u_2} {α : Type u_2} [Semiring α] (a : α) : PropAn element `a` of a semiring is odd if there exists `k` such `a = 2*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.HeadImQ2Presentation.Induction.HeadIm {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Type**The faithful head-action image** (the carrier of the averaging;
    the manuscript's `H_V`-quotient of `lem:basedetclass`).  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor))) :
      Q2Presentation.Induction.SplitsBtChildQ2Presentation.Induction.SplitsBtChild {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Prop**`B/T'` splits as `V⋊C`** (the conclusion of `lem:transgression` at
    the child, complement form — the exact shape of the `Csec/hdisj/hsup`
    slots of `ZeroEdgeDescentData`, design §4.7).  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor
    theorem Q2Presentation.Induction.splitsBtChild_of_zeroEdge_of_oddHeadAction
      {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)
      (hZQ2Presentation.Induction.ZeroEdge chief K lam hinv :
        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))
      (hoddOdd (Nat.card (Q2Presentation.Induction.HeadIm chief K)) :
        OddOdd.{u_2} {α : Type u_2} [Semiring α] (a : α) : PropAn element `a` of a semiring is odd if there exists `k` such `a = 2*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.HeadImQ2Presentation.Induction.HeadIm {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Type**The faithful head-action image** (the carrier of the averaging;
    the manuscript's `H_V`-quotient of `lem:basedetclass`). 
              chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor))) :
      Q2Presentation.Induction.SplitsBtChildQ2Presentation.Induction.SplitsBtChild {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Prop**`B/T'` splits as `V⋊C`** (the conclusion of `lem:transgression` at
    the child, complement form — the exact shape of the `Csec/hdisj/hsup`
    slots of `ZeroEdgeDescentData`, design §4.7). 
        chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor
    **`SplitsBtChild` on the zero-edge branch with odd faithful head
    action** — `lem:basedetclass`'s unramified clause discharged through the
    frozen §15 chain; the R4b transgression tower is input-free here. 
  • theoremdefined in Q2Presentation/Induction/TransgressionReading.lean
    complete
    theorem Q2Presentation.Induction.baseModelExists_iff_splits
      {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)
      (hZQ2Presentation.Induction.ZeroEdge chief K lam hinv : 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.BaseModelExistsQ2Presentation.Induction.BaseModelExists {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**KEEP-SHAPED INPUT (named `Prop`, consumed as a hypothesis):
    the base equivariant determinant class exists at the R4b head.**
    
    Provenance (manuscript): `lem:basedetclass` l.2286–2360 — the normalized
    base class `κ_q⁰ ∈ Z²(V⋊H,𝔽₂)` with fibre square map `q`, built on an
    `H`-split regular pair via the three orbit-polynomial factor sets
    (`eq:squareorbitfactor`, `eq:freeorbitfactor`, `eq:kappahalforbit`);
    its normalized-section action data are exactly the `m_c` of
    `lem:extraspecialconnecting`.  The proof consumes the tame module
    structure (projectivity via `lem:faithfulprojective` in the ramified
    case, Maschke in the odd unramified case) — genuinely arithmetic input
    about `V`, NOT finite bookkeeping.
    
    Dissolution program (owner: the P6 base-class lane, coordinated with
    BLOCKR_P6_DESIGN §1.1 which records the `eq:basekappacochain`
    normalization shape): (i) the split pair `V → 𝔽₂[H]^N → V` at the head
    (`edgeHead`-carrier Maschke/projectivity); (ii) the three orbit factor
    sets with their `m_c = 0` resp. half-orbit corrections; (iii) pullback
    and the `eq:mquadratic`/`eq:mcoherent` laws.  Until it lands, both
    `btChild_splits_of` and `zeroEdgeDescentData_nonempty_of` consume the
    DATA (`BaseModelData`) as an explicit hypothesis.  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 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.SplitsBtChildQ2Presentation.Induction.SplitsBtChild {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Prop**`B/T'` splits as `V⋊C`** (the conclusion of `lem:transgression` at
    the child, complement form — the exact shape of the `Csec/hdisj/hsup`
    slots of `ZeroEdgeDescentData`, design §4.7).  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor
    theorem Q2Presentation.Induction.baseModelExists_iff_splits
      {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)
      (hZQ2Presentation.Induction.ZeroEdge chief K lam hinv :
        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.BaseModelExistsQ2Presentation.Induction.BaseModelExists {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**KEEP-SHAPED INPUT (named `Prop`, consumed as a hypothesis):
    the base equivariant determinant class exists at the R4b head.**
    
    Provenance (manuscript): `lem:basedetclass` l.2286–2360 — the normalized
    base class `κ_q⁰ ∈ Z²(V⋊H,𝔽₂)` with fibre square map `q`, built on an
    `H`-split regular pair via the three orbit-polynomial factor sets
    (`eq:squareorbitfactor`, `eq:freeorbitfactor`, `eq:kappahalforbit`);
    its normalized-section action data are exactly the `m_c` of
    `lem:extraspecialconnecting`.  The proof consumes the tame module
    structure (projectivity via `lem:faithfulprojective` in the ramified
    case, Maschke in the odd unramified case) — genuinely arithmetic input
    about `V`, NOT finite bookkeeping.
    
    Dissolution program (owner: the P6 base-class lane, coordinated with
    BLOCKR_P6_DESIGN §1.1 which records the `eq:basekappacochain`
    normalization shape): (i) the split pair `V → 𝔽₂[H]^N → V` at the head
    (`edgeHead`-carrier Maschke/projectivity); (ii) the three orbit factor
    sets with their `m_c = 0` resp. half-orbit corrections; (iii) pullback
    and the `eq:mquadratic`/`eq:mcoherent` laws.  Until it lands, both
    `btChild_splits_of` and `zeroEdgeDescentData_nonempty_of` consume the
    DATA (`BaseModelData`) as an explicit hypothesis. 
          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 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.SplitsBtChildQ2Presentation.Induction.SplitsBtChild {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Prop**`B/T'` splits as `V⋊C`** (the conclusion of `lem:transgression` at
    the child, complement form — the exact shape of the `Csec/hdisj/hsup`
    slots of `ZeroEdgeDescentData`, design §4.7). 
          chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor
    **(B) On the zero-edge branch the `κ_q⁰`-model is EQUIVALENT to the
    splitting** — the residual arithmetic input is pinned exactly:
    `BaseModelExists` unconditionally is `lem:basedetclass` at the head
    (l.2286–2360, tame projectivity/Maschke; P6-owned), and NOTHING weaker
    suffices on this branch. 
  • defdefined in Q2Presentation/Induction/TransgressionUnit.lean
    complete
    def Q2Presentation.Induction.BaseModelExists
      {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.BaseModelExists
      {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`. 
    **KEEP-SHAPED INPUT (named `Prop`, consumed as a hypothesis):
    the base equivariant determinant class exists at the R4b head.**
    
    Provenance (manuscript): `lem:basedetclass` l.2286–2360 — the normalized
    base class `κ_q⁰ ∈ Z²(V⋊H,𝔽₂)` with fibre square map `q`, built on an
    `H`-split regular pair via the three orbit-polynomial factor sets
    (`eq:squareorbitfactor`, `eq:freeorbitfactor`, `eq:kappahalforbit`);
    its normalized-section action data are exactly the `m_c` of
    `lem:extraspecialconnecting`.  The proof consumes the tame module
    structure (projectivity via `lem:faithfulprojective` in the ramified
    case, Maschke in the odd unramified case) — genuinely arithmetic input
    about `V`, NOT finite bookkeeping.
    
    Dissolution program (owner: the P6 base-class lane, coordinated with
    BLOCKR_P6_DESIGN §1.1 which records the `eq:basekappacochain`
    normalization shape): (i) the split pair `V → 𝔽₂[H]^N → V` at the head
    (`edgeHead`-carrier Maschke/projectivity); (ii) the three orbit factor
    sets with their `m_c = 0` resp. half-orbit corrections; (iii) pullback
    and the `eq:mquadratic`/`eq:mcoherent` laws.  Until it lands, both
    `btChild_splits_of` and `zeroEdgeDescentData_nonempty_of` consume the
    DATA (`BaseModelData`) as an explicit hypothesis. 
  • theoremdefined in Q2Presentation/Induction/TransgressionUnit.lean
    complete
    theorem Q2Presentation.Induction.btChild_splits
      {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)
      (hreadQ2Presentation.Induction.TransgressionReading chief K lam hinv hne :
        Q2Presentation.Induction.TransgressionReadingQ2Presentation.Induction.TransgressionReading {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**Named deferred-construction `Prop`** (hypothesis slot; see the
    `TransgressionDescentData` docstring for the two-part provenance: the
    manuscript source is `lem:transgression`'s section/reading choices at the
    descended cover of `lem:radicaledge` step 7, and the dissolution is the
    mechanical U1–U3 reading construction — finite bookkeeping, no keeps).  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)
      (hbaseQ2Presentation.Induction.BaseModelExists chief K lam hinv hne :
        Q2Presentation.Induction.BaseModelExistsQ2Presentation.Induction.BaseModelExists {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**KEEP-SHAPED INPUT (named `Prop`, consumed as a hypothesis):
    the base equivariant determinant class exists at the R4b head.**
    
    Provenance (manuscript): `lem:basedetclass` l.2286–2360 — the normalized
    base class `κ_q⁰ ∈ Z²(V⋊H,𝔽₂)` with fibre square map `q`, built on an
    `H`-split regular pair via the three orbit-polynomial factor sets
    (`eq:squareorbitfactor`, `eq:freeorbitfactor`, `eq:kappahalforbit`);
    its normalized-section action data are exactly the `m_c` of
    `lem:extraspecialconnecting`.  The proof consumes the tame module
    structure (projectivity via `lem:faithfulprojective` in the ramified
    case, Maschke in the odd unramified case) — genuinely arithmetic input
    about `V`, NOT finite bookkeeping.
    
    Dissolution program (owner: the P6 base-class lane, coordinated with
    BLOCKR_P6_DESIGN §1.1 which records the `eq:basekappacochain`
    normalization shape): (i) the split pair `V → 𝔽₂[H]^N → V` at the head
    (`edgeHead`-carrier Maschke/projectivity); (ii) the three orbit factor
    sets with their `m_c = 0` resp. half-orbit corrections; (iii) pullback
    and the `eq:mquadratic`/`eq:mcoherent` laws.  Until it lands, both
    `btChild_splits_of` and `zeroEdgeDescentData_nonempty_of` consume the
    DATA (`BaseModelData`) as an explicit hypothesis.  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.SplitsBtChildQ2Presentation.Induction.SplitsBtChild {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Prop**`B/T'` splits as `V⋊C`** (the conclusion of `lem:transgression` at
    the child, complement form — the exact shape of the `Csec/hdisj/hsup`
    slots of `ZeroEdgeDescentData`, design §4.7).  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor
    theorem Q2Presentation.Induction.btChild_splits
      {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)
      (hreadQ2Presentation.Induction.TransgressionReading chief K lam hinv hne :
        Q2Presentation.Induction.TransgressionReadingQ2Presentation.Induction.TransgressionReading {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**Named deferred-construction `Prop`** (hypothesis slot; see the
    `TransgressionDescentData` docstring for the two-part provenance: the
    manuscript source is `lem:transgression`'s section/reading choices at the
    descended cover of `lem:radicaledge` step 7, and the dissolution is the
    mechanical U1–U3 reading construction — finite bookkeeping, no keeps). 
          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)
      (hbaseQ2Presentation.Induction.BaseModelExists chief K lam hinv hne :
        Q2Presentation.Induction.BaseModelExistsQ2Presentation.Induction.BaseModelExists {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**KEEP-SHAPED INPUT (named `Prop`, consumed as a hypothesis):
    the base equivariant determinant class exists at the R4b head.**
    
    Provenance (manuscript): `lem:basedetclass` l.2286–2360 — the normalized
    base class `κ_q⁰ ∈ Z²(V⋊H,𝔽₂)` with fibre square map `q`, built on an
    `H`-split regular pair via the three orbit-polynomial factor sets
    (`eq:squareorbitfactor`, `eq:freeorbitfactor`, `eq:kappahalforbit`);
    its normalized-section action data are exactly the `m_c` of
    `lem:extraspecialconnecting`.  The proof consumes the tame module
    structure (projectivity via `lem:faithfulprojective` in the ramified
    case, Maschke in the odd unramified case) — genuinely arithmetic input
    about `V`, NOT finite bookkeeping.
    
    Dissolution program (owner: the P6 base-class lane, coordinated with
    BLOCKR_P6_DESIGN §1.1 which records the `eq:basekappacochain`
    normalization shape): (i) the split pair `V → 𝔽₂[H]^N → V` at the head
    (`edgeHead`-carrier Maschke/projectivity); (ii) the three orbit factor
    sets with their `m_c = 0` resp. half-orbit corrections; (iii) pullback
    and the `eq:mquadratic`/`eq:mcoherent` laws.  Until it lands, both
    `btChild_splits_of` and `zeroEdgeDescentData_nonempty_of` consume the
    DATA (`BaseModelData`) as an explicit hypothesis. 
          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.SplitsBtChildQ2Presentation.Induction.SplitsBtChild {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Prop**`B/T'` splits as `V⋊C`** (the conclusion of `lem:transgression` at
    the child, complement form — the exact shape of the `Csec/hdisj/hsup`
    slots of `ZeroEdgeDescentData`, design §4.7). 
        chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor
    **(a) `btChild_splits`**, in the honest hypothesis-form: the zero-edge
    `B/T'` splits as `V⋊C`, GIVEN the two named inputs (reading data:
    mechanical, deferred; base model: `lem:basedetclass`, P6-owned). 
  • theoremdefined in Q2Presentation/Induction/ZeroEdgePinnedExistence.lean
    complete
    theorem Q2Presentation.Induction.zeroEdgePinnedExistence
      {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)
      (hZQ2Presentation.Induction.ZeroEdge chief K lam hinv : 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))
      (hbaseQ2Presentation.Induction.BaseModelExists chief K lam hinv hne :
        Q2Presentation.Induction.BaseModelExistsQ2Presentation.Induction.BaseModelExists {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**KEEP-SHAPED INPUT (named `Prop`, consumed as a hypothesis):
    the base equivariant determinant class exists at the R4b head.**
    
    Provenance (manuscript): `lem:basedetclass` l.2286–2360 — the normalized
    base class `κ_q⁰ ∈ Z²(V⋊H,𝔽₂)` with fibre square map `q`, built on an
    `H`-split regular pair via the three orbit-polynomial factor sets
    (`eq:squareorbitfactor`, `eq:freeorbitfactor`, `eq:kappahalforbit`);
    its normalized-section action data are exactly the `m_c` of
    `lem:extraspecialconnecting`.  The proof consumes the tame module
    structure (projectivity via `lem:faithfulprojective` in the ramified
    case, Maschke in the odd unramified case) — genuinely arithmetic input
    about `V`, NOT finite bookkeeping.
    
    Dissolution program (owner: the P6 base-class lane, coordinated with
    BLOCKR_P6_DESIGN §1.1 which records the `eq:basekappacochain`
    normalization shape): (i) the split pair `V → 𝔽₂[H]^N → V` at the head
    (`edgeHead`-carrier Maschke/projectivity); (ii) the three orbit factor
    sets with their `m_c = 0` resp. half-orbit corrections; (iii) pullback
    and the `eq:mquadratic`/`eq:mcoherent` laws.  Until it lands, both
    `btChild_splits_of` and `zeroEdgeDescentData_nonempty_of` consume the
    DATA (`BaseModelData`) as an explicit hypothesis.  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) :
       ZQ2Presentation.Induction.ZeroEdgeDescentData chief K lam hinv,
        Q2Presentation.Induction.ZeroEdgeDescentDataPinnedQ2Presentation.Induction.ZeroEdgeDescentDataPinned {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) : Prop**The pinning `Prop`** — the exact hypothesis slot the future
    coordinated zero-edge keep must carry alongside the bundle `Z` until the
    reading-data construction lands (the §13 note's discipline: conditioning
    lives on the future keep, never in the count `Prop`s).  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
    theorem Q2Presentation.Induction.zeroEdgePinnedExistence
      {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)
      (hZQ2Presentation.Induction.ZeroEdge chief K lam hinv :
        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))
      (hbaseQ2Presentation.Induction.BaseModelExists chief K lam hinv hne :
        Q2Presentation.Induction.BaseModelExistsQ2Presentation.Induction.BaseModelExists {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**KEEP-SHAPED INPUT (named `Prop`, consumed as a hypothesis):
    the base equivariant determinant class exists at the R4b head.**
    
    Provenance (manuscript): `lem:basedetclass` l.2286–2360 — the normalized
    base class `κ_q⁰ ∈ Z²(V⋊H,𝔽₂)` with fibre square map `q`, built on an
    `H`-split regular pair via the three orbit-polynomial factor sets
    (`eq:squareorbitfactor`, `eq:freeorbitfactor`, `eq:kappahalforbit`);
    its normalized-section action data are exactly the `m_c` of
    `lem:extraspecialconnecting`.  The proof consumes the tame module
    structure (projectivity via `lem:faithfulprojective` in the ramified
    case, Maschke in the odd unramified case) — genuinely arithmetic input
    about `V`, NOT finite bookkeeping.
    
    Dissolution program (owner: the P6 base-class lane, coordinated with
    BLOCKR_P6_DESIGN §1.1 which records the `eq:basekappacochain`
    normalization shape): (i) the split pair `V → 𝔽₂[H]^N → V` at the head
    (`edgeHead`-carrier Maschke/projectivity); (ii) the three orbit factor
    sets with their `m_c = 0` resp. half-orbit corrections; (iii) pullback
    and the `eq:mquadratic`/`eq:mcoherent` laws.  Until it lands, both
    `btChild_splits_of` and `zeroEdgeDescentData_nonempty_of` consume the
    DATA (`BaseModelData`) as an explicit hypothesis. 
          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) :
       ZQ2Presentation.Induction.ZeroEdgeDescentData chief K lam hinv,
        Q2Presentation.Induction.ZeroEdgeDescentDataPinnedQ2Presentation.Induction.ZeroEdgeDescentDataPinned {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) : Prop**The pinning `Prop`** — the exact hypothesis slot the future
    coordinated zero-edge keep must carry alongside the bundle `Z` until the
    reading-data construction lands (the §13 note's discipline: conditioning
    lives on the future keep, never in the count `Prop`s). 
          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
    **N10 headline — the PINNED zero-edge bundle exists** (keep 3's
    ∃-load (i) discharged): given `ZeroEdge` and the base model
    (`lem:basedetclass`, P6-owned; the §15 `TransgressionReading` is already
    theorem-backed), there is a bundle `Z` together with a `ZeroEdgePinning`
    — every cochain slot of `Z` is an ACTUAL deck read of the descended
    cover `descTarget D hW` in the `Csec`-coordinates (`eq:descendedclass` +
    the `lem:affinelifting` zero-section pullback).  Hypotheses, never
    axioms. 
  • theoremdefined in Q2Presentation/Induction/ZeroEdgePinnedExistence.lean
    complete
    theorem Q2Presentation.Induction.zeroEdgePinnedExistence_of_oddHeadAction
      {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)
      (hZQ2Presentation.Induction.ZeroEdge chief K lam hinv : 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))
      (hoddOdd (Nat.card (Q2Presentation.Induction.HeadIm chief K)) : OddOdd.{u_2} {α : Type u_2} [Semiring α] (a : α) : PropAn element `a` of a semiring is odd if there exists `k` such `a = 2*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.HeadImQ2Presentation.Induction.HeadIm {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Type**The faithful head-action image** (the carrier of the averaging;
    the manuscript's `H_V`-quotient of `lem:basedetclass`).  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor))) :
       ZQ2Presentation.Induction.ZeroEdgeDescentData chief K lam hinv,
        Q2Presentation.Induction.ZeroEdgeDescentDataPinnedQ2Presentation.Induction.ZeroEdgeDescentDataPinned {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) : Prop**The pinning `Prop`** — the exact hypothesis slot the future
    coordinated zero-edge keep must carry alongside the bundle `Z` until the
    reading-data construction lands (the §13 note's discipline: conditioning
    lives on the future keep, never in the count `Prop`s).  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
    theorem Q2Presentation.Induction.zeroEdgePinnedExistence_of_oddHeadAction
      {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)
      (hZQ2Presentation.Induction.ZeroEdge chief K lam hinv :
        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))
      (hoddOdd (Nat.card (Q2Presentation.Induction.HeadIm chief K)) :
        OddOdd.{u_2} {α : Type u_2} [Semiring α] (a : α) : PropAn element `a` of a semiring is odd if there exists `k` such `a = 2*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.HeadImQ2Presentation.Induction.HeadIm {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Type**The faithful head-action image** (the carrier of the averaging;
    the manuscript's `H_V`-quotient of `lem:basedetclass`). 
              chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor))) :
       ZQ2Presentation.Induction.ZeroEdgeDescentData chief K lam hinv,
        Q2Presentation.Induction.ZeroEdgeDescentDataPinnedQ2Presentation.Induction.ZeroEdgeDescentDataPinned {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) : Prop**The pinning `Prop`** — the exact hypothesis slot the future
    coordinated zero-edge keep must carry alongside the bundle `Z` until the
    reading-data construction lands (the §13 note's discipline: conditioning
    lives on the future keep, never in the count `Prop`s). 
          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
    **The odd-image branch** (`lem:basedetclass`'s unramified clause,
    fully in-tree): pinned existence with the base-model input DISCHARGED by
    `baseModelExists_of_oddHeadAction` — the R4b pinned-existence chain is
    hypothesis-free here beyond `hne`/`hZ`/`hodd`. 
Theorem6.3
Group: Quadratic determinant obstructions (7)
Hover another entry in this group to preview it.
L∃∀Nused by 0

Proposition 6.5 of the paper (Complete base second-order word expansion).

With \mathsf S,\mathsf T,P,\mathsf U=\mathsf S^\w as above, evaluation of the actual relator (6) for the base class \kappa_q^0 gives

Q_A^0(c)=q(c)+b_q((P+1)c,\mathsf U^{-1}c).

Equivalently,

Q_A^0(c)= \begin{cases} q(c),&\mathsf T=1,\\ q(c)+b_q(c,\mathsf U^{-1}c),&V^{\mathsf T}=0. \end{cases}

Its ramified polar form is

b_A(c,c')=b_q(c,(1+\mathsf U+\mathsf U^{-1})c').

For a general determinant class \kappa=\kappa_q^0+\Gamma_{\gamma_\kappa}+\operatorname{inf}\delta_\kappa, one has

Q_{A,\kappa,\rho}(c)=Q_A^0(c) +\langle c,\rho^*\gamma_\kappa\rangle_A +\iota_A(\rho^*\delta_\kappa).

Lean code for Theorem6.32 theorems
  • theoremdefined in Q2Presentation/Quadratic/GaussSign.lean
    complete
    theorem Q2Presentation.Quadratic.Candidate.candidateForm_polar_eq.{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) (U(Module.End (ZMod 2) V)ˣ : (Module.EndModule.End.{u, v} (R : Type u) (M : Type v) [Semiring R] [AddCommMonoid M] [Module R M] : Type vLinear endomorphisms of a module, with associated ring structure
    `Module.End.semiring` and algebra structure `Module.End.algebra`.  (ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2) VType u_1)ˣUnits.{u} (α : Type u) [Monoid α] : Type uUnits of a `Monoid`, bundled version. Notation: `αˣ`.
    
    An element of a `Monoid` is a unit if it has a two-sided inverse.
    This version bundles the inverse element so that it can be computed.
    For a predicate see `IsUnit`. )
      (hisom∀ (x y : V), (q.polar (↑U x)) (↑U y) = (q.polar x) y :  (xV yV : VType u_1), (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  (U(Module.End (ZMod 2) V)ˣ xV)) (U(Module.End (ZMod 2) V)ˣ yV) =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.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  xV) yV)
      (cV c'V : VType u_1) :
      ((Q2Presentation.Quadratic.Candidate.candidateFormQ2Presentation.Quadratic.Candidate.candidateForm.{u_1} {V : Type u_1} [AddCommGroup V] [Module (ZMod 2) V]
      (q : Q2Presentation.Quadratic.QuadF2 V) (U : (Module.End (ZMod 2) V)ˣ)
      (hisom : ∀ (x y : V), (q.polar (↑U x)) (↑U y) = (q.polar x) y) : Q2Presentation.Quadratic.QuadF2 V**The candidate base determinant form** `Q_A^0` in the ramified normal form
    (eq:QAcases): `form c = q(c) + b_q(c, U^{-1}c)`, with polar form the mixed-Hessian
    operator `b_q(c, (1 + U + U^{-1}) c')` (eq:polaroperator).  qQ2Presentation.Quadratic.QuadF2 V U(Module.End (ZMod 2) V)ˣ hisom∀ (x y : V), (q.polar (↑U x)) (↑U y) = (q.polar x) y).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  cV)
          c'V =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.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  cV) ((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`. U(Module.End (ZMod 2) V)ˣ +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`. U(Module.End (ZMod 2) V)ˣ⁻¹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`.)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`. c'V)
    theorem Q2Presentation.Quadratic.Candidate.candidateForm_polar_eq.{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)
      (U(Module.End (ZMod 2) V)ˣ : (Module.EndModule.End.{u, v} (R : Type u) (M : Type v) [Semiring R] [AddCommMonoid M] [Module R M] : Type vLinear endomorphisms of a module, with associated ring structure
    `Module.End.semiring` and algebra structure `Module.End.algebra`.  (ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2) VType u_1)ˣUnits.{u} (α : Type u) [Monoid α] : Type uUnits of a `Monoid`, bundled version. Notation: `αˣ`.
    
    An element of a `Monoid` is a unit if it has a two-sided inverse.
    This version bundles the inverse element so that it can be computed.
    For a predicate see `IsUnit`. )
      (hisom∀ (x y : V), (q.polar (↑U x)) (↑U y) = (q.polar x) y :
         (xV yV : VType u_1),
          (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  (U(Module.End (ZMod 2) V)ˣ xV)) (U(Module.End (ZMod 2) V)ˣ yV) =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.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  xV) yV)
      (cV c'V : VType u_1) :
      ((Q2Presentation.Quadratic.Candidate.candidateFormQ2Presentation.Quadratic.Candidate.candidateForm.{u_1} {V : Type u_1} [AddCommGroup V] [Module (ZMod 2) V]
      (q : Q2Presentation.Quadratic.QuadF2 V) (U : (Module.End (ZMod 2) V)ˣ)
      (hisom : ∀ (x y : V), (q.polar (↑U x)) (↑U y) = (q.polar x) y) : Q2Presentation.Quadratic.QuadF2 V**The candidate base determinant form** `Q_A^0` in the ramified normal form
    (eq:QAcases): `form c = q(c) + b_q(c, U^{-1}c)`, with polar form the mixed-Hessian
    operator `b_q(c, (1 + U + U^{-1}) c')` (eq:polaroperator). 
                qQ2Presentation.Quadratic.QuadF2 V U(Module.End (ZMod 2) V)ˣ hisom∀ (x y : V), (q.polar (↑U x)) (↑U y) = (q.polar x) y).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 
            cV)
          c'V =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.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  cV) ((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`. U(Module.End (ZMod 2) V)ˣ +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`. U(Module.End (ZMod 2) V)ˣ⁻¹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`.)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`. c'V)
    **eq:polaroperator** (`prop:wordquadratic`): the candidate base polar form is
    `b_A(c,c') = b_q(c, (1 + U + U^{-1}) c')`, the mixed-Hessian pairing operator. 
  • theoremdefined in Q2Presentation/Quadratic/GaussSign.lean
    complete
    theorem Q2Presentation.Quadratic.Candidate.candidateForm_nonsingular.{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) (U(Module.End (ZMod 2) V)ˣ : (Module.EndModule.End.{u, v} (R : Type u) (M : Type v) [Semiring R] [AddCommMonoid M] [Module R M] : Type vLinear endomorphisms of a module, with associated ring structure
    `Module.End.semiring` and algebra structure `Module.End.algebra`.  (ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2) VType u_1)ˣUnits.{u} (α : Type u) [Monoid α] : Type uUnits of a `Monoid`, bundled version. Notation: `αˣ`.
    
    An element of a `Monoid` is a unit if it has a two-sided inverse.
    This version bundles the inverse element so that it can be computed.
    For a predicate see `IsUnit`. )
      (hisom∀ (x y : V), (q.polar (↑U x)) (↑U y) = (q.polar x) y :  (xV yV : VType u_1), (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  (U(Module.End (ZMod 2) V)ˣ xV)) (U(Module.End (ZMod 2) V)ˣ yV) =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.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  xV) yV)
      (hqq.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). )
      (hMIsUnit (Q2Presentation.Quadratic.Candidate.pairOp U) : IsUnitIsUnit.{u_1} {M : Type u_1} [Monoid M] (a : M) : PropAn element `a : M` of a `Monoid` is a unit if it has a two-sided inverse.
    The actual definition says that `a` is equal to some `u : Mˣ`, where
    `Mˣ` is a bundled version of `IsUnit`.  (Q2Presentation.Quadratic.Candidate.pairOpQ2Presentation.Quadratic.Candidate.pairOp.{u_1} {V : Type u_1} [AddCommGroup V] [Module (ZMod 2) V]
      (U : (Module.End (ZMod 2) V)ˣ) : Module.End (ZMod 2) VThe **mixed-Hessian pairing operator** `M = 1 + U + U⁻¹` on `V` (`pairingOp`,
    eq:pairingoperator).  U(Module.End (ZMod 2) V)ˣ)) :
      (Q2Presentation.Quadratic.Candidate.candidateFormQ2Presentation.Quadratic.Candidate.candidateForm.{u_1} {V : Type u_1} [AddCommGroup V] [Module (ZMod 2) V]
      (q : Q2Presentation.Quadratic.QuadF2 V) (U : (Module.End (ZMod 2) V)ˣ)
      (hisom : ∀ (x y : V), (q.polar (↑U x)) (↑U y) = (q.polar x) y) : Q2Presentation.Quadratic.QuadF2 V**The candidate base determinant form** `Q_A^0` in the ramified normal form
    (eq:QAcases): `form c = q(c) + b_q(c, U^{-1}c)`, with polar form the mixed-Hessian
    operator `b_q(c, (1 + U + U^{-1}) c')` (eq:polaroperator).  qQ2Presentation.Quadratic.QuadF2 V U(Module.End (ZMod 2) V)ˣ
          hisom∀ (x y : V), (q.polar (↑U x)) (↑U y) = (q.polar x) y).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.Candidate.candidateForm_nonsingular.{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)
      (U(Module.End (ZMod 2) V)ˣ : (Module.EndModule.End.{u, v} (R : Type u) (M : Type v) [Semiring R] [AddCommMonoid M] [Module R M] : Type vLinear endomorphisms of a module, with associated ring structure
    `Module.End.semiring` and algebra structure `Module.End.algebra`.  (ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2) VType u_1)ˣUnits.{u} (α : Type u) [Monoid α] : Type uUnits of a `Monoid`, bundled version. Notation: `αˣ`.
    
    An element of a `Monoid` is a unit if it has a two-sided inverse.
    This version bundles the inverse element so that it can be computed.
    For a predicate see `IsUnit`. )
      (hisom∀ (x y : V), (q.polar (↑U x)) (↑U y) = (q.polar x) y :
         (xV yV : VType u_1),
          (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  (U(Module.End (ZMod 2) V)ˣ xV)) (U(Module.End (ZMod 2) V)ˣ yV) =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.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  xV) yV)
      (hqq.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). )
      (hMIsUnit (Q2Presentation.Quadratic.Candidate.pairOp U) :
        IsUnitIsUnit.{u_1} {M : Type u_1} [Monoid M] (a : M) : PropAn element `a : M` of a `Monoid` is a unit if it has a two-sided inverse.
    The actual definition says that `a` is equal to some `u : Mˣ`, where
    `Mˣ` is a bundled version of `IsUnit`. 
          (Q2Presentation.Quadratic.Candidate.pairOpQ2Presentation.Quadratic.Candidate.pairOp.{u_1} {V : Type u_1} [AddCommGroup V] [Module (ZMod 2) V]
      (U : (Module.End (ZMod 2) V)ˣ) : Module.End (ZMod 2) VThe **mixed-Hessian pairing operator** `M = 1 + U + U⁻¹` on `V` (`pairingOp`,
    eq:pairingoperator). 
            U(Module.End (ZMod 2) V)ˣ)) :
      (Q2Presentation.Quadratic.Candidate.candidateFormQ2Presentation.Quadratic.Candidate.candidateForm.{u_1} {V : Type u_1} [AddCommGroup V] [Module (ZMod 2) V]
      (q : Q2Presentation.Quadratic.QuadF2 V) (U : (Module.End (ZMod 2) V)ˣ)
      (hisom : ∀ (x y : V), (q.polar (↑U x)) (↑U y) = (q.polar x) y) : Q2Presentation.Quadratic.QuadF2 V**The candidate base determinant form** `Q_A^0` in the ramified normal form
    (eq:QAcases): `form c = q(c) + b_q(c, U^{-1}c)`, with polar form the mixed-Hessian
    operator `b_q(c, (1 + U + U^{-1}) c')` (eq:polaroperator). 
          qQ2Presentation.Quadratic.QuadF2 V U(Module.End (ZMod 2) V)ˣ hisom∀ (x y : V), (q.polar (↑U x)) (↑U y) = (q.polar x) y).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). 
    **The candidate base form is nonsingular** (`prop:wordquadratic`: "the operator
    is invertible by the same polynomial argument used in `prop:defduality`").  Proven
    by reusing `pairingOp` invertibility: if `b_q(c, M c') = 0` for all `c'` and `M =
    1+U+U⁻¹` is a unit (surjective), then `b_q(c, ·) = 0`, so `c = 0` by nonsingularity
    of `q`. 
Proof

Proved in §6 of the paper. Ingredients: Theorem 5.12.

Theorem6.4
Group: Quadratic determinant obstructions (7)
Hover another entry in this group to preview it.
L∃∀Nused by 1

Proposition 6.9 of the paper (Candidate base determinant zero count).

If d=\dim V, then

\#(Q_A^0)^{-1}(0)= \begin{cases} 2^{d-1}-2^{d/2-1},&V\text{ unramified},\\ 2^{d-1}+2^{d/2-1},&V\text{ ramified}. \end{cases}

Lean code for Theorem6.46 declarations
  • defdefined in Q2Presentation/Induction/ZeroEdgeRealization.lean
    complete
    def Q2Presentation.Induction.EdgeGaussLineGammaA
      {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))
      (sBool : 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.EdgeGaussLineGammaA
      {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))
      (sBool : 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`. 
    **F-sgn-C1 floor `Prop`, VALUE spelling** (design §5, candidate
    Gauss-type constancy; `prop:candidatezero` l.2731 = `lem:wall` +
    `lem:unitaryline` + `lem:ramifiedhermitian`, P6-OWNED — consumed, not
    created, by this lane): the descended base-problem Gauss sum takes the
    single value `baseGaussSign s · 2^{dimV/2}` at EVERY candidate lower
    map.  The value spelling absorbs the nonsingularity/positivity of the
    descended form (the "radical ⊆ B¹" converse of the N7 landing note) —
    each is implied by keep 5 + P6.4–P6.8 and each is falsifiable here as a
    single ℤ-equation per `ρ`.  Bound to the CONCRETE package
    `boundaryPackage_GammaA` (the over-strength guard: never quantify a
    floor over arbitrary packages).  F1/audit-§A guard: NO
    `gaussType (edgeHeadForm …)`-tie is stated or implied. 
  • defdefined in Q2Presentation/Induction/ZeroEdgeRealization.lean
    complete
    def Q2Presentation.Induction.ZeroEdgeCommonGauss
      {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)) :
      PropThe universe of propositions. `Prop ≡ Sort 0`.
    
    Every proposition is propositionally equal to either `True` or `False`. 
    def Q2Presentation.Induction.ZeroEdgeCommonGauss
      {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)) :
      PropThe universe of propositions. `Prop ≡ Sort 0`.
    
    Every proposition is propositionally equal to either `True` or `False`. 
    **The one-common-sign package** (S6 + F-sgn-X1: "the common Gauss
    sum is supplied by `prop:candidatezero`, `prop:localzero` — one sign",
    joint sentence l.3358–3360): ONE bit serves both sources' value floors.
    The keeps-file residue `sec7_zeroEdge_sign_agree : zeroEdgeSign … Z =
    s_cand` mentions `zeroEdgeSign` and therefore belongs to the
    coordinator's swap in `BlockRecursionKeeps.lean`; THIS `Prop` is its
    keeps-free content. 
  • theoremdefined in Q2Presentation/Quadratic/CandidateArf.lean
    complete
    theorem Q2Presentation.Quadratic.CandidateArf.hyp_count_eq_plus :
      (Q2Presentation.Quadratic.numZerosQ2Presentation.Quadratic.numZeros.{u_1} {V : Type u_1} [AddCommGroup V] [Module (ZMod 2) V]
      (q : Q2Presentation.Quadratic.QuadF2 V) : ℕThe number of zeros `# Q⁻¹(0)` of a quadratic form. 
            Q2Presentation.Quadratic.CandidateArf.hypQ2Presentation.Quadratic.CandidateArf.hyp : Q2Presentation.Quadratic.QuadF2 Q2Presentation.Quadratic.CandidateArf.WThe hyperbolic quadratic form `q(a,b) = a*b` on `(ZMod 2)²`. A genuinely nonsingular
    `QuadF2` (its polar form is the standard symplectic form). ) =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.baseZeroCountQ2Presentation.Quadratic.baseZeroCount (ramified : Bool) (d : ℕ) : ℤThe **base determinant zero count** `2^{d-1} + ε·2^{d/2-1}` (eq:candidatezeros /
    eq:localzeros).  trueBool.true : BoolThe Boolean value `true`, not to be confused with the proposition `True`. 
          (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.Quadratic.CandidateArf.WQ2Presentation.Quadratic.CandidateArf.W : TypeCarrier of the explicit witness: the hyperbolic plane `(ZMod 2)²`. )
    theorem Q2Presentation.Quadratic.CandidateArf.hyp_count_eq_plus :
      (Q2Presentation.Quadratic.numZerosQ2Presentation.Quadratic.numZeros.{u_1} {V : Type u_1} [AddCommGroup V] [Module (ZMod 2) V]
      (q : Q2Presentation.Quadratic.QuadF2 V) : ℕThe number of zeros `# Q⁻¹(0)` of a quadratic form. 
            Q2Presentation.Quadratic.CandidateArf.hypQ2Presentation.Quadratic.CandidateArf.hyp : Q2Presentation.Quadratic.QuadF2 Q2Presentation.Quadratic.CandidateArf.WThe hyperbolic quadratic form `q(a,b) = a*b` on `(ZMod 2)²`. A genuinely nonsingular
    `QuadF2` (its polar form is the standard symplectic form). ) =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.baseZeroCountQ2Presentation.Quadratic.baseZeroCount (ramified : Bool) (d : ℕ) : ℤThe **base determinant zero count** `2^{d-1} + ε·2^{d/2-1}` (eq:candidatezeros /
    eq:localzeros). 
          trueBool.true : BoolThe Boolean value `true`, not to be confused with the proposition `True`. 
          (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.Quadratic.CandidateArf.WQ2Presentation.Quadratic.CandidateArf.W : TypeCarrier of the explicit witness: the hyperbolic plane `(ZMod 2)²`. )
    The witness's genuine zero count is the PLUS type (`ram = true`): `# = 2^{d-1} + 2^{d/2-1}
    = 3`, matching `prop:candidatezero` for this (hyperbolic ⇒ Arf = 0 ⇒ plus) form. 
  • theoremdefined in Q2Presentation/Quadratic/CandidateArf.lean
    complete
    theorem Q2Presentation.Quadratic.CandidateArf.hyp_correct_existential :
       ramBool,
        (Q2Presentation.Quadratic.numZerosQ2Presentation.Quadratic.numZeros.{u_1} {V : Type u_1} [AddCommGroup V] [Module (ZMod 2) V]
      (q : Q2Presentation.Quadratic.QuadF2 V) : ℕThe number of zeros `# Q⁻¹(0)` of a quadratic form. 
              Q2Presentation.Quadratic.CandidateArf.hypQ2Presentation.Quadratic.CandidateArf.hyp : Q2Presentation.Quadratic.QuadF2 Q2Presentation.Quadratic.CandidateArf.WThe hyperbolic quadratic form `q(a,b) = a*b` on `(ZMod 2)²`. A genuinely nonsingular
    `QuadF2` (its polar form is the standard symplectic form). ) =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.baseZeroCountQ2Presentation.Quadratic.baseZeroCount (ramified : Bool) (d : ℕ) : ℤThe **base determinant zero count** `2^{d-1} + ε·2^{d/2-1}` (eq:candidatezeros /
    eq:localzeros).  ramBool
            (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.Quadratic.CandidateArf.WQ2Presentation.Quadratic.CandidateArf.W : TypeCarrier of the explicit witness: the hyperbolic plane `(ZMod 2)²`. )
    theorem Q2Presentation.Quadratic.CandidateArf.hyp_correct_existential :
       ramBool,
        (Q2Presentation.Quadratic.numZerosQ2Presentation.Quadratic.numZeros.{u_1} {V : Type u_1} [AddCommGroup V] [Module (ZMod 2) V]
      (q : Q2Presentation.Quadratic.QuadF2 V) : ℕThe number of zeros `# Q⁻¹(0)` of a quadratic form. 
              Q2Presentation.Quadratic.CandidateArf.hypQ2Presentation.Quadratic.CandidateArf.hyp : Q2Presentation.Quadratic.QuadF2 Q2Presentation.Quadratic.CandidateArf.WThe hyperbolic quadratic form `q(a,b) = a*b` on `(ZMod 2)²`. A genuinely nonsingular
    `QuadF2` (its polar form is the standard symplectic form). ) =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.baseZeroCountQ2Presentation.Quadratic.baseZeroCount (ramified : Bool) (d : ℕ) : ℤThe **base determinant zero count** `2^{d-1} + ε·2^{d/2-1}` (eq:candidatezeros /
    eq:localzeros). 
            ramBool
            (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.Quadratic.CandidateArf.WQ2Presentation.Quadratic.CandidateArf.W : TypeCarrier of the explicit witness: the hyperbolic plane `(ZMod 2)²`. )
    The mathematically correct statement (manuscript `prop:candidatezero`): the zero count
    equals `baseZeroCount ram d` for the *unique* `ram` determined by the form's Arf invariant —
    phrased here existentially (the honest replacement for the broken axiom).  Proven for the
    witness with `ram = true`.  The GENERAL theorem (this `∃` holds for every nonsingular
    `QuadF2`) is the Dickson zero-count, requiring the Arf invariant + Witt/Wall decomposition
    over `F₂`, neither of which is in mathlib. 
  • theoremdefined in Q2Presentation/Quadratic/DicksonCount.lean
    complete
    theorem Q2Presentation.Quadratic.candidate_base_zeroCount_proven.{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]
      [Module.FiniteModule.Finite.{u_1, u_4} (R : Type u_1) (M : Type u_4) [Semiring R] [AddCommMonoid M] [Module R M] : PropA module over a semiring is `Module.Finite` if it is finitely generated as a module.  (ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2) VType u_1] [NontrivialNontrivial.{u_3} (α : Type u_3) : PropPredicate typeclass for expressing that a type is not reduced to a single element. In rings,
    this is equivalent to `0 ≠ 1`. In vector spaces, this is equivalent to positive dimension.  VType u_1]
      (qAQ2Presentation.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) (hnsqA.Nonsingular : qAQ2Presentation.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). ) :
       ramBool,
        (Q2Presentation.Quadratic.numZerosQ2Presentation.Quadratic.numZeros.{u_1} {V : Type u_1} [AddCommGroup V] [Module (ZMod 2) V]
      (q : Q2Presentation.Quadratic.QuadF2 V) : ℕThe number of zeros `# Q⁻¹(0)` of a quadratic form.  qAQ2Presentation.Quadratic.QuadF2 V) =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.baseZeroCountQ2Presentation.Quadratic.baseZeroCount (ramified : Bool) (d : ℕ) : ℤThe **base determinant zero count** `2^{d-1} + ε·2^{d/2-1}` (eq:candidatezeros /
    eq:localzeros).  ramBool
            (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) VType u_1)
    theorem Q2Presentation.Quadratic.candidate_base_zeroCount_proven.{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]
      [Module.FiniteModule.Finite.{u_1, u_4} (R : Type u_1) (M : Type u_4) [Semiring R] [AddCommMonoid M] [Module R M] : PropA module over a semiring is `Module.Finite` if it is finitely generated as a module.  (ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2) VType u_1]
      [NontrivialNontrivial.{u_3} (α : Type u_3) : PropPredicate typeclass for expressing that a type is not reduced to a single element. In rings,
    this is equivalent to `0 ≠ 1`. In vector spaces, this is equivalent to positive dimension.  VType u_1]
      (qAQ2Presentation.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)
      (hnsqA.Nonsingular : qAQ2Presentation.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). ) :
       ramBool,
        (Q2Presentation.Quadratic.numZerosQ2Presentation.Quadratic.numZeros.{u_1} {V : Type u_1} [AddCommGroup V] [Module (ZMod 2) V]
      (q : Q2Presentation.Quadratic.QuadF2 V) : ℕThe number of zeros `# Q⁻¹(0)` of a quadratic form. 
              qAQ2Presentation.Quadratic.QuadF2 V) =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.baseZeroCountQ2Presentation.Quadratic.baseZeroCount (ramified : Bool) (d : ℕ) : ℤThe **base determinant zero count** `2^{d-1} + ε·2^{d/2-1}` (eq:candidatezeros /
    eq:localzeros). 
            ramBool (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) VType u_1)
    **Closes `candidate_base_zeroCount`** (`prop:candidatezero`).  Verbatim the axiom of
    `GaussSign.lean` plus `[Nontrivial V]` (automatic for the nonzero candidate module): the
    candidate base form's zero count realizes one of the two `baseZeroCount` values. 
  • theoremdefined in Q2Presentation/Quadratic/DicksonCount.lean
    complete
    theorem Q2Presentation.Quadratic.candidate_numZeros_eq_gaussType.{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]
      [Module.FiniteModule.Finite.{u_1, u_4} (R : Type u_1) (M : Type u_4) [Semiring R] [AddCommMonoid M] [Module R M] : PropA module over a semiring is `Module.Finite` if it is finitely generated as a module.  (ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2) VType u_1] [NontrivialNontrivial.{u_3} (α : Type u_3) : PropPredicate typeclass for expressing that a type is not reduced to a single element. In rings,
    this is equivalent to `0 ≠ 1`. In vector spaces, this is equivalent to positive dimension.  VType u_1]
      (qAQ2Presentation.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) (hnsqA.Nonsingular : qAQ2Presentation.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). ) :
      (Q2Presentation.Quadratic.numZerosQ2Presentation.Quadratic.numZeros.{u_1} {V : Type u_1} [AddCommGroup V] [Module (ZMod 2) V]
      (q : Q2Presentation.Quadratic.QuadF2 V) : ℕThe number of zeros `# Q⁻¹(0)` of a quadratic form.  qAQ2Presentation.Quadratic.QuadF2 V) =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.baseZeroCountQ2Presentation.Quadratic.baseZeroCount (ramified : Bool) (d : ℕ) : ℤThe **base determinant zero count** `2^{d-1} + ε·2^{d/2-1}` (eq:candidatezeros /
    eq:localzeros). 
          (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.  qAQ2Presentation.Quadratic.QuadF2 V)
          (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) VType u_1)
    theorem Q2Presentation.Quadratic.candidate_numZeros_eq_gaussType.{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]
      [Module.FiniteModule.Finite.{u_1, u_4} (R : Type u_1) (M : Type u_4) [Semiring R] [AddCommMonoid M] [Module R M] : PropA module over a semiring is `Module.Finite` if it is finitely generated as a module.  (ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2) VType u_1]
      [NontrivialNontrivial.{u_3} (α : Type u_3) : PropPredicate typeclass for expressing that a type is not reduced to a single element. In rings,
    this is equivalent to `0 ≠ 1`. In vector spaces, this is equivalent to positive dimension.  VType u_1]
      (qAQ2Presentation.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)
      (hnsqA.Nonsingular : qAQ2Presentation.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). ) :
      (Q2Presentation.Quadratic.numZerosQ2Presentation.Quadratic.numZeros.{u_1} {V : Type u_1} [AddCommGroup V] [Module (ZMod 2) V]
      (q : Q2Presentation.Quadratic.QuadF2 V) : ℕThe number of zeros `# Q⁻¹(0)` of a quadratic form. 
            qAQ2Presentation.Quadratic.QuadF2 V) =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.baseZeroCountQ2Presentation.Quadratic.baseZeroCount (ramified : Bool) (d : ℕ) : ℤThe **base determinant zero count** `2^{d-1} + ε·2^{d/2-1}` (eq:candidatezeros /
    eq:localzeros). 
          (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. 
            qAQ2Presentation.Quadratic.QuadF2 V)
          (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) VType u_1)
    The candidate base form's zero count realizes its **own** Gauss
    type (`prop:candidatezero`, now via Dickson). 
Theorem6.5
Group: Quadratic determinant obstructions (7)
Hover another entry in this group to preview it.
L∃∀Nused by 1

Proposition 6.18 of the paper (Dyadic base determinant theorem).

If d=\dim V, then

\#(Q^0_{\mathrm{loc}})^{-1}(0)= \begin{cases} 2^{d-1}-2^{d/2-1},&V\text{ unramified},\\ 2^{d-1}+2^{d/2-1},&V\text{ ramified}. \end{cases}

Equivalently, the base local Gauss sum is negative in the unramified case and positive in the ramified case. The candidate base form Q_A^0 has the same Gauss sum by Theorem 6.4.

Lean code for Theorem6.54 declarations
  • defdefined in Q2Presentation/Induction/ZeroEdgeRealization.lean
    complete
    def Q2Presentation.Induction.EdgeGaussLineGQ2
      {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))
      (sBool : 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.EdgeGaussLineGQ2
      {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))
      (sBool : 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`. 
    **F-sgn-L1 floor `Prop`, VALUE spelling** (design §5, local
    Gauss-type constancy; `prop:localzero` l.3349 weak half — strictly below
    keep 5, dissolved BY keep 5 at P8-S2).  Audit-§A guard: the nearest
    literature form (Poonen–Rains JAMS 2012 Prop 4.11) has the OPPOSITE
    sign and is NEVER cited for this value.  Bound to the CONCRETE package
    `boundaryPackage_GQ2` (over-strength guard). 
  • theoremdefined in Q2Presentation/Quadratic/DicksonCount.lean
    complete
    theorem Q2Presentation.Quadratic.q2_local_base_zeroCount_proven.{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]
      [Module.FiniteModule.Finite.{u_1, u_4} (R : Type u_1) (M : Type u_4) [Semiring R] [AddCommMonoid M] [Module R M] : PropA module over a semiring is `Module.Finite` if it is finitely generated as a module.  (ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2) VType u_1] [NontrivialNontrivial.{u_3} (α : Type u_3) : PropPredicate typeclass for expressing that a type is not reduced to a single element. In rings,
    this is equivalent to `0 ≠ 1`. In vector spaces, this is equivalent to positive dimension.  VType u_1]
      (qLocQ2Presentation.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) (hnsqLoc.Nonsingular : qLocQ2Presentation.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). ) :
       ramBool,
        (Q2Presentation.Quadratic.numZerosQ2Presentation.Quadratic.numZeros.{u_1} {V : Type u_1} [AddCommGroup V] [Module (ZMod 2) V]
      (q : Q2Presentation.Quadratic.QuadF2 V) : ℕThe number of zeros `# Q⁻¹(0)` of a quadratic form.  qLocQ2Presentation.Quadratic.QuadF2 V) =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.baseZeroCountQ2Presentation.Quadratic.baseZeroCount (ramified : Bool) (d : ℕ) : ℤThe **base determinant zero count** `2^{d-1} + ε·2^{d/2-1}` (eq:candidatezeros /
    eq:localzeros).  ramBool
            (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) VType u_1)
    theorem Q2Presentation.Quadratic.q2_local_base_zeroCount_proven.{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]
      [Module.FiniteModule.Finite.{u_1, u_4} (R : Type u_1) (M : Type u_4) [Semiring R] [AddCommMonoid M] [Module R M] : PropA module over a semiring is `Module.Finite` if it is finitely generated as a module.  (ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2) VType u_1]
      [NontrivialNontrivial.{u_3} (α : Type u_3) : PropPredicate typeclass for expressing that a type is not reduced to a single element. In rings,
    this is equivalent to `0 ≠ 1`. In vector spaces, this is equivalent to positive dimension.  VType u_1]
      (qLocQ2Presentation.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)
      (hnsqLoc.Nonsingular : qLocQ2Presentation.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). ) :
       ramBool,
        (Q2Presentation.Quadratic.numZerosQ2Presentation.Quadratic.numZeros.{u_1} {V : Type u_1} [AddCommGroup V] [Module (ZMod 2) V]
      (q : Q2Presentation.Quadratic.QuadF2 V) : ℕThe number of zeros `# Q⁻¹(0)` of a quadratic form. 
              qLocQ2Presentation.Quadratic.QuadF2 V) =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.baseZeroCountQ2Presentation.Quadratic.baseZeroCount (ramified : Bool) (d : ℕ) : ℤThe **base determinant zero count** `2^{d-1} + ε·2^{d/2-1}` (eq:candidatezeros /
    eq:localzeros). 
            ramBool (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) VType u_1)
    **Closes `q2_local_base_zeroCount`** (`prop:localzero`).  Identical to the candidate
    corollary — the local base form is just another nonsingular `F₂` quadratic space, so the
    "irreducible local CFT input" is in fact the same finite-field Dickson count. 
  • theoremdefined in Q2Presentation/Quadratic/DicksonCount.lean
    complete
    theorem Q2Presentation.Quadratic.q2_local_numZeros_eq_gaussType.{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]
      [Module.FiniteModule.Finite.{u_1, u_4} (R : Type u_1) (M : Type u_4) [Semiring R] [AddCommMonoid M] [Module R M] : PropA module over a semiring is `Module.Finite` if it is finitely generated as a module.  (ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2) VType u_1] [NontrivialNontrivial.{u_3} (α : Type u_3) : PropPredicate typeclass for expressing that a type is not reduced to a single element. In rings,
    this is equivalent to `0 ≠ 1`. In vector spaces, this is equivalent to positive dimension.  VType u_1]
      (qLocQ2Presentation.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) (hnsqLoc.Nonsingular : qLocQ2Presentation.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). ) :
      (Q2Presentation.Quadratic.numZerosQ2Presentation.Quadratic.numZeros.{u_1} {V : Type u_1} [AddCommGroup V] [Module (ZMod 2) V]
      (q : Q2Presentation.Quadratic.QuadF2 V) : ℕThe number of zeros `# Q⁻¹(0)` of a quadratic form.  qLocQ2Presentation.Quadratic.QuadF2 V) =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.baseZeroCountQ2Presentation.Quadratic.baseZeroCount (ramified : Bool) (d : ℕ) : ℤThe **base determinant zero count** `2^{d-1} + ε·2^{d/2-1}` (eq:candidatezeros /
    eq:localzeros). 
          (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.  qLocQ2Presentation.Quadratic.QuadF2 V)
          (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) VType u_1)
    theorem Q2Presentation.Quadratic.q2_local_numZeros_eq_gaussType.{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]
      [Module.FiniteModule.Finite.{u_1, u_4} (R : Type u_1) (M : Type u_4) [Semiring R] [AddCommMonoid M] [Module R M] : PropA module over a semiring is `Module.Finite` if it is finitely generated as a module.  (ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2) VType u_1]
      [NontrivialNontrivial.{u_3} (α : Type u_3) : PropPredicate typeclass for expressing that a type is not reduced to a single element. In rings,
    this is equivalent to `0 ≠ 1`. In vector spaces, this is equivalent to positive dimension.  VType u_1]
      (qLocQ2Presentation.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)
      (hnsqLoc.Nonsingular : qLocQ2Presentation.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). ) :
      (Q2Presentation.Quadratic.numZerosQ2Presentation.Quadratic.numZeros.{u_1} {V : Type u_1} [AddCommGroup V] [Module (ZMod 2) V]
      (q : Q2Presentation.Quadratic.QuadF2 V) : ℕThe number of zeros `# Q⁻¹(0)` of a quadratic form. 
            qLocQ2Presentation.Quadratic.QuadF2 V) =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.baseZeroCountQ2Presentation.Quadratic.baseZeroCount (ramified : Bool) (d : ℕ) : ℤThe **base determinant zero count** `2^{d-1} + ε·2^{d/2-1}` (eq:candidatezeros /
    eq:localzeros). 
          (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. 
            qLocQ2Presentation.Quadratic.QuadF2 V)
          (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) VType u_1)
    The local base form's zero count realizes its **own** Gauss type
    (`prop:localzero`'s count clause, now via Dickson). 
  • theoremdefined in Q2Presentation/Quadratic/GaussSumValue.lean
    complete
    theorem Q2Presentation.Quadratic.gaussSum_eq_sign_two_pow.{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] [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.  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). )
      (hpos0 < Module.finrank (ZMod 2) V : 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) VType u_1) :
      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 V =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.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. 
            (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.  qQ2Presentation.Quadratic.QuadF2 V) *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `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`.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) VType u_1 /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`.
    theorem Q2Presentation.Quadratic.gaussSum_eq_sign_two_pow.{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] [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.  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). )
      (hpos0 < Module.finrank (ZMod 2) V : 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) VType u_1) :
      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 V =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.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. 
            (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. 
              qQ2Presentation.Quadratic.QuadF2 V) *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `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`.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) VType u_1 /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`.
    **The Gauss-sum value** (`prop:localzero` l.3358–3360 reading:
    `G(Q) = (-1)^{Arf(Q)}·2^{d/2}`): for a nonsingular form on a finite space of
    positive dimension,
    ```
      gaussSum Q = baseGaussSign (gaussType Q) * 2^(d/2).
    ```
    Combines the Dickson count with the counting identity `2·#Q⁻¹(0) = 2^d + G`. 
Corollary6.6
Group: Quadratic determinant obstructions (7)
Hover another entry in this group to preview it.
L∃∀Nused by 0

Corollary 6.19 of the paper (Complete source interface).

For every finite lower quotient, every lower exact-image map, and every elementary characteristic-2 coefficient module, the two sources have:

  1. the same obstruction-space dimension and the same number of lifts when the obstruction vanishes;

  2. natural perfect pairings for all short exact coefficient sequences, with adjoint connecting homomorphisms;

  3. the same scalar cup–Bockstein form for the trivial module;

  4. for every nonzero invariant nonsingular quadratic form on a simple self-dual head, the same base determinant Gauss sum for the class \kappa_q^0.

Together with the marked maximal pro-2 identification in Theorem 3.4, these are the source-side inputs supplied to the target induction. This corollary is not by itself a determinacy statement: equality of base Gauss sums is used only after Fourier expansion. For a general pushout class

\kappa=\kappa_q^0+\Gamma_{\gamma_\kappa}+ \operatorname{inf}\delta_\kappa,

the terms \gamma_\kappa and \delta_\kappa enter only through the scalar classes obtained by completing the square in Theorem 8.8. The corresponding signed sums are expressed as exact-image counts in central double covers of the lower target.

Lean code for Corollary6.62 theorems
  • theoremdefined in Q2Presentation/Quadratic/DicksonCount.lean
    complete
    theorem Q2Presentation.Quadratic.candidate_gauss_eq_local_gauss.{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]
      [Module.FiniteModule.Finite.{u_1, u_4} (R : Type u_1) (M : Type u_4) [Semiring R] [AddCommMonoid M] [Module R M] : PropA module over a semiring is `Module.Finite` if it is finitely generated as a module.  (ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2) VcType u_1] [NontrivialNontrivial.{u_3} (α : Type u_3) : PropPredicate typeclass for expressing that a type is not reduced to a single element. In rings,
    this is equivalent to `0 ≠ 1`. In vector spaces, this is equivalent to positive dimension.  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] [Module.FiniteModule.Finite.{u_1, u_4} (R : Type u_1) (M : Type u_4) [Semiring R] [AddCommMonoid M] [Module R M] : PropA module over a semiring is `Module.Finite` if it is finitely generated as a module.  (ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2) VlType u_2] [NontrivialNontrivial.{u_3} (α : Type u_3) : PropPredicate typeclass for expressing that a type is not reduced to a single element. In rings,
    this is equivalent to `0 ≠ 1`. In vector spaces, this is equivalent to positive dimension.  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) (hqcqc.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) (hqlql.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). )
      (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.
    ) (hcrQ2Presentation.Quadratic.gaussType qc = 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.  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`. ramBool)
      (hlrQ2Presentation.Quadratic.gaussType ql = 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.  qlQ2Presentation.Quadratic.QuadF2 Vl =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) :
      Q2Presentation.Quadratic.gaussSignQ2Presentation.Quadratic.gaussSign.{u_1} {V : Type u_1} [AddCommGroup V] [Module (ZMod 2) V]
      (q : Q2Presentation.Quadratic.QuadF2 V) : ℤThe **Gauss sign** of a quadratic form, read off from its zero count: `+1` iff
    the count is plus-type, else `-1`.  For a nonsingular form this is the genuine
    `(-1)^{Arf}` (the count is always one of the two values).  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.gaussSignQ2Presentation.Quadratic.gaussSign.{u_1} {V : Type u_1} [AddCommGroup V] [Module (ZMod 2) V]
      (q : Q2Presentation.Quadratic.QuadF2 V) : ℤThe **Gauss sign** of a quadratic form, read off from its zero count: `+1` iff
    the count is plus-type, else `-1`.  For a nonsingular form this is the genuine
    `(-1)^{Arf}` (the count is always one of the two values).  qlQ2Presentation.Quadratic.QuadF2 Vl
    theorem Q2Presentation.Quadratic.candidate_gauss_eq_local_gauss.{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]
      [Module.FiniteModule.Finite.{u_1, u_4} (R : Type u_1) (M : Type u_4) [Semiring R] [AddCommMonoid M] [Module R M] : PropA module over a semiring is `Module.Finite` if it is finitely generated as a module.  (ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2) VcType u_1]
      [NontrivialNontrivial.{u_3} (α : Type u_3) : PropPredicate typeclass for expressing that a type is not reduced to a single element. In rings,
    this is equivalent to `0 ≠ 1`. In vector spaces, this is equivalent to positive dimension.  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]
      [Module.FiniteModule.Finite.{u_1, u_4} (R : Type u_1) (M : Type u_4) [Semiring R] [AddCommMonoid M] [Module R M] : PropA module over a semiring is `Module.Finite` if it is finitely generated as a module.  (ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2) VlType u_2]
      [NontrivialNontrivial.{u_3} (α : Type u_3) : PropPredicate typeclass for expressing that a type is not reduced to a single element. In rings,
    this is equivalent to `0 ≠ 1`. In vector spaces, this is equivalent to positive dimension.  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)
      (hqcqc.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)
      (hqlql.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). ) (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.
    )
      (hcrQ2Presentation.Quadratic.gaussType qc = 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. 
            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`.
          ramBool)
      (hlrQ2Presentation.Quadratic.gaussType ql = 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. 
            qlQ2Presentation.Quadratic.QuadF2 Vl =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) :
      Q2Presentation.Quadratic.gaussSignQ2Presentation.Quadratic.gaussSign.{u_1} {V : Type u_1} [AddCommGroup V] [Module (ZMod 2) V]
      (q : Q2Presentation.Quadratic.QuadF2 V) : ℤThe **Gauss sign** of a quadratic form, read off from its zero count: `+1` iff
    the count is plus-type, else `-1`.  For a nonsingular form this is the genuine
    `(-1)^{Arf}` (the count is always one of the two values).  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.gaussSignQ2Presentation.Quadratic.gaussSign.{u_1} {V : Type u_1} [AddCommGroup V] [Module (ZMod 2) V]
      (q : Q2Presentation.Quadratic.QuadF2 V) : ℤThe **Gauss sign** of a quadratic form, read off from its zero count: `+1` iff
    the count is plus-type, else `-1`.  For a nonsingular form this is the genuine
    `(-1)^{Arf}` (the count is always one of the two values).  qlQ2Presentation.Quadratic.QuadF2 Vl
    **The candidate Gauss sign equals the local Gauss sign** given the
    §6.3 shared-ramification input `hcr`/`hlr` (`cor:sourceinterface`(iv)
    sign half). 
  • theoremdefined in Q2Presentation/Quadratic/DicksonCount.lean
    complete
    theorem Q2Presentation.Quadratic.candidate_numZeros_eq_local.{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]
      [Module.FiniteModule.Finite.{u_1, u_4} (R : Type u_1) (M : Type u_4) [Semiring R] [AddCommMonoid M] [Module R M] : PropA module over a semiring is `Module.Finite` if it is finitely generated as a module.  (ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2) VcType u_1] [NontrivialNontrivial.{u_3} (α : Type u_3) : PropPredicate typeclass for expressing that a type is not reduced to a single element. In rings,
    this is equivalent to `0 ≠ 1`. In vector spaces, this is equivalent to positive dimension.  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] [Module.FiniteModule.Finite.{u_1, u_4} (R : Type u_1) (M : Type u_4) [Semiring R] [AddCommMonoid M] [Module R M] : PropA module over a semiring is `Module.Finite` if it is finitely generated as a module.  (ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2) VlType u_2] [NontrivialNontrivial.{u_3} (α : Type u_3) : PropPredicate typeclass for expressing that a type is not reduced to a single element. In rings,
    this is equivalent to `0 ≠ 1`. In vector spaces, this is equivalent to positive dimension.  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) (hqcqc.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) (hqlql.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). )
      (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.
    )
      (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)
      (hcrQ2Presentation.Quadratic.gaussType qc = 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.  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`. ramBool)
      (hlrQ2Presentation.Quadratic.gaussType ql = 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.  qlQ2Presentation.Quadratic.QuadF2 Vl =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) :
      (Q2Presentation.Quadratic.numZerosQ2Presentation.Quadratic.numZeros.{u_1} {V : Type u_1} [AddCommGroup V] [Module (ZMod 2) V]
      (q : Q2Presentation.Quadratic.QuadF2 V) : ℕThe number of zeros `# Q⁻¹(0)` of a quadratic form.  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.numZerosQ2Presentation.Quadratic.numZeros.{u_1} {V : Type u_1} [AddCommGroup V] [Module (ZMod 2) V]
      (q : Q2Presentation.Quadratic.QuadF2 V) : ℕThe number of zeros `# Q⁻¹(0)` of a quadratic form.  qlQ2Presentation.Quadratic.QuadF2 Vl)
    theorem Q2Presentation.Quadratic.candidate_numZeros_eq_local.{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]
      [Module.FiniteModule.Finite.{u_1, u_4} (R : Type u_1) (M : Type u_4) [Semiring R] [AddCommMonoid M] [Module R M] : PropA module over a semiring is `Module.Finite` if it is finitely generated as a module.  (ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2) VcType u_1]
      [NontrivialNontrivial.{u_3} (α : Type u_3) : PropPredicate typeclass for expressing that a type is not reduced to a single element. In rings,
    this is equivalent to `0 ≠ 1`. In vector spaces, this is equivalent to positive dimension.  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]
      [Module.FiniteModule.Finite.{u_1, u_4} (R : Type u_1) (M : Type u_4) [Semiring R] [AddCommMonoid M] [Module R M] : PropA module over a semiring is `Module.Finite` if it is finitely generated as a module.  (ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2) VlType u_2]
      [NontrivialNontrivial.{u_3} (α : Type u_3) : PropPredicate typeclass for expressing that a type is not reduced to a single element. In rings,
    this is equivalent to `0 ≠ 1`. In vector spaces, this is equivalent to positive dimension.  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)
      (hqcqc.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)
      (hqlql.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). ) (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.
    )
      (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)
      (hcrQ2Presentation.Quadratic.gaussType qc = 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. 
            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`.
          ramBool)
      (hlrQ2Presentation.Quadratic.gaussType ql = 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. 
            qlQ2Presentation.Quadratic.QuadF2 Vl =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) :
      (Q2Presentation.Quadratic.numZerosQ2Presentation.Quadratic.numZeros.{u_1} {V : Type u_1} [AddCommGroup V] [Module (ZMod 2) V]
      (q : Q2Presentation.Quadratic.QuadF2 V) : ℕThe number of zeros `# Q⁻¹(0)` of a quadratic form. 
            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.numZerosQ2Presentation.Quadratic.numZeros.{u_1} {V : Type u_1} [AddCommGroup V] [Module (ZMod 2) V]
      (q : Q2Presentation.Quadratic.QuadF2 V) : ℕThe number of zeros `# Q⁻¹(0)` of a quadratic form. 
            qlQ2Presentation.Quadratic.QuadF2 Vl)
    **Equal base determinant zero counts** given shared dimension and
    ramification (`cor:sourceinterface`(iv) numerical half). 
Proof

Proved in §6 of the paper. Ingredients: Corollary 5.14 Theorem 8.17.

Lemma6.7
Group: Quadratic determinant obstructions (7)
Hover another entry in this group to preview it.
L∃∀Nused by 0

Lemma 6.20 of the paper (No square-only invariant).

Let V be a nontrivial simple \F_2[C]-module. Every nonzero element of H^0(C,\operatorname{Sym}^2V^\vee) has nonzero, hence nonsingular, polar form.

Lean code for Lemma6.71 definition
  • defdefined in Q2Presentation/Quadratic/GaussSign.lean
    complete
    def Q2Presentation.Quadratic.QuadF2.Nonsingular.{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) : PropThe universe of propositions. `Prop ≡ Sort 0`.
    
    Every proposition is propositionally equal to either `True` or `False`. 
    def Q2Presentation.Quadratic.QuadF2.Nonsingular.{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) :
      PropThe universe of propositions. `Prop ≡ Sort 0`.
    
    Every proposition is propositionally equal to either `True` or `False`. 
    **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). 
Lemma6.8
Group: Quadratic determinant obstructions (7)
Hover another entry in this group to preview it.
L∃∀Nused by 1

Lemma 6.21 of the paper (Determinant transgression relative to the fixed equivariant class).

Let q be a nonsingular C-invariant quadratic form on V, and assume that a zero-section-normalized equivariant class

\kappa_q^0\in H^2(V\rtimes C,\F_2)

restricting to q on V has been fixed. Let

1\to V\to G_\eta\to C\to1

have extension class \eta\in H^2(C,V). Relative to the fixed equivariant lift \kappa_q^0, the obstruction to extending the fibre class over G_\eta is

d_2(q)=b_q^\flat{}_*\eta\in H^2(C,V^\vee).

Consequently, if q is the restriction of an actual class in H^2(G_\eta,\F_2), then \eta=0 and G_\eta\cong V\rtimes C over C.

Lean code for Lemma6.88 declarations
  • theoremdefined in Q2Presentation/Induction/TransgressionCore.lean
    complete
    theorem Q2Presentation.Induction.exists_quadRefinement
      {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)
      (PQ2Presentation.Induction.QRefPkg chief K : Q2Presentation.Induction.QRefPkgQ2Presentation.Induction.QRefPkg {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : TypeA **symmetric zero-diagonal normalized 2-cocycle** on the head `V`
    (the difference `g + f` of two factor cochains with equal squares and
    equal symmetry defect — `lem:transgression`'s section-change freedom).  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
       kQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K → ZMod 2,
        kQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K → ZMod 2 0 =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 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 `/\`).
          
            (vQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K wQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K :
              Q2Presentation.Induction.towerMQ2Presentation.Induction.towerM {p : Q2Presentation.Induction.FramedPair}
      {chief : Q2Presentation.Induction.NonScalarChiefFactor p} (K : Q2Presentation.Induction.KernelMinimal chief) : TypeThe additive elementary module layer `M = K/Φ(K)` (`lem:simplehead`).  KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor 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.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),
            PQ2Presentation.Induction.QRefPkg chief K.hQ2Presentation.Induction.QRefPkg.h {p : Q2Presentation.Induction.FramedPair}
      {chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p}
      {K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor}
      (self : Q2Presentation.Induction.QRefPkg chief K) :
      Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K →
        Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K → ZMod 2 vQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K wQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT 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`. kQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K → 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`.vQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT 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`. wQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT 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`. +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`. kQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K → ZMod 2 vQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT 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`. kQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K → ZMod 2 wQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K
    theorem Q2Presentation.Induction.exists_quadRefinement
      {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)
      (PQ2Presentation.Induction.QRefPkg chief K :
        Q2Presentation.Induction.QRefPkgQ2Presentation.Induction.QRefPkg {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : TypeA **symmetric zero-diagonal normalized 2-cocycle** on the head `V`
    (the difference `g + f` of two factor cochains with equal squares and
    equal symmetry defect — `lem:transgression`'s section-change freedom).  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p
          KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) :
       kQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K → ZMod 2,
        kQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K → ZMod 2 0 =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 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 `/\`).
          
            (vQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K wQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K :
              Q2Presentation.Induction.towerMQ2Presentation.Induction.towerM {p : Q2Presentation.Induction.FramedPair}
      {chief : Q2Presentation.Induction.NonScalarChiefFactor p} (K : Q2Presentation.Induction.KernelMinimal chief) : TypeThe additive elementary module layer `M = K/Φ(K)` (`lem:simplehead`). 
                  KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor 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.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),
            PQ2Presentation.Induction.QRefPkg chief K.hQ2Presentation.Induction.QRefPkg.h {p : Q2Presentation.Induction.FramedPair}
      {chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p}
      {K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor}
      (self : Q2Presentation.Induction.QRefPkg chief K) :
      Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K →
        Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K → ZMod 2 vQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K wQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT 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`. kQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K → 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`.vQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT 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`. wQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT 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`. +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`. kQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K → ZMod 2 vQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT 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`. kQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K → ZMod 2 wQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K
    **Quadratic refinement exists**: a symmetric zero-diagonal normalized
    2-cocycle on the head is a coboundary `h(v,w) = k(v+w) + k(v) + k(w)`
    (`lem:transgression`'s section-renormalization step: split the central
    `𝔽₂` out of the exponent-2 extension `QRef` linearly). 
  • theoremdefined in Q2Presentation/Induction/TransgressionCore.lean
    complete
    theorem Q2Presentation.Induction.transgression_coboundary
      {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)
      (gQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K →
      Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K → ZMod 2 :
        Q2Presentation.Induction.towerMQ2Presentation.Induction.towerM {p : Q2Presentation.Induction.FramedPair}
      {chief : Q2Presentation.Induction.NonScalarChiefFactor p} (K : Q2Presentation.Induction.KernelMinimal chief) : TypeThe additive elementary module layer `M = K/Φ(K)` (`lem:simplehead`).  KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor 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.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 
          Q2Presentation.Induction.towerMQ2Presentation.Induction.towerM {p : Q2Presentation.Induction.FramedPair}
      {chief : Q2Presentation.Induction.NonScalarChiefFactor p} (K : Q2Presentation.Induction.KernelMinimal chief) : TypeThe additive elementary module layer `M = K/Φ(K)` (`lem:simplehead`).  KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor 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.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 
            ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2)
      (hgdiag∀ (v : Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K),
      g v v = (Q2Presentation.Induction.edgeHeadForm chief K lam hinv hne).form v :
        
          (vQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K :
            Q2Presentation.Induction.towerMQ2Presentation.Induction.towerM {p : Q2Presentation.Induction.FramedPair}
      {chief : Q2Presentation.Induction.NonScalarChiefFactor p} (K : Q2Presentation.Induction.KernelMinimal chief) : TypeThe additive elementary module layer `M = K/Φ(K)` (`lem:simplehead`).  KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor 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.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),
          gQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K →
      Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K → ZMod 2 vQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K vQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT 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.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)
                  hnelam ≠ 0).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₂` 
              vQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K)
      (hgpolar∀ (v w : Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K),
      g v w + g w v = ((Q2Presentation.Induction.edgeHeadForm chief K lam hinv hne).polar v) w :
        
          (vQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K wQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K :
            Q2Presentation.Induction.towerMQ2Presentation.Induction.towerM {p : Q2Presentation.Induction.FramedPair}
      {chief : Q2Presentation.Induction.NonScalarChiefFactor p} (K : Q2Presentation.Induction.KernelMinimal chief) : TypeThe additive elementary module layer `M = K/Φ(K)` (`lem:simplehead`).  KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor 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.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),
          gQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K →
      Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K → ZMod 2 vQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K wQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT 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`. gQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K →
      Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K → ZMod 2 wQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K vQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT 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.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)
                    hnelam ≠ 0).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 
                vQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K)
              wQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K)
      (hgcoc∀ (u v w : Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K),
      g u v + g (u + v) w = g v w + g u (v + w) :
        
          (uQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K vQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K wQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K :
            Q2Presentation.Induction.towerMQ2Presentation.Induction.towerM {p : Q2Presentation.Induction.FramedPair}
      {chief : Q2Presentation.Induction.NonScalarChiefFactor p} (K : Q2Presentation.Induction.KernelMinimal chief) : TypeThe additive elementary module layer `M = K/Φ(K)` (`lem:simplehead`).  KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor 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.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),
          gQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K →
      Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K → ZMod 2 uQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K vQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT 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`. gQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K →
      Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K → 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`.uQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT 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`. vQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT 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`. wQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT 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`. gQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K →
      Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K → ZMod 2 vQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K wQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT 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`. gQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K →
      Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K → ZMod 2 uQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT 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`.vQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT 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`. wQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT 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`.)
      (nQ2Presentation.Induction.towerC K → Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K → ZMod 2 :
        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.towerMQ2Presentation.Induction.towerM {p : Q2Presentation.Induction.FramedPair}
      {chief : Q2Presentation.Induction.NonScalarChiefFactor p} (K : Q2Presentation.Induction.KernelMinimal chief) : TypeThe additive elementary module layer `M = K/Φ(K)` (`lem:simplehead`).  KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor 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.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 
            ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2)
      (hnone∀ (v : Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K), n 1 v = 0 :
        
          (vQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K :
            Q2Presentation.Induction.towerMQ2Presentation.Induction.towerM {p : Q2Presentation.Induction.FramedPair}
      {chief : Q2Presentation.Induction.NonScalarChiefFactor p} (K : Q2Presentation.Induction.KernelMinimal chief) : TypeThe additive elementary module layer `M = K/Φ(K)` (`lem:simplehead`).  KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor 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.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),
          nQ2Presentation.Induction.towerC K → Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K → ZMod 2 1 vQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT 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)
      (hnquad∀ (c : Q2Presentation.Induction.towerC K) (v w : Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K),
      n c (v + w) + n c v + n c w =
        g ((Q2Presentation.Induction.headActE chief K c) v) ((Q2Presentation.Induction.headActE chief K c) w) + g v w :
         (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)
          (vQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K wQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K :
            Q2Presentation.Induction.towerMQ2Presentation.Induction.towerM {p : Q2Presentation.Induction.FramedPair}
      {chief : Q2Presentation.Induction.NonScalarChiefFactor p} (K : Q2Presentation.Induction.KernelMinimal chief) : TypeThe additive elementary module layer `M = K/Φ(K)` (`lem:simplehead`).  KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor 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.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),
          nQ2Presentation.Induction.towerC K → Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K → ZMod 2 cQ2Presentation.Induction.towerC 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`.vQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT 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`. wQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT 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`. +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`. nQ2Presentation.Induction.towerC K → Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K → ZMod 2 cQ2Presentation.Induction.towerC K vQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT 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`. nQ2Presentation.Induction.towerC K → Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K → ZMod 2 cQ2Presentation.Induction.towerC K wQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT 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`.
            gQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K →
      Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K → ZMod 2 ((Q2Presentation.Induction.headActEQ2Presentation.Induction.headActE {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (c : Q2Presentation.Induction.towerC K) :
      Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K →ₗ[ZMod 2]
        Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT KThe descended `C`-action on the head `V = M/T` (`towerActM` mod the
    stable radical layer, via `Submodule.mapQ`).  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor cQ2Presentation.Induction.towerC K) vQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K)
                ((Q2Presentation.Induction.headActEQ2Presentation.Induction.headActE {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (c : Q2Presentation.Induction.towerC K) :
      Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K →ₗ[ZMod 2]
        Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT KThe descended `C`-action on the head `V = M/T` (`towerActM` mod the
    stable radical layer, via `Submodule.mapQ`).  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor cQ2Presentation.Induction.towerC K) wQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT 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`.
              gQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K →
      Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K → ZMod 2 vQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K wQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K)
      (etaQ2Presentation.Induction.towerC K →
      Q2Presentation.Induction.towerC K → Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT 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.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.towerMQ2Presentation.Induction.towerM {p : Q2Presentation.Induction.FramedPair}
      {chief : Q2Presentation.Induction.NonScalarChiefFactor p} (K : Q2Presentation.Induction.KernelMinimal chief) : TypeThe additive elementary module layer `M = K/Φ(K)` (`lem:simplehead`).  KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor 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.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)
      (hncoh∀ (c d : Q2Presentation.Induction.towerC K) (v : Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K),
      n c ((Q2Presentation.Induction.headActE chief K d) v) + n d v + n (c * d) v =
        ((Q2Presentation.Induction.edgeHeadForm chief K lam hinv hne).polar (eta c d))
          ((Q2Presentation.Induction.headActE chief K (c * d)) v) :
         (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)
          (vQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K :
            Q2Presentation.Induction.towerMQ2Presentation.Induction.towerM {p : Q2Presentation.Induction.FramedPair}
      {chief : Q2Presentation.Induction.NonScalarChiefFactor p} (K : Q2Presentation.Induction.KernelMinimal chief) : TypeThe additive elementary module layer `M = K/Φ(K)` (`lem:simplehead`).  KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor 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.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),
          nQ2Presentation.Induction.towerC K → Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K → ZMod 2 cQ2Presentation.Induction.towerC K ((Q2Presentation.Induction.headActEQ2Presentation.Induction.headActE {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (c : Q2Presentation.Induction.towerC K) :
      Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K →ₗ[ZMod 2]
        Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT KThe descended `C`-action on the head `V = M/T` (`towerActM` mod the
    stable radical layer, via `Submodule.mapQ`).  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor dQ2Presentation.Induction.towerC K) vQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT 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`. nQ2Presentation.Induction.towerC K → Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K → ZMod 2 dQ2Presentation.Induction.towerC K vQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT 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`.
              nQ2Presentation.Induction.towerC K → Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K → 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`.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`. vQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT 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.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)
                    hnelam ≠ 0).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 
                (etaQ2Presentation.Induction.towerC K →
      Q2Presentation.Induction.towerC K → Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K cQ2Presentation.Induction.towerC K dQ2Presentation.Induction.towerC K))
              ((Q2Presentation.Induction.headActEQ2Presentation.Induction.headActE {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (c : Q2Presentation.Induction.towerC K) :
      Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K →ₗ[ZMod 2]
        Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT KThe descended `C`-action on the head `V = M/T` (`towerActM` mod the
    stable radical layer, via `Submodule.mapQ`).  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`.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`.) vQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K))
      (mQ2Presentation.Induction.towerC K → Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K → ZMod 2 :
        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.towerMQ2Presentation.Induction.towerM {p : Q2Presentation.Induction.FramedPair}
      {chief : Q2Presentation.Induction.NonScalarChiefFactor p} (K : Q2Presentation.Induction.KernelMinimal chief) : TypeThe additive elementary module layer `M = K/Φ(K)` (`lem:simplehead`).  KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor 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.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 
            ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2)
      (hmone∀ (v : Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K), m 1 v = 0 :
        
          (vQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K :
            Q2Presentation.Induction.towerMQ2Presentation.Induction.towerM {p : Q2Presentation.Induction.FramedPair}
      {chief : Q2Presentation.Induction.NonScalarChiefFactor p} (K : Q2Presentation.Induction.KernelMinimal chief) : TypeThe additive elementary module layer `M = K/Φ(K)` (`lem:simplehead`).  KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor 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.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),
          mQ2Presentation.Induction.towerC K → Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K → ZMod 2 1 vQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT 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)
      (hmquad∀ (c : Q2Presentation.Induction.towerC K) (v w : Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K),
      m c (v + w) + m c v + m c w =
        ((Q2Presentation.Induction.edgeBaseFactor chief K lam hinv hne) ((Q2Presentation.Induction.headActE chief K c) v))
            ((Q2Presentation.Induction.headActE chief K c) w) +
          ((Q2Presentation.Induction.edgeBaseFactor chief K lam hinv hne) v) w :
         (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)
          (vQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K wQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K :
            Q2Presentation.Induction.towerMQ2Presentation.Induction.towerM {p : Q2Presentation.Induction.FramedPair}
      {chief : Q2Presentation.Induction.NonScalarChiefFactor p} (K : Q2Presentation.Induction.KernelMinimal chief) : TypeThe additive elementary module layer `M = K/Φ(K)` (`lem:simplehead`).  KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor 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.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),
          mQ2Presentation.Induction.towerC K → Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K → ZMod 2 cQ2Presentation.Induction.towerC 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`.vQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT 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`. wQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT 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`. +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`. mQ2Presentation.Induction.towerC K → Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K → ZMod 2 cQ2Presentation.Induction.towerC K vQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT 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`. mQ2Presentation.Induction.towerC K → Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K → ZMod 2 cQ2Presentation.Induction.towerC K wQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT 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.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) hnelam ≠ 0)
                  ((Q2Presentation.Induction.headActEQ2Presentation.Induction.headActE {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (c : Q2Presentation.Induction.towerC K) :
      Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K →ₗ[ZMod 2]
        Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT KThe descended `C`-action on the head `V = M/T` (`towerActM` mod the
    stable radical layer, via `Submodule.mapQ`).  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor cQ2Presentation.Induction.towerC K) vQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K))
                ((Q2Presentation.Induction.headActEQ2Presentation.Induction.headActE {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (c : Q2Presentation.Induction.towerC K) :
      Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K →ₗ[ZMod 2]
        Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT KThe descended `C`-action on the head `V = M/T` (`towerActM` mod the
    stable radical layer, via `Submodule.mapQ`).  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor cQ2Presentation.Induction.towerC K) wQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT 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`.
              ((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)
                    hnelam ≠ 0)
                  vQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K)
                wQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K)
      (hmcoh∀ (c d : Q2Presentation.Induction.towerC K) (v : Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K),
      m (c * d) v = m c ((Q2Presentation.Induction.headActE chief K d) v) + m d v :
         (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)
          (vQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K :
            Q2Presentation.Induction.towerMQ2Presentation.Induction.towerM {p : Q2Presentation.Induction.FramedPair}
      {chief : Q2Presentation.Induction.NonScalarChiefFactor p} (K : Q2Presentation.Induction.KernelMinimal chief) : TypeThe additive elementary module layer `M = K/Φ(K)` (`lem:simplehead`).  KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor 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.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),
          mQ2Presentation.Induction.towerC K → Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K → 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`.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`. vQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT 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`.
            mQ2Presentation.Induction.towerC K → Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K → ZMod 2 cQ2Presentation.Induction.towerC K ((Q2Presentation.Induction.headActEQ2Presentation.Induction.headActE {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (c : Q2Presentation.Induction.towerC K) :
      Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K →ₗ[ZMod 2]
        Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT KThe descended `C`-action on the head `V = M/T` (`towerActM` mod the
    stable radical layer, via `Submodule.mapQ`).  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor dQ2Presentation.Induction.towerC K) vQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT 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`. mQ2Presentation.Induction.towerC K → Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K → ZMod 2 dQ2Presentation.Induction.towerC K vQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K) :
       aQ2Presentation.Induction.towerC K → Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K,
        aQ2Presentation.Induction.towerC K → Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K 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 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 `/\`).
           (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),
            aQ2Presentation.Induction.towerC K → Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT 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 *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `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`. =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`.
              aQ2Presentation.Induction.towerC K → Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K cQ2Presentation.Induction.towerC 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`. (Q2Presentation.Induction.headActEQ2Presentation.Induction.headActE {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (c : Q2Presentation.Induction.towerC K) :
      Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K →ₗ[ZMod 2]
        Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT KThe descended `C`-action on the head `V = M/T` (`towerActM` mod the
    stable radical layer, via `Submodule.mapQ`).  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor cQ2Presentation.Induction.towerC K) (aQ2Presentation.Induction.towerC K → Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K dQ2Presentation.Induction.towerC 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`.
                etaQ2Presentation.Induction.towerC K →
      Q2Presentation.Induction.towerC K → Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K cQ2Presentation.Induction.towerC K dQ2Presentation.Induction.towerC K
    theorem Q2Presentation.Induction.transgression_coboundary
      {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)
      (gQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K →
      Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K → ZMod 2 :
        Q2Presentation.Induction.towerMQ2Presentation.Induction.towerM {p : Q2Presentation.Induction.FramedPair}
      {chief : Q2Presentation.Induction.NonScalarChiefFactor p} (K : Q2Presentation.Induction.KernelMinimal chief) : TypeThe additive elementary module layer `M = K/Φ(K)` (`lem:simplehead`).  KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor 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.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 
          Q2Presentation.Induction.towerMQ2Presentation.Induction.towerM {p : Q2Presentation.Induction.FramedPair}
      {chief : Q2Presentation.Induction.NonScalarChiefFactor p} (K : Q2Presentation.Induction.KernelMinimal chief) : TypeThe additive elementary module layer `M = K/Φ(K)` (`lem:simplehead`).  KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor 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.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 
            ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2)
      (hgdiag∀ (v : Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K),
      g v v = (Q2Presentation.Induction.edgeHeadForm chief K lam hinv hne).form v :
        
          (vQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K :
            Q2Presentation.Induction.towerMQ2Presentation.Induction.towerM {p : Q2Presentation.Induction.FramedPair}
      {chief : Q2Presentation.Induction.NonScalarChiefFactor p} (K : Q2Presentation.Induction.KernelMinimal chief) : TypeThe additive elementary module layer `M = K/Φ(K)` (`lem:simplehead`). 
                KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor 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.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),
          gQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K →
      Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K → ZMod 2 vQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K vQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT 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.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) hnelam ≠ 0).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₂` 
              vQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K)
      (hgpolar∀ (v w : Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K),
      g v w + g w v = ((Q2Presentation.Induction.edgeHeadForm chief K lam hinv hne).polar v) w :
        
          (vQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K wQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K :
            Q2Presentation.Induction.towerMQ2Presentation.Induction.towerM {p : Q2Presentation.Induction.FramedPair}
      {chief : Q2Presentation.Induction.NonScalarChiefFactor p} (K : Q2Presentation.Induction.KernelMinimal chief) : TypeThe additive elementary module layer `M = K/Φ(K)` (`lem:simplehead`). 
                KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor 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.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),
          gQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K →
      Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K → ZMod 2 vQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K wQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT 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`. gQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K →
      Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K → ZMod 2 wQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K vQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT 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.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)
                    hnelam ≠ 0).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 
                vQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K)
              wQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K)
      (hgcoc∀ (u v w : Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K),
      g u v + g (u + v) w = g v w + g u (v + w) :
        
          (uQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K vQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K wQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K :
            Q2Presentation.Induction.towerMQ2Presentation.Induction.towerM {p : Q2Presentation.Induction.FramedPair}
      {chief : Q2Presentation.Induction.NonScalarChiefFactor p} (K : Q2Presentation.Induction.KernelMinimal chief) : TypeThe additive elementary module layer `M = K/Φ(K)` (`lem:simplehead`). 
                KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor 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.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),
          gQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K →
      Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K → ZMod 2 uQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K vQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT 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`. gQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K →
      Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K → 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`.uQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT 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`. vQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT 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`. wQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT 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`.
            gQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K →
      Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K → ZMod 2 vQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K wQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT 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`. gQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K →
      Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K → ZMod 2 uQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT 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`.vQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT 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`. wQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT 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`.)
      (nQ2Presentation.Induction.towerC K → Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K → ZMod 2 :
        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.towerMQ2Presentation.Induction.towerM {p : Q2Presentation.Induction.FramedPair}
      {chief : Q2Presentation.Induction.NonScalarChiefFactor p} (K : Q2Presentation.Induction.KernelMinimal chief) : TypeThe additive elementary module layer `M = K/Φ(K)` (`lem:simplehead`).  KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor 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.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 
            ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2)
      (hnone∀ (v : Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K), n 1 v = 0 :
        
          (vQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K :
            Q2Presentation.Induction.towerMQ2Presentation.Induction.towerM {p : Q2Presentation.Induction.FramedPair}
      {chief : Q2Presentation.Induction.NonScalarChiefFactor p} (K : Q2Presentation.Induction.KernelMinimal chief) : TypeThe additive elementary module layer `M = K/Φ(K)` (`lem:simplehead`). 
                KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor 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.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),
          nQ2Presentation.Induction.towerC K → Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K → ZMod 2 1 vQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT 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)
      (hnquad∀ (c : Q2Presentation.Induction.towerC K) (v w : Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K),
      n c (v + w) + n c v + n c w =
        g ((Q2Presentation.Induction.headActE chief K c) v) ((Q2Presentation.Induction.headActE chief K c) w) + g v w :
        
          (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)
          (vQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K wQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K :
            Q2Presentation.Induction.towerMQ2Presentation.Induction.towerM {p : Q2Presentation.Induction.FramedPair}
      {chief : Q2Presentation.Induction.NonScalarChiefFactor p} (K : Q2Presentation.Induction.KernelMinimal chief) : TypeThe additive elementary module layer `M = K/Φ(K)` (`lem:simplehead`). 
                KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor 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.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),
          nQ2Presentation.Induction.towerC K → Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K → ZMod 2 cQ2Presentation.Induction.towerC 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`.vQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT 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`. wQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT 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`. +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`. nQ2Presentation.Induction.towerC K → Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K → ZMod 2 cQ2Presentation.Induction.towerC K vQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT 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`. nQ2Presentation.Induction.towerC K → Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K → ZMod 2 cQ2Presentation.Induction.towerC K wQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT 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`.
            gQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K →
      Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K → ZMod 2
                ((Q2Presentation.Induction.headActEQ2Presentation.Induction.headActE {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (c : Q2Presentation.Induction.towerC K) :
      Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K →ₗ[ZMod 2]
        Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT KThe descended `C`-action on the head `V = M/T` (`towerActM` mod the
    stable radical layer, via `Submodule.mapQ`). 
                    chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor cQ2Presentation.Induction.towerC K)
                  vQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K)
                ((Q2Presentation.Induction.headActEQ2Presentation.Induction.headActE {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (c : Q2Presentation.Induction.towerC K) :
      Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K →ₗ[ZMod 2]
        Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT KThe descended `C`-action on the head `V = M/T` (`towerActM` mod the
    stable radical layer, via `Submodule.mapQ`). 
                    chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor cQ2Presentation.Induction.towerC K)
                  wQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT 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`.
              gQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K →
      Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K → ZMod 2 vQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K wQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K)
      (etaQ2Presentation.Induction.towerC K →
      Q2Presentation.Induction.towerC K → Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT 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.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.towerMQ2Presentation.Induction.towerM {p : Q2Presentation.Induction.FramedPair}
      {chief : Q2Presentation.Induction.NonScalarChiefFactor p} (K : Q2Presentation.Induction.KernelMinimal chief) : TypeThe additive elementary module layer `M = K/Φ(K)` (`lem:simplehead`). 
                KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor 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.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)
      (hncoh∀ (c d : Q2Presentation.Induction.towerC K) (v : Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K),
      n c ((Q2Presentation.Induction.headActE chief K d) v) + n d v + n (c * d) v =
        ((Q2Presentation.Induction.edgeHeadForm chief K lam hinv hne).polar (eta c d))
          ((Q2Presentation.Induction.headActE chief K (c * d)) v) :
        
          (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)
          (vQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K :
            Q2Presentation.Induction.towerMQ2Presentation.Induction.towerM {p : Q2Presentation.Induction.FramedPair}
      {chief : Q2Presentation.Induction.NonScalarChiefFactor p} (K : Q2Presentation.Induction.KernelMinimal chief) : TypeThe additive elementary module layer `M = K/Φ(K)` (`lem:simplehead`). 
                KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor 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.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),
          nQ2Presentation.Induction.towerC K → Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K → ZMod 2 cQ2Presentation.Induction.towerC K
                  ((Q2Presentation.Induction.headActEQ2Presentation.Induction.headActE {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (c : Q2Presentation.Induction.towerC K) :
      Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K →ₗ[ZMod 2]
        Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT KThe descended `C`-action on the head `V = M/T` (`towerActM` mod the
    stable radical layer, via `Submodule.mapQ`). 
                      chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor dQ2Presentation.Induction.towerC K)
                    vQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT 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`.
                nQ2Presentation.Induction.towerC K → Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K → ZMod 2 dQ2Presentation.Induction.towerC K vQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT 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`.
              nQ2Presentation.Induction.towerC K → Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K → 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`.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`. vQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT 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.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)
                    hnelam ≠ 0).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 
                (etaQ2Presentation.Induction.towerC K →
      Q2Presentation.Induction.towerC K → Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K cQ2Presentation.Induction.towerC K dQ2Presentation.Induction.towerC K))
              ((Q2Presentation.Induction.headActEQ2Presentation.Induction.headActE {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (c : Q2Presentation.Induction.towerC K) :
      Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K →ₗ[ZMod 2]
        Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT KThe descended `C`-action on the head `V = M/T` (`towerActM` mod the
    stable radical layer, via `Submodule.mapQ`). 
                  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`.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`.)
                vQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K))
      (mQ2Presentation.Induction.towerC K → Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K → ZMod 2 :
        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.towerMQ2Presentation.Induction.towerM {p : Q2Presentation.Induction.FramedPair}
      {chief : Q2Presentation.Induction.NonScalarChiefFactor p} (K : Q2Presentation.Induction.KernelMinimal chief) : TypeThe additive elementary module layer `M = K/Φ(K)` (`lem:simplehead`).  KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor 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.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 
            ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2)
      (hmone∀ (v : Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K), m 1 v = 0 :
        
          (vQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K :
            Q2Presentation.Induction.towerMQ2Presentation.Induction.towerM {p : Q2Presentation.Induction.FramedPair}
      {chief : Q2Presentation.Induction.NonScalarChiefFactor p} (K : Q2Presentation.Induction.KernelMinimal chief) : TypeThe additive elementary module layer `M = K/Φ(K)` (`lem:simplehead`). 
                KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor 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.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),
          mQ2Presentation.Induction.towerC K → Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K → ZMod 2 1 vQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT 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)
      (hmquad∀ (c : Q2Presentation.Induction.towerC K) (v w : Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K),
      m c (v + w) + m c v + m c w =
        ((Q2Presentation.Induction.edgeBaseFactor chief K lam hinv hne) ((Q2Presentation.Induction.headActE chief K c) v))
            ((Q2Presentation.Induction.headActE chief K c) w) +
          ((Q2Presentation.Induction.edgeBaseFactor chief K lam hinv hne) v) w :
        
          (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)
          (vQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K wQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K :
            Q2Presentation.Induction.towerMQ2Presentation.Induction.towerM {p : Q2Presentation.Induction.FramedPair}
      {chief : Q2Presentation.Induction.NonScalarChiefFactor p} (K : Q2Presentation.Induction.KernelMinimal chief) : TypeThe additive elementary module layer `M = K/Φ(K)` (`lem:simplehead`). 
                KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor 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.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),
          mQ2Presentation.Induction.towerC K → Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K → ZMod 2 cQ2Presentation.Induction.towerC 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`.vQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT 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`. wQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT 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`. +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`. mQ2Presentation.Induction.towerC K → Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K → ZMod 2 cQ2Presentation.Induction.towerC K vQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT 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`. mQ2Presentation.Induction.towerC K → Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K → ZMod 2 cQ2Presentation.Induction.towerC K wQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT 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.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) hnelam ≠ 0)
                  ((Q2Presentation.Induction.headActEQ2Presentation.Induction.headActE {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (c : Q2Presentation.Induction.towerC K) :
      Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K →ₗ[ZMod 2]
        Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT KThe descended `C`-action on the head `V = M/T` (`towerActM` mod the
    stable radical layer, via `Submodule.mapQ`). 
                      chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor cQ2Presentation.Induction.towerC K)
                    vQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K))
                ((Q2Presentation.Induction.headActEQ2Presentation.Induction.headActE {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (c : Q2Presentation.Induction.towerC K) :
      Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K →ₗ[ZMod 2]
        Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT KThe descended `C`-action on the head `V = M/T` (`towerActM` mod the
    stable radical layer, via `Submodule.mapQ`). 
                    chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor cQ2Presentation.Induction.towerC K)
                  wQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT 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`.
              ((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) hnelam ≠ 0)
                  vQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K)
                wQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K)
      (hmcoh∀ (c d : Q2Presentation.Induction.towerC K) (v : Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K),
      m (c * d) v = m c ((Q2Presentation.Induction.headActE chief K d) v) + m d v :
        
          (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)
          (vQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K :
            Q2Presentation.Induction.towerMQ2Presentation.Induction.towerM {p : Q2Presentation.Induction.FramedPair}
      {chief : Q2Presentation.Induction.NonScalarChiefFactor p} (K : Q2Presentation.Induction.KernelMinimal chief) : TypeThe additive elementary module layer `M = K/Φ(K)` (`lem:simplehead`). 
                KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor 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.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),
          mQ2Presentation.Induction.towerC K → Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K → 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`.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`. vQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT 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`.
            mQ2Presentation.Induction.towerC K → Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K → ZMod 2 cQ2Presentation.Induction.towerC K
                ((Q2Presentation.Induction.headActEQ2Presentation.Induction.headActE {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (c : Q2Presentation.Induction.towerC K) :
      Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K →ₗ[ZMod 2]
        Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT KThe descended `C`-action on the head `V = M/T` (`towerActM` mod the
    stable radical layer, via `Submodule.mapQ`). 
                    chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor dQ2Presentation.Induction.towerC K)
                  vQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT 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`.
              mQ2Presentation.Induction.towerC K → Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K → ZMod 2 dQ2Presentation.Induction.towerC K vQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K) :
       aQ2Presentation.Induction.towerC K → Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K,
        aQ2Presentation.Induction.towerC K → Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K 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 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 `/\`).
          
            (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),
            aQ2Presentation.Induction.towerC K → Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT 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 *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `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`. =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`.
              aQ2Presentation.Induction.towerC K → Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K cQ2Presentation.Induction.towerC 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`.
                  (Q2Presentation.Induction.headActEQ2Presentation.Induction.headActE {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (c : Q2Presentation.Induction.towerC K) :
      Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K →ₗ[ZMod 2]
        Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT KThe descended `C`-action on the head `V = M/T` (`towerActM` mod the
    stable radical layer, via `Submodule.mapQ`). 
                      chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor cQ2Presentation.Induction.towerC K)
                    (aQ2Presentation.Induction.towerC K → Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K dQ2Presentation.Induction.towerC 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`.
                etaQ2Presentation.Induction.towerC K →
      Q2Presentation.Induction.towerC K → Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K cQ2Presentation.Induction.towerC K dQ2Presentation.Induction.towerC K
    **The transgression engine** (`lem:transgression` l.3464–3530, cochain
    form; design §4.7's "one genuinely heavy provable unit", automorphism-free):
    given the fibre factor cochain `g` of the descended cover (squares `q̄_λ`,
    symmetry defect the polar form, cocycle law), the conjugation-defect
    cochain `n` (normalized; quadratic law (†); transgression coherence (‡)
    `n_c(dv) + n_d(v) + n_{cd}(v) = b̄(η(c,d), (cd)v)` — the concrete
    `eq:transgressioncochain`), and a `κ_q⁰`-model `m`
    (`eq:mquadratic`/`eq:mcoherent`), the section cochain `η` is EXACTLY a
    twisted coboundary: `a(cd) = a(c) + c·a(d) + η(c,d)` with `a(1) = 0`.
    Nonsingularity of `q̄_λ` enters through `edgePolarEquiv`. 
  • theoremdefined in Q2Presentation/Induction/TransgressionUnit.lean
    complete
    theorem Q2Presentation.Induction.vInG_conj
      {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)
      (x(Q2Presentation.Induction.btChild chief K).fst.Y : (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`. )
      (vQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K :
        Q2Presentation.Induction.towerMQ2Presentation.Induction.towerM {p : Q2Presentation.Induction.FramedPair}
      {chief : Q2Presentation.Induction.NonScalarChiefFactor p} (K : Q2Presentation.Induction.KernelMinimal chief) : TypeThe additive elementary module layer `M = K/Φ(K)` (`lem:simplehead`).  KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor 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.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) :
      x(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`. Q2Presentation.Induction.vInGQ2Presentation.Induction.vInG {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (v : Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K) :
      (Q2Presentation.Induction.btChild chief K).fst.YThe group-carrier fibre inclusion `V → B/T'`.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor vQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT 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`. x(Q2Presentation.Induction.btChild chief K).fst.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`.
        Q2Presentation.Induction.vInGQ2Presentation.Induction.vInG {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (v : Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K) :
      (Q2Presentation.Induction.btChild chief K).fst.YThe group-carrier fibre inclusion `V → B/T'`.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor
          ((Q2Presentation.Induction.headActEQ2Presentation.Induction.headActE {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (c : Q2Presentation.Induction.towerC K) :
      Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K →ₗ[ZMod 2]
        Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT KThe descended `C`-action on the head `V = M/T` (`towerActM` mod the
    stable radical layer, via `Submodule.mapQ`).  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p 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) x(Q2Presentation.Induction.btChild chief K).fst.Y))
            vQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K)
    theorem Q2Presentation.Induction.vInG_conj
      {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)
      (x(Q2Presentation.Induction.btChild chief K).fst.Y :
        (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`. )
      (vQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K :
        Q2Presentation.Induction.towerMQ2Presentation.Induction.towerM {p : Q2Presentation.Induction.FramedPair}
      {chief : Q2Presentation.Induction.NonScalarChiefFactor p} (K : Q2Presentation.Induction.KernelMinimal chief) : TypeThe additive elementary module layer `M = K/Φ(K)` (`lem:simplehead`).  KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor 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.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) :
      x(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`.
            Q2Presentation.Induction.vInGQ2Presentation.Induction.vInG {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (v : Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K) :
      (Q2Presentation.Induction.btChild chief K).fst.YThe group-carrier fibre inclusion `V → B/T'`. 
              chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor vQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT 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`.
          x(Q2Presentation.Induction.btChild chief K).fst.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`.
        Q2Presentation.Induction.vInGQ2Presentation.Induction.vInG {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (v : Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K) :
      (Q2Presentation.Induction.btChild chief K).fst.YThe group-carrier fibre inclusion `V → B/T'`.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor
          ((Q2Presentation.Induction.headActEQ2Presentation.Induction.headActE {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (c : Q2Presentation.Induction.towerC K) :
      Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K →ₗ[ZMod 2]
        Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT KThe descended `C`-action on the head `V = M/T` (`towerActM` mod the
    stable radical layer, via `Submodule.mapQ`). 
              chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p 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)
                x(Q2Presentation.Induction.btChild chief K).fst.Y))
            vQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K)
    **Conjugation covers the head action**: conjugating the fibre by any
    element of `B/T'` acts by `headActE` at the image `C`-class — the
    `lem:transgression` compatibility, fully proven. 
  • defdefined in Q2Presentation/Induction/TransgressionUnit.lean
    complete
    def Q2Presentation.Induction.SplitsBtChild
      {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) :
      PropThe universe of propositions. `Prop ≡ Sort 0`.
    
    Every proposition is propositionally equal to either `True` or `False`. 
    def Q2Presentation.Induction.SplitsBtChild
      {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) :
      PropThe universe of propositions. `Prop ≡ Sort 0`.
    
    Every proposition is propositionally equal to either `True` or `False`. 
    **`B/T'` splits as `V⋊C`** (the conclusion of `lem:transgression` at
    the child, complement form — the exact shape of the `Csec/hdisj/hsup`
    slots of `ZeroEdgeDescentData`, design §4.7). 
  • structure(13 fields)defined in Q2Presentation/Induction/TransgressionUnit.lean
    complete
    structure Q2Presentation.Induction.TransgressionDescentData
      {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) : TypeA type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. 
    structure Q2Presentation.Induction.TransgressionDescentData
      {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) : TypeA type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. 
    **The descended-cover reading data** for `lem:transgression` at the
    child: a normalized set-section `σ` of `btProj` with its section cochain
    `η` (`eq:extensionfactortransgression`), and the two `𝔽₂`-readings of the
    descended central double cover — the fibre factor cochain `g` (squares
    `= q̄_λ`, symmetry defect `= b̄`, 2-cocycle) and the conjugation defect
    `n` ((†) quadratic law; (‡) `eq:transgressioncochain`, concrete).
    
    Every field is FINITE BOOKKEEPING over the GREEN U1–U3 layer (no
    arithmetic input): `g`/`n` are `relRead`-readings in
    `descTarget D hW` (squares/commutators/conjugations of `mCover`-lifts —
    `scalarProj_sq_eq_form`, `scalarProj_comm_eq_polar`, `mCover_conj_fix`
    through `descProj`; centrality of the deck by `descKernel_le_center`),
    `σ`/`η` come from `Classical.choice` sections of the two surjections.
    The construction is the remaining MECHANICAL obligation of this unit
    (deferred for size, NOT keep-shaped; program in the §14 design notes). 

    Fields

    sigmaQ2Presentation.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`. 
    sigma_oneself.sigma 1 = 1 : selfQ2Presentation.Induction.TransgressionDescentData chief K lam hinv hne.sigmaQ2Presentation.Induction.TransgressionDescentData.sigma {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}
      (self : Q2Presentation.Induction.TransgressionDescentData chief K lam hinv hne) :
      Q2Presentation.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
    sigma_sec∀ (c : Q2Presentation.Induction.towerC K), (Q2Presentation.Induction.btProj chief K) (self.sigma 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) (selfQ2Presentation.Induction.TransgressionDescentData chief K lam hinv hne.sigmaQ2Presentation.Induction.TransgressionDescentData.sigma {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}
      (self : Q2Presentation.Induction.TransgressionDescentData chief K lam hinv hne) :
      Q2Presentation.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
    gQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K →
      Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K → ZMod 2 : Q2Presentation.Induction.towerMQ2Presentation.Induction.towerM {p : Q2Presentation.Induction.FramedPair}
      {chief : Q2Presentation.Induction.NonScalarChiefFactor p} (K : Q2Presentation.Induction.KernelMinimal chief) : TypeThe additive elementary module layer `M = K/Φ(K)` (`lem:simplehead`).  KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor 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.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 
      Q2Presentation.Induction.towerMQ2Presentation.Induction.towerM {p : Q2Presentation.Induction.FramedPair}
      {chief : Q2Presentation.Induction.NonScalarChiefFactor p} (K : Q2Presentation.Induction.KernelMinimal chief) : TypeThe additive elementary module layer `M = K/Φ(K)` (`lem:simplehead`).  KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor 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.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  ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2
    g_diag∀ (v : Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K),
      self.g v v = (Q2Presentation.Induction.edgeHeadForm chief K lam hinv hne).form v :  (vQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K : Q2Presentation.Induction.towerMQ2Presentation.Induction.towerM {p : Q2Presentation.Induction.FramedPair}
      {chief : Q2Presentation.Induction.NonScalarChiefFactor p} (K : Q2Presentation.Induction.KernelMinimal chief) : TypeThe additive elementary module layer `M = K/Φ(K)` (`lem:simplehead`).  KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor 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.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),
      selfQ2Presentation.Induction.TransgressionDescentData chief K lam hinv hne.gQ2Presentation.Induction.TransgressionDescentData.g {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}
      (self : Q2Presentation.Induction.TransgressionDescentData chief K lam hinv hne) :
      Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K →
        Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K → ZMod 2 vQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K vQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT 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.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) hnelam ≠ 0).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₂`  vQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K
    g_polar∀ (v w : Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K),
      self.g v w + self.g w v = ((Q2Presentation.Induction.edgeHeadForm chief K lam hinv hne).polar v) w :  (vQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K wQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K : Q2Presentation.Induction.towerMQ2Presentation.Induction.towerM {p : Q2Presentation.Induction.FramedPair}
      {chief : Q2Presentation.Induction.NonScalarChiefFactor p} (K : Q2Presentation.Induction.KernelMinimal chief) : TypeThe additive elementary module layer `M = K/Φ(K)` (`lem:simplehead`).  KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor 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.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),
      selfQ2Presentation.Induction.TransgressionDescentData chief K lam hinv hne.gQ2Presentation.Induction.TransgressionDescentData.g {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}
      (self : Q2Presentation.Induction.TransgressionDescentData chief K lam hinv hne) :
      Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K →
        Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K → ZMod 2 vQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K wQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT 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`. selfQ2Presentation.Induction.TransgressionDescentData chief K lam hinv hne.gQ2Presentation.Induction.TransgressionDescentData.g {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}
      (self : Q2Presentation.Induction.TransgressionDescentData chief K lam hinv hne) :
      Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K →
        Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K → ZMod 2 wQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K vQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT 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.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) hnelam ≠ 0).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  vQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K) wQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K
    g_cocycle∀ (u v w : Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K),
      self.g u v + self.g (u + v) w = self.g v w + self.g u (v + w) :  (uQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K vQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K wQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K : Q2Presentation.Induction.towerMQ2Presentation.Induction.towerM {p : Q2Presentation.Induction.FramedPair}
      {chief : Q2Presentation.Induction.NonScalarChiefFactor p} (K : Q2Presentation.Induction.KernelMinimal chief) : TypeThe additive elementary module layer `M = K/Φ(K)` (`lem:simplehead`).  KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor 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.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),
      selfQ2Presentation.Induction.TransgressionDescentData chief K lam hinv hne.gQ2Presentation.Induction.TransgressionDescentData.g {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}
      (self : Q2Presentation.Induction.TransgressionDescentData chief K lam hinv hne) :
      Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K →
        Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K → ZMod 2 uQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K vQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT 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`. selfQ2Presentation.Induction.TransgressionDescentData chief K lam hinv hne.gQ2Presentation.Induction.TransgressionDescentData.g {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}
      (self : Q2Presentation.Induction.TransgressionDescentData chief K lam hinv hne) :
      Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K →
        Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K → 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`.uQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT 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`. vQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT 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`. wQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT 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`. selfQ2Presentation.Induction.TransgressionDescentData chief K lam hinv hne.gQ2Presentation.Induction.TransgressionDescentData.g {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}
      (self : Q2Presentation.Induction.TransgressionDescentData chief K lam hinv hne) :
      Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K →
        Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K → ZMod 2 vQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K wQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT 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`. selfQ2Presentation.Induction.TransgressionDescentData chief K lam hinv hne.gQ2Presentation.Induction.TransgressionDescentData.g {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}
      (self : Q2Presentation.Induction.TransgressionDescentData chief K lam hinv hne) :
      Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K →
        Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K → ZMod 2 uQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT 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`.vQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT 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`. wQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT 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`.
    nQ2Presentation.Induction.towerC K → Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K → ZMod 2 : 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.towerMQ2Presentation.Induction.towerM {p : Q2Presentation.Induction.FramedPair}
      {chief : Q2Presentation.Induction.NonScalarChiefFactor p} (K : Q2Presentation.Induction.KernelMinimal chief) : TypeThe additive elementary module layer `M = K/Φ(K)` (`lem:simplehead`).  KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor 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.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  ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.  2
    n_one∀ (v : Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K), self.n 1 v = 0 :  (vQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K : Q2Presentation.Induction.towerMQ2Presentation.Induction.towerM {p : Q2Presentation.Induction.FramedPair}
      {chief : Q2Presentation.Induction.NonScalarChiefFactor p} (K : Q2Presentation.Induction.KernelMinimal chief) : TypeThe additive elementary module layer `M = K/Φ(K)` (`lem:simplehead`).  KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor 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.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), selfQ2Presentation.Induction.TransgressionDescentData chief K lam hinv hne.nQ2Presentation.Induction.TransgressionDescentData.n {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}
      (self : Q2Presentation.Induction.TransgressionDescentData chief K lam hinv hne) :
      Q2Presentation.Induction.towerC K → Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K → ZMod 2 1 vQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT 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
    n_quadratic∀ (c : Q2Presentation.Induction.towerC K) (v w : Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K),
      self.n c (v + w) + self.n c v + self.n c w =
        self.g ((Q2Presentation.Induction.headActE chief K c) v) ((Q2Presentation.Induction.headActE chief K c) w) +
          self.g v w :  (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) (vQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K wQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K : Q2Presentation.Induction.towerMQ2Presentation.Induction.towerM {p : Q2Presentation.Induction.FramedPair}
      {chief : Q2Presentation.Induction.NonScalarChiefFactor p} (K : Q2Presentation.Induction.KernelMinimal chief) : TypeThe additive elementary module layer `M = K/Φ(K)` (`lem:simplehead`).  KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor 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.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),
      selfQ2Presentation.Induction.TransgressionDescentData chief K lam hinv hne.nQ2Presentation.Induction.TransgressionDescentData.n {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}
      (self : Q2Presentation.Induction.TransgressionDescentData chief K lam hinv hne) :
      Q2Presentation.Induction.towerC K → Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K → ZMod 2 cQ2Presentation.Induction.towerC 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`.vQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT 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`. wQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT 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`. +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`. selfQ2Presentation.Induction.TransgressionDescentData chief K lam hinv hne.nQ2Presentation.Induction.TransgressionDescentData.n {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}
      (self : Q2Presentation.Induction.TransgressionDescentData chief K lam hinv hne) :
      Q2Presentation.Induction.towerC K → Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K → ZMod 2 cQ2Presentation.Induction.towerC K vQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT 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`. selfQ2Presentation.Induction.TransgressionDescentData chief K lam hinv hne.nQ2Presentation.Induction.TransgressionDescentData.n {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}
      (self : Q2Presentation.Induction.TransgressionDescentData chief K lam hinv hne) :
      Q2Presentation.Induction.towerC K → Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K → ZMod 2 cQ2Presentation.Induction.towerC K wQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT 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`.
        selfQ2Presentation.Induction.TransgressionDescentData chief K lam hinv hne.gQ2Presentation.Induction.TransgressionDescentData.g {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}
      (self : Q2Presentation.Induction.TransgressionDescentData chief K lam hinv hne) :
      Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K →
        Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K → ZMod 2 ((Q2Presentation.Induction.headActEQ2Presentation.Induction.headActE {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (c : Q2Presentation.Induction.towerC K) :
      Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K →ₗ[ZMod 2]
        Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT KThe descended `C`-action on the head `V = M/T` (`towerActM` mod the
    stable radical layer, via `Submodule.mapQ`).  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor cQ2Presentation.Induction.towerC K) vQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K) ((Q2Presentation.Induction.headActEQ2Presentation.Induction.headActE {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (c : Q2Presentation.Induction.towerC K) :
      Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K →ₗ[ZMod 2]
        Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT KThe descended `C`-action on the head `V = M/T` (`towerActM` mod the
    stable radical layer, via `Submodule.mapQ`).  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor cQ2Presentation.Induction.towerC K) wQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT 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`.
          selfQ2Presentation.Induction.TransgressionDescentData chief K lam hinv hne.gQ2Presentation.Induction.TransgressionDescentData.g {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}
      (self : Q2Presentation.Induction.TransgressionDescentData chief K lam hinv hne) :
      Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K →
        Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K → ZMod 2 vQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K wQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K
    etaQ2Presentation.Induction.towerC K →
      Q2Presentation.Induction.towerC K → Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT 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.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.towerMQ2Presentation.Induction.towerM {p : Q2Presentation.Induction.FramedPair}
      {chief : Q2Presentation.Induction.NonScalarChiefFactor p} (K : Q2Presentation.Induction.KernelMinimal chief) : TypeThe additive elementary module layer `M = K/Φ(K)` (`lem:simplehead`).  KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor 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.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
    sigma_eta∀ (c d : Q2Presentation.Induction.towerC K),
      self.sigma c * self.sigma d = Q2Presentation.Induction.vInG chief K (self.eta c d) * self.sigma (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),
      selfQ2Presentation.Induction.TransgressionDescentData chief K lam hinv hne.sigmaQ2Presentation.Induction.TransgressionDescentData.sigma {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}
      (self : Q2Presentation.Induction.TransgressionDescentData chief K lam hinv hne) :
      Q2Presentation.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`. selfQ2Presentation.Induction.TransgressionDescentData chief K lam hinv hne.sigmaQ2Presentation.Induction.TransgressionDescentData.sigma {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}
      (self : Q2Presentation.Induction.TransgressionDescentData chief K lam hinv hne) :
      Q2Presentation.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`. Q2Presentation.Induction.vInGQ2Presentation.Induction.vInG {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)
      (v : Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K) :
      (Q2Presentation.Induction.btChild chief K).fst.YThe group-carrier fibre inclusion `V → B/T'`.  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor (selfQ2Presentation.Induction.TransgressionDescentData chief K lam hinv hne.etaQ2Presentation.Induction.TransgressionDescentData.eta {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}
      (self : Q2Presentation.Induction.TransgressionDescentData chief K lam hinv hne) :
      Q2Presentation.Induction.towerC K →
        Q2Presentation.Induction.towerC K → Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K cQ2Presentation.Induction.towerC K 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`. selfQ2Presentation.Induction.TransgressionDescentData chief K lam hinv hne.sigmaQ2Presentation.Induction.TransgressionDescentData.sigma {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}
      (self : Q2Presentation.Induction.TransgressionDescentData chief K lam hinv hne) :
      Q2Presentation.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`.
    n_coherent∀ (c d : Q2Presentation.Induction.towerC K) (v : Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K),
      self.n c ((Q2Presentation.Induction.headActE chief K d) v) + self.n d v + self.n (c * d) v =
        ((Q2Presentation.Induction.edgeHeadForm chief K lam hinv hne).polar (self.eta c d))
          ((Q2Presentation.Induction.headActE chief K (c * d)) v) :  (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) (vQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K : Q2Presentation.Induction.towerMQ2Presentation.Induction.towerM {p : Q2Presentation.Induction.FramedPair}
      {chief : Q2Presentation.Induction.NonScalarChiefFactor p} (K : Q2Presentation.Induction.KernelMinimal chief) : TypeThe additive elementary module layer `M = K/Φ(K)` (`lem:simplehead`).  KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor 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.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),
      selfQ2Presentation.Induction.TransgressionDescentData chief K lam hinv hne.nQ2Presentation.Induction.TransgressionDescentData.n {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}
      (self : Q2Presentation.Induction.TransgressionDescentData chief K lam hinv hne) :
      Q2Presentation.Induction.towerC K → Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K → ZMod 2 cQ2Presentation.Induction.towerC K ((Q2Presentation.Induction.headActEQ2Presentation.Induction.headActE {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (c : Q2Presentation.Induction.towerC K) :
      Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K →ₗ[ZMod 2]
        Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT KThe descended `C`-action on the head `V = M/T` (`towerActM` mod the
    stable radical layer, via `Submodule.mapQ`).  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor dQ2Presentation.Induction.towerC K) vQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT 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`. selfQ2Presentation.Induction.TransgressionDescentData chief K lam hinv hne.nQ2Presentation.Induction.TransgressionDescentData.n {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}
      (self : Q2Presentation.Induction.TransgressionDescentData chief K lam hinv hne) :
      Q2Presentation.Induction.towerC K → Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K → ZMod 2 dQ2Presentation.Induction.towerC K vQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT 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`. selfQ2Presentation.Induction.TransgressionDescentData chief K lam hinv hne.nQ2Presentation.Induction.TransgressionDescentData.n {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}
      (self : Q2Presentation.Induction.TransgressionDescentData chief K lam hinv hne) :
      Q2Presentation.Induction.towerC K → Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K → 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`.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`. vQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT 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.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) hnelam ≠ 0).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  (selfQ2Presentation.Induction.TransgressionDescentData chief K lam hinv hne.etaQ2Presentation.Induction.TransgressionDescentData.eta {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}
      (self : Q2Presentation.Induction.TransgressionDescentData chief K lam hinv hne) :
      Q2Presentation.Induction.towerC K →
        Q2Presentation.Induction.towerC K → Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K cQ2Presentation.Induction.towerC K dQ2Presentation.Induction.towerC K))
          ((Q2Presentation.Induction.headActEQ2Presentation.Induction.headActE {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (c : Q2Presentation.Induction.towerC K) :
      Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K →ₗ[ZMod 2]
        Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT KThe descended `C`-action on the head `V = M/T` (`towerActM` mod the
    stable radical layer, via `Submodule.mapQ`).  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`.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`.) vQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K)
  • defdefined in Q2Presentation/Induction/TransgressionUnit.lean
    complete
    def Q2Presentation.Induction.TransgressionReading
      {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.TransgressionReading
      {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`. 
    **Named deferred-construction `Prop`** (hypothesis slot; see the
    `TransgressionDescentData` docstring for the two-part provenance: the
    manuscript source is `lem:transgression`'s section/reading choices at the
    descended cover of `lem:radicaledge` step 7, and the dissolution is the
    mechanical U1–U3 reading construction — finite bookkeeping, no keeps). 
  • theoremdefined in Q2Presentation/Induction/TransgressionUnit.lean
    complete
    theorem Q2Presentation.Induction.btChild_splits_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|`. }
      (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)
      (RQ2Presentation.Induction.TransgressionDescentData chief K lam hinv hne :
        Q2Presentation.Induction.TransgressionDescentDataQ2Presentation.Induction.TransgressionDescentData {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) : Type**The descended-cover reading data** for `lem:transgression` at the
    child: a normalized set-section `σ` of `btProj` with its section cochain
    `η` (`eq:extensionfactortransgression`), and the two `𝔽₂`-readings of the
    descended central double cover — the fibre factor cochain `g` (squares
    `= q̄_λ`, symmetry defect `= b̄`, 2-cocycle) and the conjugation defect
    `n` ((†) quadratic law; (‡) `eq:transgressioncochain`, concrete).
    
    Every field is FINITE BOOKKEEPING over the GREEN U1–U3 layer (no
    arithmetic input): `g`/`n` are `relRead`-readings in
    `descTarget D hW` (squares/commutators/conjugations of `mCover`-lifts —
    `scalarProj_sq_eq_form`, `scalarProj_comm_eq_polar`, `mCover_conj_fix`
    through `descProj`; centrality of the deck by `descKernel_le_center`),
    `σ`/`η` come from `Classical.choice` sections of the two surjections.
    The construction is the remaining MECHANICAL obligation of this unit
    (deferred for size, NOT keep-shaped; program in the §14 design notes).  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)
      (MQ2Presentation.Induction.BaseModelData chief K lam hinv hne : Q2Presentation.Induction.BaseModelDataQ2Presentation.Induction.BaseModelData {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) : Type**The `κ_q⁰`-model data** at the R4b head: the coherent equivariant
    correction functions `m_c` of `lem:extraspecialconnecting`
    (`eq:mquadratic` l.2118–2120 + `eq:mcoherent` l.2122–2124) against the
    bilinear factor set `edgeBaseFactor` — exactly the `mC`-slots of
    `ZeroEdgeDescentData`.  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.SplitsBtChildQ2Presentation.Induction.SplitsBtChild {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Prop**`B/T'` splits as `V⋊C`** (the conclusion of `lem:transgression` at
    the child, complement form — the exact shape of the `Csec/hdisj/hsup`
    slots of `ZeroEdgeDescentData`, design §4.7).  chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor
    theorem Q2Presentation.Induction.btChild_splits_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|`. }
      (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)
      (RQ2Presentation.Induction.TransgressionDescentData chief K lam hinv hne :
        Q2Presentation.Induction.TransgressionDescentDataQ2Presentation.Induction.TransgressionDescentData {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) : Type**The descended-cover reading data** for `lem:transgression` at the
    child: a normalized set-section `σ` of `btProj` with its section cochain
    `η` (`eq:extensionfactortransgression`), and the two `𝔽₂`-readings of the
    descended central double cover — the fibre factor cochain `g` (squares
    `= q̄_λ`, symmetry defect `= b̄`, 2-cocycle) and the conjugation defect
    `n` ((†) quadratic law; (‡) `eq:transgressioncochain`, concrete).
    
    Every field is FINITE BOOKKEEPING over the GREEN U1–U3 layer (no
    arithmetic input): `g`/`n` are `relRead`-readings in
    `descTarget D hW` (squares/commutators/conjugations of `mCover`-lifts —
    `scalarProj_sq_eq_form`, `scalarProj_comm_eq_polar`, `mCover_conj_fix`
    through `descProj`; centrality of the deck by `descKernel_le_center`),
    `σ`/`η` come from `Classical.choice` sections of the two surjections.
    The construction is the remaining MECHANICAL obligation of this unit
    (deferred for size, NOT keep-shaped; program in the §14 design notes). 
          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)
      (MQ2Presentation.Induction.BaseModelData chief K lam hinv hne :
        Q2Presentation.Induction.BaseModelDataQ2Presentation.Induction.BaseModelData {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) : Type**The `κ_q⁰`-model data** at the R4b head: the coherent equivariant
    correction functions `m_c` of `lem:extraspecialconnecting`
    (`eq:mquadratic` l.2118–2120 + `eq:mcoherent` l.2122–2124) against the
    bilinear factor set `edgeBaseFactor` — exactly the `mC`-slots of
    `ZeroEdgeDescentData`. 
          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.SplitsBtChildQ2Presentation.Induction.SplitsBtChild {p : Q2Presentation.Induction.FramedPair}
      (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p)
      (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Prop**`B/T'` splits as `V⋊C`** (the conclusion of `lem:transgression` at
    the child, complement form — the exact shape of the `Csec/hdisj/hsup`
    slots of `ZeroEdgeDescentData`, design §4.7). 
        chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor
    **`lem:transgression` at the child, PROVEN from the reading data and
    the `κ_q⁰`-model** (l.3464–3530 + l.4032–4034): the engine's coboundary
    `a` shears the section homomorphic, and its range is the complement. 
  • defdefined in Q2Presentation/Induction/ZeroEdgeDescent.lean
    complete
    def Q2Presentation.Induction.btChild
      {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) :
      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.btChild
      {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) :
      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 `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'`).