6. Quadratic determinant obstructions
-
Q2Presentation.Induction.BaseModelData[complete]
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.1●1 definition
Associated Lean declarations
-
Q2Presentation.Induction.BaseModelData[complete]
-
Q2Presentation.Induction.BaseModelData[complete]
-
structuredefined in Q2Presentation/Induction/TransgressionUnit.leancomplete
structure Q2Presentation.Induction.BaseModelData {p
Q2Presentation.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 pKQ2Presentation.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 pKQ2Presentation.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 {p
Q2Presentation.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 pKQ2Presentation.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 pKQ2Presentation.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
m
Q2Presentation.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 : ℕ`.2m_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 21 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`.0m_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 KwQ2Presentation.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 2cQ2Presentation.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 2cQ2Presentation.Induction.towerC KvQ2Presentation.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 2cQ2Presentation.Induction.towerC KwQ2Presentation.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 pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactorlamModule.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 pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactorcQ2Presentation.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 pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactorcQ2Presentation.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 pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactorlamModule.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 Km_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 KdQ2Presentation.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 2cQ2Presentation.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 pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactordQ2Presentation.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 2dQ2Presentation.Induction.towerC KvQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K
-
Q2Presentation.Induction.headIm_odd_of_unramified[complete] -
Q2Presentation.Induction.baseModelExists_of_unramified[complete] -
Q2Presentation.Induction.HeadIm[complete] -
Q2Presentation.Induction.baseModelExists_of_oddHeadAction[complete] -
Q2Presentation.Induction.splitsBtChild_of_zeroEdge_of_oddHeadAction[complete] -
Q2Presentation.Induction.baseModelExists_iff_splits[complete] -
Q2Presentation.Induction.BaseModelExists[complete] -
Q2Presentation.Induction.btChild_splits[complete] -
Q2Presentation.Induction.zeroEdgePinnedExistence[complete] -
Q2Presentation.Induction.zeroEdgePinnedExistence_of_oddHeadAction[complete]
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.2●10 declarations
Associated Lean declarations
-
Q2Presentation.Induction.headIm_odd_of_unramified[complete]
-
Q2Presentation.Induction.baseModelExists_of_unramified[complete]
-
Q2Presentation.Induction.HeadIm[complete]
-
Q2Presentation.Induction.baseModelExists_of_oddHeadAction[complete]
-
Q2Presentation.Induction.splitsBtChild_of_zeroEdge_of_oddHeadAction[complete]
-
Q2Presentation.Induction.baseModelExists_iff_splits[complete]
-
Q2Presentation.Induction.BaseModelExists[complete]
-
Q2Presentation.Induction.btChild_splits[complete]
-
Q2Presentation.Induction.zeroEdgePinnedExistence[complete]
-
Q2Presentation.Induction.zeroEdgePinnedExistence_of_oddHeadAction[complete]
-
Q2Presentation.Induction.headIm_odd_of_unramified[complete] -
Q2Presentation.Induction.baseModelExists_of_unramified[complete] -
Q2Presentation.Induction.HeadIm[complete] -
Q2Presentation.Induction.baseModelExists_of_oddHeadAction[complete] -
Q2Presentation.Induction.splitsBtChild_of_zeroEdge_of_oddHeadAction[complete] -
Q2Presentation.Induction.baseModelExists_iff_splits[complete] -
Q2Presentation.Induction.BaseModelExists[complete] -
Q2Presentation.Induction.btChild_splits[complete] -
Q2Presentation.Induction.zeroEdgePinnedExistence[complete] -
Q2Presentation.Induction.zeroEdgePinnedExistence_of_oddHeadAction[complete]
-
theoremdefined in Q2Presentation/Induction/BaseModelHeadStructure.leancomplete
theorem Q2Presentation.Induction.headIm_odd_of_unramified {p
Q2Presentation.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 pKQ2Presentation.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 pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor))theorem Q2Presentation.Induction.headIm_odd_of_unramified {p
Q2Presentation.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 pKQ2Presentation.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 pKQ2Presentation.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.leancomplete
theorem Q2Presentation.Induction.baseModelExists_of_unramified {p
Q2Presentation.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 pKQ2Presentation.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 pKQ2Presentation.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 pKQ2Presentation.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 pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactorlamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)hnelam ≠ 0theorem Q2Presentation.Induction.baseModelExists_of_unramified {p
Q2Presentation.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 pKQ2Presentation.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 pKQ2Presentation.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 pKQ2Presentation.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 pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactorlamModule.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.leancomplete
abbrev Q2Presentation.Induction.HeadIm {p
Q2Presentation.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 {p
Q2Presentation.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.leancomplete
theorem Q2Presentation.Induction.baseModelExists_of_oddHeadAction {p
Q2Presentation.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 pKQ2Presentation.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 pKQ2Presentation.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 pKQ2Presentation.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 pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactorlamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)hnelam ≠ 0theorem Q2Presentation.Induction.baseModelExists_of_oddHeadAction {p
Q2Presentation.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 pKQ2Presentation.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 pKQ2Presentation.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 pKQ2Presentation.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 pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactorlamModule.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.leancomplete
theorem Q2Presentation.Induction.splitsBtChild_of_zeroEdge_of_oddHeadAction {p
Q2Presentation.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 pKQ2Presentation.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 pKQ2Presentation.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 pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactorlamModule.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 pKQ2Presentation.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 pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactortheorem Q2Presentation.Induction.splitsBtChild_of_zeroEdge_of_oddHeadAction {p
Q2Presentation.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 pKQ2Presentation.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 pKQ2Presentation.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 pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactorlamModule.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 pKQ2Presentation.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 pKQ2Presentation.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.leancomplete
theorem Q2Presentation.Induction.baseModelExists_iff_splits {p
Q2Presentation.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 pKQ2Presentation.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 pKQ2Presentation.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 pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactorlamModule.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 pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactorlamModule.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 pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactortheorem Q2Presentation.Induction.baseModelExists_iff_splits {p
Q2Presentation.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 pKQ2Presentation.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 pKQ2Presentation.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 pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactorlamModule.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 pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactorlamModule.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 pKQ2Presentation.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.leancomplete
def Q2Presentation.Induction.BaseModelExists {p
Q2Presentation.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 pKQ2Presentation.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 pKQ2Presentation.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 {p
Q2Presentation.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 pKQ2Presentation.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 pKQ2Presentation.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.leancomplete
theorem Q2Presentation.Induction.btChild_splits {p
Q2Presentation.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 pKQ2Presentation.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 pKQ2Presentation.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 pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactorlamModule.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 pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactorlamModule.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 pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactortheorem Q2Presentation.Induction.btChild_splits {p
Q2Presentation.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 pKQ2Presentation.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 pKQ2Presentation.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 pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactorlamModule.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 pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactorlamModule.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 pKQ2Presentation.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.leancomplete
theorem Q2Presentation.Induction.zeroEdgePinnedExistence {p
Q2Presentation.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 pKQ2Presentation.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 pKQ2Presentation.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 pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactorlamModule.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 pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactorlamModule.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 pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactorlamModule.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 hinvtheorem Q2Presentation.Induction.zeroEdgePinnedExistence {p
Q2Presentation.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 pKQ2Presentation.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 pKQ2Presentation.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 pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactorlamModule.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 pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactorlamModule.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 pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactorlamModule.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.leancomplete
theorem Q2Presentation.Induction.zeroEdgePinnedExistence_of_oddHeadAction {p
Q2Presentation.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 pKQ2Presentation.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 pKQ2Presentation.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 pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactorlamModule.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 pKQ2Presentation.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 pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactorlamModule.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 hinvtheorem Q2Presentation.Induction.zeroEdgePinnedExistence_of_oddHeadAction {p
Q2Presentation.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 pKQ2Presentation.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 pKQ2Presentation.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 pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactorlamModule.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 pKQ2Presentation.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 pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactorlamModule.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`.
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.3●2 theorems
Associated Lean declarations
-
theoremdefined in Q2Presentation/Quadratic/GaussSign.leancomplete
theorem Q2Presentation.Quadratic.Candidate.candidateForm_polar_eq.{u_1} {V
Type 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: ∀ (xVyV: 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 pairingxV) yV) (cVc'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 VU(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 pairingcV) 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 pairingcV) ((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} {V
Type 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: ∀ (xVyV: 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 pairingxV) yV) (cVc'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 VU(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 pairingcV) 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 pairingcV) ((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.leancomplete
theorem Q2Presentation.Quadratic.Candidate.candidateForm_nonsingular.{u_1} {V
Type 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: ∀ (xVyV: 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 pairingxV) 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 VU(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} {V
Type 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: ∀ (xVyV: 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 pairingxV) 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 VU(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`.
Proved in §6 of the paper. Ingredients: Theorem 5.12.
-
Q2Presentation.Induction.EdgeGaussLineGammaA[complete] -
Q2Presentation.Induction.ZeroEdgeCommonGauss[complete] -
Q2Presentation.Quadratic.CandidateArf.hyp_count_eq_plus[complete] -
Q2Presentation.Quadratic.CandidateArf.hyp_correct_existential[complete] -
Q2Presentation.Quadratic.candidate_base_zeroCount_proven[complete] -
Q2Presentation.Quadratic.candidate_numZeros_eq_gaussType[complete]
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.4●6 declarations
Associated Lean declarations
-
Q2Presentation.Induction.EdgeGaussLineGammaA[complete]
-
Q2Presentation.Induction.ZeroEdgeCommonGauss[complete]
-
Q2Presentation.Quadratic.CandidateArf.hyp_count_eq_plus[complete]
-
Q2Presentation.Quadratic.CandidateArf.hyp_correct_existential[complete]
-
Q2Presentation.Quadratic.candidate_base_zeroCount_proven[complete]
-
Q2Presentation.Quadratic.candidate_numZeros_eq_gaussType[complete]
-
Q2Presentation.Induction.EdgeGaussLineGammaA[complete] -
Q2Presentation.Induction.ZeroEdgeCommonGauss[complete] -
Q2Presentation.Quadratic.CandidateArf.hyp_count_eq_plus[complete] -
Q2Presentation.Quadratic.CandidateArf.hyp_correct_existential[complete] -
Q2Presentation.Quadratic.candidate_base_zeroCount_proven[complete] -
Q2Presentation.Quadratic.candidate_numZeros_eq_gaussType[complete]
-
defdefined in Q2Presentation/Induction/ZeroEdgeRealization.leancomplete
def Q2Presentation.Induction.EdgeGaussLineGammaA {p
Q2Presentation.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 pKQ2Presentation.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 pKQ2Presentation.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 pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactorlamModule.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 {p
Q2Presentation.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 pKQ2Presentation.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 pKQ2Presentation.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 pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactorlamModule.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.leancomplete
def Q2Presentation.Induction.ZeroEdgeCommonGauss {p
Q2Presentation.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 pKQ2Presentation.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 pKQ2Presentation.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 pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactorlamModule.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 {p
Q2Presentation.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 pKQ2Presentation.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 pKQ2Presentation.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 pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactorlamModule.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.leancomplete
theorem Q2Presentation.Quadratic.CandidateArf.hyp_count_eq_plus : ↑(Q2Presentation.Quadratic.numZeros
Q2Presentation.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.numZeros
Q2Presentation.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.leancomplete
theorem Q2Presentation.Quadratic.CandidateArf.hyp_correct_existential : ∃ ram
Bool, ↑(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 : ∃ ram
Bool, ↑(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.leancomplete
theorem Q2Presentation.Quadratic.candidate_base_zeroCount_proven.{u_1} {V
Type 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} {V
Type 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.leancomplete
theorem Q2Presentation.Quadratic.candidate_numZeros_eq_gaussType.{u_1} {V
Type 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} {V
Type 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).
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.5●4 declarations
Associated Lean declarations
-
defdefined in Q2Presentation/Induction/ZeroEdgeRealization.leancomplete
def Q2Presentation.Induction.EdgeGaussLineGQ2 {p
Q2Presentation.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 pKQ2Presentation.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 pKQ2Presentation.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 pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactorlamModule.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 {p
Q2Presentation.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 pKQ2Presentation.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 pKQ2Presentation.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 pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactorlamModule.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.leancomplete
theorem Q2Presentation.Quadratic.q2_local_base_zeroCount_proven.{u_1} {V
Type 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} {V
Type 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.leancomplete
theorem Q2Presentation.Quadratic.q2_local_numZeros_eq_gaussType.{u_1} {V
Type 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} {V
Type 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.leancomplete
theorem Q2Presentation.Quadratic.gaussSum_eq_sign_two_pow.{u_1} {V
Type 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} {V
Type 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`.
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:
-
the same obstruction-space dimension and the same number of lifts when the obstruction vanishes;
-
natural perfect pairings for all short exact coefficient sequences, with adjoint connecting homomorphisms;
-
the same scalar cup–Bockstein form for the trivial module;
-
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.6●2 theorems
Associated Lean declarations
-
theoremdefined in Q2Presentation/Quadratic/DicksonCount.leancomplete
theorem Q2Presentation.Quadratic.candidate_gauss_eq_local_gauss.{u_1, u_2} {Vc
Type 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 Vltheorem Q2Presentation.Quadratic.candidate_gauss_eq_local_gauss.{u_1, u_2} {Vc
Type 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.leancomplete
theorem Q2Presentation.Quadratic.candidate_numZeros_eq_local.{u_1, u_2} {Vc
Type 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} {Vc
Type 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).
Proved in §6 of the paper. Ingredients: Corollary 5.14 Theorem 8.17.
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.7●1 definition
Associated Lean declarations
-
defdefined in Q2Presentation/Quadratic/GaussSign.leancomplete
def Q2Presentation.Quadratic.QuadF2.Nonsingular.{u_1} {V
Type 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} {V
Type 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).
-
Q2Presentation.Induction.exists_quadRefinement[complete] -
Q2Presentation.Induction.transgression_coboundary[complete] -
Q2Presentation.Induction.vInG_conj[complete] -
Q2Presentation.Induction.SplitsBtChild[complete] -
Q2Presentation.Induction.TransgressionDescentData[complete] -
Q2Presentation.Induction.TransgressionReading[complete] -
Q2Presentation.Induction.btChild_splits_of[complete] -
Q2Presentation.Induction.btChild[complete]
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.8●8 declarations
Associated Lean declarations
-
Q2Presentation.Induction.exists_quadRefinement[complete]
-
Q2Presentation.Induction.transgression_coboundary[complete]
-
Q2Presentation.Induction.vInG_conj[complete]
-
Q2Presentation.Induction.SplitsBtChild[complete]
-
Q2Presentation.Induction.TransgressionDescentData[complete]
-
Q2Presentation.Induction.TransgressionReading[complete]
-
Q2Presentation.Induction.btChild_splits_of[complete]
-
Q2Presentation.Induction.btChild[complete]
-
Q2Presentation.Induction.exists_quadRefinement[complete] -
Q2Presentation.Induction.transgression_coboundary[complete] -
Q2Presentation.Induction.vInG_conj[complete] -
Q2Presentation.Induction.SplitsBtChild[complete] -
Q2Presentation.Induction.TransgressionDescentData[complete] -
Q2Presentation.Induction.TransgressionReading[complete] -
Q2Presentation.Induction.btChild_splits_of[complete] -
Q2Presentation.Induction.btChild[complete]
-
theoremdefined in Q2Presentation/Induction/TransgressionCore.leancomplete
theorem Q2Presentation.Induction.exists_quadRefinement {p
Q2Presentation.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 pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : ∃ kQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K → ZMod 2, kQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K → ZMod 20 =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`. We use `a = b` as notation for `Eq a b`. A fundamental property of equality is that it is an equivalence relation. ``` variable (α : Type) (a b c d : α) variable (hab : a = b) (hcb : c = b) (hcd : c = d) example : a = d := Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd ``` Equality is much more than an equivalence relation, however. It has the important property that every assertion respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value. That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`. Example: ``` example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := Eq.subst h1 h2 example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := h1 ▸ h2 ``` The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`. For more information: [Equality](https://lean-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 KwQ2Presentation.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 2vQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT KwQ2Presentation.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 2vQ2Presentation.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 2wQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT Ktheorem Q2Presentation.Induction.exists_quadRefinement {p
Q2Presentation.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 pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : ∃ kQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K → ZMod 2, kQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K → ZMod 20 =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`. We use `a = b` as notation for `Eq a b`. A fundamental property of equality is that it is an equivalence relation. ``` variable (α : Type) (a b c d : α) variable (hab : a = b) (hcb : c = b) (hcd : c = d) example : a = d := Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd ``` Equality is much more than an equivalence relation, however. It has the important property that every assertion respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value. That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`. Example: ``` example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := Eq.subst h1 h2 example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := h1 ▸ h2 ``` The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`. For more information: [Equality](https://lean-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 KwQ2Presentation.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 2vQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT KwQ2Presentation.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 2vQ2Presentation.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 2wQ2Presentation.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.leancomplete
theorem Q2Presentation.Induction.transgression_coboundary {p
Q2Presentation.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 pKQ2Presentation.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 pKQ2Presentation.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 2vQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT KvQ2Presentation.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 pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactorlamModule.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 KwQ2Presentation.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 2vQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT KwQ2Presentation.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 2wQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT KvQ2Presentation.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 pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactorlamModule.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 pairingvQ2Presentation.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 KvQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT KwQ2Presentation.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 2uQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT KvQ2Presentation.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 2vQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT KwQ2Presentation.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 2uQ2Presentation.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 21 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 KwQ2Presentation.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 2cQ2Presentation.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 2cQ2Presentation.Induction.towerC KvQ2Presentation.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 2cQ2Presentation.Induction.towerC KwQ2Presentation.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 pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactorcQ2Presentation.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 pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactorcQ2Presentation.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 2vQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT KwQ2Presentation.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 KdQ2Presentation.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 2cQ2Presentation.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 pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactordQ2Presentation.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 2dQ2Presentation.Induction.towerC KvQ2Presentation.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 pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactorlamModule.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 KcQ2Presentation.Induction.towerC KdQ2Presentation.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 pKQ2Presentation.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 21 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 KwQ2Presentation.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 2cQ2Presentation.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 2cQ2Presentation.Induction.towerC KvQ2Presentation.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 2cQ2Presentation.Induction.towerC KwQ2Presentation.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 pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactorlamModule.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 pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactorcQ2Presentation.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 pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactorcQ2Presentation.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 pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactorlamModule.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 KdQ2Presentation.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 2cQ2Presentation.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 pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactordQ2Presentation.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 2dQ2Presentation.Induction.towerC KvQ2Presentation.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 K1 =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`. We use `a = b` as notation for `Eq a b`. A fundamental property of equality is that it is an equivalence relation. ``` variable (α : Type) (a b c d : α) variable (hab : a = b) (hcb : c = b) (hcd : c = d) example : a = d := Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd ``` Equality is much more than an equivalence relation, however. It has the important property that every assertion respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value. That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`. Example: ``` example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := Eq.subst h1 h2 example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := h1 ▸ h2 ``` The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`. For more information: [Equality](https://lean-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 KdQ2Presentation.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 KcQ2Presentation.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 pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactorcQ2Presentation.Induction.towerC K) (aQ2Presentation.Induction.towerC K → Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT KdQ2Presentation.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 KcQ2Presentation.Induction.towerC KdQ2Presentation.Induction.towerC Ktheorem Q2Presentation.Induction.transgression_coboundary {p
Q2Presentation.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 pKQ2Presentation.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 pKQ2Presentation.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 2vQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT KvQ2Presentation.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 pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactorlamModule.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 KwQ2Presentation.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 2vQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT KwQ2Presentation.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 2wQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT KvQ2Presentation.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 pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactorlamModule.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 pairingvQ2Presentation.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 KvQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT KwQ2Presentation.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 2uQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT KvQ2Presentation.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 2vQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT KwQ2Presentation.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 2uQ2Presentation.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 21 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 KwQ2Presentation.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 2cQ2Presentation.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 2cQ2Presentation.Induction.towerC KvQ2Presentation.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 2cQ2Presentation.Induction.towerC KwQ2Presentation.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 pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactorcQ2Presentation.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 pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactorcQ2Presentation.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 2vQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT KwQ2Presentation.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 KdQ2Presentation.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 2cQ2Presentation.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 pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactordQ2Presentation.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 2dQ2Presentation.Induction.towerC KvQ2Presentation.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 pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactorlamModule.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 KcQ2Presentation.Induction.towerC KdQ2Presentation.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 pKQ2Presentation.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 21 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 KwQ2Presentation.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 2cQ2Presentation.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 2cQ2Presentation.Induction.towerC KvQ2Presentation.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 2cQ2Presentation.Induction.towerC KwQ2Presentation.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 pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactorlamModule.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 pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactorcQ2Presentation.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 pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactorcQ2Presentation.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 pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactorlamModule.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 KdQ2Presentation.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 2cQ2Presentation.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 pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactordQ2Presentation.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 2dQ2Presentation.Induction.towerC KvQ2Presentation.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 K1 =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`. We use `a = b` as notation for `Eq a b`. A fundamental property of equality is that it is an equivalence relation. ``` variable (α : Type) (a b c d : α) variable (hab : a = b) (hcb : c = b) (hcd : c = d) example : a = d := Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd ``` Equality is much more than an equivalence relation, however. It has the important property that every assertion respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value. That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`. Example: ``` example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := Eq.subst h1 h2 example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := h1 ▸ h2 ``` The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`. For more information: [Equality](https://lean-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 KdQ2Presentation.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 KcQ2Presentation.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 pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactorcQ2Presentation.Induction.towerC K) (aQ2Presentation.Induction.towerC K → Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT KdQ2Presentation.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 KcQ2Presentation.Induction.towerC KdQ2Presentation.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.leancomplete
theorem Q2Presentation.Induction.vInG_conj {p
Q2Presentation.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 pKQ2Presentation.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 pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactorvQ2Presentation.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 pKQ2Presentation.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 pKQ2Presentation.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 pKQ2Presentation.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 {p
Q2Presentation.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 pKQ2Presentation.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 pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactorvQ2Presentation.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 pKQ2Presentation.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 pKQ2Presentation.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 pKQ2Presentation.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.leancomplete
def Q2Presentation.Induction.SplitsBtChild {p
Q2Presentation.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 {p
Q2Presentation.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).
-
structuredefined in Q2Presentation/Induction/TransgressionUnit.leancomplete
structure Q2Presentation.Induction.TransgressionDescentData {p
Q2Presentation.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 pKQ2Presentation.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 pKQ2Presentation.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 {p
Q2Presentation.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 pKQ2Presentation.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 pKQ2Presentation.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
sigma
Q2Presentation.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 pKQ2Presentation.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_one
self.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.Y1 =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`. We use `a = b` as notation for `Eq a b`. A fundamental property of equality is that it is an equivalence relation. ``` variable (α : Type) (a b c d : α) variable (hab : a = b) (hcb : c = b) (hcd : c = d) example : a = d := Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd ``` Equality is much more than an equivalence relation, however. It has the important property that every assertion respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value. That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`. Example: ``` example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := Eq.subst h1 h2 example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := h1 ▸ h2 ``` The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`. For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality) Conventions for notations in identifiers: * The recommended spelling of `=` in identifiers is `eq`.1sigma_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 pKQ2Presentation.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.YcQ2Presentation.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 Kg
Q2Presentation.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 : ℕ`.2g_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 2vQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT KvQ2Presentation.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 pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactorlamModule.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 Kg_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 KwQ2Presentation.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 2vQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT KwQ2Presentation.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 2wQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT KvQ2Presentation.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 pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactorlamModule.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 pairingvQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K) wQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT Kg_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 KvQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT KwQ2Presentation.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 2uQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT KvQ2Presentation.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 2vQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT KwQ2Presentation.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 2uQ2Presentation.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`.n
Q2Presentation.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 : ℕ`.2n_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 21 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`.0n_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 KwQ2Presentation.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 2cQ2Presentation.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 2cQ2Presentation.Induction.towerC KvQ2Presentation.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 2cQ2Presentation.Induction.towerC KwQ2Presentation.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 pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactorcQ2Presentation.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 pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactorcQ2Presentation.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 2vQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT KwQ2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT Keta
Q2Presentation.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.toNonScalarChiefFactorsigma_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 KdQ2Presentation.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.YcQ2Presentation.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.YdQ2Presentation.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 pKQ2Presentation.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 KcQ2Presentation.Induction.towerC KdQ2Presentation.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 KdQ2Presentation.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 2cQ2Presentation.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 pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactordQ2Presentation.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 2dQ2Presentation.Induction.towerC KvQ2Presentation.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 pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactorlamModule.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 KcQ2Presentation.Induction.towerC KdQ2Presentation.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 pKQ2Presentation.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.leancomplete
def Q2Presentation.Induction.TransgressionReading {p
Q2Presentation.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 pKQ2Presentation.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 pKQ2Presentation.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 {p
Q2Presentation.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 pKQ2Presentation.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 pKQ2Presentation.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.leancomplete
theorem Q2Presentation.Induction.btChild_splits_of {p
Q2Presentation.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 pKQ2Presentation.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 pKQ2Presentation.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 pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactorlamModule.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 pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactorlamModule.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 pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactortheorem Q2Presentation.Induction.btChild_splits_of {p
Q2Presentation.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 pKQ2Presentation.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 pKQ2Presentation.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 pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactorlamModule.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 pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactorlamModule.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 pKQ2Presentation.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.leancomplete
def Q2Presentation.Induction.btChild {p
Q2Presentation.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 {p
Q2Presentation.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'`).