8. Central covers, affine fibres, and Fourier inversion
Definition 8.1 of the paper (Exact-image lower maps).
For a boundary-framed lower target C, let X_\Gamma(C) denote the finite set
of boundary-framed exact-image epimorphisms \rho:\Gamma\twoheadrightarrow C
at the current lower stage. All sums over X_\Gamma(C) are over exact-image
lower maps; proper-image contributions are subtracted separately by induction.
Lean code for Definition8.1●1 theorem
Associated Lean declarations
-
theoremdefined in Q2Presentation/Induction/CandidateLiftPartitionCardinality.leancomplete
theorem Q2Presentation.Induction.centralCover_candidateRLiftSemanticData {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|`.} (BQ2Presentation.Induction.MinimalBlock p: Q2Presentation.Induction.MinimalBlockQ2Presentation.Induction.MinimalBlock (p : Q2Presentation.Induction.FramedPair) : Type 1**The §7 minimal non-scalar block.** Source-uniform module-level data of the manuscript tower (`eq:targettower`), with the deep group/representation inputs of `lem:simplehead`/`lem:collapse`/`prop:simpleheaddet` isolated as documented fields.pQ2Presentation.Induction.FramedPair) (TQ2Presentation.Induction.CentralCoverElementaryQuotientTowerData B: Q2Presentation.Induction.CentralCoverElementaryQuotientTowerDataQ2Presentation.Induction.CentralCoverElementaryQuotientTowerData {p : Q2Presentation.Induction.FramedPair} (B : Q2Presentation.Induction.MinimalBlock p) : Type 1A realized elementary quotient tower for `eq:targettower`. This is the missing target-side finite group datum behind the lower term in `eq:Mstage`: the middle quotient `B = Y/R`, the lower quotient `C = Y/K`, and the map `B -> C`. The cardinal equations record the two quotient steps in a form that proves strict decrease. The current `MinimalBlock` supplies the abstract modules, but not this realized quotient tower.BQ2Presentation.Induction.MinimalBlock p) : NonemptyNonempty.{u} (α : Sort u) : Prop`Nonempty α` is a typeclass that says that `α` is not an empty type, that is, there exists an element in the type. It differs from `Inhabited α` in that `Nonempty α` is a `Prop`, which means that it does not actually carry an element of `α`, only a proof that *there exists* such an element. Given `Nonempty α`, you can construct an element of `α` *nonconstructively* using `Classical.choice`.(Q2Presentation.Induction.CentralCoverCandidateRLiftSemanticDataQ2Presentation.Induction.CentralCoverCandidateRLiftSemanticData {p : Q2Presentation.Induction.FramedPair} (B : Q2Presentation.Induction.MinimalBlock p) (T : Q2Presentation.Induction.CentralCoverElementaryQuotientTowerData B) : Type 1Semantic candidate-side final `R`-lift packet. The exact-image partition used by the recursion is not merely an abstract cardinality equivalence. In the manuscript it comes from the central `R = Phi(K)` cover over the realized quotient tower `Y -> B = Y/R -> C = Y/K`, the obstruction map of `lem:covertransform`, the affine lift equation of `lem:affinelifting`, and the Frattini-surjectivity argument in `prop:finalfourier`. The packet is now split into the four manuscript-facing pieces above: exact-image base quotient, obstruction-index-to-base map, affine fibre torsor, and Frattini exact-image surjectivity.BQ2Presentation.Induction.MinimalBlock pTQ2Presentation.Induction.CentralCoverElementaryQuotientTowerData B)theorem Q2Presentation.Induction.centralCover_candidateRLiftSemanticData {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|`.} (BQ2Presentation.Induction.MinimalBlock p: Q2Presentation.Induction.MinimalBlockQ2Presentation.Induction.MinimalBlock (p : Q2Presentation.Induction.FramedPair) : Type 1**The §7 minimal non-scalar block.** Source-uniform module-level data of the manuscript tower (`eq:targettower`), with the deep group/representation inputs of `lem:simplehead`/`lem:collapse`/`prop:simpleheaddet` isolated as documented fields.pQ2Presentation.Induction.FramedPair) (TQ2Presentation.Induction.CentralCoverElementaryQuotientTowerData B: Q2Presentation.Induction.CentralCoverElementaryQuotientTowerDataQ2Presentation.Induction.CentralCoverElementaryQuotientTowerData {p : Q2Presentation.Induction.FramedPair} (B : Q2Presentation.Induction.MinimalBlock p) : Type 1A realized elementary quotient tower for `eq:targettower`. This is the missing target-side finite group datum behind the lower term in `eq:Mstage`: the middle quotient `B = Y/R`, the lower quotient `C = Y/K`, and the map `B -> C`. The cardinal equations record the two quotient steps in a form that proves strict decrease. The current `MinimalBlock` supplies the abstract modules, but not this realized quotient tower.BQ2Presentation.Induction.MinimalBlock p) : NonemptyNonempty.{u} (α : Sort u) : Prop`Nonempty α` is a typeclass that says that `α` is not an empty type, that is, there exists an element in the type. It differs from `Inhabited α` in that `Nonempty α` is a `Prop`, which means that it does not actually carry an element of `α`, only a proof that *there exists* such an element. Given `Nonempty α`, you can construct an element of `α` *nonconstructively* using `Classical.choice`.(Q2Presentation.Induction.CentralCoverCandidateRLiftSemanticDataQ2Presentation.Induction.CentralCoverCandidateRLiftSemanticData {p : Q2Presentation.Induction.FramedPair} (B : Q2Presentation.Induction.MinimalBlock p) (T : Q2Presentation.Induction.CentralCoverElementaryQuotientTowerData B) : Type 1Semantic candidate-side final `R`-lift packet. The exact-image partition used by the recursion is not merely an abstract cardinality equivalence. In the manuscript it comes from the central `R = Phi(K)` cover over the realized quotient tower `Y -> B = Y/R -> C = Y/K`, the obstruction map of `lem:covertransform`, the affine lift equation of `lem:affinelifting`, and the Frattini-surjectivity argument in `prop:finalfourier`. The packet is now split into the four manuscript-facing pieces above: exact-image base quotient, obstruction-index-to-base map, affine fibre torsor, and Frattini exact-image surjectivity.BQ2Presentation.Induction.MinimalBlock pTQ2Presentation.Induction.CentralCoverElementaryQuotientTowerData B)**REFINED CANDIDATE R-LIFT INPUT.** Manuscript anchors: `def:Xgamma`, `lem:covertransform`, `lem:affinelifting`, and `prop:finalfourier`. This theorem-level packet now reassembles the smaller residuals above instead of hiding them in one axiom.
-
Q2Presentation.Induction.cover_Z1_card_gq2[complete] -
Q2Presentation.Lifting.cover_Z1_card_gammaA[complete] -
Q2Presentation.Lifting.scalarCover_Z1_card[complete]
Lemma 8.2 of the paper (Common scalar character group).
For both sources \Gamma\in\{\GA,\GQ\} one has
|\Hom_{\mathrm{cont}}(\Gamma,\F_2)|=8.
Moreover scalar twisting by any such character preserves the boundary-framed condition for the central double covers used below.
Lean code for Lemma8.2●3 theorems
Associated Lean declarations
-
Q2Presentation.Induction.cover_Z1_card_gq2[complete]
-
Q2Presentation.Lifting.cover_Z1_card_gammaA[complete]
-
Q2Presentation.Lifting.scalarCover_Z1_card[complete]
-
Q2Presentation.Induction.cover_Z1_card_gq2[complete] -
Q2Presentation.Lifting.cover_Z1_card_gammaA[complete] -
Q2Presentation.Lifting.scalarCover_Z1_card[complete]
-
theoremdefined in Q2Presentation/Induction/CoverEightLocal.leancomplete
theorem Q2Presentation.Induction.cover_Z1_card_gq2 {Yt
Q2Presentation.BoundaryFramedTarget: Q2Presentation.BoundaryFramedTargetQ2Presentation.BoundaryFramedTarget : Type 1A **boundary-framed marked target** `𝒴 = (Y, L_Y, π_Y, θ_Y)` (manuscript Definition 4.1, `def:framed`): a finite group `Y` with a normal finite `2`-subgroup `L_Y`, a surjection `π_Y : Y ↠ H` onto a finite *tame* quotient with kernel exactly `L_Y`, and an *elementary decoration* `θ_Y : Y → Multiplicative E` into the multiplicative image of a finite `𝔽₂`-vector space `E`. The pair `q_Y = (π_Y, θ_Y)` fixes both the tame quotient `Y / L_Y ≅ H` and the decoration.} [FiniteFinite.{u_3} (α : Sort u_3) : PropA type is `Finite` if it is in bijective correspondence to some `Fin n`. This is similar to `Fintype`, but `Finite` is a proposition rather than data. A particular benefit to this is that `Finite` instances are definitionally equal to one another (due to proof irrelevance) rather than being merely propositionally equal, and, furthermore, `Finite` instances generally avoid the need for `Decidable` instances. One other notable difference is that `Finite` allows there to be `Finite p` instances for all `p : Prop`, which is not allowed by `Fintype` due to universe constraints. An application of this is that `Finite (x ∈ s → β x)` follows from the general instance for pi types, assuming `[∀ x, Finite (β x)]`. Implementation note: this is a reason `Finite α` is not defined as `Nonempty (Fintype α)`. Every `Fintype` instance provides a `Finite` instance via `Finite.of_fintype`. Conversely, one can noncomputably create a `Fintype` instance from a `Finite` instance via `Fintype.ofFinite`. In a proof one might write ```lean have := Fintype.ofFinite α ``` to obtain such an instance. Do not write noncomputable `Fintype` instances; instead write `Finite` instances and use this `Fintype.ofFinite` interface. The `Fintype` instances should be relied upon to be computable for evaluation purposes. Theorems should use `Finite` instead of `Fintype`, unless definitions in the theorem statement require `Fintype`. Definitions should prefer `Finite` as well, unless it is important that the definitions are meant to be computable in the reduction or `#eval` sense.YtQ2Presentation.BoundaryFramedTarget.YQ2Presentation.BoundaryFramedTarget.Y (self : Q2Presentation.BoundaryFramedTarget) : TypeThe finite target group `Y`.] (EQ2Presentation.Lifting.ElementaryKernel Yt: Q2Presentation.Lifting.ElementaryKernelQ2Presentation.Lifting.ElementaryKernel (Yt : Q2Presentation.BoundaryFramedTarget) : TypeA normal subgroup of a framed target that is killed by the decoration, contained in the wild kernel, **abelian**, and of **exponent 2** — the shape of the chief kernels the cochain keeps quantify over.YtQ2Presentation.BoundaryFramedTarget) (FQ2Presentation.BoundaryFrame Yt: Q2Presentation.BoundaryFrameQ2Presentation.BoundaryFrame (Yt : Q2Presentation.BoundaryFramedTarget) : TypeA **boundary frame** on a boundary-framed target `𝒴` (manuscript `eq:beta`): the fixed compatible data `α : 𝕋_tame ↠ H`, `ψ : Π → Multiplicative E`, and the induced `β : ∂_bd → H × Multiplicative E`. Surjectivity of `α` records that `H` really is a tame quotient (manuscript: "Fix a finite tame quotient `H`, an epimorphism `α : 𝕋_A ↠ H`").YtQ2Presentation.BoundaryFramedTarget) (hcardNat.card (Q2Presentation.Lifting.NAdd E) = 2: Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number. If `α` is infinite, `Nat.card α = 0`.(Q2Presentation.Lifting.NAddQ2Presentation.Lifting.NAdd {Yt : Q2Presentation.BoundaryFramedTarget} (E : Q2Presentation.Lifting.ElementaryKernel Yt) : TypeThe additive `F₂`-carrier of an elementary kernel.EQ2Presentation.Lifting.ElementaryKernel Yt) =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`. We use `a = b` as notation for `Eq a b`. A fundamental property of equality is that it is an equivalence relation. ``` variable (α : Type) (a b c d : α) variable (hab : a = b) (hcb : c = b) (hcd : c = d) example : a = d := Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd ``` Equality is much more than an equivalence relation, however. It has the important property that every assertion respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value. That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`. Example: ``` example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := Eq.subst h1 h2 example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := h1 ▸ h2 ``` The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`. For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality) Conventions for notations in identifiers: * The recommended spelling of `=` in identifiers is `eq`.2) (gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GQ2 (Q2Presentation.TorsorProgram.quotientFramedTarget Yt E.N ⋯ ⋯) (Q2Presentation.TorsorProgram.quotientFrame Yt E.N ⋯ ⋯ F): Q2Presentation.boundaryFramedSurjQ2Presentation.boundaryFramedSurj {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (Yt : Q2Presentation.BoundaryFramedTarget) (F : Q2Presentation.BoundaryFrame Yt) : TypeThe **boundary-framed surjections** `e_Γ^β(𝒴)` (manuscript `eq:eGamma`): the continuous surjections `f : Γ ↠ Y` whose induced map to `H × E` is the prescribed `β ∘ b_Γ`, i.e. `q_Y ∘ f = β ∘ b_Γ`. This is the subtype counted in Theorem 4.2; its cardinality is `e_Γ^β(𝒴)`.Q2Presentation.boundaryPackage_GQ2Q2Presentation.boundaryPackage_GQ2 : Q2Presentation.BoundaryPackage Q2Presentation.GQ2Profinite**The local boundary package** `boundaryPackage_GQ2 : BoundaryPackage G_{ℚ₂}` (manuscript Prop 3.14 `prop:compatiblemarking` for `Γ = G_{ℚ₂}`; plan Turn 4 §6), the `G_{ℚ₂}`-side instance of the uniform Stage-C boundary datum. * `tameMap`/`tame_surj`/`tame_nu` — the local tame quotient `G_{ℚ₂} ↠ T_A` with unramified marking `ν_loc`, from the axiom `gq2_tame_quotient` (Prop 3.2 + the local half of Prop `compatiblemarking`); * `pro2Map`/`pro2_surj`/`pro2_nu` — the local maximal pro-`2` quotient `G_{ℚ₂} ↠ Π` with the *same* unramified marking `ν_loc`, proved from the fully marked Labute comparison `labute_GQ2_maxPro2_marked` (`pro2Map_loc`, `pro2Map_loc_surjective`, `pro2Map_loc_nu`); * `nu := ν_loc` — the common unramified character through which both factor.(Q2Presentation.TorsorProgram.quotientFramedTargetQ2Presentation.TorsorProgram.quotientFramedTarget (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y) [hNn : N.Normal] (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) : Q2Presentation.BoundaryFramedTarget**The quotient framed target** `Y/N` (same `H`, same `E`, image wild kernel).YtQ2Presentation.BoundaryFramedTargetEQ2Presentation.Lifting.ElementaryKernel Yt.NQ2Presentation.Lifting.ElementaryKernel.N {Yt : Q2Presentation.BoundaryFramedTarget} (self : Q2Presentation.Lifting.ElementaryKernel Yt) : Subgroup Yt.Y⋯ ⋯) (Q2Presentation.TorsorProgram.quotientFrameQ2Presentation.TorsorProgram.quotientFrame (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y) [hNn : N.Normal] (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) (F : Q2Presentation.BoundaryFrame Yt) : Q2Presentation.BoundaryFrame (Q2Presentation.TorsorProgram.quotientFramedTarget Yt N hNLY hNθ)The frame transports verbatim (`H`, `E`, `α`, `ψ`, `β` unchanged).YtQ2Presentation.BoundaryFramedTargetEQ2Presentation.Lifting.ElementaryKernel Yt.NQ2Presentation.Lifting.ElementaryKernel.N {Yt : Q2Presentation.BoundaryFramedTarget} (self : Q2Presentation.Lifting.ElementaryKernel Yt) : Subgroup Yt.Y⋯ ⋯ FQ2Presentation.BoundaryFrame Yt)) (f₀Q2Presentation.TorsorProgram.liftHom Yt E.N ⋯ ⋯ Q2Presentation.boundaryPackage_GQ2 F g: Q2Presentation.TorsorProgram.liftHomQ2Presentation.TorsorProgram.liftHom (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y) [hNn : N.Normal] (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (F : Q2Presentation.BoundaryFrame Yt) (g : Q2Presentation.boundaryFramedSurj B (Q2Presentation.TorsorProgram.quotientFramedTarget Yt N hNLY hNθ) (Q2Presentation.TorsorProgram.quotientFrame Yt N hNLY hNθ F)) : Type**All framed lifts** of a child-framed surjection (surjectivity NOT imposed; the Frattini argument recovers it per use-site).YtQ2Presentation.BoundaryFramedTargetEQ2Presentation.Lifting.ElementaryKernel Yt.NQ2Presentation.Lifting.ElementaryKernel.N {Yt : Q2Presentation.BoundaryFramedTarget} (self : Q2Presentation.Lifting.ElementaryKernel Yt) : Subgroup Yt.Y⋯ ⋯ Q2Presentation.boundaryPackage_GQ2Q2Presentation.boundaryPackage_GQ2 : Q2Presentation.BoundaryPackage Q2Presentation.GQ2Profinite**The local boundary package** `boundaryPackage_GQ2 : BoundaryPackage G_{ℚ₂}` (manuscript Prop 3.14 `prop:compatiblemarking` for `Γ = G_{ℚ₂}`; plan Turn 4 §6), the `G_{ℚ₂}`-side instance of the uniform Stage-C boundary datum. * `tameMap`/`tame_surj`/`tame_nu` — the local tame quotient `G_{ℚ₂} ↠ T_A` with unramified marking `ν_loc`, from the axiom `gq2_tame_quotient` (Prop 3.2 + the local half of Prop `compatiblemarking`); * `pro2Map`/`pro2_surj`/`pro2_nu` — the local maximal pro-`2` quotient `G_{ℚ₂} ↠ Π` with the *same* unramified marking `ν_loc`, proved from the fully marked Labute comparison `labute_GQ2_maxPro2_marked` (`pro2Map_loc`, `pro2Map_loc_surjective`, `pro2Map_loc_nu`); * `nu := ν_loc` — the common unramified character through which both factor.FQ2Presentation.BoundaryFrame YtgQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GQ2 (Q2Presentation.TorsorProgram.quotientFramedTarget Yt E.N ⋯ ⋯) (Q2Presentation.TorsorProgram.quotientFrame Yt E.N ⋯ ⋯ F)) : Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number. If `α` is infinite, `Nat.card α = 0`.(Q2Presentation.TorsorProgram.Z1Q2Presentation.TorsorProgram.Z1 (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y) [hNn : N.Normal] (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (F : Q2Presentation.BoundaryFrame Yt) (g : Q2Presentation.boundaryFramedSurj B (Q2Presentation.TorsorProgram.quotientFramedTarget Yt N hNLY hNθ) (Q2Presentation.TorsorProgram.quotientFrame Yt N hNLY hNθ F)) (f₀ : Q2Presentation.TorsorProgram.liftHom Yt N hNLY hNθ B F g) : Type**The twisted cocycle set** relative to a base lift.YtQ2Presentation.BoundaryFramedTargetEQ2Presentation.Lifting.ElementaryKernel Yt.NQ2Presentation.Lifting.ElementaryKernel.N {Yt : Q2Presentation.BoundaryFramedTarget} (self : Q2Presentation.Lifting.ElementaryKernel Yt) : Subgroup Yt.Y⋯ ⋯ Q2Presentation.boundaryPackage_GQ2Q2Presentation.boundaryPackage_GQ2 : Q2Presentation.BoundaryPackage Q2Presentation.GQ2Profinite**The local boundary package** `boundaryPackage_GQ2 : BoundaryPackage G_{ℚ₂}` (manuscript Prop 3.14 `prop:compatiblemarking` for `Γ = G_{ℚ₂}`; plan Turn 4 §6), the `G_{ℚ₂}`-side instance of the uniform Stage-C boundary datum. * `tameMap`/`tame_surj`/`tame_nu` — the local tame quotient `G_{ℚ₂} ↠ T_A` with unramified marking `ν_loc`, from the axiom `gq2_tame_quotient` (Prop 3.2 + the local half of Prop `compatiblemarking`); * `pro2Map`/`pro2_surj`/`pro2_nu` — the local maximal pro-`2` quotient `G_{ℚ₂} ↠ Π` with the *same* unramified marking `ν_loc`, proved from the fully marked Labute comparison `labute_GQ2_maxPro2_marked` (`pro2Map_loc`, `pro2Map_loc_surjective`, `pro2Map_loc_nu`); * `nu := ν_loc` — the common unramified character through which both factor.FQ2Presentation.BoundaryFrame YtgQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GQ2 (Q2Presentation.TorsorProgram.quotientFramedTarget Yt E.N ⋯ ⋯) (Q2Presentation.TorsorProgram.quotientFrame Yt E.N ⋯ ⋯ F)f₀Q2Presentation.TorsorProgram.liftHom Yt E.N ⋯ ⋯ Q2Presentation.boundaryPackage_GQ2 F g) =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`. We use `a = b` as notation for `Eq a b`. A fundamental property of equality is that it is an equivalence relation. ``` variable (α : Type) (a b c d : α) variable (hab : a = b) (hcb : c = b) (hcd : c = d) example : a = d := Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd ``` Equality is much more than an equivalence relation, however. It has the important property that every assertion respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value. That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`. Example: ``` example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := Eq.subst h1 h2 example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := h1 ▸ h2 ``` The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`. For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality) Conventions for notations in identifiers: * The recommended spelling of `=` in identifiers is `eq`.8theorem Q2Presentation.Induction.cover_Z1_card_gq2 {Yt
Q2Presentation.BoundaryFramedTarget: Q2Presentation.BoundaryFramedTargetQ2Presentation.BoundaryFramedTarget : Type 1A **boundary-framed marked target** `𝒴 = (Y, L_Y, π_Y, θ_Y)` (manuscript Definition 4.1, `def:framed`): a finite group `Y` with a normal finite `2`-subgroup `L_Y`, a surjection `π_Y : Y ↠ H` onto a finite *tame* quotient with kernel exactly `L_Y`, and an *elementary decoration* `θ_Y : Y → Multiplicative E` into the multiplicative image of a finite `𝔽₂`-vector space `E`. The pair `q_Y = (π_Y, θ_Y)` fixes both the tame quotient `Y / L_Y ≅ H` and the decoration.} [FiniteFinite.{u_3} (α : Sort u_3) : PropA type is `Finite` if it is in bijective correspondence to some `Fin n`. This is similar to `Fintype`, but `Finite` is a proposition rather than data. A particular benefit to this is that `Finite` instances are definitionally equal to one another (due to proof irrelevance) rather than being merely propositionally equal, and, furthermore, `Finite` instances generally avoid the need for `Decidable` instances. One other notable difference is that `Finite` allows there to be `Finite p` instances for all `p : Prop`, which is not allowed by `Fintype` due to universe constraints. An application of this is that `Finite (x ∈ s → β x)` follows from the general instance for pi types, assuming `[∀ x, Finite (β x)]`. Implementation note: this is a reason `Finite α` is not defined as `Nonempty (Fintype α)`. Every `Fintype` instance provides a `Finite` instance via `Finite.of_fintype`. Conversely, one can noncomputably create a `Fintype` instance from a `Finite` instance via `Fintype.ofFinite`. In a proof one might write ```lean have := Fintype.ofFinite α ``` to obtain such an instance. Do not write noncomputable `Fintype` instances; instead write `Finite` instances and use this `Fintype.ofFinite` interface. The `Fintype` instances should be relied upon to be computable for evaluation purposes. Theorems should use `Finite` instead of `Fintype`, unless definitions in the theorem statement require `Fintype`. Definitions should prefer `Finite` as well, unless it is important that the definitions are meant to be computable in the reduction or `#eval` sense.YtQ2Presentation.BoundaryFramedTarget.YQ2Presentation.BoundaryFramedTarget.Y (self : Q2Presentation.BoundaryFramedTarget) : TypeThe finite target group `Y`.] (EQ2Presentation.Lifting.ElementaryKernel Yt: Q2Presentation.Lifting.ElementaryKernelQ2Presentation.Lifting.ElementaryKernel (Yt : Q2Presentation.BoundaryFramedTarget) : TypeA normal subgroup of a framed target that is killed by the decoration, contained in the wild kernel, **abelian**, and of **exponent 2** — the shape of the chief kernels the cochain keeps quantify over.YtQ2Presentation.BoundaryFramedTarget) (FQ2Presentation.BoundaryFrame Yt: Q2Presentation.BoundaryFrameQ2Presentation.BoundaryFrame (Yt : Q2Presentation.BoundaryFramedTarget) : TypeA **boundary frame** on a boundary-framed target `𝒴` (manuscript `eq:beta`): the fixed compatible data `α : 𝕋_tame ↠ H`, `ψ : Π → Multiplicative E`, and the induced `β : ∂_bd → H × Multiplicative E`. Surjectivity of `α` records that `H` really is a tame quotient (manuscript: "Fix a finite tame quotient `H`, an epimorphism `α : 𝕋_A ↠ H`").YtQ2Presentation.BoundaryFramedTarget) (hcardNat.card (Q2Presentation.Lifting.NAdd E) = 2: Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number. If `α` is infinite, `Nat.card α = 0`.(Q2Presentation.Lifting.NAddQ2Presentation.Lifting.NAdd {Yt : Q2Presentation.BoundaryFramedTarget} (E : Q2Presentation.Lifting.ElementaryKernel Yt) : TypeThe additive `F₂`-carrier of an elementary kernel.EQ2Presentation.Lifting.ElementaryKernel Yt) =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`. We use `a = b` as notation for `Eq a b`. A fundamental property of equality is that it is an equivalence relation. ``` variable (α : Type) (a b c d : α) variable (hab : a = b) (hcb : c = b) (hcd : c = d) example : a = d := Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd ``` Equality is much more than an equivalence relation, however. It has the important property that every assertion respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value. That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`. Example: ``` example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := Eq.subst h1 h2 example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := h1 ▸ h2 ``` The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`. For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality) Conventions for notations in identifiers: * The recommended spelling of `=` in identifiers is `eq`.2) (gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GQ2 (Q2Presentation.TorsorProgram.quotientFramedTarget Yt E.N ⋯ ⋯) (Q2Presentation.TorsorProgram.quotientFrame Yt E.N ⋯ ⋯ F): Q2Presentation.boundaryFramedSurjQ2Presentation.boundaryFramedSurj {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (Yt : Q2Presentation.BoundaryFramedTarget) (F : Q2Presentation.BoundaryFrame Yt) : TypeThe **boundary-framed surjections** `e_Γ^β(𝒴)` (manuscript `eq:eGamma`): the continuous surjections `f : Γ ↠ Y` whose induced map to `H × E` is the prescribed `β ∘ b_Γ`, i.e. `q_Y ∘ f = β ∘ b_Γ`. This is the subtype counted in Theorem 4.2; its cardinality is `e_Γ^β(𝒴)`.Q2Presentation.boundaryPackage_GQ2Q2Presentation.boundaryPackage_GQ2 : Q2Presentation.BoundaryPackage Q2Presentation.GQ2Profinite**The local boundary package** `boundaryPackage_GQ2 : BoundaryPackage G_{ℚ₂}` (manuscript Prop 3.14 `prop:compatiblemarking` for `Γ = G_{ℚ₂}`; plan Turn 4 §6), the `G_{ℚ₂}`-side instance of the uniform Stage-C boundary datum. * `tameMap`/`tame_surj`/`tame_nu` — the local tame quotient `G_{ℚ₂} ↠ T_A` with unramified marking `ν_loc`, from the axiom `gq2_tame_quotient` (Prop 3.2 + the local half of Prop `compatiblemarking`); * `pro2Map`/`pro2_surj`/`pro2_nu` — the local maximal pro-`2` quotient `G_{ℚ₂} ↠ Π` with the *same* unramified marking `ν_loc`, proved from the fully marked Labute comparison `labute_GQ2_maxPro2_marked` (`pro2Map_loc`, `pro2Map_loc_surjective`, `pro2Map_loc_nu`); * `nu := ν_loc` — the common unramified character through which both factor.(Q2Presentation.TorsorProgram.quotientFramedTargetQ2Presentation.TorsorProgram.quotientFramedTarget (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y) [hNn : N.Normal] (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) : Q2Presentation.BoundaryFramedTarget**The quotient framed target** `Y/N` (same `H`, same `E`, image wild kernel).YtQ2Presentation.BoundaryFramedTargetEQ2Presentation.Lifting.ElementaryKernel Yt.NQ2Presentation.Lifting.ElementaryKernel.N {Yt : Q2Presentation.BoundaryFramedTarget} (self : Q2Presentation.Lifting.ElementaryKernel Yt) : Subgroup Yt.Y⋯ ⋯) (Q2Presentation.TorsorProgram.quotientFrameQ2Presentation.TorsorProgram.quotientFrame (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y) [hNn : N.Normal] (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) (F : Q2Presentation.BoundaryFrame Yt) : Q2Presentation.BoundaryFrame (Q2Presentation.TorsorProgram.quotientFramedTarget Yt N hNLY hNθ)The frame transports verbatim (`H`, `E`, `α`, `ψ`, `β` unchanged).YtQ2Presentation.BoundaryFramedTargetEQ2Presentation.Lifting.ElementaryKernel Yt.NQ2Presentation.Lifting.ElementaryKernel.N {Yt : Q2Presentation.BoundaryFramedTarget} (self : Q2Presentation.Lifting.ElementaryKernel Yt) : Subgroup Yt.Y⋯ ⋯ FQ2Presentation.BoundaryFrame Yt)) (f₀Q2Presentation.TorsorProgram.liftHom Yt E.N ⋯ ⋯ Q2Presentation.boundaryPackage_GQ2 F g: Q2Presentation.TorsorProgram.liftHomQ2Presentation.TorsorProgram.liftHom (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y) [hNn : N.Normal] (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (F : Q2Presentation.BoundaryFrame Yt) (g : Q2Presentation.boundaryFramedSurj B (Q2Presentation.TorsorProgram.quotientFramedTarget Yt N hNLY hNθ) (Q2Presentation.TorsorProgram.quotientFrame Yt N hNLY hNθ F)) : Type**All framed lifts** of a child-framed surjection (surjectivity NOT imposed; the Frattini argument recovers it per use-site).YtQ2Presentation.BoundaryFramedTargetEQ2Presentation.Lifting.ElementaryKernel Yt.NQ2Presentation.Lifting.ElementaryKernel.N {Yt : Q2Presentation.BoundaryFramedTarget} (self : Q2Presentation.Lifting.ElementaryKernel Yt) : Subgroup Yt.Y⋯ ⋯ Q2Presentation.boundaryPackage_GQ2Q2Presentation.boundaryPackage_GQ2 : Q2Presentation.BoundaryPackage Q2Presentation.GQ2Profinite**The local boundary package** `boundaryPackage_GQ2 : BoundaryPackage G_{ℚ₂}` (manuscript Prop 3.14 `prop:compatiblemarking` for `Γ = G_{ℚ₂}`; plan Turn 4 §6), the `G_{ℚ₂}`-side instance of the uniform Stage-C boundary datum. * `tameMap`/`tame_surj`/`tame_nu` — the local tame quotient `G_{ℚ₂} ↠ T_A` with unramified marking `ν_loc`, from the axiom `gq2_tame_quotient` (Prop 3.2 + the local half of Prop `compatiblemarking`); * `pro2Map`/`pro2_surj`/`pro2_nu` — the local maximal pro-`2` quotient `G_{ℚ₂} ↠ Π` with the *same* unramified marking `ν_loc`, proved from the fully marked Labute comparison `labute_GQ2_maxPro2_marked` (`pro2Map_loc`, `pro2Map_loc_surjective`, `pro2Map_loc_nu`); * `nu := ν_loc` — the common unramified character through which both factor.FQ2Presentation.BoundaryFrame YtgQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GQ2 (Q2Presentation.TorsorProgram.quotientFramedTarget Yt E.N ⋯ ⋯) (Q2Presentation.TorsorProgram.quotientFrame Yt E.N ⋯ ⋯ F)) : Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number. If `α` is infinite, `Nat.card α = 0`.(Q2Presentation.TorsorProgram.Z1Q2Presentation.TorsorProgram.Z1 (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y) [hNn : N.Normal] (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (F : Q2Presentation.BoundaryFrame Yt) (g : Q2Presentation.boundaryFramedSurj B (Q2Presentation.TorsorProgram.quotientFramedTarget Yt N hNLY hNθ) (Q2Presentation.TorsorProgram.quotientFrame Yt N hNLY hNθ F)) (f₀ : Q2Presentation.TorsorProgram.liftHom Yt N hNLY hNθ B F g) : Type**The twisted cocycle set** relative to a base lift.YtQ2Presentation.BoundaryFramedTargetEQ2Presentation.Lifting.ElementaryKernel Yt.NQ2Presentation.Lifting.ElementaryKernel.N {Yt : Q2Presentation.BoundaryFramedTarget} (self : Q2Presentation.Lifting.ElementaryKernel Yt) : Subgroup Yt.Y⋯ ⋯ Q2Presentation.boundaryPackage_GQ2Q2Presentation.boundaryPackage_GQ2 : Q2Presentation.BoundaryPackage Q2Presentation.GQ2Profinite**The local boundary package** `boundaryPackage_GQ2 : BoundaryPackage G_{ℚ₂}` (manuscript Prop 3.14 `prop:compatiblemarking` for `Γ = G_{ℚ₂}`; plan Turn 4 §6), the `G_{ℚ₂}`-side instance of the uniform Stage-C boundary datum. * `tameMap`/`tame_surj`/`tame_nu` — the local tame quotient `G_{ℚ₂} ↠ T_A` with unramified marking `ν_loc`, from the axiom `gq2_tame_quotient` (Prop 3.2 + the local half of Prop `compatiblemarking`); * `pro2Map`/`pro2_surj`/`pro2_nu` — the local maximal pro-`2` quotient `G_{ℚ₂} ↠ Π` with the *same* unramified marking `ν_loc`, proved from the fully marked Labute comparison `labute_GQ2_maxPro2_marked` (`pro2Map_loc`, `pro2Map_loc_surjective`, `pro2Map_loc_nu`); * `nu := ν_loc` — the common unramified character through which both factor.FQ2Presentation.BoundaryFrame YtgQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GQ2 (Q2Presentation.TorsorProgram.quotientFramedTarget Yt E.N ⋯ ⋯) (Q2Presentation.TorsorProgram.quotientFrame Yt E.N ⋯ ⋯ F)f₀Q2Presentation.TorsorProgram.liftHom Yt E.N ⋯ ⋯ Q2Presentation.boundaryPackage_GQ2 F g) =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`. We use `a = b` as notation for `Eq a b`. A fundamental property of equality is that it is an equivalence relation. ``` variable (α : Type) (a b c d : α) variable (hab : a = b) (hcb : c = b) (hcd : c = d) example : a = d := Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd ``` Equality is much more than an equivalence relation, however. It has the important property that every assertion respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value. That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`. Example: ``` example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := Eq.subst h1 h2 example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := h1 ▸ h2 ``` The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`. For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality) Conventions for notations in identifiers: * The recommended spelling of `=` in identifiers is `eq`.8**`lem:commonscalars` (l.3791–3815), local half, at ANY order-2 elementary kernel**, as a THEOREM from the citable `q2_localduality_general` count clause (`localObstruction_count`): `|Z¹| = |N|² · |𝒳| = 2² · 2 = 8`. See the module docstring for the provenance note (Euler–Poincaré route, content-equal to the manuscript's `labute_GQ2_maxPro2_marked` route).
-
theoremdefined in Q2Presentation/Lifting/CoverEight.leancomplete
theorem Q2Presentation.Lifting.cover_Z1_card_gammaA {Yt
Q2Presentation.BoundaryFramedTarget: Q2Presentation.BoundaryFramedTargetQ2Presentation.BoundaryFramedTarget : Type 1A **boundary-framed marked target** `𝒴 = (Y, L_Y, π_Y, θ_Y)` (manuscript Definition 4.1, `def:framed`): a finite group `Y` with a normal finite `2`-subgroup `L_Y`, a surjection `π_Y : Y ↠ H` onto a finite *tame* quotient with kernel exactly `L_Y`, and an *elementary decoration* `θ_Y : Y → Multiplicative E` into the multiplicative image of a finite `𝔽₂`-vector space `E`. The pair `q_Y = (π_Y, θ_Y)` fixes both the tame quotient `Y / L_Y ≅ H` and the decoration.} [FiniteFinite.{u_3} (α : Sort u_3) : PropA type is `Finite` if it is in bijective correspondence to some `Fin n`. This is similar to `Fintype`, but `Finite` is a proposition rather than data. A particular benefit to this is that `Finite` instances are definitionally equal to one another (due to proof irrelevance) rather than being merely propositionally equal, and, furthermore, `Finite` instances generally avoid the need for `Decidable` instances. One other notable difference is that `Finite` allows there to be `Finite p` instances for all `p : Prop`, which is not allowed by `Fintype` due to universe constraints. An application of this is that `Finite (x ∈ s → β x)` follows from the general instance for pi types, assuming `[∀ x, Finite (β x)]`. Implementation note: this is a reason `Finite α` is not defined as `Nonempty (Fintype α)`. Every `Fintype` instance provides a `Finite` instance via `Finite.of_fintype`. Conversely, one can noncomputably create a `Fintype` instance from a `Finite` instance via `Fintype.ofFinite`. In a proof one might write ```lean have := Fintype.ofFinite α ``` to obtain such an instance. Do not write noncomputable `Fintype` instances; instead write `Finite` instances and use this `Fintype.ofFinite` interface. The `Fintype` instances should be relied upon to be computable for evaluation purposes. Theorems should use `Finite` instead of `Fintype`, unless definitions in the theorem statement require `Fintype`. Definitions should prefer `Finite` as well, unless it is important that the definitions are meant to be computable in the reduction or `#eval` sense.YtQ2Presentation.BoundaryFramedTarget.YQ2Presentation.BoundaryFramedTarget.Y (self : Q2Presentation.BoundaryFramedTarget) : TypeThe finite target group `Y`.] (EQ2Presentation.Lifting.ElementaryKernel Yt: Q2Presentation.Lifting.ElementaryKernelQ2Presentation.Lifting.ElementaryKernel (Yt : Q2Presentation.BoundaryFramedTarget) : TypeA normal subgroup of a framed target that is killed by the decoration, contained in the wild kernel, **abelian**, and of **exponent 2** — the shape of the chief kernels the cochain keeps quantify over.YtQ2Presentation.BoundaryFramedTarget) (hcardNat.card (Q2Presentation.Lifting.NAdd E) = 2: Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number. If `α` is infinite, `Nat.card α = 0`.(Q2Presentation.Lifting.NAddQ2Presentation.Lifting.NAdd {Yt : Q2Presentation.BoundaryFramedTarget} (E : Q2Presentation.Lifting.ElementaryKernel Yt) : TypeThe additive `F₂`-carrier of an elementary kernel.EQ2Presentation.Lifting.ElementaryKernel Yt) =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`. We use `a = b` as notation for `Eq a b`. A fundamental property of equality is that it is an equivalence relation. ``` variable (α : Type) (a b c d : α) variable (hab : a = b) (hcb : c = b) (hcd : c = d) example : a = d := Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd ``` Equality is much more than an equivalence relation, however. It has the important property that every assertion respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value. That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`. Example: ``` example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := Eq.subst h1 h2 example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := h1 ▸ h2 ``` The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`. For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality) Conventions for notations in identifiers: * The recommended spelling of `=` in identifiers is `eq`.2) (FQ2Presentation.BoundaryFrame Yt: Q2Presentation.BoundaryFrameQ2Presentation.BoundaryFrame (Yt : Q2Presentation.BoundaryFramedTarget) : TypeA **boundary frame** on a boundary-framed target `𝒴` (manuscript `eq:beta`): the fixed compatible data `α : 𝕋_tame ↠ H`, `ψ : Π → Multiplicative E`, and the induced `β : ∂_bd → H × Multiplicative E`. Surjectivity of `α` records that `H` really is a tame quotient (manuscript: "Fix a finite tame quotient `H`, an epimorphism `α : 𝕋_A ↠ H`").YtQ2Presentation.BoundaryFramedTarget) (gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GammaA (Q2Presentation.TorsorProgram.quotientFramedTarget Yt E.N ⋯ ⋯) (Q2Presentation.TorsorProgram.quotientFrame Yt E.N ⋯ ⋯ F): Q2Presentation.boundaryFramedSurjQ2Presentation.boundaryFramedSurj {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (Yt : Q2Presentation.BoundaryFramedTarget) (F : Q2Presentation.BoundaryFrame Yt) : TypeThe **boundary-framed surjections** `e_Γ^β(𝒴)` (manuscript `eq:eGamma`): the continuous surjections `f : Γ ↠ Y` whose induced map to `H × E` is the prescribed `β ∘ b_Γ`, i.e. `q_Y ∘ f = β ∘ b_Γ`. This is the subtype counted in Theorem 4.2; its cardinality is `e_Γ^β(𝒴)`.Q2Presentation.boundaryPackage_GammaAQ2Presentation.boundaryPackage_GammaA : Q2Presentation.BoundaryPackage Q2Presentation.GammaA**The candidate boundary package** (manuscript Prop 3.14, `prop:compatiblemarking`; plan Turn 4 §6). The Stage-C data of `Γ_A`: the common tame quotient `gammaTameMap`, the maximal pro-`2` quotient `p : Γ_A ⟶ Π`, and the common unramified character `ν = gammaTameMap ≫ ν_t`, through which both factor.(Q2Presentation.TorsorProgram.quotientFramedTargetQ2Presentation.TorsorProgram.quotientFramedTarget (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y) [hNn : N.Normal] (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) : Q2Presentation.BoundaryFramedTarget**The quotient framed target** `Y/N` (same `H`, same `E`, image wild kernel).YtQ2Presentation.BoundaryFramedTargetEQ2Presentation.Lifting.ElementaryKernel Yt.NQ2Presentation.Lifting.ElementaryKernel.N {Yt : Q2Presentation.BoundaryFramedTarget} (self : Q2Presentation.Lifting.ElementaryKernel Yt) : Subgroup Yt.Y⋯ ⋯) (Q2Presentation.TorsorProgram.quotientFrameQ2Presentation.TorsorProgram.quotientFrame (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y) [hNn : N.Normal] (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) (F : Q2Presentation.BoundaryFrame Yt) : Q2Presentation.BoundaryFrame (Q2Presentation.TorsorProgram.quotientFramedTarget Yt N hNLY hNθ)The frame transports verbatim (`H`, `E`, `α`, `ψ`, `β` unchanged).YtQ2Presentation.BoundaryFramedTargetEQ2Presentation.Lifting.ElementaryKernel Yt.NQ2Presentation.Lifting.ElementaryKernel.N {Yt : Q2Presentation.BoundaryFramedTarget} (self : Q2Presentation.Lifting.ElementaryKernel Yt) : Subgroup Yt.Y⋯ ⋯ FQ2Presentation.BoundaryFrame Yt)) (f₀Q2Presentation.TorsorProgram.liftHom Yt E.N ⋯ ⋯ Q2Presentation.boundaryPackage_GammaA F g: Q2Presentation.TorsorProgram.liftHomQ2Presentation.TorsorProgram.liftHom (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y) [hNn : N.Normal] (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (F : Q2Presentation.BoundaryFrame Yt) (g : Q2Presentation.boundaryFramedSurj B (Q2Presentation.TorsorProgram.quotientFramedTarget Yt N hNLY hNθ) (Q2Presentation.TorsorProgram.quotientFrame Yt N hNLY hNθ F)) : Type**All framed lifts** of a child-framed surjection (surjectivity NOT imposed; the Frattini argument recovers it per use-site).YtQ2Presentation.BoundaryFramedTargetEQ2Presentation.Lifting.ElementaryKernel Yt.NQ2Presentation.Lifting.ElementaryKernel.N {Yt : Q2Presentation.BoundaryFramedTarget} (self : Q2Presentation.Lifting.ElementaryKernel Yt) : Subgroup Yt.Y⋯ ⋯ Q2Presentation.boundaryPackage_GammaAQ2Presentation.boundaryPackage_GammaA : Q2Presentation.BoundaryPackage Q2Presentation.GammaA**The candidate boundary package** (manuscript Prop 3.14, `prop:compatiblemarking`; plan Turn 4 §6). The Stage-C data of `Γ_A`: the common tame quotient `gammaTameMap`, the maximal pro-`2` quotient `p : Γ_A ⟶ Π`, and the common unramified character `ν = gammaTameMap ≫ ν_t`, through which both factor.FQ2Presentation.BoundaryFrame YtgQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GammaA (Q2Presentation.TorsorProgram.quotientFramedTarget Yt E.N ⋯ ⋯) (Q2Presentation.TorsorProgram.quotientFrame Yt E.N ⋯ ⋯ F)) : Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number. If `α` is infinite, `Nat.card α = 0`.(Q2Presentation.TorsorProgram.Z1Q2Presentation.TorsorProgram.Z1 (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y) [hNn : N.Normal] (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (F : Q2Presentation.BoundaryFrame Yt) (g : Q2Presentation.boundaryFramedSurj B (Q2Presentation.TorsorProgram.quotientFramedTarget Yt N hNLY hNθ) (Q2Presentation.TorsorProgram.quotientFrame Yt N hNLY hNθ F)) (f₀ : Q2Presentation.TorsorProgram.liftHom Yt N hNLY hNθ B F g) : Type**The twisted cocycle set** relative to a base lift.YtQ2Presentation.BoundaryFramedTargetEQ2Presentation.Lifting.ElementaryKernel Yt.NQ2Presentation.Lifting.ElementaryKernel.N {Yt : Q2Presentation.BoundaryFramedTarget} (self : Q2Presentation.Lifting.ElementaryKernel Yt) : Subgroup Yt.Y⋯ ⋯ Q2Presentation.boundaryPackage_GammaAQ2Presentation.boundaryPackage_GammaA : Q2Presentation.BoundaryPackage Q2Presentation.GammaA**The candidate boundary package** (manuscript Prop 3.14, `prop:compatiblemarking`; plan Turn 4 §6). The Stage-C data of `Γ_A`: the common tame quotient `gammaTameMap`, the maximal pro-`2` quotient `p : Γ_A ⟶ Π`, and the common unramified character `ν = gammaTameMap ≫ ν_t`, through which both factor.FQ2Presentation.BoundaryFrame YtgQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GammaA (Q2Presentation.TorsorProgram.quotientFramedTarget Yt E.N ⋯ ⋯) (Q2Presentation.TorsorProgram.quotientFrame Yt E.N ⋯ ⋯ F)f₀Q2Presentation.TorsorProgram.liftHom Yt E.N ⋯ ⋯ Q2Presentation.boundaryPackage_GammaA F g) =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`. We use `a = b` as notation for `Eq a b`. A fundamental property of equality is that it is an equivalence relation. ``` variable (α : Type) (a b c d : α) variable (hab : a = b) (hcb : c = b) (hcd : c = d) example : a = d := Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd ``` Equality is much more than an equivalence relation, however. It has the important property that every assertion respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value. That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`. Example: ``` example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := Eq.subst h1 h2 example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := h1 ▸ h2 ``` The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`. For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality) Conventions for notations in identifiers: * The recommended spelling of `=` in identifiers is `eq`.8theorem Q2Presentation.Lifting.cover_Z1_card_gammaA {Yt
Q2Presentation.BoundaryFramedTarget: Q2Presentation.BoundaryFramedTargetQ2Presentation.BoundaryFramedTarget : Type 1A **boundary-framed marked target** `𝒴 = (Y, L_Y, π_Y, θ_Y)` (manuscript Definition 4.1, `def:framed`): a finite group `Y` with a normal finite `2`-subgroup `L_Y`, a surjection `π_Y : Y ↠ H` onto a finite *tame* quotient with kernel exactly `L_Y`, and an *elementary decoration* `θ_Y : Y → Multiplicative E` into the multiplicative image of a finite `𝔽₂`-vector space `E`. The pair `q_Y = (π_Y, θ_Y)` fixes both the tame quotient `Y / L_Y ≅ H` and the decoration.} [FiniteFinite.{u_3} (α : Sort u_3) : PropA type is `Finite` if it is in bijective correspondence to some `Fin n`. This is similar to `Fintype`, but `Finite` is a proposition rather than data. A particular benefit to this is that `Finite` instances are definitionally equal to one another (due to proof irrelevance) rather than being merely propositionally equal, and, furthermore, `Finite` instances generally avoid the need for `Decidable` instances. One other notable difference is that `Finite` allows there to be `Finite p` instances for all `p : Prop`, which is not allowed by `Fintype` due to universe constraints. An application of this is that `Finite (x ∈ s → β x)` follows from the general instance for pi types, assuming `[∀ x, Finite (β x)]`. Implementation note: this is a reason `Finite α` is not defined as `Nonempty (Fintype α)`. Every `Fintype` instance provides a `Finite` instance via `Finite.of_fintype`. Conversely, one can noncomputably create a `Fintype` instance from a `Finite` instance via `Fintype.ofFinite`. In a proof one might write ```lean have := Fintype.ofFinite α ``` to obtain such an instance. Do not write noncomputable `Fintype` instances; instead write `Finite` instances and use this `Fintype.ofFinite` interface. The `Fintype` instances should be relied upon to be computable for evaluation purposes. Theorems should use `Finite` instead of `Fintype`, unless definitions in the theorem statement require `Fintype`. Definitions should prefer `Finite` as well, unless it is important that the definitions are meant to be computable in the reduction or `#eval` sense.YtQ2Presentation.BoundaryFramedTarget.YQ2Presentation.BoundaryFramedTarget.Y (self : Q2Presentation.BoundaryFramedTarget) : TypeThe finite target group `Y`.] (EQ2Presentation.Lifting.ElementaryKernel Yt: Q2Presentation.Lifting.ElementaryKernelQ2Presentation.Lifting.ElementaryKernel (Yt : Q2Presentation.BoundaryFramedTarget) : TypeA normal subgroup of a framed target that is killed by the decoration, contained in the wild kernel, **abelian**, and of **exponent 2** — the shape of the chief kernels the cochain keeps quantify over.YtQ2Presentation.BoundaryFramedTarget) (hcardNat.card (Q2Presentation.Lifting.NAdd E) = 2: Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number. If `α` is infinite, `Nat.card α = 0`.(Q2Presentation.Lifting.NAddQ2Presentation.Lifting.NAdd {Yt : Q2Presentation.BoundaryFramedTarget} (E : Q2Presentation.Lifting.ElementaryKernel Yt) : TypeThe additive `F₂`-carrier of an elementary kernel.EQ2Presentation.Lifting.ElementaryKernel Yt) =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`. We use `a = b` as notation for `Eq a b`. A fundamental property of equality is that it is an equivalence relation. ``` variable (α : Type) (a b c d : α) variable (hab : a = b) (hcb : c = b) (hcd : c = d) example : a = d := Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd ``` Equality is much more than an equivalence relation, however. It has the important property that every assertion respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value. That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`. Example: ``` example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := Eq.subst h1 h2 example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := h1 ▸ h2 ``` The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`. For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality) Conventions for notations in identifiers: * The recommended spelling of `=` in identifiers is `eq`.2) (FQ2Presentation.BoundaryFrame Yt: Q2Presentation.BoundaryFrameQ2Presentation.BoundaryFrame (Yt : Q2Presentation.BoundaryFramedTarget) : TypeA **boundary frame** on a boundary-framed target `𝒴` (manuscript `eq:beta`): the fixed compatible data `α : 𝕋_tame ↠ H`, `ψ : Π → Multiplicative E`, and the induced `β : ∂_bd → H × Multiplicative E`. Surjectivity of `α` records that `H` really is a tame quotient (manuscript: "Fix a finite tame quotient `H`, an epimorphism `α : 𝕋_A ↠ H`").YtQ2Presentation.BoundaryFramedTarget) (gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GammaA (Q2Presentation.TorsorProgram.quotientFramedTarget Yt E.N ⋯ ⋯) (Q2Presentation.TorsorProgram.quotientFrame Yt E.N ⋯ ⋯ F): Q2Presentation.boundaryFramedSurjQ2Presentation.boundaryFramedSurj {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (Yt : Q2Presentation.BoundaryFramedTarget) (F : Q2Presentation.BoundaryFrame Yt) : TypeThe **boundary-framed surjections** `e_Γ^β(𝒴)` (manuscript `eq:eGamma`): the continuous surjections `f : Γ ↠ Y` whose induced map to `H × E` is the prescribed `β ∘ b_Γ`, i.e. `q_Y ∘ f = β ∘ b_Γ`. This is the subtype counted in Theorem 4.2; its cardinality is `e_Γ^β(𝒴)`.Q2Presentation.boundaryPackage_GammaAQ2Presentation.boundaryPackage_GammaA : Q2Presentation.BoundaryPackage Q2Presentation.GammaA**The candidate boundary package** (manuscript Prop 3.14, `prop:compatiblemarking`; plan Turn 4 §6). The Stage-C data of `Γ_A`: the common tame quotient `gammaTameMap`, the maximal pro-`2` quotient `p : Γ_A ⟶ Π`, and the common unramified character `ν = gammaTameMap ≫ ν_t`, through which both factor.(Q2Presentation.TorsorProgram.quotientFramedTargetQ2Presentation.TorsorProgram.quotientFramedTarget (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y) [hNn : N.Normal] (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) : Q2Presentation.BoundaryFramedTarget**The quotient framed target** `Y/N` (same `H`, same `E`, image wild kernel).YtQ2Presentation.BoundaryFramedTargetEQ2Presentation.Lifting.ElementaryKernel Yt.NQ2Presentation.Lifting.ElementaryKernel.N {Yt : Q2Presentation.BoundaryFramedTarget} (self : Q2Presentation.Lifting.ElementaryKernel Yt) : Subgroup Yt.Y⋯ ⋯) (Q2Presentation.TorsorProgram.quotientFrameQ2Presentation.TorsorProgram.quotientFrame (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y) [hNn : N.Normal] (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) (F : Q2Presentation.BoundaryFrame Yt) : Q2Presentation.BoundaryFrame (Q2Presentation.TorsorProgram.quotientFramedTarget Yt N hNLY hNθ)The frame transports verbatim (`H`, `E`, `α`, `ψ`, `β` unchanged).YtQ2Presentation.BoundaryFramedTargetEQ2Presentation.Lifting.ElementaryKernel Yt.NQ2Presentation.Lifting.ElementaryKernel.N {Yt : Q2Presentation.BoundaryFramedTarget} (self : Q2Presentation.Lifting.ElementaryKernel Yt) : Subgroup Yt.Y⋯ ⋯ FQ2Presentation.BoundaryFrame Yt)) (f₀Q2Presentation.TorsorProgram.liftHom Yt E.N ⋯ ⋯ Q2Presentation.boundaryPackage_GammaA F g: Q2Presentation.TorsorProgram.liftHomQ2Presentation.TorsorProgram.liftHom (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y) [hNn : N.Normal] (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (F : Q2Presentation.BoundaryFrame Yt) (g : Q2Presentation.boundaryFramedSurj B (Q2Presentation.TorsorProgram.quotientFramedTarget Yt N hNLY hNθ) (Q2Presentation.TorsorProgram.quotientFrame Yt N hNLY hNθ F)) : Type**All framed lifts** of a child-framed surjection (surjectivity NOT imposed; the Frattini argument recovers it per use-site).YtQ2Presentation.BoundaryFramedTargetEQ2Presentation.Lifting.ElementaryKernel Yt.NQ2Presentation.Lifting.ElementaryKernel.N {Yt : Q2Presentation.BoundaryFramedTarget} (self : Q2Presentation.Lifting.ElementaryKernel Yt) : Subgroup Yt.Y⋯ ⋯ Q2Presentation.boundaryPackage_GammaAQ2Presentation.boundaryPackage_GammaA : Q2Presentation.BoundaryPackage Q2Presentation.GammaA**The candidate boundary package** (manuscript Prop 3.14, `prop:compatiblemarking`; plan Turn 4 §6). The Stage-C data of `Γ_A`: the common tame quotient `gammaTameMap`, the maximal pro-`2` quotient `p : Γ_A ⟶ Π`, and the common unramified character `ν = gammaTameMap ≫ ν_t`, through which both factor.FQ2Presentation.BoundaryFrame YtgQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GammaA (Q2Presentation.TorsorProgram.quotientFramedTarget Yt E.N ⋯ ⋯) (Q2Presentation.TorsorProgram.quotientFrame Yt E.N ⋯ ⋯ F)) : Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number. If `α` is infinite, `Nat.card α = 0`.(Q2Presentation.TorsorProgram.Z1Q2Presentation.TorsorProgram.Z1 (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y) [hNn : N.Normal] (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (F : Q2Presentation.BoundaryFrame Yt) (g : Q2Presentation.boundaryFramedSurj B (Q2Presentation.TorsorProgram.quotientFramedTarget Yt N hNLY hNθ) (Q2Presentation.TorsorProgram.quotientFrame Yt N hNLY hNθ F)) (f₀ : Q2Presentation.TorsorProgram.liftHom Yt N hNLY hNθ B F g) : Type**The twisted cocycle set** relative to a base lift.YtQ2Presentation.BoundaryFramedTargetEQ2Presentation.Lifting.ElementaryKernel Yt.NQ2Presentation.Lifting.ElementaryKernel.N {Yt : Q2Presentation.BoundaryFramedTarget} (self : Q2Presentation.Lifting.ElementaryKernel Yt) : Subgroup Yt.Y⋯ ⋯ Q2Presentation.boundaryPackage_GammaAQ2Presentation.boundaryPackage_GammaA : Q2Presentation.BoundaryPackage Q2Presentation.GammaA**The candidate boundary package** (manuscript Prop 3.14, `prop:compatiblemarking`; plan Turn 4 §6). The Stage-C data of `Γ_A`: the common tame quotient `gammaTameMap`, the maximal pro-`2` quotient `p : Γ_A ⟶ Π`, and the common unramified character `ν = gammaTameMap ≫ ν_t`, through which both factor.FQ2Presentation.BoundaryFrame YtgQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GammaA (Q2Presentation.TorsorProgram.quotientFramedTarget Yt E.N ⋯ ⋯) (Q2Presentation.TorsorProgram.quotientFrame Yt E.N ⋯ ⋯ F)f₀Q2Presentation.TorsorProgram.liftHom Yt E.N ⋯ ⋯ Q2Presentation.boundaryPackage_GammaA F g) =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`. We use `a = b` as notation for `Eq a b`. A fundamental property of equality is that it is an equivalence relation. ``` variable (α : Type) (a b c d : α) variable (hab : a = b) (hcb : c = b) (hcd : c = d) example : a = d := Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd ``` Equality is much more than an equivalence relation, however. It has the important property that every assertion respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value. That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`. Example: ``` example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := Eq.subst h1 h2 example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := h1 ▸ h2 ``` The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`. For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality) Conventions for notations in identifiers: * The recommended spelling of `=` in identifiers is `eq`.8**`lem:commonscalars` (l.3791–3815), candidate half, at ANY order-2 elementary kernel** (the generic form of `scalarCover_Z1_card`, needed at P4's stratum covers and P7's phase covers): the framed twisted-cocycle count of `Γ_A` through a card-2 kernel is `|Hom(Γ_A, 𝔽₂)| = 2³ = 8` — the row-map kernel at the diagonal rows is the τ-vanishing tuple space `N³`.
-
theoremdefined in Q2Presentation/Lifting/ScalarObstruction.leancomplete
theorem Q2Presentation.Lifting.scalarCover_Z1_card {Yt
Q2Presentation.BoundaryFramedTarget: Q2Presentation.BoundaryFramedTargetQ2Presentation.BoundaryFramedTarget : Type 1A **boundary-framed marked target** `𝒴 = (Y, L_Y, π_Y, θ_Y)` (manuscript Definition 4.1, `def:framed`): a finite group `Y` with a normal finite `2`-subgroup `L_Y`, a surjection `π_Y : Y ↠ H` onto a finite *tame* quotient with kernel exactly `L_Y`, and an *elementary decoration* `θ_Y : Y → Multiplicative E` into the multiplicative image of a finite `𝔽₂`-vector space `E`. The pair `q_Y = (π_Y, θ_Y)` fixes both the tame quotient `Y / L_Y ≅ H` and the decoration.} [FiniteFinite.{u_3} (α : Sort u_3) : PropA type is `Finite` if it is in bijective correspondence to some `Fin n`. This is similar to `Fintype`, but `Finite` is a proposition rather than data. A particular benefit to this is that `Finite` instances are definitionally equal to one another (due to proof irrelevance) rather than being merely propositionally equal, and, furthermore, `Finite` instances generally avoid the need for `Decidable` instances. One other notable difference is that `Finite` allows there to be `Finite p` instances for all `p : Prop`, which is not allowed by `Fintype` due to universe constraints. An application of this is that `Finite (x ∈ s → β x)` follows from the general instance for pi types, assuming `[∀ x, Finite (β x)]`. Implementation note: this is a reason `Finite α` is not defined as `Nonempty (Fintype α)`. Every `Fintype` instance provides a `Finite` instance via `Finite.of_fintype`. Conversely, one can noncomputably create a `Fintype` instance from a `Finite` instance via `Fintype.ofFinite`. In a proof one might write ```lean have := Fintype.ofFinite α ``` to obtain such an instance. Do not write noncomputable `Fintype` instances; instead write `Finite` instances and use this `Fintype.ofFinite` interface. The `Fintype` instances should be relied upon to be computable for evaluation purposes. Theorems should use `Finite` instead of `Fintype`, unless definitions in the theorem statement require `Fintype`. Definitions should prefer `Finite` as well, unless it is important that the definitions are meant to be computable in the reduction or `#eval` sense.YtQ2Presentation.BoundaryFramedTarget.YQ2Presentation.BoundaryFramedTarget.Y (self : Q2Presentation.BoundaryFramedTarget) : TypeThe finite target group `Y`.] (EQ2Presentation.Lifting.ElementaryKernel Yt: Q2Presentation.Lifting.ElementaryKernelQ2Presentation.Lifting.ElementaryKernel (Yt : Q2Presentation.BoundaryFramedTarget) : TypeA normal subgroup of a framed target that is killed by the decoration, contained in the wild kernel, **abelian**, and of **exponent 2** — the shape of the chief kernels the cochain keeps quantify over.YtQ2Presentation.BoundaryFramedTarget) (FQ2Presentation.BoundaryFrame Yt: Q2Presentation.BoundaryFrameQ2Presentation.BoundaryFrame (Yt : Q2Presentation.BoundaryFramedTarget) : TypeA **boundary frame** on a boundary-framed target `𝒴` (manuscript `eq:beta`): the fixed compatible data `α : 𝕋_tame ↠ H`, `ψ : Π → Multiplicative E`, and the induced `β : ∂_bd → H × Multiplicative E`. Surjectivity of `α` records that `H` really is a tame quotient (manuscript: "Fix a finite tame quotient `H`, an epimorphism `α : 𝕋_A ↠ H`").YtQ2Presentation.BoundaryFramedTarget) (gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GammaA (Q2Presentation.TorsorProgram.quotientFramedTarget Yt E.N ⋯ ⋯) (Q2Presentation.TorsorProgram.quotientFrame Yt E.N ⋯ ⋯ F): Q2Presentation.boundaryFramedSurjQ2Presentation.boundaryFramedSurj {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (Yt : Q2Presentation.BoundaryFramedTarget) (F : Q2Presentation.BoundaryFrame Yt) : TypeThe **boundary-framed surjections** `e_Γ^β(𝒴)` (manuscript `eq:eGamma`): the continuous surjections `f : Γ ↠ Y` whose induced map to `H × E` is the prescribed `β ∘ b_Γ`, i.e. `q_Y ∘ f = β ∘ b_Γ`. This is the subtype counted in Theorem 4.2; its cardinality is `e_Γ^β(𝒴)`.Q2Presentation.boundaryPackage_GammaAQ2Presentation.boundaryPackage_GammaA : Q2Presentation.BoundaryPackage Q2Presentation.GammaA**The candidate boundary package** (manuscript Prop 3.14, `prop:compatiblemarking`; plan Turn 4 §6). The Stage-C data of `Γ_A`: the common tame quotient `gammaTameMap`, the maximal pro-`2` quotient `p : Γ_A ⟶ Π`, and the common unramified character `ν = gammaTameMap ≫ ν_t`, through which both factor.(Q2Presentation.TorsorProgram.quotientFramedTargetQ2Presentation.TorsorProgram.quotientFramedTarget (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y) [hNn : N.Normal] (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) : Q2Presentation.BoundaryFramedTarget**The quotient framed target** `Y/N` (same `H`, same `E`, image wild kernel).YtQ2Presentation.BoundaryFramedTargetEQ2Presentation.Lifting.ElementaryKernel Yt.NQ2Presentation.Lifting.ElementaryKernel.N {Yt : Q2Presentation.BoundaryFramedTarget} (self : Q2Presentation.Lifting.ElementaryKernel Yt) : Subgroup Yt.Y⋯ ⋯) (Q2Presentation.TorsorProgram.quotientFrameQ2Presentation.TorsorProgram.quotientFrame (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y) [hNn : N.Normal] (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) (F : Q2Presentation.BoundaryFrame Yt) : Q2Presentation.BoundaryFrame (Q2Presentation.TorsorProgram.quotientFramedTarget Yt N hNLY hNθ)The frame transports verbatim (`H`, `E`, `α`, `ψ`, `β` unchanged).YtQ2Presentation.BoundaryFramedTargetEQ2Presentation.Lifting.ElementaryKernel Yt.NQ2Presentation.Lifting.ElementaryKernel.N {Yt : Q2Presentation.BoundaryFramedTarget} (self : Q2Presentation.Lifting.ElementaryKernel Yt) : Subgroup Yt.Y⋯ ⋯ FQ2Presentation.BoundaryFrame Yt)) (lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E): Module.DualModule.Dual.{u_4, u_5} (R : Type u_4) (M : Type u_5) [Semiring R] [AddCommMonoid M] [Module R M] : Type (max u_5 u_4)The left dual space of an R-module M is the R-module of linear maps `M → R`.(ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.2) (Q2Presentation.Lifting.NAddQ2Presentation.Lifting.NAdd {Yt : Q2Presentation.BoundaryFramedTarget} (E : Q2Presentation.Lifting.ElementaryKernel Yt) : TypeThe additive `F₂`-carrier of an elementary kernel.EQ2Presentation.Lifting.ElementaryKernel Yt)) (hinvlam ∈ Q2Presentation.Lifting.conjInvDuals E: lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E)∈Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. Conventions for notations in identifiers: * The recommended spelling of `∈` in identifiers is `mem`.Q2Presentation.Lifting.conjInvDualsQ2Presentation.Lifting.conjInvDuals {Yt : Q2Presentation.BoundaryFramedTarget} (E : Q2Presentation.Lifting.ElementaryKernel Yt) : Submodule (ZMod 2) (Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E))The conjugation-invariant duals `X = (R^∨)^Y = (R^∨)^C` of an elementary kernel (consumer spelling of the manuscript's `𝒳_R`, §7 l.3720–3723).EQ2Presentation.Lifting.ElementaryKernel Yt) (hnelam ≠ 0: lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E)≠Ne.{u} {α : Sort u} (a b : α) : Prop`a ≠ b`, or `Ne a b` is defined as `¬ (a = b)` or `a = b → False`, and asserts that `a` and `b` are not equal. Conventions for notations in identifiers: * The recommended spelling of `≠` in identifiers is `ne`.0) (f₀Q2Presentation.Lifting.scalarCoverLiftHom E lam hinv Q2Presentation.boundaryPackage_GammaA F g: Q2Presentation.Lifting.scalarCoverLiftHomQ2Presentation.Lifting.scalarCoverLiftHom {Yt : Q2Presentation.BoundaryFramedTarget} [Finite Yt.Y] (E : Q2Presentation.Lifting.ElementaryKernel Yt) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E)) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals E) {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (F : Q2Presentation.BoundaryFrame Yt) (g : Q2Presentation.boundaryFramedSurj B (Q2Presentation.TorsorProgram.quotientFramedTarget Yt E.N ⋯ ⋯) (Q2Presentation.TorsorProgram.quotientFrame Yt E.N ⋯ ⋯ F)) : Type**Cover lifts of `g`** (`lem:obstructionseparation` l.4219–4223): framed homs `Γ ⟶ B_λ` over `g` — surjectivity NOT imposed (the manuscript's compatible lifts: `λ_*o` measures weak liftability; images are stratified by `eq:recursionR2`/`R3` later).EQ2Presentation.Lifting.ElementaryKernel YtlamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E)hinvlam ∈ Q2Presentation.Lifting.conjInvDuals EQ2Presentation.boundaryPackage_GammaAQ2Presentation.boundaryPackage_GammaA : Q2Presentation.BoundaryPackage Q2Presentation.GammaA**The candidate boundary package** (manuscript Prop 3.14, `prop:compatiblemarking`; plan Turn 4 §6). The Stage-C data of `Γ_A`: the common tame quotient `gammaTameMap`, the maximal pro-`2` quotient `p : Γ_A ⟶ Π`, and the common unramified character `ν = gammaTameMap ≫ ν_t`, through which both factor.FQ2Presentation.BoundaryFrame YtgQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GammaA (Q2Presentation.TorsorProgram.quotientFramedTarget Yt E.N ⋯ ⋯) (Q2Presentation.TorsorProgram.quotientFrame Yt E.N ⋯ ⋯ F)) : Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number. If `α` is infinite, `Nat.card α = 0`.(Q2Presentation.TorsorProgram.Z1Q2Presentation.TorsorProgram.Z1 (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y) [hNn : N.Normal] (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (F : Q2Presentation.BoundaryFrame Yt) (g : Q2Presentation.boundaryFramedSurj B (Q2Presentation.TorsorProgram.quotientFramedTarget Yt N hNLY hNθ) (Q2Presentation.TorsorProgram.quotientFrame Yt N hNLY hNθ F)) (f₀ : Q2Presentation.TorsorProgram.liftHom Yt N hNLY hNθ B F g) : Type**The twisted cocycle set** relative to a base lift.(Q2Presentation.Lifting.scalarCoverTargetQ2Presentation.Lifting.scalarCoverTarget {Yt : Q2Presentation.BoundaryFramedTarget} [Finite Yt.Y] (E : Q2Presentation.Lifting.ElementaryKernel Yt) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E)) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals E) : Q2Presentation.BoundaryFramedTarget**The scalar pushout target** `B_λ = Y/ker λ` as a framed target (same `H`, `E`, frame; `eq:targettower` refined by l.4219–4223).EQ2Presentation.Lifting.ElementaryKernel YtlamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E)hinvlam ∈ Q2Presentation.Lifting.conjInvDuals E) (Q2Presentation.Lifting.scalarRelKernelQ2Presentation.Lifting.scalarRelKernel {Yt : Q2Presentation.BoundaryFramedTarget} [Finite Yt.Y] (E : Q2Presentation.Lifting.ElementaryKernel Yt) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E)) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals E) : Q2Presentation.Lifting.ElementaryKernel (Q2Presentation.Lifting.scalarCoverTarget E lam hinv)**The relative kernel** `R/ker λ ≤ B_λ` — the deck kernel of the central double cover, as an elementary kernel of the cover target. It is `Subgroup.map`-spelled so Noether III applies on the nose.EQ2Presentation.Lifting.ElementaryKernel YtlamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E)hinvlam ∈ Q2Presentation.Lifting.conjInvDuals E).NQ2Presentation.Lifting.ElementaryKernel.N {Yt : Q2Presentation.BoundaryFramedTarget} (self : Q2Presentation.Lifting.ElementaryKernel Yt) : Subgroup Yt.Y⋯ ⋯ Q2Presentation.boundaryPackage_GammaAQ2Presentation.boundaryPackage_GammaA : Q2Presentation.BoundaryPackage Q2Presentation.GammaA**The candidate boundary package** (manuscript Prop 3.14, `prop:compatiblemarking`; plan Turn 4 §6). The Stage-C data of `Γ_A`: the common tame quotient `gammaTameMap`, the maximal pro-`2` quotient `p : Γ_A ⟶ Π`, and the common unramified character `ν = gammaTameMap ≫ ν_t`, through which both factor.(Q2Presentation.Lifting.scalarCoverFrameQ2Presentation.Lifting.scalarCoverFrame {Yt : Q2Presentation.BoundaryFramedTarget} [Finite Yt.Y] (E : Q2Presentation.Lifting.ElementaryKernel Yt) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E)) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals E) (F : Q2Presentation.BoundaryFrame Yt) : Q2Presentation.BoundaryFrame (Q2Presentation.Lifting.scalarCoverTarget E lam hinv)The frame transports verbatim to the scalar pushout target.EQ2Presentation.Lifting.ElementaryKernel YtlamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E)hinvlam ∈ Q2Presentation.Lifting.conjInvDuals EFQ2Presentation.BoundaryFrame Yt) (Q2Presentation.Lifting.scalarCoverChildQ2Presentation.Lifting.scalarCoverChild {Yt : Q2Presentation.BoundaryFramedTarget} [Finite Yt.Y] (E : Q2Presentation.Lifting.ElementaryKernel Yt) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E)) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals E) {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (F : Q2Presentation.BoundaryFrame Yt) (g : Q2Presentation.boundaryFramedSurj B (Q2Presentation.TorsorProgram.quotientFramedTarget Yt E.N ⋯ ⋯) (Q2Presentation.TorsorProgram.quotientFrame Yt E.N ⋯ ⋯ F)) : Q2Presentation.boundaryFramedSurj B (Q2Presentation.TorsorProgram.quotientFramedTarget (Q2Presentation.Lifting.scalarCoverTarget E lam hinv) (Q2Presentation.Lifting.scalarRelKernel E lam hinv).N ⋯ ⋯) (Q2Presentation.TorsorProgram.quotientFrame (Q2Presentation.Lifting.scalarCoverTarget E lam hinv) (Q2Presentation.Lifting.scalarRelKernel E lam hinv).N ⋯ ⋯ (Q2Presentation.Lifting.scalarCoverFrame E lam hinv F))**The child seen below the cover**: transport a child-framed surjection across the collapse `(B_λ)/(R/ker λ) ≃* Y/R`.EQ2Presentation.Lifting.ElementaryKernel YtlamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E)hinvlam ∈ Q2Presentation.Lifting.conjInvDuals EQ2Presentation.boundaryPackage_GammaAQ2Presentation.boundaryPackage_GammaA : Q2Presentation.BoundaryPackage Q2Presentation.GammaA**The candidate boundary package** (manuscript Prop 3.14, `prop:compatiblemarking`; plan Turn 4 §6). The Stage-C data of `Γ_A`: the common tame quotient `gammaTameMap`, the maximal pro-`2` quotient `p : Γ_A ⟶ Π`, and the common unramified character `ν = gammaTameMap ≫ ν_t`, through which both factor.FQ2Presentation.BoundaryFrame YtgQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GammaA (Q2Presentation.TorsorProgram.quotientFramedTarget Yt E.N ⋯ ⋯) (Q2Presentation.TorsorProgram.quotientFrame Yt E.N ⋯ ⋯ F)) f₀Q2Presentation.Lifting.scalarCoverLiftHom E lam hinv Q2Presentation.boundaryPackage_GammaA F g) =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`. We use `a = b` as notation for `Eq a b`. A fundamental property of equality is that it is an equivalence relation. ``` variable (α : Type) (a b c d : α) variable (hab : a = b) (hcb : c = b) (hcd : c = d) example : a = d := Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd ``` Equality is much more than an equivalence relation, however. It has the important property that every assertion respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value. That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`. Example: ``` example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := Eq.subst h1 h2 example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := h1 ▸ h2 ``` The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`. For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality) Conventions for notations in identifiers: * The recommended spelling of `=` in identifiers is `eq`.8theorem Q2Presentation.Lifting.scalarCover_Z1_card {Yt
Q2Presentation.BoundaryFramedTarget: Q2Presentation.BoundaryFramedTargetQ2Presentation.BoundaryFramedTarget : Type 1A **boundary-framed marked target** `𝒴 = (Y, L_Y, π_Y, θ_Y)` (manuscript Definition 4.1, `def:framed`): a finite group `Y` with a normal finite `2`-subgroup `L_Y`, a surjection `π_Y : Y ↠ H` onto a finite *tame* quotient with kernel exactly `L_Y`, and an *elementary decoration* `θ_Y : Y → Multiplicative E` into the multiplicative image of a finite `𝔽₂`-vector space `E`. The pair `q_Y = (π_Y, θ_Y)` fixes both the tame quotient `Y / L_Y ≅ H` and the decoration.} [FiniteFinite.{u_3} (α : Sort u_3) : PropA type is `Finite` if it is in bijective correspondence to some `Fin n`. This is similar to `Fintype`, but `Finite` is a proposition rather than data. A particular benefit to this is that `Finite` instances are definitionally equal to one another (due to proof irrelevance) rather than being merely propositionally equal, and, furthermore, `Finite` instances generally avoid the need for `Decidable` instances. One other notable difference is that `Finite` allows there to be `Finite p` instances for all `p : Prop`, which is not allowed by `Fintype` due to universe constraints. An application of this is that `Finite (x ∈ s → β x)` follows from the general instance for pi types, assuming `[∀ x, Finite (β x)]`. Implementation note: this is a reason `Finite α` is not defined as `Nonempty (Fintype α)`. Every `Fintype` instance provides a `Finite` instance via `Finite.of_fintype`. Conversely, one can noncomputably create a `Fintype` instance from a `Finite` instance via `Fintype.ofFinite`. In a proof one might write ```lean have := Fintype.ofFinite α ``` to obtain such an instance. Do not write noncomputable `Fintype` instances; instead write `Finite` instances and use this `Fintype.ofFinite` interface. The `Fintype` instances should be relied upon to be computable for evaluation purposes. Theorems should use `Finite` instead of `Fintype`, unless definitions in the theorem statement require `Fintype`. Definitions should prefer `Finite` as well, unless it is important that the definitions are meant to be computable in the reduction or `#eval` sense.YtQ2Presentation.BoundaryFramedTarget.YQ2Presentation.BoundaryFramedTarget.Y (self : Q2Presentation.BoundaryFramedTarget) : TypeThe finite target group `Y`.] (EQ2Presentation.Lifting.ElementaryKernel Yt: Q2Presentation.Lifting.ElementaryKernelQ2Presentation.Lifting.ElementaryKernel (Yt : Q2Presentation.BoundaryFramedTarget) : TypeA normal subgroup of a framed target that is killed by the decoration, contained in the wild kernel, **abelian**, and of **exponent 2** — the shape of the chief kernels the cochain keeps quantify over.YtQ2Presentation.BoundaryFramedTarget) (FQ2Presentation.BoundaryFrame Yt: Q2Presentation.BoundaryFrameQ2Presentation.BoundaryFrame (Yt : Q2Presentation.BoundaryFramedTarget) : TypeA **boundary frame** on a boundary-framed target `𝒴` (manuscript `eq:beta`): the fixed compatible data `α : 𝕋_tame ↠ H`, `ψ : Π → Multiplicative E`, and the induced `β : ∂_bd → H × Multiplicative E`. Surjectivity of `α` records that `H` really is a tame quotient (manuscript: "Fix a finite tame quotient `H`, an epimorphism `α : 𝕋_A ↠ H`").YtQ2Presentation.BoundaryFramedTarget) (gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GammaA (Q2Presentation.TorsorProgram.quotientFramedTarget Yt E.N ⋯ ⋯) (Q2Presentation.TorsorProgram.quotientFrame Yt E.N ⋯ ⋯ F): Q2Presentation.boundaryFramedSurjQ2Presentation.boundaryFramedSurj {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (Yt : Q2Presentation.BoundaryFramedTarget) (F : Q2Presentation.BoundaryFrame Yt) : TypeThe **boundary-framed surjections** `e_Γ^β(𝒴)` (manuscript `eq:eGamma`): the continuous surjections `f : Γ ↠ Y` whose induced map to `H × E` is the prescribed `β ∘ b_Γ`, i.e. `q_Y ∘ f = β ∘ b_Γ`. This is the subtype counted in Theorem 4.2; its cardinality is `e_Γ^β(𝒴)`.Q2Presentation.boundaryPackage_GammaAQ2Presentation.boundaryPackage_GammaA : Q2Presentation.BoundaryPackage Q2Presentation.GammaA**The candidate boundary package** (manuscript Prop 3.14, `prop:compatiblemarking`; plan Turn 4 §6). The Stage-C data of `Γ_A`: the common tame quotient `gammaTameMap`, the maximal pro-`2` quotient `p : Γ_A ⟶ Π`, and the common unramified character `ν = gammaTameMap ≫ ν_t`, through which both factor.(Q2Presentation.TorsorProgram.quotientFramedTargetQ2Presentation.TorsorProgram.quotientFramedTarget (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y) [hNn : N.Normal] (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) : Q2Presentation.BoundaryFramedTarget**The quotient framed target** `Y/N` (same `H`, same `E`, image wild kernel).YtQ2Presentation.BoundaryFramedTargetEQ2Presentation.Lifting.ElementaryKernel Yt.NQ2Presentation.Lifting.ElementaryKernel.N {Yt : Q2Presentation.BoundaryFramedTarget} (self : Q2Presentation.Lifting.ElementaryKernel Yt) : Subgroup Yt.Y⋯ ⋯) (Q2Presentation.TorsorProgram.quotientFrameQ2Presentation.TorsorProgram.quotientFrame (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y) [hNn : N.Normal] (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) (F : Q2Presentation.BoundaryFrame Yt) : Q2Presentation.BoundaryFrame (Q2Presentation.TorsorProgram.quotientFramedTarget Yt N hNLY hNθ)The frame transports verbatim (`H`, `E`, `α`, `ψ`, `β` unchanged).YtQ2Presentation.BoundaryFramedTargetEQ2Presentation.Lifting.ElementaryKernel Yt.NQ2Presentation.Lifting.ElementaryKernel.N {Yt : Q2Presentation.BoundaryFramedTarget} (self : Q2Presentation.Lifting.ElementaryKernel Yt) : Subgroup Yt.Y⋯ ⋯ FQ2Presentation.BoundaryFrame Yt)) (lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E): Module.DualModule.Dual.{u_4, u_5} (R : Type u_4) (M : Type u_5) [Semiring R] [AddCommMonoid M] [Module R M] : Type (max u_5 u_4)The left dual space of an R-module M is the R-module of linear maps `M → R`.(ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.2) (Q2Presentation.Lifting.NAddQ2Presentation.Lifting.NAdd {Yt : Q2Presentation.BoundaryFramedTarget} (E : Q2Presentation.Lifting.ElementaryKernel Yt) : TypeThe additive `F₂`-carrier of an elementary kernel.EQ2Presentation.Lifting.ElementaryKernel Yt)) (hinvlam ∈ Q2Presentation.Lifting.conjInvDuals E: lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E)∈Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. Conventions for notations in identifiers: * The recommended spelling of `∈` in identifiers is `mem`.Q2Presentation.Lifting.conjInvDualsQ2Presentation.Lifting.conjInvDuals {Yt : Q2Presentation.BoundaryFramedTarget} (E : Q2Presentation.Lifting.ElementaryKernel Yt) : Submodule (ZMod 2) (Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E))The conjugation-invariant duals `X = (R^∨)^Y = (R^∨)^C` of an elementary kernel (consumer spelling of the manuscript's `𝒳_R`, §7 l.3720–3723).EQ2Presentation.Lifting.ElementaryKernel Yt) (hnelam ≠ 0: lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E)≠Ne.{u} {α : Sort u} (a b : α) : Prop`a ≠ b`, or `Ne a b` is defined as `¬ (a = b)` or `a = b → False`, and asserts that `a` and `b` are not equal. Conventions for notations in identifiers: * The recommended spelling of `≠` in identifiers is `ne`.0) (f₀Q2Presentation.Lifting.scalarCoverLiftHom E lam hinv Q2Presentation.boundaryPackage_GammaA F g: Q2Presentation.Lifting.scalarCoverLiftHomQ2Presentation.Lifting.scalarCoverLiftHom {Yt : Q2Presentation.BoundaryFramedTarget} [Finite Yt.Y] (E : Q2Presentation.Lifting.ElementaryKernel Yt) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E)) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals E) {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (F : Q2Presentation.BoundaryFrame Yt) (g : Q2Presentation.boundaryFramedSurj B (Q2Presentation.TorsorProgram.quotientFramedTarget Yt E.N ⋯ ⋯) (Q2Presentation.TorsorProgram.quotientFrame Yt E.N ⋯ ⋯ F)) : Type**Cover lifts of `g`** (`lem:obstructionseparation` l.4219–4223): framed homs `Γ ⟶ B_λ` over `g` — surjectivity NOT imposed (the manuscript's compatible lifts: `λ_*o` measures weak liftability; images are stratified by `eq:recursionR2`/`R3` later).EQ2Presentation.Lifting.ElementaryKernel YtlamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E)hinvlam ∈ Q2Presentation.Lifting.conjInvDuals EQ2Presentation.boundaryPackage_GammaAQ2Presentation.boundaryPackage_GammaA : Q2Presentation.BoundaryPackage Q2Presentation.GammaA**The candidate boundary package** (manuscript Prop 3.14, `prop:compatiblemarking`; plan Turn 4 §6). The Stage-C data of `Γ_A`: the common tame quotient `gammaTameMap`, the maximal pro-`2` quotient `p : Γ_A ⟶ Π`, and the common unramified character `ν = gammaTameMap ≫ ν_t`, through which both factor.FQ2Presentation.BoundaryFrame YtgQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GammaA (Q2Presentation.TorsorProgram.quotientFramedTarget Yt E.N ⋯ ⋯) (Q2Presentation.TorsorProgram.quotientFrame Yt E.N ⋯ ⋯ F)) : Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number. If `α` is infinite, `Nat.card α = 0`.(Q2Presentation.TorsorProgram.Z1Q2Presentation.TorsorProgram.Z1 (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y) [hNn : N.Normal] (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (F : Q2Presentation.BoundaryFrame Yt) (g : Q2Presentation.boundaryFramedSurj B (Q2Presentation.TorsorProgram.quotientFramedTarget Yt N hNLY hNθ) (Q2Presentation.TorsorProgram.quotientFrame Yt N hNLY hNθ F)) (f₀ : Q2Presentation.TorsorProgram.liftHom Yt N hNLY hNθ B F g) : Type**The twisted cocycle set** relative to a base lift.(Q2Presentation.Lifting.scalarCoverTargetQ2Presentation.Lifting.scalarCoverTarget {Yt : Q2Presentation.BoundaryFramedTarget} [Finite Yt.Y] (E : Q2Presentation.Lifting.ElementaryKernel Yt) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E)) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals E) : Q2Presentation.BoundaryFramedTarget**The scalar pushout target** `B_λ = Y/ker λ` as a framed target (same `H`, `E`, frame; `eq:targettower` refined by l.4219–4223).EQ2Presentation.Lifting.ElementaryKernel YtlamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E)hinvlam ∈ Q2Presentation.Lifting.conjInvDuals E) (Q2Presentation.Lifting.scalarRelKernelQ2Presentation.Lifting.scalarRelKernel {Yt : Q2Presentation.BoundaryFramedTarget} [Finite Yt.Y] (E : Q2Presentation.Lifting.ElementaryKernel Yt) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E)) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals E) : Q2Presentation.Lifting.ElementaryKernel (Q2Presentation.Lifting.scalarCoverTarget E lam hinv)**The relative kernel** `R/ker λ ≤ B_λ` — the deck kernel of the central double cover, as an elementary kernel of the cover target. It is `Subgroup.map`-spelled so Noether III applies on the nose.EQ2Presentation.Lifting.ElementaryKernel YtlamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E)hinvlam ∈ Q2Presentation.Lifting.conjInvDuals E).NQ2Presentation.Lifting.ElementaryKernel.N {Yt : Q2Presentation.BoundaryFramedTarget} (self : Q2Presentation.Lifting.ElementaryKernel Yt) : Subgroup Yt.Y⋯ ⋯ Q2Presentation.boundaryPackage_GammaAQ2Presentation.boundaryPackage_GammaA : Q2Presentation.BoundaryPackage Q2Presentation.GammaA**The candidate boundary package** (manuscript Prop 3.14, `prop:compatiblemarking`; plan Turn 4 §6). The Stage-C data of `Γ_A`: the common tame quotient `gammaTameMap`, the maximal pro-`2` quotient `p : Γ_A ⟶ Π`, and the common unramified character `ν = gammaTameMap ≫ ν_t`, through which both factor.(Q2Presentation.Lifting.scalarCoverFrameQ2Presentation.Lifting.scalarCoverFrame {Yt : Q2Presentation.BoundaryFramedTarget} [Finite Yt.Y] (E : Q2Presentation.Lifting.ElementaryKernel Yt) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E)) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals E) (F : Q2Presentation.BoundaryFrame Yt) : Q2Presentation.BoundaryFrame (Q2Presentation.Lifting.scalarCoverTarget E lam hinv)The frame transports verbatim to the scalar pushout target.EQ2Presentation.Lifting.ElementaryKernel YtlamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E)hinvlam ∈ Q2Presentation.Lifting.conjInvDuals EFQ2Presentation.BoundaryFrame Yt) (Q2Presentation.Lifting.scalarCoverChildQ2Presentation.Lifting.scalarCoverChild {Yt : Q2Presentation.BoundaryFramedTarget} [Finite Yt.Y] (E : Q2Presentation.Lifting.ElementaryKernel Yt) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E)) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals E) {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (F : Q2Presentation.BoundaryFrame Yt) (g : Q2Presentation.boundaryFramedSurj B (Q2Presentation.TorsorProgram.quotientFramedTarget Yt E.N ⋯ ⋯) (Q2Presentation.TorsorProgram.quotientFrame Yt E.N ⋯ ⋯ F)) : Q2Presentation.boundaryFramedSurj B (Q2Presentation.TorsorProgram.quotientFramedTarget (Q2Presentation.Lifting.scalarCoverTarget E lam hinv) (Q2Presentation.Lifting.scalarRelKernel E lam hinv).N ⋯ ⋯) (Q2Presentation.TorsorProgram.quotientFrame (Q2Presentation.Lifting.scalarCoverTarget E lam hinv) (Q2Presentation.Lifting.scalarRelKernel E lam hinv).N ⋯ ⋯ (Q2Presentation.Lifting.scalarCoverFrame E lam hinv F))**The child seen below the cover**: transport a child-framed surjection across the collapse `(B_λ)/(R/ker λ) ≃* Y/R`.EQ2Presentation.Lifting.ElementaryKernel YtlamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E)hinvlam ∈ Q2Presentation.Lifting.conjInvDuals EQ2Presentation.boundaryPackage_GammaAQ2Presentation.boundaryPackage_GammaA : Q2Presentation.BoundaryPackage Q2Presentation.GammaA**The candidate boundary package** (manuscript Prop 3.14, `prop:compatiblemarking`; plan Turn 4 §6). The Stage-C data of `Γ_A`: the common tame quotient `gammaTameMap`, the maximal pro-`2` quotient `p : Γ_A ⟶ Π`, and the common unramified character `ν = gammaTameMap ≫ ν_t`, through which both factor.FQ2Presentation.BoundaryFrame YtgQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GammaA (Q2Presentation.TorsorProgram.quotientFramedTarget Yt E.N ⋯ ⋯) (Q2Presentation.TorsorProgram.quotientFrame Yt E.N ⋯ ⋯ F)) f₀Q2Presentation.Lifting.scalarCoverLiftHom E lam hinv Q2Presentation.boundaryPackage_GammaA F g) =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`. We use `a = b` as notation for `Eq a b`. A fundamental property of equality is that it is an equivalence relation. ``` variable (α : Type) (a b c d : α) variable (hab : a = b) (hcb : c = b) (hcd : c = d) example : a = d := Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd ``` Equality is much more than an equivalence relation, however. It has the important property that every assertion respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value. That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`. Example: ``` example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := Eq.subst h1 h2 example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := h1 ▸ h2 ``` The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`. For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality) Conventions for notations in identifiers: * The recommended spelling of `=` in identifiers is `eq`.8Optional P2 prep (`lem:commonscalars` l.3791–3815, candidate half): the cover-lift torsor has size `|Hom(Γ_A, 𝔽₂)| = 8` — the row-map kernel at the diagonal rows is the τ-vanishing tuple space `(R/ker λ)³`.
-
Q2Presentation.Induction.liftPartitionCardinality_of_liftPartition[complete] -
Q2Presentation.Induction.sec7_scalarCoverPartition_gammaA[complete] -
Q2Presentation.Induction.sec7_scalarCoverPartition_gq2[complete] -
Q2Presentation.Lifting.cocycleCoverTarget[complete] -
Q2Presentation.TorsorProgram.coverLiftTotal[complete]
Lemma 8.3 of the paper (Central-cover exact-image transform).
Let \mathcal Y=(Y,L_Y,\pi_Y,\theta_Y) be boundary-framed and let
p:\widetilde Y\twoheadrightarrow Y
be a central double cover. Give it the pulled-back structure
\widetilde L=p^{-1}(L_Y), \qquad \widetilde\pi=\pi_Yp, \qquad \widetilde\theta=\theta_Yp,
and assume the central kernel lies in \ker(\widetilde\pi,\widetilde\theta).
Fix an exact-image subgroup J\le Y projecting onto H. If
u_\Gamma^\beta(p,J) counts boundary-framed exact-image maps to J whose
pullback cover is split, then
8u_\Gamma^\beta(p,J) =\sum_{\substack{\widetilde J\le p^{-1}(J)\\p(\widetilde J)=J}} e_\Gamma^\beta(\widetilde J,\widetilde J\cap\widetilde L, \widetilde\pi|_{\widetilde J}, \widetilde\theta|_{\widetilde J}).
Every term on the right is therefore an ordinary exact-image object in the same global boundary-framed category.
Lean code for Lemma8.3●5 declarations
Associated Lean declarations
-
Q2Presentation.Induction.liftPartitionCardinality_of_liftPartition[complete]
-
Q2Presentation.Induction.sec7_scalarCoverPartition_gammaA[complete]
-
Q2Presentation.Induction.sec7_scalarCoverPartition_gq2[complete]
-
Q2Presentation.Lifting.cocycleCoverTarget[complete]
-
Q2Presentation.TorsorProgram.coverLiftTotal[complete]
-
Q2Presentation.Induction.liftPartitionCardinality_of_liftPartition[complete] -
Q2Presentation.Induction.sec7_scalarCoverPartition_gammaA[complete] -
Q2Presentation.Induction.sec7_scalarCoverPartition_gq2[complete] -
Q2Presentation.Lifting.cocycleCoverTarget[complete] -
Q2Presentation.TorsorProgram.coverLiftTotal[complete]
-
theoremdefined in Q2Presentation/Induction/CandidateLiftPartitionCardinality.leancomplete
theorem Q2Presentation.Induction.liftPartitionCardinality_of_liftPartition {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|`.} (BQ2Presentation.Induction.MinimalBlock p: Q2Presentation.Induction.MinimalBlockQ2Presentation.Induction.MinimalBlock (p : Q2Presentation.Induction.FramedPair) : Type 1**The §7 minimal non-scalar block.** Source-uniform module-level data of the manuscript tower (`eq:targettower`), with the deep group/representation inputs of `lem:simplehead`/`lem:collapse`/`prop:simpleheaddet` isolated as documented fields.pQ2Presentation.Induction.FramedPair) (SType: TypeA type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`.) (OQ2Presentation.Induction.CentralCoverSourceObstructionData B S: Q2Presentation.Induction.CentralCoverSourceObstructionDataQ2Presentation.Induction.CentralCoverSourceObstructionData {p : Q2Presentation.Induction.FramedPair} (B : Q2Presentation.Induction.MinimalBlock p) (S : Type) : Type 1Source-specific exact-image obstruction index and obstruction map. Manuscript anchors: `def:Xgamma`, `lem:obstructionseparation`, and the `o_R : X_Gamma(B) -> O_R` input to `prop:finalfourier`.BQ2Presentation.Induction.MinimalBlock pSType) (ZQ2Presentation.Induction.CentralCoverSourceCocycleData B: Q2Presentation.Induction.CentralCoverSourceCocycleDataQ2Presentation.Induction.CentralCoverSourceCocycleData {p : Q2Presentation.Induction.FramedPair} (B : Q2Presentation.Induction.MinimalBlock p) : Type 1Source-specific `Z^1_Gamma(R)` group with the common size `z_R`. Manuscript anchors: `lem:affinelifting`, `eq:mumultiplicity`, and the source-interface lift-multiplicity comparison.BQ2Presentation.Induction.MinimalBlock p) (FQ2Presentation.Induction.CentralCoverSourceLiftFibers B S O Z: Q2Presentation.Induction.CentralCoverSourceLiftFibersQ2Presentation.Induction.CentralCoverSourceLiftFibers {p : Q2Presentation.Induction.FramedPair} (B : Q2Presentation.Induction.MinimalBlock p) (S : Type) (O : Q2Presentation.Induction.CentralCoverSourceObstructionData B S) (Z : Q2Presentation.Induction.CentralCoverSourceCocycleData B) : Type 1Lift fibres over unobstructed points, before partitioning the global boundary-framed surjection set. Manuscript anchor: `lem:affinelifting`.BQ2Presentation.Induction.MinimalBlock pSTypeOQ2Presentation.Induction.CentralCoverSourceObstructionData B SZQ2Presentation.Induction.CentralCoverSourceCocycleData B) (PQ2Presentation.Induction.CentralCoverSourceLiftPartition B S O Z F: Q2Presentation.Induction.CentralCoverSourceLiftPartitionQ2Presentation.Induction.CentralCoverSourceLiftPartition {p : Q2Presentation.Induction.FramedPair} (B : Q2Presentation.Induction.MinimalBlock p) (S : Type) (O : Q2Presentation.Induction.CentralCoverSourceObstructionData B S) (Z : Q2Presentation.Induction.CentralCoverSourceCocycleData B) (F : Q2Presentation.Induction.CentralCoverSourceLiftFibers B S O Z) : TypeExact-image partition of the global surjection set by the unobstructed lift fibres. Manuscript anchors: `lem:covertransform` and `prop:finalfourier`, including Frattini surjectivity of the final `R`-lifts.BQ2Presentation.Induction.MinimalBlock pSTypeOQ2Presentation.Induction.CentralCoverSourceObstructionData B SZQ2Presentation.Induction.CentralCoverSourceCocycleData BFQ2Presentation.Induction.CentralCoverSourceLiftFibers B S O Z) : Q2Presentation.Induction.CentralCoverSourceLiftPartitionCardinalityQ2Presentation.Induction.CentralCoverSourceLiftPartitionCardinality {p : Q2Presentation.Induction.FramedPair} (B : Q2Presentation.Induction.MinimalBlock p) (S : Type) (O : Q2Presentation.Induction.CentralCoverSourceObstructionData B S) (Z : Q2Presentation.Induction.CentralCoverSourceCocycleData B) (F : Q2Presentation.Induction.CentralCoverSourceLiftFibers B S O Z) : PropCardinal form of the exact-image lift partition. This is the remaining candidate finite bookkeeping statement: the actual maps and the disjoint union of unobstructed lift fibres have the same finite cardinality.BQ2Presentation.Induction.MinimalBlock pSTypeOQ2Presentation.Induction.CentralCoverSourceObstructionData B SZQ2Presentation.Induction.CentralCoverSourceCocycleData BFQ2Presentation.Induction.CentralCoverSourceLiftFibers B S O Ztheorem Q2Presentation.Induction.liftPartitionCardinality_of_liftPartition {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|`.} (BQ2Presentation.Induction.MinimalBlock p: Q2Presentation.Induction.MinimalBlockQ2Presentation.Induction.MinimalBlock (p : Q2Presentation.Induction.FramedPair) : Type 1**The §7 minimal non-scalar block.** Source-uniform module-level data of the manuscript tower (`eq:targettower`), with the deep group/representation inputs of `lem:simplehead`/`lem:collapse`/`prop:simpleheaddet` isolated as documented fields.pQ2Presentation.Induction.FramedPair) (SType: TypeA type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`.) (OQ2Presentation.Induction.CentralCoverSourceObstructionData B S: Q2Presentation.Induction.CentralCoverSourceObstructionDataQ2Presentation.Induction.CentralCoverSourceObstructionData {p : Q2Presentation.Induction.FramedPair} (B : Q2Presentation.Induction.MinimalBlock p) (S : Type) : Type 1Source-specific exact-image obstruction index and obstruction map. Manuscript anchors: `def:Xgamma`, `lem:obstructionseparation`, and the `o_R : X_Gamma(B) -> O_R` input to `prop:finalfourier`.BQ2Presentation.Induction.MinimalBlock pSType) (ZQ2Presentation.Induction.CentralCoverSourceCocycleData B: Q2Presentation.Induction.CentralCoverSourceCocycleDataQ2Presentation.Induction.CentralCoverSourceCocycleData {p : Q2Presentation.Induction.FramedPair} (B : Q2Presentation.Induction.MinimalBlock p) : Type 1Source-specific `Z^1_Gamma(R)` group with the common size `z_R`. Manuscript anchors: `lem:affinelifting`, `eq:mumultiplicity`, and the source-interface lift-multiplicity comparison.BQ2Presentation.Induction.MinimalBlock p) (FQ2Presentation.Induction.CentralCoverSourceLiftFibers B S O Z: Q2Presentation.Induction.CentralCoverSourceLiftFibersQ2Presentation.Induction.CentralCoverSourceLiftFibers {p : Q2Presentation.Induction.FramedPair} (B : Q2Presentation.Induction.MinimalBlock p) (S : Type) (O : Q2Presentation.Induction.CentralCoverSourceObstructionData B S) (Z : Q2Presentation.Induction.CentralCoverSourceCocycleData B) : Type 1Lift fibres over unobstructed points, before partitioning the global boundary-framed surjection set. Manuscript anchor: `lem:affinelifting`.BQ2Presentation.Induction.MinimalBlock pSTypeOQ2Presentation.Induction.CentralCoverSourceObstructionData B SZQ2Presentation.Induction.CentralCoverSourceCocycleData B) (PQ2Presentation.Induction.CentralCoverSourceLiftPartition B S O Z F: Q2Presentation.Induction.CentralCoverSourceLiftPartitionQ2Presentation.Induction.CentralCoverSourceLiftPartition {p : Q2Presentation.Induction.FramedPair} (B : Q2Presentation.Induction.MinimalBlock p) (S : Type) (O : Q2Presentation.Induction.CentralCoverSourceObstructionData B S) (Z : Q2Presentation.Induction.CentralCoverSourceCocycleData B) (F : Q2Presentation.Induction.CentralCoverSourceLiftFibers B S O Z) : TypeExact-image partition of the global surjection set by the unobstructed lift fibres. Manuscript anchors: `lem:covertransform` and `prop:finalfourier`, including Frattini surjectivity of the final `R`-lifts.BQ2Presentation.Induction.MinimalBlock pSTypeOQ2Presentation.Induction.CentralCoverSourceObstructionData B SZQ2Presentation.Induction.CentralCoverSourceCocycleData BFQ2Presentation.Induction.CentralCoverSourceLiftFibers B S O Z) : Q2Presentation.Induction.CentralCoverSourceLiftPartitionCardinalityQ2Presentation.Induction.CentralCoverSourceLiftPartitionCardinality {p : Q2Presentation.Induction.FramedPair} (B : Q2Presentation.Induction.MinimalBlock p) (S : Type) (O : Q2Presentation.Induction.CentralCoverSourceObstructionData B S) (Z : Q2Presentation.Induction.CentralCoverSourceCocycleData B) (F : Q2Presentation.Induction.CentralCoverSourceLiftFibers B S O Z) : PropCardinal form of the exact-image lift partition. This is the remaining candidate finite bookkeeping statement: the actual maps and the disjoint union of unobstructed lift fibres have the same finite cardinality.BQ2Presentation.Induction.MinimalBlock pSTypeOQ2Presentation.Induction.CentralCoverSourceObstructionData B SZQ2Presentation.Induction.CentralCoverSourceCocycleData BFQ2Presentation.Induction.CentralCoverSourceLiftFibers B S O ZThe cardinality shadow of an actual exact-image lift partition. This is the provable direction of `lem:covertransform` / `prop:finalfourier` at the level currently exposed by `CentralCoverFineResiduals`: once the manuscript has supplied the genuine bijection from boundary-framed surjections to the dependent sum of unobstructed lift fibres, the cardinal equality is immediate.
-
theoremdefined in Q2Presentation/Induction/ScalarCoverPartition.leancomplete
theorem Q2Presentation.Induction.sec7_scalarCoverPartition_gammaA {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) : 8 *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number. If `α` is infinite, `Nat.card α = 0`.{Subtype.{u} {α : Sort u} (p : α → Prop) : Sort (max 1 u)All the elements of a type that satisfy a predicate. `Subtype p`, usually written `{ x : α // p x }` or `{ x // p x }`, contains all elements `x : α` for which `p x` is true. Its constructor is a pair of the value and the proof that it satisfies the predicate. In run-time code, `{ x : α // p x }` is represented identically to `α`. There is a coercion from `{ x : α // p x }` to `α`, so elements of a subtype may be used where the underlying type is expected. Examples: * `{ n : Nat // n % 2 = 0 }` is the type of even numbers. * `{ xs : Array String // xs.size = 5 }` is the type of arrays with five `String`s. * Given `xs : List α`, `List { x : α // x ∈ xs }` is the type of lists in which all elements are contained in `xs`. Conventions for notations in identifiers: * The recommended spelling of `{ x // p x }` in identifiers is `subtype`.gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GammaA (Q2Presentation.Induction.XRZero.xrChild chief K).fst (Q2Presentation.Induction.XRZero.xrChild chief K).snd//Subtype.{u} {α : Sort u} (p : α → Prop) : Sort (max 1 u)All the elements of a type that satisfy a predicate. `Subtype p`, usually written `{ x : α // p x }` or `{ x // p x }`, contains all elements `x : α` for which `p x` is true. Its constructor is a pair of the value and the proof that it satisfies the predicate. In run-time code, `{ x : α // p x }` is represented identically to `α`. There is a coercion from `{ x : α // p x }` to `α`, so elements of a subtype may be used where the underlying type is expected. Examples: * `{ n : Nat // n % 2 = 0 }` is the type of even numbers. * `{ xs : Array String // xs.size = 5 }` is the type of arrays with five `String`s. * Given `xs : List α`, `List { x : α // x ∈ xs }` is the type of lists in which all elements are contained in `xs`. Conventions for notations in identifiers: * The recommended spelling of `{ x // p x }` in identifiers is `subtype`.NonemptyNonempty.{u} (α : Sort u) : Prop`Nonempty α` is a typeclass that says that `α` is not an empty type, that is, there exists an element in the type. It differs from `Inhabited α` in that `Nonempty α` is a `Prop`, which means that it does not actually carry an element of `α`, only a proof that *there exists* such an element. Given `Nonempty α`, you can construct an element of `α` *nonconstructively* using `Classical.choice`.(Q2Presentation.Lifting.scalarCoverLiftHomQ2Presentation.Lifting.scalarCoverLiftHom {Yt : Q2Presentation.BoundaryFramedTarget} [Finite Yt.Y] (E : Q2Presentation.Lifting.ElementaryKernel Yt) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E)) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals E) {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (F : Q2Presentation.BoundaryFrame Yt) (g : Q2Presentation.boundaryFramedSurj B (Q2Presentation.TorsorProgram.quotientFramedTarget Yt E.N ⋯ ⋯) (Q2Presentation.TorsorProgram.quotientFrame Yt E.N ⋯ ⋯ F)) : Type**Cover lifts of `g`** (`lem:obstructionseparation` l.4219–4223): framed homs `Γ ⟶ B_λ` over `g` — surjectivity NOT imposed (the manuscript's compatible lifts: `λ_*o` measures weak liftability; images are stratified by `eq:recursionR2`/`R3` later).(Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel** (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)Q2Presentation.boundaryPackage_GammaAQ2Presentation.boundaryPackage_GammaA : Q2Presentation.BoundaryPackage Q2Presentation.GammaA**The candidate boundary package** (manuscript Prop 3.14, `prop:compatiblemarking`; plan Turn 4 §6). The Stage-C data of `Γ_A`: the common tame quotient `gammaTameMap`, the maximal pro-`2` quotient `p : Γ_A ⟶ Π`, and the common unramified character `ν = gammaTameMap ≫ ν_t`, through which both factor.pQ2Presentation.Induction.FramedPair.sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GammaA (Q2Presentation.Induction.XRZero.xrChild chief K).fst (Q2Presentation.Induction.XRZero.xrChild chief K).snd) }Subtype.{u} {α : Sort u} (p : α → Prop) : Sort (max 1 u)All the elements of a type that satisfy a predicate. `Subtype p`, usually written `{ x : α // p x }` or `{ x // p x }`, contains all elements `x : α` for which `p x` is true. Its constructor is a pair of the value and the proof that it satisfies the predicate. In run-time code, `{ x : α // p x }` is represented identically to `α`. There is a coercion from `{ x : α // p x }` to `α`, so elements of a subtype may be used where the underlying type is expected. Examples: * `{ n : Nat // n % 2 = 0 }` is the type of even numbers. * `{ xs : Array String // xs.size = 5 }` is the type of arrays with five `String`s. * Given `xs : List α`, `List { x : α // x ∈ xs }` is the type of lists in which all elements are contained in `xs`. Conventions for notations in identifiers: * The recommended spelling of `{ x // p x }` in identifiers is `subtype`.=Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`. We use `a = b` as notation for `Eq a b`. A fundamental property of equality is that it is an equivalence relation. ``` variable (α : Type) (a b c d : α) variable (hab : a = b) (hcb : c = b) (hcd : c = d) example : a = d := Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd ``` Equality is much more than an equivalence relation, however. It has the important property that every assertion respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value. That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`. Example: ``` example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := Eq.subst h1 h2 example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := h1 ▸ h2 ``` The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`. For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality) Conventions for notations in identifiers: * The recommended spelling of `=` in identifiers is `eq`.∑ JQ2Presentation.Induction.scalarCoverStrata chief K lam hinv, Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number. If `α` is infinite, `Nat.card α = 0`.(Q2Presentation.boundaryFramedSurjQ2Presentation.boundaryFramedSurj {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (Yt : Q2Presentation.BoundaryFramedTarget) (F : Q2Presentation.BoundaryFrame Yt) : TypeThe **boundary-framed surjections** `e_Γ^β(𝒴)` (manuscript `eq:eGamma`): the continuous surjections `f : Γ ↠ Y` whose induced map to `H × E` is the prescribed `β ∘ b_Γ`, i.e. `q_Y ∘ f = β ∘ b_Γ`. This is the subtype counted in Theorem 4.2; its cardinality is `e_Γ^β(𝒴)`.Q2Presentation.boundaryPackage_GammaAQ2Presentation.boundaryPackage_GammaA : Q2Presentation.BoundaryPackage Q2Presentation.GammaA**The candidate boundary package** (manuscript Prop 3.14, `prop:compatiblemarking`; plan Turn 4 §6). The Stage-C data of `Γ_A`: the common tame quotient `gammaTameMap`, the maximal pro-`2` quotient `p : Γ_A ⟶ Π`, and the common unramified character `ν = gammaTameMap ≫ ν_t`, through which both factor.(Q2Presentation.Induction.scalarCoverStratumPairQ2Presentation.Induction.scalarCoverStratumPair {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) (J : Q2Presentation.Induction.scalarCoverStrata chief K lam hinv) : Q2Presentation.Induction.FramedPair**The stratum framed pair** `(J̃, J̃ ∩ L̃, π̃|_J̃, θ̃|_J̃; same frame)` — an ordinary exact-image object in the same global boundary-framed category (same `H`, same `E`, `p.2`'s frame verbatim), ready for the engine's children lists. Its measure is `|J̃ ∩ L̃|`, `lem:strictdecrease`'s quantity.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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)JQ2Presentation.Induction.scalarCoverStrata chief K lam hinv).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.(Q2Presentation.Induction.scalarCoverStratumPairQ2Presentation.Induction.scalarCoverStratumPair {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) (J : Q2Presentation.Induction.scalarCoverStrata chief K lam hinv) : Q2Presentation.Induction.FramedPair**The stratum framed pair** `(J̃, J̃ ∩ L̃, π̃|_J̃, θ̃|_J̃; same frame)` — an ordinary exact-image object in the same global boundary-framed category (same `H`, same `E`, `p.2`'s frame verbatim), ready for the engine's children lists. Its measure is `|J̃ ∩ L̃|`, `lem:strictdecrease`'s quantity.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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)JQ2Presentation.Induction.scalarCoverStrata chief K lam hinv).sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.)theorem Q2Presentation.Induction.sec7_scalarCoverPartition_gammaA {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) : 8 *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number. If `α` is infinite, `Nat.card α = 0`.{Subtype.{u} {α : Sort u} (p : α → Prop) : Sort (max 1 u)All the elements of a type that satisfy a predicate. `Subtype p`, usually written `{ x : α // p x }` or `{ x // p x }`, contains all elements `x : α` for which `p x` is true. Its constructor is a pair of the value and the proof that it satisfies the predicate. In run-time code, `{ x : α // p x }` is represented identically to `α`. There is a coercion from `{ x : α // p x }` to `α`, so elements of a subtype may be used where the underlying type is expected. Examples: * `{ n : Nat // n % 2 = 0 }` is the type of even numbers. * `{ xs : Array String // xs.size = 5 }` is the type of arrays with five `String`s. * Given `xs : List α`, `List { x : α // x ∈ xs }` is the type of lists in which all elements are contained in `xs`. Conventions for notations in identifiers: * The recommended spelling of `{ x // p x }` in identifiers is `subtype`.gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GammaA (Q2Presentation.Induction.XRZero.xrChild chief K).fst (Q2Presentation.Induction.XRZero.xrChild chief K).snd//Subtype.{u} {α : Sort u} (p : α → Prop) : Sort (max 1 u)All the elements of a type that satisfy a predicate. `Subtype p`, usually written `{ x : α // p x }` or `{ x // p x }`, contains all elements `x : α` for which `p x` is true. Its constructor is a pair of the value and the proof that it satisfies the predicate. In run-time code, `{ x : α // p x }` is represented identically to `α`. There is a coercion from `{ x : α // p x }` to `α`, so elements of a subtype may be used where the underlying type is expected. Examples: * `{ n : Nat // n % 2 = 0 }` is the type of even numbers. * `{ xs : Array String // xs.size = 5 }` is the type of arrays with five `String`s. * Given `xs : List α`, `List { x : α // x ∈ xs }` is the type of lists in which all elements are contained in `xs`. Conventions for notations in identifiers: * The recommended spelling of `{ x // p x }` in identifiers is `subtype`.NonemptyNonempty.{u} (α : Sort u) : Prop`Nonempty α` is a typeclass that says that `α` is not an empty type, that is, there exists an element in the type. It differs from `Inhabited α` in that `Nonempty α` is a `Prop`, which means that it does not actually carry an element of `α`, only a proof that *there exists* such an element. Given `Nonempty α`, you can construct an element of `α` *nonconstructively* using `Classical.choice`.(Q2Presentation.Lifting.scalarCoverLiftHomQ2Presentation.Lifting.scalarCoverLiftHom {Yt : Q2Presentation.BoundaryFramedTarget} [Finite Yt.Y] (E : Q2Presentation.Lifting.ElementaryKernel Yt) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E)) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals E) {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (F : Q2Presentation.BoundaryFrame Yt) (g : Q2Presentation.boundaryFramedSurj B (Q2Presentation.TorsorProgram.quotientFramedTarget Yt E.N ⋯ ⋯) (Q2Presentation.TorsorProgram.quotientFrame Yt E.N ⋯ ⋯ F)) : Type**Cover lifts of `g`** (`lem:obstructionseparation` l.4219–4223): framed homs `Γ ⟶ B_λ` over `g` — surjectivity NOT imposed (the manuscript's compatible lifts: `λ_*o` measures weak liftability; images are stratified by `eq:recursionR2`/`R3` later).(Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel** (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)Q2Presentation.boundaryPackage_GammaAQ2Presentation.boundaryPackage_GammaA : Q2Presentation.BoundaryPackage Q2Presentation.GammaA**The candidate boundary package** (manuscript Prop 3.14, `prop:compatiblemarking`; plan Turn 4 §6). The Stage-C data of `Γ_A`: the common tame quotient `gammaTameMap`, the maximal pro-`2` quotient `p : Γ_A ⟶ Π`, and the common unramified character `ν = gammaTameMap ≫ ν_t`, through which both factor.pQ2Presentation.Induction.FramedPair.sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GammaA (Q2Presentation.Induction.XRZero.xrChild chief K).fst (Q2Presentation.Induction.XRZero.xrChild chief K).snd) }Subtype.{u} {α : Sort u} (p : α → Prop) : Sort (max 1 u)All the elements of a type that satisfy a predicate. `Subtype p`, usually written `{ x : α // p x }` or `{ x // p x }`, contains all elements `x : α` for which `p x` is true. Its constructor is a pair of the value and the proof that it satisfies the predicate. In run-time code, `{ x : α // p x }` is represented identically to `α`. There is a coercion from `{ x : α // p x }` to `α`, so elements of a subtype may be used where the underlying type is expected. Examples: * `{ n : Nat // n % 2 = 0 }` is the type of even numbers. * `{ xs : Array String // xs.size = 5 }` is the type of arrays with five `String`s. * Given `xs : List α`, `List { x : α // x ∈ xs }` is the type of lists in which all elements are contained in `xs`. Conventions for notations in identifiers: * The recommended spelling of `{ x // p x }` in identifiers is `subtype`.=Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`. We use `a = b` as notation for `Eq a b`. A fundamental property of equality is that it is an equivalence relation. ``` variable (α : Type) (a b c d : α) variable (hab : a = b) (hcb : c = b) (hcd : c = d) example : a = d := Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd ``` Equality is much more than an equivalence relation, however. It has the important property that every assertion respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value. That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`. Example: ``` example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := Eq.subst h1 h2 example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := h1 ▸ h2 ``` The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`. For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality) Conventions for notations in identifiers: * The recommended spelling of `=` in identifiers is `eq`.∑ JQ2Presentation.Induction.scalarCoverStrata chief K lam hinv, Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number. If `α` is infinite, `Nat.card α = 0`.(Q2Presentation.boundaryFramedSurjQ2Presentation.boundaryFramedSurj {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (Yt : Q2Presentation.BoundaryFramedTarget) (F : Q2Presentation.BoundaryFrame Yt) : TypeThe **boundary-framed surjections** `e_Γ^β(𝒴)` (manuscript `eq:eGamma`): the continuous surjections `f : Γ ↠ Y` whose induced map to `H × E` is the prescribed `β ∘ b_Γ`, i.e. `q_Y ∘ f = β ∘ b_Γ`. This is the subtype counted in Theorem 4.2; its cardinality is `e_Γ^β(𝒴)`.Q2Presentation.boundaryPackage_GammaAQ2Presentation.boundaryPackage_GammaA : Q2Presentation.BoundaryPackage Q2Presentation.GammaA**The candidate boundary package** (manuscript Prop 3.14, `prop:compatiblemarking`; plan Turn 4 §6). The Stage-C data of `Γ_A`: the common tame quotient `gammaTameMap`, the maximal pro-`2` quotient `p : Γ_A ⟶ Π`, and the common unramified character `ν = gammaTameMap ≫ ν_t`, through which both factor.(Q2Presentation.Induction.scalarCoverStratumPairQ2Presentation.Induction.scalarCoverStratumPair {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) (J : Q2Presentation.Induction.scalarCoverStrata chief K lam hinv) : Q2Presentation.Induction.FramedPair**The stratum framed pair** `(J̃, J̃ ∩ L̃, π̃|_J̃, θ̃|_J̃; same frame)` — an ordinary exact-image object in the same global boundary-framed category (same `H`, same `E`, `p.2`'s frame verbatim), ready for the engine's children lists. Its measure is `|J̃ ∩ L̃|`, `lem:strictdecrease`'s quantity.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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)JQ2Presentation.Induction.scalarCoverStrata chief K lam hinv).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.(Q2Presentation.Induction.scalarCoverStratumPairQ2Presentation.Induction.scalarCoverStratumPair {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) (J : Q2Presentation.Induction.scalarCoverStrata chief K lam hinv) : Q2Presentation.Induction.FramedPair**The stratum framed pair** `(J̃, J̃ ∩ L̃, π̃|_J̃, θ̃|_J̃; same frame)` — an ordinary exact-image object in the same global boundary-framed category (same `H`, same `E`, `p.2`'s frame verbatim), ready for the engine's children lists. Its measure is `|J̃ ∩ L̃|`, `lem:strictdecrease`'s quantity.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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)JQ2Presentation.Induction.scalarCoverStrata chief K lam hinv).sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.)**`lem:covertransform` at the scalar cover, candidate source** (`eq:covertransform` l.3834–3840 at `J = B`): eight times the weak-lift count `m_{A,λ}(B)` — the keep `sec7_scalarCoverCountAgreement`'s LHS — is the sum of the boundary-framed exact-image counts of the cover strata. -
theoremdefined in Q2Presentation/Induction/ScalarCoverPartition.leancomplete
theorem Q2Presentation.Induction.sec7_scalarCoverPartition_gq2 {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) : 8 *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number. If `α` is infinite, `Nat.card α = 0`.{Subtype.{u} {α : Sort u} (p : α → Prop) : Sort (max 1 u)All the elements of a type that satisfy a predicate. `Subtype p`, usually written `{ x : α // p x }` or `{ x // p x }`, contains all elements `x : α` for which `p x` is true. Its constructor is a pair of the value and the proof that it satisfies the predicate. In run-time code, `{ x : α // p x }` is represented identically to `α`. There is a coercion from `{ x : α // p x }` to `α`, so elements of a subtype may be used where the underlying type is expected. Examples: * `{ n : Nat // n % 2 = 0 }` is the type of even numbers. * `{ xs : Array String // xs.size = 5 }` is the type of arrays with five `String`s. * Given `xs : List α`, `List { x : α // x ∈ xs }` is the type of lists in which all elements are contained in `xs`. Conventions for notations in identifiers: * The recommended spelling of `{ x // p x }` in identifiers is `subtype`.gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GQ2 (Q2Presentation.Induction.XRZero.xrChild chief K).fst (Q2Presentation.Induction.XRZero.xrChild chief K).snd//Subtype.{u} {α : Sort u} (p : α → Prop) : Sort (max 1 u)All the elements of a type that satisfy a predicate. `Subtype p`, usually written `{ x : α // p x }` or `{ x // p x }`, contains all elements `x : α` for which `p x` is true. Its constructor is a pair of the value and the proof that it satisfies the predicate. In run-time code, `{ x : α // p x }` is represented identically to `α`. There is a coercion from `{ x : α // p x }` to `α`, so elements of a subtype may be used where the underlying type is expected. Examples: * `{ n : Nat // n % 2 = 0 }` is the type of even numbers. * `{ xs : Array String // xs.size = 5 }` is the type of arrays with five `String`s. * Given `xs : List α`, `List { x : α // x ∈ xs }` is the type of lists in which all elements are contained in `xs`. Conventions for notations in identifiers: * The recommended spelling of `{ x // p x }` in identifiers is `subtype`.NonemptyNonempty.{u} (α : Sort u) : Prop`Nonempty α` is a typeclass that says that `α` is not an empty type, that is, there exists an element in the type. It differs from `Inhabited α` in that `Nonempty α` is a `Prop`, which means that it does not actually carry an element of `α`, only a proof that *there exists* such an element. Given `Nonempty α`, you can construct an element of `α` *nonconstructively* using `Classical.choice`.(Q2Presentation.Lifting.scalarCoverLiftHomQ2Presentation.Lifting.scalarCoverLiftHom {Yt : Q2Presentation.BoundaryFramedTarget} [Finite Yt.Y] (E : Q2Presentation.Lifting.ElementaryKernel Yt) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E)) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals E) {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (F : Q2Presentation.BoundaryFrame Yt) (g : Q2Presentation.boundaryFramedSurj B (Q2Presentation.TorsorProgram.quotientFramedTarget Yt E.N ⋯ ⋯) (Q2Presentation.TorsorProgram.quotientFrame Yt E.N ⋯ ⋯ F)) : Type**Cover lifts of `g`** (`lem:obstructionseparation` l.4219–4223): framed homs `Γ ⟶ B_λ` over `g` — surjectivity NOT imposed (the manuscript's compatible lifts: `λ_*o` measures weak liftability; images are stratified by `eq:recursionR2`/`R3` later).(Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel** (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)Q2Presentation.boundaryPackage_GQ2Q2Presentation.boundaryPackage_GQ2 : Q2Presentation.BoundaryPackage Q2Presentation.GQ2Profinite**The local boundary package** `boundaryPackage_GQ2 : BoundaryPackage G_{ℚ₂}` (manuscript Prop 3.14 `prop:compatiblemarking` for `Γ = G_{ℚ₂}`; plan Turn 4 §6), the `G_{ℚ₂}`-side instance of the uniform Stage-C boundary datum. * `tameMap`/`tame_surj`/`tame_nu` — the local tame quotient `G_{ℚ₂} ↠ T_A` with unramified marking `ν_loc`, from the axiom `gq2_tame_quotient` (Prop 3.2 + the local half of Prop `compatiblemarking`); * `pro2Map`/`pro2_surj`/`pro2_nu` — the local maximal pro-`2` quotient `G_{ℚ₂} ↠ Π` with the *same* unramified marking `ν_loc`, proved from the fully marked Labute comparison `labute_GQ2_maxPro2_marked` (`pro2Map_loc`, `pro2Map_loc_surjective`, `pro2Map_loc_nu`); * `nu := ν_loc` — the common unramified character through which both factor.pQ2Presentation.Induction.FramedPair.sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GQ2 (Q2Presentation.Induction.XRZero.xrChild chief K).fst (Q2Presentation.Induction.XRZero.xrChild chief K).snd) }Subtype.{u} {α : Sort u} (p : α → Prop) : Sort (max 1 u)All the elements of a type that satisfy a predicate. `Subtype p`, usually written `{ x : α // p x }` or `{ x // p x }`, contains all elements `x : α` for which `p x` is true. Its constructor is a pair of the value and the proof that it satisfies the predicate. In run-time code, `{ x : α // p x }` is represented identically to `α`. There is a coercion from `{ x : α // p x }` to `α`, so elements of a subtype may be used where the underlying type is expected. Examples: * `{ n : Nat // n % 2 = 0 }` is the type of even numbers. * `{ xs : Array String // xs.size = 5 }` is the type of arrays with five `String`s. * Given `xs : List α`, `List { x : α // x ∈ xs }` is the type of lists in which all elements are contained in `xs`. Conventions for notations in identifiers: * The recommended spelling of `{ x // p x }` in identifiers is `subtype`.=Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`. We use `a = b` as notation for `Eq a b`. A fundamental property of equality is that it is an equivalence relation. ``` variable (α : Type) (a b c d : α) variable (hab : a = b) (hcb : c = b) (hcd : c = d) example : a = d := Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd ``` Equality is much more than an equivalence relation, however. It has the important property that every assertion respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value. That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`. Example: ``` example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := Eq.subst h1 h2 example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := h1 ▸ h2 ``` The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`. For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality) Conventions for notations in identifiers: * The recommended spelling of `=` in identifiers is `eq`.∑ JQ2Presentation.Induction.scalarCoverStrata chief K lam hinv, Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number. If `α` is infinite, `Nat.card α = 0`.(Q2Presentation.boundaryFramedSurjQ2Presentation.boundaryFramedSurj {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (Yt : Q2Presentation.BoundaryFramedTarget) (F : Q2Presentation.BoundaryFrame Yt) : TypeThe **boundary-framed surjections** `e_Γ^β(𝒴)` (manuscript `eq:eGamma`): the continuous surjections `f : Γ ↠ Y` whose induced map to `H × E` is the prescribed `β ∘ b_Γ`, i.e. `q_Y ∘ f = β ∘ b_Γ`. This is the subtype counted in Theorem 4.2; its cardinality is `e_Γ^β(𝒴)`.Q2Presentation.boundaryPackage_GQ2Q2Presentation.boundaryPackage_GQ2 : Q2Presentation.BoundaryPackage Q2Presentation.GQ2Profinite**The local boundary package** `boundaryPackage_GQ2 : BoundaryPackage G_{ℚ₂}` (manuscript Prop 3.14 `prop:compatiblemarking` for `Γ = G_{ℚ₂}`; plan Turn 4 §6), the `G_{ℚ₂}`-side instance of the uniform Stage-C boundary datum. * `tameMap`/`tame_surj`/`tame_nu` — the local tame quotient `G_{ℚ₂} ↠ T_A` with unramified marking `ν_loc`, from the axiom `gq2_tame_quotient` (Prop 3.2 + the local half of Prop `compatiblemarking`); * `pro2Map`/`pro2_surj`/`pro2_nu` — the local maximal pro-`2` quotient `G_{ℚ₂} ↠ Π` with the *same* unramified marking `ν_loc`, proved from the fully marked Labute comparison `labute_GQ2_maxPro2_marked` (`pro2Map_loc`, `pro2Map_loc_surjective`, `pro2Map_loc_nu`); * `nu := ν_loc` — the common unramified character through which both factor.(Q2Presentation.Induction.scalarCoverStratumPairQ2Presentation.Induction.scalarCoverStratumPair {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) (J : Q2Presentation.Induction.scalarCoverStrata chief K lam hinv) : Q2Presentation.Induction.FramedPair**The stratum framed pair** `(J̃, J̃ ∩ L̃, π̃|_J̃, θ̃|_J̃; same frame)` — an ordinary exact-image object in the same global boundary-framed category (same `H`, same `E`, `p.2`'s frame verbatim), ready for the engine's children lists. Its measure is `|J̃ ∩ L̃|`, `lem:strictdecrease`'s quantity.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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)JQ2Presentation.Induction.scalarCoverStrata chief K lam hinv).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.(Q2Presentation.Induction.scalarCoverStratumPairQ2Presentation.Induction.scalarCoverStratumPair {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) (J : Q2Presentation.Induction.scalarCoverStrata chief K lam hinv) : Q2Presentation.Induction.FramedPair**The stratum framed pair** `(J̃, J̃ ∩ L̃, π̃|_J̃, θ̃|_J̃; same frame)` — an ordinary exact-image object in the same global boundary-framed category (same `H`, same `E`, `p.2`'s frame verbatim), ready for the engine's children lists. Its measure is `|J̃ ∩ L̃|`, `lem:strictdecrease`'s quantity.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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)JQ2Presentation.Induction.scalarCoverStrata chief K lam hinv).sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.)theorem Q2Presentation.Induction.sec7_scalarCoverPartition_gq2 {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) : 8 *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number. If `α` is infinite, `Nat.card α = 0`.{Subtype.{u} {α : Sort u} (p : α → Prop) : Sort (max 1 u)All the elements of a type that satisfy a predicate. `Subtype p`, usually written `{ x : α // p x }` or `{ x // p x }`, contains all elements `x : α` for which `p x` is true. Its constructor is a pair of the value and the proof that it satisfies the predicate. In run-time code, `{ x : α // p x }` is represented identically to `α`. There is a coercion from `{ x : α // p x }` to `α`, so elements of a subtype may be used where the underlying type is expected. Examples: * `{ n : Nat // n % 2 = 0 }` is the type of even numbers. * `{ xs : Array String // xs.size = 5 }` is the type of arrays with five `String`s. * Given `xs : List α`, `List { x : α // x ∈ xs }` is the type of lists in which all elements are contained in `xs`. Conventions for notations in identifiers: * The recommended spelling of `{ x // p x }` in identifiers is `subtype`.gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GQ2 (Q2Presentation.Induction.XRZero.xrChild chief K).fst (Q2Presentation.Induction.XRZero.xrChild chief K).snd//Subtype.{u} {α : Sort u} (p : α → Prop) : Sort (max 1 u)All the elements of a type that satisfy a predicate. `Subtype p`, usually written `{ x : α // p x }` or `{ x // p x }`, contains all elements `x : α` for which `p x` is true. Its constructor is a pair of the value and the proof that it satisfies the predicate. In run-time code, `{ x : α // p x }` is represented identically to `α`. There is a coercion from `{ x : α // p x }` to `α`, so elements of a subtype may be used where the underlying type is expected. Examples: * `{ n : Nat // n % 2 = 0 }` is the type of even numbers. * `{ xs : Array String // xs.size = 5 }` is the type of arrays with five `String`s. * Given `xs : List α`, `List { x : α // x ∈ xs }` is the type of lists in which all elements are contained in `xs`. Conventions for notations in identifiers: * The recommended spelling of `{ x // p x }` in identifiers is `subtype`.NonemptyNonempty.{u} (α : Sort u) : Prop`Nonempty α` is a typeclass that says that `α` is not an empty type, that is, there exists an element in the type. It differs from `Inhabited α` in that `Nonempty α` is a `Prop`, which means that it does not actually carry an element of `α`, only a proof that *there exists* such an element. Given `Nonempty α`, you can construct an element of `α` *nonconstructively* using `Classical.choice`.(Q2Presentation.Lifting.scalarCoverLiftHomQ2Presentation.Lifting.scalarCoverLiftHom {Yt : Q2Presentation.BoundaryFramedTarget} [Finite Yt.Y] (E : Q2Presentation.Lifting.ElementaryKernel Yt) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E)) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals E) {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (F : Q2Presentation.BoundaryFrame Yt) (g : Q2Presentation.boundaryFramedSurj B (Q2Presentation.TorsorProgram.quotientFramedTarget Yt E.N ⋯ ⋯) (Q2Presentation.TorsorProgram.quotientFrame Yt E.N ⋯ ⋯ F)) : Type**Cover lifts of `g`** (`lem:obstructionseparation` l.4219–4223): framed homs `Γ ⟶ B_λ` over `g` — surjectivity NOT imposed (the manuscript's compatible lifts: `λ_*o` measures weak liftability; images are stratified by `eq:recursionR2`/`R3` later).(Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel** (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)Q2Presentation.boundaryPackage_GQ2Q2Presentation.boundaryPackage_GQ2 : Q2Presentation.BoundaryPackage Q2Presentation.GQ2Profinite**The local boundary package** `boundaryPackage_GQ2 : BoundaryPackage G_{ℚ₂}` (manuscript Prop 3.14 `prop:compatiblemarking` for `Γ = G_{ℚ₂}`; plan Turn 4 §6), the `G_{ℚ₂}`-side instance of the uniform Stage-C boundary datum. * `tameMap`/`tame_surj`/`tame_nu` — the local tame quotient `G_{ℚ₂} ↠ T_A` with unramified marking `ν_loc`, from the axiom `gq2_tame_quotient` (Prop 3.2 + the local half of Prop `compatiblemarking`); * `pro2Map`/`pro2_surj`/`pro2_nu` — the local maximal pro-`2` quotient `G_{ℚ₂} ↠ Π` with the *same* unramified marking `ν_loc`, proved from the fully marked Labute comparison `labute_GQ2_maxPro2_marked` (`pro2Map_loc`, `pro2Map_loc_surjective`, `pro2Map_loc_nu`); * `nu := ν_loc` — the common unramified character through which both factor.pQ2Presentation.Induction.FramedPair.sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GQ2 (Q2Presentation.Induction.XRZero.xrChild chief K).fst (Q2Presentation.Induction.XRZero.xrChild chief K).snd) }Subtype.{u} {α : Sort u} (p : α → Prop) : Sort (max 1 u)All the elements of a type that satisfy a predicate. `Subtype p`, usually written `{ x : α // p x }` or `{ x // p x }`, contains all elements `x : α` for which `p x` is true. Its constructor is a pair of the value and the proof that it satisfies the predicate. In run-time code, `{ x : α // p x }` is represented identically to `α`. There is a coercion from `{ x : α // p x }` to `α`, so elements of a subtype may be used where the underlying type is expected. Examples: * `{ n : Nat // n % 2 = 0 }` is the type of even numbers. * `{ xs : Array String // xs.size = 5 }` is the type of arrays with five `String`s. * Given `xs : List α`, `List { x : α // x ∈ xs }` is the type of lists in which all elements are contained in `xs`. Conventions for notations in identifiers: * The recommended spelling of `{ x // p x }` in identifiers is `subtype`.=Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`. We use `a = b` as notation for `Eq a b`. A fundamental property of equality is that it is an equivalence relation. ``` variable (α : Type) (a b c d : α) variable (hab : a = b) (hcb : c = b) (hcd : c = d) example : a = d := Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd ``` Equality is much more than an equivalence relation, however. It has the important property that every assertion respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value. That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`. Example: ``` example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := Eq.subst h1 h2 example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := h1 ▸ h2 ``` The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`. For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality) Conventions for notations in identifiers: * The recommended spelling of `=` in identifiers is `eq`.∑ JQ2Presentation.Induction.scalarCoverStrata chief K lam hinv, Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number. If `α` is infinite, `Nat.card α = 0`.(Q2Presentation.boundaryFramedSurjQ2Presentation.boundaryFramedSurj {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (Yt : Q2Presentation.BoundaryFramedTarget) (F : Q2Presentation.BoundaryFrame Yt) : TypeThe **boundary-framed surjections** `e_Γ^β(𝒴)` (manuscript `eq:eGamma`): the continuous surjections `f : Γ ↠ Y` whose induced map to `H × E` is the prescribed `β ∘ b_Γ`, i.e. `q_Y ∘ f = β ∘ b_Γ`. This is the subtype counted in Theorem 4.2; its cardinality is `e_Γ^β(𝒴)`.Q2Presentation.boundaryPackage_GQ2Q2Presentation.boundaryPackage_GQ2 : Q2Presentation.BoundaryPackage Q2Presentation.GQ2Profinite**The local boundary package** `boundaryPackage_GQ2 : BoundaryPackage G_{ℚ₂}` (manuscript Prop 3.14 `prop:compatiblemarking` for `Γ = G_{ℚ₂}`; plan Turn 4 §6), the `G_{ℚ₂}`-side instance of the uniform Stage-C boundary datum. * `tameMap`/`tame_surj`/`tame_nu` — the local tame quotient `G_{ℚ₂} ↠ T_A` with unramified marking `ν_loc`, from the axiom `gq2_tame_quotient` (Prop 3.2 + the local half of Prop `compatiblemarking`); * `pro2Map`/`pro2_surj`/`pro2_nu` — the local maximal pro-`2` quotient `G_{ℚ₂} ↠ Π` with the *same* unramified marking `ν_loc`, proved from the fully marked Labute comparison `labute_GQ2_maxPro2_marked` (`pro2Map_loc`, `pro2Map_loc_surjective`, `pro2Map_loc_nu`); * `nu := ν_loc` — the common unramified character through which both factor.(Q2Presentation.Induction.scalarCoverStratumPairQ2Presentation.Induction.scalarCoverStratumPair {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) (J : Q2Presentation.Induction.scalarCoverStrata chief K lam hinv) : Q2Presentation.Induction.FramedPair**The stratum framed pair** `(J̃, J̃ ∩ L̃, π̃|_J̃, θ̃|_J̃; same frame)` — an ordinary exact-image object in the same global boundary-framed category (same `H`, same `E`, `p.2`'s frame verbatim), ready for the engine's children lists. Its measure is `|J̃ ∩ L̃|`, `lem:strictdecrease`'s quantity.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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)JQ2Presentation.Induction.scalarCoverStrata chief K lam hinv).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.(Q2Presentation.Induction.scalarCoverStratumPairQ2Presentation.Induction.scalarCoverStratumPair {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) (J : Q2Presentation.Induction.scalarCoverStrata chief K lam hinv) : Q2Presentation.Induction.FramedPair**The stratum framed pair** `(J̃, J̃ ∩ L̃, π̃|_J̃, θ̃|_J̃; same frame)` — an ordinary exact-image object in the same global boundary-framed category (same `H`, same `E`, `p.2`'s frame verbatim), ready for the engine's children lists. Its measure is `|J̃ ∩ L̃|`, `lem:strictdecrease`'s quantity.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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)JQ2Presentation.Induction.scalarCoverStrata chief K lam hinv).sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.)**`lem:covertransform` at the scalar cover, local source**: the mirror of `sec7_scalarCoverPartition_gammaA` for `G_{ℚ₂}`; the uniform 8 is `cover_Z1_card_gq2`, derived from the citable `q2_localduality_general`. -
defdefined in Q2Presentation/Lifting/CocycleCover.leancomplete
def Q2Presentation.Lifting.cocycleCoverTarget (Yt
Q2Presentation.BoundaryFramedTarget: Q2Presentation.BoundaryFramedTargetQ2Presentation.BoundaryFramedTarget : Type 1A **boundary-framed marked target** `𝒴 = (Y, L_Y, π_Y, θ_Y)` (manuscript Definition 4.1, `def:framed`): a finite group `Y` with a normal finite `2`-subgroup `L_Y`, a surjection `π_Y : Y ↠ H` onto a finite *tame* quotient with kernel exactly `L_Y`, and an *elementary decoration* `θ_Y : Y → Multiplicative E` into the multiplicative image of a finite `𝔽₂`-vector space `E`. The pair `q_Y = (π_Y, θ_Y)` fixes both the tame quotient `Y / L_Y ≅ H` and the decoration.) (zetaYt.Y → Yt.Y → ZMod 2: YtQ2Presentation.BoundaryFramedTarget.YQ2Presentation.BoundaryFramedTarget.Y (self : Q2Presentation.BoundaryFramedTarget) : TypeThe finite target group `Y`.→ YtQ2Presentation.BoundaryFramedTarget.YQ2Presentation.BoundaryFramedTarget.Y (self : Q2Presentation.BoundaryFramedTarget) : TypeThe finite target group `Y`.→ ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.2) (hz1∀ (y : Yt.Y), zeta 1 y = 0: ∀ (yYt.Y: YtQ2Presentation.BoundaryFramedTarget.YQ2Presentation.BoundaryFramedTarget.Y (self : Q2Presentation.BoundaryFramedTarget) : TypeThe finite target group `Y`.), zetaYt.Y → Yt.Y → ZMod 21 yYt.Y=Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`. We use `a = b` as notation for `Eq a b`. A fundamental property of equality is that it is an equivalence relation. ``` variable (α : Type) (a b c d : α) variable (hab : a = b) (hcb : c = b) (hcd : c = d) example : a = d := Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd ``` Equality is much more than an equivalence relation, however. It has the important property that every assertion respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value. That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`. Example: ``` example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := Eq.subst h1 h2 example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := h1 ▸ h2 ``` The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`. For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality) Conventions for notations in identifiers: * The recommended spelling of `=` in identifiers is `eq`.0) (hz2∀ (y : Yt.Y), zeta y 1 = 0: ∀ (yYt.Y: YtQ2Presentation.BoundaryFramedTarget.YQ2Presentation.BoundaryFramedTarget.Y (self : Q2Presentation.BoundaryFramedTarget) : TypeThe finite target group `Y`.), zetaYt.Y → Yt.Y → ZMod 2yYt.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`.0) (hzc∀ (a b c : Yt.Y), zeta a b + zeta (a * b) c = zeta b c + zeta a (b * c): ∀ (aYt.YbYt.YcYt.Y: YtQ2Presentation.BoundaryFramedTarget.YQ2Presentation.BoundaryFramedTarget.Y (self : Q2Presentation.BoundaryFramedTarget) : TypeThe finite target group `Y`.), zetaYt.Y → Yt.Y → ZMod 2aYt.YbYt.Y+HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `+` in identifiers is `add`.zetaYt.Y → Yt.Y → ZMod 2(HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.aYt.Y*HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.bYt.Y)HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.cYt.Y=Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`. We use `a = b` as notation for `Eq a b`. A fundamental property of equality is that it is an equivalence relation. ``` variable (α : Type) (a b c d : α) variable (hab : a = b) (hcb : c = b) (hcd : c = d) example : a = d := Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd ``` Equality is much more than an equivalence relation, however. It has the important property that every assertion respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value. That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`. Example: ``` example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := Eq.subst h1 h2 example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := h1 ▸ h2 ``` The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`. For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality) Conventions for notations in identifiers: * The recommended spelling of `=` in identifiers is `eq`.zetaYt.Y → Yt.Y → ZMod 2bYt.YcYt.Y+HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `+` in identifiers is `add`.zetaYt.Y → Yt.Y → ZMod 2aYt.Y(HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.bYt.Y*HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.cYt.Y)HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.) : Q2Presentation.BoundaryFramedTargetQ2Presentation.BoundaryFramedTarget : Type 1A **boundary-framed marked target** `𝒴 = (Y, L_Y, π_Y, θ_Y)` (manuscript Definition 4.1, `def:framed`): a finite group `Y` with a normal finite `2`-subgroup `L_Y`, a surjection `π_Y : Y ↠ H` onto a finite *tame* quotient with kernel exactly `L_Y`, and an *elementary decoration* `θ_Y : Y → Multiplicative E` into the multiplicative image of a finite `𝔽₂`-vector space `E`. The pair `q_Y = (π_Y, θ_Y)` fixes both the tame quotient `Y / L_Y ≅ H` and the decoration.def Q2Presentation.Lifting.cocycleCoverTarget (Yt
Q2Presentation.BoundaryFramedTarget: Q2Presentation.BoundaryFramedTargetQ2Presentation.BoundaryFramedTarget : Type 1A **boundary-framed marked target** `𝒴 = (Y, L_Y, π_Y, θ_Y)` (manuscript Definition 4.1, `def:framed`): a finite group `Y` with a normal finite `2`-subgroup `L_Y`, a surjection `π_Y : Y ↠ H` onto a finite *tame* quotient with kernel exactly `L_Y`, and an *elementary decoration* `θ_Y : Y → Multiplicative E` into the multiplicative image of a finite `𝔽₂`-vector space `E`. The pair `q_Y = (π_Y, θ_Y)` fixes both the tame quotient `Y / L_Y ≅ H` and the decoration.) (zetaYt.Y → Yt.Y → ZMod 2: YtQ2Presentation.BoundaryFramedTarget.YQ2Presentation.BoundaryFramedTarget.Y (self : Q2Presentation.BoundaryFramedTarget) : TypeThe finite target group `Y`.→ YtQ2Presentation.BoundaryFramedTarget.YQ2Presentation.BoundaryFramedTarget.Y (self : Q2Presentation.BoundaryFramedTarget) : TypeThe finite target group `Y`.→ ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.2) (hz1∀ (y : Yt.Y), zeta 1 y = 0: ∀ (yYt.Y: YtQ2Presentation.BoundaryFramedTarget.YQ2Presentation.BoundaryFramedTarget.Y (self : Q2Presentation.BoundaryFramedTarget) : TypeThe finite target group `Y`.), zetaYt.Y → Yt.Y → ZMod 21 yYt.Y=Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`. We use `a = b` as notation for `Eq a b`. A fundamental property of equality is that it is an equivalence relation. ``` variable (α : Type) (a b c d : α) variable (hab : a = b) (hcb : c = b) (hcd : c = d) example : a = d := Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd ``` Equality is much more than an equivalence relation, however. It has the important property that every assertion respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value. That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`. Example: ``` example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := Eq.subst h1 h2 example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := h1 ▸ h2 ``` The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`. For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality) Conventions for notations in identifiers: * The recommended spelling of `=` in identifiers is `eq`.0) (hz2∀ (y : Yt.Y), zeta y 1 = 0: ∀ (yYt.Y: YtQ2Presentation.BoundaryFramedTarget.YQ2Presentation.BoundaryFramedTarget.Y (self : Q2Presentation.BoundaryFramedTarget) : TypeThe finite target group `Y`.), zetaYt.Y → Yt.Y → ZMod 2yYt.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`.0) (hzc∀ (a b c : Yt.Y), zeta a b + zeta (a * b) c = zeta b c + zeta a (b * c): ∀ (aYt.YbYt.YcYt.Y: YtQ2Presentation.BoundaryFramedTarget.YQ2Presentation.BoundaryFramedTarget.Y (self : Q2Presentation.BoundaryFramedTarget) : TypeThe finite target group `Y`.), zetaYt.Y → Yt.Y → ZMod 2aYt.YbYt.Y+HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `+` in identifiers is `add`.zetaYt.Y → Yt.Y → ZMod 2(HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.aYt.Y*HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.bYt.Y)HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.cYt.Y=Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`. We use `a = b` as notation for `Eq a b`. A fundamental property of equality is that it is an equivalence relation. ``` variable (α : Type) (a b c d : α) variable (hab : a = b) (hcb : c = b) (hcd : c = d) example : a = d := Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd ``` Equality is much more than an equivalence relation, however. It has the important property that every assertion respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value. That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`. Example: ``` example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := Eq.subst h1 h2 example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := h1 ▸ h2 ``` The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`. For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality) Conventions for notations in identifiers: * The recommended spelling of `=` in identifiers is `eq`.zetaYt.Y → Yt.Y → ZMod 2bYt.YcYt.Y+HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `+` in identifiers is `add`.zetaYt.Y → Yt.Y → ZMod 2aYt.Y(HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.bYt.Y*HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.cYt.Y)HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.) : Q2Presentation.BoundaryFramedTargetQ2Presentation.BoundaryFramedTarget : Type 1A **boundary-framed marked target** `𝒴 = (Y, L_Y, π_Y, θ_Y)` (manuscript Definition 4.1, `def:framed`): a finite group `Y` with a normal finite `2`-subgroup `L_Y`, a surjection `π_Y : Y ↠ H` onto a finite *tame* quotient with kernel exactly `L_Y`, and an *elementary decoration* `θ_Y : Y → Multiplicative E` into the multiplicative image of a finite `𝔽₂`-vector space `E`. The pair `q_Y = (π_Y, θ_Y)` fixes both the tame quotient `Y / L_Y ≅ H` and the decoration.**The cocycle-cover framed target**: the extension carries the PULLED-BACK boundary framing of `lem:covertransform` (l.3822–3830): `L̃ = p_ζ⁻¹(L)`, `π̃ = π ∘ p_ζ`, `θ̃ = θ ∘ p_ζ`, same `H` and `E`.
-
defdefined in Q2Presentation/Lifting/CoverLiftPartition.leancomplete
def Q2Presentation.TorsorProgram.coverLiftTotal (Yt
Q2Presentation.BoundaryFramedTarget: Q2Presentation.BoundaryFramedTargetQ2Presentation.BoundaryFramedTarget : Type 1A **boundary-framed marked target** `𝒴 = (Y, L_Y, π_Y, θ_Y)` (manuscript Definition 4.1, `def:framed`): a finite group `Y` with a normal finite `2`-subgroup `L_Y`, a surjection `π_Y : Y ↠ H` onto a finite *tame* quotient with kernel exactly `L_Y`, and an *elementary decoration* `θ_Y : Y → Multiplicative E` into the multiplicative image of a finite `𝔽₂`-vector space `E`. The pair `q_Y = (π_Y, θ_Y)` fixes both the tame quotient `Y / L_Y ≅ H` and the decoration.) (NSubgroup Yt.Y: SubgroupSubgroup.{u_3} (G : Type u_3) [Group G] : Type u_3A subgroup of a group `G` is a subset containing 1, closed under multiplication and closed under multiplicative inverse.YtQ2Presentation.BoundaryFramedTarget.YQ2Presentation.BoundaryFramedTarget.Y (self : Q2Presentation.BoundaryFramedTarget) : TypeThe finite target group `Y`.) [hNnN.Normal: NSubgroup Yt.Y.NormalSubgroup.Normal.{u_1} {G : Type u_1} [Group G] (H : Subgroup G) : PropA subgroup `H` is normal if whenever `n ∈ H`, then `g * n * g⁻¹ ∈ H` for every `g : G`] {ΓProfiniteGrp.{0}: ProfiniteGrp.{0}ProfiniteGrp.{u_1} : Type (u_1 + 1)The category of profinite groups. A term of this type consists of a profinite set with a topological group structure.} (BQ2Presentation.BoundaryPackage Γ: Q2Presentation.BoundaryPackageQ2Presentation.BoundaryPackage (Γ : ProfiniteGrp.{0}) : TypeA **boundary package** on a profinite group `Γ`: the uniform Stage-C data of a tame quotient, a maximal pro-`2` quotient, and a common unramified character `ℤ₂` through which both factor (manuscript Prop 3.14, `prop:compatiblemarking`; plan Turn 4 §6). The compatibility `tameMap ≫ ν_t = ν = pro2Map ≫ ν_2` records that the two markings agree on the full unramified coordinate, not merely modulo `2`.ΓProfiniteGrp.{0}) (FQ2Presentation.BoundaryFrame Yt: Q2Presentation.BoundaryFrameQ2Presentation.BoundaryFrame (Yt : Q2Presentation.BoundaryFramedTarget) : TypeA **boundary frame** on a boundary-framed target `𝒴` (manuscript `eq:beta`): the fixed compatible data `α : 𝕋_tame ↠ H`, `ψ : Π → Multiplicative E`, and the induced `β : ∂_bd → H × Multiplicative E`. Surjectivity of `α` records that `H` really is a tame quotient (manuscript: "Fix a finite tame quotient `H`, an epimorphism `α : 𝕋_A ↠ H`").YtQ2Presentation.BoundaryFramedTarget) : TypeA type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`.def Q2Presentation.TorsorProgram.coverLiftTotal (Yt
Q2Presentation.BoundaryFramedTarget: Q2Presentation.BoundaryFramedTargetQ2Presentation.BoundaryFramedTarget : Type 1A **boundary-framed marked target** `𝒴 = (Y, L_Y, π_Y, θ_Y)` (manuscript Definition 4.1, `def:framed`): a finite group `Y` with a normal finite `2`-subgroup `L_Y`, a surjection `π_Y : Y ↠ H` onto a finite *tame* quotient with kernel exactly `L_Y`, and an *elementary decoration* `θ_Y : Y → Multiplicative E` into the multiplicative image of a finite `𝔽₂`-vector space `E`. The pair `q_Y = (π_Y, θ_Y)` fixes both the tame quotient `Y / L_Y ≅ H` and the decoration.) (NSubgroup Yt.Y: SubgroupSubgroup.{u_3} (G : Type u_3) [Group G] : Type u_3A subgroup of a group `G` is a subset containing 1, closed under multiplication and closed under multiplicative inverse.YtQ2Presentation.BoundaryFramedTarget.YQ2Presentation.BoundaryFramedTarget.Y (self : Q2Presentation.BoundaryFramedTarget) : TypeThe finite target group `Y`.) [hNnN.Normal: NSubgroup Yt.Y.NormalSubgroup.Normal.{u_1} {G : Type u_1} [Group G] (H : Subgroup G) : PropA subgroup `H` is normal if whenever `n ∈ H`, then `g * n * g⁻¹ ∈ H` for every `g : G`] {ΓProfiniteGrp.{0}: ProfiniteGrp.{0}ProfiniteGrp.{u_1} : Type (u_1 + 1)The category of profinite groups. A term of this type consists of a profinite set with a topological group structure.} (BQ2Presentation.BoundaryPackage Γ: Q2Presentation.BoundaryPackageQ2Presentation.BoundaryPackage (Γ : ProfiniteGrp.{0}) : TypeA **boundary package** on a profinite group `Γ`: the uniform Stage-C data of a tame quotient, a maximal pro-`2` quotient, and a common unramified character `ℤ₂` through which both factor (manuscript Prop 3.14, `prop:compatiblemarking`; plan Turn 4 §6). The compatibility `tameMap ≫ ν_t = ν = pro2Map ≫ ν_2` records that the two markings agree on the full unramified coordinate, not merely modulo `2`.ΓProfiniteGrp.{0}) (FQ2Presentation.BoundaryFrame Yt: Q2Presentation.BoundaryFrameQ2Presentation.BoundaryFrame (Yt : Q2Presentation.BoundaryFramedTarget) : TypeA **boundary frame** on a boundary-framed target `𝒴` (manuscript `eq:beta`): the fixed compatible data `α : 𝕋_tame ↠ H`, `ψ : Π → Multiplicative E`, and the induced `β : ∂_bd → H × Multiplicative E`. Surjectivity of `α` records that `H` really is a tame quotient (manuscript: "Fix a finite tame quotient `H`, an epimorphism `α : 𝕋_A ↠ H`").YtQ2Presentation.BoundaryFramedTarget) : TypeA type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`.**The cover-lift total space**: framed continuous homs into the AMBIENT target whose projection to the child is onto (`lem:covertransform`: all lifts of all unobstructed exact-image maps at once; surjectivity onto the ambient target NOT imposed — these are the weak lifts).
Proved in §8 of the paper. Ingredients: Lemma 8.2.
Lemma 8.4 of the paper (Fourier inversion).
Let \Lambda be the character group of a finite \F_2-obstruction space and let
o:X\to \Lambda^\vee. If
m_\lambda=\#\{x\in X:\langle\lambda,o(x)\rangle=0\},
then
\#\{x:o(x)=0\} =\frac1{|\Lambda|}\sum_{\lambda\in \Lambda}(2m_\lambda-|X|).
Lean code for Lemma8.4●1 theorem
Associated Lean declarations
-
theoremdefined in Q2Presentation/Induction/Recursion.leancomplete
theorem Q2Presentation.Induction.Fourier.fourier_inversion.{u_1, u_2} {W
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 `(+)`.WType u_1] [ModuleModule.{u, v} (R : Type u) (M : Type v) [Semiring R] [AddCommMonoid M] : Type (max u v)A module is a generalization of vector spaces to a scalar semiring. It consists of a scalar semiring `R` and an additive monoid of "vectors" `M`, connected by a "scalar multiplication" operation `r • x : M` (where `r : R` and `x : M`) with some natural associativity and distributivity axioms similar to those on a ring.(ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.2) WType u_1] [FintypeFintype.{u_4} (α : Type u_4) : Type u_4`Fintype α` means that `α` is finite, i.e. there are only finitely many distinct elements of type `α`. The evidence of this is a finset `elems` (a list up to permutation without duplicates), together with a proof that everything of type `α` is in the list.WType u_1] [DecidableEqDecidableEq.{u} (α : Sort u) : Sort (max 1 u)Propositional equality is `Decidable` for all elements of a type. In other words, an instance of `DecidableEq α` is a means of deciding the proposition `a = b` is for all `a b : α`.WType u_1] {XType u_2: Type u_2A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`.} [FintypeFintype.{u_4} (α : Type u_4) : Type u_4`Fintype α` means that `α` is finite, i.e. there are only finitely many distinct elements of type `α`. The evidence of this is a finset `elems` (a list up to permutation without duplicates), together with a proof that everything of type `α` is in the list.XType u_2] (oX → W: XType u_2→ WType u_1) : ↑(Fintype.cardFintype.card.{u_4} (α : Type u_4) [Fintype α] : ℕ`card α` is the number of elements in `α`, defined when `α` is a fintype.(Module.DualModule.Dual.{u_4, u_5} (R : Type u_4) (M : Type u_5) [Semiring R] [AddCommMonoid M] [Module R M] : Type (max u_5 u_4)The left dual space of an R-module M is the R-module of linear maps `M → R`.(ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.2) WType u_1)) *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.↑(Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number. If `α` is infinite, `Nat.card α = 0`.{Subtype.{u} {α : Sort u} (p : α → Prop) : Sort (max 1 u)All the elements of a type that satisfy a predicate. `Subtype p`, usually written `{ x : α // p x }` or `{ x // p x }`, contains all elements `x : α` for which `p x` is true. Its constructor is a pair of the value and the proof that it satisfies the predicate. In run-time code, `{ x : α // p x }` is represented identically to `α`. There is a coercion from `{ x : α // p x }` to `α`, so elements of a subtype may be used where the underlying type is expected. Examples: * `{ n : Nat // n % 2 = 0 }` is the type of even numbers. * `{ xs : Array String // xs.size = 5 }` is the type of arrays with five `String`s. * Given `xs : List α`, `List { x : α // x ∈ xs }` is the type of lists in which all elements are contained in `xs`. Conventions for notations in identifiers: * The recommended spelling of `{ x // p x }` in identifiers is `subtype`.xX//Subtype.{u} {α : Sort u} (p : α → Prop) : Sort (max 1 u)All the elements of a type that satisfy a predicate. `Subtype p`, usually written `{ x : α // p x }` or `{ x // p x }`, contains all elements `x : α` for which `p x` is true. Its constructor is a pair of the value and the proof that it satisfies the predicate. In run-time code, `{ x : α // p x }` is represented identically to `α`. There is a coercion from `{ x : α // p x }` to `α`, so elements of a subtype may be used where the underlying type is expected. Examples: * `{ n : Nat // n % 2 = 0 }` is the type of even numbers. * `{ xs : Array String // xs.size = 5 }` is the type of arrays with five `String`s. * Given `xs : List α`, `List { x : α // x ∈ xs }` is the type of lists in which all elements are contained in `xs`. Conventions for notations in identifiers: * The recommended spelling of `{ x // p x }` in identifiers is `subtype`.oX → WxX=Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`. We use `a = b` as notation for `Eq a b`. A fundamental property of equality is that it is an equivalence relation. ``` variable (α : Type) (a b c d : α) variable (hab : a = b) (hcb : c = b) (hcd : c = d) example : a = d := Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd ``` Equality is much more than an equivalence relation, however. It has the important property that every assertion respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value. That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`. Example: ``` example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := Eq.subst h1 h2 example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := h1 ▸ h2 ``` The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`. For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality) Conventions for notations in identifiers: * The recommended spelling of `=` in identifiers is `eq`.0 }Subtype.{u} {α : Sort u} (p : α → Prop) : Sort (max 1 u)All the elements of a type that satisfy a predicate. `Subtype p`, usually written `{ x : α // p x }` or `{ x // p x }`, contains all elements `x : α` for which `p x` is true. Its constructor is a pair of the value and the proof that it satisfies the predicate. In run-time code, `{ x : α // p x }` is represented identically to `α`. There is a coercion from `{ x : α // p x }` to `α`, so elements of a subtype may be used where the underlying type is expected. Examples: * `{ n : Nat // n % 2 = 0 }` is the type of even numbers. * `{ xs : Array String // xs.size = 5 }` is the type of arrays with five `String`s. * Given `xs : List α`, `List { x : α // x ∈ xs }` is the type of lists in which all elements are contained in `xs`. Conventions for notations in identifiers: * The recommended spelling of `{ x // p x }` in identifiers is `subtype`.) =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`. We use `a = b` as notation for `Eq a b`. A fundamental property of equality is that it is an equivalence relation. ``` variable (α : Type) (a b c d : α) variable (hab : a = b) (hcb : c = b) (hcd : c = d) example : a = d := Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd ``` Equality is much more than an equivalence relation, however. It has the important property that every assertion respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value. That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`. Example: ``` example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := Eq.subst h1 h2 example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := h1 ▸ h2 ``` The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`. For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality) Conventions for notations in identifiers: * The recommended spelling of `=` in identifiers is `eq`.∑ χModule.Dual (ZMod 2) W, (HSub.hSub.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HSub α β γ] : α → β → γ`a - b` computes the difference of `a` and `b`. The meaning of this notation is type-dependent. * For natural numbers, this operator saturates at 0: `a - b = 0` when `a ≤ b`. Conventions for notations in identifiers: * The recommended spelling of `-` in identifiers is `sub` (when used as a binary operator).2 *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.↑(Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number. If `α` is infinite, `Nat.card α = 0`.{Subtype.{u} {α : Sort u} (p : α → Prop) : Sort (max 1 u)All the elements of a type that satisfy a predicate. `Subtype p`, usually written `{ x : α // p x }` or `{ x // p x }`, contains all elements `x : α` for which `p x` is true. Its constructor is a pair of the value and the proof that it satisfies the predicate. In run-time code, `{ x : α // p x }` is represented identically to `α`. There is a coercion from `{ x : α // p x }` to `α`, so elements of a subtype may be used where the underlying type is expected. Examples: * `{ n : Nat // n % 2 = 0 }` is the type of even numbers. * `{ xs : Array String // xs.size = 5 }` is the type of arrays with five `String`s. * Given `xs : List α`, `List { x : α // x ∈ xs }` is the type of lists in which all elements are contained in `xs`. Conventions for notations in identifiers: * The recommended spelling of `{ x // p x }` in identifiers is `subtype`.xX//Subtype.{u} {α : Sort u} (p : α → Prop) : Sort (max 1 u)All the elements of a type that satisfy a predicate. `Subtype p`, usually written `{ x : α // p x }` or `{ x // p x }`, contains all elements `x : α` for which `p x` is true. Its constructor is a pair of the value and the proof that it satisfies the predicate. In run-time code, `{ x : α // p x }` is represented identically to `α`. There is a coercion from `{ x : α // p x }` to `α`, so elements of a subtype may be used where the underlying type is expected. Examples: * `{ n : Nat // n % 2 = 0 }` is the type of even numbers. * `{ xs : Array String // xs.size = 5 }` is the type of arrays with five `String`s. * Given `xs : List α`, `List { x : α // x ∈ xs }` is the type of lists in which all elements are contained in `xs`. Conventions for notations in identifiers: * The recommended spelling of `{ x // p x }` in identifiers is `subtype`.χModule.Dual (ZMod 2) W(oX → WxX) =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`. We use `a = b` as notation for `Eq a b`. A fundamental property of equality is that it is an equivalence relation. ``` variable (α : Type) (a b c d : α) variable (hab : a = b) (hcb : c = b) (hcd : c = d) example : a = d := Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd ``` Equality is much more than an equivalence relation, however. It has the important property that every assertion respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value. That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`. Example: ``` example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := Eq.subst h1 h2 example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := h1 ▸ h2 ``` The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`. For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality) Conventions for notations in identifiers: * The recommended spelling of `=` in identifiers is `eq`.0 }Subtype.{u} {α : Sort u} (p : α → Prop) : Sort (max 1 u)All the elements of a type that satisfy a predicate. `Subtype p`, usually written `{ x : α // p x }` or `{ x // p x }`, contains all elements `x : α` for which `p x` is true. Its constructor is a pair of the value and the proof that it satisfies the predicate. In run-time code, `{ x : α // p x }` is represented identically to `α`. There is a coercion from `{ x : α // p x }` to `α`, so elements of a subtype may be used where the underlying type is expected. Examples: * `{ n : Nat // n % 2 = 0 }` is the type of even numbers. * `{ xs : Array String // xs.size = 5 }` is the type of arrays with five `String`s. * Given `xs : List α`, `List { x : α // x ∈ xs }` is the type of lists in which all elements are contained in `xs`. Conventions for notations in identifiers: * The recommended spelling of `{ x // p x }` in identifiers is `subtype`.) -HSub.hSub.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HSub α β γ] : α → β → γ`a - b` computes the difference of `a` and `b`. The meaning of this notation is type-dependent. * For natural numbers, this operator saturates at 0: `a - b = 0` when `a ≤ b`. Conventions for notations in identifiers: * The recommended spelling of `-` in identifiers is `sub` (when used as a binary operator).↑(Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number. If `α` is infinite, `Nat.card α = 0`.XType u_2))HSub.hSub.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HSub α β γ] : α → β → γ`a - b` computes the difference of `a` and `b`. The meaning of this notation is type-dependent. * For natural numbers, this operator saturates at 0: `a - b = 0` when `a ≤ b`. Conventions for notations in identifiers: * The recommended spelling of `-` in identifiers is `sub` (when used as a binary operator).theorem Q2Presentation.Induction.Fourier.fourier_inversion.{u_1, u_2} {W
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 `(+)`.WType u_1] [ModuleModule.{u, v} (R : Type u) (M : Type v) [Semiring R] [AddCommMonoid M] : Type (max u v)A module is a generalization of vector spaces to a scalar semiring. It consists of a scalar semiring `R` and an additive monoid of "vectors" `M`, connected by a "scalar multiplication" operation `r • x : M` (where `r : R` and `x : M`) with some natural associativity and distributivity axioms similar to those on a ring.(ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.2) WType u_1] [FintypeFintype.{u_4} (α : Type u_4) : Type u_4`Fintype α` means that `α` is finite, i.e. there are only finitely many distinct elements of type `α`. The evidence of this is a finset `elems` (a list up to permutation without duplicates), together with a proof that everything of type `α` is in the list.WType u_1] [DecidableEqDecidableEq.{u} (α : Sort u) : Sort (max 1 u)Propositional equality is `Decidable` for all elements of a type. In other words, an instance of `DecidableEq α` is a means of deciding the proposition `a = b` is for all `a b : α`.WType u_1] {XType u_2: Type u_2A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`.} [FintypeFintype.{u_4} (α : Type u_4) : Type u_4`Fintype α` means that `α` is finite, i.e. there are only finitely many distinct elements of type `α`. The evidence of this is a finset `elems` (a list up to permutation without duplicates), together with a proof that everything of type `α` is in the list.XType u_2] (oX → W: XType u_2→ WType u_1) : ↑(Fintype.cardFintype.card.{u_4} (α : Type u_4) [Fintype α] : ℕ`card α` is the number of elements in `α`, defined when `α` is a fintype.(Module.DualModule.Dual.{u_4, u_5} (R : Type u_4) (M : Type u_5) [Semiring R] [AddCommMonoid M] [Module R M] : Type (max u_5 u_4)The left dual space of an R-module M is the R-module of linear maps `M → R`.(ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.2) WType u_1)) *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.↑(Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number. If `α` is infinite, `Nat.card α = 0`.{Subtype.{u} {α : Sort u} (p : α → Prop) : Sort (max 1 u)All the elements of a type that satisfy a predicate. `Subtype p`, usually written `{ x : α // p x }` or `{ x // p x }`, contains all elements `x : α` for which `p x` is true. Its constructor is a pair of the value and the proof that it satisfies the predicate. In run-time code, `{ x : α // p x }` is represented identically to `α`. There is a coercion from `{ x : α // p x }` to `α`, so elements of a subtype may be used where the underlying type is expected. Examples: * `{ n : Nat // n % 2 = 0 }` is the type of even numbers. * `{ xs : Array String // xs.size = 5 }` is the type of arrays with five `String`s. * Given `xs : List α`, `List { x : α // x ∈ xs }` is the type of lists in which all elements are contained in `xs`. Conventions for notations in identifiers: * The recommended spelling of `{ x // p x }` in identifiers is `subtype`.xX//Subtype.{u} {α : Sort u} (p : α → Prop) : Sort (max 1 u)All the elements of a type that satisfy a predicate. `Subtype p`, usually written `{ x : α // p x }` or `{ x // p x }`, contains all elements `x : α` for which `p x` is true. Its constructor is a pair of the value and the proof that it satisfies the predicate. In run-time code, `{ x : α // p x }` is represented identically to `α`. There is a coercion from `{ x : α // p x }` to `α`, so elements of a subtype may be used where the underlying type is expected. Examples: * `{ n : Nat // n % 2 = 0 }` is the type of even numbers. * `{ xs : Array String // xs.size = 5 }` is the type of arrays with five `String`s. * Given `xs : List α`, `List { x : α // x ∈ xs }` is the type of lists in which all elements are contained in `xs`. Conventions for notations in identifiers: * The recommended spelling of `{ x // p x }` in identifiers is `subtype`.oX → WxX=Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`. We use `a = b` as notation for `Eq a b`. A fundamental property of equality is that it is an equivalence relation. ``` variable (α : Type) (a b c d : α) variable (hab : a = b) (hcb : c = b) (hcd : c = d) example : a = d := Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd ``` Equality is much more than an equivalence relation, however. It has the important property that every assertion respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value. That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`. Example: ``` example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := Eq.subst h1 h2 example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := h1 ▸ h2 ``` The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`. For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality) Conventions for notations in identifiers: * The recommended spelling of `=` in identifiers is `eq`.0 }Subtype.{u} {α : Sort u} (p : α → Prop) : Sort (max 1 u)All the elements of a type that satisfy a predicate. `Subtype p`, usually written `{ x : α // p x }` or `{ x // p x }`, contains all elements `x : α` for which `p x` is true. Its constructor is a pair of the value and the proof that it satisfies the predicate. In run-time code, `{ x : α // p x }` is represented identically to `α`. There is a coercion from `{ x : α // p x }` to `α`, so elements of a subtype may be used where the underlying type is expected. Examples: * `{ n : Nat // n % 2 = 0 }` is the type of even numbers. * `{ xs : Array String // xs.size = 5 }` is the type of arrays with five `String`s. * Given `xs : List α`, `List { x : α // x ∈ xs }` is the type of lists in which all elements are contained in `xs`. Conventions for notations in identifiers: * The recommended spelling of `{ x // p x }` in identifiers is `subtype`.) =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`. We use `a = b` as notation for `Eq a b`. A fundamental property of equality is that it is an equivalence relation. ``` variable (α : Type) (a b c d : α) variable (hab : a = b) (hcb : c = b) (hcd : c = d) example : a = d := Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd ``` Equality is much more than an equivalence relation, however. It has the important property that every assertion respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value. That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`. Example: ``` example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := Eq.subst h1 h2 example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := h1 ▸ h2 ``` The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`. For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality) Conventions for notations in identifiers: * The recommended spelling of `=` in identifiers is `eq`.∑ χModule.Dual (ZMod 2) W, (HSub.hSub.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HSub α β γ] : α → β → γ`a - b` computes the difference of `a` and `b`. The meaning of this notation is type-dependent. * For natural numbers, this operator saturates at 0: `a - b = 0` when `a ≤ b`. Conventions for notations in identifiers: * The recommended spelling of `-` in identifiers is `sub` (when used as a binary operator).2 *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.↑(Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number. If `α` is infinite, `Nat.card α = 0`.{Subtype.{u} {α : Sort u} (p : α → Prop) : Sort (max 1 u)All the elements of a type that satisfy a predicate. `Subtype p`, usually written `{ x : α // p x }` or `{ x // p x }`, contains all elements `x : α` for which `p x` is true. Its constructor is a pair of the value and the proof that it satisfies the predicate. In run-time code, `{ x : α // p x }` is represented identically to `α`. There is a coercion from `{ x : α // p x }` to `α`, so elements of a subtype may be used where the underlying type is expected. Examples: * `{ n : Nat // n % 2 = 0 }` is the type of even numbers. * `{ xs : Array String // xs.size = 5 }` is the type of arrays with five `String`s. * Given `xs : List α`, `List { x : α // x ∈ xs }` is the type of lists in which all elements are contained in `xs`. Conventions for notations in identifiers: * The recommended spelling of `{ x // p x }` in identifiers is `subtype`.xX//Subtype.{u} {α : Sort u} (p : α → Prop) : Sort (max 1 u)All the elements of a type that satisfy a predicate. `Subtype p`, usually written `{ x : α // p x }` or `{ x // p x }`, contains all elements `x : α` for which `p x` is true. Its constructor is a pair of the value and the proof that it satisfies the predicate. In run-time code, `{ x : α // p x }` is represented identically to `α`. There is a coercion from `{ x : α // p x }` to `α`, so elements of a subtype may be used where the underlying type is expected. Examples: * `{ n : Nat // n % 2 = 0 }` is the type of even numbers. * `{ xs : Array String // xs.size = 5 }` is the type of arrays with five `String`s. * Given `xs : List α`, `List { x : α // x ∈ xs }` is the type of lists in which all elements are contained in `xs`. Conventions for notations in identifiers: * The recommended spelling of `{ x // p x }` in identifiers is `subtype`.χModule.Dual (ZMod 2) W(oX → WxX) =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`. We use `a = b` as notation for `Eq a b`. A fundamental property of equality is that it is an equivalence relation. ``` variable (α : Type) (a b c d : α) variable (hab : a = b) (hcb : c = b) (hcd : c = d) example : a = d := Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd ``` Equality is much more than an equivalence relation, however. It has the important property that every assertion respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value. That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`. Example: ``` example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := Eq.subst h1 h2 example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := h1 ▸ h2 ``` The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`. For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality) Conventions for notations in identifiers: * The recommended spelling of `=` in identifiers is `eq`.0 }Subtype.{u} {α : Sort u} (p : α → Prop) : Sort (max 1 u)All the elements of a type that satisfy a predicate. `Subtype p`, usually written `{ x : α // p x }` or `{ x // p x }`, contains all elements `x : α` for which `p x` is true. Its constructor is a pair of the value and the proof that it satisfies the predicate. In run-time code, `{ x : α // p x }` is represented identically to `α`. There is a coercion from `{ x : α // p x }` to `α`, so elements of a subtype may be used where the underlying type is expected. Examples: * `{ n : Nat // n % 2 = 0 }` is the type of even numbers. * `{ xs : Array String // xs.size = 5 }` is the type of arrays with five `String`s. * Given `xs : List α`, `List { x : α // x ∈ xs }` is the type of lists in which all elements are contained in `xs`. Conventions for notations in identifiers: * The recommended spelling of `{ x // p x }` in identifiers is `subtype`.) -HSub.hSub.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HSub α β γ] : α → β → γ`a - b` computes the difference of `a` and `b`. The meaning of this notation is type-dependent. * For natural numbers, this operator saturates at 0: `a - b = 0` when `a ≤ b`. Conventions for notations in identifiers: * The recommended spelling of `-` in identifiers is `sub` (when used as a binary operator).↑(Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number. If `α` is infinite, `Nat.card α = 0`.XType u_2))HSub.hSub.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HSub α β γ] : α → β → γ`a - b` computes the difference of `a` and `b`. The meaning of this notation is type-dependent. * For natural numbers, this operator saturates at 0: `a - b = 0` when `a ≤ b`. Conventions for notations in identifiers: * The recommended spelling of `-` in identifiers is `sub` (when used as a binary operator).**Finite Fourier inversion over `𝔽₂`** (manuscript `lem:fourier`, `eq:fourier`, l.3866). For a finite index set `X` and `o : X → W` into a finite `𝔽₂`-space `W`, the number of `x` with `o x = 0`, scaled by `|Ŵ|`, equals the signed sum of the partial counts `m_χ = #{x : χ (o x) = 0}`: ``` |Ŵ| · #{x : o x = 0} = Σ_χ (2·m_χ − |X|). ``` The arithmetic heart of the central-Frattini recursion `eq:recursionR1` and the phase-cover transform `eq:recursionR5a`. Proven sorry-free from character orthogonality by Fubini.
-
Q2Presentation.Quadratic.one_add_signChar[complete] -
Q2Presentation.Quadratic.sum_signChar_dual[complete] -
Q2Presentation.Quadratic.QuadF2.polar_bijective[complete] -
Q2Presentation.Quadratic.constrainedGauss_count[complete] -
Q2Presentation.Quadratic.constrainedGauss_count_pure[complete] -
Q2Presentation.Quadratic.constrainedGauss_count_exists[complete]
Lemma 8.5 of the paper (Constrained quadratic Gauss transform).
Let W,E be finite \F_2-vector spaces, let L:W\twoheadrightarrow E, and
let Q:W\to\F_2 be nonsingular with polar form b_Q. For
\kappa\in E and \epsilon\in\F_2, put
N(\kappa,\epsilon)=\#\{x\in W:Lx=\kappa,\ Q(x)=\epsilon\}.
For \chi\in E^\vee, let a_\chi be uniquely determined by
b_Q(a_\chi,x)=\chi(Lx).
Then
N(\kappa,\epsilon) =\frac1{2|E|}\left( |W|+G(Q)\sum_{\chi\in E^\vee} (-1)^{\chi(\kappa)+\epsilon+Q(a_\chi)} \right),
where G(Q)=\sum_{x\in W}(-1)^{Q(x)}.
Lean code for Lemma8.5●6 theorems
Associated Lean declarations
-
Q2Presentation.Quadratic.one_add_signChar[complete]
-
Q2Presentation.Quadratic.sum_signChar_dual[complete]
-
Q2Presentation.Quadratic.QuadF2.polar_bijective[complete]
-
Q2Presentation.Quadratic.constrainedGauss_count[complete]
-
Q2Presentation.Quadratic.constrainedGauss_count_pure[complete]
-
Q2Presentation.Quadratic.constrainedGauss_count_exists[complete]
-
Q2Presentation.Quadratic.one_add_signChar[complete] -
Q2Presentation.Quadratic.sum_signChar_dual[complete] -
Q2Presentation.Quadratic.QuadF2.polar_bijective[complete] -
Q2Presentation.Quadratic.constrainedGauss_count[complete] -
Q2Presentation.Quadratic.constrainedGauss_count_pure[complete] -
Q2Presentation.Quadratic.constrainedGauss_count_exists[complete]
-
theoremdefined in Q2Presentation/Quadratic/ConstrainedGauss.leancomplete
theorem Q2Presentation.Quadratic.one_add_signChar (a
ZMod 2: ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.2) : 1 +HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `+` in identifiers is `add`.Q2Presentation.Quadratic.Dickson.signCharQ2Presentation.Quadratic.Dickson.signChar (a : ZMod 2) : ℤThe sign character `χ(0) = 1`, `χ(1) = -1`.aZMod 2=Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`. We use `a = b` as notation for `Eq a b`. A fundamental property of equality is that it is an equivalence relation. ``` variable (α : Type) (a b c d : α) variable (hab : a = b) (hcb : c = b) (hcd : c = d) example : a = d := Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd ``` Equality is much more than an equivalence relation, however. It has the important property that every assertion respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value. That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`. Example: ``` example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := Eq.subst h1 h2 example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := h1 ▸ h2 ``` The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`. For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality) Conventions for notations in identifiers: * The recommended spelling of `=` in identifiers is `eq`.ifite.{u} {α : Sort u} (c : Prop) [h : Decidable c] (t e : α) : α`if c then t else e` is notation for `ite c t e`, "if-then-else", which decides to return `t` or `e` depending on whether `c` is true or false. The explicit argument `c : Prop` does not have any actual computational content, but there is an additional `[Decidable c]` argument synthesized by typeclass inference which actually determines how to evaluate `c` to true or false. Write `if h : c then t else e` instead for a "dependent if-then-else" `dite`, which allows `t`/`e` to use the fact that `c` is true/false.aZMod 2=Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`. We use `a = b` as notation for `Eq a b`. A fundamental property of equality is that it is an equivalence relation. ``` variable (α : Type) (a b c d : α) variable (hab : a = b) (hcb : c = b) (hcd : c = d) example : a = d := Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd ``` Equality is much more than an equivalence relation, however. It has the important property that every assertion respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value. That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`. Example: ``` example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := Eq.subst h1 h2 example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := h1 ▸ h2 ``` The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`. For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality) Conventions for notations in identifiers: * The recommended spelling of `=` in identifiers is `eq`.0 thenite.{u} {α : Sort u} (c : Prop) [h : Decidable c] (t e : α) : α`if c then t else e` is notation for `ite c t e`, "if-then-else", which decides to return `t` or `e` depending on whether `c` is true or false. The explicit argument `c : Prop` does not have any actual computational content, but there is an additional `[Decidable c]` argument synthesized by typeclass inference which actually determines how to evaluate `c` to true or false. Write `if h : c then t else e` instead for a "dependent if-then-else" `dite`, which allows `t`/`e` to use the fact that `c` is true/false.2 elseite.{u} {α : Sort u} (c : Prop) [h : Decidable c] (t e : α) : α`if c then t else e` is notation for `ite c t e`, "if-then-else", which decides to return `t` or `e` depending on whether `c` is true or false. The explicit argument `c : Prop` does not have any actual computational content, but there is an additional `[Decidable c]` argument synthesized by typeclass inference which actually determines how to evaluate `c` to true or false. Write `if h : c then t else e` instead for a "dependent if-then-else" `dite`, which allows `t`/`e` to use the fact that `c` is true/false.0theorem Q2Presentation.Quadratic.one_add_signChar (a
ZMod 2: ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.2) : 1 +HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `+` in identifiers is `add`.Q2Presentation.Quadratic.Dickson.signCharQ2Presentation.Quadratic.Dickson.signChar (a : ZMod 2) : ℤThe sign character `χ(0) = 1`, `χ(1) = -1`.aZMod 2=Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`. We use `a = b` as notation for `Eq a b`. A fundamental property of equality is that it is an equivalence relation. ``` variable (α : Type) (a b c d : α) variable (hab : a = b) (hcb : c = b) (hcd : c = d) example : a = d := Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd ``` Equality is much more than an equivalence relation, however. It has the important property that every assertion respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value. That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`. Example: ``` example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := Eq.subst h1 h2 example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := h1 ▸ h2 ``` The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`. For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality) Conventions for notations in identifiers: * The recommended spelling of `=` in identifiers is `eq`.ifite.{u} {α : Sort u} (c : Prop) [h : Decidable c] (t e : α) : α`if c then t else e` is notation for `ite c t e`, "if-then-else", which decides to return `t` or `e` depending on whether `c` is true or false. The explicit argument `c : Prop` does not have any actual computational content, but there is an additional `[Decidable c]` argument synthesized by typeclass inference which actually determines how to evaluate `c` to true or false. Write `if h : c then t else e` instead for a "dependent if-then-else" `dite`, which allows `t`/`e` to use the fact that `c` is true/false.aZMod 2=Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`. We use `a = b` as notation for `Eq a b`. A fundamental property of equality is that it is an equivalence relation. ``` variable (α : Type) (a b c d : α) variable (hab : a = b) (hcb : c = b) (hcd : c = d) example : a = d := Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd ``` Equality is much more than an equivalence relation, however. It has the important property that every assertion respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value. That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`. Example: ``` example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := Eq.subst h1 h2 example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := h1 ▸ h2 ``` The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`. For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality) Conventions for notations in identifiers: * The recommended spelling of `=` in identifiers is `eq`.0 thenite.{u} {α : Sort u} (c : Prop) [h : Decidable c] (t e : α) : α`if c then t else e` is notation for `ite c t e`, "if-then-else", which decides to return `t` or `e` depending on whether `c` is true or false. The explicit argument `c : Prop` does not have any actual computational content, but there is an additional `[Decidable c]` argument synthesized by typeclass inference which actually determines how to evaluate `c` to true or false. Write `if h : c then t else e` instead for a "dependent if-then-else" `dite`, which allows `t`/`e` to use the fact that `c` is true/false.2 elseite.{u} {α : Sort u} (c : Prop) [h : Decidable c] (t e : α) : α`if c then t else e` is notation for `ite c t e`, "if-then-else", which decides to return `t` or `e` depending on whether `c` is true or false. The explicit argument `c : Prop` does not have any actual computational content, but there is an additional `[Decidable c]` argument synthesized by typeclass inference which actually determines how to evaluate `c` to true or false. Write `if h : c then t else e` instead for a "dependent if-then-else" `dite`, which allows `t`/`e` to use the fact that `c` is true/false.0`1 + χ(a) = 2·[a = 0]` for the sign character (the `ε`-indicator expansion of `lem:constrainedgauss`, l.3898–3899).
-
theoremdefined in Q2Presentation/Quadratic/ConstrainedGauss.leancomplete
theorem Q2Presentation.Quadratic.sum_signChar_dual.{u_1} {E
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 `(+)`.EType u_1] [ModuleModule.{u, v} (R : Type u) (M : Type v) [Semiring R] [AddCommMonoid M] : Type (max u v)A module is a generalization of vector spaces to a scalar semiring. It consists of a scalar semiring `R` and an additive monoid of "vectors" `M`, connected by a "scalar multiplication" operation `r • x : M` (where `r : R` and `x : M`) with some natural associativity and distributivity axioms similar to those on a ring.(ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.2) EType u_1] [FintypeFintype.{u_4} (α : Type u_4) : Type u_4`Fintype α` means that `α` is finite, i.e. there are only finitely many distinct elements of type `α`. The evidence of this is a finset `elems` (a list up to permutation without duplicates), together with a proof that everything of type `α` is in the list.(Module.DualModule.Dual.{u_4, u_5} (R : Type u_4) (M : Type u_5) [Semiring R] [AddCommMonoid M] [Module R M] : Type (max u_5 u_4)The left dual space of an R-module M is the R-module of linear maps `M → R`.(ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.2) EType u_1)] (vE: EType u_1) : ∑ χModule.Dual (ZMod 2) E, Q2Presentation.Quadratic.Dickson.signCharQ2Presentation.Quadratic.Dickson.signChar (a : ZMod 2) : ℤThe sign character `χ(0) = 1`, `χ(1) = -1`.(χModule.Dual (ZMod 2) EvE) =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`. We use `a = b` as notation for `Eq a b`. A fundamental property of equality is that it is an equivalence relation. ``` variable (α : Type) (a b c d : α) variable (hab : a = b) (hcb : c = b) (hcd : c = d) example : a = d := Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd ``` Equality is much more than an equivalence relation, however. It has the important property that every assertion respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value. That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`. Example: ``` example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := Eq.subst h1 h2 example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := h1 ▸ h2 ``` The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`. For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality) Conventions for notations in identifiers: * The recommended spelling of `=` in identifiers is `eq`.ifite.{u} {α : Sort u} (c : Prop) [h : Decidable c] (t e : α) : α`if c then t else e` is notation for `ite c t e`, "if-then-else", which decides to return `t` or `e` depending on whether `c` is true or false. The explicit argument `c : Prop` does not have any actual computational content, but there is an additional `[Decidable c]` argument synthesized by typeclass inference which actually determines how to evaluate `c` to true or false. Write `if h : c then t else e` instead for a "dependent if-then-else" `dite`, which allows `t`/`e` to use the fact that `c` is true/false.vE=Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`. We use `a = b` as notation for `Eq a b`. A fundamental property of equality is that it is an equivalence relation. ``` variable (α : Type) (a b c d : α) variable (hab : a = b) (hcb : c = b) (hcd : c = d) example : a = d := Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd ``` Equality is much more than an equivalence relation, however. It has the important property that every assertion respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value. That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`. Example: ``` example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := Eq.subst h1 h2 example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := h1 ▸ h2 ``` The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`. For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality) Conventions for notations in identifiers: * The recommended spelling of `=` in identifiers is `eq`.0 thenite.{u} {α : Sort u} (c : Prop) [h : Decidable c] (t e : α) : α`if c then t else e` is notation for `ite c t e`, "if-then-else", which decides to return `t` or `e` depending on whether `c` is true or false. The explicit argument `c : Prop` does not have any actual computational content, but there is an additional `[Decidable c]` argument synthesized by typeclass inference which actually determines how to evaluate `c` to true or false. Write `if h : c then t else e` instead for a "dependent if-then-else" `dite`, which allows `t`/`e` to use the fact that `c` is true/false.↑(Fintype.cardFintype.card.{u_4} (α : Type u_4) [Fintype α] : ℕ`card α` is the number of elements in `α`, defined when `α` is a fintype.(Module.DualModule.Dual.{u_4, u_5} (R : Type u_4) (M : Type u_5) [Semiring R] [AddCommMonoid M] [Module R M] : Type (max u_5 u_4)The left dual space of an R-module M is the R-module of linear maps `M → R`.(ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.2) EType u_1)) elseite.{u} {α : Sort u} (c : Prop) [h : Decidable c] (t e : α) : α`if c then t else e` is notation for `ite c t e`, "if-then-else", which decides to return `t` or `e` depending on whether `c` is true or false. The explicit argument `c : Prop` does not have any actual computational content, but there is an additional `[Decidable c]` argument synthesized by typeclass inference which actually determines how to evaluate `c` to true or false. Write `if h : c then t else e` instead for a "dependent if-then-else" `dite`, which allows `t`/`e` to use the fact that `c` is true/false.0theorem Q2Presentation.Quadratic.sum_signChar_dual.{u_1} {E
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 `(+)`.EType u_1] [ModuleModule.{u, v} (R : Type u) (M : Type v) [Semiring R] [AddCommMonoid M] : Type (max u v)A module is a generalization of vector spaces to a scalar semiring. It consists of a scalar semiring `R` and an additive monoid of "vectors" `M`, connected by a "scalar multiplication" operation `r • x : M` (where `r : R` and `x : M`) with some natural associativity and distributivity axioms similar to those on a ring.(ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.2) EType u_1] [FintypeFintype.{u_4} (α : Type u_4) : Type u_4`Fintype α` means that `α` is finite, i.e. there are only finitely many distinct elements of type `α`. The evidence of this is a finset `elems` (a list up to permutation without duplicates), together with a proof that everything of type `α` is in the list.(Module.DualModule.Dual.{u_4, u_5} (R : Type u_4) (M : Type u_5) [Semiring R] [AddCommMonoid M] [Module R M] : Type (max u_5 u_4)The left dual space of an R-module M is the R-module of linear maps `M → R`.(ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.2) EType u_1)] (vE: EType u_1) : ∑ χModule.Dual (ZMod 2) E, Q2Presentation.Quadratic.Dickson.signCharQ2Presentation.Quadratic.Dickson.signChar (a : ZMod 2) : ℤThe sign character `χ(0) = 1`, `χ(1) = -1`.(χModule.Dual (ZMod 2) EvE) =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`. We use `a = b` as notation for `Eq a b`. A fundamental property of equality is that it is an equivalence relation. ``` variable (α : Type) (a b c d : α) variable (hab : a = b) (hcb : c = b) (hcd : c = d) example : a = d := Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd ``` Equality is much more than an equivalence relation, however. It has the important property that every assertion respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value. That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`. Example: ``` example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := Eq.subst h1 h2 example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := h1 ▸ h2 ``` The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`. For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality) Conventions for notations in identifiers: * The recommended spelling of `=` in identifiers is `eq`.ifite.{u} {α : Sort u} (c : Prop) [h : Decidable c] (t e : α) : α`if c then t else e` is notation for `ite c t e`, "if-then-else", which decides to return `t` or `e` depending on whether `c` is true or false. The explicit argument `c : Prop` does not have any actual computational content, but there is an additional `[Decidable c]` argument synthesized by typeclass inference which actually determines how to evaluate `c` to true or false. Write `if h : c then t else e` instead for a "dependent if-then-else" `dite`, which allows `t`/`e` to use the fact that `c` is true/false.vE=Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`. We use `a = b` as notation for `Eq a b`. A fundamental property of equality is that it is an equivalence relation. ``` variable (α : Type) (a b c d : α) variable (hab : a = b) (hcb : c = b) (hcd : c = d) example : a = d := Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd ``` Equality is much more than an equivalence relation, however. It has the important property that every assertion respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value. That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`. Example: ``` example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := Eq.subst h1 h2 example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := h1 ▸ h2 ``` The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`. For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality) Conventions for notations in identifiers: * The recommended spelling of `=` in identifiers is `eq`.0 thenite.{u} {α : Sort u} (c : Prop) [h : Decidable c] (t e : α) : α`if c then t else e` is notation for `ite c t e`, "if-then-else", which decides to return `t` or `e` depending on whether `c` is true or false. The explicit argument `c : Prop` does not have any actual computational content, but there is an additional `[Decidable c]` argument synthesized by typeclass inference which actually determines how to evaluate `c` to true or false. Write `if h : c then t else e` instead for a "dependent if-then-else" `dite`, which allows `t`/`e` to use the fact that `c` is true/false.↑(Fintype.cardFintype.card.{u_4} (α : Type u_4) [Fintype α] : ℕ`card α` is the number of elements in `α`, defined when `α` is a fintype.(Module.DualModule.Dual.{u_4, u_5} (R : Type u_4) (M : Type u_5) [Semiring R] [AddCommMonoid M] [Module R M] : Type (max u_5 u_4)The left dual space of an R-module M is the R-module of linear maps `M → R`.(ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.2) EType u_1)) elseite.{u} {α : Sort u} (c : Prop) [h : Decidable c] (t e : α) : α`if c then t else e` is notation for `ite c t e`, "if-then-else", which decides to return `t` or `e` depending on whether `c` is true or false. The explicit argument `c : Prop` does not have any actual computational content, but there is an additional `[Decidable c]` argument synthesized by typeclass inference which actually determines how to evaluate `c` to true or false. Write `if h : c then t else e` instead for a "dependent if-then-else" `dite`, which allows `t`/`e` to use the fact that `c` is true/false.0**Dual orthogonality over `F₂`**: `∑_{χ ∈ E^∨} (-1)^{χ(v)}` is `|E^∨|` at `v = 0` and `0` otherwise (the `κ`-indicator expansion of `lem:constrainedgauss`, l.3898–3899; nontrivial characters cancel by translation). -
theoremdefined in Q2Presentation/Quadratic/ConstrainedGauss.leancomplete
theorem Q2Presentation.Quadratic.QuadF2.polar_bijective.{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] [FiniteFinite.{u_3} (α : Sort u_3) : PropA type is `Finite` if it is in bijective correspondence to some `Fin n`. This is similar to `Fintype`, but `Finite` is a proposition rather than data. A particular benefit to this is that `Finite` instances are definitionally equal to one another (due to proof irrelevance) rather than being merely propositionally equal, and, furthermore, `Finite` instances generally avoid the need for `Decidable` instances. One other notable difference is that `Finite` allows there to be `Finite p` instances for all `p : Prop`, which is not allowed by `Fintype` due to universe constraints. An application of this is that `Finite (x ∈ s → β x)` follows from the general instance for pi types, assuming `[∀ x, Finite (β x)]`. Implementation note: this is a reason `Finite α` is not defined as `Nonempty (Fintype α)`. Every `Fintype` instance provides a `Finite` instance via `Finite.of_fintype`. Conversely, one can noncomputably create a `Fintype` instance from a `Finite` instance via `Fintype.ofFinite`. In a proof one might write ```lean have := Fintype.ofFinite α ``` to obtain such an instance. Do not write noncomputable `Fintype` instances; instead write `Finite` instances and use this `Fintype.ofFinite` interface. The `Fintype` instances should be relied upon to be computable for evaluation purposes. Theorems should use `Finite` instead of `Fintype`, unless definitions in the theorem statement require `Fintype`. Definitions should prefer `Finite` as well, unless it is important that the definitions are meant to be computable in the reduction or `#eval` sense.VType u_1] (qQ2Presentation.Quadratic.QuadF2 V: Q2Presentation.Quadratic.QuadF2Q2Presentation.Quadratic.QuadF2.{u_2} (V : Type u_2) [AddCommGroup V] [Module (ZMod 2) V] : Type u_2A **quadratic form over `F₂`** with its bilinear polar (commutator) form.VType u_1) (hnsq.Nonsingular: qQ2Presentation.Quadratic.QuadF2 V.NonsingularQ2Presentation.Quadratic.QuadF2.Nonsingular.{u_1} {V : Type u_1} [AddCommGroup V] [Module (ZMod 2) V] (q : Q2Presentation.Quadratic.QuadF2 V) : Prop**Nonsingularity** (the polar form is nondegenerate / perfect): the only vector pairing to `0` with everything is `0`. For a nonzero invariant form on a simple self-dual `V` this is automatic (`lem:zeropolar`, l.3452).) : Function.BijectiveFunction.Bijective.{u₁, u₂} {α : Sort u₁} {β : Sort u₂} (f : α → β) : PropA function is called bijective if it is both injective and surjective.⇑qQ2Presentation.Quadratic.QuadF2 V.polarQ2Presentation.Quadratic.QuadF2.polar.{u_2} {V : Type u_2} [AddCommGroup V] [Module (ZMod 2) V] (self : Q2Presentation.Quadratic.QuadF2 V) : V →ₗ[ZMod 2] V →ₗ[ZMod 2] ZMod 2the bilinear polar form `b_q`, i.e. the commutator pairingtheorem Q2Presentation.Quadratic.QuadF2.polar_bijective.{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] [FiniteFinite.{u_3} (α : Sort u_3) : PropA type is `Finite` if it is in bijective correspondence to some `Fin n`. This is similar to `Fintype`, but `Finite` is a proposition rather than data. A particular benefit to this is that `Finite` instances are definitionally equal to one another (due to proof irrelevance) rather than being merely propositionally equal, and, furthermore, `Finite` instances generally avoid the need for `Decidable` instances. One other notable difference is that `Finite` allows there to be `Finite p` instances for all `p : Prop`, which is not allowed by `Fintype` due to universe constraints. An application of this is that `Finite (x ∈ s → β x)` follows from the general instance for pi types, assuming `[∀ x, Finite (β x)]`. Implementation note: this is a reason `Finite α` is not defined as `Nonempty (Fintype α)`. Every `Fintype` instance provides a `Finite` instance via `Finite.of_fintype`. Conversely, one can noncomputably create a `Fintype` instance from a `Finite` instance via `Fintype.ofFinite`. In a proof one might write ```lean have := Fintype.ofFinite α ``` to obtain such an instance. Do not write noncomputable `Fintype` instances; instead write `Finite` instances and use this `Fintype.ofFinite` interface. The `Fintype` instances should be relied upon to be computable for evaluation purposes. Theorems should use `Finite` instead of `Fintype`, unless definitions in the theorem statement require `Fintype`. Definitions should prefer `Finite` as well, unless it is important that the definitions are meant to be computable in the reduction or `#eval` sense.VType u_1] (qQ2Presentation.Quadratic.QuadF2 V: Q2Presentation.Quadratic.QuadF2Q2Presentation.Quadratic.QuadF2.{u_2} (V : Type u_2) [AddCommGroup V] [Module (ZMod 2) V] : Type u_2A **quadratic form over `F₂`** with its bilinear polar (commutator) form.VType u_1) (hnsq.Nonsingular: qQ2Presentation.Quadratic.QuadF2 V.NonsingularQ2Presentation.Quadratic.QuadF2.Nonsingular.{u_1} {V : Type u_1} [AddCommGroup V] [Module (ZMod 2) V] (q : Q2Presentation.Quadratic.QuadF2 V) : Prop**Nonsingularity** (the polar form is nondegenerate / perfect): the only vector pairing to `0` with everything is `0`. For a nonzero invariant form on a simple self-dual `V` this is automatic (`lem:zeropolar`, l.3452).) : Function.BijectiveFunction.Bijective.{u₁, u₂} {α : Sort u₁} {β : Sort u₂} (f : α → β) : PropA function is called bijective if it is both injective and surjective.⇑qQ2Presentation.Quadratic.QuadF2 V.polarQ2Presentation.Quadratic.QuadF2.polar.{u_2} {V : Type u_2} [AddCommGroup V] [Module (ZMod 2) V] (self : Q2Presentation.Quadratic.QuadF2 V) : V →ₗ[ZMod 2] V →ₗ[ZMod 2] ZMod 2the bilinear polar form `b_q`, i.e. the commutator pairing**Nonsingularity + finiteness make the polar map a bijection onto the dual** (existence-uniqueness of the representing vectors `a_χ`, `lem:constrainedgauss` l.3883–3885).
-
theoremdefined in Q2Presentation/Quadratic/ConstrainedGauss.leancomplete
theorem Q2Presentation.Quadratic.constrainedGauss_count.{u_1, u_2} {W
Type u_1: Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`.} {EType u_2: Type u_2A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`.} [AddCommGroupAddCommGroup.{u} (G : Type u) : Type uAn additive commutative group is an additive group with commutative `(+)`.WType u_1] [ModuleModule.{u, v} (R : Type u) (M : Type v) [Semiring R] [AddCommMonoid M] : Type (max u v)A module is a generalization of vector spaces to a scalar semiring. It consists of a scalar semiring `R` and an additive monoid of "vectors" `M`, connected by a "scalar multiplication" operation `r • x : M` (where `r : R` and `x : M`) with some natural associativity and distributivity axioms similar to those on a ring.(ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.2) WType u_1] [FintypeFintype.{u_4} (α : Type u_4) : Type u_4`Fintype α` means that `α` is finite, i.e. there are only finitely many distinct elements of type `α`. The evidence of this is a finset `elems` (a list up to permutation without duplicates), together with a proof that everything of type `α` is in the list.WType u_1] [AddCommGroupAddCommGroup.{u} (G : Type u) : Type uAn additive commutative group is an additive group with commutative `(+)`.EType u_2] [ModuleModule.{u, v} (R : Type u) (M : Type v) [Semiring R] [AddCommMonoid M] : Type (max u v)A module is a generalization of vector spaces to a scalar semiring. It consists of a scalar semiring `R` and an additive monoid of "vectors" `M`, connected by a "scalar multiplication" operation `r • x : M` (where `r : R` and `x : M`) with some natural associativity and distributivity axioms similar to those on a ring.(ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.2) EType u_2] [FiniteFinite.{u_3} (α : Sort u_3) : PropA type is `Finite` if it is in bijective correspondence to some `Fin n`. This is similar to `Fintype`, but `Finite` is a proposition rather than data. A particular benefit to this is that `Finite` instances are definitionally equal to one another (due to proof irrelevance) rather than being merely propositionally equal, and, furthermore, `Finite` instances generally avoid the need for `Decidable` instances. One other notable difference is that `Finite` allows there to be `Finite p` instances for all `p : Prop`, which is not allowed by `Fintype` due to universe constraints. An application of this is that `Finite (x ∈ s → β x)` follows from the general instance for pi types, assuming `[∀ x, Finite (β x)]`. Implementation note: this is a reason `Finite α` is not defined as `Nonempty (Fintype α)`. Every `Fintype` instance provides a `Finite` instance via `Finite.of_fintype`. Conversely, one can noncomputably create a `Fintype` instance from a `Finite` instance via `Fintype.ofFinite`. In a proof one might write ```lean have := Fintype.ofFinite α ``` to obtain such an instance. Do not write noncomputable `Fintype` instances; instead write `Finite` instances and use this `Fintype.ofFinite` interface. The `Fintype` instances should be relied upon to be computable for evaluation purposes. Theorems should use `Finite` instead of `Fintype`, unless definitions in the theorem statement require `Fintype`. Definitions should prefer `Finite` as well, unless it is important that the definitions are meant to be computable in the reduction or `#eval` sense.EType u_2] [FintypeFintype.{u_4} (α : Type u_4) : Type u_4`Fintype α` means that `α` is finite, i.e. there are only finitely many distinct elements of type `α`. The evidence of this is a finset `elems` (a list up to permutation without duplicates), together with a proof that everything of type `α` is in the list.(Module.DualModule.Dual.{u_4, u_5} (R : Type u_4) (M : Type u_5) [Semiring R] [AddCommMonoid M] [Module R M] : Type (max u_5 u_4)The left dual space of an R-module M is the R-module of linear maps `M → R`.(ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.2) EType u_2)] (LW →ₗ[ZMod 2] E: WType u_1→ₗ[LinearMap.{u_14, u_15, u_16, u_17} {R : Type u_14} {S : Type u_15} [Semiring R] [Semiring S] (σ : R →+* S) (M : Type u_16) (M₂ : Type u_17) [AddCommMonoid M] [AddCommMonoid M₂] [Module R M] [Module S M₂] : Type (max u_16 u_17)A map `f` between an `R`-module and an `S`-module over a ring homomorphism `σ : R →+* S` is semilinear if it satisfies the two properties `f (x + y) = f x + f y` and `f (c • x) = (σ c) • f x`. Elements of `LinearMap σ M M₂` (available under the notation `M →ₛₗ[σ] M₂`) are bundled versions of such maps. For plain linear maps (i.e. for which `σ = RingHom.id R`), the notation `M →ₗ[R] M₂` is available. An unbundled version of plain linear maps is available with the predicate `IsLinearMap`, but it should be avoided most of the time.ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.2]LinearMap.{u_14, u_15, u_16, u_17} {R : Type u_14} {S : Type u_15} [Semiring R] [Semiring S] (σ : R →+* S) (M : Type u_16) (M₂ : Type u_17) [AddCommMonoid M] [AddCommMonoid M₂] [Module R M] [Module S M₂] : Type (max u_16 u_17)A map `f` between an `R`-module and an `S`-module over a ring homomorphism `σ : R →+* S` is semilinear if it satisfies the two properties `f (x + y) = f x + f y` and `f (c • x) = (σ c) • f x`. Elements of `LinearMap σ M M₂` (available under the notation `M →ₛₗ[σ] M₂`) are bundled versions of such maps. For plain linear maps (i.e. for which `σ = RingHom.id R`), the notation `M →ₗ[R] M₂` is available. An unbundled version of plain linear maps is available with the predicate `IsLinearMap`, but it should be avoided most of the time.EType u_2) (hLFunction.Surjective ⇑L: Function.SurjectiveFunction.Surjective.{u_1, u_2} {α : Sort u_1} {β : Sort u_2} (f : α → β) : PropA function `f : α → β` is called surjective if every `b : β` is equal to `f a` for some `a : α`.⇑LW →ₗ[ZMod 2] E) (QQ2Presentation.Quadratic.QuadF2 W: Q2Presentation.Quadratic.QuadF2Q2Presentation.Quadratic.QuadF2.{u_2} (V : Type u_2) [AddCommGroup V] [Module (ZMod 2) V] : Type u_2A **quadratic form over `F₂`** with its bilinear polar (commutator) form.WType u_1) (lModule.Dual (ZMod 2) W: Module.DualModule.Dual.{u_4, u_5} (R : Type u_4) (M : Type u_5) [Semiring R] [AddCommMonoid M] [Module R M] : Type (max u_5 u_4)The left dual space of an R-module M is the R-module of linear maps `M → R`.(ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.2) WType u_1) (AModule.Dual (ZMod 2) E → W: Module.DualModule.Dual.{u_4, u_5} (R : Type u_4) (M : Type u_5) [Semiring R] [AddCommMonoid M] [Module R M] : Type (max u_5 u_4)The left dual space of an R-module M is the R-module of linear maps `M → R`.(ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.2) EType u_2→ WType u_1) (hA∀ (χ : Module.Dual (ZMod 2) E) (x : W), (Q.polar (A χ)) x = χ (L x) + l x: ∀ (χModule.Dual (ZMod 2) E: Module.DualModule.Dual.{u_4, u_5} (R : Type u_4) (M : Type u_5) [Semiring R] [AddCommMonoid M] [Module R M] : Type (max u_5 u_4)The left dual space of an R-module M is the R-module of linear maps `M → R`.(ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.2) EType u_2) (xW: WType u_1), (QQ2Presentation.Quadratic.QuadF2 W.polarQ2Presentation.Quadratic.QuadF2.polar.{u_2} {V : Type u_2} [AddCommGroup V] [Module (ZMod 2) V] (self : Q2Presentation.Quadratic.QuadF2 V) : V →ₗ[ZMod 2] V →ₗ[ZMod 2] ZMod 2the bilinear polar form `b_q`, i.e. the commutator pairing(AModule.Dual (ZMod 2) E → WχModule.Dual (ZMod 2) E)) xW=Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`. We use `a = b` as notation for `Eq a b`. A fundamental property of equality is that it is an equivalence relation. ``` variable (α : Type) (a b c d : α) variable (hab : a = b) (hcb : c = b) (hcd : c = d) example : a = d := Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd ``` Equality is much more than an equivalence relation, however. It has the important property that every assertion respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value. That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`. Example: ``` example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := Eq.subst h1 h2 example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := h1 ▸ h2 ``` The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`. For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality) Conventions for notations in identifiers: * The recommended spelling of `=` in identifiers is `eq`.χModule.Dual (ZMod 2) E(LW →ₗ[ZMod 2] ExW) +HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `+` in identifiers is `add`.lModule.Dual (ZMod 2) WxW) (κE: EType u_2) (εZMod 2: ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.2) : 2 *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.↑(Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number. If `α` is infinite, `Nat.card α = 0`.EType u_2) *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.↑(Q2Presentation.Quadratic.constrainedZerosQ2Presentation.Quadratic.constrainedZeros.{u_1, u_2} {W : Type u_1} {E : Type u_2} [AddCommGroup W] [Module (ZMod 2) W] [AddCommGroup E] [Module (ZMod 2) E] (L : W →ₗ[ZMod 2] E) (Q : Q2Presentation.Quadratic.QuadF2 W) (l : Module.Dual (ZMod 2) W) (κ : E) (ε : ZMod 2) : ℕ`N(κ, ε)` — the **constrained count** of `lem:constrainedgauss` (l.3879–3882), with an affine (linear-term) refinement: `#{x : L x = κ ∧ Q(x) + ℓ(x) = ε}`. At `ℓ = 0` this is the manuscript's `N(κ,ε)`; the affine form is what `prop:zeroedge` consumes through `eq:Qkappadifference` (the actual pushout form `Q_κ` is base-plus-linear, its constant part being absorbed into `ε`).LW →ₗ[ZMod 2] EQQ2Presentation.Quadratic.QuadF2 WlModule.Dual (ZMod 2) WκEεZMod 2) =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`. We use `a = b` as notation for `Eq a b`. A fundamental property of equality is that it is an equivalence relation. ``` variable (α : Type) (a b c d : α) variable (hab : a = b) (hcb : c = b) (hcd : c = d) example : a = d := Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd ``` Equality is much more than an equivalence relation, however. It has the important property that every assertion respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value. That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`. Example: ``` example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := Eq.subst h1 h2 example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := h1 ▸ h2 ``` The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`. For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality) Conventions for notations in identifiers: * The recommended spelling of `=` in identifiers is `eq`.↑(Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number. If `α` is infinite, `Nat.card α = 0`.WType u_1) +HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `+` in identifiers is `add`.Q2Presentation.Quadratic.Dickson.gaussSumQ2Presentation.Quadratic.Dickson.gaussSum.{u_1} {V : Type u_1} [AddCommGroup V] [Module (ZMod 2) V] [Fintype V] (q : Q2Presentation.Quadratic.QuadF2 V) : ℤThe **Gauss sum** `D(q) = ∑_v χ(q v)`.QQ2Presentation.Quadratic.QuadF2 W*HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.∑ χModule.Dual (ZMod 2) E, Q2Presentation.Quadratic.Dickson.signCharQ2Presentation.Quadratic.Dickson.signChar (a : ZMod 2) : ℤThe sign character `χ(0) = 1`, `χ(1) = -1`.(HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `+` in identifiers is `add`.χModule.Dual (ZMod 2) EκE+HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `+` in identifiers is `add`.εZMod 2+HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `+` in identifiers is `add`.QQ2Presentation.Quadratic.QuadF2 W.formQ2Presentation.Quadratic.QuadF2.form.{u_2} {V : Type u_2} [AddCommGroup V] [Module (ZMod 2) V] (self : Q2Presentation.Quadratic.QuadF2 V) : V → ZMod 2the quadratic map `q : V → F₂`(AModule.Dual (ZMod 2) E → WχModule.Dual (ZMod 2) E))HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `+` in identifiers is `add`.theorem Q2Presentation.Quadratic.constrainedGauss_count.{u_1, u_2} {W
Type u_1: Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`.} {EType u_2: Type u_2A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`.} [AddCommGroupAddCommGroup.{u} (G : Type u) : Type uAn additive commutative group is an additive group with commutative `(+)`.WType u_1] [ModuleModule.{u, v} (R : Type u) (M : Type v) [Semiring R] [AddCommMonoid M] : Type (max u v)A module is a generalization of vector spaces to a scalar semiring. It consists of a scalar semiring `R` and an additive monoid of "vectors" `M`, connected by a "scalar multiplication" operation `r • x : M` (where `r : R` and `x : M`) with some natural associativity and distributivity axioms similar to those on a ring.(ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.2) WType u_1] [FintypeFintype.{u_4} (α : Type u_4) : Type u_4`Fintype α` means that `α` is finite, i.e. there are only finitely many distinct elements of type `α`. The evidence of this is a finset `elems` (a list up to permutation without duplicates), together with a proof that everything of type `α` is in the list.WType u_1] [AddCommGroupAddCommGroup.{u} (G : Type u) : Type uAn additive commutative group is an additive group with commutative `(+)`.EType u_2] [ModuleModule.{u, v} (R : Type u) (M : Type v) [Semiring R] [AddCommMonoid M] : Type (max u v)A module is a generalization of vector spaces to a scalar semiring. It consists of a scalar semiring `R` and an additive monoid of "vectors" `M`, connected by a "scalar multiplication" operation `r • x : M` (where `r : R` and `x : M`) with some natural associativity and distributivity axioms similar to those on a ring.(ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.2) EType u_2] [FiniteFinite.{u_3} (α : Sort u_3) : PropA type is `Finite` if it is in bijective correspondence to some `Fin n`. This is similar to `Fintype`, but `Finite` is a proposition rather than data. A particular benefit to this is that `Finite` instances are definitionally equal to one another (due to proof irrelevance) rather than being merely propositionally equal, and, furthermore, `Finite` instances generally avoid the need for `Decidable` instances. One other notable difference is that `Finite` allows there to be `Finite p` instances for all `p : Prop`, which is not allowed by `Fintype` due to universe constraints. An application of this is that `Finite (x ∈ s → β x)` follows from the general instance for pi types, assuming `[∀ x, Finite (β x)]`. Implementation note: this is a reason `Finite α` is not defined as `Nonempty (Fintype α)`. Every `Fintype` instance provides a `Finite` instance via `Finite.of_fintype`. Conversely, one can noncomputably create a `Fintype` instance from a `Finite` instance via `Fintype.ofFinite`. In a proof one might write ```lean have := Fintype.ofFinite α ``` to obtain such an instance. Do not write noncomputable `Fintype` instances; instead write `Finite` instances and use this `Fintype.ofFinite` interface. The `Fintype` instances should be relied upon to be computable for evaluation purposes. Theorems should use `Finite` instead of `Fintype`, unless definitions in the theorem statement require `Fintype`. Definitions should prefer `Finite` as well, unless it is important that the definitions are meant to be computable in the reduction or `#eval` sense.EType u_2] [FintypeFintype.{u_4} (α : Type u_4) : Type u_4`Fintype α` means that `α` is finite, i.e. there are only finitely many distinct elements of type `α`. The evidence of this is a finset `elems` (a list up to permutation without duplicates), together with a proof that everything of type `α` is in the list.(Module.DualModule.Dual.{u_4, u_5} (R : Type u_4) (M : Type u_5) [Semiring R] [AddCommMonoid M] [Module R M] : Type (max u_5 u_4)The left dual space of an R-module M is the R-module of linear maps `M → R`.(ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.2) EType u_2)] (LW →ₗ[ZMod 2] E: WType u_1→ₗ[LinearMap.{u_14, u_15, u_16, u_17} {R : Type u_14} {S : Type u_15} [Semiring R] [Semiring S] (σ : R →+* S) (M : Type u_16) (M₂ : Type u_17) [AddCommMonoid M] [AddCommMonoid M₂] [Module R M] [Module S M₂] : Type (max u_16 u_17)A map `f` between an `R`-module and an `S`-module over a ring homomorphism `σ : R →+* S` is semilinear if it satisfies the two properties `f (x + y) = f x + f y` and `f (c • x) = (σ c) • f x`. Elements of `LinearMap σ M M₂` (available under the notation `M →ₛₗ[σ] M₂`) are bundled versions of such maps. For plain linear maps (i.e. for which `σ = RingHom.id R`), the notation `M →ₗ[R] M₂` is available. An unbundled version of plain linear maps is available with the predicate `IsLinearMap`, but it should be avoided most of the time.ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.2]LinearMap.{u_14, u_15, u_16, u_17} {R : Type u_14} {S : Type u_15} [Semiring R] [Semiring S] (σ : R →+* S) (M : Type u_16) (M₂ : Type u_17) [AddCommMonoid M] [AddCommMonoid M₂] [Module R M] [Module S M₂] : Type (max u_16 u_17)A map `f` between an `R`-module and an `S`-module over a ring homomorphism `σ : R →+* S` is semilinear if it satisfies the two properties `f (x + y) = f x + f y` and `f (c • x) = (σ c) • f x`. Elements of `LinearMap σ M M₂` (available under the notation `M →ₛₗ[σ] M₂`) are bundled versions of such maps. For plain linear maps (i.e. for which `σ = RingHom.id R`), the notation `M →ₗ[R] M₂` is available. An unbundled version of plain linear maps is available with the predicate `IsLinearMap`, but it should be avoided most of the time.EType u_2) (hLFunction.Surjective ⇑L: Function.SurjectiveFunction.Surjective.{u_1, u_2} {α : Sort u_1} {β : Sort u_2} (f : α → β) : PropA function `f : α → β` is called surjective if every `b : β` is equal to `f a` for some `a : α`.⇑LW →ₗ[ZMod 2] E) (QQ2Presentation.Quadratic.QuadF2 W: Q2Presentation.Quadratic.QuadF2Q2Presentation.Quadratic.QuadF2.{u_2} (V : Type u_2) [AddCommGroup V] [Module (ZMod 2) V] : Type u_2A **quadratic form over `F₂`** with its bilinear polar (commutator) form.WType u_1) (lModule.Dual (ZMod 2) W: Module.DualModule.Dual.{u_4, u_5} (R : Type u_4) (M : Type u_5) [Semiring R] [AddCommMonoid M] [Module R M] : Type (max u_5 u_4)The left dual space of an R-module M is the R-module of linear maps `M → R`.(ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.2) WType u_1) (AModule.Dual (ZMod 2) E → W: Module.DualModule.Dual.{u_4, u_5} (R : Type u_4) (M : Type u_5) [Semiring R] [AddCommMonoid M] [Module R M] : Type (max u_5 u_4)The left dual space of an R-module M is the R-module of linear maps `M → R`.(ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.2) EType u_2→ WType u_1) (hA∀ (χ : Module.Dual (ZMod 2) E) (x : W), (Q.polar (A χ)) x = χ (L x) + l x: ∀ (χModule.Dual (ZMod 2) E: Module.DualModule.Dual.{u_4, u_5} (R : Type u_4) (M : Type u_5) [Semiring R] [AddCommMonoid M] [Module R M] : Type (max u_5 u_4)The left dual space of an R-module M is the R-module of linear maps `M → R`.(ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.2) EType u_2) (xW: WType u_1), (QQ2Presentation.Quadratic.QuadF2 W.polarQ2Presentation.Quadratic.QuadF2.polar.{u_2} {V : Type u_2} [AddCommGroup V] [Module (ZMod 2) V] (self : Q2Presentation.Quadratic.QuadF2 V) : V →ₗ[ZMod 2] V →ₗ[ZMod 2] ZMod 2the bilinear polar form `b_q`, i.e. the commutator pairing(AModule.Dual (ZMod 2) E → WχModule.Dual (ZMod 2) E)) xW=Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`. We use `a = b` as notation for `Eq a b`. A fundamental property of equality is that it is an equivalence relation. ``` variable (α : Type) (a b c d : α) variable (hab : a = b) (hcb : c = b) (hcd : c = d) example : a = d := Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd ``` Equality is much more than an equivalence relation, however. It has the important property that every assertion respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value. That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`. Example: ``` example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := Eq.subst h1 h2 example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := h1 ▸ h2 ``` The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`. For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality) Conventions for notations in identifiers: * The recommended spelling of `=` in identifiers is `eq`.χModule.Dual (ZMod 2) E(LW →ₗ[ZMod 2] ExW) +HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `+` in identifiers is `add`.lModule.Dual (ZMod 2) WxW) (κE: EType u_2) (εZMod 2: ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.2) : 2 *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.↑(Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number. If `α` is infinite, `Nat.card α = 0`.EType u_2) *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.↑(Q2Presentation.Quadratic.constrainedZerosQ2Presentation.Quadratic.constrainedZeros.{u_1, u_2} {W : Type u_1} {E : Type u_2} [AddCommGroup W] [Module (ZMod 2) W] [AddCommGroup E] [Module (ZMod 2) E] (L : W →ₗ[ZMod 2] E) (Q : Q2Presentation.Quadratic.QuadF2 W) (l : Module.Dual (ZMod 2) W) (κ : E) (ε : ZMod 2) : ℕ`N(κ, ε)` — the **constrained count** of `lem:constrainedgauss` (l.3879–3882), with an affine (linear-term) refinement: `#{x : L x = κ ∧ Q(x) + ℓ(x) = ε}`. At `ℓ = 0` this is the manuscript's `N(κ,ε)`; the affine form is what `prop:zeroedge` consumes through `eq:Qkappadifference` (the actual pushout form `Q_κ` is base-plus-linear, its constant part being absorbed into `ε`).LW →ₗ[ZMod 2] EQQ2Presentation.Quadratic.QuadF2 WlModule.Dual (ZMod 2) WκEεZMod 2) =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`. We use `a = b` as notation for `Eq a b`. A fundamental property of equality is that it is an equivalence relation. ``` variable (α : Type) (a b c d : α) variable (hab : a = b) (hcb : c = b) (hcd : c = d) example : a = d := Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd ``` Equality is much more than an equivalence relation, however. It has the important property that every assertion respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value. That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`. Example: ``` example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := Eq.subst h1 h2 example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := h1 ▸ h2 ``` The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`. For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality) Conventions for notations in identifiers: * The recommended spelling of `=` in identifiers is `eq`.↑(Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number. If `α` is infinite, `Nat.card α = 0`.WType u_1) +HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `+` in identifiers is `add`.Q2Presentation.Quadratic.Dickson.gaussSumQ2Presentation.Quadratic.Dickson.gaussSum.{u_1} {V : Type u_1} [AddCommGroup V] [Module (ZMod 2) V] [Fintype V] (q : Q2Presentation.Quadratic.QuadF2 V) : ℤThe **Gauss sum** `D(q) = ∑_v χ(q v)`.QQ2Presentation.Quadratic.QuadF2 W*HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.∑ χModule.Dual (ZMod 2) E, Q2Presentation.Quadratic.Dickson.signCharQ2Presentation.Quadratic.Dickson.signChar (a : ZMod 2) : ℤThe sign character `χ(0) = 1`, `χ(1) = -1`.(HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `+` in identifiers is `add`.χModule.Dual (ZMod 2) EκE+HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `+` in identifiers is `add`.εZMod 2+HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `+` in identifiers is `add`.QQ2Presentation.Quadratic.QuadF2 W.formQ2Presentation.Quadratic.QuadF2.form.{u_2} {V : Type u_2} [AddCommGroup V] [Module (ZMod 2) V] (self : Q2Presentation.Quadratic.QuadF2 V) : V → ZMod 2the quadratic map `q : V → F₂`(AModule.Dual (ZMod 2) E → WχModule.Dual (ZMod 2) E))HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `+` in identifiers is `add`.**The constrained quadratic Gauss transform** (`lem:constrainedgauss`, `eq:constrainedgauss` l.3888–3894, in the affine form consumed by `eq:pointwiseconstrained` l.4332–4340): ``` 2·|E|·N(κ,ε) = |W| + G(Q⁰)·∑_{χ ∈ E^∨} (-1)^{χ(κ) + ε + Q⁰(a_χ)} ``` for `L : W ↠ E`, `Q⁰` a quadratic form with representing vectors `b_{Q⁰}(a_χ, ·) = χ∘L + ℓ`, and `N(κ,ε) = #{x : Lx = κ, Q⁰(x) + ℓ(x) = ε}`. The Gauss sum `G(Q⁰) = ∑_x (-1)^{Q⁰(x)}` is `Dickson.gaussSum`; the phase `Q⁰(a_χ)` is the manuscript's `Θ_q^0(a_{χ,κ})`-value (`eq:Theta0phase`). Note the hypotheses are *weaker* than the manuscript's: nonsingularity is not needed once the representing vectors `A` are supplied (it is needed only for their existence — `constrainedGauss_count_exists`), and surjectivity of `L` is used only to cancel nontrivial characters. -
theoremdefined in Q2Presentation/Quadratic/ConstrainedGauss.leancomplete
theorem Q2Presentation.Quadratic.constrainedGauss_count_pure.{u_1, u_2} {W
Type u_1: Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`.} {EType u_2: Type u_2A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`.} [AddCommGroupAddCommGroup.{u} (G : Type u) : Type uAn additive commutative group is an additive group with commutative `(+)`.WType u_1] [ModuleModule.{u, v} (R : Type u) (M : Type v) [Semiring R] [AddCommMonoid M] : Type (max u v)A module is a generalization of vector spaces to a scalar semiring. It consists of a scalar semiring `R` and an additive monoid of "vectors" `M`, connected by a "scalar multiplication" operation `r • x : M` (where `r : R` and `x : M`) with some natural associativity and distributivity axioms similar to those on a ring.(ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.2) WType u_1] [FintypeFintype.{u_4} (α : Type u_4) : Type u_4`Fintype α` means that `α` is finite, i.e. there are only finitely many distinct elements of type `α`. The evidence of this is a finset `elems` (a list up to permutation without duplicates), together with a proof that everything of type `α` is in the list.WType u_1] [AddCommGroupAddCommGroup.{u} (G : Type u) : Type uAn additive commutative group is an additive group with commutative `(+)`.EType u_2] [ModuleModule.{u, v} (R : Type u) (M : Type v) [Semiring R] [AddCommMonoid M] : Type (max u v)A module is a generalization of vector spaces to a scalar semiring. It consists of a scalar semiring `R` and an additive monoid of "vectors" `M`, connected by a "scalar multiplication" operation `r • x : M` (where `r : R` and `x : M`) with some natural associativity and distributivity axioms similar to those on a ring.(ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.2) EType u_2] [FiniteFinite.{u_3} (α : Sort u_3) : PropA type is `Finite` if it is in bijective correspondence to some `Fin n`. This is similar to `Fintype`, but `Finite` is a proposition rather than data. A particular benefit to this is that `Finite` instances are definitionally equal to one another (due to proof irrelevance) rather than being merely propositionally equal, and, furthermore, `Finite` instances generally avoid the need for `Decidable` instances. One other notable difference is that `Finite` allows there to be `Finite p` instances for all `p : Prop`, which is not allowed by `Fintype` due to universe constraints. An application of this is that `Finite (x ∈ s → β x)` follows from the general instance for pi types, assuming `[∀ x, Finite (β x)]`. Implementation note: this is a reason `Finite α` is not defined as `Nonempty (Fintype α)`. Every `Fintype` instance provides a `Finite` instance via `Finite.of_fintype`. Conversely, one can noncomputably create a `Fintype` instance from a `Finite` instance via `Fintype.ofFinite`. In a proof one might write ```lean have := Fintype.ofFinite α ``` to obtain such an instance. Do not write noncomputable `Fintype` instances; instead write `Finite` instances and use this `Fintype.ofFinite` interface. The `Fintype` instances should be relied upon to be computable for evaluation purposes. Theorems should use `Finite` instead of `Fintype`, unless definitions in the theorem statement require `Fintype`. Definitions should prefer `Finite` as well, unless it is important that the definitions are meant to be computable in the reduction or `#eval` sense.EType u_2] [FintypeFintype.{u_4} (α : Type u_4) : Type u_4`Fintype α` means that `α` is finite, i.e. there are only finitely many distinct elements of type `α`. The evidence of this is a finset `elems` (a list up to permutation without duplicates), together with a proof that everything of type `α` is in the list.(Module.DualModule.Dual.{u_4, u_5} (R : Type u_4) (M : Type u_5) [Semiring R] [AddCommMonoid M] [Module R M] : Type (max u_5 u_4)The left dual space of an R-module M is the R-module of linear maps `M → R`.(ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.2) EType u_2)] (LW →ₗ[ZMod 2] E: WType u_1→ₗ[LinearMap.{u_14, u_15, u_16, u_17} {R : Type u_14} {S : Type u_15} [Semiring R] [Semiring S] (σ : R →+* S) (M : Type u_16) (M₂ : Type u_17) [AddCommMonoid M] [AddCommMonoid M₂] [Module R M] [Module S M₂] : Type (max u_16 u_17)A map `f` between an `R`-module and an `S`-module over a ring homomorphism `σ : R →+* S` is semilinear if it satisfies the two properties `f (x + y) = f x + f y` and `f (c • x) = (σ c) • f x`. Elements of `LinearMap σ M M₂` (available under the notation `M →ₛₗ[σ] M₂`) are bundled versions of such maps. For plain linear maps (i.e. for which `σ = RingHom.id R`), the notation `M →ₗ[R] M₂` is available. An unbundled version of plain linear maps is available with the predicate `IsLinearMap`, but it should be avoided most of the time.ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.2]LinearMap.{u_14, u_15, u_16, u_17} {R : Type u_14} {S : Type u_15} [Semiring R] [Semiring S] (σ : R →+* S) (M : Type u_16) (M₂ : Type u_17) [AddCommMonoid M] [AddCommMonoid M₂] [Module R M] [Module S M₂] : Type (max u_16 u_17)A map `f` between an `R`-module and an `S`-module over a ring homomorphism `σ : R →+* S` is semilinear if it satisfies the two properties `f (x + y) = f x + f y` and `f (c • x) = (σ c) • f x`. Elements of `LinearMap σ M M₂` (available under the notation `M →ₛₗ[σ] M₂`) are bundled versions of such maps. For plain linear maps (i.e. for which `σ = RingHom.id R`), the notation `M →ₗ[R] M₂` is available. An unbundled version of plain linear maps is available with the predicate `IsLinearMap`, but it should be avoided most of the time.EType u_2) (hLFunction.Surjective ⇑L: Function.SurjectiveFunction.Surjective.{u_1, u_2} {α : Sort u_1} {β : Sort u_2} (f : α → β) : PropA function `f : α → β` is called surjective if every `b : β` is equal to `f a` for some `a : α`.⇑LW →ₗ[ZMod 2] E) (QQ2Presentation.Quadratic.QuadF2 W: Q2Presentation.Quadratic.QuadF2Q2Presentation.Quadratic.QuadF2.{u_2} (V : Type u_2) [AddCommGroup V] [Module (ZMod 2) V] : Type u_2A **quadratic form over `F₂`** with its bilinear polar (commutator) form.WType u_1) (AModule.Dual (ZMod 2) E → W: Module.DualModule.Dual.{u_4, u_5} (R : Type u_4) (M : Type u_5) [Semiring R] [AddCommMonoid M] [Module R M] : Type (max u_5 u_4)The left dual space of an R-module M is the R-module of linear maps `M → R`.(ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.2) EType u_2→ WType u_1) (hA∀ (χ : Module.Dual (ZMod 2) E) (x : W), (Q.polar (A χ)) x = χ (L x): ∀ (χModule.Dual (ZMod 2) E: Module.DualModule.Dual.{u_4, u_5} (R : Type u_4) (M : Type u_5) [Semiring R] [AddCommMonoid M] [Module R M] : Type (max u_5 u_4)The left dual space of an R-module M is the R-module of linear maps `M → R`.(ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.2) EType u_2) (xW: WType u_1), (QQ2Presentation.Quadratic.QuadF2 W.polarQ2Presentation.Quadratic.QuadF2.polar.{u_2} {V : Type u_2} [AddCommGroup V] [Module (ZMod 2) V] (self : Q2Presentation.Quadratic.QuadF2 V) : V →ₗ[ZMod 2] V →ₗ[ZMod 2] ZMod 2the bilinear polar form `b_q`, i.e. the commutator pairing(AModule.Dual (ZMod 2) E → WχModule.Dual (ZMod 2) E)) xW=Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`. We use `a = b` as notation for `Eq a b`. A fundamental property of equality is that it is an equivalence relation. ``` variable (α : Type) (a b c d : α) variable (hab : a = b) (hcb : c = b) (hcd : c = d) example : a = d := Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd ``` Equality is much more than an equivalence relation, however. It has the important property that every assertion respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value. That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`. Example: ``` example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := Eq.subst h1 h2 example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := h1 ▸ h2 ``` The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`. For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality) Conventions for notations in identifiers: * The recommended spelling of `=` in identifiers is `eq`.χModule.Dual (ZMod 2) E(LW →ₗ[ZMod 2] ExW)) (κE: EType u_2) (εZMod 2: ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.2) : 2 *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.↑(Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number. If `α` is infinite, `Nat.card α = 0`.EType u_2) *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.↑(Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number. If `α` is infinite, `Nat.card α = 0`.{Subtype.{u} {α : Sort u} (p : α → Prop) : Sort (max 1 u)All the elements of a type that satisfy a predicate. `Subtype p`, usually written `{ x : α // p x }` or `{ x // p x }`, contains all elements `x : α` for which `p x` is true. Its constructor is a pair of the value and the proof that it satisfies the predicate. In run-time code, `{ x : α // p x }` is represented identically to `α`. There is a coercion from `{ x : α // p x }` to `α`, so elements of a subtype may be used where the underlying type is expected. Examples: * `{ n : Nat // n % 2 = 0 }` is the type of even numbers. * `{ xs : Array String // xs.size = 5 }` is the type of arrays with five `String`s. * Given `xs : List α`, `List { x : α // x ∈ xs }` is the type of lists in which all elements are contained in `xs`. Conventions for notations in identifiers: * The recommended spelling of `{ x // p x }` in identifiers is `subtype`.xW//Subtype.{u} {α : Sort u} (p : α → Prop) : Sort (max 1 u)All the elements of a type that satisfy a predicate. `Subtype p`, usually written `{ x : α // p x }` or `{ x // p x }`, contains all elements `x : α` for which `p x` is true. Its constructor is a pair of the value and the proof that it satisfies the predicate. In run-time code, `{ x : α // p x }` is represented identically to `α`. There is a coercion from `{ x : α // p x }` to `α`, so elements of a subtype may be used where the underlying type is expected. Examples: * `{ n : Nat // n % 2 = 0 }` is the type of even numbers. * `{ xs : Array String // xs.size = 5 }` is the type of arrays with five `String`s. * Given `xs : List α`, `List { x : α // x ∈ xs }` is the type of lists in which all elements are contained in `xs`. Conventions for notations in identifiers: * The recommended spelling of `{ x // p x }` in identifiers is `subtype`.LW →ₗ[ZMod 2] ExW=Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`. We use `a = b` as notation for `Eq a b`. A fundamental property of equality is that it is an equivalence relation. ``` variable (α : Type) (a b c d : α) variable (hab : a = b) (hcb : c = b) (hcd : c = d) example : a = d := Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd ``` Equality is much more than an equivalence relation, however. It has the important property that every assertion respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value. That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`. Example: ``` example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := Eq.subst h1 h2 example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := h1 ▸ h2 ``` The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`. For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality) Conventions for notations in identifiers: * The recommended spelling of `=` in identifiers is `eq`.κE∧And (a b : Prop) : Prop`And a b`, or `a ∧ b`, is the conjunction of propositions. It can be constructed and destructed like a pair: if `ha : a` and `hb : b` then `⟨ha, hb⟩ : a ∧ b`, and if `h : a ∧ b` then `h.left : a` and `h.right : b`. Conventions for notations in identifiers: * The recommended spelling of `∧` in identifiers is `and`. * The recommended spelling of `/\` in identifiers is `and` (prefer `∧` over `/\`).QQ2Presentation.Quadratic.QuadF2 W.formQ2Presentation.Quadratic.QuadF2.form.{u_2} {V : Type u_2} [AddCommGroup V] [Module (ZMod 2) V] (self : Q2Presentation.Quadratic.QuadF2 V) : V → ZMod 2the quadratic map `q : V → F₂`xW=Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`. We use `a = b` as notation for `Eq a b`. A fundamental property of equality is that it is an equivalence relation. ``` variable (α : Type) (a b c d : α) variable (hab : a = b) (hcb : c = b) (hcd : c = d) example : a = d := Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd ``` Equality is much more than an equivalence relation, however. It has the important property that every assertion respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value. That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`. Example: ``` example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := Eq.subst h1 h2 example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := h1 ▸ h2 ``` The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`. For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality) Conventions for notations in identifiers: * The recommended spelling of `=` in identifiers is `eq`.εZMod 2}Subtype.{u} {α : Sort u} (p : α → Prop) : Sort (max 1 u)All the elements of a type that satisfy a predicate. `Subtype p`, usually written `{ x : α // p x }` or `{ x // p x }`, contains all elements `x : α` for which `p x` is true. Its constructor is a pair of the value and the proof that it satisfies the predicate. In run-time code, `{ x : α // p x }` is represented identically to `α`. There is a coercion from `{ x : α // p x }` to `α`, so elements of a subtype may be used where the underlying type is expected. Examples: * `{ n : Nat // n % 2 = 0 }` is the type of even numbers. * `{ xs : Array String // xs.size = 5 }` is the type of arrays with five `String`s. * Given `xs : List α`, `List { x : α // x ∈ xs }` is the type of lists in which all elements are contained in `xs`. Conventions for notations in identifiers: * The recommended spelling of `{ x // p x }` in identifiers is `subtype`.) =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`. We use `a = b` as notation for `Eq a b`. A fundamental property of equality is that it is an equivalence relation. ``` variable (α : Type) (a b c d : α) variable (hab : a = b) (hcb : c = b) (hcd : c = d) example : a = d := Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd ``` Equality is much more than an equivalence relation, however. It has the important property that every assertion respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value. That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`. Example: ``` example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := Eq.subst h1 h2 example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := h1 ▸ h2 ``` The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`. For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality) Conventions for notations in identifiers: * The recommended spelling of `=` in identifiers is `eq`.↑(Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number. If `α` is infinite, `Nat.card α = 0`.WType u_1) +HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `+` in identifiers is `add`.Q2Presentation.Quadratic.Dickson.gaussSumQ2Presentation.Quadratic.Dickson.gaussSum.{u_1} {V : Type u_1} [AddCommGroup V] [Module (ZMod 2) V] [Fintype V] (q : Q2Presentation.Quadratic.QuadF2 V) : ℤThe **Gauss sum** `D(q) = ∑_v χ(q v)`.QQ2Presentation.Quadratic.QuadF2 W*HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.∑ χModule.Dual (ZMod 2) E, Q2Presentation.Quadratic.Dickson.signCharQ2Presentation.Quadratic.Dickson.signChar (a : ZMod 2) : ℤThe sign character `χ(0) = 1`, `χ(1) = -1`.(HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `+` in identifiers is `add`.χModule.Dual (ZMod 2) EκE+HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `+` in identifiers is `add`.εZMod 2+HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `+` in identifiers is `add`.QQ2Presentation.Quadratic.QuadF2 W.formQ2Presentation.Quadratic.QuadF2.form.{u_2} {V : Type u_2} [AddCommGroup V] [Module (ZMod 2) V] (self : Q2Presentation.Quadratic.QuadF2 V) : V → ZMod 2the quadratic map `q : V → F₂`(AModule.Dual (ZMod 2) E → WχModule.Dual (ZMod 2) E))HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `+` in identifiers is `add`.theorem Q2Presentation.Quadratic.constrainedGauss_count_pure.{u_1, u_2} {W
Type u_1: Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`.} {EType u_2: Type u_2A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`.} [AddCommGroupAddCommGroup.{u} (G : Type u) : Type uAn additive commutative group is an additive group with commutative `(+)`.WType u_1] [ModuleModule.{u, v} (R : Type u) (M : Type v) [Semiring R] [AddCommMonoid M] : Type (max u v)A module is a generalization of vector spaces to a scalar semiring. It consists of a scalar semiring `R` and an additive monoid of "vectors" `M`, connected by a "scalar multiplication" operation `r • x : M` (where `r : R` and `x : M`) with some natural associativity and distributivity axioms similar to those on a ring.(ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.2) WType u_1] [FintypeFintype.{u_4} (α : Type u_4) : Type u_4`Fintype α` means that `α` is finite, i.e. there are only finitely many distinct elements of type `α`. The evidence of this is a finset `elems` (a list up to permutation without duplicates), together with a proof that everything of type `α` is in the list.WType u_1] [AddCommGroupAddCommGroup.{u} (G : Type u) : Type uAn additive commutative group is an additive group with commutative `(+)`.EType u_2] [ModuleModule.{u, v} (R : Type u) (M : Type v) [Semiring R] [AddCommMonoid M] : Type (max u v)A module is a generalization of vector spaces to a scalar semiring. It consists of a scalar semiring `R` and an additive monoid of "vectors" `M`, connected by a "scalar multiplication" operation `r • x : M` (where `r : R` and `x : M`) with some natural associativity and distributivity axioms similar to those on a ring.(ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.2) EType u_2] [FiniteFinite.{u_3} (α : Sort u_3) : PropA type is `Finite` if it is in bijective correspondence to some `Fin n`. This is similar to `Fintype`, but `Finite` is a proposition rather than data. A particular benefit to this is that `Finite` instances are definitionally equal to one another (due to proof irrelevance) rather than being merely propositionally equal, and, furthermore, `Finite` instances generally avoid the need for `Decidable` instances. One other notable difference is that `Finite` allows there to be `Finite p` instances for all `p : Prop`, which is not allowed by `Fintype` due to universe constraints. An application of this is that `Finite (x ∈ s → β x)` follows from the general instance for pi types, assuming `[∀ x, Finite (β x)]`. Implementation note: this is a reason `Finite α` is not defined as `Nonempty (Fintype α)`. Every `Fintype` instance provides a `Finite` instance via `Finite.of_fintype`. Conversely, one can noncomputably create a `Fintype` instance from a `Finite` instance via `Fintype.ofFinite`. In a proof one might write ```lean have := Fintype.ofFinite α ``` to obtain such an instance. Do not write noncomputable `Fintype` instances; instead write `Finite` instances and use this `Fintype.ofFinite` interface. The `Fintype` instances should be relied upon to be computable for evaluation purposes. Theorems should use `Finite` instead of `Fintype`, unless definitions in the theorem statement require `Fintype`. Definitions should prefer `Finite` as well, unless it is important that the definitions are meant to be computable in the reduction or `#eval` sense.EType u_2] [FintypeFintype.{u_4} (α : Type u_4) : Type u_4`Fintype α` means that `α` is finite, i.e. there are only finitely many distinct elements of type `α`. The evidence of this is a finset `elems` (a list up to permutation without duplicates), together with a proof that everything of type `α` is in the list.(Module.DualModule.Dual.{u_4, u_5} (R : Type u_4) (M : Type u_5) [Semiring R] [AddCommMonoid M] [Module R M] : Type (max u_5 u_4)The left dual space of an R-module M is the R-module of linear maps `M → R`.(ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.2) EType u_2)] (LW →ₗ[ZMod 2] E: WType u_1→ₗ[LinearMap.{u_14, u_15, u_16, u_17} {R : Type u_14} {S : Type u_15} [Semiring R] [Semiring S] (σ : R →+* S) (M : Type u_16) (M₂ : Type u_17) [AddCommMonoid M] [AddCommMonoid M₂] [Module R M] [Module S M₂] : Type (max u_16 u_17)A map `f` between an `R`-module and an `S`-module over a ring homomorphism `σ : R →+* S` is semilinear if it satisfies the two properties `f (x + y) = f x + f y` and `f (c • x) = (σ c) • f x`. Elements of `LinearMap σ M M₂` (available under the notation `M →ₛₗ[σ] M₂`) are bundled versions of such maps. For plain linear maps (i.e. for which `σ = RingHom.id R`), the notation `M →ₗ[R] M₂` is available. An unbundled version of plain linear maps is available with the predicate `IsLinearMap`, but it should be avoided most of the time.ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.2]LinearMap.{u_14, u_15, u_16, u_17} {R : Type u_14} {S : Type u_15} [Semiring R] [Semiring S] (σ : R →+* S) (M : Type u_16) (M₂ : Type u_17) [AddCommMonoid M] [AddCommMonoid M₂] [Module R M] [Module S M₂] : Type (max u_16 u_17)A map `f` between an `R`-module and an `S`-module over a ring homomorphism `σ : R →+* S` is semilinear if it satisfies the two properties `f (x + y) = f x + f y` and `f (c • x) = (σ c) • f x`. Elements of `LinearMap σ M M₂` (available under the notation `M →ₛₗ[σ] M₂`) are bundled versions of such maps. For plain linear maps (i.e. for which `σ = RingHom.id R`), the notation `M →ₗ[R] M₂` is available. An unbundled version of plain linear maps is available with the predicate `IsLinearMap`, but it should be avoided most of the time.EType u_2) (hLFunction.Surjective ⇑L: Function.SurjectiveFunction.Surjective.{u_1, u_2} {α : Sort u_1} {β : Sort u_2} (f : α → β) : PropA function `f : α → β` is called surjective if every `b : β` is equal to `f a` for some `a : α`.⇑LW →ₗ[ZMod 2] E) (QQ2Presentation.Quadratic.QuadF2 W: Q2Presentation.Quadratic.QuadF2Q2Presentation.Quadratic.QuadF2.{u_2} (V : Type u_2) [AddCommGroup V] [Module (ZMod 2) V] : Type u_2A **quadratic form over `F₂`** with its bilinear polar (commutator) form.WType u_1) (AModule.Dual (ZMod 2) E → W: Module.DualModule.Dual.{u_4, u_5} (R : Type u_4) (M : Type u_5) [Semiring R] [AddCommMonoid M] [Module R M] : Type (max u_5 u_4)The left dual space of an R-module M is the R-module of linear maps `M → R`.(ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.2) EType u_2→ WType u_1) (hA∀ (χ : Module.Dual (ZMod 2) E) (x : W), (Q.polar (A χ)) x = χ (L x): ∀ (χModule.Dual (ZMod 2) E: Module.DualModule.Dual.{u_4, u_5} (R : Type u_4) (M : Type u_5) [Semiring R] [AddCommMonoid M] [Module R M] : Type (max u_5 u_4)The left dual space of an R-module M is the R-module of linear maps `M → R`.(ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.2) EType u_2) (xW: WType u_1), (QQ2Presentation.Quadratic.QuadF2 W.polarQ2Presentation.Quadratic.QuadF2.polar.{u_2} {V : Type u_2} [AddCommGroup V] [Module (ZMod 2) V] (self : Q2Presentation.Quadratic.QuadF2 V) : V →ₗ[ZMod 2] V →ₗ[ZMod 2] ZMod 2the bilinear polar form `b_q`, i.e. the commutator pairing(AModule.Dual (ZMod 2) E → WχModule.Dual (ZMod 2) E)) xW=Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`. We use `a = b` as notation for `Eq a b`. A fundamental property of equality is that it is an equivalence relation. ``` variable (α : Type) (a b c d : α) variable (hab : a = b) (hcb : c = b) (hcd : c = d) example : a = d := Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd ``` Equality is much more than an equivalence relation, however. It has the important property that every assertion respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value. That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`. Example: ``` example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := Eq.subst h1 h2 example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := h1 ▸ h2 ``` The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`. For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality) Conventions for notations in identifiers: * The recommended spelling of `=` in identifiers is `eq`.χModule.Dual (ZMod 2) E(LW →ₗ[ZMod 2] ExW)) (κE: EType u_2) (εZMod 2: ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.2) : 2 *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.↑(Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number. If `α` is infinite, `Nat.card α = 0`.EType u_2) *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.↑(Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number. If `α` is infinite, `Nat.card α = 0`.{Subtype.{u} {α : Sort u} (p : α → Prop) : Sort (max 1 u)All the elements of a type that satisfy a predicate. `Subtype p`, usually written `{ x : α // p x }` or `{ x // p x }`, contains all elements `x : α` for which `p x` is true. Its constructor is a pair of the value and the proof that it satisfies the predicate. In run-time code, `{ x : α // p x }` is represented identically to `α`. There is a coercion from `{ x : α // p x }` to `α`, so elements of a subtype may be used where the underlying type is expected. Examples: * `{ n : Nat // n % 2 = 0 }` is the type of even numbers. * `{ xs : Array String // xs.size = 5 }` is the type of arrays with five `String`s. * Given `xs : List α`, `List { x : α // x ∈ xs }` is the type of lists in which all elements are contained in `xs`. Conventions for notations in identifiers: * The recommended spelling of `{ x // p x }` in identifiers is `subtype`.xW//Subtype.{u} {α : Sort u} (p : α → Prop) : Sort (max 1 u)All the elements of a type that satisfy a predicate. `Subtype p`, usually written `{ x : α // p x }` or `{ x // p x }`, contains all elements `x : α` for which `p x` is true. Its constructor is a pair of the value and the proof that it satisfies the predicate. In run-time code, `{ x : α // p x }` is represented identically to `α`. There is a coercion from `{ x : α // p x }` to `α`, so elements of a subtype may be used where the underlying type is expected. Examples: * `{ n : Nat // n % 2 = 0 }` is the type of even numbers. * `{ xs : Array String // xs.size = 5 }` is the type of arrays with five `String`s. * Given `xs : List α`, `List { x : α // x ∈ xs }` is the type of lists in which all elements are contained in `xs`. Conventions for notations in identifiers: * The recommended spelling of `{ x // p x }` in identifiers is `subtype`.LW →ₗ[ZMod 2] ExW=Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`. We use `a = b` as notation for `Eq a b`. A fundamental property of equality is that it is an equivalence relation. ``` variable (α : Type) (a b c d : α) variable (hab : a = b) (hcb : c = b) (hcd : c = d) example : a = d := Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd ``` Equality is much more than an equivalence relation, however. It has the important property that every assertion respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value. That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`. Example: ``` example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := Eq.subst h1 h2 example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := h1 ▸ h2 ``` The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`. For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality) Conventions for notations in identifiers: * The recommended spelling of `=` in identifiers is `eq`.κE∧And (a b : Prop) : Prop`And a b`, or `a ∧ b`, is the conjunction of propositions. It can be constructed and destructed like a pair: if `ha : a` and `hb : b` then `⟨ha, hb⟩ : a ∧ b`, and if `h : a ∧ b` then `h.left : a` and `h.right : b`. Conventions for notations in identifiers: * The recommended spelling of `∧` in identifiers is `and`. * The recommended spelling of `/\` in identifiers is `and` (prefer `∧` over `/\`).QQ2Presentation.Quadratic.QuadF2 W.formQ2Presentation.Quadratic.QuadF2.form.{u_2} {V : Type u_2} [AddCommGroup V] [Module (ZMod 2) V] (self : Q2Presentation.Quadratic.QuadF2 V) : V → ZMod 2the quadratic map `q : V → F₂`xW=Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`. We use `a = b` as notation for `Eq a b`. A fundamental property of equality is that it is an equivalence relation. ``` variable (α : Type) (a b c d : α) variable (hab : a = b) (hcb : c = b) (hcd : c = d) example : a = d := Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd ``` Equality is much more than an equivalence relation, however. It has the important property that every assertion respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value. That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`. Example: ``` example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := Eq.subst h1 h2 example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := h1 ▸ h2 ``` The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`. For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality) Conventions for notations in identifiers: * The recommended spelling of `=` in identifiers is `eq`.εZMod 2}Subtype.{u} {α : Sort u} (p : α → Prop) : Sort (max 1 u)All the elements of a type that satisfy a predicate. `Subtype p`, usually written `{ x : α // p x }` or `{ x // p x }`, contains all elements `x : α` for which `p x` is true. Its constructor is a pair of the value and the proof that it satisfies the predicate. In run-time code, `{ x : α // p x }` is represented identically to `α`. There is a coercion from `{ x : α // p x }` to `α`, so elements of a subtype may be used where the underlying type is expected. Examples: * `{ n : Nat // n % 2 = 0 }` is the type of even numbers. * `{ xs : Array String // xs.size = 5 }` is the type of arrays with five `String`s. * Given `xs : List α`, `List { x : α // x ∈ xs }` is the type of lists in which all elements are contained in `xs`. Conventions for notations in identifiers: * The recommended spelling of `{ x // p x }` in identifiers is `subtype`.) =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`. We use `a = b` as notation for `Eq a b`. A fundamental property of equality is that it is an equivalence relation. ``` variable (α : Type) (a b c d : α) variable (hab : a = b) (hcb : c = b) (hcd : c = d) example : a = d := Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd ``` Equality is much more than an equivalence relation, however. It has the important property that every assertion respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value. That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`. Example: ``` example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := Eq.subst h1 h2 example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := h1 ▸ h2 ``` The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`. For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality) Conventions for notations in identifiers: * The recommended spelling of `=` in identifiers is `eq`.↑(Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number. If `α` is infinite, `Nat.card α = 0`.WType u_1) +HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `+` in identifiers is `add`.Q2Presentation.Quadratic.Dickson.gaussSumQ2Presentation.Quadratic.Dickson.gaussSum.{u_1} {V : Type u_1} [AddCommGroup V] [Module (ZMod 2) V] [Fintype V] (q : Q2Presentation.Quadratic.QuadF2 V) : ℤThe **Gauss sum** `D(q) = ∑_v χ(q v)`.QQ2Presentation.Quadratic.QuadF2 W*HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.∑ χModule.Dual (ZMod 2) E, Q2Presentation.Quadratic.Dickson.signCharQ2Presentation.Quadratic.Dickson.signChar (a : ZMod 2) : ℤThe sign character `χ(0) = 1`, `χ(1) = -1`.(HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `+` in identifiers is `add`.χModule.Dual (ZMod 2) EκE+HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `+` in identifiers is `add`.εZMod 2+HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `+` in identifiers is `add`.QQ2Presentation.Quadratic.QuadF2 W.formQ2Presentation.Quadratic.QuadF2.form.{u_2} {V : Type u_2} [AddCommGroup V] [Module (ZMod 2) V] (self : Q2Presentation.Quadratic.QuadF2 V) : V → ZMod 2the quadratic map `q : V → F₂`(AModule.Dual (ZMod 2) E → WχModule.Dual (ZMod 2) E))HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `+` in identifiers is `add`.**`lem:constrainedgauss` verbatim** (`eq:constrainedgauss`, l.3888–3894): the pure case `ℓ = 0`, i.e. `2·|E|·#{x : Lx = κ, Q(x) = ε} = |W| + G(Q)·∑_χ (-1)^{χ(κ)+ε+Q(a_χ)}` with `b_Q(a_χ,·) = χ∘L`. -
theoremdefined in Q2Presentation/Quadratic/ConstrainedGauss.leancomplete
theorem Q2Presentation.Quadratic.constrainedGauss_count_exists.{u_1, u_2} {W
Type u_1: Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`.} {EType u_2: Type u_2A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`.} [AddCommGroupAddCommGroup.{u} (G : Type u) : Type uAn additive commutative group is an additive group with commutative `(+)`.WType u_1] [ModuleModule.{u, v} (R : Type u) (M : Type v) [Semiring R] [AddCommMonoid M] : Type (max u v)A module is a generalization of vector spaces to a scalar semiring. It consists of a scalar semiring `R` and an additive monoid of "vectors" `M`, connected by a "scalar multiplication" operation `r • x : M` (where `r : R` and `x : M`) with some natural associativity and distributivity axioms similar to those on a ring.(ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.2) WType u_1] [FintypeFintype.{u_4} (α : Type u_4) : Type u_4`Fintype α` means that `α` is finite, i.e. there are only finitely many distinct elements of type `α`. The evidence of this is a finset `elems` (a list up to permutation without duplicates), together with a proof that everything of type `α` is in the list.WType u_1] [AddCommGroupAddCommGroup.{u} (G : Type u) : Type uAn additive commutative group is an additive group with commutative `(+)`.EType u_2] [ModuleModule.{u, v} (R : Type u) (M : Type v) [Semiring R] [AddCommMonoid M] : Type (max u v)A module is a generalization of vector spaces to a scalar semiring. It consists of a scalar semiring `R` and an additive monoid of "vectors" `M`, connected by a "scalar multiplication" operation `r • x : M` (where `r : R` and `x : M`) with some natural associativity and distributivity axioms similar to those on a ring.(ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.2) EType u_2] [FiniteFinite.{u_3} (α : Sort u_3) : PropA type is `Finite` if it is in bijective correspondence to some `Fin n`. This is similar to `Fintype`, but `Finite` is a proposition rather than data. A particular benefit to this is that `Finite` instances are definitionally equal to one another (due to proof irrelevance) rather than being merely propositionally equal, and, furthermore, `Finite` instances generally avoid the need for `Decidable` instances. One other notable difference is that `Finite` allows there to be `Finite p` instances for all `p : Prop`, which is not allowed by `Fintype` due to universe constraints. An application of this is that `Finite (x ∈ s → β x)` follows from the general instance for pi types, assuming `[∀ x, Finite (β x)]`. Implementation note: this is a reason `Finite α` is not defined as `Nonempty (Fintype α)`. Every `Fintype` instance provides a `Finite` instance via `Finite.of_fintype`. Conversely, one can noncomputably create a `Fintype` instance from a `Finite` instance via `Fintype.ofFinite`. In a proof one might write ```lean have := Fintype.ofFinite α ``` to obtain such an instance. Do not write noncomputable `Fintype` instances; instead write `Finite` instances and use this `Fintype.ofFinite` interface. The `Fintype` instances should be relied upon to be computable for evaluation purposes. Theorems should use `Finite` instead of `Fintype`, unless definitions in the theorem statement require `Fintype`. Definitions should prefer `Finite` as well, unless it is important that the definitions are meant to be computable in the reduction or `#eval` sense.EType u_2] [FintypeFintype.{u_4} (α : Type u_4) : Type u_4`Fintype α` means that `α` is finite, i.e. there are only finitely many distinct elements of type `α`. The evidence of this is a finset `elems` (a list up to permutation without duplicates), together with a proof that everything of type `α` is in the list.(Module.DualModule.Dual.{u_4, u_5} (R : Type u_4) (M : Type u_5) [Semiring R] [AddCommMonoid M] [Module R M] : Type (max u_5 u_4)The left dual space of an R-module M is the R-module of linear maps `M → R`.(ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.2) EType u_2)] (LW →ₗ[ZMod 2] E: WType u_1→ₗ[LinearMap.{u_14, u_15, u_16, u_17} {R : Type u_14} {S : Type u_15} [Semiring R] [Semiring S] (σ : R →+* S) (M : Type u_16) (M₂ : Type u_17) [AddCommMonoid M] [AddCommMonoid M₂] [Module R M] [Module S M₂] : Type (max u_16 u_17)A map `f` between an `R`-module and an `S`-module over a ring homomorphism `σ : R →+* S` is semilinear if it satisfies the two properties `f (x + y) = f x + f y` and `f (c • x) = (σ c) • f x`. Elements of `LinearMap σ M M₂` (available under the notation `M →ₛₗ[σ] M₂`) are bundled versions of such maps. For plain linear maps (i.e. for which `σ = RingHom.id R`), the notation `M →ₗ[R] M₂` is available. An unbundled version of plain linear maps is available with the predicate `IsLinearMap`, but it should be avoided most of the time.ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.2]LinearMap.{u_14, u_15, u_16, u_17} {R : Type u_14} {S : Type u_15} [Semiring R] [Semiring S] (σ : R →+* S) (M : Type u_16) (M₂ : Type u_17) [AddCommMonoid M] [AddCommMonoid M₂] [Module R M] [Module S M₂] : Type (max u_16 u_17)A map `f` between an `R`-module and an `S`-module over a ring homomorphism `σ : R →+* S` is semilinear if it satisfies the two properties `f (x + y) = f x + f y` and `f (c • x) = (σ c) • f x`. Elements of `LinearMap σ M M₂` (available under the notation `M →ₛₗ[σ] M₂`) are bundled versions of such maps. For plain linear maps (i.e. for which `σ = RingHom.id R`), the notation `M →ₗ[R] M₂` is available. An unbundled version of plain linear maps is available with the predicate `IsLinearMap`, but it should be avoided most of the time.EType u_2) (hLFunction.Surjective ⇑L: Function.SurjectiveFunction.Surjective.{u_1, u_2} {α : Sort u_1} {β : Sort u_2} (f : α → β) : PropA function `f : α → β` is called surjective if every `b : β` is equal to `f a` for some `a : α`.⇑LW →ₗ[ZMod 2] E) (QQ2Presentation.Quadratic.QuadF2 W: Q2Presentation.Quadratic.QuadF2Q2Presentation.Quadratic.QuadF2.{u_2} (V : Type u_2) [AddCommGroup V] [Module (ZMod 2) V] : Type u_2A **quadratic form over `F₂`** with its bilinear polar (commutator) form.WType u_1) (hnsQ.Nonsingular: QQ2Presentation.Quadratic.QuadF2 W.NonsingularQ2Presentation.Quadratic.QuadF2.Nonsingular.{u_1} {V : Type u_1} [AddCommGroup V] [Module (ZMod 2) V] (q : Q2Presentation.Quadratic.QuadF2 V) : Prop**Nonsingularity** (the polar form is nondegenerate / perfect): the only vector pairing to `0` with everything is `0`. For a nonzero invariant form on a simple self-dual `V` this is automatic (`lem:zeropolar`, l.3452).) (lModule.Dual (ZMod 2) W: Module.DualModule.Dual.{u_4, u_5} (R : Type u_4) (M : Type u_5) [Semiring R] [AddCommMonoid M] [Module R M] : Type (max u_5 u_4)The left dual space of an R-module M is the R-module of linear maps `M → R`.(ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.2) WType u_1) (κE: EType u_2) (εZMod 2: ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.2) : ∃ AModule.Dual (ZMod 2) E → W, (∀ (χModule.Dual (ZMod 2) E: Module.DualModule.Dual.{u_4, u_5} (R : Type u_4) (M : Type u_5) [Semiring R] [AddCommMonoid M] [Module R M] : Type (max u_5 u_4)The left dual space of an R-module M is the R-module of linear maps `M → R`.(ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.2) EType u_2) (xW: WType u_1), (QQ2Presentation.Quadratic.QuadF2 W.polarQ2Presentation.Quadratic.QuadF2.polar.{u_2} {V : Type u_2} [AddCommGroup V] [Module (ZMod 2) V] (self : Q2Presentation.Quadratic.QuadF2 V) : V →ₗ[ZMod 2] V →ₗ[ZMod 2] ZMod 2the bilinear polar form `b_q`, i.e. the commutator pairing(AModule.Dual (ZMod 2) E → WχModule.Dual (ZMod 2) E)) xW=Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`. We use `a = b` as notation for `Eq a b`. A fundamental property of equality is that it is an equivalence relation. ``` variable (α : Type) (a b c d : α) variable (hab : a = b) (hcb : c = b) (hcd : c = d) example : a = d := Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd ``` Equality is much more than an equivalence relation, however. It has the important property that every assertion respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value. That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`. Example: ``` example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := Eq.subst h1 h2 example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := h1 ▸ h2 ``` The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`. For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality) Conventions for notations in identifiers: * The recommended spelling of `=` in identifiers is `eq`.χModule.Dual (ZMod 2) E(LW →ₗ[ZMod 2] ExW) +HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `+` in identifiers is `add`.lModule.Dual (ZMod 2) WxW) ∧And (a b : Prop) : Prop`And a b`, or `a ∧ b`, is the conjunction of propositions. It can be constructed and destructed like a pair: if `ha : a` and `hb : b` then `⟨ha, hb⟩ : a ∧ b`, and if `h : a ∧ b` then `h.left : a` and `h.right : b`. Conventions for notations in identifiers: * The recommended spelling of `∧` in identifiers is `and`. * The recommended spelling of `/\` in identifiers is `and` (prefer `∧` over `/\`).2 *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.↑(Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number. If `α` is infinite, `Nat.card α = 0`.EType u_2) *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.↑(Q2Presentation.Quadratic.constrainedZerosQ2Presentation.Quadratic.constrainedZeros.{u_1, u_2} {W : Type u_1} {E : Type u_2} [AddCommGroup W] [Module (ZMod 2) W] [AddCommGroup E] [Module (ZMod 2) E] (L : W →ₗ[ZMod 2] E) (Q : Q2Presentation.Quadratic.QuadF2 W) (l : Module.Dual (ZMod 2) W) (κ : E) (ε : ZMod 2) : ℕ`N(κ, ε)` — the **constrained count** of `lem:constrainedgauss` (l.3879–3882), with an affine (linear-term) refinement: `#{x : L x = κ ∧ Q(x) + ℓ(x) = ε}`. At `ℓ = 0` this is the manuscript's `N(κ,ε)`; the affine form is what `prop:zeroedge` consumes through `eq:Qkappadifference` (the actual pushout form `Q_κ` is base-plus-linear, its constant part being absorbed into `ε`).LW →ₗ[ZMod 2] EQQ2Presentation.Quadratic.QuadF2 WlModule.Dual (ZMod 2) WκEεZMod 2) =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`. We use `a = b` as notation for `Eq a b`. A fundamental property of equality is that it is an equivalence relation. ``` variable (α : Type) (a b c d : α) variable (hab : a = b) (hcb : c = b) (hcd : c = d) example : a = d := Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd ``` Equality is much more than an equivalence relation, however. It has the important property that every assertion respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value. That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`. Example: ``` example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := Eq.subst h1 h2 example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := h1 ▸ h2 ``` The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`. For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality) Conventions for notations in identifiers: * The recommended spelling of `=` in identifiers is `eq`.↑(Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number. If `α` is infinite, `Nat.card α = 0`.WType u_1) +HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `+` in identifiers is `add`.Q2Presentation.Quadratic.Dickson.gaussSumQ2Presentation.Quadratic.Dickson.gaussSum.{u_1} {V : Type u_1} [AddCommGroup V] [Module (ZMod 2) V] [Fintype V] (q : Q2Presentation.Quadratic.QuadF2 V) : ℤThe **Gauss sum** `D(q) = ∑_v χ(q v)`.QQ2Presentation.Quadratic.QuadF2 W*HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.∑ χModule.Dual (ZMod 2) E, Q2Presentation.Quadratic.Dickson.signCharQ2Presentation.Quadratic.Dickson.signChar (a : ZMod 2) : ℤThe sign character `χ(0) = 1`, `χ(1) = -1`.(HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `+` in identifiers is `add`.χModule.Dual (ZMod 2) EκE+HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `+` in identifiers is `add`.εZMod 2+HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `+` in identifiers is `add`.QQ2Presentation.Quadratic.QuadF2 W.formQ2Presentation.Quadratic.QuadF2.form.{u_2} {V : Type u_2} [AddCommGroup V] [Module (ZMod 2) V] (self : Q2Presentation.Quadratic.QuadF2 V) : V → ZMod 2the quadratic map `q : V → F₂`(AModule.Dual (ZMod 2) E → WχModule.Dual (ZMod 2) E))HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `+` in identifiers is `add`.theorem Q2Presentation.Quadratic.constrainedGauss_count_exists.{u_1, u_2} {W
Type u_1: Type u_1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`.} {EType u_2: Type u_2A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`.} [AddCommGroupAddCommGroup.{u} (G : Type u) : Type uAn additive commutative group is an additive group with commutative `(+)`.WType u_1] [ModuleModule.{u, v} (R : Type u) (M : Type v) [Semiring R] [AddCommMonoid M] : Type (max u v)A module is a generalization of vector spaces to a scalar semiring. It consists of a scalar semiring `R` and an additive monoid of "vectors" `M`, connected by a "scalar multiplication" operation `r • x : M` (where `r : R` and `x : M`) with some natural associativity and distributivity axioms similar to those on a ring.(ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.2) WType u_1] [FintypeFintype.{u_4} (α : Type u_4) : Type u_4`Fintype α` means that `α` is finite, i.e. there are only finitely many distinct elements of type `α`. The evidence of this is a finset `elems` (a list up to permutation without duplicates), together with a proof that everything of type `α` is in the list.WType u_1] [AddCommGroupAddCommGroup.{u} (G : Type u) : Type uAn additive commutative group is an additive group with commutative `(+)`.EType u_2] [ModuleModule.{u, v} (R : Type u) (M : Type v) [Semiring R] [AddCommMonoid M] : Type (max u v)A module is a generalization of vector spaces to a scalar semiring. It consists of a scalar semiring `R` and an additive monoid of "vectors" `M`, connected by a "scalar multiplication" operation `r • x : M` (where `r : R` and `x : M`) with some natural associativity and distributivity axioms similar to those on a ring.(ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.2) EType u_2] [FiniteFinite.{u_3} (α : Sort u_3) : PropA type is `Finite` if it is in bijective correspondence to some `Fin n`. This is similar to `Fintype`, but `Finite` is a proposition rather than data. A particular benefit to this is that `Finite` instances are definitionally equal to one another (due to proof irrelevance) rather than being merely propositionally equal, and, furthermore, `Finite` instances generally avoid the need for `Decidable` instances. One other notable difference is that `Finite` allows there to be `Finite p` instances for all `p : Prop`, which is not allowed by `Fintype` due to universe constraints. An application of this is that `Finite (x ∈ s → β x)` follows from the general instance for pi types, assuming `[∀ x, Finite (β x)]`. Implementation note: this is a reason `Finite α` is not defined as `Nonempty (Fintype α)`. Every `Fintype` instance provides a `Finite` instance via `Finite.of_fintype`. Conversely, one can noncomputably create a `Fintype` instance from a `Finite` instance via `Fintype.ofFinite`. In a proof one might write ```lean have := Fintype.ofFinite α ``` to obtain such an instance. Do not write noncomputable `Fintype` instances; instead write `Finite` instances and use this `Fintype.ofFinite` interface. The `Fintype` instances should be relied upon to be computable for evaluation purposes. Theorems should use `Finite` instead of `Fintype`, unless definitions in the theorem statement require `Fintype`. Definitions should prefer `Finite` as well, unless it is important that the definitions are meant to be computable in the reduction or `#eval` sense.EType u_2] [FintypeFintype.{u_4} (α : Type u_4) : Type u_4`Fintype α` means that `α` is finite, i.e. there are only finitely many distinct elements of type `α`. The evidence of this is a finset `elems` (a list up to permutation without duplicates), together with a proof that everything of type `α` is in the list.(Module.DualModule.Dual.{u_4, u_5} (R : Type u_4) (M : Type u_5) [Semiring R] [AddCommMonoid M] [Module R M] : Type (max u_5 u_4)The left dual space of an R-module M is the R-module of linear maps `M → R`.(ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.2) EType u_2)] (LW →ₗ[ZMod 2] E: WType u_1→ₗ[LinearMap.{u_14, u_15, u_16, u_17} {R : Type u_14} {S : Type u_15} [Semiring R] [Semiring S] (σ : R →+* S) (M : Type u_16) (M₂ : Type u_17) [AddCommMonoid M] [AddCommMonoid M₂] [Module R M] [Module S M₂] : Type (max u_16 u_17)A map `f` between an `R`-module and an `S`-module over a ring homomorphism `σ : R →+* S` is semilinear if it satisfies the two properties `f (x + y) = f x + f y` and `f (c • x) = (σ c) • f x`. Elements of `LinearMap σ M M₂` (available under the notation `M →ₛₗ[σ] M₂`) are bundled versions of such maps. For plain linear maps (i.e. for which `σ = RingHom.id R`), the notation `M →ₗ[R] M₂` is available. An unbundled version of plain linear maps is available with the predicate `IsLinearMap`, but it should be avoided most of the time.ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.2]LinearMap.{u_14, u_15, u_16, u_17} {R : Type u_14} {S : Type u_15} [Semiring R] [Semiring S] (σ : R →+* S) (M : Type u_16) (M₂ : Type u_17) [AddCommMonoid M] [AddCommMonoid M₂] [Module R M] [Module S M₂] : Type (max u_16 u_17)A map `f` between an `R`-module and an `S`-module over a ring homomorphism `σ : R →+* S` is semilinear if it satisfies the two properties `f (x + y) = f x + f y` and `f (c • x) = (σ c) • f x`. Elements of `LinearMap σ M M₂` (available under the notation `M →ₛₗ[σ] M₂`) are bundled versions of such maps. For plain linear maps (i.e. for which `σ = RingHom.id R`), the notation `M →ₗ[R] M₂` is available. An unbundled version of plain linear maps is available with the predicate `IsLinearMap`, but it should be avoided most of the time.EType u_2) (hLFunction.Surjective ⇑L: Function.SurjectiveFunction.Surjective.{u_1, u_2} {α : Sort u_1} {β : Sort u_2} (f : α → β) : PropA function `f : α → β` is called surjective if every `b : β` is equal to `f a` for some `a : α`.⇑LW →ₗ[ZMod 2] E) (QQ2Presentation.Quadratic.QuadF2 W: Q2Presentation.Quadratic.QuadF2Q2Presentation.Quadratic.QuadF2.{u_2} (V : Type u_2) [AddCommGroup V] [Module (ZMod 2) V] : Type u_2A **quadratic form over `F₂`** with its bilinear polar (commutator) form.WType u_1) (hnsQ.Nonsingular: QQ2Presentation.Quadratic.QuadF2 W.NonsingularQ2Presentation.Quadratic.QuadF2.Nonsingular.{u_1} {V : Type u_1} [AddCommGroup V] [Module (ZMod 2) V] (q : Q2Presentation.Quadratic.QuadF2 V) : Prop**Nonsingularity** (the polar form is nondegenerate / perfect): the only vector pairing to `0` with everything is `0`. For a nonzero invariant form on a simple self-dual `V` this is automatic (`lem:zeropolar`, l.3452).) (lModule.Dual (ZMod 2) W: Module.DualModule.Dual.{u_4, u_5} (R : Type u_4) (M : Type u_5) [Semiring R] [AddCommMonoid M] [Module R M] : Type (max u_5 u_4)The left dual space of an R-module M is the R-module of linear maps `M → R`.(ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.2) WType u_1) (κE: EType u_2) (εZMod 2: ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.2) : ∃ AModule.Dual (ZMod 2) E → W, (∀ (χModule.Dual (ZMod 2) E: Module.DualModule.Dual.{u_4, u_5} (R : Type u_4) (M : Type u_5) [Semiring R] [AddCommMonoid M] [Module R M] : Type (max u_5 u_4)The left dual space of an R-module M is the R-module of linear maps `M → R`.(ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.2) EType u_2) (xW: WType u_1), (QQ2Presentation.Quadratic.QuadF2 W.polarQ2Presentation.Quadratic.QuadF2.polar.{u_2} {V : Type u_2} [AddCommGroup V] [Module (ZMod 2) V] (self : Q2Presentation.Quadratic.QuadF2 V) : V →ₗ[ZMod 2] V →ₗ[ZMod 2] ZMod 2the bilinear polar form `b_q`, i.e. the commutator pairing(AModule.Dual (ZMod 2) E → WχModule.Dual (ZMod 2) E)) xW=Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`. We use `a = b` as notation for `Eq a b`. A fundamental property of equality is that it is an equivalence relation. ``` variable (α : Type) (a b c d : α) variable (hab : a = b) (hcb : c = b) (hcd : c = d) example : a = d := Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd ``` Equality is much more than an equivalence relation, however. It has the important property that every assertion respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value. That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`. Example: ``` example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := Eq.subst h1 h2 example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := h1 ▸ h2 ``` The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`. For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality) Conventions for notations in identifiers: * The recommended spelling of `=` in identifiers is `eq`.χModule.Dual (ZMod 2) E(LW →ₗ[ZMod 2] ExW) +HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `+` in identifiers is `add`.lModule.Dual (ZMod 2) WxW) ∧And (a b : Prop) : Prop`And a b`, or `a ∧ b`, is the conjunction of propositions. It can be constructed and destructed like a pair: if `ha : a` and `hb : b` then `⟨ha, hb⟩ : a ∧ b`, and if `h : a ∧ b` then `h.left : a` and `h.right : b`. Conventions for notations in identifiers: * The recommended spelling of `∧` in identifiers is `and`. * The recommended spelling of `/\` in identifiers is `and` (prefer `∧` over `/\`).2 *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.↑(Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number. If `α` is infinite, `Nat.card α = 0`.EType u_2) *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.↑(Q2Presentation.Quadratic.constrainedZerosQ2Presentation.Quadratic.constrainedZeros.{u_1, u_2} {W : Type u_1} {E : Type u_2} [AddCommGroup W] [Module (ZMod 2) W] [AddCommGroup E] [Module (ZMod 2) E] (L : W →ₗ[ZMod 2] E) (Q : Q2Presentation.Quadratic.QuadF2 W) (l : Module.Dual (ZMod 2) W) (κ : E) (ε : ZMod 2) : ℕ`N(κ, ε)` — the **constrained count** of `lem:constrainedgauss` (l.3879–3882), with an affine (linear-term) refinement: `#{x : L x = κ ∧ Q(x) + ℓ(x) = ε}`. At `ℓ = 0` this is the manuscript's `N(κ,ε)`; the affine form is what `prop:zeroedge` consumes through `eq:Qkappadifference` (the actual pushout form `Q_κ` is base-plus-linear, its constant part being absorbed into `ε`).LW →ₗ[ZMod 2] EQQ2Presentation.Quadratic.QuadF2 WlModule.Dual (ZMod 2) WκEεZMod 2) =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`. We use `a = b` as notation for `Eq a b`. A fundamental property of equality is that it is an equivalence relation. ``` variable (α : Type) (a b c d : α) variable (hab : a = b) (hcb : c = b) (hcd : c = d) example : a = d := Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd ``` Equality is much more than an equivalence relation, however. It has the important property that every assertion respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value. That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`. Example: ``` example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := Eq.subst h1 h2 example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := h1 ▸ h2 ``` The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`. For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality) Conventions for notations in identifiers: * The recommended spelling of `=` in identifiers is `eq`.↑(Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number. If `α` is infinite, `Nat.card α = 0`.WType u_1) +HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `+` in identifiers is `add`.Q2Presentation.Quadratic.Dickson.gaussSumQ2Presentation.Quadratic.Dickson.gaussSum.{u_1} {V : Type u_1} [AddCommGroup V] [Module (ZMod 2) V] [Fintype V] (q : Q2Presentation.Quadratic.QuadF2 V) : ℤThe **Gauss sum** `D(q) = ∑_v χ(q v)`.QQ2Presentation.Quadratic.QuadF2 W*HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.∑ χModule.Dual (ZMod 2) E, Q2Presentation.Quadratic.Dickson.signCharQ2Presentation.Quadratic.Dickson.signChar (a : ZMod 2) : ℤThe sign character `χ(0) = 1`, `χ(1) = -1`.(HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `+` in identifiers is `add`.χModule.Dual (ZMod 2) EκE+HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `+` in identifiers is `add`.εZMod 2+HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `+` in identifiers is `add`.QQ2Presentation.Quadratic.QuadF2 W.formQ2Presentation.Quadratic.QuadF2.form.{u_2} {V : Type u_2} [AddCommGroup V] [Module (ZMod 2) V] (self : Q2Presentation.Quadratic.QuadF2 V) : V → ZMod 2the quadratic map `q : V → F₂`(AModule.Dual (ZMod 2) E → WχModule.Dual (ZMod 2) E))HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `+` in identifiers is `add`.`lem:constrainedgauss` in **existential form**: for a *nonsingular* `Q` the representing vectors exist (`b_Q(a_χ,·) = χ∘L + ℓ`, unique by `QuadF2.polarRep_unique`) and the transform holds for them. This is the exact package `prop:zeroedge` consumes at `W := H¹`-model, `E := H²(T)`-model, `L := ∂`, `κ := ρ*e`, `ℓ := ⟨·, ρ*γ_κ⟩` (`eq:pointwiseconstrained`).
-
Q2Presentation.Induction.sec7_edgeTwistFlip_gammaA[complete] -
Q2Presentation.Induction.sec7_edgeHalving_gammaA[complete] -
Q2Presentation.Induction.tCoverKernel[complete] -
Q2Presentation.Induction.coverLiftableWeak_iff_obRead_zero[complete] -
Q2Presentation.Induction.edgePairing_eq_of_fibre[complete] -
Q2Presentation.Induction.twistLift[complete] -
Q2Presentation.Induction.EdgeTwistFlip[complete] -
Q2Presentation.Induction.edgeHalvingGammaA_of_twistFlip[complete] -
Q2Presentation.Induction.zeroEdge_of_separating_dual[complete] -
Q2Presentation.Induction.edgeTwistFlip_of_nonzeroEdge[complete] -
Q2Presentation.Induction.edgeComplement_nonempty[complete] -
Q2Presentation.Induction.ZeroEdge[complete] -
Q2Presentation.Induction.edgeDefect_mCover[complete] -
Q2Presentation.Induction.edgeDefect_mul_mCover[complete] -
Q2Presentation.Induction.zeroEdge_iff_defect[complete] -
Q2Presentation.Induction.EdgeHalvingGammaA[complete] -
Q2Presentation.Induction.EdgeHalvingGQ2[complete] -
Q2Presentation.Induction.tCover_comm[complete] -
Q2Presentation.Induction.tCover_mul_self[complete] -
Q2Presentation.Induction.mCover_conj_fix[complete] -
Q2Presentation.Induction.tCoverCollapse[complete]
Lemma 8.6 of the paper (Radical edge, variation formula, and descent).
Let 0\to T\to M\to V\to0 be the simple-head sequence, and let
p:\widetilde B\twoheadrightarrow B
be a central double cover whose restriction to M has quadratic form with
polar radical T and whose restriction to T is zero. The cover determines
a canonical edge class
[\varepsilon]\in H^1(B/T,T^\vee).
Its restriction to V is zero, so it is inflated from a unique class
[\bar\varepsilon]\in H^1(C,T^\vee).
For every lower exact-image epimorphism \rho:\Gamma\twoheadrightarrow C and
every unrestricted M-lift f, twisting by
u\in Z^1_{\Gamma,\rho}(T) changes the scalar obstruction by
\operatorname{ob}(f_u)=\operatorname{ob}(f) +\bigl\langle [u],\rho^*[\bar\varepsilon]\bigr\rangle_\Gamma.
If [\bar\varepsilon]\ne0, the free Z^1_{\Gamma,\rho}(T)-action partitions
the unrestricted M-lifts into orbits in each of which exactly one half
satisfy the central relation. If [\bar\varepsilon]=0, the cover descends to
a central double cover of B/T; conversely, descent forces the edge class to
vanish.
Lean code for Lemma8.6●21 declarations
Associated Lean declarations
-
Q2Presentation.Induction.sec7_edgeTwistFlip_gammaA[complete]
-
Q2Presentation.Induction.sec7_edgeHalving_gammaA[complete]
-
Q2Presentation.Induction.tCoverKernel[complete]
-
Q2Presentation.Induction.coverLiftableWeak_iff_obRead_zero[complete]
-
Q2Presentation.Induction.edgePairing_eq_of_fibre[complete]
-
Q2Presentation.Induction.twistLift[complete]
-
Q2Presentation.Induction.EdgeTwistFlip[complete]
-
Q2Presentation.Induction.edgeHalvingGammaA_of_twistFlip[complete]
-
Q2Presentation.Induction.zeroEdge_of_separating_dual[complete]
-
Q2Presentation.Induction.edgeTwistFlip_of_nonzeroEdge[complete]
-
Q2Presentation.Induction.edgeComplement_nonempty[complete]
-
Q2Presentation.Induction.ZeroEdge[complete]
-
Q2Presentation.Induction.edgeDefect_mCover[complete]
-
Q2Presentation.Induction.edgeDefect_mul_mCover[complete]
-
Q2Presentation.Induction.zeroEdge_iff_defect[complete]
-
Q2Presentation.Induction.EdgeHalvingGammaA[complete]
-
Q2Presentation.Induction.EdgeHalvingGQ2[complete]
-
Q2Presentation.Induction.tCover_comm[complete]
-
Q2Presentation.Induction.tCover_mul_self[complete]
-
Q2Presentation.Induction.mCover_conj_fix[complete]
-
Q2Presentation.Induction.tCoverCollapse[complete]
-
Q2Presentation.Induction.sec7_edgeTwistFlip_gammaA[complete] -
Q2Presentation.Induction.sec7_edgeHalving_gammaA[complete] -
Q2Presentation.Induction.tCoverKernel[complete] -
Q2Presentation.Induction.coverLiftableWeak_iff_obRead_zero[complete] -
Q2Presentation.Induction.edgePairing_eq_of_fibre[complete] -
Q2Presentation.Induction.twistLift[complete] -
Q2Presentation.Induction.EdgeTwistFlip[complete] -
Q2Presentation.Induction.edgeHalvingGammaA_of_twistFlip[complete] -
Q2Presentation.Induction.zeroEdge_of_separating_dual[complete] -
Q2Presentation.Induction.edgeTwistFlip_of_nonzeroEdge[complete] -
Q2Presentation.Induction.edgeComplement_nonempty[complete] -
Q2Presentation.Induction.ZeroEdge[complete] -
Q2Presentation.Induction.edgeDefect_mCover[complete] -
Q2Presentation.Induction.edgeDefect_mul_mCover[complete] -
Q2Presentation.Induction.zeroEdge_iff_defect[complete] -
Q2Presentation.Induction.EdgeHalvingGammaA[complete] -
Q2Presentation.Induction.EdgeHalvingGQ2[complete] -
Q2Presentation.Induction.tCover_comm[complete] -
Q2Presentation.Induction.tCover_mul_self[complete] -
Q2Presentation.Induction.mCover_conj_fix[complete] -
Q2Presentation.Induction.tCoverCollapse[complete]
-
theoremdefined in Q2Presentation/Induction/BlockRecursionKeeps.leancomplete
theorem Q2Presentation.Induction.sec7_edgeTwistFlip_gammaA {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) (hedge¬Q2Presentation.Induction.ZeroEdge chief K lam hinv: ¬Not (a : Prop) : Prop`Not p`, or `¬p`, is the negation of `p`. It is defined to be `p → False`, so if your goal is `¬p` you can use `intro h` to turn the goal into `h : p ⊢ False`, and if you have `hn : ¬p` and `h : p` then `hn h : False` and `(hn h).elim` will prove anything. For more information: [Propositional Logic](https://lean-lang.org/theorem_proving_in_lean4/propositions_and_proofs.html#propositional-logic) Conventions for notations in identifiers: * The recommended spelling of `¬` in identifiers is `not`.Q2Presentation.Induction.ZeroEdgeQ2Presentation.Induction.ZeroEdge {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) : Prop**The zero-edge predicate** (`lem:radicaledge`'s `[ε̄] = 0` branch, cocycle-free): some edge complement is normal in the whole cover.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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.EdgeTwistFlipQ2Presentation.Induction.EdgeTwistFlip {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) (hne : lam ≠ 0) : Prop**The isolated nonvanishing residue** (`lem:radicaledge` step 6's `[ε̄] ≠ 0 ⟹` perfect-degree-one-duality clause): over every child surjection, SOME weak `M`-lift carries a relator cocycle of nonzero edge pairing. This — not the halving itself — is the remaining content of `sec7_edgeHalving_gammaA`; dissolution program in `audit/BLOCKR_P8_DESIGN.md` §10-P8D.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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.sec7_edgeTwistFlip_gammaA {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) (hedge¬Q2Presentation.Induction.ZeroEdge chief K lam hinv: ¬Not (a : Prop) : Prop`Not p`, or `¬p`, is the negation of `p`. It is defined to be `p → False`, so if your goal is `¬p` you can use `intro h` to turn the goal into `h : p ⊢ False`, and if you have `hn : ¬p` and `h : p` then `hn h : False` and `(hn h).elim` will prove anything. For more information: [Propositional Logic](https://lean-lang.org/theorem_proving_in_lean4/propositions_and_proofs.html#propositional-logic) Conventions for notations in identifiers: * The recommended spelling of `¬` in identifiers is `not`.Q2Presentation.Induction.ZeroEdgeQ2Presentation.Induction.ZeroEdge {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) : Prop**The zero-edge predicate** (`lem:radicaledge`'s `[ε̄] = 0` branch, cocycle-free): some edge complement is normal in the whole cover.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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.EdgeTwistFlipQ2Presentation.Induction.EdgeTwistFlip {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) (hne : lam ≠ 0) : Prop**The isolated nonvanishing residue** (`lem:radicaledge` step 6's `[ε̄] ≠ 0 ⟹` perfect-degree-one-duality clause): over every child surjection, SOME weak `M`-lift carries a relator cocycle of nonzero edge pairing. This — not the halving itself — is the remaining content of `sec7_edgeHalving_gammaA`; dissolution program in `audit/BLOCKR_P8_DESIGN.md` §10-P8D.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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**R4a flip-cocycle existence, candidate source — DISSOLVED (P8-W).** Former keep 1 (design §10-P8D, the strictly smaller residue of §5.2's `sec7_edgeHalving_gammaA`), now a THEOREM: the manuscript's degree-one duality clause (`lem:radicaledge` step 6, `prop:chainmap` + `prop:defduality`-grade) is replaced by the in-tree marked-augmentation diamond dévissage of `EdgeTwistWitness.lean` (design §12-P8W): at `hedge` the deck generator falls inside the separating-dual window (`zeroEdge_of_separating_dual` contrapositive), `diamondAtW_all` + `hfaithNT_of_frame` produce a relator-row witness, and deck-valued shadows yield a `TwistCocycle` of `edgePairing` exactly `1`. Guards stay load-bearing: at zero edge the flip provably cannot exist, so the unconditional statement remains FALSE — the hypotheses are not vestigial.
-
theoremdefined in Q2Presentation/Induction/BlockRecursionKeeps.leancomplete
theorem Q2Presentation.Induction.sec7_edgeHalving_gammaA {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) (hedge¬Q2Presentation.Induction.ZeroEdge chief K lam hinv: ¬Not (a : Prop) : Prop`Not p`, or `¬p`, is the negation of `p`. It is defined to be `p → False`, so if your goal is `¬p` you can use `intro h` to turn the goal into `h : p ⊢ False`, and if you have `hn : ¬p` and `h : p` then `hn h : False` and `(hn h).elim` will prove anything. For more information: [Propositional Logic](https://lean-lang.org/theorem_proving_in_lean4/propositions_and_proofs.html#propositional-logic) Conventions for notations in identifiers: * The recommended spelling of `¬` in identifiers is `not`.Q2Presentation.Induction.ZeroEdgeQ2Presentation.Induction.ZeroEdge {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) : Prop**The zero-edge predicate** (`lem:radicaledge`'s `[ε̄] = 0` branch, cocycle-free): some edge complement is normal in the whole cover.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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.EdgeHalvingGammaAQ2Presentation.Induction.EdgeHalvingGammaA {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) : Prop**The R4a per-fibre halving, candidate source** — THE sharply-scoped R4a residual (manuscript `lem:radicaledge` step 6, l.4006–4019: exact variation formula + perfect degree-one duality; candidate half = `prop:chainmap` l.1687 + `prop:defduality`-grade degree-one content): over each `g_C`, exactly half of the weak `M`-lifts are λ-liftable, stated division-free per fibre. Deliberately does NOT assert the fibre size `2^{2·dim M}` (that is the separate, PROVEN `lem:elementarystage` obligation — design §6.3), and is deliberately NOT conditioned here on `¬ ZeroEdge` — the conditioning belongs to its (future, coordinated) keep `sec7_edgeHalving_gammaA (hne) (hedge) : EdgeHalvingGammaA …`, whose dissolution program is recorded in the design §4.6: (i) the ledger variation formula from U3's `edgeDefect` calculus + the weak-base defect engine; (ii) `edgeShadow ≠ 0` on the `T`-cocycle space by the trivial-chain dévissage over the PROVEN `Sec7TrivialChainData`; (iii) the free-orbit torsor bookkeeping.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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)theorem Q2Presentation.Induction.sec7_edgeHalving_gammaA {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) (hedge¬Q2Presentation.Induction.ZeroEdge chief K lam hinv: ¬Not (a : Prop) : Prop`Not p`, or `¬p`, is the negation of `p`. It is defined to be `p → False`, so if your goal is `¬p` you can use `intro h` to turn the goal into `h : p ⊢ False`, and if you have `hn : ¬p` and `h : p` then `hn h : False` and `(hn h).elim` will prove anything. For more information: [Propositional Logic](https://lean-lang.org/theorem_proving_in_lean4/propositions_and_proofs.html#propositional-logic) Conventions for notations in identifiers: * The recommended spelling of `¬` in identifiers is `not`.Q2Presentation.Induction.ZeroEdgeQ2Presentation.Induction.ZeroEdge {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) : Prop**The zero-edge predicate** (`lem:radicaledge`'s `[ε̄] = 0` branch, cocycle-free): some edge complement is normal in the whole cover.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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.EdgeHalvingGammaAQ2Presentation.Induction.EdgeHalvingGammaA {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) : Prop**The R4a per-fibre halving, candidate source** — THE sharply-scoped R4a residual (manuscript `lem:radicaledge` step 6, l.4006–4019: exact variation formula + perfect degree-one duality; candidate half = `prop:chainmap` l.1687 + `prop:defduality`-grade degree-one content): over each `g_C`, exactly half of the weak `M`-lifts are λ-liftable, stated division-free per fibre. Deliberately does NOT assert the fibre size `2^{2·dim M}` (that is the separate, PROVEN `lem:elementarystage` obligation — design §6.3), and is deliberately NOT conditioned here on `¬ ZeroEdge` — the conditioning belongs to its (future, coordinated) keep `sec7_edgeHalving_gammaA (hne) (hedge) : EdgeHalvingGammaA …`, whose dissolution program is recorded in the design §4.6: (i) the ledger variation formula from U3's `edgeDefect` calculus + the weak-base defect engine; (ii) `edgeShadow ≠ 0` on the `T`-cocycle space by the trivial-chain dévissage over the PROVEN `Sec7TrivialChainData`; (iii) the free-orbit torsor bookkeeping.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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)**The R4a per-fibre halving, candidate source — now a THEOREM** in the design §5.2 statement (same name/statement as the pre-P8-D keep shape, zero downstream rewiring): recovered from keep 1 through the PROVEN flip involution `edgeHalvingGammaA_of_twistFlip` (`lem:radicaledge` steps 1–6 minus the duality clause, in-tree).
-
defdefined in Q2Presentation/Induction/EdgeHalvingTwist.leancomplete
def Q2Presentation.Induction.tCoverKernel {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) : Q2Presentation.Lifting.ElementaryKernelQ2Presentation.Lifting.ElementaryKernel (Yt : Q2Presentation.BoundaryFramedTarget) : TypeA normal subgroup of a framed target that is killed by the decoration, contained in the wild kernel, **abelian**, and of **exponent 2** — the shape of the chief kernels the cochain keeps quantify over.(Q2Presentation.Lifting.scalarCoverTargetQ2Presentation.Lifting.scalarCoverTarget {Yt : Q2Presentation.BoundaryFramedTarget} [Finite Yt.Y] (E : Q2Presentation.Lifting.ElementaryKernel Yt) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E)) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals E) : Q2Presentation.BoundaryFramedTarget**The scalar pushout target** `B_λ = Y/ker λ` as a framed target (same `H`, `E`, frame; `eq:targettower` refined by l.4219–4223).(Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel** (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K))def Q2Presentation.Induction.tCoverKernel {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) : Q2Presentation.Lifting.ElementaryKernelQ2Presentation.Lifting.ElementaryKernel (Yt : Q2Presentation.BoundaryFramedTarget) : TypeA normal subgroup of a framed target that is killed by the decoration, contained in the wild kernel, **abelian**, and of **exponent 2** — the shape of the chief kernels the cochain keeps quantify over.(Q2Presentation.Lifting.scalarCoverTargetQ2Presentation.Lifting.scalarCoverTarget {Yt : Q2Presentation.BoundaryFramedTarget} [Finite Yt.Y] (E : Q2Presentation.Lifting.ElementaryKernel Yt) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E)) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals E) : Q2Presentation.BoundaryFramedTarget**The scalar pushout target** `B_λ = Y/ker λ` as a framed target (same `H`, `E`, frame; `eq:targettower` refined by l.4219–4223).(Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel** (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K))**`T̃ ≤ B_λ` as an elementary kernel** (`lem:radicaledge` step 1 packaged): normal, wild, θ-dead, abelian of exponent 2 — the carrier of the twist calculus at the cover.
-
theoremdefined in Q2Presentation/Induction/EdgeHalvingTwist.leancomplete
theorem Q2Presentation.Induction.coverLiftableWeak_iff_obRead_zero {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) (fQ2Presentation.TorsorProgram.coverLiftTotal (Q2Presentation.Induction.XRZero.xrChild chief K).fst (Q2Presentation.Induction.mChildKernel chief K).N Q2Presentation.boundaryPackage_GammaA (Q2Presentation.Induction.XRZero.xrChild chief K).snd: Q2Presentation.TorsorProgram.coverLiftTotalQ2Presentation.TorsorProgram.coverLiftTotal (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y) [hNn : N.Normal] {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (F : Q2Presentation.BoundaryFrame Yt) : Type**The cover-lift total space**: framed continuous homs into the AMBIENT target whose projection to the child is onto (`lem:covertransform`: all lifts of all unobstructed exact-image maps at once; surjectivity onto the ambient target NOT imposed — these are the weak lifts).(Q2Presentation.Induction.XRZero.xrChildQ2Presentation.Induction.XRZero.xrChild {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPairThe `𝒳_R = 0` child: the quotient framed pair at `N = Φ`-layer.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.(Q2Presentation.Induction.mChildKernelQ2Presentation.Induction.mChildKernel {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Lifting.ElementaryKernel (Q2Presentation.Induction.XRZero.xrChild chief K).fst**The elementary `M`-kernel at the child** `B = Y/Φ(K)` (`lem:simplehead` carrier for `lem:elementarystage`): `N = M' = K/Φ(K)`.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).NQ2Presentation.Lifting.ElementaryKernel.N {Yt : Q2Presentation.BoundaryFramedTarget} (self : Q2Presentation.Lifting.ElementaryKernel Yt) : Subgroup Yt.YQ2Presentation.boundaryPackage_GammaAQ2Presentation.boundaryPackage_GammaA : Q2Presentation.BoundaryPackage Q2Presentation.GammaA**The candidate boundary package** (manuscript Prop 3.14, `prop:compatiblemarking`; plan Turn 4 §6). The Stage-C data of `Γ_A`: the common tame quotient `gammaTameMap`, the maximal pro-`2` quotient `p : Γ_A ⟶ Π`, and the common unramified character `ν = gammaTameMap ≫ ν_t`, through which both factor.(Q2Presentation.Induction.XRZero.xrChildQ2Presentation.Induction.XRZero.xrChild {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPairThe `𝒳_R = 0` child: the quotient framed pair at `N = Φ`-layer.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.) (qQ2Presentation.Marking (Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y: Q2Presentation.MarkingQ2Presentation.Marking.{u_1} (G : Type u_1) [Group G] : Type u_1A marking assigns a group element to each of the four generators.(Q2Presentation.Lifting.scalarCoverTargetQ2Presentation.Lifting.scalarCoverTarget {Yt : Q2Presentation.BoundaryFramedTarget} [Finite Yt.Y] (E : Q2Presentation.Lifting.ElementaryKernel Yt) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E)) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals E) : Q2Presentation.BoundaryFramedTarget**The scalar pushout target** `B_λ = Y/ker λ` as a framed target (same `H`, `E`, frame; `eq:targettower` refined by l.4219–4223).(Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel** (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)).YQ2Presentation.BoundaryFramedTarget.Y (self : Q2Presentation.BoundaryFramedTarget) : TypeThe finite target group `Y`.) (hqQ2Presentation.Induction.CoverMarking chief K lam hinv f q: Q2Presentation.Induction.CoverMarkingQ2Presentation.Induction.CoverMarking {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) (f : Q2Presentation.TorsorProgram.coverLiftTotal (Q2Presentation.Induction.XRZero.xrChild chief K).fst (Q2Presentation.Induction.mChildKernel chief K).N Q2Presentation.boundaryPackage_GammaA (Q2Presentation.Induction.XRZero.xrChild chief K).snd) (q : Q2Presentation.Marking (Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y) : Prop**A cover marking over a weak `M`-lift**: generator values in `B_λ` projecting to the lift's marking, framed by the parent frame.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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)fQ2Presentation.TorsorProgram.coverLiftTotal (Q2Presentation.Induction.XRZero.xrChild chief K).fst (Q2Presentation.Induction.mChildKernel chief K).N Q2Presentation.boundaryPackage_GammaA (Q2Presentation.Induction.XRZero.xrChild chief K).sndqQ2Presentation.Marking (Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y) : Q2Presentation.Induction.coverLiftableWeakQ2Presentation.Induction.coverLiftableWeak {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (f : Q2Presentation.TorsorProgram.coverLiftTotal (Q2Presentation.Induction.XRZero.xrChild chief K).fst (Q2Presentation.Induction.mChildKernel chief K).N B (Q2Presentation.Induction.XRZero.xrChild chief K).snd) : Prop**λ-liftability of a weak `M`-lift** (`lem:properimagesubtraction` l.4269–4271): a point of the W2a total space at the child M-kernel is λ-liftable when some framed hom into `B_λ` projects to it along `p_λ = scalarCoverProj` — surjectivity onto `B_λ` NOT imposed (weak solvability; images are stratified by `eq:recursionR2`/`R3`).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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.boundaryPackage_GammaAQ2Presentation.boundaryPackage_GammaA : Q2Presentation.BoundaryPackage Q2Presentation.GammaA**The candidate boundary package** (manuscript Prop 3.14, `prop:compatiblemarking`; plan Turn 4 §6). The Stage-C data of `Γ_A`: the common tame quotient `gammaTameMap`, the maximal pro-`2` quotient `p : Γ_A ⟶ Π`, and the common unramified character `ν = gammaTameMap ≫ ν_t`, through which both factor.fQ2Presentation.TorsorProgram.coverLiftTotal (Q2Presentation.Induction.XRZero.xrChild chief K).fst (Q2Presentation.Induction.mChildKernel chief K).N Q2Presentation.boundaryPackage_GammaA (Q2Presentation.Induction.XRZero.xrChild chief K).snd↔Iff (a b : Prop) : PropIf and only if, or logical bi-implication. `a ↔ b` means that `a` implies `b` and vice versa. By `propext`, this implies that `a` and `b` are equal and hence any expression involving `a` is equivalent to the corresponding expression with `b` instead. Conventions for notations in identifiers: * The recommended spelling of `↔` in identifiers is `iff`. * The recommended spelling of `<->` in identifiers is `iff` (prefer `↔` over `<->`).Q2Presentation.Induction.obReadQ2Presentation.Induction.obRead {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) (q : Q2Presentation.Marking (Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y) : ZMod 2**The obstruction bit of a cover marking**: the `relRead`-sum of the two relator defects (`eq:edgevariationobstruction`'s `ob`, in-tree form).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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)qQ2Presentation.Marking (Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y=Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`. We use `a = b` as notation for `Eq a b`. A fundamental property of equality is that it is an equivalence relation. ``` variable (α : Type) (a b c d : α) variable (hab : a = b) (hcb : c = b) (hcd : c = d) example : a = d := Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd ``` Equality is much more than an equivalence relation, however. It has the important property that every assertion respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value. That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`. Example: ``` example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := Eq.subst h1 h2 example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := h1 ▸ h2 ``` The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`. For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality) Conventions for notations in identifiers: * The recommended spelling of `=` in identifiers is `eq`.0theorem Q2Presentation.Induction.coverLiftableWeak_iff_obRead_zero {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) (fQ2Presentation.TorsorProgram.coverLiftTotal (Q2Presentation.Induction.XRZero.xrChild chief K).fst (Q2Presentation.Induction.mChildKernel chief K).N Q2Presentation.boundaryPackage_GammaA (Q2Presentation.Induction.XRZero.xrChild chief K).snd: Q2Presentation.TorsorProgram.coverLiftTotalQ2Presentation.TorsorProgram.coverLiftTotal (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y) [hNn : N.Normal] {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (F : Q2Presentation.BoundaryFrame Yt) : Type**The cover-lift total space**: framed continuous homs into the AMBIENT target whose projection to the child is onto (`lem:covertransform`: all lifts of all unobstructed exact-image maps at once; surjectivity onto the ambient target NOT imposed — these are the weak lifts).(Q2Presentation.Induction.XRZero.xrChildQ2Presentation.Induction.XRZero.xrChild {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPairThe `𝒳_R = 0` child: the quotient framed pair at `N = Φ`-layer.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.(Q2Presentation.Induction.mChildKernelQ2Presentation.Induction.mChildKernel {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Lifting.ElementaryKernel (Q2Presentation.Induction.XRZero.xrChild chief K).fst**The elementary `M`-kernel at the child** `B = Y/Φ(K)` (`lem:simplehead` carrier for `lem:elementarystage`): `N = M' = K/Φ(K)`.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).NQ2Presentation.Lifting.ElementaryKernel.N {Yt : Q2Presentation.BoundaryFramedTarget} (self : Q2Presentation.Lifting.ElementaryKernel Yt) : Subgroup Yt.YQ2Presentation.boundaryPackage_GammaAQ2Presentation.boundaryPackage_GammaA : Q2Presentation.BoundaryPackage Q2Presentation.GammaA**The candidate boundary package** (manuscript Prop 3.14, `prop:compatiblemarking`; plan Turn 4 §6). The Stage-C data of `Γ_A`: the common tame quotient `gammaTameMap`, the maximal pro-`2` quotient `p : Γ_A ⟶ Π`, and the common unramified character `ν = gammaTameMap ≫ ν_t`, through which both factor.(Q2Presentation.Induction.XRZero.xrChildQ2Presentation.Induction.XRZero.xrChild {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPairThe `𝒳_R = 0` child: the quotient framed pair at `N = Φ`-layer.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.) (qQ2Presentation.Marking (Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y: Q2Presentation.MarkingQ2Presentation.Marking.{u_1} (G : Type u_1) [Group G] : Type u_1A marking assigns a group element to each of the four generators.(Q2Presentation.Lifting.scalarCoverTargetQ2Presentation.Lifting.scalarCoverTarget {Yt : Q2Presentation.BoundaryFramedTarget} [Finite Yt.Y] (E : Q2Presentation.Lifting.ElementaryKernel Yt) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E)) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals E) : Q2Presentation.BoundaryFramedTarget**The scalar pushout target** `B_λ = Y/ker λ` as a framed target (same `H`, `E`, frame; `eq:targettower` refined by l.4219–4223).(Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel** (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)).YQ2Presentation.BoundaryFramedTarget.Y (self : Q2Presentation.BoundaryFramedTarget) : TypeThe finite target group `Y`.) (hqQ2Presentation.Induction.CoverMarking chief K lam hinv f q: Q2Presentation.Induction.CoverMarkingQ2Presentation.Induction.CoverMarking {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) (f : Q2Presentation.TorsorProgram.coverLiftTotal (Q2Presentation.Induction.XRZero.xrChild chief K).fst (Q2Presentation.Induction.mChildKernel chief K).N Q2Presentation.boundaryPackage_GammaA (Q2Presentation.Induction.XRZero.xrChild chief K).snd) (q : Q2Presentation.Marking (Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y) : Prop**A cover marking over a weak `M`-lift**: generator values in `B_λ` projecting to the lift's marking, framed by the parent frame.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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)fQ2Presentation.TorsorProgram.coverLiftTotal (Q2Presentation.Induction.XRZero.xrChild chief K).fst (Q2Presentation.Induction.mChildKernel chief K).N Q2Presentation.boundaryPackage_GammaA (Q2Presentation.Induction.XRZero.xrChild chief K).sndqQ2Presentation.Marking (Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y) : Q2Presentation.Induction.coverLiftableWeakQ2Presentation.Induction.coverLiftableWeak {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (f : Q2Presentation.TorsorProgram.coverLiftTotal (Q2Presentation.Induction.XRZero.xrChild chief K).fst (Q2Presentation.Induction.mChildKernel chief K).N B (Q2Presentation.Induction.XRZero.xrChild chief K).snd) : Prop**λ-liftability of a weak `M`-lift** (`lem:properimagesubtraction` l.4269–4271): a point of the W2a total space at the child M-kernel is λ-liftable when some framed hom into `B_λ` projects to it along `p_λ = scalarCoverProj` — surjectivity onto `B_λ` NOT imposed (weak solvability; images are stratified by `eq:recursionR2`/`R3`).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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.boundaryPackage_GammaAQ2Presentation.boundaryPackage_GammaA : Q2Presentation.BoundaryPackage Q2Presentation.GammaA**The candidate boundary package** (manuscript Prop 3.14, `prop:compatiblemarking`; plan Turn 4 §6). The Stage-C data of `Γ_A`: the common tame quotient `gammaTameMap`, the maximal pro-`2` quotient `p : Γ_A ⟶ Π`, and the common unramified character `ν = gammaTameMap ≫ ν_t`, through which both factor.fQ2Presentation.TorsorProgram.coverLiftTotal (Q2Presentation.Induction.XRZero.xrChild chief K).fst (Q2Presentation.Induction.mChildKernel chief K).N Q2Presentation.boundaryPackage_GammaA (Q2Presentation.Induction.XRZero.xrChild chief K).snd↔Iff (a b : Prop) : PropIf and only if, or logical bi-implication. `a ↔ b` means that `a` implies `b` and vice versa. By `propext`, this implies that `a` and `b` are equal and hence any expression involving `a` is equivalent to the corresponding expression with `b` instead. Conventions for notations in identifiers: * The recommended spelling of `↔` in identifiers is `iff`. * The recommended spelling of `<->` in identifiers is `iff` (prefer `↔` over `<->`).Q2Presentation.Induction.obReadQ2Presentation.Induction.obRead {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) (q : Q2Presentation.Marking (Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y) : ZMod 2**The obstruction bit of a cover marking**: the `relRead`-sum of the two relator defects (`eq:edgevariationobstruction`'s `ob`, in-tree form).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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)qQ2Presentation.Marking (Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y=Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`. We use `a = b` as notation for `Eq a b`. A fundamental property of equality is that it is an equivalence relation. ``` variable (α : Type) (a b c d : α) variable (hab : a = b) (hcb : c = b) (hcd : c = d) example : a = d := Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd ``` Equality is much more than an equivalence relation, however. It has the important property that every assertion respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value. That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`. Example: ``` example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := Eq.subst h1 h2 example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := h1 ▸ h2 ``` The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`. For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality) Conventions for notations in identifiers: * The recommended spelling of `=` in identifiers is `eq`.0**The marking-level liftability criterion** (`lem:radicaledge`'s `ob(f) = 0 ⟺` liftable, in-tree): a weak `M`-lift is λ-liftable iff the obstruction bit of any cover marking over it vanishes.
-
theoremdefined in Q2Presentation/Induction/EdgeHalvingTwist.leancomplete
theorem Q2Presentation.Induction.edgePairing_eq_of_fibre {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) (fQ2Presentation.TorsorProgram.coverLiftTotal (Q2Presentation.Induction.XRZero.xrChild chief K).fst (Q2Presentation.Induction.mChildKernel chief K).N Q2Presentation.boundaryPackage_GammaA (Q2Presentation.Induction.XRZero.xrChild chief K).sndf'Q2Presentation.TorsorProgram.coverLiftTotal (Q2Presentation.Induction.XRZero.xrChild chief K).fst (Q2Presentation.Induction.mChildKernel chief K).N Q2Presentation.boundaryPackage_GammaA (Q2Presentation.Induction.XRZero.xrChild chief K).snd: Q2Presentation.TorsorProgram.coverLiftTotalQ2Presentation.TorsorProgram.coverLiftTotal (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y) [hNn : N.Normal] {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (F : Q2Presentation.BoundaryFrame Yt) : Type**The cover-lift total space**: framed continuous homs into the AMBIENT target whose projection to the child is onto (`lem:covertransform`: all lifts of all unobstructed exact-image maps at once; surjectivity onto the ambient target NOT imposed — these are the weak lifts).(Q2Presentation.Induction.XRZero.xrChildQ2Presentation.Induction.XRZero.xrChild {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPairThe `𝒳_R = 0` child: the quotient framed pair at `N = Φ`-layer.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.(Q2Presentation.Induction.mChildKernelQ2Presentation.Induction.mChildKernel {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Lifting.ElementaryKernel (Q2Presentation.Induction.XRZero.xrChild chief K).fst**The elementary `M`-kernel at the child** `B = Y/Φ(K)` (`lem:simplehead` carrier for `lem:elementarystage`): `N = M' = K/Φ(K)`.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).NQ2Presentation.Lifting.ElementaryKernel.N {Yt : Q2Presentation.BoundaryFramedTarget} (self : Q2Presentation.Lifting.ElementaryKernel Yt) : Subgroup Yt.YQ2Presentation.boundaryPackage_GammaAQ2Presentation.boundaryPackage_GammaA : Q2Presentation.BoundaryPackage Q2Presentation.GammaA**The candidate boundary package** (manuscript Prop 3.14, `prop:compatiblemarking`; plan Turn 4 §6). The Stage-C data of `Γ_A`: the common tame quotient `gammaTameMap`, the maximal pro-`2` quotient `p : Γ_A ⟶ Π`, and the common unramified character `ν = gammaTameMap ≫ ν_t`, through which both factor.(Q2Presentation.Induction.XRZero.xrChildQ2Presentation.Induction.XRZero.xrChild {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPairThe `𝒳_R = 0` child: the quotient framed pair at `N = Φ`-layer.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.) (qQ2Presentation.Marking (Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Yq'Q2Presentation.Marking (Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y: Q2Presentation.MarkingQ2Presentation.Marking.{u_1} (G : Type u_1) [Group G] : Type u_1A marking assigns a group element to each of the four generators.(Q2Presentation.Lifting.scalarCoverTargetQ2Presentation.Lifting.scalarCoverTarget {Yt : Q2Presentation.BoundaryFramedTarget} [Finite Yt.Y] (E : Q2Presentation.Lifting.ElementaryKernel Yt) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E)) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals E) : Q2Presentation.BoundaryFramedTarget**The scalar pushout target** `B_λ = Y/ker λ` as a framed target (same `H`, `E`, frame; `eq:targettower` refined by l.4219–4223).(Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel** (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)).YQ2Presentation.BoundaryFramedTarget.Y (self : Q2Presentation.BoundaryFramedTarget) : TypeThe finite target group `Y`.) (hqQ2Presentation.Induction.CoverMarking chief K lam hinv f q: Q2Presentation.Induction.CoverMarkingQ2Presentation.Induction.CoverMarking {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) (f : Q2Presentation.TorsorProgram.coverLiftTotal (Q2Presentation.Induction.XRZero.xrChild chief K).fst (Q2Presentation.Induction.mChildKernel chief K).N Q2Presentation.boundaryPackage_GammaA (Q2Presentation.Induction.XRZero.xrChild chief K).snd) (q : Q2Presentation.Marking (Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y) : Prop**A cover marking over a weak `M`-lift**: generator values in `B_λ` projecting to the lift's marking, framed by the parent frame.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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)fQ2Presentation.TorsorProgram.coverLiftTotal (Q2Presentation.Induction.XRZero.xrChild chief K).fst (Q2Presentation.Induction.mChildKernel chief K).N Q2Presentation.boundaryPackage_GammaA (Q2Presentation.Induction.XRZero.xrChild chief K).sndqQ2Presentation.Marking (Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y) (hq'Q2Presentation.Induction.CoverMarking chief K lam hinv f' q': Q2Presentation.Induction.CoverMarkingQ2Presentation.Induction.CoverMarking {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) (f : Q2Presentation.TorsorProgram.coverLiftTotal (Q2Presentation.Induction.XRZero.xrChild chief K).fst (Q2Presentation.Induction.mChildKernel chief K).N Q2Presentation.boundaryPackage_GammaA (Q2Presentation.Induction.XRZero.xrChild chief K).snd) (q : Q2Presentation.Marking (Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y) : Prop**A cover marking over a weak `M`-lift**: generator values in `B_λ` projecting to the lift's marking, framed by the parent frame.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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)f'Q2Presentation.TorsorProgram.coverLiftTotal (Q2Presentation.Induction.XRZero.xrChild chief K).fst (Q2Presentation.Induction.mChildKernel chief K).N Q2Presentation.boundaryPackage_GammaA (Q2Presentation.Induction.XRZero.xrChild chief K).sndq'Q2Presentation.Marking (Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y) (hbase∀ (a : Q2Presentation.Gen), (QuotientGroup.mk' (Q2Presentation.Induction.mChildKernel chief K).N) ((ProfiniteGrp.Hom.hom ↑f) (Q2Presentation.gammaGen a)) = (QuotientGroup.mk' (Q2Presentation.Induction.mChildKernel chief K).N) ((ProfiniteGrp.Hom.hom ↑f') (Q2Presentation.gammaGen a)): ∀ (aQ2Presentation.Gen: Q2Presentation.GenQ2Presentation.Gen : TypeThe four marked generators of the candidate presentation.), (QuotientGroup.mk'QuotientGroup.mk'.{u_1} {G : Type u_1} [Group G] (N : Subgroup G) [nN : N.Normal] : G →* G ⧸ NThe group homomorphism from `G` to `G/N`.(Q2Presentation.Induction.mChildKernelQ2Presentation.Induction.mChildKernel {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Lifting.ElementaryKernel (Q2Presentation.Induction.XRZero.xrChild chief K).fst**The elementary `M`-kernel at the child** `B = Y/Φ(K)` (`lem:simplehead` carrier for `lem:elementarystage`): `N = M' = K/Φ(K)`.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).NQ2Presentation.Lifting.ElementaryKernel.N {Yt : Q2Presentation.BoundaryFramedTarget} (self : Q2Presentation.Lifting.ElementaryKernel Yt) : Subgroup Yt.Y) ((ProfiniteGrp.Hom.homProfiniteGrp.Hom.hom.{u} {M N : ProfiniteGrp.{u}} (f : M.Hom N) : ↑M.toProfinite.toTop →ₜ* ↑N.toProfinite.toTopThe underlying `ContinuousMonoidHom`.↑fQ2Presentation.TorsorProgram.coverLiftTotal (Q2Presentation.Induction.XRZero.xrChild chief K).fst (Q2Presentation.Induction.mChildKernel chief K).N Q2Presentation.boundaryPackage_GammaA (Q2Presentation.Induction.XRZero.xrChild chief K).snd) (Q2Presentation.gammaGenQ2Presentation.gammaGen (a : Q2Presentation.Gen) : ↑Q2Presentation.GammaA.toProfinite.toTopThe four universal generators `σ, τ, x₀, x₁` of `Γ_A`, as the compatible families of marked generators.aQ2Presentation.Gen)) =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`. We use `a = b` as notation for `Eq a b`. A fundamental property of equality is that it is an equivalence relation. ``` variable (α : Type) (a b c d : α) variable (hab : a = b) (hcb : c = b) (hcd : c = d) example : a = d := Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd ``` Equality is much more than an equivalence relation, however. It has the important property that every assertion respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value. That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`. Example: ``` example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := Eq.subst h1 h2 example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := h1 ▸ h2 ``` The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`. For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality) Conventions for notations in identifiers: * The recommended spelling of `=` in identifiers is `eq`.(QuotientGroup.mk'QuotientGroup.mk'.{u_1} {G : Type u_1} [Group G] (N : Subgroup G) [nN : N.Normal] : G →* G ⧸ NThe group homomorphism from `G` to `G/N`.(Q2Presentation.Induction.mChildKernelQ2Presentation.Induction.mChildKernel {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Lifting.ElementaryKernel (Q2Presentation.Induction.XRZero.xrChild chief K).fst**The elementary `M`-kernel at the child** `B = Y/Φ(K)` (`lem:simplehead` carrier for `lem:elementarystage`): `N = M' = K/Φ(K)`.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).NQ2Presentation.Lifting.ElementaryKernel.N {Yt : Q2Presentation.BoundaryFramedTarget} (self : Q2Presentation.Lifting.ElementaryKernel Yt) : Subgroup Yt.Y) ((ProfiniteGrp.Hom.homProfiniteGrp.Hom.hom.{u} {M N : ProfiniteGrp.{u}} (f : M.Hom N) : ↑M.toProfinite.toTop →ₜ* ↑N.toProfinite.toTopThe underlying `ContinuousMonoidHom`.↑f'Q2Presentation.TorsorProgram.coverLiftTotal (Q2Presentation.Induction.XRZero.xrChild chief K).fst (Q2Presentation.Induction.mChildKernel chief K).N Q2Presentation.boundaryPackage_GammaA (Q2Presentation.Induction.XRZero.xrChild chief K).snd) (Q2Presentation.gammaGenQ2Presentation.gammaGen (a : Q2Presentation.Gen) : ↑Q2Presentation.GammaA.toProfinite.toTopThe four universal generators `σ, τ, x₀, x₁` of `Γ_A`, as the compatible families of marked generators.aQ2Presentation.Gen))) (tQ2Presentation.Gen → ↥(Q2Presentation.Induction.tCover chief K lam hinv): Q2Presentation.GenQ2Presentation.Gen : TypeThe four marked generators of the candidate presentation.→ ↥(Q2Presentation.Induction.tCoverQ2Presentation.Induction.tCover {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) : Subgroup (Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).YThe `T`-preimage in the cover: `T̃ = TAmb·(ker λ)/(ker λ) ≤ B_λ`.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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.edgePairingQ2Presentation.Induction.edgePairing {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) (hne : lam ≠ 0) (q : Q2Presentation.Marking (Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y) (t : Q2Presentation.Gen → ↥(Q2Presentation.Induction.tCover chief K lam hinv)) : ZMod 2**The edge pairing** `⟨[u], ρ*[ε̄]⟩` of a `T̃`-tuple against the two relators at a cover marking: the `relRead`-sum of the two `T̃`-shadows (`eq:edgevariationobstruction`'s correction term, ledger form).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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 ≠ 0q'Q2Presentation.Marking (Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).YtQ2Presentation.Gen → ↥(Q2Presentation.Induction.tCover chief K lam hinv)=Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`. We use `a = b` as notation for `Eq a b`. A fundamental property of equality is that it is an equivalence relation. ``` variable (α : Type) (a b c d : α) variable (hab : a = b) (hcb : c = b) (hcd : c = d) example : a = d := Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd ``` Equality is much more than an equivalence relation, however. It has the important property that every assertion respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value. That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`. Example: ``` example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := Eq.subst h1 h2 example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := h1 ▸ h2 ``` The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`. For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality) Conventions for notations in identifiers: * The recommended spelling of `=` in identifiers is `eq`.Q2Presentation.Induction.edgePairingQ2Presentation.Induction.edgePairing {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) (hne : lam ≠ 0) (q : Q2Presentation.Marking (Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y) (t : Q2Presentation.Gen → ↥(Q2Presentation.Induction.tCover chief K lam hinv)) : ZMod 2**The edge pairing** `⟨[u], ρ*[ε̄]⟩` of a `T̃`-tuple against the two relators at a cover marking: the `relRead`-sum of the two `T̃`-shadows (`eq:edgevariationobstruction`'s correction term, ledger form).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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 ≠ 0qQ2Presentation.Marking (Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).YtQ2Presentation.Gen → ↥(Q2Presentation.Induction.tCover chief K lam hinv)theorem Q2Presentation.Induction.edgePairing_eq_of_fibre {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) (fQ2Presentation.TorsorProgram.coverLiftTotal (Q2Presentation.Induction.XRZero.xrChild chief K).fst (Q2Presentation.Induction.mChildKernel chief K).N Q2Presentation.boundaryPackage_GammaA (Q2Presentation.Induction.XRZero.xrChild chief K).sndf'Q2Presentation.TorsorProgram.coverLiftTotal (Q2Presentation.Induction.XRZero.xrChild chief K).fst (Q2Presentation.Induction.mChildKernel chief K).N Q2Presentation.boundaryPackage_GammaA (Q2Presentation.Induction.XRZero.xrChild chief K).snd: Q2Presentation.TorsorProgram.coverLiftTotalQ2Presentation.TorsorProgram.coverLiftTotal (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y) [hNn : N.Normal] {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (F : Q2Presentation.BoundaryFrame Yt) : Type**The cover-lift total space**: framed continuous homs into the AMBIENT target whose projection to the child is onto (`lem:covertransform`: all lifts of all unobstructed exact-image maps at once; surjectivity onto the ambient target NOT imposed — these are the weak lifts).(Q2Presentation.Induction.XRZero.xrChildQ2Presentation.Induction.XRZero.xrChild {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPairThe `𝒳_R = 0` child: the quotient framed pair at `N = Φ`-layer.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.(Q2Presentation.Induction.mChildKernelQ2Presentation.Induction.mChildKernel {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Lifting.ElementaryKernel (Q2Presentation.Induction.XRZero.xrChild chief K).fst**The elementary `M`-kernel at the child** `B = Y/Φ(K)` (`lem:simplehead` carrier for `lem:elementarystage`): `N = M' = K/Φ(K)`.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).NQ2Presentation.Lifting.ElementaryKernel.N {Yt : Q2Presentation.BoundaryFramedTarget} (self : Q2Presentation.Lifting.ElementaryKernel Yt) : Subgroup Yt.YQ2Presentation.boundaryPackage_GammaAQ2Presentation.boundaryPackage_GammaA : Q2Presentation.BoundaryPackage Q2Presentation.GammaA**The candidate boundary package** (manuscript Prop 3.14, `prop:compatiblemarking`; plan Turn 4 §6). The Stage-C data of `Γ_A`: the common tame quotient `gammaTameMap`, the maximal pro-`2` quotient `p : Γ_A ⟶ Π`, and the common unramified character `ν = gammaTameMap ≫ ν_t`, through which both factor.(Q2Presentation.Induction.XRZero.xrChildQ2Presentation.Induction.XRZero.xrChild {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPairThe `𝒳_R = 0` child: the quotient framed pair at `N = Φ`-layer.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.) (qQ2Presentation.Marking (Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Yq'Q2Presentation.Marking (Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y: Q2Presentation.MarkingQ2Presentation.Marking.{u_1} (G : Type u_1) [Group G] : Type u_1A marking assigns a group element to each of the four generators.(Q2Presentation.Lifting.scalarCoverTargetQ2Presentation.Lifting.scalarCoverTarget {Yt : Q2Presentation.BoundaryFramedTarget} [Finite Yt.Y] (E : Q2Presentation.Lifting.ElementaryKernel Yt) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E)) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals E) : Q2Presentation.BoundaryFramedTarget**The scalar pushout target** `B_λ = Y/ker λ` as a framed target (same `H`, `E`, frame; `eq:targettower` refined by l.4219–4223).(Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel** (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)).YQ2Presentation.BoundaryFramedTarget.Y (self : Q2Presentation.BoundaryFramedTarget) : TypeThe finite target group `Y`.) (hqQ2Presentation.Induction.CoverMarking chief K lam hinv f q: Q2Presentation.Induction.CoverMarkingQ2Presentation.Induction.CoverMarking {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) (f : Q2Presentation.TorsorProgram.coverLiftTotal (Q2Presentation.Induction.XRZero.xrChild chief K).fst (Q2Presentation.Induction.mChildKernel chief K).N Q2Presentation.boundaryPackage_GammaA (Q2Presentation.Induction.XRZero.xrChild chief K).snd) (q : Q2Presentation.Marking (Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y) : Prop**A cover marking over a weak `M`-lift**: generator values in `B_λ` projecting to the lift's marking, framed by the parent frame.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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)fQ2Presentation.TorsorProgram.coverLiftTotal (Q2Presentation.Induction.XRZero.xrChild chief K).fst (Q2Presentation.Induction.mChildKernel chief K).N Q2Presentation.boundaryPackage_GammaA (Q2Presentation.Induction.XRZero.xrChild chief K).sndqQ2Presentation.Marking (Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y) (hq'Q2Presentation.Induction.CoverMarking chief K lam hinv f' q': Q2Presentation.Induction.CoverMarkingQ2Presentation.Induction.CoverMarking {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) (f : Q2Presentation.TorsorProgram.coverLiftTotal (Q2Presentation.Induction.XRZero.xrChild chief K).fst (Q2Presentation.Induction.mChildKernel chief K).N Q2Presentation.boundaryPackage_GammaA (Q2Presentation.Induction.XRZero.xrChild chief K).snd) (q : Q2Presentation.Marking (Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y) : Prop**A cover marking over a weak `M`-lift**: generator values in `B_λ` projecting to the lift's marking, framed by the parent frame.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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)f'Q2Presentation.TorsorProgram.coverLiftTotal (Q2Presentation.Induction.XRZero.xrChild chief K).fst (Q2Presentation.Induction.mChildKernel chief K).N Q2Presentation.boundaryPackage_GammaA (Q2Presentation.Induction.XRZero.xrChild chief K).sndq'Q2Presentation.Marking (Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y) (hbase∀ (a : Q2Presentation.Gen), (QuotientGroup.mk' (Q2Presentation.Induction.mChildKernel chief K).N) ((ProfiniteGrp.Hom.hom ↑f) (Q2Presentation.gammaGen a)) = (QuotientGroup.mk' (Q2Presentation.Induction.mChildKernel chief K).N) ((ProfiniteGrp.Hom.hom ↑f') (Q2Presentation.gammaGen a)): ∀ (aQ2Presentation.Gen: Q2Presentation.GenQ2Presentation.Gen : TypeThe four marked generators of the candidate presentation.), (QuotientGroup.mk'QuotientGroup.mk'.{u_1} {G : Type u_1} [Group G] (N : Subgroup G) [nN : N.Normal] : G →* G ⧸ NThe group homomorphism from `G` to `G/N`.(Q2Presentation.Induction.mChildKernelQ2Presentation.Induction.mChildKernel {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Lifting.ElementaryKernel (Q2Presentation.Induction.XRZero.xrChild chief K).fst**The elementary `M`-kernel at the child** `B = Y/Φ(K)` (`lem:simplehead` carrier for `lem:elementarystage`): `N = M' = K/Φ(K)`.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).NQ2Presentation.Lifting.ElementaryKernel.N {Yt : Q2Presentation.BoundaryFramedTarget} (self : Q2Presentation.Lifting.ElementaryKernel Yt) : Subgroup Yt.Y) ((ProfiniteGrp.Hom.homProfiniteGrp.Hom.hom.{u} {M N : ProfiniteGrp.{u}} (f : M.Hom N) : ↑M.toProfinite.toTop →ₜ* ↑N.toProfinite.toTopThe underlying `ContinuousMonoidHom`.↑fQ2Presentation.TorsorProgram.coverLiftTotal (Q2Presentation.Induction.XRZero.xrChild chief K).fst (Q2Presentation.Induction.mChildKernel chief K).N Q2Presentation.boundaryPackage_GammaA (Q2Presentation.Induction.XRZero.xrChild chief K).snd) (Q2Presentation.gammaGenQ2Presentation.gammaGen (a : Q2Presentation.Gen) : ↑Q2Presentation.GammaA.toProfinite.toTopThe four universal generators `σ, τ, x₀, x₁` of `Γ_A`, as the compatible families of marked generators.aQ2Presentation.Gen)) =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`. We use `a = b` as notation for `Eq a b`. A fundamental property of equality is that it is an equivalence relation. ``` variable (α : Type) (a b c d : α) variable (hab : a = b) (hcb : c = b) (hcd : c = d) example : a = d := Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd ``` Equality is much more than an equivalence relation, however. It has the important property that every assertion respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value. That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`. Example: ``` example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := Eq.subst h1 h2 example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := h1 ▸ h2 ``` The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`. For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality) Conventions for notations in identifiers: * The recommended spelling of `=` in identifiers is `eq`.(QuotientGroup.mk'QuotientGroup.mk'.{u_1} {G : Type u_1} [Group G] (N : Subgroup G) [nN : N.Normal] : G →* G ⧸ NThe group homomorphism from `G` to `G/N`.(Q2Presentation.Induction.mChildKernelQ2Presentation.Induction.mChildKernel {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Lifting.ElementaryKernel (Q2Presentation.Induction.XRZero.xrChild chief K).fst**The elementary `M`-kernel at the child** `B = Y/Φ(K)` (`lem:simplehead` carrier for `lem:elementarystage`): `N = M' = K/Φ(K)`.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).NQ2Presentation.Lifting.ElementaryKernel.N {Yt : Q2Presentation.BoundaryFramedTarget} (self : Q2Presentation.Lifting.ElementaryKernel Yt) : Subgroup Yt.Y) ((ProfiniteGrp.Hom.homProfiniteGrp.Hom.hom.{u} {M N : ProfiniteGrp.{u}} (f : M.Hom N) : ↑M.toProfinite.toTop →ₜ* ↑N.toProfinite.toTopThe underlying `ContinuousMonoidHom`.↑f'Q2Presentation.TorsorProgram.coverLiftTotal (Q2Presentation.Induction.XRZero.xrChild chief K).fst (Q2Presentation.Induction.mChildKernel chief K).N Q2Presentation.boundaryPackage_GammaA (Q2Presentation.Induction.XRZero.xrChild chief K).snd) (Q2Presentation.gammaGenQ2Presentation.gammaGen (a : Q2Presentation.Gen) : ↑Q2Presentation.GammaA.toProfinite.toTopThe four universal generators `σ, τ, x₀, x₁` of `Γ_A`, as the compatible families of marked generators.aQ2Presentation.Gen))) (tQ2Presentation.Gen → ↥(Q2Presentation.Induction.tCover chief K lam hinv): Q2Presentation.GenQ2Presentation.Gen : TypeThe four marked generators of the candidate presentation.→ ↥(Q2Presentation.Induction.tCoverQ2Presentation.Induction.tCover {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) : Subgroup (Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).YThe `T`-preimage in the cover: `T̃ = TAmb·(ker λ)/(ker λ) ≤ B_λ`.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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.edgePairingQ2Presentation.Induction.edgePairing {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) (hne : lam ≠ 0) (q : Q2Presentation.Marking (Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y) (t : Q2Presentation.Gen → ↥(Q2Presentation.Induction.tCover chief K lam hinv)) : ZMod 2**The edge pairing** `⟨[u], ρ*[ε̄]⟩` of a `T̃`-tuple against the two relators at a cover marking: the `relRead`-sum of the two `T̃`-shadows (`eq:edgevariationobstruction`'s correction term, ledger form).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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 ≠ 0q'Q2Presentation.Marking (Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).YtQ2Presentation.Gen → ↥(Q2Presentation.Induction.tCover chief K lam hinv)=Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`. We use `a = b` as notation for `Eq a b`. A fundamental property of equality is that it is an equivalence relation. ``` variable (α : Type) (a b c d : α) variable (hab : a = b) (hcb : c = b) (hcd : c = d) example : a = d := Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd ``` Equality is much more than an equivalence relation, however. It has the important property that every assertion respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value. That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`. Example: ``` example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := Eq.subst h1 h2 example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := h1 ▸ h2 ``` The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`. For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality) Conventions for notations in identifiers: * The recommended spelling of `=` in identifiers is `eq`.Q2Presentation.Induction.edgePairingQ2Presentation.Induction.edgePairing {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) (hne : lam ≠ 0) (q : Q2Presentation.Marking (Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y) (t : Q2Presentation.Gen → ↥(Q2Presentation.Induction.tCover chief K lam hinv)) : ZMod 2**The edge pairing** `⟨[u], ρ*[ε̄]⟩` of a `T̃`-tuple against the two relators at a cover marking: the `relRead`-sum of the two `T̃`-shadows (`eq:edgevariationobstruction`'s correction term, ledger form).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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 ≠ 0qQ2Presentation.Marking (Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).YtQ2Presentation.Gen → ↥(Q2Presentation.Induction.tCover chief K lam hinv)**The pairing is fibre-uniform** (`lem:radicaledge` step 4, ledger form): markings over lifts with the same child image differ by an `M̃`-tuple, and `M̃`-conjugation fixes `T̃`, so the two `T̃`-shadows — hence the pairing — agree. This is the `C`-factorization of the edge class.
-
defdefined in Q2Presentation/Induction/EdgeHalvingTwist.leancomplete
def Q2Presentation.Induction.twistLift {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)) (fQ2Presentation.TorsorProgram.coverLiftTotal (Q2Presentation.Induction.XRZero.xrChild chief K).fst (Q2Presentation.Induction.mChildKernel chief K).N Q2Presentation.boundaryPackage_GammaA (Q2Presentation.Induction.XRZero.xrChild chief K).snd: Q2Presentation.TorsorProgram.coverLiftTotalQ2Presentation.TorsorProgram.coverLiftTotal (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y) [hNn : N.Normal] {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (F : Q2Presentation.BoundaryFrame Yt) : Type**The cover-lift total space**: framed continuous homs into the AMBIENT target whose projection to the child is onto (`lem:covertransform`: all lifts of all unobstructed exact-image maps at once; surjectivity onto the ambient target NOT imposed — these are the weak lifts).(Q2Presentation.Induction.XRZero.xrChildQ2Presentation.Induction.XRZero.xrChild {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPairThe `𝒳_R = 0` child: the quotient framed pair at `N = Φ`-layer.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.(Q2Presentation.Induction.mChildKernelQ2Presentation.Induction.mChildKernel {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Lifting.ElementaryKernel (Q2Presentation.Induction.XRZero.xrChild chief K).fst**The elementary `M`-kernel at the child** `B = Y/Φ(K)` (`lem:simplehead` carrier for `lem:elementarystage`): `N = M' = K/Φ(K)`.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).NQ2Presentation.Lifting.ElementaryKernel.N {Yt : Q2Presentation.BoundaryFramedTarget} (self : Q2Presentation.Lifting.ElementaryKernel Yt) : Subgroup Yt.YQ2Presentation.boundaryPackage_GammaAQ2Presentation.boundaryPackage_GammaA : Q2Presentation.BoundaryPackage Q2Presentation.GammaA**The candidate boundary package** (manuscript Prop 3.14, `prop:compatiblemarking`; plan Turn 4 §6). The Stage-C data of `Γ_A`: the common tame quotient `gammaTameMap`, the maximal pro-`2` quotient `p : Γ_A ⟶ Π`, and the common unramified character `ν = gammaTameMap ≫ ν_t`, through which both factor.(Q2Presentation.Induction.XRZero.xrChildQ2Presentation.Induction.XRZero.xrChild {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPairThe `𝒳_R = 0` child: the quotient framed pair at `N = Φ`-layer.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.) (tQ2Presentation.Gen → ↥(Q2Presentation.Induction.tCover chief K lam hinv): Q2Presentation.GenQ2Presentation.Gen : TypeThe four marked generators of the candidate presentation.→ ↥(Q2Presentation.Induction.tCoverQ2Presentation.Induction.tCover {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) : Subgroup (Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).YThe `T`-preimage in the cover: `T̃ = TAmb·(ker λ)/(ker λ) ≤ B_λ`.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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))) (hcocQ2Presentation.Induction.TwistCocycle chief K lam hinv f t: Q2Presentation.Induction.TwistCocycleQ2Presentation.Induction.TwistCocycle {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) (f : Q2Presentation.TorsorProgram.coverLiftTotal (Q2Presentation.Induction.XRZero.xrChild chief K).fst (Q2Presentation.Induction.mChildKernel chief K).N Q2Presentation.boundaryPackage_GammaA (Q2Presentation.Induction.XRZero.xrChild chief K).snd) (t : Q2Presentation.Gen → ↥(Q2Presentation.Induction.tCover chief K lam hinv)) : Prop**A relator cocycle**: a `T̃`-tuple whose pushed `M'`-shadow kills both relators at the lift's marking — exactly the twists preserving hom-ness (the marking form of `Z¹_{Γ,ρ}(T)`).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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)fQ2Presentation.TorsorProgram.coverLiftTotal (Q2Presentation.Induction.XRZero.xrChild chief K).fst (Q2Presentation.Induction.mChildKernel chief K).N Q2Presentation.boundaryPackage_GammaA (Q2Presentation.Induction.XRZero.xrChild chief K).sndtQ2Presentation.Gen → ↥(Q2Presentation.Induction.tCover chief K lam hinv)) : Q2Presentation.TorsorProgram.coverLiftTotalQ2Presentation.TorsorProgram.coverLiftTotal (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y) [hNn : N.Normal] {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (F : Q2Presentation.BoundaryFrame Yt) : Type**The cover-lift total space**: framed continuous homs into the AMBIENT target whose projection to the child is onto (`lem:covertransform`: all lifts of all unobstructed exact-image maps at once; surjectivity onto the ambient target NOT imposed — these are the weak lifts).(Q2Presentation.Induction.XRZero.xrChildQ2Presentation.Induction.XRZero.xrChild {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPairThe `𝒳_R = 0` child: the quotient framed pair at `N = Φ`-layer.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.(Q2Presentation.Induction.mChildKernelQ2Presentation.Induction.mChildKernel {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Lifting.ElementaryKernel (Q2Presentation.Induction.XRZero.xrChild chief K).fst**The elementary `M`-kernel at the child** `B = Y/Φ(K)` (`lem:simplehead` carrier for `lem:elementarystage`): `N = M' = K/Φ(K)`.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).NQ2Presentation.Lifting.ElementaryKernel.N {Yt : Q2Presentation.BoundaryFramedTarget} (self : Q2Presentation.Lifting.ElementaryKernel Yt) : Subgroup Yt.YQ2Presentation.boundaryPackage_GammaAQ2Presentation.boundaryPackage_GammaA : Q2Presentation.BoundaryPackage Q2Presentation.GammaA**The candidate boundary package** (manuscript Prop 3.14, `prop:compatiblemarking`; plan Turn 4 §6). The Stage-C data of `Γ_A`: the common tame quotient `gammaTameMap`, the maximal pro-`2` quotient `p : Γ_A ⟶ Π`, and the common unramified character `ν = gammaTameMap ≫ ν_t`, through which both factor.(Q2Presentation.Induction.XRZero.xrChildQ2Presentation.Induction.XRZero.xrChild {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPairThe `𝒳_R = 0` child: the quotient framed pair at `N = Φ`-layer.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.def Q2Presentation.Induction.twistLift {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)) (fQ2Presentation.TorsorProgram.coverLiftTotal (Q2Presentation.Induction.XRZero.xrChild chief K).fst (Q2Presentation.Induction.mChildKernel chief K).N Q2Presentation.boundaryPackage_GammaA (Q2Presentation.Induction.XRZero.xrChild chief K).snd: Q2Presentation.TorsorProgram.coverLiftTotalQ2Presentation.TorsorProgram.coverLiftTotal (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y) [hNn : N.Normal] {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (F : Q2Presentation.BoundaryFrame Yt) : Type**The cover-lift total space**: framed continuous homs into the AMBIENT target whose projection to the child is onto (`lem:covertransform`: all lifts of all unobstructed exact-image maps at once; surjectivity onto the ambient target NOT imposed — these are the weak lifts).(Q2Presentation.Induction.XRZero.xrChildQ2Presentation.Induction.XRZero.xrChild {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPairThe `𝒳_R = 0` child: the quotient framed pair at `N = Φ`-layer.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.(Q2Presentation.Induction.mChildKernelQ2Presentation.Induction.mChildKernel {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Lifting.ElementaryKernel (Q2Presentation.Induction.XRZero.xrChild chief K).fst**The elementary `M`-kernel at the child** `B = Y/Φ(K)` (`lem:simplehead` carrier for `lem:elementarystage`): `N = M' = K/Φ(K)`.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).NQ2Presentation.Lifting.ElementaryKernel.N {Yt : Q2Presentation.BoundaryFramedTarget} (self : Q2Presentation.Lifting.ElementaryKernel Yt) : Subgroup Yt.YQ2Presentation.boundaryPackage_GammaAQ2Presentation.boundaryPackage_GammaA : Q2Presentation.BoundaryPackage Q2Presentation.GammaA**The candidate boundary package** (manuscript Prop 3.14, `prop:compatiblemarking`; plan Turn 4 §6). The Stage-C data of `Γ_A`: the common tame quotient `gammaTameMap`, the maximal pro-`2` quotient `p : Γ_A ⟶ Π`, and the common unramified character `ν = gammaTameMap ≫ ν_t`, through which both factor.(Q2Presentation.Induction.XRZero.xrChildQ2Presentation.Induction.XRZero.xrChild {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPairThe `𝒳_R = 0` child: the quotient framed pair at `N = Φ`-layer.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.) (tQ2Presentation.Gen → ↥(Q2Presentation.Induction.tCover chief K lam hinv): Q2Presentation.GenQ2Presentation.Gen : TypeThe four marked generators of the candidate presentation.→ ↥(Q2Presentation.Induction.tCoverQ2Presentation.Induction.tCover {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) : Subgroup (Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).YThe `T`-preimage in the cover: `T̃ = TAmb·(ker λ)/(ker λ) ≤ B_λ`.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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))) (hcocQ2Presentation.Induction.TwistCocycle chief K lam hinv f t: Q2Presentation.Induction.TwistCocycleQ2Presentation.Induction.TwistCocycle {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) (f : Q2Presentation.TorsorProgram.coverLiftTotal (Q2Presentation.Induction.XRZero.xrChild chief K).fst (Q2Presentation.Induction.mChildKernel chief K).N Q2Presentation.boundaryPackage_GammaA (Q2Presentation.Induction.XRZero.xrChild chief K).snd) (t : Q2Presentation.Gen → ↥(Q2Presentation.Induction.tCover chief K lam hinv)) : Prop**A relator cocycle**: a `T̃`-tuple whose pushed `M'`-shadow kills both relators at the lift's marking — exactly the twists preserving hom-ness (the marking form of `Z¹_{Γ,ρ}(T)`).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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)fQ2Presentation.TorsorProgram.coverLiftTotal (Q2Presentation.Induction.XRZero.xrChild chief K).fst (Q2Presentation.Induction.mChildKernel chief K).N Q2Presentation.boundaryPackage_GammaA (Q2Presentation.Induction.XRZero.xrChild chief K).sndtQ2Presentation.Gen → ↥(Q2Presentation.Induction.tCover chief K lam hinv)) : Q2Presentation.TorsorProgram.coverLiftTotalQ2Presentation.TorsorProgram.coverLiftTotal (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y) [hNn : N.Normal] {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (F : Q2Presentation.BoundaryFrame Yt) : Type**The cover-lift total space**: framed continuous homs into the AMBIENT target whose projection to the child is onto (`lem:covertransform`: all lifts of all unobstructed exact-image maps at once; surjectivity onto the ambient target NOT imposed — these are the weak lifts).(Q2Presentation.Induction.XRZero.xrChildQ2Presentation.Induction.XRZero.xrChild {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPairThe `𝒳_R = 0` child: the quotient framed pair at `N = Φ`-layer.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.(Q2Presentation.Induction.mChildKernelQ2Presentation.Induction.mChildKernel {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Lifting.ElementaryKernel (Q2Presentation.Induction.XRZero.xrChild chief K).fst**The elementary `M`-kernel at the child** `B = Y/Φ(K)` (`lem:simplehead` carrier for `lem:elementarystage`): `N = M' = K/Φ(K)`.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).NQ2Presentation.Lifting.ElementaryKernel.N {Yt : Q2Presentation.BoundaryFramedTarget} (self : Q2Presentation.Lifting.ElementaryKernel Yt) : Subgroup Yt.YQ2Presentation.boundaryPackage_GammaAQ2Presentation.boundaryPackage_GammaA : Q2Presentation.BoundaryPackage Q2Presentation.GammaA**The candidate boundary package** (manuscript Prop 3.14, `prop:compatiblemarking`; plan Turn 4 §6). The Stage-C data of `Γ_A`: the common tame quotient `gammaTameMap`, the maximal pro-`2` quotient `p : Γ_A ⟶ Π`, and the common unramified character `ν = gammaTameMap ≫ ν_t`, through which both factor.(Q2Presentation.Induction.XRZero.xrChildQ2Presentation.Induction.XRZero.xrChild {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPairThe `𝒳_R = 0` child: the quotient framed pair at `N = Φ`-layer.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.**The twist of a weak `M`-lift by a relator cocycle** — again a weak `M`-lift (the `f ↦ f_u` of `lem:radicaledge` step 5, marking form).
-
defdefined in Q2Presentation/Induction/EdgeHalvingTwist.leancomplete
def Q2Presentation.Induction.EdgeTwistFlip {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.EdgeTwistFlip {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`.**The isolated nonvanishing residue** (`lem:radicaledge` step 6's `[ε̄] ≠ 0 ⟹` perfect-degree-one-duality clause): over every child surjection, SOME weak `M`-lift carries a relator cocycle of nonzero edge pairing. This — not the halving itself — is the remaining content of `sec7_edgeHalving_gammaA`; dissolution program in `audit/BLOCKR_P8_DESIGN.md` §10-P8D.
-
theoremdefined in Q2Presentation/Induction/EdgeHalvingTwist.leancomplete
theorem Q2Presentation.Induction.edgeHalvingGammaA_of_twistFlip {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) (hflipQ2Presentation.Induction.EdgeTwistFlip chief K lam hinv hne: Q2Presentation.Induction.EdgeTwistFlipQ2Presentation.Induction.EdgeTwistFlip {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) (hne : lam ≠ 0) : Prop**The isolated nonvanishing residue** (`lem:radicaledge` step 6's `[ε̄] ≠ 0 ⟹` perfect-degree-one-duality clause): over every child surjection, SOME weak `M`-lift carries a relator cocycle of nonzero edge pairing. This — not the halving itself — is the remaining content of `sec7_edgeHalving_gammaA`; dissolution program in `audit/BLOCKR_P8_DESIGN.md` §10-P8D.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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.EdgeHalvingGammaAQ2Presentation.Induction.EdgeHalvingGammaA {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) : Prop**The R4a per-fibre halving, candidate source** — THE sharply-scoped R4a residual (manuscript `lem:radicaledge` step 6, l.4006–4019: exact variation formula + perfect degree-one duality; candidate half = `prop:chainmap` l.1687 + `prop:defduality`-grade degree-one content): over each `g_C`, exactly half of the weak `M`-lifts are λ-liftable, stated division-free per fibre. Deliberately does NOT assert the fibre size `2^{2·dim M}` (that is the separate, PROVEN `lem:elementarystage` obligation — design §6.3), and is deliberately NOT conditioned here on `¬ ZeroEdge` — the conditioning belongs to its (future, coordinated) keep `sec7_edgeHalving_gammaA (hne) (hedge) : EdgeHalvingGammaA …`, whose dissolution program is recorded in the design §4.6: (i) the ledger variation formula from U3's `edgeDefect` calculus + the weak-base defect engine; (ii) `edgeShadow ≠ 0` on the `T`-cocycle space by the trivial-chain dévissage over the PROVEN `Sec7TrivialChainData`; (iii) the free-orbit torsor bookkeeping.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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)theorem Q2Presentation.Induction.edgeHalvingGammaA_of_twistFlip {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) (hflipQ2Presentation.Induction.EdgeTwistFlip chief K lam hinv hne: Q2Presentation.Induction.EdgeTwistFlipQ2Presentation.Induction.EdgeTwistFlip {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) (hne : lam ≠ 0) : Prop**The isolated nonvanishing residue** (`lem:radicaledge` step 6's `[ε̄] ≠ 0 ⟹` perfect-degree-one-duality clause): over every child surjection, SOME weak `M`-lift carries a relator cocycle of nonzero edge pairing. This — not the halving itself — is the remaining content of `sec7_edgeHalving_gammaA`; dissolution program in `audit/BLOCKR_P8_DESIGN.md` §10-P8D.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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.EdgeHalvingGammaAQ2Presentation.Induction.EdgeHalvingGammaA {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) : Prop**The R4a per-fibre halving, candidate source** — THE sharply-scoped R4a residual (manuscript `lem:radicaledge` step 6, l.4006–4019: exact variation formula + perfect degree-one duality; candidate half = `prop:chainmap` l.1687 + `prop:defduality`-grade degree-one content): over each `g_C`, exactly half of the weak `M`-lifts are λ-liftable, stated division-free per fibre. Deliberately does NOT assert the fibre size `2^{2·dim M}` (that is the separate, PROVEN `lem:elementarystage` obligation — design §6.3), and is deliberately NOT conditioned here on `¬ ZeroEdge` — the conditioning belongs to its (future, coordinated) keep `sec7_edgeHalving_gammaA (hne) (hedge) : EdgeHalvingGammaA …`, whose dissolution program is recorded in the design §4.6: (i) the ledger variation formula from U3's `edgeDefect` calculus + the weak-base defect engine; (ii) `edgeShadow ≠ 0` on the `T`-cocycle space by the trivial-chain dévissage over the PROVEN `Sec7TrivialChainData`; (iii) the free-orbit torsor bookkeeping.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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)**The per-`g` halving from a flipping twist** (`lem:radicaledge` step 6 + `prop:nonzeroedge`'s per-fibre clause): a relator cocycle with nonzero pairing twists the fibre involutively and flips the obstruction bit, so exactly half of each fibre is λ-liftable. This dissolves the halving content of `sec7_edgeHalving_gammaA` down to `EdgeTwistFlip`.
-
theoremdefined in Q2Presentation/Induction/EdgeTwistWitness.leancomplete
theorem Q2Presentation.Induction.zeroEdge_of_separating_dual {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) (θModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.tCoverKernel chief K lam hinv hne)): Module.DualModule.Dual.{u_4, u_5} (R : Type u_4) (M : Type u_5) [Semiring R] [AddCommMonoid M] [Module R M] : Type (max u_5 u_4)The left dual space of an R-module M is the R-module of linear maps `M → R`.(ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.2) (Q2Presentation.Lifting.NAddQ2Presentation.Lifting.NAdd {Yt : Q2Presentation.BoundaryFramedTarget} (E : Q2Presentation.Lifting.ElementaryKernel Yt) : TypeThe additive `F₂`-carrier of an elementary kernel.(Q2Presentation.Induction.tCoverKernelQ2Presentation.Induction.tCoverKernel {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) (hne : lam ≠ 0) : Q2Presentation.Lifting.ElementaryKernel (Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv)**`T̃ ≤ B_λ` as an elementary kernel** (`lem:radicaledge` step 1 packaged): normal, wild, θ-dead, abelian of exponent 2 — the carrier of the twist calculus at the cover.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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))) (hinvθ∀ (y : (Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y) (v : Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.tCoverKernel chief K lam hinv hne)), θ ((Q2Presentation.Lifting.conjEndN (Q2Presentation.Induction.tCoverKernel chief K lam hinv hne) y) v) = θ v: ∀ (y(Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y: (Q2Presentation.Lifting.scalarCoverTargetQ2Presentation.Lifting.scalarCoverTarget {Yt : Q2Presentation.BoundaryFramedTarget} [Finite Yt.Y] (E : Q2Presentation.Lifting.ElementaryKernel Yt) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E)) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals E) : Q2Presentation.BoundaryFramedTarget**The scalar pushout target** `B_λ = Y/ker λ` as a framed target (same `H`, `E`, frame; `eq:targettower` refined by l.4219–4223).(Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel** (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)).YQ2Presentation.BoundaryFramedTarget.Y (self : Q2Presentation.BoundaryFramedTarget) : TypeThe finite target group `Y`.) (vQ2Presentation.Lifting.NAdd (Q2Presentation.Induction.tCoverKernel chief K lam hinv hne): Q2Presentation.Lifting.NAddQ2Presentation.Lifting.NAdd {Yt : Q2Presentation.BoundaryFramedTarget} (E : Q2Presentation.Lifting.ElementaryKernel Yt) : TypeThe additive `F₂`-carrier of an elementary kernel.(Q2Presentation.Induction.tCoverKernelQ2Presentation.Induction.tCoverKernel {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) (hne : lam ≠ 0) : Q2Presentation.Lifting.ElementaryKernel (Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv)**`T̃ ≤ B_λ` as an elementary kernel** (`lem:radicaledge` step 1 packaged): normal, wild, θ-dead, abelian of exponent 2 — the carrier of the twist calculus at the cover.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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)), θModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.tCoverKernel chief K lam hinv hne))((Q2Presentation.Lifting.conjEndNQ2Presentation.Lifting.conjEndN {Yt : Q2Presentation.BoundaryFramedTarget} (E : Q2Presentation.Lifting.ElementaryKernel Yt) (y : Yt.Y) : Module.End (ZMod 2) (Q2Presentation.Lifting.NAdd E)Right conjugation by `y` as an `F₂`-linear endomorphism of `N`.(Q2Presentation.Induction.tCoverKernelQ2Presentation.Induction.tCoverKernel {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) (hne : lam ≠ 0) : Q2Presentation.Lifting.ElementaryKernel (Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv)**`T̃ ≤ B_λ` as an elementary kernel** (`lem:radicaledge` step 1 packaged): normal, wild, θ-dead, abelian of exponent 2 — the carrier of the twist calculus at the cover.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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) y(Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y) vQ2Presentation.Lifting.NAdd (Q2Presentation.Induction.tCoverKernel chief K lam hinv hne)) =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`. We use `a = b` as notation for `Eq a b`. A fundamental property of equality is that it is an equivalence relation. ``` variable (α : Type) (a b c d : α) variable (hab : a = b) (hcb : c = b) (hcd : c = d) example : a = d := Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd ``` Equality is much more than an equivalence relation, however. It has the important property that every assertion respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value. That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`. Example: ``` example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := Eq.subst h1 h2 example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := h1 ▸ h2 ``` The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`. For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality) Conventions for notations in identifiers: * The recommended spelling of `=` in identifiers is `eq`.θModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.tCoverKernel chief K lam hinv hne))vQ2Presentation.Lifting.NAdd (Q2Presentation.Induction.tCoverKernel chief K lam hinv hne)) (z(Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y: (Q2Presentation.Lifting.scalarCoverTargetQ2Presentation.Lifting.scalarCoverTarget {Yt : Q2Presentation.BoundaryFramedTarget} [Finite Yt.Y] (E : Q2Presentation.Lifting.ElementaryKernel Yt) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E)) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals E) : Q2Presentation.BoundaryFramedTarget**The scalar pushout target** `B_λ = Y/ker λ` as a framed target (same `H`, `E`, frame; `eq:targettower` refined by l.4219–4223).(Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel** (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)).YQ2Presentation.BoundaryFramedTarget.Y (self : Q2Presentation.BoundaryFramedTarget) : TypeThe finite target group `Y`.) (hzrelz ∈ (Q2Presentation.Lifting.scalarRelKernel (Q2Presentation.Induction.xrKernel chief K) lam hinv).N: z(Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y∈Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. Conventions for notations in identifiers: * The recommended spelling of `∈` in identifiers is `mem`.(Q2Presentation.Lifting.scalarRelKernelQ2Presentation.Lifting.scalarRelKernel {Yt : Q2Presentation.BoundaryFramedTarget} [Finite Yt.Y] (E : Q2Presentation.Lifting.ElementaryKernel Yt) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E)) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals E) : Q2Presentation.Lifting.ElementaryKernel (Q2Presentation.Lifting.scalarCoverTarget E lam hinv)**The relative kernel** `R/ker λ ≤ B_λ` — the deck kernel of the central double cover, as an elementary kernel of the cover target. It is `Subgroup.map`-spelled so Noether III applies on the nose.(Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel** (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)).NQ2Presentation.Lifting.ElementaryKernel.N {Yt : Q2Presentation.BoundaryFramedTarget} (self : Q2Presentation.Lifting.ElementaryKernel Yt) : Subgroup Yt.Y) (hzθθ (Additive.ofMul ⟨z, ⋯⟩) = 1: θModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.tCoverKernel chief K lam hinv hne))(Additive.ofMulAdditive.ofMul.{u} {α : Type u} : α ≃ Additive αReinterpret `x : α` as an element of `Additive α`.⟨Subtype.mk.{u} {α : Sort u} {p : α → Prop} (val : α) (property : p val) : Subtype pz(Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y,Subtype.mk.{u} {α : Sort u} {p : α → Prop} (val : α) (property : p val) : Subtype p⋯⟩Subtype.mk.{u} {α : Sort u} {p : α → Prop} (val : α) (property : p val) : Subtype p) =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`. We use `a = b` as notation for `Eq a b`. A fundamental property of equality is that it is an equivalence relation. ``` variable (α : Type) (a b c d : α) variable (hab : a = b) (hcb : c = b) (hcd : c = d) example : a = d := Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd ``` Equality is much more than an equivalence relation, however. It has the important property that every assertion respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value. That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`. Example: ``` example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := Eq.subst h1 h2 example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := h1 ▸ h2 ``` The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`. For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality) Conventions for notations in identifiers: * The recommended spelling of `=` in identifiers is `eq`.1) : Q2Presentation.Induction.ZeroEdgeQ2Presentation.Induction.ZeroEdge {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) : Prop**The zero-edge predicate** (`lem:radicaledge`'s `[ε̄] = 0` branch, cocycle-free): some edge complement is normal in the whole cover.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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)theorem Q2Presentation.Induction.zeroEdge_of_separating_dual {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) (θModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.tCoverKernel chief K lam hinv hne)): Module.DualModule.Dual.{u_4, u_5} (R : Type u_4) (M : Type u_5) [Semiring R] [AddCommMonoid M] [Module R M] : Type (max u_5 u_4)The left dual space of an R-module M is the R-module of linear maps `M → R`.(ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.2) (Q2Presentation.Lifting.NAddQ2Presentation.Lifting.NAdd {Yt : Q2Presentation.BoundaryFramedTarget} (E : Q2Presentation.Lifting.ElementaryKernel Yt) : TypeThe additive `F₂`-carrier of an elementary kernel.(Q2Presentation.Induction.tCoverKernelQ2Presentation.Induction.tCoverKernel {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) (hne : lam ≠ 0) : Q2Presentation.Lifting.ElementaryKernel (Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv)**`T̃ ≤ B_λ` as an elementary kernel** (`lem:radicaledge` step 1 packaged): normal, wild, θ-dead, abelian of exponent 2 — the carrier of the twist calculus at the cover.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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))) (hinvθ∀ (y : (Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y) (v : Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.tCoverKernel chief K lam hinv hne)), θ ((Q2Presentation.Lifting.conjEndN (Q2Presentation.Induction.tCoverKernel chief K lam hinv hne) y) v) = θ v: ∀ (y(Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y: (Q2Presentation.Lifting.scalarCoverTargetQ2Presentation.Lifting.scalarCoverTarget {Yt : Q2Presentation.BoundaryFramedTarget} [Finite Yt.Y] (E : Q2Presentation.Lifting.ElementaryKernel Yt) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E)) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals E) : Q2Presentation.BoundaryFramedTarget**The scalar pushout target** `B_λ = Y/ker λ` as a framed target (same `H`, `E`, frame; `eq:targettower` refined by l.4219–4223).(Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel** (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)).YQ2Presentation.BoundaryFramedTarget.Y (self : Q2Presentation.BoundaryFramedTarget) : TypeThe finite target group `Y`.) (vQ2Presentation.Lifting.NAdd (Q2Presentation.Induction.tCoverKernel chief K lam hinv hne): Q2Presentation.Lifting.NAddQ2Presentation.Lifting.NAdd {Yt : Q2Presentation.BoundaryFramedTarget} (E : Q2Presentation.Lifting.ElementaryKernel Yt) : TypeThe additive `F₂`-carrier of an elementary kernel.(Q2Presentation.Induction.tCoverKernelQ2Presentation.Induction.tCoverKernel {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) (hne : lam ≠ 0) : Q2Presentation.Lifting.ElementaryKernel (Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv)**`T̃ ≤ B_λ` as an elementary kernel** (`lem:radicaledge` step 1 packaged): normal, wild, θ-dead, abelian of exponent 2 — the carrier of the twist calculus at the cover.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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)), θModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.tCoverKernel chief K lam hinv hne))((Q2Presentation.Lifting.conjEndNQ2Presentation.Lifting.conjEndN {Yt : Q2Presentation.BoundaryFramedTarget} (E : Q2Presentation.Lifting.ElementaryKernel Yt) (y : Yt.Y) : Module.End (ZMod 2) (Q2Presentation.Lifting.NAdd E)Right conjugation by `y` as an `F₂`-linear endomorphism of `N`.(Q2Presentation.Induction.tCoverKernelQ2Presentation.Induction.tCoverKernel {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) (hne : lam ≠ 0) : Q2Presentation.Lifting.ElementaryKernel (Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv)**`T̃ ≤ B_λ` as an elementary kernel** (`lem:radicaledge` step 1 packaged): normal, wild, θ-dead, abelian of exponent 2 — the carrier of the twist calculus at the cover.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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) y(Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y) vQ2Presentation.Lifting.NAdd (Q2Presentation.Induction.tCoverKernel chief K lam hinv hne)) =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`. We use `a = b` as notation for `Eq a b`. A fundamental property of equality is that it is an equivalence relation. ``` variable (α : Type) (a b c d : α) variable (hab : a = b) (hcb : c = b) (hcd : c = d) example : a = d := Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd ``` Equality is much more than an equivalence relation, however. It has the important property that every assertion respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value. That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`. Example: ``` example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := Eq.subst h1 h2 example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := h1 ▸ h2 ``` The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`. For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality) Conventions for notations in identifiers: * The recommended spelling of `=` in identifiers is `eq`.θModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.tCoverKernel chief K lam hinv hne))vQ2Presentation.Lifting.NAdd (Q2Presentation.Induction.tCoverKernel chief K lam hinv hne)) (z(Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y: (Q2Presentation.Lifting.scalarCoverTargetQ2Presentation.Lifting.scalarCoverTarget {Yt : Q2Presentation.BoundaryFramedTarget} [Finite Yt.Y] (E : Q2Presentation.Lifting.ElementaryKernel Yt) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E)) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals E) : Q2Presentation.BoundaryFramedTarget**The scalar pushout target** `B_λ = Y/ker λ` as a framed target (same `H`, `E`, frame; `eq:targettower` refined by l.4219–4223).(Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel** (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)).YQ2Presentation.BoundaryFramedTarget.Y (self : Q2Presentation.BoundaryFramedTarget) : TypeThe finite target group `Y`.) (hzrelz ∈ (Q2Presentation.Lifting.scalarRelKernel (Q2Presentation.Induction.xrKernel chief K) lam hinv).N: z(Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y∈Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. Conventions for notations in identifiers: * The recommended spelling of `∈` in identifiers is `mem`.(Q2Presentation.Lifting.scalarRelKernelQ2Presentation.Lifting.scalarRelKernel {Yt : Q2Presentation.BoundaryFramedTarget} [Finite Yt.Y] (E : Q2Presentation.Lifting.ElementaryKernel Yt) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E)) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals E) : Q2Presentation.Lifting.ElementaryKernel (Q2Presentation.Lifting.scalarCoverTarget E lam hinv)**The relative kernel** `R/ker λ ≤ B_λ` — the deck kernel of the central double cover, as an elementary kernel of the cover target. It is `Subgroup.map`-spelled so Noether III applies on the nose.(Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel** (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)).NQ2Presentation.Lifting.ElementaryKernel.N {Yt : Q2Presentation.BoundaryFramedTarget} (self : Q2Presentation.Lifting.ElementaryKernel Yt) : Subgroup Yt.Y) (hzθθ (Additive.ofMul ⟨z, ⋯⟩) = 1: θModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.tCoverKernel chief K lam hinv hne))(Additive.ofMulAdditive.ofMul.{u} {α : Type u} : α ≃ Additive αReinterpret `x : α` as an element of `Additive α`.⟨Subtype.mk.{u} {α : Sort u} {p : α → Prop} (val : α) (property : p val) : Subtype pz(Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y,Subtype.mk.{u} {α : Sort u} {p : α → Prop} (val : α) (property : p val) : Subtype p⋯⟩Subtype.mk.{u} {α : Sort u} {p : α → Prop} (val : α) (property : p val) : Subtype p) =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`. We use `a = b` as notation for `Eq a b`. A fundamental property of equality is that it is an equivalence relation. ``` variable (α : Type) (a b c d : α) variable (hab : a = b) (hcb : c = b) (hcd : c = d) example : a = d := Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd ``` Equality is much more than an equivalence relation, however. It has the important property that every assertion respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value. That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`. Example: ``` example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := Eq.subst h1 h2 example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := h1 ▸ h2 ``` The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`. For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality) Conventions for notations in identifiers: * The recommended spelling of `=` in identifiers is `eq`.1) : Q2Presentation.Induction.ZeroEdgeQ2Presentation.Induction.ZeroEdge {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) : Prop**The zero-edge predicate** (`lem:radicaledge`'s `[ε̄] = 0` branch, cocycle-free): some edge complement is normal in the whole cover.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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)**A conjugation-invariant functional separating the deck generator yields a NORMAL edge complement** (`lem:radicaledge` step 3, dual form): its kernel inside `T̃` is conjugation-stable, meets `relN` trivially, and fills `T̃` together with `relN`.
-
theoremdefined in Q2Presentation/Induction/EdgeTwistWitness.leancomplete
theorem Q2Presentation.Induction.edgeTwistFlip_of_nonzeroEdge {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) (hedge¬Q2Presentation.Induction.ZeroEdge chief K lam hinv: ¬Not (a : Prop) : Prop`Not p`, or `¬p`, is the negation of `p`. It is defined to be `p → False`, so if your goal is `¬p` you can use `intro h` to turn the goal into `h : p ⊢ False`, and if you have `hn : ¬p` and `h : p` then `hn h : False` and `(hn h).elim` will prove anything. For more information: [Propositional Logic](https://lean-lang.org/theorem_proving_in_lean4/propositions_and_proofs.html#propositional-logic) Conventions for notations in identifiers: * The recommended spelling of `¬` in identifiers is `not`.Q2Presentation.Induction.ZeroEdgeQ2Presentation.Induction.ZeroEdge {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) : Prop**The zero-edge predicate** (`lem:radicaledge`'s `[ε̄] = 0` branch, cocycle-free): some edge complement is normal in the whole cover.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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.EdgeTwistFlipQ2Presentation.Induction.EdgeTwistFlip {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) (hne : lam ≠ 0) : Prop**The isolated nonvanishing residue** (`lem:radicaledge` step 6's `[ε̄] ≠ 0 ⟹` perfect-degree-one-duality clause): over every child surjection, SOME weak `M`-lift carries a relator cocycle of nonzero edge pairing. This — not the halving itself — is the remaining content of `sec7_edgeHalving_gammaA`; dissolution program in `audit/BLOCKR_P8_DESIGN.md` §10-P8D.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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.edgeTwistFlip_of_nonzeroEdge {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) (hedge¬Q2Presentation.Induction.ZeroEdge chief K lam hinv: ¬Not (a : Prop) : Prop`Not p`, or `¬p`, is the negation of `p`. It is defined to be `p → False`, so if your goal is `¬p` you can use `intro h` to turn the goal into `h : p ⊢ False`, and if you have `hn : ¬p` and `h : p` then `hn h : False` and `(hn h).elim` will prove anything. For more information: [Propositional Logic](https://lean-lang.org/theorem_proving_in_lean4/propositions_and_proofs.html#propositional-logic) Conventions for notations in identifiers: * The recommended spelling of `¬` in identifiers is `not`.Q2Presentation.Induction.ZeroEdgeQ2Presentation.Induction.ZeroEdge {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) : Prop**The zero-edge predicate** (`lem:radicaledge`'s `[ε̄] = 0` branch, cocycle-free): some edge complement is normal in the whole cover.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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.EdgeTwistFlipQ2Presentation.Induction.EdgeTwistFlip {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) (hne : lam ≠ 0) : Prop**The isolated nonvanishing residue** (`lem:radicaledge` step 6's `[ε̄] ≠ 0 ⟹` perfect-degree-one-duality clause): over every child surjection, SOME weak `M`-lift carries a relator cocycle of nonzero edge pairing. This — not the halving itself — is the remaining content of `sec7_edgeHalving_gammaA`; dissolution program in `audit/BLOCKR_P8_DESIGN.md` §10-P8D.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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**`EdgeTwistFlip` from `¬ ZeroEdge`** — the statement of the interim keep `sec7_edgeTwistFlip_gammaA`, proven: over every child surjection some weak `M`-lift carries a relator cocycle of edge pairing `1`. The manuscript's `[ε̄] ≠ 0 ⟹` degree-one-duality nonvanishing (`lem:radicaledge` step 6, l.4006–4019) is realized by the (♦)-dévissage: `¬ ZeroEdge` places the deck generator in the marked augmentation window (else a separating invariant functional's kernel is a normal complement), and the diamond produces a `T̃`-tuple with relator rows `(z, 0)` — a `TwistCocycle` of pairing `relRead z = 1`.
-
theoremdefined in Q2Presentation/Induction/RadicalEdge.leancomplete
theorem Q2Presentation.Induction.edgeComplement_nonempty {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) : NonemptyNonempty.{u} (α : Sort u) : Prop`Nonempty α` is a typeclass that says that `α` is not an empty type, that is, there exists an element in the type. It differs from `Inhabited α` in that `Nonempty α` is a `Prop`, which means that it does not actually carry an element of `α`, only a proof that *there exists* such an element. Given `Nonempty α`, you can construct an element of `α` *nonconstructively* using `Classical.choice`.(Q2Presentation.Induction.EdgeComplementQ2Presentation.Induction.EdgeComplement {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) : TypeAn **edge complement**: a complement to the deck kernel inside the `T`-preimage (`lem:radicaledge`'s `s(T)`, subgroup form).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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))theorem Q2Presentation.Induction.edgeComplement_nonempty {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) : NonemptyNonempty.{u} (α : Sort u) : Prop`Nonempty α` is a typeclass that says that `α` is not an empty type, that is, there exists an element in the type. It differs from `Inhabited α` in that `Nonempty α` is a `Prop`, which means that it does not actually carry an element of `α`, only a proof that *there exists* such an element. Given `Nonempty α`, you can construct an element of `α` *nonconstructively* using `Classical.choice`.(Q2Presentation.Induction.EdgeComplementQ2Presentation.Induction.EdgeComplement {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) : TypeAn **edge complement**: a complement to the deck kernel inside the `T`-preimage (`lem:radicaledge`'s `s(T)`, subgroup form).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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))**Edge complements exist** (`lem:radicaledge` step 2): finite elementary-abelian complement extension inside `T̃` — a subgroup maximal among those meeting `relN` trivially fills up to `T̃`, since any missed `T̃`-element (order ≤ 2, central in `T̃`) could be adjoined.
-
defdefined in Q2Presentation/Induction/RadicalEdge.leancomplete
def Q2Presentation.Induction.ZeroEdge {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)) : PropThe universe of propositions. `Prop ≡ Sort 0`. Every proposition is propositionally equal to either `True` or `False`.def Q2Presentation.Induction.ZeroEdge {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)) : PropThe universe of propositions. `Prop ≡ Sort 0`. Every proposition is propositionally equal to either `True` or `False`.**The zero-edge predicate** (`lem:radicaledge`'s `[ε̄] = 0` branch, cocycle-free): some edge complement is normal in the whole cover.
-
theoremdefined in Q2Presentation/Induction/RadicalEdge.leancomplete
theorem Q2Presentation.Induction.edgeDefect_mCover {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)) (DQ2Presentation.Induction.EdgeComplement chief K lam hinv: Q2Presentation.Induction.EdgeComplementQ2Presentation.Induction.EdgeComplement {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) : TypeAn **edge complement**: a complement to the deck kernel inside the `T`-preimage (`lem:radicaledge`'s `s(T)`, subgroup form).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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: lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))≠Ne.{u} {α : Sort u} (a b : α) : Prop`a ≠ b`, or `Ne a b` is defined as `¬ (a = b)` or `a = b → False`, and asserts that `a` and `b` are not equal. Conventions for notations in identifiers: * The recommended spelling of `≠` in identifiers is `ne`.0) (b(Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y: (Q2Presentation.Lifting.scalarCoverTargetQ2Presentation.Lifting.scalarCoverTarget {Yt : Q2Presentation.BoundaryFramedTarget} [Finite Yt.Y] (E : Q2Presentation.Lifting.ElementaryKernel Yt) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E)) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals E) : Q2Presentation.BoundaryFramedTarget**The scalar pushout target** `B_λ = Y/ker λ` as a framed target (same `H`, `E`, frame; `eq:targettower` refined by l.4219–4223).(Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel** (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)).YQ2Presentation.BoundaryFramedTarget.Y (self : Q2Presentation.BoundaryFramedTarget) : TypeThe finite target group `Y`.) (hbb ∈ Q2Presentation.Induction.mCover chief K lam hinv: b(Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y∈Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. Conventions for notations in identifiers: * The recommended spelling of `∈` in identifiers is `mem`.Q2Presentation.Induction.mCoverQ2Presentation.Induction.mCover {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) : Subgroup (Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).YThe `M`-preimage in the cover: `M̃ = K/(ker λ) ≤ B_λ`.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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)) (w↥D.W: ↥DQ2Presentation.Induction.EdgeComplement chief K lam hinv.WQ2Presentation.Induction.EdgeComplement.W {p : Q2Presentation.Induction.FramedPair} {chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p} {K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor} {lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))} {hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)} (self : Q2Presentation.Induction.EdgeComplement chief K lam hinv) : Subgroup (Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y) : Q2Presentation.Induction.edgeDefectQ2Presentation.Induction.edgeDefect {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) (D : Q2Presentation.Induction.EdgeComplement chief K lam hinv) (hne : lam ≠ 0) (b : (Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y) (w : ↥D.W) : ZMod 2**The edge defect** of a complement (`eq:radicaledgecochain` in defect form): the `relN`-component of the conjugation of a complement element, read in `𝔽₂`.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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)DQ2Presentation.Induction.EdgeComplement chief K lam hinvhnelam ≠ 0b(Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Yw↥D.W=Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`. We use `a = b` as notation for `Eq a b`. A fundamental property of equality is that it is an equivalence relation. ``` variable (α : Type) (a b c d : α) variable (hab : a = b) (hcb : c = b) (hcd : c = d) example : a = d := Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd ``` Equality is much more than an equivalence relation, however. It has the important property that every assertion respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value. That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`. Example: ``` example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := Eq.subst h1 h2 example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := h1 ▸ h2 ``` The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`. For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality) Conventions for notations in identifiers: * The recommended spelling of `=` in identifiers is `eq`.0theorem Q2Presentation.Induction.edgeDefect_mCover {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)) (DQ2Presentation.Induction.EdgeComplement chief K lam hinv: Q2Presentation.Induction.EdgeComplementQ2Presentation.Induction.EdgeComplement {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) : TypeAn **edge complement**: a complement to the deck kernel inside the `T`-preimage (`lem:radicaledge`'s `s(T)`, subgroup form).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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: lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))≠Ne.{u} {α : Sort u} (a b : α) : Prop`a ≠ b`, or `Ne a b` is defined as `¬ (a = b)` or `a = b → False`, and asserts that `a` and `b` are not equal. Conventions for notations in identifiers: * The recommended spelling of `≠` in identifiers is `ne`.0) (b(Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y: (Q2Presentation.Lifting.scalarCoverTargetQ2Presentation.Lifting.scalarCoverTarget {Yt : Q2Presentation.BoundaryFramedTarget} [Finite Yt.Y] (E : Q2Presentation.Lifting.ElementaryKernel Yt) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E)) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals E) : Q2Presentation.BoundaryFramedTarget**The scalar pushout target** `B_λ = Y/ker λ` as a framed target (same `H`, `E`, frame; `eq:targettower` refined by l.4219–4223).(Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel** (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)).YQ2Presentation.BoundaryFramedTarget.Y (self : Q2Presentation.BoundaryFramedTarget) : TypeThe finite target group `Y`.) (hbb ∈ Q2Presentation.Induction.mCover chief K lam hinv: b(Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y∈Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. Conventions for notations in identifiers: * The recommended spelling of `∈` in identifiers is `mem`.Q2Presentation.Induction.mCoverQ2Presentation.Induction.mCover {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) : Subgroup (Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).YThe `M`-preimage in the cover: `M̃ = K/(ker λ) ≤ B_λ`.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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)) (w↥D.W: ↥DQ2Presentation.Induction.EdgeComplement chief K lam hinv.WQ2Presentation.Induction.EdgeComplement.W {p : Q2Presentation.Induction.FramedPair} {chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p} {K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor} {lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))} {hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)} (self : Q2Presentation.Induction.EdgeComplement chief K lam hinv) : Subgroup (Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y) : Q2Presentation.Induction.edgeDefectQ2Presentation.Induction.edgeDefect {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) (D : Q2Presentation.Induction.EdgeComplement chief K lam hinv) (hne : lam ≠ 0) (b : (Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y) (w : ↥D.W) : ZMod 2**The edge defect** of a complement (`eq:radicaledgecochain` in defect form): the `relN`-component of the conjugation of a complement element, read in `𝔽₂`.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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)DQ2Presentation.Induction.EdgeComplement chief K lam hinvhnelam ≠ 0b(Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Yw↥D.W=Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`. We use `a = b` as notation for `Eq a b`. A fundamental property of equality is that it is an equivalence relation. ``` variable (α : Type) (a b c d : α) variable (hab : a = b) (hcb : c = b) (hcd : c = d) example : a = d := Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd ``` Equality is much more than an equivalence relation, however. It has the important property that every assertion respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value. That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`. Example: ``` example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := Eq.subst h1 h2 example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := h1 ▸ h2 ``` The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`. For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality) Conventions for notations in identifiers: * The recommended spelling of `=` in identifiers is `eq`.0**`C`-factorization, vanishing clause** (`lem:radicaledge` step 4, concrete): the defect vanishes on `M̃` — for `b ∈ M̃` the conjugation leak is the polar pairing against `T`, which is zero by the crux.
-
theoremdefined in Q2Presentation/Induction/RadicalEdge.leancomplete
theorem Q2Presentation.Induction.edgeDefect_mul_mCover {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)) (DQ2Presentation.Induction.EdgeComplement chief K lam hinv: Q2Presentation.Induction.EdgeComplementQ2Presentation.Induction.EdgeComplement {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) : TypeAn **edge complement**: a complement to the deck kernel inside the `T`-preimage (`lem:radicaledge`'s `s(T)`, subgroup form).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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: lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))≠Ne.{u} {α : Sort u} (a b : α) : Prop`a ≠ b`, or `Ne a b` is defined as `¬ (a = b)` or `a = b → False`, and asserts that `a` and `b` are not equal. Conventions for notations in identifiers: * The recommended spelling of `≠` in identifiers is `ne`.0) (b(Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Ym(Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y: (Q2Presentation.Lifting.scalarCoverTargetQ2Presentation.Lifting.scalarCoverTarget {Yt : Q2Presentation.BoundaryFramedTarget} [Finite Yt.Y] (E : Q2Presentation.Lifting.ElementaryKernel Yt) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E)) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals E) : Q2Presentation.BoundaryFramedTarget**The scalar pushout target** `B_λ = Y/ker λ` as a framed target (same `H`, `E`, frame; `eq:targettower` refined by l.4219–4223).(Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel** (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)).YQ2Presentation.BoundaryFramedTarget.Y (self : Q2Presentation.BoundaryFramedTarget) : TypeThe finite target group `Y`.) (hmm ∈ Q2Presentation.Induction.mCover chief K lam hinv: m(Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y∈Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. Conventions for notations in identifiers: * The recommended spelling of `∈` in identifiers is `mem`.Q2Presentation.Induction.mCoverQ2Presentation.Induction.mCover {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) : Subgroup (Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).YThe `M`-preimage in the cover: `M̃ = K/(ker λ) ≤ B_λ`.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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)) (w↥D.W: ↥DQ2Presentation.Induction.EdgeComplement chief K lam hinv.WQ2Presentation.Induction.EdgeComplement.W {p : Q2Presentation.Induction.FramedPair} {chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p} {K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor} {lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))} {hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)} (self : Q2Presentation.Induction.EdgeComplement chief K lam hinv) : Subgroup (Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y) : Q2Presentation.Induction.edgeDefectQ2Presentation.Induction.edgeDefect {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) (D : Q2Presentation.Induction.EdgeComplement chief K lam hinv) (hne : lam ≠ 0) (b : (Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y) (w : ↥D.W) : ZMod 2**The edge defect** of a complement (`eq:radicaledgecochain` in defect form): the `relN`-component of the conjugation of a complement element, read in `𝔽₂`.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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)DQ2Presentation.Induction.EdgeComplement chief K lam hinvhnelam ≠ 0(HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.b(Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y*HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.m(Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y)HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.w↥D.W=Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`. We use `a = b` as notation for `Eq a b`. A fundamental property of equality is that it is an equivalence relation. ``` variable (α : Type) (a b c d : α) variable (hab : a = b) (hcb : c = b) (hcd : c = d) example : a = d := Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd ``` Equality is much more than an equivalence relation, however. It has the important property that every assertion respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value. That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`. Example: ``` example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := Eq.subst h1 h2 example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := h1 ▸ h2 ``` The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`. For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality) Conventions for notations in identifiers: * The recommended spelling of `=` in identifiers is `eq`.Q2Presentation.Induction.edgeDefectQ2Presentation.Induction.edgeDefect {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) (D : Q2Presentation.Induction.EdgeComplement chief K lam hinv) (hne : lam ≠ 0) (b : (Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y) (w : ↥D.W) : ZMod 2**The edge defect** of a complement (`eq:radicaledgecochain` in defect form): the `relN`-component of the conjugation of a complement element, read in `𝔽₂`.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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)DQ2Presentation.Induction.EdgeComplement chief K lam hinvhnelam ≠ 0b(Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Yw↥D.Wtheorem Q2Presentation.Induction.edgeDefect_mul_mCover {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)) (DQ2Presentation.Induction.EdgeComplement chief K lam hinv: Q2Presentation.Induction.EdgeComplementQ2Presentation.Induction.EdgeComplement {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) : TypeAn **edge complement**: a complement to the deck kernel inside the `T`-preimage (`lem:radicaledge`'s `s(T)`, subgroup form).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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: lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))≠Ne.{u} {α : Sort u} (a b : α) : Prop`a ≠ b`, or `Ne a b` is defined as `¬ (a = b)` or `a = b → False`, and asserts that `a` and `b` are not equal. Conventions for notations in identifiers: * The recommended spelling of `≠` in identifiers is `ne`.0) (b(Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Ym(Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y: (Q2Presentation.Lifting.scalarCoverTargetQ2Presentation.Lifting.scalarCoverTarget {Yt : Q2Presentation.BoundaryFramedTarget} [Finite Yt.Y] (E : Q2Presentation.Lifting.ElementaryKernel Yt) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E)) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals E) : Q2Presentation.BoundaryFramedTarget**The scalar pushout target** `B_λ = Y/ker λ` as a framed target (same `H`, `E`, frame; `eq:targettower` refined by l.4219–4223).(Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel** (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)).YQ2Presentation.BoundaryFramedTarget.Y (self : Q2Presentation.BoundaryFramedTarget) : TypeThe finite target group `Y`.) (hmm ∈ Q2Presentation.Induction.mCover chief K lam hinv: m(Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y∈Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. Conventions for notations in identifiers: * The recommended spelling of `∈` in identifiers is `mem`.Q2Presentation.Induction.mCoverQ2Presentation.Induction.mCover {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) : Subgroup (Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).YThe `M`-preimage in the cover: `M̃ = K/(ker λ) ≤ B_λ`.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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)) (w↥D.W: ↥DQ2Presentation.Induction.EdgeComplement chief K lam hinv.WQ2Presentation.Induction.EdgeComplement.W {p : Q2Presentation.Induction.FramedPair} {chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p} {K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor} {lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))} {hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)} (self : Q2Presentation.Induction.EdgeComplement chief K lam hinv) : Subgroup (Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y) : Q2Presentation.Induction.edgeDefectQ2Presentation.Induction.edgeDefect {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) (D : Q2Presentation.Induction.EdgeComplement chief K lam hinv) (hne : lam ≠ 0) (b : (Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y) (w : ↥D.W) : ZMod 2**The edge defect** of a complement (`eq:radicaledgecochain` in defect form): the `relN`-component of the conjugation of a complement element, read in `𝔽₂`.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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)DQ2Presentation.Induction.EdgeComplement chief K lam hinvhnelam ≠ 0(HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.b(Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y*HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.m(Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y)HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.w↥D.W=Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`. We use `a = b` as notation for `Eq a b`. A fundamental property of equality is that it is an equivalence relation. ``` variable (α : Type) (a b c d : α) variable (hab : a = b) (hcb : c = b) (hcd : c = d) example : a = d := Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd ``` Equality is much more than an equivalence relation, however. It has the important property that every assertion respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value. That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`. Example: ``` example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := Eq.subst h1 h2 example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := h1 ▸ h2 ``` The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`. For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality) Conventions for notations in identifiers: * The recommended spelling of `=` in identifiers is `eq`.Q2Presentation.Induction.edgeDefectQ2Presentation.Induction.edgeDefect {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) (D : Q2Presentation.Induction.EdgeComplement chief K lam hinv) (hne : lam ≠ 0) (b : (Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y) (w : ↥D.W) : ZMod 2**The edge defect** of a complement (`eq:radicaledgecochain` in defect form): the `relN`-component of the conjugation of a complement element, read in `𝔽₂`.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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)DQ2Presentation.Induction.EdgeComplement chief K lam hinvhnelam ≠ 0b(Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Yw↥D.W**`C`-factorization** (`lem:radicaledge` step 4): the defect depends only on the class of `b` modulo `M̃` — i.e. on its image in `C`.
-
theoremdefined in Q2Presentation/Induction/RadicalEdge.leancomplete
theorem Q2Presentation.Induction.zeroEdge_iff_defect {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) : 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)↔Iff (a b : Prop) : PropIf and only if, or logical bi-implication. `a ↔ b` means that `a` implies `b` and vice versa. By `propext`, this implies that `a` and `b` are equal and hence any expression involving `a` is equivalent to the corresponding expression with `b` instead. Conventions for notations in identifiers: * The recommended spelling of `↔` in identifiers is `iff`. * The recommended spelling of `<->` in identifiers is `iff` (prefer `↔` over `<->`).∃ DQ2Presentation.Induction.EdgeComplement chief K lam hinv, ∀ (b(Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y: (Q2Presentation.Lifting.scalarCoverTargetQ2Presentation.Lifting.scalarCoverTarget {Yt : Q2Presentation.BoundaryFramedTarget} [Finite Yt.Y] (E : Q2Presentation.Lifting.ElementaryKernel Yt) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E)) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals E) : Q2Presentation.BoundaryFramedTarget**The scalar pushout target** `B_λ = Y/ker λ` as a framed target (same `H`, `E`, frame; `eq:targettower` refined by l.4219–4223).(Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel** (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)).YQ2Presentation.BoundaryFramedTarget.Y (self : Q2Presentation.BoundaryFramedTarget) : TypeThe finite target group `Y`.) (w↥D.W: ↥DQ2Presentation.Induction.EdgeComplement chief K lam hinv.WQ2Presentation.Induction.EdgeComplement.W {p : Q2Presentation.Induction.FramedPair} {chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p} {K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor} {lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))} {hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)} (self : Q2Presentation.Induction.EdgeComplement chief K lam hinv) : Subgroup (Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y), Q2Presentation.Induction.edgeDefectQ2Presentation.Induction.edgeDefect {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) (D : Q2Presentation.Induction.EdgeComplement chief K lam hinv) (hne : lam ≠ 0) (b : (Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y) (w : ↥D.W) : ZMod 2**The edge defect** of a complement (`eq:radicaledgecochain` in defect form): the `relN`-component of the conjugation of a complement element, read in `𝔽₂`.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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)DQ2Presentation.Induction.EdgeComplement chief K lam hinvhnelam ≠ 0b(Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Yw↥D.W=Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`. We use `a = b` as notation for `Eq a b`. A fundamental property of equality is that it is an equivalence relation. ``` variable (α : Type) (a b c d : α) variable (hab : a = b) (hcb : c = b) (hcd : c = d) example : a = d := Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd ``` Equality is much more than an equivalence relation, however. It has the important property that every assertion respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value. That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`. Example: ``` example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := Eq.subst h1 h2 example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := h1 ▸ h2 ``` The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`. For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality) Conventions for notations in identifiers: * The recommended spelling of `=` in identifiers is `eq`.0theorem Q2Presentation.Induction.zeroEdge_iff_defect {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) : 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)↔Iff (a b : Prop) : PropIf and only if, or logical bi-implication. `a ↔ b` means that `a` implies `b` and vice versa. By `propext`, this implies that `a` and `b` are equal and hence any expression involving `a` is equivalent to the corresponding expression with `b` instead. Conventions for notations in identifiers: * The recommended spelling of `↔` in identifiers is `iff`. * The recommended spelling of `<->` in identifiers is `iff` (prefer `↔` over `<->`).∃ DQ2Presentation.Induction.EdgeComplement chief K lam hinv, ∀ (b(Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y: (Q2Presentation.Lifting.scalarCoverTargetQ2Presentation.Lifting.scalarCoverTarget {Yt : Q2Presentation.BoundaryFramedTarget} [Finite Yt.Y] (E : Q2Presentation.Lifting.ElementaryKernel Yt) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E)) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals E) : Q2Presentation.BoundaryFramedTarget**The scalar pushout target** `B_λ = Y/ker λ` as a framed target (same `H`, `E`, frame; `eq:targettower` refined by l.4219–4223).(Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel** (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)).YQ2Presentation.BoundaryFramedTarget.Y (self : Q2Presentation.BoundaryFramedTarget) : TypeThe finite target group `Y`.) (w↥D.W: ↥DQ2Presentation.Induction.EdgeComplement chief K lam hinv.WQ2Presentation.Induction.EdgeComplement.W {p : Q2Presentation.Induction.FramedPair} {chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p} {K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor} {lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))} {hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)} (self : Q2Presentation.Induction.EdgeComplement chief K lam hinv) : Subgroup (Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y), Q2Presentation.Induction.edgeDefectQ2Presentation.Induction.edgeDefect {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) (D : Q2Presentation.Induction.EdgeComplement chief K lam hinv) (hne : lam ≠ 0) (b : (Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y) (w : ↥D.W) : ZMod 2**The edge defect** of a complement (`eq:radicaledgecochain` in defect form): the `relN`-component of the conjugation of a complement element, read in `𝔽₂`.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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)DQ2Presentation.Induction.EdgeComplement chief K lam hinvhnelam ≠ 0b(Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Yw↥D.W=Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`. We use `a = b` as notation for `Eq a b`. A fundamental property of equality is that it is an equivalence relation. ``` variable (α : Type) (a b c d : α) variable (hab : a = b) (hcb : c = b) (hcd : c = d) example : a = d := Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd ``` Equality is much more than an equivalence relation, however. It has the important property that every assertion respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value. That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`. Example: ``` example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := Eq.subst h1 h2 example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := h1 ▸ h2 ``` The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`. For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality) Conventions for notations in identifiers: * The recommended spelling of `=` in identifiers is `eq`.0**Zero edge ⟺ identically vanishing defect** (`lem:radicaledge` steps 3+7: a complement is normal iff conjugation never leaks into the deck kernel).
-
defdefined in Q2Presentation/Induction/RadicalEdgeHalving.leancomplete
def Q2Presentation.Induction.EdgeHalvingGammaA {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)) : PropThe universe of propositions. `Prop ≡ Sort 0`. Every proposition is propositionally equal to either `True` or `False`.def Q2Presentation.Induction.EdgeHalvingGammaA {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)) : PropThe universe of propositions. `Prop ≡ Sort 0`. Every proposition is propositionally equal to either `True` or `False`.**The R4a per-fibre halving, candidate source** — THE sharply-scoped R4a residual (manuscript `lem:radicaledge` step 6, l.4006–4019: exact variation formula + perfect degree-one duality; candidate half = `prop:chainmap` l.1687 + `prop:defduality`-grade degree-one content): over each `g_C`, exactly half of the weak `M`-lifts are λ-liftable, stated division-free per fibre. Deliberately does NOT assert the fibre size `2^{2·dim M}` (that is the separate, PROVEN `lem:elementarystage` obligation — design §6.3), and is deliberately NOT conditioned here on `¬ ZeroEdge` — the conditioning belongs to its (future, coordinated) keep `sec7_edgeHalving_gammaA (hne) (hedge) : EdgeHalvingGammaA …`, whose dissolution program is recorded in the design §4.6: (i) the ledger variation formula from U3's `edgeDefect` calculus + the weak-base defect engine; (ii) `edgeShadow ≠ 0` on the `T`-cocycle space by the trivial-chain dévissage over the PROVEN `Sec7TrivialChainData`; (iii) the free-orbit torsor bookkeeping. -
defdefined in Q2Presentation/Induction/RadicalEdgeHalving.leancomplete
def Q2Presentation.Induction.EdgeHalvingGQ2 {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)) : PropThe universe of propositions. `Prop ≡ Sort 0`. Every proposition is propositionally equal to either `True` or `False`.def Q2Presentation.Induction.EdgeHalvingGQ2 {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)) : PropThe universe of propositions. `Prop ≡ Sort 0`. Every proposition is propositionally equal to either `True` or `False`.**The R4a per-fibre halving, local source** (manuscript `lem:radicaledge` step 6, l.4006–4019, with `prop:localduality` — NSW VII.2, perfectness of the degree-one local pairing — the citable-with-derivation trust class of `localObstruction_scalar`, BLOCKR_P1_DESIGN §5.3). Same statement shape as the candidate clause; its (future, coordinated) keep is `q2_edgeHalving (hne) (hedge) : EdgeHalvingGQ2 …`.
-
theoremdefined in Q2Presentation/Induction/RadicalEdgeTower.leancomplete
theorem Q2Presentation.Induction.tCover_comm {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) (a(Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Yb(Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y: (Q2Presentation.Lifting.scalarCoverTargetQ2Presentation.Lifting.scalarCoverTarget {Yt : Q2Presentation.BoundaryFramedTarget} [Finite Yt.Y] (E : Q2Presentation.Lifting.ElementaryKernel Yt) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E)) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals E) : Q2Presentation.BoundaryFramedTarget**The scalar pushout target** `B_λ = Y/ker λ` as a framed target (same `H`, `E`, frame; `eq:targettower` refined by l.4219–4223).(Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel** (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)).YQ2Presentation.BoundaryFramedTarget.Y (self : Q2Presentation.BoundaryFramedTarget) : TypeThe finite target group `Y`.) (haa ∈ Q2Presentation.Induction.tCover chief K lam hinv: a(Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y∈Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. Conventions for notations in identifiers: * The recommended spelling of `∈` in identifiers is `mem`.Q2Presentation.Induction.tCoverQ2Presentation.Induction.tCover {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) : Subgroup (Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).YThe `T`-preimage in the cover: `T̃ = TAmb·(ker λ)/(ker λ) ≤ B_λ`.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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)) (hbb ∈ Q2Presentation.Induction.tCover chief K lam hinv: b(Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y∈Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. Conventions for notations in identifiers: * The recommended spelling of `∈` in identifiers is `mem`.Q2Presentation.Induction.tCoverQ2Presentation.Induction.tCover {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) : Subgroup (Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).YThe `T`-preimage in the cover: `T̃ = TAmb·(ker λ)/(ker λ) ≤ B_λ`.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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)) : a(Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y*HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.b(Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y=Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`. We use `a = b` as notation for `Eq a b`. A fundamental property of equality is that it is an equivalence relation. ``` variable (α : Type) (a b c d : α) variable (hab : a = b) (hcb : c = b) (hcd : c = d) example : a = d := Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd ``` Equality is much more than an equivalence relation, however. It has the important property that every assertion respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value. That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`. Example: ``` example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := Eq.subst h1 h2 example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := h1 ▸ h2 ``` The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`. For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality) Conventions for notations in identifiers: * The recommended spelling of `=` in identifiers is `eq`.b(Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y*HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.a(Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Ytheorem Q2Presentation.Induction.tCover_comm {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) (a(Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Yb(Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y: (Q2Presentation.Lifting.scalarCoverTargetQ2Presentation.Lifting.scalarCoverTarget {Yt : Q2Presentation.BoundaryFramedTarget} [Finite Yt.Y] (E : Q2Presentation.Lifting.ElementaryKernel Yt) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E)) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals E) : Q2Presentation.BoundaryFramedTarget**The scalar pushout target** `B_λ = Y/ker λ` as a framed target (same `H`, `E`, frame; `eq:targettower` refined by l.4219–4223).(Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel** (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)).YQ2Presentation.BoundaryFramedTarget.Y (self : Q2Presentation.BoundaryFramedTarget) : TypeThe finite target group `Y`.) (haa ∈ Q2Presentation.Induction.tCover chief K lam hinv: a(Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y∈Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. Conventions for notations in identifiers: * The recommended spelling of `∈` in identifiers is `mem`.Q2Presentation.Induction.tCoverQ2Presentation.Induction.tCover {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) : Subgroup (Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).YThe `T`-preimage in the cover: `T̃ = TAmb·(ker λ)/(ker λ) ≤ B_λ`.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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)) (hbb ∈ Q2Presentation.Induction.tCover chief K lam hinv: b(Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y∈Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. Conventions for notations in identifiers: * The recommended spelling of `∈` in identifiers is `mem`.Q2Presentation.Induction.tCoverQ2Presentation.Induction.tCover {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) : Subgroup (Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).YThe `T`-preimage in the cover: `T̃ = TAmb·(ker λ)/(ker λ) ≤ B_λ`.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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)) : a(Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y*HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.b(Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y=Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`. We use `a = b` as notation for `Eq a b`. A fundamental property of equality is that it is an equivalence relation. ``` variable (α : Type) (a b c d : α) variable (hab : a = b) (hcb : c = b) (hcd : c = d) example : a = d := Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd ``` Equality is much more than an equivalence relation, however. It has the important property that every assertion respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value. That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`. Example: ``` example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := Eq.subst h1 h2 example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := h1 ▸ h2 ``` The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`. For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality) Conventions for notations in identifiers: * The recommended spelling of `=` in identifiers is `eq`.b(Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y*HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.a(Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y**`T̃` is abelian** (`lem:radicaledge` step 1): commutators of `TAmb`-elements die in the cover.
-
theoremdefined in Q2Presentation/Induction/RadicalEdgeTower.leancomplete
theorem Q2Presentation.Induction.tCover_mul_self {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) (a(Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y: (Q2Presentation.Lifting.scalarCoverTargetQ2Presentation.Lifting.scalarCoverTarget {Yt : Q2Presentation.BoundaryFramedTarget} [Finite Yt.Y] (E : Q2Presentation.Lifting.ElementaryKernel Yt) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E)) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals E) : Q2Presentation.BoundaryFramedTarget**The scalar pushout target** `B_λ = Y/ker λ` as a framed target (same `H`, `E`, frame; `eq:targettower` refined by l.4219–4223).(Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel** (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)).YQ2Presentation.BoundaryFramedTarget.Y (self : Q2Presentation.BoundaryFramedTarget) : TypeThe finite target group `Y`.) (haa ∈ Q2Presentation.Induction.tCover chief K lam hinv: a(Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y∈Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. Conventions for notations in identifiers: * The recommended spelling of `∈` in identifiers is `mem`.Q2Presentation.Induction.tCoverQ2Presentation.Induction.tCover {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) : Subgroup (Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).YThe `T`-preimage in the cover: `T̃ = TAmb·(ker λ)/(ker λ) ≤ B_λ`.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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)) : a(Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y*HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.a(Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y=Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`. We use `a = b` as notation for `Eq a b`. A fundamental property of equality is that it is an equivalence relation. ``` variable (α : Type) (a b c d : α) variable (hab : a = b) (hcb : c = b) (hcd : c = d) example : a = d := Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd ``` Equality is much more than an equivalence relation, however. It has the important property that every assertion respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value. That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`. Example: ``` example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := Eq.subst h1 h2 example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := h1 ▸ h2 ``` The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`. For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality) Conventions for notations in identifiers: * The recommended spelling of `=` in identifiers is `eq`.1theorem Q2Presentation.Induction.tCover_mul_self {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) (a(Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y: (Q2Presentation.Lifting.scalarCoverTargetQ2Presentation.Lifting.scalarCoverTarget {Yt : Q2Presentation.BoundaryFramedTarget} [Finite Yt.Y] (E : Q2Presentation.Lifting.ElementaryKernel Yt) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E)) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals E) : Q2Presentation.BoundaryFramedTarget**The scalar pushout target** `B_λ = Y/ker λ` as a framed target (same `H`, `E`, frame; `eq:targettower` refined by l.4219–4223).(Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel** (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)).YQ2Presentation.BoundaryFramedTarget.Y (self : Q2Presentation.BoundaryFramedTarget) : TypeThe finite target group `Y`.) (haa ∈ Q2Presentation.Induction.tCover chief K lam hinv: a(Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y∈Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. Conventions for notations in identifiers: * The recommended spelling of `∈` in identifiers is `mem`.Q2Presentation.Induction.tCoverQ2Presentation.Induction.tCover {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) : Subgroup (Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).YThe `T`-preimage in the cover: `T̃ = TAmb·(ker λ)/(ker λ) ≤ B_λ`.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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)) : a(Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y*HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.a(Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y=Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`. We use `a = b` as notation for `Eq a b`. A fundamental property of equality is that it is an equivalence relation. ``` variable (α : Type) (a b c d : α) variable (hab : a = b) (hcb : c = b) (hcd : c = d) example : a = d := Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd ``` Equality is much more than an equivalence relation, however. It has the important property that every assertion respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value. That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`. Example: ``` example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := Eq.subst h1 h2 example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := h1 ▸ h2 ``` The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`. For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality) Conventions for notations in identifiers: * The recommended spelling of `=` in identifiers is `eq`.1**`T̃` has exponent 2** (`lem:radicaledge` step 1): squares of `TAmb`-elements die in the cover.
-
theoremdefined in Q2Presentation/Induction/RadicalEdgeTower.leancomplete
theorem Q2Presentation.Induction.mCover_conj_fix {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) (b(Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y: (Q2Presentation.Lifting.scalarCoverTargetQ2Presentation.Lifting.scalarCoverTarget {Yt : Q2Presentation.BoundaryFramedTarget} [Finite Yt.Y] (E : Q2Presentation.Lifting.ElementaryKernel Yt) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E)) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals E) : Q2Presentation.BoundaryFramedTarget**The scalar pushout target** `B_λ = Y/ker λ` as a framed target (same `H`, `E`, frame; `eq:targettower` refined by l.4219–4223).(Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel** (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)).YQ2Presentation.BoundaryFramedTarget.Y (self : Q2Presentation.BoundaryFramedTarget) : TypeThe finite target group `Y`.) (hbb ∈ Q2Presentation.Induction.mCover chief K lam hinv: b(Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y∈Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. Conventions for notations in identifiers: * The recommended spelling of `∈` in identifiers is `mem`.Q2Presentation.Induction.mCoverQ2Presentation.Induction.mCover {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) : Subgroup (Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).YThe `M`-preimage in the cover: `M̃ = K/(ker λ) ≤ B_λ`.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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)) (t(Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y: (Q2Presentation.Lifting.scalarCoverTargetQ2Presentation.Lifting.scalarCoverTarget {Yt : Q2Presentation.BoundaryFramedTarget} [Finite Yt.Y] (E : Q2Presentation.Lifting.ElementaryKernel Yt) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E)) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals E) : Q2Presentation.BoundaryFramedTarget**The scalar pushout target** `B_λ = Y/ker λ` as a framed target (same `H`, `E`, frame; `eq:targettower` refined by l.4219–4223).(Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel** (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)).YQ2Presentation.BoundaryFramedTarget.Y (self : Q2Presentation.BoundaryFramedTarget) : TypeThe finite target group `Y`.) (htt ∈ Q2Presentation.Induction.tCover chief K lam hinv: t(Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y∈Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. Conventions for notations in identifiers: * The recommended spelling of `∈` in identifiers is `mem`.Q2Presentation.Induction.tCoverQ2Presentation.Induction.tCover {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) : Subgroup (Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).YThe `T`-preimage in the cover: `T̃ = TAmb·(ker λ)/(ker λ) ≤ B_λ`.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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)) : b(Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y*HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.t(Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y*HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.b(Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y⁻¹Inv.inv.{u} {α : Type u} [self : Inv α] : α → α`a⁻¹` computes the inverse of `a`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `⁻¹` in identifiers is `inv`.=Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`. We use `a = b` as notation for `Eq a b`. A fundamental property of equality is that it is an equivalence relation. ``` variable (α : Type) (a b c d : α) variable (hab : a = b) (hcb : c = b) (hcd : c = d) example : a = d := Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd ``` Equality is much more than an equivalence relation, however. It has the important property that every assertion respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value. That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`. Example: ``` example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := Eq.subst h1 h2 example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := h1 ▸ h2 ``` The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`. For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality) Conventions for notations in identifiers: * The recommended spelling of `=` in identifiers is `eq`.t(Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Ytheorem Q2Presentation.Induction.mCover_conj_fix {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) (b(Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y: (Q2Presentation.Lifting.scalarCoverTargetQ2Presentation.Lifting.scalarCoverTarget {Yt : Q2Presentation.BoundaryFramedTarget} [Finite Yt.Y] (E : Q2Presentation.Lifting.ElementaryKernel Yt) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E)) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals E) : Q2Presentation.BoundaryFramedTarget**The scalar pushout target** `B_λ = Y/ker λ` as a framed target (same `H`, `E`, frame; `eq:targettower` refined by l.4219–4223).(Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel** (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)).YQ2Presentation.BoundaryFramedTarget.Y (self : Q2Presentation.BoundaryFramedTarget) : TypeThe finite target group `Y`.) (hbb ∈ Q2Presentation.Induction.mCover chief K lam hinv: b(Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y∈Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. Conventions for notations in identifiers: * The recommended spelling of `∈` in identifiers is `mem`.Q2Presentation.Induction.mCoverQ2Presentation.Induction.mCover {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) : Subgroup (Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).YThe `M`-preimage in the cover: `M̃ = K/(ker λ) ≤ B_λ`.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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)) (t(Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y: (Q2Presentation.Lifting.scalarCoverTargetQ2Presentation.Lifting.scalarCoverTarget {Yt : Q2Presentation.BoundaryFramedTarget} [Finite Yt.Y] (E : Q2Presentation.Lifting.ElementaryKernel Yt) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E)) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals E) : Q2Presentation.BoundaryFramedTarget**The scalar pushout target** `B_λ = Y/ker λ` as a framed target (same `H`, `E`, frame; `eq:targettower` refined by l.4219–4223).(Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel** (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)).YQ2Presentation.BoundaryFramedTarget.Y (self : Q2Presentation.BoundaryFramedTarget) : TypeThe finite target group `Y`.) (htt ∈ Q2Presentation.Induction.tCover chief K lam hinv: t(Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y∈Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. Conventions for notations in identifiers: * The recommended spelling of `∈` in identifiers is `mem`.Q2Presentation.Induction.tCoverQ2Presentation.Induction.tCover {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) : Subgroup (Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).YThe `T`-preimage in the cover: `T̃ = TAmb·(ker λ)/(ker λ) ≤ B_λ`.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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)) : b(Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y*HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.t(Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y*HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.b(Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y⁻¹Inv.inv.{u} {α : Type u} [self : Inv α] : α → α`a⁻¹` computes the inverse of `a`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `⁻¹` in identifiers is `inv`.=Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`. We use `a = b` as notation for `Eq a b`. A fundamental property of equality is that it is an equivalence relation. ``` variable (α : Type) (a b c d : α) variable (hab : a = b) (hcb : c = b) (hcd : c = d) example : a = d := Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd ``` Equality is much more than an equivalence relation, however. It has the important property that every assertion respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value. That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`. Example: ``` example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := Eq.subst h1 h2 example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := h1 ▸ h2 ``` The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`. For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality) Conventions for notations in identifiers: * The recommended spelling of `=` in identifiers is `eq`.t(Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y**`M̃` centralizes `T̃`** (the concrete inflation input of `lem:radicaledge` step 4: the defect of an `M̃`-conjugation is the polar pairing against `T`, which vanishes by the crux).
-
defdefined in Q2Presentation/Induction/RadicalEdgeTower.leancomplete
def Q2Presentation.Induction.tCoverCollapse {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)) : (Q2Presentation.Lifting.scalarCoverTargetQ2Presentation.Lifting.scalarCoverTarget {Yt : Q2Presentation.BoundaryFramedTarget} [Finite Yt.Y] (E : Q2Presentation.Lifting.ElementaryKernel Yt) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E)) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals E) : Q2Presentation.BoundaryFramedTarget**The scalar pushout target** `B_λ = Y/ker λ` as a framed target (same `H`, `E`, frame; `eq:targettower` refined by l.4219–4223).(Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel** (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)).YQ2Presentation.BoundaryFramedTarget.Y (self : Q2Presentation.BoundaryFramedTarget) : TypeThe finite target group `Y`.⧸HasQuotient.Quotient.{u, v} (A : outParam (Type u)) {B : Type v} [self : HasQuotient A B] : B → Type (max u v)`HasQuotient.Quotient A b` (denoted as `A ⧸ b`) is the quotient of the type `A` by `b`. This differs from `HasQuotient.quotient'` in that the `A` argument is explicit, which is necessary to make Lean show the notation in the goal state.Q2Presentation.Induction.tCoverQ2Presentation.Induction.tCover {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) : Subgroup (Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).YThe `T`-preimage in the cover: `T̃ = TAmb·(ker λ)/(ker λ) ≤ B_λ`.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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)≃*MulEquiv.{u_9, u_10} (M : Type u_9) (N : Type u_10) [Mul M] [Mul N] : Type (max u_10 u_9)`MulEquiv α β` is the type of an equiv `α ≃ β` which preserves multiplication.(Q2Presentation.Induction.XRZero.xrChildQ2Presentation.Induction.XRZero.xrChild {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPairThe `𝒳_R = 0` child: the quotient framed pair at `N = Φ`-layer.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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`.⧸HasQuotient.Quotient.{u, v} (A : outParam (Type u)) {B : Type v} [self : HasQuotient A B] : B → Type (max u v)`HasQuotient.Quotient A b` (denoted as `A ⧸ b`) is the quotient of the type `A` by `b`. This differs from `HasQuotient.quotient'` in that the `A` argument is explicit, which is necessary to make Lean show the notation in the goal state.Q2Presentation.Induction.tChildQ2Presentation.Induction.tChild {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Subgroup (Q2Presentation.Induction.XRZero.xrChild chief K).fst.YThe child `T`-layer: `T' = TAmb/Φ(K) ≤ B`.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactordef Q2Presentation.Induction.tCoverCollapse {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)) : (Q2Presentation.Lifting.scalarCoverTargetQ2Presentation.Lifting.scalarCoverTarget {Yt : Q2Presentation.BoundaryFramedTarget} [Finite Yt.Y] (E : Q2Presentation.Lifting.ElementaryKernel Yt) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E)) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals E) : Q2Presentation.BoundaryFramedTarget**The scalar pushout target** `B_λ = Y/ker λ` as a framed target (same `H`, `E`, frame; `eq:targettower` refined by l.4219–4223).(Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel** (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))hinvlam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)).YQ2Presentation.BoundaryFramedTarget.Y (self : Q2Presentation.BoundaryFramedTarget) : TypeThe finite target group `Y`.⧸HasQuotient.Quotient.{u, v} (A : outParam (Type u)) {B : Type v} [self : HasQuotient A B] : B → Type (max u v)`HasQuotient.Quotient A b` (denoted as `A ⧸ b`) is the quotient of the type `A` by `b`. This differs from `HasQuotient.quotient'` in that the `A` argument is explicit, which is necessary to make Lean show the notation in the goal state.Q2Presentation.Induction.tCoverQ2Presentation.Induction.tCover {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) : Subgroup (Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).YThe `T`-preimage in the cover: `T̃ = TAmb·(ker λ)/(ker λ) ≤ B_λ`.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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)≃*MulEquiv.{u_9, u_10} (M : Type u_9) (N : Type u_10) [Mul M] [Mul N] : Type (max u_10 u_9)`MulEquiv α β` is the type of an equiv `α ≃ β` which preserves multiplication.(Q2Presentation.Induction.XRZero.xrChildQ2Presentation.Induction.XRZero.xrChild {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPairThe `𝒳_R = 0` child: the quotient framed pair at `N = Φ`-layer.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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`.⧸HasQuotient.Quotient.{u, v} (A : outParam (Type u)) {B : Type v} [self : HasQuotient A B] : B → Type (max u v)`HasQuotient.Quotient A b` (denoted as `A ⧸ b`) is the quotient of the type `A` by `b`. This differs from `HasQuotient.quotient'` in that the `A` argument is explicit, which is necessary to make Lean show the notation in the goal state.Q2Presentation.Induction.tChildQ2Presentation.Induction.tChild {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Subgroup (Q2Presentation.Induction.XRZero.xrChild chief K).fst.YThe child `T`-layer: `T' = TAmb/Φ(K) ≤ B`.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor**`B_λ ⧸ T̃ ≃* B ⧸ T'`**: the cover of `B/T` seen from the cover — the target of the zero-edge descent (`lem:radicaledge` step 7).
Proved in §8 of the paper. Ingredients: Theorem 5.7.
-
Q2Presentation.Induction.centralCover_candidateFrattiniAffineFiberPartition_from_scalarFrattiniRoute41[complete] -
Q2Presentation.Induction.centralCover_candidateLiftFibers[complete] -
Q2Presentation.Induction.framedCount_eq_zR_of_torsorDecomp[complete] -
Q2Presentation.Induction.fibHom_reads_eq[complete] -
Q2Presentation.Induction.XRZero.sec7_xrzero_cochainData[complete] -
Q2Presentation.Induction.btLiftHom[complete] -
Q2Presentation.Induction.edgeZ1EquivBtLift[complete] -
Q2Presentation.Induction.descLiftableWeak[complete] -
Q2Presentation.Induction.weakZ1_tChild_card_gammaA[complete] -
Q2Presentation.Induction.weakZ1_vLayer_card_gammaA[complete] -
Q2Presentation.Induction.pinET[complete] -
Q2Presentation.Induction.weakLift[complete] -
Q2Presentation.Induction.EdgeAffineLifting[complete] -
Q2Presentation.Lifting.lift_torsor_card[complete]
Lemma 8.7 of the paper (Affine T-lifting equation).
Choose the splitting B/T\cong V\rtimes C above and let
e\in H^2(C,T)
be the class obtained by pulling B\to V\rtimes C back along the zero section
C\to V\rtimes C. For a lower exact-image map
\rho:\Gamma\twoheadrightarrow C, a class
c\in H^1_{\Gamma,\rho}(V)
is the V-coordinate of an actual M-lift if and only if
\partial_{\Gamma,\rho}(c)=\rho^*e \quad\text{in }H^2_{\Gamma,\rho}(T).
For every such class, the number of raw lifts above it is
\mu=|B^1_{\Gamma,\rho}(V)|\,|Z^1_{\Gamma,\rho}(T)|,
which is independent of \rho and has the same value on the two sources.
Lean code for Lemma8.7●14 declarations
Associated Lean declarations
-
Q2Presentation.Induction.centralCover_candidateFrattiniAffineFiberPartition_from_scalarFrattiniRoute41[complete]
-
Q2Presentation.Induction.centralCover_candidateLiftFibers[complete]
-
Q2Presentation.Induction.framedCount_eq_zR_of_torsorDecomp[complete]
-
Q2Presentation.Induction.fibHom_reads_eq[complete]
-
Q2Presentation.Induction.XRZero.sec7_xrzero_cochainData[complete]
-
Q2Presentation.Induction.btLiftHom[complete]
-
Q2Presentation.Induction.edgeZ1EquivBtLift[complete]
-
Q2Presentation.Induction.descLiftableWeak[complete]
-
Q2Presentation.Induction.weakZ1_tChild_card_gammaA[complete]
-
Q2Presentation.Induction.weakZ1_vLayer_card_gammaA[complete]
-
Q2Presentation.Induction.pinET[complete]
-
Q2Presentation.Induction.weakLift[complete]
-
Q2Presentation.Induction.EdgeAffineLifting[complete]
-
Q2Presentation.Lifting.lift_torsor_card[complete]
-
Q2Presentation.Induction.centralCover_candidateFrattiniAffineFiberPartition_from_scalarFrattiniRoute41[complete] -
Q2Presentation.Induction.centralCover_candidateLiftFibers[complete] -
Q2Presentation.Induction.framedCount_eq_zR_of_torsorDecomp[complete] -
Q2Presentation.Induction.fibHom_reads_eq[complete] -
Q2Presentation.Induction.XRZero.sec7_xrzero_cochainData[complete] -
Q2Presentation.Induction.btLiftHom[complete] -
Q2Presentation.Induction.edgeZ1EquivBtLift[complete] -
Q2Presentation.Induction.descLiftableWeak[complete] -
Q2Presentation.Induction.weakZ1_tChild_card_gammaA[complete] -
Q2Presentation.Induction.weakZ1_vLayer_card_gammaA[complete] -
Q2Presentation.Induction.pinET[complete] -
Q2Presentation.Induction.weakLift[complete] -
Q2Presentation.Induction.EdgeAffineLifting[complete] -
Q2Presentation.Lifting.lift_torsor_card[complete]
-
theoremdefined in Q2Presentation/Induction/CandidateScalarFrattiniRoute41Proofs.leancomplete
theorem Q2Presentation.Induction.centralCover_candidateFrattiniAffineFiberPartition_from_scalarFrattiniRoute41 {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|`.} (BQ2Presentation.Induction.MinimalBlock p: Q2Presentation.Induction.MinimalBlockQ2Presentation.Induction.MinimalBlock (p : Q2Presentation.Induction.FramedPair) : Type 1**The §7 minimal non-scalar block.** Source-uniform module-level data of the manuscript tower (`eq:targettower`), with the deep group/representation inputs of `lem:simplehead`/`lem:collapse`/`prop:simpleheaddet` isolated as documented fields.pQ2Presentation.Induction.FramedPair) (TQ2Presentation.Induction.CentralCoverElementaryQuotientTowerData B: Q2Presentation.Induction.CentralCoverElementaryQuotientTowerDataQ2Presentation.Induction.CentralCoverElementaryQuotientTowerData {p : Q2Presentation.Induction.FramedPair} (B : Q2Presentation.Induction.MinimalBlock p) : Type 1A realized elementary quotient tower for `eq:targettower`. This is the missing target-side finite group datum behind the lower term in `eq:Mstage`: the middle quotient `B = Y/R`, the lower quotient `C = Y/K`, and the map `B -> C`. The cardinal equations record the two quotient steps in a form that proves strict decrease. The current `MinimalBlock` supplies the abstract modules, but not this realized quotient tower.BQ2Presentation.Induction.MinimalBlock p) (DQ2Presentation.Induction.CentralCoverCandidateMiddleRLiftObstructionMapData B T: Q2Presentation.Induction.CentralCoverCandidateMiddleRLiftObstructionMapDataQ2Presentation.Induction.CentralCoverCandidateMiddleRLiftObstructionMapData {p : Q2Presentation.Induction.FramedPair} (B : Q2Presentation.Induction.MinimalBlock p) (T : Q2Presentation.Induction.CentralCoverElementaryQuotientTowerData B) : TypeCandidate `R`-lift obstruction map on the canonical middle exact-image index. The index is theorem-level: `centralCover_candidateMiddleExactImageIndexBaseData B T` is the finite set of middle boundary-framed exact-image maps (`def:Xgamma`). The residual content is only the semantic `R`-valued obstruction evaluation of `lem:obstructionseparation` on that index.BQ2Presentation.Induction.MinimalBlock pTQ2Presentation.Induction.CentralCoverElementaryQuotientTowerData B) : NonemptyNonempty.{u} (α : Sort u) : Prop`Nonempty α` is a typeclass that says that `α` is not an empty type, that is, there exists an element in the type. It differs from `Inhabited α` in that `Nonempty α` is a `Prop`, which means that it does not actually carry an element of `α`, only a proof that *there exists* such an element. Given `Nonempty α`, you can construct an element of `α` *nonconstructively* using `Classical.choice`.(Q2Presentation.Induction.CentralCoverCandidateFrattiniExactImageSurjectivityDataQ2Presentation.Induction.CentralCoverCandidateFrattiniExactImageSurjectivityData {p : Q2Presentation.Induction.FramedPair} (B : Q2Presentation.Induction.MinimalBlock p) (T : Q2Presentation.Induction.CentralCoverElementaryQuotientTowerData B) (O : Q2Presentation.Induction.CentralCoverSourceObstructionData B Q2Presentation.Induction.centralCoverCandidateSource) (Z : Q2Presentation.Induction.CentralCoverSourceCocycleData B) (F : Q2Presentation.Induction.CentralCoverSourceLiftFibers B Q2Presentation.Induction.centralCoverCandidateSource O Z) : TypeFrattini exact-image surjectivity packet. This is the remaining exact-image content of `prop:finalfourier`: the unobstructed affine lift fibres partition the top exact-image maps, and the Frattini identity `R = Phi(K)` makes every unobstructed final `R`-lift surjective onto the top target.BQ2Presentation.Induction.MinimalBlock pTQ2Presentation.Induction.CentralCoverElementaryQuotientTowerData BDQ2Presentation.Induction.CentralCoverCandidateMiddleRLiftObstructionMapData B T.obstructionIndexToBaseMapDataQ2Presentation.Induction.CentralCoverCandidateMiddleRLiftObstructionMapData.obstructionIndexToBaseMapData {p : Q2Presentation.Induction.FramedPair} {B : Q2Presentation.Induction.MinimalBlock p} {T : Q2Presentation.Induction.CentralCoverElementaryQuotientTowerData B} (D : Q2Presentation.Induction.CentralCoverCandidateMiddleRLiftObstructionMapData B T) : Q2Presentation.Induction.CentralCoverCandidateObstructionIndexToBaseMapData B TReassemble the obstruction-index-to-base packet. Since the chosen index is the middle exact-image source itself, the forgetful map is the canonical one already stored in `centralCover_candidateMiddleExactImageIndexBaseData`..OQ2Presentation.Induction.CentralCoverCandidateObstructionIndexToBaseMapData.O {p : Q2Presentation.Induction.FramedPair} {B : Q2Presentation.Induction.MinimalBlock p} {T : Q2Presentation.Induction.CentralCoverElementaryQuotientTowerData B} (self : Q2Presentation.Induction.CentralCoverCandidateObstructionIndexToBaseMapData B T) : Q2Presentation.Induction.CentralCoverSourceObstructionData B Q2Presentation.Induction.centralCoverCandidateSourceDQ2Presentation.Induction.CentralCoverCandidateMiddleRLiftObstructionMapData B T.affineFiberTorsorDataQ2Presentation.Induction.CentralCoverCandidateMiddleRLiftObstructionMapData.affineFiberTorsorData {p : Q2Presentation.Induction.FramedPair} {B : Q2Presentation.Induction.MinimalBlock p} {T : Q2Presentation.Induction.CentralCoverElementaryQuotientTowerData B} (D : Q2Presentation.Induction.CentralCoverCandidateMiddleRLiftObstructionMapData B T) : Q2Presentation.Induction.CentralCoverCandidateAffineFiberTorsorData B D.obstructionIndexToBaseMapData.OThe canonical affine-fibre torsor attached to the semantic obstruction map. This is theorem-level once the obstruction datum has been fixed..ZQ2Presentation.Induction.CentralCoverCandidateAffineFiberTorsorData.Z {p : Q2Presentation.Induction.FramedPair} {B : Q2Presentation.Induction.MinimalBlock p} {O : Q2Presentation.Induction.CentralCoverSourceObstructionData B Q2Presentation.Induction.centralCoverCandidateSource} (self : Q2Presentation.Induction.CentralCoverCandidateAffineFiberTorsorData B O) : Q2Presentation.Induction.CentralCoverSourceCocycleData BDQ2Presentation.Induction.CentralCoverCandidateMiddleRLiftObstructionMapData B T.affineFiberTorsorDataQ2Presentation.Induction.CentralCoverCandidateMiddleRLiftObstructionMapData.affineFiberTorsorData {p : Q2Presentation.Induction.FramedPair} {B : Q2Presentation.Induction.MinimalBlock p} {T : Q2Presentation.Induction.CentralCoverElementaryQuotientTowerData B} (D : Q2Presentation.Induction.CentralCoverCandidateMiddleRLiftObstructionMapData B T) : Q2Presentation.Induction.CentralCoverCandidateAffineFiberTorsorData B D.obstructionIndexToBaseMapData.OThe canonical affine-fibre torsor attached to the semantic obstruction map. This is theorem-level once the obstruction datum has been fixed..FQ2Presentation.Induction.CentralCoverCandidateAffineFiberTorsorData.F {p : Q2Presentation.Induction.FramedPair} {B : Q2Presentation.Induction.MinimalBlock p} {O : Q2Presentation.Induction.CentralCoverSourceObstructionData B Q2Presentation.Induction.centralCoverCandidateSource} (self : Q2Presentation.Induction.CentralCoverCandidateAffineFiberTorsorData B O) : Q2Presentation.Induction.CentralCoverSourceLiftFibers B Q2Presentation.Induction.centralCoverCandidateSource O self.Z)theorem Q2Presentation.Induction.centralCover_candidateFrattiniAffineFiberPartition_from_scalarFrattiniRoute41 {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|`.} (BQ2Presentation.Induction.MinimalBlock p: Q2Presentation.Induction.MinimalBlockQ2Presentation.Induction.MinimalBlock (p : Q2Presentation.Induction.FramedPair) : Type 1**The §7 minimal non-scalar block.** Source-uniform module-level data of the manuscript tower (`eq:targettower`), with the deep group/representation inputs of `lem:simplehead`/`lem:collapse`/`prop:simpleheaddet` isolated as documented fields.pQ2Presentation.Induction.FramedPair) (TQ2Presentation.Induction.CentralCoverElementaryQuotientTowerData B: Q2Presentation.Induction.CentralCoverElementaryQuotientTowerDataQ2Presentation.Induction.CentralCoverElementaryQuotientTowerData {p : Q2Presentation.Induction.FramedPair} (B : Q2Presentation.Induction.MinimalBlock p) : Type 1A realized elementary quotient tower for `eq:targettower`. This is the missing target-side finite group datum behind the lower term in `eq:Mstage`: the middle quotient `B = Y/R`, the lower quotient `C = Y/K`, and the map `B -> C`. The cardinal equations record the two quotient steps in a form that proves strict decrease. The current `MinimalBlock` supplies the abstract modules, but not this realized quotient tower.BQ2Presentation.Induction.MinimalBlock p) (DQ2Presentation.Induction.CentralCoverCandidateMiddleRLiftObstructionMapData B T: Q2Presentation.Induction.CentralCoverCandidateMiddleRLiftObstructionMapDataQ2Presentation.Induction.CentralCoverCandidateMiddleRLiftObstructionMapData {p : Q2Presentation.Induction.FramedPair} (B : Q2Presentation.Induction.MinimalBlock p) (T : Q2Presentation.Induction.CentralCoverElementaryQuotientTowerData B) : TypeCandidate `R`-lift obstruction map on the canonical middle exact-image index. The index is theorem-level: `centralCover_candidateMiddleExactImageIndexBaseData B T` is the finite set of middle boundary-framed exact-image maps (`def:Xgamma`). The residual content is only the semantic `R`-valued obstruction evaluation of `lem:obstructionseparation` on that index.BQ2Presentation.Induction.MinimalBlock pTQ2Presentation.Induction.CentralCoverElementaryQuotientTowerData B) : NonemptyNonempty.{u} (α : Sort u) : Prop`Nonempty α` is a typeclass that says that `α` is not an empty type, that is, there exists an element in the type. It differs from `Inhabited α` in that `Nonempty α` is a `Prop`, which means that it does not actually carry an element of `α`, only a proof that *there exists* such an element. Given `Nonempty α`, you can construct an element of `α` *nonconstructively* using `Classical.choice`.(Q2Presentation.Induction.CentralCoverCandidateFrattiniExactImageSurjectivityDataQ2Presentation.Induction.CentralCoverCandidateFrattiniExactImageSurjectivityData {p : Q2Presentation.Induction.FramedPair} (B : Q2Presentation.Induction.MinimalBlock p) (T : Q2Presentation.Induction.CentralCoverElementaryQuotientTowerData B) (O : Q2Presentation.Induction.CentralCoverSourceObstructionData B Q2Presentation.Induction.centralCoverCandidateSource) (Z : Q2Presentation.Induction.CentralCoverSourceCocycleData B) (F : Q2Presentation.Induction.CentralCoverSourceLiftFibers B Q2Presentation.Induction.centralCoverCandidateSource O Z) : TypeFrattini exact-image surjectivity packet. This is the remaining exact-image content of `prop:finalfourier`: the unobstructed affine lift fibres partition the top exact-image maps, and the Frattini identity `R = Phi(K)` makes every unobstructed final `R`-lift surjective onto the top target.BQ2Presentation.Induction.MinimalBlock pTQ2Presentation.Induction.CentralCoverElementaryQuotientTowerData BDQ2Presentation.Induction.CentralCoverCandidateMiddleRLiftObstructionMapData B T.obstructionIndexToBaseMapDataQ2Presentation.Induction.CentralCoverCandidateMiddleRLiftObstructionMapData.obstructionIndexToBaseMapData {p : Q2Presentation.Induction.FramedPair} {B : Q2Presentation.Induction.MinimalBlock p} {T : Q2Presentation.Induction.CentralCoverElementaryQuotientTowerData B} (D : Q2Presentation.Induction.CentralCoverCandidateMiddleRLiftObstructionMapData B T) : Q2Presentation.Induction.CentralCoverCandidateObstructionIndexToBaseMapData B TReassemble the obstruction-index-to-base packet. Since the chosen index is the middle exact-image source itself, the forgetful map is the canonical one already stored in `centralCover_candidateMiddleExactImageIndexBaseData`..OQ2Presentation.Induction.CentralCoverCandidateObstructionIndexToBaseMapData.O {p : Q2Presentation.Induction.FramedPair} {B : Q2Presentation.Induction.MinimalBlock p} {T : Q2Presentation.Induction.CentralCoverElementaryQuotientTowerData B} (self : Q2Presentation.Induction.CentralCoverCandidateObstructionIndexToBaseMapData B T) : Q2Presentation.Induction.CentralCoverSourceObstructionData B Q2Presentation.Induction.centralCoverCandidateSourceDQ2Presentation.Induction.CentralCoverCandidateMiddleRLiftObstructionMapData B T.affineFiberTorsorDataQ2Presentation.Induction.CentralCoverCandidateMiddleRLiftObstructionMapData.affineFiberTorsorData {p : Q2Presentation.Induction.FramedPair} {B : Q2Presentation.Induction.MinimalBlock p} {T : Q2Presentation.Induction.CentralCoverElementaryQuotientTowerData B} (D : Q2Presentation.Induction.CentralCoverCandidateMiddleRLiftObstructionMapData B T) : Q2Presentation.Induction.CentralCoverCandidateAffineFiberTorsorData B D.obstructionIndexToBaseMapData.OThe canonical affine-fibre torsor attached to the semantic obstruction map. This is theorem-level once the obstruction datum has been fixed..ZQ2Presentation.Induction.CentralCoverCandidateAffineFiberTorsorData.Z {p : Q2Presentation.Induction.FramedPair} {B : Q2Presentation.Induction.MinimalBlock p} {O : Q2Presentation.Induction.CentralCoverSourceObstructionData B Q2Presentation.Induction.centralCoverCandidateSource} (self : Q2Presentation.Induction.CentralCoverCandidateAffineFiberTorsorData B O) : Q2Presentation.Induction.CentralCoverSourceCocycleData BDQ2Presentation.Induction.CentralCoverCandidateMiddleRLiftObstructionMapData B T.affineFiberTorsorDataQ2Presentation.Induction.CentralCoverCandidateMiddleRLiftObstructionMapData.affineFiberTorsorData {p : Q2Presentation.Induction.FramedPair} {B : Q2Presentation.Induction.MinimalBlock p} {T : Q2Presentation.Induction.CentralCoverElementaryQuotientTowerData B} (D : Q2Presentation.Induction.CentralCoverCandidateMiddleRLiftObstructionMapData B T) : Q2Presentation.Induction.CentralCoverCandidateAffineFiberTorsorData B D.obstructionIndexToBaseMapData.OThe canonical affine-fibre torsor attached to the semantic obstruction map. This is theorem-level once the obstruction datum has been fixed..FQ2Presentation.Induction.CentralCoverCandidateAffineFiberTorsorData.F {p : Q2Presentation.Induction.FramedPair} {B : Q2Presentation.Induction.MinimalBlock p} {O : Q2Presentation.Induction.CentralCoverSourceObstructionData B Q2Presentation.Induction.centralCoverCandidateSource} (self : Q2Presentation.Induction.CentralCoverCandidateAffineFiberTorsorData B O) : Q2Presentation.Induction.CentralCoverSourceLiftFibers B Q2Presentation.Induction.centralCoverCandidateSource O self.Z)Route41 Frattini exact-image partition through the base/fibre coordinate actual closer packets. Manuscript anchor: Section 8, pages 43--49, especially `lem:affinelifting` and `prop:finalfourier`: top exact-image maps are identified with unobstructed middle base points together with affine `R`-lift coordinates.
-
theoremdefined in Q2Presentation/Induction/CentralCoverFineResiduals.leancomplete
theorem Q2Presentation.Induction.centralCover_candidateLiftFibers {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|`.} (BQ2Presentation.Induction.MinimalBlock p: Q2Presentation.Induction.MinimalBlockQ2Presentation.Induction.MinimalBlock (p : Q2Presentation.Induction.FramedPair) : Type 1**The §7 minimal non-scalar block.** Source-uniform module-level data of the manuscript tower (`eq:targettower`), with the deep group/representation inputs of `lem:simplehead`/`lem:collapse`/`prop:simpleheaddet` isolated as documented fields.pQ2Presentation.Induction.FramedPair) (OQ2Presentation.Induction.CentralCoverSourceObstructionData B (Q2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GammaA p.fst p.snd): Q2Presentation.Induction.CentralCoverSourceObstructionDataQ2Presentation.Induction.CentralCoverSourceObstructionData {p : Q2Presentation.Induction.FramedPair} (B : Q2Presentation.Induction.MinimalBlock p) (S : Type) : Type 1Source-specific exact-image obstruction index and obstruction map. Manuscript anchors: `def:Xgamma`, `lem:obstructionseparation`, and the `o_R : X_Gamma(B) -> O_R` input to `prop:finalfourier`.BQ2Presentation.Induction.MinimalBlock p(Q2Presentation.boundaryFramedSurjQ2Presentation.boundaryFramedSurj {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (Yt : Q2Presentation.BoundaryFramedTarget) (F : Q2Presentation.BoundaryFrame Yt) : TypeThe **boundary-framed surjections** `e_Γ^β(𝒴)` (manuscript `eq:eGamma`): the continuous surjections `f : Γ ↠ Y` whose induced map to `H × E` is the prescribed `β ∘ b_Γ`, i.e. `q_Y ∘ f = β ∘ b_Γ`. This is the subtype counted in Theorem 4.2; its cardinality is `e_Γ^β(𝒴)`.Q2Presentation.boundaryPackage_GammaAQ2Presentation.boundaryPackage_GammaA : Q2Presentation.BoundaryPackage Q2Presentation.GammaA**The candidate boundary package** (manuscript Prop 3.14, `prop:compatiblemarking`; plan Turn 4 §6). The Stage-C data of `Γ_A`: the common tame quotient `gammaTameMap`, the maximal pro-`2` quotient `p : Γ_A ⟶ Π`, and the common unramified character `ν = gammaTameMap ≫ ν_t`, through which both factor.pQ2Presentation.Induction.FramedPair.fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.pQ2Presentation.Induction.FramedPair.sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.)) (ZQ2Presentation.Induction.CentralCoverSourceCocycleData B: Q2Presentation.Induction.CentralCoverSourceCocycleDataQ2Presentation.Induction.CentralCoverSourceCocycleData {p : Q2Presentation.Induction.FramedPair} (B : Q2Presentation.Induction.MinimalBlock p) : Type 1Source-specific `Z^1_Gamma(R)` group with the common size `z_R`. Manuscript anchors: `lem:affinelifting`, `eq:mumultiplicity`, and the source-interface lift-multiplicity comparison.BQ2Presentation.Induction.MinimalBlock p) : NonemptyNonempty.{u} (α : Sort u) : Prop`Nonempty α` is a typeclass that says that `α` is not an empty type, that is, there exists an element in the type. It differs from `Inhabited α` in that `Nonempty α` is a `Prop`, which means that it does not actually carry an element of `α`, only a proof that *there exists* such an element. Given `Nonempty α`, you can construct an element of `α` *nonconstructively* using `Classical.choice`.(Q2Presentation.Induction.CentralCoverSourceLiftFibersQ2Presentation.Induction.CentralCoverSourceLiftFibers {p : Q2Presentation.Induction.FramedPair} (B : Q2Presentation.Induction.MinimalBlock p) (S : Type) (O : Q2Presentation.Induction.CentralCoverSourceObstructionData B S) (Z : Q2Presentation.Induction.CentralCoverSourceCocycleData B) : Type 1Lift fibres over unobstructed points, before partitioning the global boundary-framed surjection set. Manuscript anchor: `lem:affinelifting`.BQ2Presentation.Induction.MinimalBlock p(Q2Presentation.boundaryFramedSurjQ2Presentation.boundaryFramedSurj {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (Yt : Q2Presentation.BoundaryFramedTarget) (F : Q2Presentation.BoundaryFrame Yt) : TypeThe **boundary-framed surjections** `e_Γ^β(𝒴)` (manuscript `eq:eGamma`): the continuous surjections `f : Γ ↠ Y` whose induced map to `H × E` is the prescribed `β ∘ b_Γ`, i.e. `q_Y ∘ f = β ∘ b_Γ`. This is the subtype counted in Theorem 4.2; its cardinality is `e_Γ^β(𝒴)`.Q2Presentation.boundaryPackage_GammaAQ2Presentation.boundaryPackage_GammaA : Q2Presentation.BoundaryPackage Q2Presentation.GammaA**The candidate boundary package** (manuscript Prop 3.14, `prop:compatiblemarking`; plan Turn 4 §6). The Stage-C data of `Γ_A`: the common tame quotient `gammaTameMap`, the maximal pro-`2` quotient `p : Γ_A ⟶ Π`, and the common unramified character `ν = gammaTameMap ≫ ν_t`, through which both factor.pQ2Presentation.Induction.FramedPair.fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.pQ2Presentation.Induction.FramedPair.sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.) OQ2Presentation.Induction.CentralCoverSourceObstructionData B (Q2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GammaA p.fst p.snd)ZQ2Presentation.Induction.CentralCoverSourceCocycleData B)theorem Q2Presentation.Induction.centralCover_candidateLiftFibers {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|`.} (BQ2Presentation.Induction.MinimalBlock p: Q2Presentation.Induction.MinimalBlockQ2Presentation.Induction.MinimalBlock (p : Q2Presentation.Induction.FramedPair) : Type 1**The §7 minimal non-scalar block.** Source-uniform module-level data of the manuscript tower (`eq:targettower`), with the deep group/representation inputs of `lem:simplehead`/`lem:collapse`/`prop:simpleheaddet` isolated as documented fields.pQ2Presentation.Induction.FramedPair) (OQ2Presentation.Induction.CentralCoverSourceObstructionData B (Q2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GammaA p.fst p.snd): Q2Presentation.Induction.CentralCoverSourceObstructionDataQ2Presentation.Induction.CentralCoverSourceObstructionData {p : Q2Presentation.Induction.FramedPair} (B : Q2Presentation.Induction.MinimalBlock p) (S : Type) : Type 1Source-specific exact-image obstruction index and obstruction map. Manuscript anchors: `def:Xgamma`, `lem:obstructionseparation`, and the `o_R : X_Gamma(B) -> O_R` input to `prop:finalfourier`.BQ2Presentation.Induction.MinimalBlock p(Q2Presentation.boundaryFramedSurjQ2Presentation.boundaryFramedSurj {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (Yt : Q2Presentation.BoundaryFramedTarget) (F : Q2Presentation.BoundaryFrame Yt) : TypeThe **boundary-framed surjections** `e_Γ^β(𝒴)` (manuscript `eq:eGamma`): the continuous surjections `f : Γ ↠ Y` whose induced map to `H × E` is the prescribed `β ∘ b_Γ`, i.e. `q_Y ∘ f = β ∘ b_Γ`. This is the subtype counted in Theorem 4.2; its cardinality is `e_Γ^β(𝒴)`.Q2Presentation.boundaryPackage_GammaAQ2Presentation.boundaryPackage_GammaA : Q2Presentation.BoundaryPackage Q2Presentation.GammaA**The candidate boundary package** (manuscript Prop 3.14, `prop:compatiblemarking`; plan Turn 4 §6). The Stage-C data of `Γ_A`: the common tame quotient `gammaTameMap`, the maximal pro-`2` quotient `p : Γ_A ⟶ Π`, and the common unramified character `ν = gammaTameMap ≫ ν_t`, through which both factor.pQ2Presentation.Induction.FramedPair.fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.pQ2Presentation.Induction.FramedPair.sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.)) (ZQ2Presentation.Induction.CentralCoverSourceCocycleData B: Q2Presentation.Induction.CentralCoverSourceCocycleDataQ2Presentation.Induction.CentralCoverSourceCocycleData {p : Q2Presentation.Induction.FramedPair} (B : Q2Presentation.Induction.MinimalBlock p) : Type 1Source-specific `Z^1_Gamma(R)` group with the common size `z_R`. Manuscript anchors: `lem:affinelifting`, `eq:mumultiplicity`, and the source-interface lift-multiplicity comparison.BQ2Presentation.Induction.MinimalBlock p) : NonemptyNonempty.{u} (α : Sort u) : Prop`Nonempty α` is a typeclass that says that `α` is not an empty type, that is, there exists an element in the type. It differs from `Inhabited α` in that `Nonempty α` is a `Prop`, which means that it does not actually carry an element of `α`, only a proof that *there exists* such an element. Given `Nonempty α`, you can construct an element of `α` *nonconstructively* using `Classical.choice`.(Q2Presentation.Induction.CentralCoverSourceLiftFibersQ2Presentation.Induction.CentralCoverSourceLiftFibers {p : Q2Presentation.Induction.FramedPair} (B : Q2Presentation.Induction.MinimalBlock p) (S : Type) (O : Q2Presentation.Induction.CentralCoverSourceObstructionData B S) (Z : Q2Presentation.Induction.CentralCoverSourceCocycleData B) : Type 1Lift fibres over unobstructed points, before partitioning the global boundary-framed surjection set. Manuscript anchor: `lem:affinelifting`.BQ2Presentation.Induction.MinimalBlock p(Q2Presentation.boundaryFramedSurjQ2Presentation.boundaryFramedSurj {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (Yt : Q2Presentation.BoundaryFramedTarget) (F : Q2Presentation.BoundaryFrame Yt) : TypeThe **boundary-framed surjections** `e_Γ^β(𝒴)` (manuscript `eq:eGamma`): the continuous surjections `f : Γ ↠ Y` whose induced map to `H × E` is the prescribed `β ∘ b_Γ`, i.e. `q_Y ∘ f = β ∘ b_Γ`. This is the subtype counted in Theorem 4.2; its cardinality is `e_Γ^β(𝒴)`.Q2Presentation.boundaryPackage_GammaAQ2Presentation.boundaryPackage_GammaA : Q2Presentation.BoundaryPackage Q2Presentation.GammaA**The candidate boundary package** (manuscript Prop 3.14, `prop:compatiblemarking`; plan Turn 4 §6). The Stage-C data of `Γ_A`: the common tame quotient `gammaTameMap`, the maximal pro-`2` quotient `p : Γ_A ⟶ Π`, and the common unramified character `ν = gammaTameMap ≫ ν_t`, through which both factor.pQ2Presentation.Induction.FramedPair.fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.pQ2Presentation.Induction.FramedPair.sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.) OQ2Presentation.Induction.CentralCoverSourceObstructionData B (Q2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GammaA p.fst p.snd)ZQ2Presentation.Induction.CentralCoverSourceCocycleData B)Candidate lift fibres can be populated by the regular torsor under the chosen cocycle group. This discharges the affine-fibre part of `lem:affinelifting`; the remaining exact-image content is the partition/cardinality statement below.
-
theoremdefined in Q2Presentation/Induction/CentralCovers.leancomplete
theorem Q2Presentation.Induction.framedCount_eq_zR_of_torsorDecomp {S
TypeUType: TypeA type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`.} [FiniteFinite.{u_3} (α : Sort u_3) : PropA type is `Finite` if it is in bijective correspondence to some `Fin n`. This is similar to `Fintype`, but `Finite` is a proposition rather than data. A particular benefit to this is that `Finite` instances are definitionally equal to one another (due to proof irrelevance) rather than being merely propositionally equal, and, furthermore, `Finite` instances generally avoid the need for `Decidable` instances. One other notable difference is that `Finite` allows there to be `Finite p` instances for all `p : Prop`, which is not allowed by `Fintype` due to universe constraints. An application of this is that `Finite (x ∈ s → β x)` follows from the general instance for pi types, assuming `[∀ x, Finite (β x)]`. Implementation note: this is a reason `Finite α` is not defined as `Nonempty (Fintype α)`. Every `Fintype` instance provides a `Finite` instance via `Finite.of_fintype`. Conversely, one can noncomputably create a `Fintype` instance from a `Finite` instance via `Fintype.ofFinite`. In a proof one might write ```lean have := Fintype.ofFinite α ``` to obtain such an instance. Do not write noncomputable `Fintype` instances; instead write `Finite` instances and use this `Fintype.ofFinite` interface. The `Fintype` instances should be relied upon to be computable for evaluation purposes. Theorems should use `Finite` instead of `Fintype`, unless definitions in the theorem statement require `Fintype`. Definitions should prefer `Finite` as well, unless it is important that the definitions are meant to be computable in the reduction or `#eval` sense.UType] (zℕ: ℕNat : TypeThe natural numbers, starting at zero. This type is special-cased by both the kernel and the compiler, and overridden with an efficient implementation. Both use a fast arbitrary-precision arithmetic library (usually [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.) (ZType: TypeA type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`.) [AddGroupAddGroup.{u} (A : Type u) : Type uAn `AddGroup` is an `AddMonoid` with a unary `-` satisfying `-a + a = 0`. There is also a binary operation `-` such that `a - b = a + -b`, with a default so that `a - b = a + -b` holds by definition. Use `AddGroup.ofLeftAxioms` or `AddGroup.ofRightAxioms` to define an additive group structure on a type with the minimum proof obligations.ZType] (hZNat.card Z = z: Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number. If `α` is infinite, `Nat.card α = 0`.ZType=Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`. We use `a = b` as notation for `Eq a b`. A fundamental property of equality is that it is an equivalence relation. ``` variable (α : Type) (a b c d : α) variable (hab : a = b) (hcb : c = b) (hcd : c = d) example : a = d := Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd ``` Equality is much more than an equivalence relation, however. It has the important property that every assertion respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value. That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`. Example: ``` example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := Eq.subst h1 h2 example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := h1 ▸ h2 ``` The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`. For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality) Conventions for notations in identifiers: * The recommended spelling of `=` in identifiers is `eq`.zℕ) (LiftU → Type: UType→ TypeA type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`.) [(uU: UType) → AddTorsorAddTorsor.{u_1, u_2} (G : outParam (Type u_1)) (P : Type u_2) [AddGroup G] : Type (max u_1 u_2)An `AddTorsor G P` gives a structure to the nonempty type `P`, acted on by an `AddGroup G` with a transitive and free action given by the `+ᵥ` operation and a corresponding subtraction given by the `-ᵥ` operation. In the case of a vector space, it is an affine space.ZType(LiftU → TypeuU)] [∀ (uU: UType), FiniteFinite.{u_3} (α : Sort u_3) : PropA type is `Finite` if it is in bijective correspondence to some `Fin n`. This is similar to `Fintype`, but `Finite` is a proposition rather than data. A particular benefit to this is that `Finite` instances are definitionally equal to one another (due to proof irrelevance) rather than being merely propositionally equal, and, furthermore, `Finite` instances generally avoid the need for `Decidable` instances. One other notable difference is that `Finite` allows there to be `Finite p` instances for all `p : Prop`, which is not allowed by `Fintype` due to universe constraints. An application of this is that `Finite (x ∈ s → β x)` follows from the general instance for pi types, assuming `[∀ x, Finite (β x)]`. Implementation note: this is a reason `Finite α` is not defined as `Nonempty (Fintype α)`. Every `Fintype` instance provides a `Finite` instance via `Finite.of_fintype`. Conversely, one can noncomputably create a `Fintype` instance from a `Finite` instance via `Fintype.ofFinite`. In a proof one might write ```lean have := Fintype.ofFinite α ``` to obtain such an instance. Do not write noncomputable `Fintype` instances; instead write `Finite` instances and use this `Fintype.ofFinite` interface. The `Fintype` instances should be relied upon to be computable for evaluation purposes. Theorems should use `Finite` instead of `Fintype`, unless definitions in the theorem statement require `Fintype`. Definitions should prefer `Finite` as well, unless it is important that the definitions are meant to be computable in the reduction or `#eval` sense.(LiftU → TypeuU)] (eS ≃ (u : U) × Lift u: SType≃Equiv.{u_1, u_2} (α : Sort u_1) (β : Sort u_2) : Sort (max (max 1 u_1) u_2)`α ≃ β` is the type of functions from `α → β` with a two-sided inverse.(uU: UType) × LiftU → TypeuU) : Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number. If `α` is infinite, `Nat.card α = 0`.SType=Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`. We use `a = b` as notation for `Eq a b`. A fundamental property of equality is that it is an equivalence relation. ``` variable (α : Type) (a b c d : α) variable (hab : a = b) (hcb : c = b) (hcd : c = d) example : a = d := Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd ``` Equality is much more than an equivalence relation, however. It has the important property that every assertion respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value. That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`. Example: ``` example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := Eq.subst h1 h2 example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := h1 ▸ h2 ``` The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`. For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality) Conventions for notations in identifiers: * The recommended spelling of `=` in identifiers is `eq`.zℕ*HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number. If `α` is infinite, `Nat.card α = 0`.UTypetheorem Q2Presentation.Induction.framedCount_eq_zR_of_torsorDecomp {S
TypeUType: TypeA type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`.} [FiniteFinite.{u_3} (α : Sort u_3) : PropA type is `Finite` if it is in bijective correspondence to some `Fin n`. This is similar to `Fintype`, but `Finite` is a proposition rather than data. A particular benefit to this is that `Finite` instances are definitionally equal to one another (due to proof irrelevance) rather than being merely propositionally equal, and, furthermore, `Finite` instances generally avoid the need for `Decidable` instances. One other notable difference is that `Finite` allows there to be `Finite p` instances for all `p : Prop`, which is not allowed by `Fintype` due to universe constraints. An application of this is that `Finite (x ∈ s → β x)` follows from the general instance for pi types, assuming `[∀ x, Finite (β x)]`. Implementation note: this is a reason `Finite α` is not defined as `Nonempty (Fintype α)`. Every `Fintype` instance provides a `Finite` instance via `Finite.of_fintype`. Conversely, one can noncomputably create a `Fintype` instance from a `Finite` instance via `Fintype.ofFinite`. In a proof one might write ```lean have := Fintype.ofFinite α ``` to obtain such an instance. Do not write noncomputable `Fintype` instances; instead write `Finite` instances and use this `Fintype.ofFinite` interface. The `Fintype` instances should be relied upon to be computable for evaluation purposes. Theorems should use `Finite` instead of `Fintype`, unless definitions in the theorem statement require `Fintype`. Definitions should prefer `Finite` as well, unless it is important that the definitions are meant to be computable in the reduction or `#eval` sense.UType] (zℕ: ℕNat : TypeThe natural numbers, starting at zero. This type is special-cased by both the kernel and the compiler, and overridden with an efficient implementation. Both use a fast arbitrary-precision arithmetic library (usually [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.) (ZType: TypeA type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`.) [AddGroupAddGroup.{u} (A : Type u) : Type uAn `AddGroup` is an `AddMonoid` with a unary `-` satisfying `-a + a = 0`. There is also a binary operation `-` such that `a - b = a + -b`, with a default so that `a - b = a + -b` holds by definition. Use `AddGroup.ofLeftAxioms` or `AddGroup.ofRightAxioms` to define an additive group structure on a type with the minimum proof obligations.ZType] (hZNat.card Z = z: Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number. If `α` is infinite, `Nat.card α = 0`.ZType=Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`. We use `a = b` as notation for `Eq a b`. A fundamental property of equality is that it is an equivalence relation. ``` variable (α : Type) (a b c d : α) variable (hab : a = b) (hcb : c = b) (hcd : c = d) example : a = d := Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd ``` Equality is much more than an equivalence relation, however. It has the important property that every assertion respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value. That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`. Example: ``` example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := Eq.subst h1 h2 example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := h1 ▸ h2 ``` The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`. For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality) Conventions for notations in identifiers: * The recommended spelling of `=` in identifiers is `eq`.zℕ) (LiftU → Type: UType→ TypeA type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`.) [(uU: UType) → AddTorsorAddTorsor.{u_1, u_2} (G : outParam (Type u_1)) (P : Type u_2) [AddGroup G] : Type (max u_1 u_2)An `AddTorsor G P` gives a structure to the nonempty type `P`, acted on by an `AddGroup G` with a transitive and free action given by the `+ᵥ` operation and a corresponding subtraction given by the `-ᵥ` operation. In the case of a vector space, it is an affine space.ZType(LiftU → TypeuU)] [∀ (uU: UType), FiniteFinite.{u_3} (α : Sort u_3) : PropA type is `Finite` if it is in bijective correspondence to some `Fin n`. This is similar to `Fintype`, but `Finite` is a proposition rather than data. A particular benefit to this is that `Finite` instances are definitionally equal to one another (due to proof irrelevance) rather than being merely propositionally equal, and, furthermore, `Finite` instances generally avoid the need for `Decidable` instances. One other notable difference is that `Finite` allows there to be `Finite p` instances for all `p : Prop`, which is not allowed by `Fintype` due to universe constraints. An application of this is that `Finite (x ∈ s → β x)` follows from the general instance for pi types, assuming `[∀ x, Finite (β x)]`. Implementation note: this is a reason `Finite α` is not defined as `Nonempty (Fintype α)`. Every `Fintype` instance provides a `Finite` instance via `Finite.of_fintype`. Conversely, one can noncomputably create a `Fintype` instance from a `Finite` instance via `Fintype.ofFinite`. In a proof one might write ```lean have := Fintype.ofFinite α ``` to obtain such an instance. Do not write noncomputable `Fintype` instances; instead write `Finite` instances and use this `Fintype.ofFinite` interface. The `Fintype` instances should be relied upon to be computable for evaluation purposes. Theorems should use `Finite` instead of `Fintype`, unless definitions in the theorem statement require `Fintype`. Definitions should prefer `Finite` as well, unless it is important that the definitions are meant to be computable in the reduction or `#eval` sense.(LiftU → TypeuU)] (eS ≃ (u : U) × Lift u: SType≃Equiv.{u_1, u_2} (α : Sort u_1) (β : Sort u_2) : Sort (max (max 1 u_1) u_2)`α ≃ β` is the type of functions from `α → β` with a two-sided inverse.(uU: UType) × LiftU → TypeuU) : Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number. If `α` is infinite, `Nat.card α = 0`.SType=Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`. We use `a = b` as notation for `Eq a b`. A fundamental property of equality is that it is an equivalence relation. ``` variable (α : Type) (a b c d : α) variable (hab : a = b) (hcb : c = b) (hcd : c = d) example : a = d := Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd ``` Equality is much more than an equivalence relation, however. It has the important property that every assertion respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value. That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`. Example: ``` example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := Eq.subst h1 h2 example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := h1 ▸ h2 ``` The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`. For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality) Conventions for notations in identifiers: * The recommended spelling of `=` in identifiers is `eq`.zℕ*HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number. If `α` is infinite, `Nat.card α = 0`.UType**The lift-torsor count mechanism, with `Lifting/Duality.lean` scaffolding load-bearing** (`lem:affinelifting`, `eq:mumultiplicity`; `prop:finalfourier`, the proof of `eq:recursionR1`). If a finite set `S` of objects (the boundary-framed surjections onto `Y`) decomposes as the disjoint union, over a finite index `U` (the *unobstructed* exact-image base maps `{x : X_Γ // o_Γ x = 0}`), of per-point lift sets `Lift u` — each a **torsor under a fixed `R`-cocycle group `Z = Z¹_{Γ,ρ}(R)` of cardinality `z_R`** (`Lifting.lift_torsor_card`: a nonempty lift set is a `Z¹(R)`-torsor) — then `#S = z_R · #U`. This is the genuine `realize_Γ` numerator of `prop:finalfourier`, with `Lifting.lift_torsor_card` doing the work. It is applied per source in `realizeA_of`/`realizeQ_of` to the candidate/local decompositions `bijA`/`bijQ` (over `ZA/LiftA`, `ZQ/LiftQ`), the common size `|Z¹(R)| = z_R` being `prop:defduality`/`prop:localduality`, equal for the two sources by `cor:sourceinterface`(i). -
theoremdefined in Q2Presentation/Induction/EdgeAffineDischarge.leancomplete
theorem Q2Presentation.Induction.fibHom_reads_eq {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)) {ΓProfiniteGrp.{0}: ProfiniteGrp.{0}ProfiniteGrp.{u_1} : Type (u_1 + 1)The category of profinite groups. A term of this type consists of a profinite set with a topological group structure.} (BQ2Presentation.BoundaryPackage Γ: Q2Presentation.BoundaryPackageQ2Presentation.BoundaryPackage (Γ : ProfiniteGrp.{0}) : TypeA **boundary package** on a profinite group `Γ`: the uniform Stage-C data of a tame quotient, a maximal pro-`2` quotient, and a common unramified character `ℤ₂` through which both factor (manuscript Prop 3.14, `prop:compatiblemarking`; plan Turn 4 §6). The compatibility `tameMap ≫ ν_t = ν = pro2Map ≫ ν_2` records that the two markings agree on the full unramified coordinate, not merely modulo `2`.ΓProfiniteGrp.{0}) (ZQ2Presentation.Induction.ZeroEdgeDescentData chief K lam hinv: Q2Presentation.Induction.ZeroEdgeDescentDataQ2Presentation.Induction.ZeroEdgeDescentData {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) : Type**The zero-edge descent data** (`eq:descendedclass` l.4037–4045 + `lem:affinelifting` l.4048–4083, as one choice bundle — the §6.5 choice discipline: both R4b keeps take the SAME bundle): * `D`/`hW` — the zero-edge witness (a normal edge complement, P3-U3); the bundle therefore implies `ZeroEdge` (`ZeroEdgeDescentData.zeroEdge`); * `Csec` + `hdisj`/`hsup` — the `lem:transgression` splitting coordinates `B/T' = V ⋊ C` (`Csec` a complement to the `V`-layer); * `gammaK`/`deltaK` — the normalized decomposition data `γ_κ ∈ Z¹(C,V^∨)`, `δ_κ ∈ Z²(C,𝔽₂)` of the descended class, with concrete cocycle laws (dual action `(c·φ)(v) = φ(c⁻¹·v)`); * `eT` — the `lem:affinelifting` class `e ∈ Z²(C,T)` (pullback of `B → V⋊C` along the zero section), twisted cocycle law in the `hzc`-ready orientation; * `mC` — the equivariant-lift correction functions `m_c` of the `κ_q⁰`-model (`eq:mquadratic`/`eq:mcoherent` l.4118–4125, stated against the bilinear factor set `edgeBaseFactor`). The deep pinning identity — that a normalized section cocycle of the descended double cover `descTarget D hW` equals `κ_q⁰-model + Γ_{γ_κ} + inf δ_κ` in the `Csec`-coordinates, and that `eT` is the actual zero-section pullback — is owned by the deferred transgression unit (`btChild_splits`/`zeroEdgeDescentData_nonempty`, design §4.7); until it lands, the coordinated R4b keep must carry that pinning alongside this bundle (same discipline as U7's `¬ZeroEdge` conditioning living on the future keep).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst (Q2Presentation.Induction.cChild chief K).snd: Q2Presentation.boundaryFramedSurjQ2Presentation.boundaryFramedSurj {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (Yt : Q2Presentation.BoundaryFramedTarget) (F : Q2Presentation.BoundaryFrame Yt) : TypeThe **boundary-framed surjections** `e_Γ^β(𝒴)` (manuscript `eq:eGamma`): the continuous surjections `f : Γ ↠ Y` whose induced map to `H × E` is the prescribed `β ∘ b_Γ`, i.e. `q_Y ∘ f = β ∘ b_Γ`. This is the subtype counted in Theorem 4.2; its cardinality is `e_Γ^β(𝒴)`.BQ2Presentation.BoundaryPackage Γ(Q2Presentation.Induction.cChildQ2Presentation.Induction.cChild {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPair**The C-child framed pair** (the carrier of `X_Γ(C)`; manuscript `C = Y/K` via `B/M' ≅ C`, `mChildCollapse`).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.(Q2Presentation.Induction.cChildQ2Presentation.Induction.cChild {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPair**The C-child framed pair** (the carrier of `X_Γ(C)`; manuscript `C = Y/K` via `B/M' ≅ C`, `mChildCollapse`).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.) (PQ2Presentation.Induction.ZeroEdgePinning chief K lam hinv Z: Q2Presentation.Induction.ZeroEdgePinningQ2Presentation.Induction.ZeroEdgePinning {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) (Z : Q2Presentation.Induction.ZeroEdgeDescentData chief K lam hinv) : Type**The base-identity pinning of a bundle `Z`** — the §13 deferral's third item, concrete. In the `Z.Csec`-coordinates (a multiplicative section `s`, so the section cochain `η` vanishes), the normalized section cocycle of the ACTUAL descended cover `descTarget Z.D Z.hW` at the total section `(v,c) ↦ ℓ̂(v)·σ̂(c)` is `κ((v,c),(w,d)) = g(v,cw) + n_c(w) + e(c,d)` with `g/n/e` the three deck readings; the fields pin * `g = edgeBaseFactor` (`fib_*`): the fibre part is the `κ_q⁰`-model factor set — `eq:basekappacochain`'s fibre normalization; * `n_c = Z.mC c + Z.gammaK c ∘ (c·)` (`conj_*`): the conjugation defect is the model correction plus the `Γ_{γ_κ}`-term (`eq:Gammagamma`); * `e = Z.deltaK` (`sec_*`): the pure base part is the inflated scalar — i.e. `κ = κ_q⁰ + Γ_{γ_κ} + inf δ_κ` as normalized cochains, `eq:descendedclass` l.4037–4045 ON THE NOSE; and `tau_eT` pins `Z.eT` as the actual zero-section pullback of `B → V⋊C` along the `Csec`-section (`lem:affinelifting` l.4050–4056). `Nonempty (ZeroEdgePinning … Z)` is the pinning hypothesis the FUTURE coordinated R4b keep must carry alongside `Z` (both U8/U9 zero-edge keep docstrings + §13 note 6).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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) (z↥(Q2Presentation.Induction.edgeZ1 chief K B ρ): ↥(Q2Presentation.Induction.edgeZ1Q2Presentation.Induction.edgeZ1 {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (ρ : Q2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst (Q2Presentation.Induction.cChild chief K).snd) : Submodule (ZMod 2) (↑Γ.toProfinite.toTop → Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K)**`Z¹_ρ(V)`** — the `ZMod 2`-module of continuous (locally constant) `V`-valued ρ̄-twisted 1-cocycles: `z(γγ′) = z(γ) + ρ̄(γ)·z(γ′)` (THE orientation pin — `aRep_cocycle`'s house orientation; design §2.1's `W_ρ`, the engine carrier of the W2 instantiation).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactorBQ2Presentation.BoundaryPackage ΓρQ2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst (Q2Presentation.Induction.cChild chief K).snd)) (lQ2Presentation.Induction.mLift chief K B ρ: Q2Presentation.Induction.mLiftQ2Presentation.Induction.mLift {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (ρ : Q2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst (Q2Presentation.Induction.cChild chief K).snd) : TypeThe framed `M`-lift fibre over a lower map (all framed lifts, weak in the ambient target — `liftHom` at the child `M`-kernel, `ρ` taken in the `cChild` spelling).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactorBQ2Presentation.BoundaryPackage ΓρQ2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst (Q2Presentation.Induction.cChild chief K).snd) (hfibQ2Presentation.Induction.FibHom chief K lam hinv B Z ρ P z ↑l: Q2Presentation.Induction.FibHomQ2Presentation.Induction.FibHom {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (Z : Q2Presentation.Induction.ZeroEdgeDescentData chief K lam hinv) (ρ : Q2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst (Q2Presentation.Induction.cChild chief K).snd) (P : Q2Presentation.Induction.ZeroEdgePinning chief K lam hinv Z) (z : ↥(Q2Presentation.Induction.edgeZ1 chief K B ρ)) (f : Γ ⟶ ProfiniteGrp.ofFiniteGrp (FiniteGrp.of (Q2Presentation.Induction.XRZero.xrChild chief K).fst.Y)) : PropThe `T'`-fibre condition of a framed `M`-lift over the `z`-twisted `V⋊C`-lift: `l mod T' = γ ↦ vInG(zγ)·s(ρ̄γ)` pointwise (the graph of the trivialized coordinate; `modT l = edgeTrivial … z` in value form).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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)BQ2Presentation.BoundaryPackage ΓZQ2Presentation.Induction.ZeroEdgeDescentData chief K lam hinvρQ2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst (Q2Presentation.Induction.cChild chief K).sndPQ2Presentation.Induction.ZeroEdgePinning chief K lam hinv Zz↥(Q2Presentation.Induction.edgeZ1 chief K B ρ)↑lQ2Presentation.Induction.mLift chief K B ρ) (chi↥(Q2Presentation.Induction.XT chief K): ↥(Q2Presentation.Induction.XTQ2Presentation.Induction.XT {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Submodule (ZMod 2) (Module.Dual (ZMod 2) ↥(Q2Presentation.Induction.towerT K))**`𝒳_T = (T^∨)^C`**: the `C`-invariant duals of the radical layer, against the proven restricted action `sec7ActOnTHom`.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)) : Q2Presentation.Induction.edgeLReadQ2Presentation.Induction.edgeLRead {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (ρ : Q2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst (Q2Presentation.Induction.cChild chief K).snd) (z : ↥(Q2Presentation.Induction.edgeZ1 chief K B ρ)) (chi : ↥(Q2Presentation.Induction.XT chief K)) : ZMod 2The `χ`-constraint reading `L(z)(χ) = ι_Γ(Γ_{γ_χ}(z))` (token-free def; linearity is token-consuming).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactorBQ2Presentation.BoundaryPackage ΓρQ2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst (Q2Presentation.Induction.cChild chief K).sndz↥(Q2Presentation.Induction.edgeZ1 chief K B ρ)chi↥(Q2Presentation.Induction.XT chief K)=Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`. We use `a = b` as notation for `Eq a b`. A fundamental property of equality is that it is an equivalence relation. ``` variable (α : Type) (a b c d : α) variable (hab : a = b) (hcb : c = b) (hcd : c = d) example : a = d := Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd ``` Equality is much more than an equivalence relation, however. It has the important property that every assertion respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value. That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`. Example: ``` example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := Eq.subst h1 h2 example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := h1 ▸ h2 ``` The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`. For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality) Conventions for notations in identifiers: * The recommended spelling of `=` in identifiers is `eq`.Q2Presentation.Induction.edgeKappaReadQ2Presentation.Induction.edgeKappaRead {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) (Z : Q2Presentation.Induction.ZeroEdgeDescentData chief K lam hinv) {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (ρ : Q2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst (Q2Presentation.Induction.cChild chief K).snd) (chi : ↥(Q2Presentation.Induction.XT chief K)) : ZMod 2The constraint target `κ₀(χ) = ι_Γ(ρ*(χ_*e))`.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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 hinvBQ2Presentation.BoundaryPackage ΓρQ2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst (Q2Presentation.Induction.cChild chief K).sndchi↥(Q2Presentation.Induction.XT chief K)theorem Q2Presentation.Induction.fibHom_reads_eq {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)) {ΓProfiniteGrp.{0}: ProfiniteGrp.{0}ProfiniteGrp.{u_1} : Type (u_1 + 1)The category of profinite groups. A term of this type consists of a profinite set with a topological group structure.} (BQ2Presentation.BoundaryPackage Γ: Q2Presentation.BoundaryPackageQ2Presentation.BoundaryPackage (Γ : ProfiniteGrp.{0}) : TypeA **boundary package** on a profinite group `Γ`: the uniform Stage-C data of a tame quotient, a maximal pro-`2` quotient, and a common unramified character `ℤ₂` through which both factor (manuscript Prop 3.14, `prop:compatiblemarking`; plan Turn 4 §6). The compatibility `tameMap ≫ ν_t = ν = pro2Map ≫ ν_2` records that the two markings agree on the full unramified coordinate, not merely modulo `2`.ΓProfiniteGrp.{0}) (ZQ2Presentation.Induction.ZeroEdgeDescentData chief K lam hinv: Q2Presentation.Induction.ZeroEdgeDescentDataQ2Presentation.Induction.ZeroEdgeDescentData {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) : Type**The zero-edge descent data** (`eq:descendedclass` l.4037–4045 + `lem:affinelifting` l.4048–4083, as one choice bundle — the §6.5 choice discipline: both R4b keeps take the SAME bundle): * `D`/`hW` — the zero-edge witness (a normal edge complement, P3-U3); the bundle therefore implies `ZeroEdge` (`ZeroEdgeDescentData.zeroEdge`); * `Csec` + `hdisj`/`hsup` — the `lem:transgression` splitting coordinates `B/T' = V ⋊ C` (`Csec` a complement to the `V`-layer); * `gammaK`/`deltaK` — the normalized decomposition data `γ_κ ∈ Z¹(C,V^∨)`, `δ_κ ∈ Z²(C,𝔽₂)` of the descended class, with concrete cocycle laws (dual action `(c·φ)(v) = φ(c⁻¹·v)`); * `eT` — the `lem:affinelifting` class `e ∈ Z²(C,T)` (pullback of `B → V⋊C` along the zero section), twisted cocycle law in the `hzc`-ready orientation; * `mC` — the equivariant-lift correction functions `m_c` of the `κ_q⁰`-model (`eq:mquadratic`/`eq:mcoherent` l.4118–4125, stated against the bilinear factor set `edgeBaseFactor`). The deep pinning identity — that a normalized section cocycle of the descended double cover `descTarget D hW` equals `κ_q⁰-model + Γ_{γ_κ} + inf δ_κ` in the `Csec`-coordinates, and that `eT` is the actual zero-section pullback — is owned by the deferred transgression unit (`btChild_splits`/`zeroEdgeDescentData_nonempty`, design §4.7); until it lands, the coordinated R4b keep must carry that pinning alongside this bundle (same discipline as U7's `¬ZeroEdge` conditioning living on the future keep).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst (Q2Presentation.Induction.cChild chief K).snd: Q2Presentation.boundaryFramedSurjQ2Presentation.boundaryFramedSurj {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (Yt : Q2Presentation.BoundaryFramedTarget) (F : Q2Presentation.BoundaryFrame Yt) : TypeThe **boundary-framed surjections** `e_Γ^β(𝒴)` (manuscript `eq:eGamma`): the continuous surjections `f : Γ ↠ Y` whose induced map to `H × E` is the prescribed `β ∘ b_Γ`, i.e. `q_Y ∘ f = β ∘ b_Γ`. This is the subtype counted in Theorem 4.2; its cardinality is `e_Γ^β(𝒴)`.BQ2Presentation.BoundaryPackage Γ(Q2Presentation.Induction.cChildQ2Presentation.Induction.cChild {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPair**The C-child framed pair** (the carrier of `X_Γ(C)`; manuscript `C = Y/K` via `B/M' ≅ C`, `mChildCollapse`).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.(Q2Presentation.Induction.cChildQ2Presentation.Induction.cChild {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPair**The C-child framed pair** (the carrier of `X_Γ(C)`; manuscript `C = Y/K` via `B/M' ≅ C`, `mChildCollapse`).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.) (PQ2Presentation.Induction.ZeroEdgePinning chief K lam hinv Z: Q2Presentation.Induction.ZeroEdgePinningQ2Presentation.Induction.ZeroEdgePinning {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) (Z : Q2Presentation.Induction.ZeroEdgeDescentData chief K lam hinv) : Type**The base-identity pinning of a bundle `Z`** — the §13 deferral's third item, concrete. In the `Z.Csec`-coordinates (a multiplicative section `s`, so the section cochain `η` vanishes), the normalized section cocycle of the ACTUAL descended cover `descTarget Z.D Z.hW` at the total section `(v,c) ↦ ℓ̂(v)·σ̂(c)` is `κ((v,c),(w,d)) = g(v,cw) + n_c(w) + e(c,d)` with `g/n/e` the three deck readings; the fields pin * `g = edgeBaseFactor` (`fib_*`): the fibre part is the `κ_q⁰`-model factor set — `eq:basekappacochain`'s fibre normalization; * `n_c = Z.mC c + Z.gammaK c ∘ (c·)` (`conj_*`): the conjugation defect is the model correction plus the `Γ_{γ_κ}`-term (`eq:Gammagamma`); * `e = Z.deltaK` (`sec_*`): the pure base part is the inflated scalar — i.e. `κ = κ_q⁰ + Γ_{γ_κ} + inf δ_κ` as normalized cochains, `eq:descendedclass` l.4037–4045 ON THE NOSE; and `tau_eT` pins `Z.eT` as the actual zero-section pullback of `B → V⋊C` along the `Csec`-section (`lem:affinelifting` l.4050–4056). `Nonempty (ZeroEdgePinning … Z)` is the pinning hypothesis the FUTURE coordinated R4b keep must carry alongside `Z` (both U8/U9 zero-edge keep docstrings + §13 note 6).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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) (z↥(Q2Presentation.Induction.edgeZ1 chief K B ρ): ↥(Q2Presentation.Induction.edgeZ1Q2Presentation.Induction.edgeZ1 {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (ρ : Q2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst (Q2Presentation.Induction.cChild chief K).snd) : Submodule (ZMod 2) (↑Γ.toProfinite.toTop → Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K)**`Z¹_ρ(V)`** — the `ZMod 2`-module of continuous (locally constant) `V`-valued ρ̄-twisted 1-cocycles: `z(γγ′) = z(γ) + ρ̄(γ)·z(γ′)` (THE orientation pin — `aRep_cocycle`'s house orientation; design §2.1's `W_ρ`, the engine carrier of the W2 instantiation).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactorBQ2Presentation.BoundaryPackage ΓρQ2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst (Q2Presentation.Induction.cChild chief K).snd)) (lQ2Presentation.Induction.mLift chief K B ρ: Q2Presentation.Induction.mLiftQ2Presentation.Induction.mLift {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (ρ : Q2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst (Q2Presentation.Induction.cChild chief K).snd) : TypeThe framed `M`-lift fibre over a lower map (all framed lifts, weak in the ambient target — `liftHom` at the child `M`-kernel, `ρ` taken in the `cChild` spelling).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactorBQ2Presentation.BoundaryPackage ΓρQ2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst (Q2Presentation.Induction.cChild chief K).snd) (hfibQ2Presentation.Induction.FibHom chief K lam hinv B Z ρ P z ↑l: Q2Presentation.Induction.FibHomQ2Presentation.Induction.FibHom {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (Z : Q2Presentation.Induction.ZeroEdgeDescentData chief K lam hinv) (ρ : Q2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst (Q2Presentation.Induction.cChild chief K).snd) (P : Q2Presentation.Induction.ZeroEdgePinning chief K lam hinv Z) (z : ↥(Q2Presentation.Induction.edgeZ1 chief K B ρ)) (f : Γ ⟶ ProfiniteGrp.ofFiniteGrp (FiniteGrp.of (Q2Presentation.Induction.XRZero.xrChild chief K).fst.Y)) : PropThe `T'`-fibre condition of a framed `M`-lift over the `z`-twisted `V⋊C`-lift: `l mod T' = γ ↦ vInG(zγ)·s(ρ̄γ)` pointwise (the graph of the trivialized coordinate; `modT l = edgeTrivial … z` in value form).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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)BQ2Presentation.BoundaryPackage ΓZQ2Presentation.Induction.ZeroEdgeDescentData chief K lam hinvρQ2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst (Q2Presentation.Induction.cChild chief K).sndPQ2Presentation.Induction.ZeroEdgePinning chief K lam hinv Zz↥(Q2Presentation.Induction.edgeZ1 chief K B ρ)↑lQ2Presentation.Induction.mLift chief K B ρ) (chi↥(Q2Presentation.Induction.XT chief K): ↥(Q2Presentation.Induction.XTQ2Presentation.Induction.XT {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Submodule (ZMod 2) (Module.Dual (ZMod 2) ↥(Q2Presentation.Induction.towerT K))**`𝒳_T = (T^∨)^C`**: the `C`-invariant duals of the radical layer, against the proven restricted action `sec7ActOnTHom`.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)) : Q2Presentation.Induction.edgeLReadQ2Presentation.Induction.edgeLRead {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (ρ : Q2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst (Q2Presentation.Induction.cChild chief K).snd) (z : ↥(Q2Presentation.Induction.edgeZ1 chief K B ρ)) (chi : ↥(Q2Presentation.Induction.XT chief K)) : ZMod 2The `χ`-constraint reading `L(z)(χ) = ι_Γ(Γ_{γ_χ}(z))` (token-free def; linearity is token-consuming).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactorBQ2Presentation.BoundaryPackage ΓρQ2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst (Q2Presentation.Induction.cChild chief K).sndz↥(Q2Presentation.Induction.edgeZ1 chief K B ρ)chi↥(Q2Presentation.Induction.XT chief K)=Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`. We use `a = b` as notation for `Eq a b`. A fundamental property of equality is that it is an equivalence relation. ``` variable (α : Type) (a b c d : α) variable (hab : a = b) (hcb : c = b) (hcd : c = d) example : a = d := Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd ``` Equality is much more than an equivalence relation, however. It has the important property that every assertion respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value. That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`. Example: ``` example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := Eq.subst h1 h2 example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := h1 ▸ h2 ``` The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`. For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality) Conventions for notations in identifiers: * The recommended spelling of `=` in identifiers is `eq`.Q2Presentation.Induction.edgeKappaReadQ2Presentation.Induction.edgeKappaRead {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) (Z : Q2Presentation.Induction.ZeroEdgeDescentData chief K lam hinv) {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (ρ : Q2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst (Q2Presentation.Induction.cChild chief K).snd) (chi : ↥(Q2Presentation.Induction.XT chief K)) : ZMod 2The constraint target `κ₀(χ) = ι_Γ(ρ*(χ_*e))`.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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 hinvBQ2Presentation.BoundaryPackage ΓρQ2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst (Q2Presentation.Induction.cChild chief K).sndchi↥(Q2Presentation.Induction.XT chief K)**A2 — admissibility** (design §1.2, `lem:affinelifting`'s ⟹ half made literal): a `FibHom` witness over `z` forces every `χ`-constraint reading to hit its `χ_*e`-target. The γ-indexed defect of `fibM` is `edgeChiE χ` ON THE NOSE (`fibM_law` + char 2 + `edgeTProj_of_mem`), and A1 aligns its `ι`-reading with `edgeLRead`.
-
theoremdefined in Q2Presentation/Induction/XRZeroAssembly.leancomplete
theorem Q2Presentation.Induction.XRZero.sec7_xrzero_cochainData {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|`.} (h¬Q2Presentation.Induction.ScalarTerminal p: ¬Not (a : Prop) : Prop`Not p`, or `¬p`, is the negation of `p`. It is defined to be `p → False`, so if your goal is `¬p` you can use `intro h` to turn the goal into `h : p ⊢ False`, and if you have `hn : ¬p` and `h : p` then `hn h : False` and `(hn h).elim` will prove anything. For more information: [Propositional Logic](https://lean-lang.org/theorem_proving_in_lean4/propositions_and_proofs.html#propositional-logic) Conventions for notations in identifiers: * The recommended spelling of `¬` in identifiers is `not`.Q2Presentation.Induction.ScalarTerminalQ2Presentation.Induction.ScalarTerminal (p : Q2Presentation.Induction.FramedPair) : Prop**Scalar-terminal framed pair.**pQ2Presentation.Induction.FramedPair) (chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p: Q2Presentation.Induction.FirstNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor (p : Q2Presentation.Induction.FramedPair) : TypeA non-scalar chief factor of `L_Y` that is **first**: every chief factor strictly below it (i.e. with upper term contained in `lower`) is scalar. This is the manuscript's choice `S ◁ P` at l.3616–3623 ("all chief factors below `S` are scalar and `V` is the first non-scalar simple factor"), which `lem:collapse` requires for the coprime step `[S, Ñ] = 1`.pQ2Presentation.Induction.FramedPair) (KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor: Q2Presentation.Induction.KernelMinimalQ2Presentation.Induction.KernelMinimal {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.NonScalarChiefFactor p) : TypeThe manuscript's kernel choice (l.3623): `K ◁ Y`, `K ≤ P`, `KS = P`, and `K` is **⊆-minimal** with these properties — stated as: any `Y`-normal `K' ≤ K` still joining with `S` to `P` equals `K`. (This, not leastness among all candidates, is what `lem:simplehead` and `lem:collapse` use: both apply it to subgroups of `K`.)chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p.toNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor.toNonScalarChiefFactor {p : Q2Presentation.Induction.FramedPair} (self : Q2Presentation.Induction.FirstNonScalarChiefFactor p) : Q2Presentation.Induction.NonScalarChiefFactor p) (hR1 < Nat.card ↥(Q2Presentation.Induction.kernelFrattini K): 1 <LT.lt.{u} {α : Type u} [self : LT α] : α → α → PropThe less-than relation: `x < y` Conventions for notations in identifiers: * The recommended spelling of `<` in identifiers is `lt`.Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number. If `α` is infinite, `Nat.card α = 0`.↥(Q2Presentation.Induction.kernelFrattiniQ2Presentation.Induction.kernelFrattini {p : Q2Presentation.Induction.FramedPair} {chief : Q2Presentation.Induction.NonScalarChiefFactor p} (K : Q2Presentation.Induction.KernelMinimal chief) : Subgroup p.fst.YThe literal Frattini subgroup `R = Φ(K)` of the kernel, as a subgroup of `Y` (the manuscript's `R`, l.3626).KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)) (hchar¬∃ lam, lam ≠ 0 ∧ ∀ (c : (Q2Presentation.Induction.sec7RawTowerPacketCanonical chief K).rawModuleData.C), lam ∘ₗ ↑((Q2Presentation.Induction.sec7RawTowerPacketCanonical chief K).rawActionData.actR c) = lam: ¬Not (a : Prop) : Prop`Not p`, or `¬p`, is the negation of `p`. It is defined to be `p → False`, so if your goal is `¬p` you can use `intro h` to turn the goal into `h : p ⊢ False`, and if you have `hn : ¬p` and `h : p` then `hn h : False` and `(hn h).elim` will prove anything. For more information: [Propositional Logic](https://lean-lang.org/theorem_proving_in_lean4/propositions_and_proofs.html#propositional-logic) Conventions for notations in identifiers: * The recommended spelling of `¬` in identifiers is `not`.∃ lamModule.Dual (ZMod 2) (Q2Presentation.Induction.sec7RawTowerPacketCanonical chief K).rawModuleData.R, lamModule.Dual (ZMod 2) (Q2Presentation.Induction.sec7RawTowerPacketCanonical chief K).rawModuleData.R≠Ne.{u} {α : Sort u} (a b : α) : Prop`a ≠ b`, or `Ne a b` is defined as `¬ (a = b)` or `a = b → False`, and asserts that `a` and `b` are not equal. Conventions for notations in identifiers: * The recommended spelling of `≠` in identifiers is `ne`.0 ∧And (a b : Prop) : Prop`And a b`, or `a ∧ b`, is the conjunction of propositions. It can be constructed and destructed like a pair: if `ha : a` and `hb : b` then `⟨ha, hb⟩ : a ∧ b`, and if `h : a ∧ b` then `h.left : a` and `h.right : b`. Conventions for notations in identifiers: * The recommended spelling of `∧` in identifiers is `and`. * The recommended spelling of `/\` in identifiers is `and` (prefer `∧` over `/\`).∀ (c(Q2Presentation.Induction.sec7RawTowerPacketCanonical chief K).rawModuleData.C: (Q2Presentation.Induction.sec7RawTowerPacketCanonicalQ2Presentation.Induction.sec7RawTowerPacketCanonical {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.Sec7RawTowerPacket chief KThe canonical raw tower packet — the literal §7 constructors (checkpoint-F9). Using this definitional packet (instead of an opaque `Nonempty`-obtained one) lets the crux-lowered pushout packet of `Section7PushoutConstruction` be consumed directly.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).rawModuleDataQ2Presentation.Induction.Sec7RawTowerPacket.rawModuleData {p : Q2Presentation.Induction.FramedPair} {chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p} {K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor} (self : Q2Presentation.Induction.Sec7RawTowerPacket chief K) : Q2Presentation.Induction.MinimalBlockRawModuleData p chief.toNonScalarChiefFactor.CQ2Presentation.Induction.MinimalBlockRawModuleData.C {p : Q2Presentation.Induction.FramedPair} {chief : Q2Presentation.Induction.NonScalarChiefFactor p} (self : Q2Presentation.Induction.MinimalBlockRawModuleData p chief) : Type), lamModule.Dual (ZMod 2) (Q2Presentation.Induction.sec7RawTowerPacketCanonical chief K).rawModuleData.R∘ₗLinearMap.comp.{u_2, u_3, u_4, u_9, u_10, u_11} {R₁ : Type u_2} {R₂ : Type u_3} {R₃ : Type u_4} {M₁ : Type u_9} {M₂ : Type u_10} {M₃ : Type u_11} [Semiring R₁] [Semiring R₂] [Semiring R₃] [AddCommMonoid M₁] [AddCommMonoid M₂] [AddCommMonoid M₃] {module_M₁ : Module R₁ M₁} {module_M₂ : Module R₂ M₂} {module_M₃ : Module R₃ M₃} {σ₁₂ : R₁ →+* R₂} {σ₂₃ : R₂ →+* R₃} {σ₁₃ : R₁ →+* R₃} [RingHomCompTriple σ₁₂ σ₂₃ σ₁₃] (f : M₂ →ₛₗ[σ₂₃] M₃) (g : M₁ →ₛₗ[σ₁₂] M₂) : M₁ →ₛₗ[σ₁₃] M₃Composition of two linear maps is a linear map↑((Q2Presentation.Induction.sec7RawTowerPacketCanonicalQ2Presentation.Induction.sec7RawTowerPacketCanonical {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.Sec7RawTowerPacket chief KThe canonical raw tower packet — the literal §7 constructors (checkpoint-F9). Using this definitional packet (instead of an opaque `Nonempty`-obtained one) lets the crux-lowered pushout packet of `Section7PushoutConstruction` be consumed directly.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).rawActionDataQ2Presentation.Induction.Sec7RawTowerPacket.rawActionData {p : Q2Presentation.Induction.FramedPair} {chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p} {K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor} (self : Q2Presentation.Induction.Sec7RawTowerPacket chief K) : Q2Presentation.Induction.MinimalBlockRawActionData self.rawModuleData.actRQ2Presentation.Induction.MinimalBlockRawActionData.actR {p : Q2Presentation.Induction.FramedPair} {chief : Q2Presentation.Induction.NonScalarChiefFactor p} {D : Q2Presentation.Induction.MinimalBlockRawModuleData p chief} (self : Q2Presentation.Induction.MinimalBlockRawActionData D) : D.C →* D.R ≃ₗ[ZMod 2] D.Rc(Q2Presentation.Induction.sec7RawTowerPacketCanonical chief K).rawModuleData.C) =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`. We use `a = b` as notation for `Eq a b`. A fundamental property of equality is that it is an equivalence relation. ``` variable (α : Type) (a b c d : α) variable (hab : a = b) (hcb : c = b) (hcd : c = d) example : a = d := Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd ``` Equality is much more than an equivalence relation, however. It has the important property that every assertion respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value. That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`. Example: ``` example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := Eq.subst h1 h2 example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := h1 ▸ h2 ``` The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`. For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality) Conventions for notations in identifiers: * The recommended spelling of `=` in identifiers is `eq`.lamModule.Dual (ZMod 2) (Q2Presentation.Induction.sec7RawTowerPacketCanonical chief K).rawModuleData.R) : ∃ kdimℕ, (∀ (gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GammaA (Q2Presentation.Induction.XRZero.xrChild chief K).fst (Q2Presentation.Induction.XRZero.xrChild chief K).snd: Q2Presentation.boundaryFramedSurjQ2Presentation.boundaryFramedSurj {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (Yt : Q2Presentation.BoundaryFramedTarget) (F : Q2Presentation.BoundaryFrame Yt) : TypeThe **boundary-framed surjections** `e_Γ^β(𝒴)` (manuscript `eq:eGamma`): the continuous surjections `f : Γ ↠ Y` whose induced map to `H × E` is the prescribed `β ∘ b_Γ`, i.e. `q_Y ∘ f = β ∘ b_Γ`. This is the subtype counted in Theorem 4.2; its cardinality is `e_Γ^β(𝒴)`.Q2Presentation.boundaryPackage_GammaAQ2Presentation.boundaryPackage_GammaA : Q2Presentation.BoundaryPackage Q2Presentation.GammaA**The candidate boundary package** (manuscript Prop 3.14, `prop:compatiblemarking`; plan Turn 4 §6). The Stage-C data of `Γ_A`: the common tame quotient `gammaTameMap`, the maximal pro-`2` quotient `p : Γ_A ⟶ Π`, and the common unramified character `ν = gammaTameMap ≫ ν_t`, through which both factor.(Q2Presentation.Induction.XRZero.xrChildQ2Presentation.Induction.XRZero.xrChild {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPairThe `𝒳_R = 0` child: the quotient framed pair at `N = Φ`-layer.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.(Q2Presentation.Induction.XRZero.xrChildQ2Presentation.Induction.XRZero.xrChild {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPairThe `𝒳_R = 0` child: the quotient framed pair at `N = Φ`-layer.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.), NonemptyNonempty.{u} (α : Sort u) : Prop`Nonempty α` is a typeclass that says that `α` is not an empty type, that is, there exists an element in the type. It differs from `Inhabited α` in that `Nonempty α` is a `Prop`, which means that it does not actually carry an element of `α`, only a proof that *there exists* such an element. Given `Nonempty α`, you can construct an element of `α` *nonconstructively* using `Classical.choice`.(Q2Presentation.TorsorProgram.liftHomQ2Presentation.TorsorProgram.liftHom (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y) [hNn : N.Normal] (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (F : Q2Presentation.BoundaryFrame Yt) (g : Q2Presentation.boundaryFramedSurj B (Q2Presentation.TorsorProgram.quotientFramedTarget Yt N hNLY hNθ) (Q2Presentation.TorsorProgram.quotientFrame Yt N hNLY hNθ F)) : Type**All framed lifts** of a child-framed surjection (surjectivity NOT imposed; the Frattini argument recovers it per use-site).pQ2Presentation.Induction.FramedPair.fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.(Q2Presentation.Induction.XRZero.NRQ2Presentation.Induction.XRZero.NR {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Subgroup p.fst.YThe Frattini layer as the quotient kernel.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) ⋯ ⋯ Q2Presentation.boundaryPackage_GammaAQ2Presentation.boundaryPackage_GammaA : Q2Presentation.BoundaryPackage Q2Presentation.GammaA**The candidate boundary package** (manuscript Prop 3.14, `prop:compatiblemarking`; plan Turn 4 §6). The Stage-C data of `Γ_A`: the common tame quotient `gammaTameMap`, the maximal pro-`2` quotient `p : Γ_A ⟶ Π`, and the common unramified character `ν = gammaTameMap ≫ ν_t`, through which both factor.pQ2Presentation.Induction.FramedPair.sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GammaA (Q2Presentation.Induction.XRZero.xrChild chief K).fst (Q2Presentation.Induction.XRZero.xrChild chief K).snd)) ∧And (a b : Prop) : Prop`And a b`, or `a ∧ b`, is the conjunction of propositions. It can be constructed and destructed like a pair: if `ha : a` and `hb : b` then `⟨ha, hb⟩ : a ∧ b`, and if `h : a ∧ b` then `h.left : a` and `h.right : b`. Conventions for notations in identifiers: * The recommended spelling of `∧` in identifiers is `and`. * The recommended spelling of `/\` in identifiers is `and` (prefer `∧` over `/\`).(∀ (gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GammaA (Q2Presentation.TorsorProgram.quotientFramedTarget p.fst (Q2Presentation.Induction.XRZero.NR chief K) ⋯ ⋯) (Q2Presentation.TorsorProgram.quotientFrame p.fst (Q2Presentation.Induction.XRZero.NR chief K) ⋯ ⋯ p.snd): Q2Presentation.boundaryFramedSurjQ2Presentation.boundaryFramedSurj {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (Yt : Q2Presentation.BoundaryFramedTarget) (F : Q2Presentation.BoundaryFrame Yt) : TypeThe **boundary-framed surjections** `e_Γ^β(𝒴)` (manuscript `eq:eGamma`): the continuous surjections `f : Γ ↠ Y` whose induced map to `H × E` is the prescribed `β ∘ b_Γ`, i.e. `q_Y ∘ f = β ∘ b_Γ`. This is the subtype counted in Theorem 4.2; its cardinality is `e_Γ^β(𝒴)`.Q2Presentation.boundaryPackage_GammaAQ2Presentation.boundaryPackage_GammaA : Q2Presentation.BoundaryPackage Q2Presentation.GammaA**The candidate boundary package** (manuscript Prop 3.14, `prop:compatiblemarking`; plan Turn 4 §6). The Stage-C data of `Γ_A`: the common tame quotient `gammaTameMap`, the maximal pro-`2` quotient `p : Γ_A ⟶ Π`, and the common unramified character `ν = gammaTameMap ≫ ν_t`, through which both factor.(Q2Presentation.TorsorProgram.quotientFramedTargetQ2Presentation.TorsorProgram.quotientFramedTarget (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y) [hNn : N.Normal] (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) : Q2Presentation.BoundaryFramedTarget**The quotient framed target** `Y/N` (same `H`, same `E`, image wild kernel).pQ2Presentation.Induction.FramedPair.fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.(Q2Presentation.Induction.XRZero.NRQ2Presentation.Induction.XRZero.NR {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Subgroup p.fst.YThe Frattini layer as the quotient kernel.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) ⋯ ⋯) (Q2Presentation.TorsorProgram.quotientFrameQ2Presentation.TorsorProgram.quotientFrame (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y) [hNn : N.Normal] (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) (F : Q2Presentation.BoundaryFrame Yt) : Q2Presentation.BoundaryFrame (Q2Presentation.TorsorProgram.quotientFramedTarget Yt N hNLY hNθ)The frame transports verbatim (`H`, `E`, `α`, `ψ`, `β` unchanged).pQ2Presentation.Induction.FramedPair.fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.(Q2Presentation.Induction.XRZero.NRQ2Presentation.Induction.XRZero.NR {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Subgroup p.fst.YThe Frattini layer as the quotient kernel.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) ⋯ ⋯ pQ2Presentation.Induction.FramedPair.sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.)) (f₀Q2Presentation.TorsorProgram.liftHom p.fst (Q2Presentation.Induction.XRZero.NR chief K) ⋯ ⋯ Q2Presentation.boundaryPackage_GammaA p.snd g: Q2Presentation.TorsorProgram.liftHomQ2Presentation.TorsorProgram.liftHom (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y) [hNn : N.Normal] (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (F : Q2Presentation.BoundaryFrame Yt) (g : Q2Presentation.boundaryFramedSurj B (Q2Presentation.TorsorProgram.quotientFramedTarget Yt N hNLY hNθ) (Q2Presentation.TorsorProgram.quotientFrame Yt N hNLY hNθ F)) : Type**All framed lifts** of a child-framed surjection (surjectivity NOT imposed; the Frattini argument recovers it per use-site).pQ2Presentation.Induction.FramedPair.fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.(Q2Presentation.Induction.XRZero.NRQ2Presentation.Induction.XRZero.NR {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Subgroup p.fst.YThe Frattini layer as the quotient kernel.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) ⋯ ⋯ Q2Presentation.boundaryPackage_GammaAQ2Presentation.boundaryPackage_GammaA : Q2Presentation.BoundaryPackage Q2Presentation.GammaA**The candidate boundary package** (manuscript Prop 3.14, `prop:compatiblemarking`; plan Turn 4 §6). The Stage-C data of `Γ_A`: the common tame quotient `gammaTameMap`, the maximal pro-`2` quotient `p : Γ_A ⟶ Π`, and the common unramified character `ν = gammaTameMap ≫ ν_t`, through which both factor.pQ2Presentation.Induction.FramedPair.sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GammaA (Q2Presentation.TorsorProgram.quotientFramedTarget p.fst (Q2Presentation.Induction.XRZero.NR chief K) ⋯ ⋯) (Q2Presentation.TorsorProgram.quotientFrame p.fst (Q2Presentation.Induction.XRZero.NR chief K) ⋯ ⋯ p.snd)), Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number. If `α` is infinite, `Nat.card α = 0`.(Q2Presentation.TorsorProgram.Z1Q2Presentation.TorsorProgram.Z1 (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y) [hNn : N.Normal] (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (F : Q2Presentation.BoundaryFrame Yt) (g : Q2Presentation.boundaryFramedSurj B (Q2Presentation.TorsorProgram.quotientFramedTarget Yt N hNLY hNθ) (Q2Presentation.TorsorProgram.quotientFrame Yt N hNLY hNθ F)) (f₀ : Q2Presentation.TorsorProgram.liftHom Yt N hNLY hNθ B F g) : Type**The twisted cocycle set** relative to a base lift.pQ2Presentation.Induction.FramedPair.fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.(Q2Presentation.Induction.XRZero.NRQ2Presentation.Induction.XRZero.NR {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Subgroup p.fst.YThe Frattini layer as the quotient kernel.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) ⋯ ⋯ Q2Presentation.boundaryPackage_GammaAQ2Presentation.boundaryPackage_GammaA : Q2Presentation.BoundaryPackage Q2Presentation.GammaA**The candidate boundary package** (manuscript Prop 3.14, `prop:compatiblemarking`; plan Turn 4 §6). The Stage-C data of `Γ_A`: the common tame quotient `gammaTameMap`, the maximal pro-`2` quotient `p : Γ_A ⟶ Π`, and the common unramified character `ν = gammaTameMap ≫ ν_t`, through which both factor.pQ2Presentation.Induction.FramedPair.sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GammaA (Q2Presentation.TorsorProgram.quotientFramedTarget p.fst (Q2Presentation.Induction.XRZero.NR chief K) ⋯ ⋯) (Q2Presentation.TorsorProgram.quotientFrame p.fst (Q2Presentation.Induction.XRZero.NR chief K) ⋯ ⋯ p.snd)f₀Q2Presentation.TorsorProgram.liftHom p.fst (Q2Presentation.Induction.XRZero.NR chief K) ⋯ ⋯ Q2Presentation.boundaryPackage_GammaA p.snd g) =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`. We use `a = b` as notation for `Eq a b`. A fundamental property of equality is that it is an equivalence relation. ``` variable (α : Type) (a b c d : α) variable (hab : a = b) (hcb : c = b) (hcd : c = d) example : a = d := Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd ``` Equality is much more than an equivalence relation, however. It has the important property that every assertion respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value. That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`. Example: ``` example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := Eq.subst h1 h2 example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := h1 ▸ h2 ``` The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`. For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality) Conventions for notations in identifiers: * The recommended spelling of `=` in identifiers is `eq`.2 ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `^` in identifiers is `pow`.(HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.2 *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.kdimℕ)HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.) ∧And (a b : Prop) : Prop`And a b`, or `a ∧ b`, is the conjunction of propositions. It can be constructed and destructed like a pair: if `ha : a` and `hb : b` then `⟨ha, hb⟩ : a ∧ b`, and if `h : a ∧ b` then `h.left : a` and `h.right : b`. Conventions for notations in identifiers: * The recommended spelling of `∧` in identifiers is `and`. * The recommended spelling of `/\` in identifiers is `and` (prefer `∧` over `/\`).(∀ (gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GQ2 (Q2Presentation.Induction.XRZero.xrChild chief K).fst (Q2Presentation.Induction.XRZero.xrChild chief K).snd: Q2Presentation.boundaryFramedSurjQ2Presentation.boundaryFramedSurj {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (Yt : Q2Presentation.BoundaryFramedTarget) (F : Q2Presentation.BoundaryFrame Yt) : TypeThe **boundary-framed surjections** `e_Γ^β(𝒴)` (manuscript `eq:eGamma`): the continuous surjections `f : Γ ↠ Y` whose induced map to `H × E` is the prescribed `β ∘ b_Γ`, i.e. `q_Y ∘ f = β ∘ b_Γ`. This is the subtype counted in Theorem 4.2; its cardinality is `e_Γ^β(𝒴)`.Q2Presentation.boundaryPackage_GQ2Q2Presentation.boundaryPackage_GQ2 : Q2Presentation.BoundaryPackage Q2Presentation.GQ2Profinite**The local boundary package** `boundaryPackage_GQ2 : BoundaryPackage G_{ℚ₂}` (manuscript Prop 3.14 `prop:compatiblemarking` for `Γ = G_{ℚ₂}`; plan Turn 4 §6), the `G_{ℚ₂}`-side instance of the uniform Stage-C boundary datum. * `tameMap`/`tame_surj`/`tame_nu` — the local tame quotient `G_{ℚ₂} ↠ T_A` with unramified marking `ν_loc`, from the axiom `gq2_tame_quotient` (Prop 3.2 + the local half of Prop `compatiblemarking`); * `pro2Map`/`pro2_surj`/`pro2_nu` — the local maximal pro-`2` quotient `G_{ℚ₂} ↠ Π` with the *same* unramified marking `ν_loc`, proved from the fully marked Labute comparison `labute_GQ2_maxPro2_marked` (`pro2Map_loc`, `pro2Map_loc_surjective`, `pro2Map_loc_nu`); * `nu := ν_loc` — the common unramified character through which both factor.(Q2Presentation.Induction.XRZero.xrChildQ2Presentation.Induction.XRZero.xrChild {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPairThe `𝒳_R = 0` child: the quotient framed pair at `N = Φ`-layer.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.(Q2Presentation.Induction.XRZero.xrChildQ2Presentation.Induction.XRZero.xrChild {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPairThe `𝒳_R = 0` child: the quotient framed pair at `N = Φ`-layer.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.), NonemptyNonempty.{u} (α : Sort u) : Prop`Nonempty α` is a typeclass that says that `α` is not an empty type, that is, there exists an element in the type. It differs from `Inhabited α` in that `Nonempty α` is a `Prop`, which means that it does not actually carry an element of `α`, only a proof that *there exists* such an element. Given `Nonempty α`, you can construct an element of `α` *nonconstructively* using `Classical.choice`.(Q2Presentation.TorsorProgram.liftHomQ2Presentation.TorsorProgram.liftHom (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y) [hNn : N.Normal] (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (F : Q2Presentation.BoundaryFrame Yt) (g : Q2Presentation.boundaryFramedSurj B (Q2Presentation.TorsorProgram.quotientFramedTarget Yt N hNLY hNθ) (Q2Presentation.TorsorProgram.quotientFrame Yt N hNLY hNθ F)) : Type**All framed lifts** of a child-framed surjection (surjectivity NOT imposed; the Frattini argument recovers it per use-site).pQ2Presentation.Induction.FramedPair.fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.(Q2Presentation.Induction.XRZero.NRQ2Presentation.Induction.XRZero.NR {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Subgroup p.fst.YThe Frattini layer as the quotient kernel.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) ⋯ ⋯ Q2Presentation.boundaryPackage_GQ2Q2Presentation.boundaryPackage_GQ2 : Q2Presentation.BoundaryPackage Q2Presentation.GQ2Profinite**The local boundary package** `boundaryPackage_GQ2 : BoundaryPackage G_{ℚ₂}` (manuscript Prop 3.14 `prop:compatiblemarking` for `Γ = G_{ℚ₂}`; plan Turn 4 §6), the `G_{ℚ₂}`-side instance of the uniform Stage-C boundary datum. * `tameMap`/`tame_surj`/`tame_nu` — the local tame quotient `G_{ℚ₂} ↠ T_A` with unramified marking `ν_loc`, from the axiom `gq2_tame_quotient` (Prop 3.2 + the local half of Prop `compatiblemarking`); * `pro2Map`/`pro2_surj`/`pro2_nu` — the local maximal pro-`2` quotient `G_{ℚ₂} ↠ Π` with the *same* unramified marking `ν_loc`, proved from the fully marked Labute comparison `labute_GQ2_maxPro2_marked` (`pro2Map_loc`, `pro2Map_loc_surjective`, `pro2Map_loc_nu`); * `nu := ν_loc` — the common unramified character through which both factor.pQ2Presentation.Induction.FramedPair.sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GQ2 (Q2Presentation.Induction.XRZero.xrChild chief K).fst (Q2Presentation.Induction.XRZero.xrChild chief K).snd)) ∧And (a b : Prop) : Prop`And a b`, or `a ∧ b`, is the conjunction of propositions. It can be constructed and destructed like a pair: if `ha : a` and `hb : b` then `⟨ha, hb⟩ : a ∧ b`, and if `h : a ∧ b` then `h.left : a` and `h.right : b`. Conventions for notations in identifiers: * The recommended spelling of `∧` in identifiers is `and`. * The recommended spelling of `/\` in identifiers is `and` (prefer `∧` over `/\`).∀ (gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GQ2 (Q2Presentation.TorsorProgram.quotientFramedTarget p.fst (Q2Presentation.Induction.XRZero.NR chief K) ⋯ ⋯) (Q2Presentation.TorsorProgram.quotientFrame p.fst (Q2Presentation.Induction.XRZero.NR chief K) ⋯ ⋯ p.snd): Q2Presentation.boundaryFramedSurjQ2Presentation.boundaryFramedSurj {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (Yt : Q2Presentation.BoundaryFramedTarget) (F : Q2Presentation.BoundaryFrame Yt) : TypeThe **boundary-framed surjections** `e_Γ^β(𝒴)` (manuscript `eq:eGamma`): the continuous surjections `f : Γ ↠ Y` whose induced map to `H × E` is the prescribed `β ∘ b_Γ`, i.e. `q_Y ∘ f = β ∘ b_Γ`. This is the subtype counted in Theorem 4.2; its cardinality is `e_Γ^β(𝒴)`.Q2Presentation.boundaryPackage_GQ2Q2Presentation.boundaryPackage_GQ2 : Q2Presentation.BoundaryPackage Q2Presentation.GQ2Profinite**The local boundary package** `boundaryPackage_GQ2 : BoundaryPackage G_{ℚ₂}` (manuscript Prop 3.14 `prop:compatiblemarking` for `Γ = G_{ℚ₂}`; plan Turn 4 §6), the `G_{ℚ₂}`-side instance of the uniform Stage-C boundary datum. * `tameMap`/`tame_surj`/`tame_nu` — the local tame quotient `G_{ℚ₂} ↠ T_A` with unramified marking `ν_loc`, from the axiom `gq2_tame_quotient` (Prop 3.2 + the local half of Prop `compatiblemarking`); * `pro2Map`/`pro2_surj`/`pro2_nu` — the local maximal pro-`2` quotient `G_{ℚ₂} ↠ Π` with the *same* unramified marking `ν_loc`, proved from the fully marked Labute comparison `labute_GQ2_maxPro2_marked` (`pro2Map_loc`, `pro2Map_loc_surjective`, `pro2Map_loc_nu`); * `nu := ν_loc` — the common unramified character through which both factor.(Q2Presentation.TorsorProgram.quotientFramedTargetQ2Presentation.TorsorProgram.quotientFramedTarget (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y) [hNn : N.Normal] (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) : Q2Presentation.BoundaryFramedTarget**The quotient framed target** `Y/N` (same `H`, same `E`, image wild kernel).pQ2Presentation.Induction.FramedPair.fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.(Q2Presentation.Induction.XRZero.NRQ2Presentation.Induction.XRZero.NR {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Subgroup p.fst.YThe Frattini layer as the quotient kernel.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) ⋯ ⋯) (Q2Presentation.TorsorProgram.quotientFrameQ2Presentation.TorsorProgram.quotientFrame (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y) [hNn : N.Normal] (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) (F : Q2Presentation.BoundaryFrame Yt) : Q2Presentation.BoundaryFrame (Q2Presentation.TorsorProgram.quotientFramedTarget Yt N hNLY hNθ)The frame transports verbatim (`H`, `E`, `α`, `ψ`, `β` unchanged).pQ2Presentation.Induction.FramedPair.fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.(Q2Presentation.Induction.XRZero.NRQ2Presentation.Induction.XRZero.NR {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Subgroup p.fst.YThe Frattini layer as the quotient kernel.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) ⋯ ⋯ pQ2Presentation.Induction.FramedPair.sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.)) (f₀Q2Presentation.TorsorProgram.liftHom p.fst (Q2Presentation.Induction.XRZero.NR chief K) ⋯ ⋯ Q2Presentation.boundaryPackage_GQ2 p.snd g: Q2Presentation.TorsorProgram.liftHomQ2Presentation.TorsorProgram.liftHom (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y) [hNn : N.Normal] (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (F : Q2Presentation.BoundaryFrame Yt) (g : Q2Presentation.boundaryFramedSurj B (Q2Presentation.TorsorProgram.quotientFramedTarget Yt N hNLY hNθ) (Q2Presentation.TorsorProgram.quotientFrame Yt N hNLY hNθ F)) : Type**All framed lifts** of a child-framed surjection (surjectivity NOT imposed; the Frattini argument recovers it per use-site).pQ2Presentation.Induction.FramedPair.fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.(Q2Presentation.Induction.XRZero.NRQ2Presentation.Induction.XRZero.NR {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Subgroup p.fst.YThe Frattini layer as the quotient kernel.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) ⋯ ⋯ Q2Presentation.boundaryPackage_GQ2Q2Presentation.boundaryPackage_GQ2 : Q2Presentation.BoundaryPackage Q2Presentation.GQ2Profinite**The local boundary package** `boundaryPackage_GQ2 : BoundaryPackage G_{ℚ₂}` (manuscript Prop 3.14 `prop:compatiblemarking` for `Γ = G_{ℚ₂}`; plan Turn 4 §6), the `G_{ℚ₂}`-side instance of the uniform Stage-C boundary datum. * `tameMap`/`tame_surj`/`tame_nu` — the local tame quotient `G_{ℚ₂} ↠ T_A` with unramified marking `ν_loc`, from the axiom `gq2_tame_quotient` (Prop 3.2 + the local half of Prop `compatiblemarking`); * `pro2Map`/`pro2_surj`/`pro2_nu` — the local maximal pro-`2` quotient `G_{ℚ₂} ↠ Π` with the *same* unramified marking `ν_loc`, proved from the fully marked Labute comparison `labute_GQ2_maxPro2_marked` (`pro2Map_loc`, `pro2Map_loc_surjective`, `pro2Map_loc_nu`); * `nu := ν_loc` — the common unramified character through which both factor.pQ2Presentation.Induction.FramedPair.sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GQ2 (Q2Presentation.TorsorProgram.quotientFramedTarget p.fst (Q2Presentation.Induction.XRZero.NR chief K) ⋯ ⋯) (Q2Presentation.TorsorProgram.quotientFrame p.fst (Q2Presentation.Induction.XRZero.NR chief K) ⋯ ⋯ p.snd)), Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number. If `α` is infinite, `Nat.card α = 0`.(Q2Presentation.TorsorProgram.Z1Q2Presentation.TorsorProgram.Z1 (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y) [hNn : N.Normal] (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (F : Q2Presentation.BoundaryFrame Yt) (g : Q2Presentation.boundaryFramedSurj B (Q2Presentation.TorsorProgram.quotientFramedTarget Yt N hNLY hNθ) (Q2Presentation.TorsorProgram.quotientFrame Yt N hNLY hNθ F)) (f₀ : Q2Presentation.TorsorProgram.liftHom Yt N hNLY hNθ B F g) : Type**The twisted cocycle set** relative to a base lift.pQ2Presentation.Induction.FramedPair.fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.(Q2Presentation.Induction.XRZero.NRQ2Presentation.Induction.XRZero.NR {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Subgroup p.fst.YThe Frattini layer as the quotient kernel.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) ⋯ ⋯ Q2Presentation.boundaryPackage_GQ2Q2Presentation.boundaryPackage_GQ2 : Q2Presentation.BoundaryPackage Q2Presentation.GQ2Profinite**The local boundary package** `boundaryPackage_GQ2 : BoundaryPackage G_{ℚ₂}` (manuscript Prop 3.14 `prop:compatiblemarking` for `Γ = G_{ℚ₂}`; plan Turn 4 §6), the `G_{ℚ₂}`-side instance of the uniform Stage-C boundary datum. * `tameMap`/`tame_surj`/`tame_nu` — the local tame quotient `G_{ℚ₂} ↠ T_A` with unramified marking `ν_loc`, from the axiom `gq2_tame_quotient` (Prop 3.2 + the local half of Prop `compatiblemarking`); * `pro2Map`/`pro2_surj`/`pro2_nu` — the local maximal pro-`2` quotient `G_{ℚ₂} ↠ Π` with the *same* unramified marking `ν_loc`, proved from the fully marked Labute comparison `labute_GQ2_maxPro2_marked` (`pro2Map_loc`, `pro2Map_loc_surjective`, `pro2Map_loc_nu`); * `nu := ν_loc` — the common unramified character through which both factor.pQ2Presentation.Induction.FramedPair.sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GQ2 (Q2Presentation.TorsorProgram.quotientFramedTarget p.fst (Q2Presentation.Induction.XRZero.NR chief K) ⋯ ⋯) (Q2Presentation.TorsorProgram.quotientFrame p.fst (Q2Presentation.Induction.XRZero.NR chief K) ⋯ ⋯ p.snd)f₀Q2Presentation.TorsorProgram.liftHom p.fst (Q2Presentation.Induction.XRZero.NR chief K) ⋯ ⋯ Q2Presentation.boundaryPackage_GQ2 p.snd g) =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`. We use `a = b` as notation for `Eq a b`. A fundamental property of equality is that it is an equivalence relation. ``` variable (α : Type) (a b c d : α) variable (hab : a = b) (hcb : c = b) (hcd : c = d) example : a = d := Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd ``` Equality is much more than an equivalence relation, however. It has the important property that every assertion respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value. That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`. Example: ``` example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := Eq.subst h1 h2 example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := h1 ▸ h2 ``` The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`. For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality) Conventions for notations in identifiers: * The recommended spelling of `=` in identifiers is `eq`.2 ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `^` in identifiers is `pow`.(HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.2 *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.kdimℕ)HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.theorem Q2Presentation.Induction.XRZero.sec7_xrzero_cochainData {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|`.} (h¬Q2Presentation.Induction.ScalarTerminal p: ¬Not (a : Prop) : Prop`Not p`, or `¬p`, is the negation of `p`. It is defined to be `p → False`, so if your goal is `¬p` you can use `intro h` to turn the goal into `h : p ⊢ False`, and if you have `hn : ¬p` and `h : p` then `hn h : False` and `(hn h).elim` will prove anything. For more information: [Propositional Logic](https://lean-lang.org/theorem_proving_in_lean4/propositions_and_proofs.html#propositional-logic) Conventions for notations in identifiers: * The recommended spelling of `¬` in identifiers is `not`.Q2Presentation.Induction.ScalarTerminalQ2Presentation.Induction.ScalarTerminal (p : Q2Presentation.Induction.FramedPair) : Prop**Scalar-terminal framed pair.**pQ2Presentation.Induction.FramedPair) (chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p: Q2Presentation.Induction.FirstNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor (p : Q2Presentation.Induction.FramedPair) : TypeA non-scalar chief factor of `L_Y` that is **first**: every chief factor strictly below it (i.e. with upper term contained in `lower`) is scalar. This is the manuscript's choice `S ◁ P` at l.3616–3623 ("all chief factors below `S` are scalar and `V` is the first non-scalar simple factor"), which `lem:collapse` requires for the coprime step `[S, Ñ] = 1`.pQ2Presentation.Induction.FramedPair) (KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor: Q2Presentation.Induction.KernelMinimalQ2Presentation.Induction.KernelMinimal {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.NonScalarChiefFactor p) : TypeThe manuscript's kernel choice (l.3623): `K ◁ Y`, `K ≤ P`, `KS = P`, and `K` is **⊆-minimal** with these properties — stated as: any `Y`-normal `K' ≤ K` still joining with `S` to `P` equals `K`. (This, not leastness among all candidates, is what `lem:simplehead` and `lem:collapse` use: both apply it to subgroups of `K`.)chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p.toNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor.toNonScalarChiefFactor {p : Q2Presentation.Induction.FramedPair} (self : Q2Presentation.Induction.FirstNonScalarChiefFactor p) : Q2Presentation.Induction.NonScalarChiefFactor p) (hR1 < Nat.card ↥(Q2Presentation.Induction.kernelFrattini K): 1 <LT.lt.{u} {α : Type u} [self : LT α] : α → α → PropThe less-than relation: `x < y` Conventions for notations in identifiers: * The recommended spelling of `<` in identifiers is `lt`.Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number. If `α` is infinite, `Nat.card α = 0`.↥(Q2Presentation.Induction.kernelFrattiniQ2Presentation.Induction.kernelFrattini {p : Q2Presentation.Induction.FramedPair} {chief : Q2Presentation.Induction.NonScalarChiefFactor p} (K : Q2Presentation.Induction.KernelMinimal chief) : Subgroup p.fst.YThe literal Frattini subgroup `R = Φ(K)` of the kernel, as a subgroup of `Y` (the manuscript's `R`, l.3626).KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)) (hchar¬∃ lam, lam ≠ 0 ∧ ∀ (c : (Q2Presentation.Induction.sec7RawTowerPacketCanonical chief K).rawModuleData.C), lam ∘ₗ ↑((Q2Presentation.Induction.sec7RawTowerPacketCanonical chief K).rawActionData.actR c) = lam: ¬Not (a : Prop) : Prop`Not p`, or `¬p`, is the negation of `p`. It is defined to be `p → False`, so if your goal is `¬p` you can use `intro h` to turn the goal into `h : p ⊢ False`, and if you have `hn : ¬p` and `h : p` then `hn h : False` and `(hn h).elim` will prove anything. For more information: [Propositional Logic](https://lean-lang.org/theorem_proving_in_lean4/propositions_and_proofs.html#propositional-logic) Conventions for notations in identifiers: * The recommended spelling of `¬` in identifiers is `not`.∃ lamModule.Dual (ZMod 2) (Q2Presentation.Induction.sec7RawTowerPacketCanonical chief K).rawModuleData.R, lamModule.Dual (ZMod 2) (Q2Presentation.Induction.sec7RawTowerPacketCanonical chief K).rawModuleData.R≠Ne.{u} {α : Sort u} (a b : α) : Prop`a ≠ b`, or `Ne a b` is defined as `¬ (a = b)` or `a = b → False`, and asserts that `a` and `b` are not equal. Conventions for notations in identifiers: * The recommended spelling of `≠` in identifiers is `ne`.0 ∧And (a b : Prop) : Prop`And a b`, or `a ∧ b`, is the conjunction of propositions. It can be constructed and destructed like a pair: if `ha : a` and `hb : b` then `⟨ha, hb⟩ : a ∧ b`, and if `h : a ∧ b` then `h.left : a` and `h.right : b`. Conventions for notations in identifiers: * The recommended spelling of `∧` in identifiers is `and`. * The recommended spelling of `/\` in identifiers is `and` (prefer `∧` over `/\`).∀ (c(Q2Presentation.Induction.sec7RawTowerPacketCanonical chief K).rawModuleData.C: (Q2Presentation.Induction.sec7RawTowerPacketCanonicalQ2Presentation.Induction.sec7RawTowerPacketCanonical {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.Sec7RawTowerPacket chief KThe canonical raw tower packet — the literal §7 constructors (checkpoint-F9). Using this definitional packet (instead of an opaque `Nonempty`-obtained one) lets the crux-lowered pushout packet of `Section7PushoutConstruction` be consumed directly.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).rawModuleDataQ2Presentation.Induction.Sec7RawTowerPacket.rawModuleData {p : Q2Presentation.Induction.FramedPair} {chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p} {K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor} (self : Q2Presentation.Induction.Sec7RawTowerPacket chief K) : Q2Presentation.Induction.MinimalBlockRawModuleData p chief.toNonScalarChiefFactor.CQ2Presentation.Induction.MinimalBlockRawModuleData.C {p : Q2Presentation.Induction.FramedPair} {chief : Q2Presentation.Induction.NonScalarChiefFactor p} (self : Q2Presentation.Induction.MinimalBlockRawModuleData p chief) : Type), lamModule.Dual (ZMod 2) (Q2Presentation.Induction.sec7RawTowerPacketCanonical chief K).rawModuleData.R∘ₗLinearMap.comp.{u_2, u_3, u_4, u_9, u_10, u_11} {R₁ : Type u_2} {R₂ : Type u_3} {R₃ : Type u_4} {M₁ : Type u_9} {M₂ : Type u_10} {M₃ : Type u_11} [Semiring R₁] [Semiring R₂] [Semiring R₃] [AddCommMonoid M₁] [AddCommMonoid M₂] [AddCommMonoid M₃] {module_M₁ : Module R₁ M₁} {module_M₂ : Module R₂ M₂} {module_M₃ : Module R₃ M₃} {σ₁₂ : R₁ →+* R₂} {σ₂₃ : R₂ →+* R₃} {σ₁₃ : R₁ →+* R₃} [RingHomCompTriple σ₁₂ σ₂₃ σ₁₃] (f : M₂ →ₛₗ[σ₂₃] M₃) (g : M₁ →ₛₗ[σ₁₂] M₂) : M₁ →ₛₗ[σ₁₃] M₃Composition of two linear maps is a linear map↑((Q2Presentation.Induction.sec7RawTowerPacketCanonicalQ2Presentation.Induction.sec7RawTowerPacketCanonical {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.Sec7RawTowerPacket chief KThe canonical raw tower packet — the literal §7 constructors (checkpoint-F9). Using this definitional packet (instead of an opaque `Nonempty`-obtained one) lets the crux-lowered pushout packet of `Section7PushoutConstruction` be consumed directly.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).rawActionDataQ2Presentation.Induction.Sec7RawTowerPacket.rawActionData {p : Q2Presentation.Induction.FramedPair} {chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p} {K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor} (self : Q2Presentation.Induction.Sec7RawTowerPacket chief K) : Q2Presentation.Induction.MinimalBlockRawActionData self.rawModuleData.actRQ2Presentation.Induction.MinimalBlockRawActionData.actR {p : Q2Presentation.Induction.FramedPair} {chief : Q2Presentation.Induction.NonScalarChiefFactor p} {D : Q2Presentation.Induction.MinimalBlockRawModuleData p chief} (self : Q2Presentation.Induction.MinimalBlockRawActionData D) : D.C →* D.R ≃ₗ[ZMod 2] D.Rc(Q2Presentation.Induction.sec7RawTowerPacketCanonical chief K).rawModuleData.C) =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`. We use `a = b` as notation for `Eq a b`. A fundamental property of equality is that it is an equivalence relation. ``` variable (α : Type) (a b c d : α) variable (hab : a = b) (hcb : c = b) (hcd : c = d) example : a = d := Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd ``` Equality is much more than an equivalence relation, however. It has the important property that every assertion respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value. That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`. Example: ``` example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := Eq.subst h1 h2 example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := h1 ▸ h2 ``` The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`. For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality) Conventions for notations in identifiers: * The recommended spelling of `=` in identifiers is `eq`.lamModule.Dual (ZMod 2) (Q2Presentation.Induction.sec7RawTowerPacketCanonical chief K).rawModuleData.R) : ∃ kdimℕ, (∀ (gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GammaA (Q2Presentation.Induction.XRZero.xrChild chief K).fst (Q2Presentation.Induction.XRZero.xrChild chief K).snd: Q2Presentation.boundaryFramedSurjQ2Presentation.boundaryFramedSurj {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (Yt : Q2Presentation.BoundaryFramedTarget) (F : Q2Presentation.BoundaryFrame Yt) : TypeThe **boundary-framed surjections** `e_Γ^β(𝒴)` (manuscript `eq:eGamma`): the continuous surjections `f : Γ ↠ Y` whose induced map to `H × E` is the prescribed `β ∘ b_Γ`, i.e. `q_Y ∘ f = β ∘ b_Γ`. This is the subtype counted in Theorem 4.2; its cardinality is `e_Γ^β(𝒴)`.Q2Presentation.boundaryPackage_GammaAQ2Presentation.boundaryPackage_GammaA : Q2Presentation.BoundaryPackage Q2Presentation.GammaA**The candidate boundary package** (manuscript Prop 3.14, `prop:compatiblemarking`; plan Turn 4 §6). The Stage-C data of `Γ_A`: the common tame quotient `gammaTameMap`, the maximal pro-`2` quotient `p : Γ_A ⟶ Π`, and the common unramified character `ν = gammaTameMap ≫ ν_t`, through which both factor.(Q2Presentation.Induction.XRZero.xrChildQ2Presentation.Induction.XRZero.xrChild {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPairThe `𝒳_R = 0` child: the quotient framed pair at `N = Φ`-layer.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.(Q2Presentation.Induction.XRZero.xrChildQ2Presentation.Induction.XRZero.xrChild {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPairThe `𝒳_R = 0` child: the quotient framed pair at `N = Φ`-layer.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.), NonemptyNonempty.{u} (α : Sort u) : Prop`Nonempty α` is a typeclass that says that `α` is not an empty type, that is, there exists an element in the type. It differs from `Inhabited α` in that `Nonempty α` is a `Prop`, which means that it does not actually carry an element of `α`, only a proof that *there exists* such an element. Given `Nonempty α`, you can construct an element of `α` *nonconstructively* using `Classical.choice`.(Q2Presentation.TorsorProgram.liftHomQ2Presentation.TorsorProgram.liftHom (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y) [hNn : N.Normal] (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (F : Q2Presentation.BoundaryFrame Yt) (g : Q2Presentation.boundaryFramedSurj B (Q2Presentation.TorsorProgram.quotientFramedTarget Yt N hNLY hNθ) (Q2Presentation.TorsorProgram.quotientFrame Yt N hNLY hNθ F)) : Type**All framed lifts** of a child-framed surjection (surjectivity NOT imposed; the Frattini argument recovers it per use-site).pQ2Presentation.Induction.FramedPair.fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.(Q2Presentation.Induction.XRZero.NRQ2Presentation.Induction.XRZero.NR {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Subgroup p.fst.YThe Frattini layer as the quotient kernel.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) ⋯ ⋯ Q2Presentation.boundaryPackage_GammaAQ2Presentation.boundaryPackage_GammaA : Q2Presentation.BoundaryPackage Q2Presentation.GammaA**The candidate boundary package** (manuscript Prop 3.14, `prop:compatiblemarking`; plan Turn 4 §6). The Stage-C data of `Γ_A`: the common tame quotient `gammaTameMap`, the maximal pro-`2` quotient `p : Γ_A ⟶ Π`, and the common unramified character `ν = gammaTameMap ≫ ν_t`, through which both factor.pQ2Presentation.Induction.FramedPair.sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GammaA (Q2Presentation.Induction.XRZero.xrChild chief K).fst (Q2Presentation.Induction.XRZero.xrChild chief K).snd)) ∧And (a b : Prop) : Prop`And a b`, or `a ∧ b`, is the conjunction of propositions. It can be constructed and destructed like a pair: if `ha : a` and `hb : b` then `⟨ha, hb⟩ : a ∧ b`, and if `h : a ∧ b` then `h.left : a` and `h.right : b`. Conventions for notations in identifiers: * The recommended spelling of `∧` in identifiers is `and`. * The recommended spelling of `/\` in identifiers is `and` (prefer `∧` over `/\`).(∀ (gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GammaA (Q2Presentation.TorsorProgram.quotientFramedTarget p.fst (Q2Presentation.Induction.XRZero.NR chief K) ⋯ ⋯) (Q2Presentation.TorsorProgram.quotientFrame p.fst (Q2Presentation.Induction.XRZero.NR chief K) ⋯ ⋯ p.snd): Q2Presentation.boundaryFramedSurjQ2Presentation.boundaryFramedSurj {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (Yt : Q2Presentation.BoundaryFramedTarget) (F : Q2Presentation.BoundaryFrame Yt) : TypeThe **boundary-framed surjections** `e_Γ^β(𝒴)` (manuscript `eq:eGamma`): the continuous surjections `f : Γ ↠ Y` whose induced map to `H × E` is the prescribed `β ∘ b_Γ`, i.e. `q_Y ∘ f = β ∘ b_Γ`. This is the subtype counted in Theorem 4.2; its cardinality is `e_Γ^β(𝒴)`.Q2Presentation.boundaryPackage_GammaAQ2Presentation.boundaryPackage_GammaA : Q2Presentation.BoundaryPackage Q2Presentation.GammaA**The candidate boundary package** (manuscript Prop 3.14, `prop:compatiblemarking`; plan Turn 4 §6). The Stage-C data of `Γ_A`: the common tame quotient `gammaTameMap`, the maximal pro-`2` quotient `p : Γ_A ⟶ Π`, and the common unramified character `ν = gammaTameMap ≫ ν_t`, through which both factor.(Q2Presentation.TorsorProgram.quotientFramedTargetQ2Presentation.TorsorProgram.quotientFramedTarget (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y) [hNn : N.Normal] (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) : Q2Presentation.BoundaryFramedTarget**The quotient framed target** `Y/N` (same `H`, same `E`, image wild kernel).pQ2Presentation.Induction.FramedPair.fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.(Q2Presentation.Induction.XRZero.NRQ2Presentation.Induction.XRZero.NR {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Subgroup p.fst.YThe Frattini layer as the quotient kernel.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) ⋯ ⋯) (Q2Presentation.TorsorProgram.quotientFrameQ2Presentation.TorsorProgram.quotientFrame (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y) [hNn : N.Normal] (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) (F : Q2Presentation.BoundaryFrame Yt) : Q2Presentation.BoundaryFrame (Q2Presentation.TorsorProgram.quotientFramedTarget Yt N hNLY hNθ)The frame transports verbatim (`H`, `E`, `α`, `ψ`, `β` unchanged).pQ2Presentation.Induction.FramedPair.fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.(Q2Presentation.Induction.XRZero.NRQ2Presentation.Induction.XRZero.NR {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Subgroup p.fst.YThe Frattini layer as the quotient kernel.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) ⋯ ⋯ pQ2Presentation.Induction.FramedPair.sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.)) (f₀Q2Presentation.TorsorProgram.liftHom p.fst (Q2Presentation.Induction.XRZero.NR chief K) ⋯ ⋯ Q2Presentation.boundaryPackage_GammaA p.snd g: Q2Presentation.TorsorProgram.liftHomQ2Presentation.TorsorProgram.liftHom (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y) [hNn : N.Normal] (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (F : Q2Presentation.BoundaryFrame Yt) (g : Q2Presentation.boundaryFramedSurj B (Q2Presentation.TorsorProgram.quotientFramedTarget Yt N hNLY hNθ) (Q2Presentation.TorsorProgram.quotientFrame Yt N hNLY hNθ F)) : Type**All framed lifts** of a child-framed surjection (surjectivity NOT imposed; the Frattini argument recovers it per use-site).pQ2Presentation.Induction.FramedPair.fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.(Q2Presentation.Induction.XRZero.NRQ2Presentation.Induction.XRZero.NR {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Subgroup p.fst.YThe Frattini layer as the quotient kernel.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) ⋯ ⋯ Q2Presentation.boundaryPackage_GammaAQ2Presentation.boundaryPackage_GammaA : Q2Presentation.BoundaryPackage Q2Presentation.GammaA**The candidate boundary package** (manuscript Prop 3.14, `prop:compatiblemarking`; plan Turn 4 §6). The Stage-C data of `Γ_A`: the common tame quotient `gammaTameMap`, the maximal pro-`2` quotient `p : Γ_A ⟶ Π`, and the common unramified character `ν = gammaTameMap ≫ ν_t`, through which both factor.pQ2Presentation.Induction.FramedPair.sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GammaA (Q2Presentation.TorsorProgram.quotientFramedTarget p.fst (Q2Presentation.Induction.XRZero.NR chief K) ⋯ ⋯) (Q2Presentation.TorsorProgram.quotientFrame p.fst (Q2Presentation.Induction.XRZero.NR chief K) ⋯ ⋯ p.snd)), Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number. If `α` is infinite, `Nat.card α = 0`.(Q2Presentation.TorsorProgram.Z1Q2Presentation.TorsorProgram.Z1 (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y) [hNn : N.Normal] (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (F : Q2Presentation.BoundaryFrame Yt) (g : Q2Presentation.boundaryFramedSurj B (Q2Presentation.TorsorProgram.quotientFramedTarget Yt N hNLY hNθ) (Q2Presentation.TorsorProgram.quotientFrame Yt N hNLY hNθ F)) (f₀ : Q2Presentation.TorsorProgram.liftHom Yt N hNLY hNθ B F g) : Type**The twisted cocycle set** relative to a base lift.pQ2Presentation.Induction.FramedPair.fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.(Q2Presentation.Induction.XRZero.NRQ2Presentation.Induction.XRZero.NR {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Subgroup p.fst.YThe Frattini layer as the quotient kernel.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) ⋯ ⋯ Q2Presentation.boundaryPackage_GammaAQ2Presentation.boundaryPackage_GammaA : Q2Presentation.BoundaryPackage Q2Presentation.GammaA**The candidate boundary package** (manuscript Prop 3.14, `prop:compatiblemarking`; plan Turn 4 §6). The Stage-C data of `Γ_A`: the common tame quotient `gammaTameMap`, the maximal pro-`2` quotient `p : Γ_A ⟶ Π`, and the common unramified character `ν = gammaTameMap ≫ ν_t`, through which both factor.pQ2Presentation.Induction.FramedPair.sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GammaA (Q2Presentation.TorsorProgram.quotientFramedTarget p.fst (Q2Presentation.Induction.XRZero.NR chief K) ⋯ ⋯) (Q2Presentation.TorsorProgram.quotientFrame p.fst (Q2Presentation.Induction.XRZero.NR chief K) ⋯ ⋯ p.snd)f₀Q2Presentation.TorsorProgram.liftHom p.fst (Q2Presentation.Induction.XRZero.NR chief K) ⋯ ⋯ Q2Presentation.boundaryPackage_GammaA p.snd g) =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`. We use `a = b` as notation for `Eq a b`. A fundamental property of equality is that it is an equivalence relation. ``` variable (α : Type) (a b c d : α) variable (hab : a = b) (hcb : c = b) (hcd : c = d) example : a = d := Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd ``` Equality is much more than an equivalence relation, however. It has the important property that every assertion respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value. That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`. Example: ``` example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := Eq.subst h1 h2 example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := h1 ▸ h2 ``` The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`. For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality) Conventions for notations in identifiers: * The recommended spelling of `=` in identifiers is `eq`.2 ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `^` in identifiers is `pow`.(HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.2 *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.kdimℕ)HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.) ∧And (a b : Prop) : Prop`And a b`, or `a ∧ b`, is the conjunction of propositions. It can be constructed and destructed like a pair: if `ha : a` and `hb : b` then `⟨ha, hb⟩ : a ∧ b`, and if `h : a ∧ b` then `h.left : a` and `h.right : b`. Conventions for notations in identifiers: * The recommended spelling of `∧` in identifiers is `and`. * The recommended spelling of `/\` in identifiers is `and` (prefer `∧` over `/\`).(∀ (gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GQ2 (Q2Presentation.Induction.XRZero.xrChild chief K).fst (Q2Presentation.Induction.XRZero.xrChild chief K).snd: Q2Presentation.boundaryFramedSurjQ2Presentation.boundaryFramedSurj {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (Yt : Q2Presentation.BoundaryFramedTarget) (F : Q2Presentation.BoundaryFrame Yt) : TypeThe **boundary-framed surjections** `e_Γ^β(𝒴)` (manuscript `eq:eGamma`): the continuous surjections `f : Γ ↠ Y` whose induced map to `H × E` is the prescribed `β ∘ b_Γ`, i.e. `q_Y ∘ f = β ∘ b_Γ`. This is the subtype counted in Theorem 4.2; its cardinality is `e_Γ^β(𝒴)`.Q2Presentation.boundaryPackage_GQ2Q2Presentation.boundaryPackage_GQ2 : Q2Presentation.BoundaryPackage Q2Presentation.GQ2Profinite**The local boundary package** `boundaryPackage_GQ2 : BoundaryPackage G_{ℚ₂}` (manuscript Prop 3.14 `prop:compatiblemarking` for `Γ = G_{ℚ₂}`; plan Turn 4 §6), the `G_{ℚ₂}`-side instance of the uniform Stage-C boundary datum. * `tameMap`/`tame_surj`/`tame_nu` — the local tame quotient `G_{ℚ₂} ↠ T_A` with unramified marking `ν_loc`, from the axiom `gq2_tame_quotient` (Prop 3.2 + the local half of Prop `compatiblemarking`); * `pro2Map`/`pro2_surj`/`pro2_nu` — the local maximal pro-`2` quotient `G_{ℚ₂} ↠ Π` with the *same* unramified marking `ν_loc`, proved from the fully marked Labute comparison `labute_GQ2_maxPro2_marked` (`pro2Map_loc`, `pro2Map_loc_surjective`, `pro2Map_loc_nu`); * `nu := ν_loc` — the common unramified character through which both factor.(Q2Presentation.Induction.XRZero.xrChildQ2Presentation.Induction.XRZero.xrChild {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPairThe `𝒳_R = 0` child: the quotient framed pair at `N = Φ`-layer.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.(Q2Presentation.Induction.XRZero.xrChildQ2Presentation.Induction.XRZero.xrChild {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPairThe `𝒳_R = 0` child: the quotient framed pair at `N = Φ`-layer.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.), NonemptyNonempty.{u} (α : Sort u) : Prop`Nonempty α` is a typeclass that says that `α` is not an empty type, that is, there exists an element in the type. It differs from `Inhabited α` in that `Nonempty α` is a `Prop`, which means that it does not actually carry an element of `α`, only a proof that *there exists* such an element. Given `Nonempty α`, you can construct an element of `α` *nonconstructively* using `Classical.choice`.(Q2Presentation.TorsorProgram.liftHomQ2Presentation.TorsorProgram.liftHom (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y) [hNn : N.Normal] (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (F : Q2Presentation.BoundaryFrame Yt) (g : Q2Presentation.boundaryFramedSurj B (Q2Presentation.TorsorProgram.quotientFramedTarget Yt N hNLY hNθ) (Q2Presentation.TorsorProgram.quotientFrame Yt N hNLY hNθ F)) : Type**All framed lifts** of a child-framed surjection (surjectivity NOT imposed; the Frattini argument recovers it per use-site).pQ2Presentation.Induction.FramedPair.fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.(Q2Presentation.Induction.XRZero.NRQ2Presentation.Induction.XRZero.NR {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Subgroup p.fst.YThe Frattini layer as the quotient kernel.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) ⋯ ⋯ Q2Presentation.boundaryPackage_GQ2Q2Presentation.boundaryPackage_GQ2 : Q2Presentation.BoundaryPackage Q2Presentation.GQ2Profinite**The local boundary package** `boundaryPackage_GQ2 : BoundaryPackage G_{ℚ₂}` (manuscript Prop 3.14 `prop:compatiblemarking` for `Γ = G_{ℚ₂}`; plan Turn 4 §6), the `G_{ℚ₂}`-side instance of the uniform Stage-C boundary datum. * `tameMap`/`tame_surj`/`tame_nu` — the local tame quotient `G_{ℚ₂} ↠ T_A` with unramified marking `ν_loc`, from the axiom `gq2_tame_quotient` (Prop 3.2 + the local half of Prop `compatiblemarking`); * `pro2Map`/`pro2_surj`/`pro2_nu` — the local maximal pro-`2` quotient `G_{ℚ₂} ↠ Π` with the *same* unramified marking `ν_loc`, proved from the fully marked Labute comparison `labute_GQ2_maxPro2_marked` (`pro2Map_loc`, `pro2Map_loc_surjective`, `pro2Map_loc_nu`); * `nu := ν_loc` — the common unramified character through which both factor.pQ2Presentation.Induction.FramedPair.sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GQ2 (Q2Presentation.Induction.XRZero.xrChild chief K).fst (Q2Presentation.Induction.XRZero.xrChild chief K).snd)) ∧And (a b : Prop) : Prop`And a b`, or `a ∧ b`, is the conjunction of propositions. It can be constructed and destructed like a pair: if `ha : a` and `hb : b` then `⟨ha, hb⟩ : a ∧ b`, and if `h : a ∧ b` then `h.left : a` and `h.right : b`. Conventions for notations in identifiers: * The recommended spelling of `∧` in identifiers is `and`. * The recommended spelling of `/\` in identifiers is `and` (prefer `∧` over `/\`).∀ (gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GQ2 (Q2Presentation.TorsorProgram.quotientFramedTarget p.fst (Q2Presentation.Induction.XRZero.NR chief K) ⋯ ⋯) (Q2Presentation.TorsorProgram.quotientFrame p.fst (Q2Presentation.Induction.XRZero.NR chief K) ⋯ ⋯ p.snd): Q2Presentation.boundaryFramedSurjQ2Presentation.boundaryFramedSurj {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (Yt : Q2Presentation.BoundaryFramedTarget) (F : Q2Presentation.BoundaryFrame Yt) : TypeThe **boundary-framed surjections** `e_Γ^β(𝒴)` (manuscript `eq:eGamma`): the continuous surjections `f : Γ ↠ Y` whose induced map to `H × E` is the prescribed `β ∘ b_Γ`, i.e. `q_Y ∘ f = β ∘ b_Γ`. This is the subtype counted in Theorem 4.2; its cardinality is `e_Γ^β(𝒴)`.Q2Presentation.boundaryPackage_GQ2Q2Presentation.boundaryPackage_GQ2 : Q2Presentation.BoundaryPackage Q2Presentation.GQ2Profinite**The local boundary package** `boundaryPackage_GQ2 : BoundaryPackage G_{ℚ₂}` (manuscript Prop 3.14 `prop:compatiblemarking` for `Γ = G_{ℚ₂}`; plan Turn 4 §6), the `G_{ℚ₂}`-side instance of the uniform Stage-C boundary datum. * `tameMap`/`tame_surj`/`tame_nu` — the local tame quotient `G_{ℚ₂} ↠ T_A` with unramified marking `ν_loc`, from the axiom `gq2_tame_quotient` (Prop 3.2 + the local half of Prop `compatiblemarking`); * `pro2Map`/`pro2_surj`/`pro2_nu` — the local maximal pro-`2` quotient `G_{ℚ₂} ↠ Π` with the *same* unramified marking `ν_loc`, proved from the fully marked Labute comparison `labute_GQ2_maxPro2_marked` (`pro2Map_loc`, `pro2Map_loc_surjective`, `pro2Map_loc_nu`); * `nu := ν_loc` — the common unramified character through which both factor.(Q2Presentation.TorsorProgram.quotientFramedTargetQ2Presentation.TorsorProgram.quotientFramedTarget (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y) [hNn : N.Normal] (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) : Q2Presentation.BoundaryFramedTarget**The quotient framed target** `Y/N` (same `H`, same `E`, image wild kernel).pQ2Presentation.Induction.FramedPair.fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.(Q2Presentation.Induction.XRZero.NRQ2Presentation.Induction.XRZero.NR {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Subgroup p.fst.YThe Frattini layer as the quotient kernel.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) ⋯ ⋯) (Q2Presentation.TorsorProgram.quotientFrameQ2Presentation.TorsorProgram.quotientFrame (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y) [hNn : N.Normal] (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) (F : Q2Presentation.BoundaryFrame Yt) : Q2Presentation.BoundaryFrame (Q2Presentation.TorsorProgram.quotientFramedTarget Yt N hNLY hNθ)The frame transports verbatim (`H`, `E`, `α`, `ψ`, `β` unchanged).pQ2Presentation.Induction.FramedPair.fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.(Q2Presentation.Induction.XRZero.NRQ2Presentation.Induction.XRZero.NR {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Subgroup p.fst.YThe Frattini layer as the quotient kernel.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) ⋯ ⋯ pQ2Presentation.Induction.FramedPair.sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.)) (f₀Q2Presentation.TorsorProgram.liftHom p.fst (Q2Presentation.Induction.XRZero.NR chief K) ⋯ ⋯ Q2Presentation.boundaryPackage_GQ2 p.snd g: Q2Presentation.TorsorProgram.liftHomQ2Presentation.TorsorProgram.liftHom (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y) [hNn : N.Normal] (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (F : Q2Presentation.BoundaryFrame Yt) (g : Q2Presentation.boundaryFramedSurj B (Q2Presentation.TorsorProgram.quotientFramedTarget Yt N hNLY hNθ) (Q2Presentation.TorsorProgram.quotientFrame Yt N hNLY hNθ F)) : Type**All framed lifts** of a child-framed surjection (surjectivity NOT imposed; the Frattini argument recovers it per use-site).pQ2Presentation.Induction.FramedPair.fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.(Q2Presentation.Induction.XRZero.NRQ2Presentation.Induction.XRZero.NR {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Subgroup p.fst.YThe Frattini layer as the quotient kernel.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) ⋯ ⋯ Q2Presentation.boundaryPackage_GQ2Q2Presentation.boundaryPackage_GQ2 : Q2Presentation.BoundaryPackage Q2Presentation.GQ2Profinite**The local boundary package** `boundaryPackage_GQ2 : BoundaryPackage G_{ℚ₂}` (manuscript Prop 3.14 `prop:compatiblemarking` for `Γ = G_{ℚ₂}`; plan Turn 4 §6), the `G_{ℚ₂}`-side instance of the uniform Stage-C boundary datum. * `tameMap`/`tame_surj`/`tame_nu` — the local tame quotient `G_{ℚ₂} ↠ T_A` with unramified marking `ν_loc`, from the axiom `gq2_tame_quotient` (Prop 3.2 + the local half of Prop `compatiblemarking`); * `pro2Map`/`pro2_surj`/`pro2_nu` — the local maximal pro-`2` quotient `G_{ℚ₂} ↠ Π` with the *same* unramified marking `ν_loc`, proved from the fully marked Labute comparison `labute_GQ2_maxPro2_marked` (`pro2Map_loc`, `pro2Map_loc_surjective`, `pro2Map_loc_nu`); * `nu := ν_loc` — the common unramified character through which both factor.pQ2Presentation.Induction.FramedPair.sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GQ2 (Q2Presentation.TorsorProgram.quotientFramedTarget p.fst (Q2Presentation.Induction.XRZero.NR chief K) ⋯ ⋯) (Q2Presentation.TorsorProgram.quotientFrame p.fst (Q2Presentation.Induction.XRZero.NR chief K) ⋯ ⋯ p.snd)), Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number. If `α` is infinite, `Nat.card α = 0`.(Q2Presentation.TorsorProgram.Z1Q2Presentation.TorsorProgram.Z1 (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y) [hNn : N.Normal] (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (F : Q2Presentation.BoundaryFrame Yt) (g : Q2Presentation.boundaryFramedSurj B (Q2Presentation.TorsorProgram.quotientFramedTarget Yt N hNLY hNθ) (Q2Presentation.TorsorProgram.quotientFrame Yt N hNLY hNθ F)) (f₀ : Q2Presentation.TorsorProgram.liftHom Yt N hNLY hNθ B F g) : Type**The twisted cocycle set** relative to a base lift.pQ2Presentation.Induction.FramedPair.fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.(Q2Presentation.Induction.XRZero.NRQ2Presentation.Induction.XRZero.NR {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Subgroup p.fst.YThe Frattini layer as the quotient kernel.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) ⋯ ⋯ Q2Presentation.boundaryPackage_GQ2Q2Presentation.boundaryPackage_GQ2 : Q2Presentation.BoundaryPackage Q2Presentation.GQ2Profinite**The local boundary package** `boundaryPackage_GQ2 : BoundaryPackage G_{ℚ₂}` (manuscript Prop 3.14 `prop:compatiblemarking` for `Γ = G_{ℚ₂}`; plan Turn 4 §6), the `G_{ℚ₂}`-side instance of the uniform Stage-C boundary datum. * `tameMap`/`tame_surj`/`tame_nu` — the local tame quotient `G_{ℚ₂} ↠ T_A` with unramified marking `ν_loc`, from the axiom `gq2_tame_quotient` (Prop 3.2 + the local half of Prop `compatiblemarking`); * `pro2Map`/`pro2_surj`/`pro2_nu` — the local maximal pro-`2` quotient `G_{ℚ₂} ↠ Π` with the *same* unramified marking `ν_loc`, proved from the fully marked Labute comparison `labute_GQ2_maxPro2_marked` (`pro2Map_loc`, `pro2Map_loc_surjective`, `pro2Map_loc_nu`); * `nu := ν_loc` — the common unramified character through which both factor.pQ2Presentation.Induction.FramedPair.sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GQ2 (Q2Presentation.TorsorProgram.quotientFramedTarget p.fst (Q2Presentation.Induction.XRZero.NR chief K) ⋯ ⋯) (Q2Presentation.TorsorProgram.quotientFrame p.fst (Q2Presentation.Induction.XRZero.NR chief K) ⋯ ⋯ p.snd)f₀Q2Presentation.TorsorProgram.liftHom p.fst (Q2Presentation.Induction.XRZero.NR chief K) ⋯ ⋯ Q2Presentation.boundaryPackage_GQ2 p.snd g) =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`. We use `a = b` as notation for `Eq a b`. A fundamental property of equality is that it is an equivalence relation. ``` variable (α : Type) (a b c d : α) variable (hab : a = b) (hcb : c = b) (hcd : c = d) example : a = d := Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd ``` Equality is much more than an equivalence relation, however. It has the important property that every assertion respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value. That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`. Example: ``` example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := Eq.subst h1 h2 example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := h1 ▸ h2 ``` The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`. For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality) Conventions for notations in identifiers: * The recommended spelling of `=` in identifiers is `eq`.2 ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `^` in identifiers is `pow`.(HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.2 *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.kdimℕ)HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.**The `𝒳_R = 0` cochain statement, PROVEN** (`lem:affinelifting` + `eq:mumultiplicity` + `lem:obstructionseparation` at `|𝒳_R| = 1`; manuscript l.4207-4262). Per source: every child-framed surjection admits a framed lift (the complete obstruction is detected by invariant characters, of which there are none), and the twisted cocycle set has the common size `2^{2·dim R}`. Derived from the sharp XR-layer keep and the canonical local-duality keep via the elementary-kernel assembly (`XRLayerKeep`). -
defdefined in Q2Presentation/Induction/ZeroEdgeFibration.leancomplete
def Q2Presentation.Induction.btLiftHom {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) {ΓProfiniteGrp.{0}: ProfiniteGrp.{0}ProfiniteGrp.{u_1} : Type (u_1 + 1)The category of profinite groups. A term of this type consists of a profinite set with a topological group structure.} (BQ2Presentation.BoundaryPackage Γ: Q2Presentation.BoundaryPackageQ2Presentation.BoundaryPackage (Γ : ProfiniteGrp.{0}) : TypeA **boundary package** on a profinite group `Γ`: the uniform Stage-C data of a tame quotient, a maximal pro-`2` quotient, and a common unramified character `ℤ₂` through which both factor (manuscript Prop 3.14, `prop:compatiblemarking`; plan Turn 4 §6). The compatibility `tameMap ≫ ν_t = ν = pro2Map ≫ ν_2` records that the two markings agree on the full unramified coordinate, not merely modulo `2`.ΓProfiniteGrp.{0}) (ρQ2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst (Q2Presentation.Induction.cChild chief K).snd: Q2Presentation.boundaryFramedSurjQ2Presentation.boundaryFramedSurj {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (Yt : Q2Presentation.BoundaryFramedTarget) (F : Q2Presentation.BoundaryFrame Yt) : TypeThe **boundary-framed surjections** `e_Γ^β(𝒴)` (manuscript `eq:eGamma`): the continuous surjections `f : Γ ↠ Y` whose induced map to `H × E` is the prescribed `β ∘ b_Γ`, i.e. `q_Y ∘ f = β ∘ b_Γ`. This is the subtype counted in Theorem 4.2; its cardinality is `e_Γ^β(𝒴)`.BQ2Presentation.BoundaryPackage Γ(Q2Presentation.Induction.cChildQ2Presentation.Induction.cChild {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPair**The C-child framed pair** (the carrier of `X_Γ(C)`; manuscript `C = Y/K` via `B/M' ≅ C`, `mChildCollapse`).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.(Q2Presentation.Induction.cChildQ2Presentation.Induction.cChild {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPair**The C-child framed pair** (the carrier of `X_Γ(C)`; manuscript `C = Y/K` via `B/M' ≅ C`, `mChildCollapse`).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.) : TypeA type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`.def Q2Presentation.Induction.btLiftHom {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) {ΓProfiniteGrp.{0}: ProfiniteGrp.{0}ProfiniteGrp.{u_1} : Type (u_1 + 1)The category of profinite groups. A term of this type consists of a profinite set with a topological group structure.} (BQ2Presentation.BoundaryPackage Γ: Q2Presentation.BoundaryPackageQ2Presentation.BoundaryPackage (Γ : ProfiniteGrp.{0}) : TypeA **boundary package** on a profinite group `Γ`: the uniform Stage-C data of a tame quotient, a maximal pro-`2` quotient, and a common unramified character `ℤ₂` through which both factor (manuscript Prop 3.14, `prop:compatiblemarking`; plan Turn 4 §6). The compatibility `tameMap ≫ ν_t = ν = pro2Map ≫ ν_2` records that the two markings agree on the full unramified coordinate, not merely modulo `2`.ΓProfiniteGrp.{0}) (ρQ2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst (Q2Presentation.Induction.cChild chief K).snd: Q2Presentation.boundaryFramedSurjQ2Presentation.boundaryFramedSurj {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (Yt : Q2Presentation.BoundaryFramedTarget) (F : Q2Presentation.BoundaryFrame Yt) : TypeThe **boundary-framed surjections** `e_Γ^β(𝒴)` (manuscript `eq:eGamma`): the continuous surjections `f : Γ ↠ Y` whose induced map to `H × E` is the prescribed `β ∘ b_Γ`, i.e. `q_Y ∘ f = β ∘ b_Γ`. This is the subtype counted in Theorem 4.2; its cardinality is `e_Γ^β(𝒴)`.BQ2Presentation.BoundaryPackage Γ(Q2Presentation.Induction.cChildQ2Presentation.Induction.cChild {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPair**The C-child framed pair** (the carrier of `X_Γ(C)`; manuscript `C = Y/K` via `B/M' ≅ C`, `mChildCollapse`).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.(Q2Presentation.Induction.cChildQ2Presentation.Induction.cChild {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPair**The C-child framed pair** (the carrier of `X_Γ(C)`; manuscript `C = Y/K` via `B/M' ≅ C`, `mChildCollapse`).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.) : TypeA type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`.**The `V⋊C`-lifts of a lower map `ρ`**: framed continuous homs into `B/T'` over ρ̄ (through `btProj`; the frame clause is the house `q_Y = β`-condition — surjectivity NOT imposed, `lem:affinelifting`'s weak coordinates).
-
defdefined in Q2Presentation/Induction/ZeroEdgeFibration.leancomplete
def Q2Presentation.Induction.edgeZ1EquivBtLift {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) {ΓProfiniteGrp.{0}: ProfiniteGrp.{0}ProfiniteGrp.{u_1} : Type (u_1 + 1)The category of profinite groups. A term of this type consists of a profinite set with a topological group structure.} (BQ2Presentation.BoundaryPackage Γ: Q2Presentation.BoundaryPackageQ2Presentation.BoundaryPackage (Γ : ProfiniteGrp.{0}) : TypeA **boundary package** on a profinite group `Γ`: the uniform Stage-C data of a tame quotient, a maximal pro-`2` quotient, and a common unramified character `ℤ₂` through which both factor (manuscript Prop 3.14, `prop:compatiblemarking`; plan Turn 4 §6). The compatibility `tameMap ≫ ν_t = ν = pro2Map ≫ ν_2` records that the two markings agree on the full unramified coordinate, not merely modulo `2`.ΓProfiniteGrp.{0}) (ρQ2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst (Q2Presentation.Induction.cChild chief K).snd: Q2Presentation.boundaryFramedSurjQ2Presentation.boundaryFramedSurj {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (Yt : Q2Presentation.BoundaryFramedTarget) (F : Q2Presentation.BoundaryFrame Yt) : TypeThe **boundary-framed surjections** `e_Γ^β(𝒴)` (manuscript `eq:eGamma`): the continuous surjections `f : Γ ↠ Y` whose induced map to `H × E` is the prescribed `β ∘ b_Γ`, i.e. `q_Y ∘ f = β ∘ b_Γ`. This is the subtype counted in Theorem 4.2; its cardinality is `e_Γ^β(𝒴)`.BQ2Presentation.BoundaryPackage Γ(Q2Presentation.Induction.cChildQ2Presentation.Induction.cChild {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPair**The C-child framed pair** (the carrier of `X_Γ(C)`; manuscript `C = Y/K` via `B/M' ≅ C`, `mChildCollapse`).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.(Q2Presentation.Induction.cChildQ2Presentation.Induction.cChild {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPair**The C-child framed pair** (the carrier of `X_Γ(C)`; manuscript `C = Y/K` via `B/M' ≅ C`, `mChildCollapse`).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.) (sQ2Presentation.Induction.towerC K → (Q2Presentation.Induction.btChild chief K).fst.Y: Q2Presentation.Induction.towerCQ2Presentation.Induction.towerC {p : Q2Presentation.Induction.FramedPair} {chief : Q2Presentation.Induction.NonScalarChiefFactor p} (K : Q2Presentation.Induction.KernelMinimal chief) : TypeThe lower target `C = Y/K` (`eq:targettower`).KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor→ (Q2Presentation.Induction.btChildQ2Presentation.Induction.btChild {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPair**The `B/T'`-child**: the framed pair the descended cover covers (`lem:transgression`'s base, manuscript l.4032–4034; the quotient of the child by the radical layer `T'`).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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`.) (hsec∀ (c : Q2Presentation.Induction.towerC K), (Q2Presentation.Induction.btProj chief K) (s c) = c: ∀ (cQ2Presentation.Induction.towerC K: Q2Presentation.Induction.towerCQ2Presentation.Induction.towerC {p : Q2Presentation.Induction.FramedPair} {chief : Q2Presentation.Induction.NonScalarChiefFactor p} (K : Q2Presentation.Induction.KernelMinimal chief) : TypeThe lower target `C = Y/K` (`eq:targettower`).KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor), (Q2Presentation.Induction.btProjQ2Presentation.Induction.btProj {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : (Q2Presentation.Induction.btChild chief K).fst.Y →* Q2Presentation.Induction.towerC K**The base projection** `btProj : B/T' ↠ C` (`T' ≤ M'` collapse).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (sQ2Presentation.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 K) (hmul∀ (c d : Q2Presentation.Induction.towerC K), s c * s d = s (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), sQ2Presentation.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`.sQ2Presentation.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`.sQ2Presentation.Induction.towerC K → (Q2Presentation.Induction.btChild chief K).fst.Y(HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.cQ2Presentation.Induction.towerC K*HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.dQ2Presentation.Induction.towerC K)HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.) : ↥(Q2Presentation.Induction.edgeZ1Q2Presentation.Induction.edgeZ1 {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (ρ : Q2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst (Q2Presentation.Induction.cChild chief K).snd) : Submodule (ZMod 2) (↑Γ.toProfinite.toTop → Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K)**`Z¹_ρ(V)`** — the `ZMod 2`-module of continuous (locally constant) `V`-valued ρ̄-twisted 1-cocycles: `z(γγ′) = z(γ) + ρ̄(γ)·z(γ′)` (THE orientation pin — `aRep_cocycle`'s house orientation; design §2.1's `W_ρ`, the engine carrier of the W2 instantiation).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactorBQ2Presentation.BoundaryPackage ΓρQ2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst (Q2Presentation.Induction.cChild chief K).snd) ≃Equiv.{u_1, u_2} (α : Sort u_1) (β : Sort u_2) : Sort (max (max 1 u_1) u_2)`α ≃ β` is the type of functions from `α → β` with a two-sided inverse.Q2Presentation.Induction.btLiftHomQ2Presentation.Induction.btLiftHom {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (ρ : Q2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst (Q2Presentation.Induction.cChild chief K).snd) : Type**The `V⋊C`-lifts of a lower map `ρ`**: framed continuous homs into `B/T'` over ρ̄ (through `btProj`; the frame clause is the house `q_Y = β`-condition — surjectivity NOT imposed, `lem:affinelifting`'s weak coordinates).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactorBQ2Presentation.BoundaryPackage ΓρQ2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst (Q2Presentation.Induction.cChild chief K).snddef Q2Presentation.Induction.edgeZ1EquivBtLift {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) {ΓProfiniteGrp.{0}: ProfiniteGrp.{0}ProfiniteGrp.{u_1} : Type (u_1 + 1)The category of profinite groups. A term of this type consists of a profinite set with a topological group structure.} (BQ2Presentation.BoundaryPackage Γ: Q2Presentation.BoundaryPackageQ2Presentation.BoundaryPackage (Γ : ProfiniteGrp.{0}) : TypeA **boundary package** on a profinite group `Γ`: the uniform Stage-C data of a tame quotient, a maximal pro-`2` quotient, and a common unramified character `ℤ₂` through which both factor (manuscript Prop 3.14, `prop:compatiblemarking`; plan Turn 4 §6). The compatibility `tameMap ≫ ν_t = ν = pro2Map ≫ ν_2` records that the two markings agree on the full unramified coordinate, not merely modulo `2`.ΓProfiniteGrp.{0}) (ρQ2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst (Q2Presentation.Induction.cChild chief K).snd: Q2Presentation.boundaryFramedSurjQ2Presentation.boundaryFramedSurj {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (Yt : Q2Presentation.BoundaryFramedTarget) (F : Q2Presentation.BoundaryFrame Yt) : TypeThe **boundary-framed surjections** `e_Γ^β(𝒴)` (manuscript `eq:eGamma`): the continuous surjections `f : Γ ↠ Y` whose induced map to `H × E` is the prescribed `β ∘ b_Γ`, i.e. `q_Y ∘ f = β ∘ b_Γ`. This is the subtype counted in Theorem 4.2; its cardinality is `e_Γ^β(𝒴)`.BQ2Presentation.BoundaryPackage Γ(Q2Presentation.Induction.cChildQ2Presentation.Induction.cChild {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPair**The C-child framed pair** (the carrier of `X_Γ(C)`; manuscript `C = Y/K` via `B/M' ≅ C`, `mChildCollapse`).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.(Q2Presentation.Induction.cChildQ2Presentation.Induction.cChild {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPair**The C-child framed pair** (the carrier of `X_Γ(C)`; manuscript `C = Y/K` via `B/M' ≅ C`, `mChildCollapse`).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.) (sQ2Presentation.Induction.towerC K → (Q2Presentation.Induction.btChild chief K).fst.Y: Q2Presentation.Induction.towerCQ2Presentation.Induction.towerC {p : Q2Presentation.Induction.FramedPair} {chief : Q2Presentation.Induction.NonScalarChiefFactor p} (K : Q2Presentation.Induction.KernelMinimal chief) : TypeThe lower target `C = Y/K` (`eq:targettower`).KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor→ (Q2Presentation.Induction.btChildQ2Presentation.Induction.btChild {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPair**The `B/T'`-child**: the framed pair the descended cover covers (`lem:transgression`'s base, manuscript l.4032–4034; the quotient of the child by the radical layer `T'`).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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`.) (hsec∀ (c : Q2Presentation.Induction.towerC K), (Q2Presentation.Induction.btProj chief K) (s c) = c: ∀ (cQ2Presentation.Induction.towerC K: Q2Presentation.Induction.towerCQ2Presentation.Induction.towerC {p : Q2Presentation.Induction.FramedPair} {chief : Q2Presentation.Induction.NonScalarChiefFactor p} (K : Q2Presentation.Induction.KernelMinimal chief) : TypeThe lower target `C = Y/K` (`eq:targettower`).KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor), (Q2Presentation.Induction.btProjQ2Presentation.Induction.btProj {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : (Q2Presentation.Induction.btChild chief K).fst.Y →* Q2Presentation.Induction.towerC K**The base projection** `btProj : B/T' ↠ C` (`T' ≤ M'` collapse).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (sQ2Presentation.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 K) (hmul∀ (c d : Q2Presentation.Induction.towerC K), s c * s d = s (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), sQ2Presentation.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`.sQ2Presentation.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`.sQ2Presentation.Induction.towerC K → (Q2Presentation.Induction.btChild chief K).fst.Y(HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.cQ2Presentation.Induction.towerC K*HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.dQ2Presentation.Induction.towerC K)HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.) : ↥(Q2Presentation.Induction.edgeZ1Q2Presentation.Induction.edgeZ1 {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (ρ : Q2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst (Q2Presentation.Induction.cChild chief K).snd) : Submodule (ZMod 2) (↑Γ.toProfinite.toTop → Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K)**`Z¹_ρ(V)`** — the `ZMod 2`-module of continuous (locally constant) `V`-valued ρ̄-twisted 1-cocycles: `z(γγ′) = z(γ) + ρ̄(γ)·z(γ′)` (THE orientation pin — `aRep_cocycle`'s house orientation; design §2.1's `W_ρ`, the engine carrier of the W2 instantiation).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactorBQ2Presentation.BoundaryPackage ΓρQ2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst (Q2Presentation.Induction.cChild chief K).snd) ≃Equiv.{u_1, u_2} (α : Sort u_1) (β : Sort u_2) : Sort (max (max 1 u_1) u_2)`α ≃ β` is the type of functions from `α → β` with a two-sided inverse.Q2Presentation.Induction.btLiftHomQ2Presentation.Induction.btLiftHom {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (ρ : Q2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst (Q2Presentation.Induction.cChild chief K).snd) : Type**The `V⋊C`-lifts of a lower map `ρ`**: framed continuous homs into `B/T'` over ρ̄ (through `btProj`; the frame clause is the house `q_Y = β`-condition — surjectivity NOT imposed, `lem:affinelifting`'s weak coordinates).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactorBQ2Presentation.BoundaryPackage ΓρQ2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst (Q2Presentation.Induction.cChild chief K).snd**The torsor trivialization** at a multiplicative section: `Z¹_ρ(V) ≃ {V⋊C-lifts of ρ}` (`lem:affinelifting`'s stage-2 carrier identification, both sources at once). -
defdefined in Q2Presentation/Induction/ZeroEdgeFibration.leancomplete
def Q2Presentation.Induction.descLiftableWeak {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)) (DQ2Presentation.Induction.EdgeComplement chief K lam hinv: Q2Presentation.Induction.EdgeComplementQ2Presentation.Induction.EdgeComplement {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) : TypeAn **edge complement**: a complement to the deck kernel inside the `T`-preimage (`lem:radicaledge`'s `s(T)`, subgroup form).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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)) (hWD.W.Normal: DQ2Presentation.Induction.EdgeComplement chief K lam hinv.WQ2Presentation.Induction.EdgeComplement.W {p : Q2Presentation.Induction.FramedPair} {chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p} {K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor} {lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))} {hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)} (self : Q2Presentation.Induction.EdgeComplement chief K lam hinv) : Subgroup (Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y.NormalSubgroup.Normal.{u_1} {G : Type u_1} [Group G] (H : Subgroup G) : PropA subgroup `H` is normal if whenever `n ∈ H`, then `g * n * g⁻¹ ∈ H` for every `g : G`) (hnelam ≠ 0: lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))≠Ne.{u} {α : Sort u} (a b : α) : Prop`a ≠ b`, or `Ne a b` is defined as `¬ (a = b)` or `a = b → False`, and asserts that `a` and `b` are not equal. Conventions for notations in identifiers: * The recommended spelling of `≠` in identifiers is `ne`.0) {ΓProfiniteGrp.{0}: ProfiniteGrp.{0}ProfiniteGrp.{u_1} : Type (u_1 + 1)The category of profinite groups. A term of this type consists of a profinite set with a topological group structure.} (BQ2Presentation.BoundaryPackage Γ: Q2Presentation.BoundaryPackageQ2Presentation.BoundaryPackage (Γ : ProfiniteGrp.{0}) : TypeA **boundary package** on a profinite group `Γ`: the uniform Stage-C data of a tame quotient, a maximal pro-`2` quotient, and a common unramified character `ℤ₂` through which both factor (manuscript Prop 3.14, `prop:compatiblemarking`; plan Turn 4 §6). The compatibility `tameMap ≫ ν_t = ν = pro2Map ≫ ν_2` records that the two markings agree on the full unramified coordinate, not merely modulo `2`.ΓProfiniteGrp.{0}) (fQ2Presentation.TorsorProgram.coverLiftTotal (Q2Presentation.Induction.XRZero.xrChild chief K).fst (Q2Presentation.Induction.mChildKernel chief K).N B (Q2Presentation.Induction.XRZero.xrChild chief K).snd: Q2Presentation.TorsorProgram.coverLiftTotalQ2Presentation.TorsorProgram.coverLiftTotal (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y) [hNn : N.Normal] {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (F : Q2Presentation.BoundaryFrame Yt) : Type**The cover-lift total space**: framed continuous homs into the AMBIENT target whose projection to the child is onto (`lem:covertransform`: all lifts of all unobstructed exact-image maps at once; surjectivity onto the ambient target NOT imposed — these are the weak lifts).(Q2Presentation.Induction.XRZero.xrChildQ2Presentation.Induction.XRZero.xrChild {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPairThe `𝒳_R = 0` child: the quotient framed pair at `N = Φ`-layer.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.(Q2Presentation.Induction.mChildKernelQ2Presentation.Induction.mChildKernel {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Lifting.ElementaryKernel (Q2Presentation.Induction.XRZero.xrChild chief K).fst**The elementary `M`-kernel at the child** `B = Y/Φ(K)` (`lem:simplehead` carrier for `lem:elementarystage`): `N = M' = K/Φ(K)`.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).NQ2Presentation.Lifting.ElementaryKernel.N {Yt : Q2Presentation.BoundaryFramedTarget} (self : Q2Presentation.Lifting.ElementaryKernel Yt) : Subgroup Yt.YBQ2Presentation.BoundaryPackage Γ(Q2Presentation.Induction.XRZero.xrChildQ2Presentation.Induction.XRZero.xrChild {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPairThe `𝒳_R = 0` child: the quotient framed pair at `N = Φ`-layer.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.) : PropThe universe of propositions. `Prop ≡ Sort 0`. Every proposition is propositionally equal to either `True` or `False`.def Q2Presentation.Induction.descLiftableWeak {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)) (DQ2Presentation.Induction.EdgeComplement chief K lam hinv: Q2Presentation.Induction.EdgeComplementQ2Presentation.Induction.EdgeComplement {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) : TypeAn **edge complement**: a complement to the deck kernel inside the `T`-preimage (`lem:radicaledge`'s `s(T)`, subgroup form).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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)) (hWD.W.Normal: DQ2Presentation.Induction.EdgeComplement chief K lam hinv.WQ2Presentation.Induction.EdgeComplement.W {p : Q2Presentation.Induction.FramedPair} {chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p} {K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor} {lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))} {hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)} (self : Q2Presentation.Induction.EdgeComplement chief K lam hinv) : Subgroup (Q2Presentation.Lifting.scalarCoverTarget (Q2Presentation.Induction.xrKernel chief K) lam hinv).Y.NormalSubgroup.Normal.{u_1} {G : Type u_1} [Group G] (H : Subgroup G) : PropA subgroup `H` is normal if whenever `n ∈ H`, then `g * n * g⁻¹ ∈ H` for every `g : G`) (hnelam ≠ 0: lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))≠Ne.{u} {α : Sort u} (a b : α) : Prop`a ≠ b`, or `Ne a b` is defined as `¬ (a = b)` or `a = b → False`, and asserts that `a` and `b` are not equal. Conventions for notations in identifiers: * The recommended spelling of `≠` in identifiers is `ne`.0) {ΓProfiniteGrp.{0}: ProfiniteGrp.{0}ProfiniteGrp.{u_1} : Type (u_1 + 1)The category of profinite groups. A term of this type consists of a profinite set with a topological group structure.} (BQ2Presentation.BoundaryPackage Γ: Q2Presentation.BoundaryPackageQ2Presentation.BoundaryPackage (Γ : ProfiniteGrp.{0}) : TypeA **boundary package** on a profinite group `Γ`: the uniform Stage-C data of a tame quotient, a maximal pro-`2` quotient, and a common unramified character `ℤ₂` through which both factor (manuscript Prop 3.14, `prop:compatiblemarking`; plan Turn 4 §6). The compatibility `tameMap ≫ ν_t = ν = pro2Map ≫ ν_2` records that the two markings agree on the full unramified coordinate, not merely modulo `2`.ΓProfiniteGrp.{0}) (fQ2Presentation.TorsorProgram.coverLiftTotal (Q2Presentation.Induction.XRZero.xrChild chief K).fst (Q2Presentation.Induction.mChildKernel chief K).N B (Q2Presentation.Induction.XRZero.xrChild chief K).snd: Q2Presentation.TorsorProgram.coverLiftTotalQ2Presentation.TorsorProgram.coverLiftTotal (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y) [hNn : N.Normal] {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (F : Q2Presentation.BoundaryFrame Yt) : Type**The cover-lift total space**: framed continuous homs into the AMBIENT target whose projection to the child is onto (`lem:covertransform`: all lifts of all unobstructed exact-image maps at once; surjectivity onto the ambient target NOT imposed — these are the weak lifts).(Q2Presentation.Induction.XRZero.xrChildQ2Presentation.Induction.XRZero.xrChild {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPairThe `𝒳_R = 0` child: the quotient framed pair at `N = Φ`-layer.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.(Q2Presentation.Induction.mChildKernelQ2Presentation.Induction.mChildKernel {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Lifting.ElementaryKernel (Q2Presentation.Induction.XRZero.xrChild chief K).fst**The elementary `M`-kernel at the child** `B = Y/Φ(K)` (`lem:simplehead` carrier for `lem:elementarystage`): `N = M' = K/Φ(K)`.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).NQ2Presentation.Lifting.ElementaryKernel.N {Yt : Q2Presentation.BoundaryFramedTarget} (self : Q2Presentation.Lifting.ElementaryKernel Yt) : Subgroup Yt.YBQ2Presentation.BoundaryPackage Γ(Q2Presentation.Induction.XRZero.xrChildQ2Presentation.Induction.XRZero.xrChild {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPairThe `𝒳_R = 0` child: the quotient framed pair at `N = Φ`-layer.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.) : PropThe universe of propositions. `Prop ≡ Sort 0`. Every proposition is propositionally equal to either `True` or `False`.**`descTarget`-liftability of `f mod T′`**: a weak framed lift of the reduced map through the descended central double cover — the T′-stage of the `lem:affinelifting` fibration (frame clause in the house `q_Y = β` spelling; surjectivity NOT imposed).
-
theoremdefined in Q2Presentation/Induction/ZeroEdgeMuCandidate.leancomplete
theorem Q2Presentation.Induction.weakZ1_tChild_card_gammaA {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) (fQ2Presentation.TorsorProgram.coverLiftTotal (Q2Presentation.Induction.XRZero.xrChild chief K).fst (Q2Presentation.Induction.mChildKernel chief K).N Q2Presentation.boundaryPackage_GammaA (Q2Presentation.Induction.XRZero.xrChild chief K).snd: Q2Presentation.TorsorProgram.coverLiftTotalQ2Presentation.TorsorProgram.coverLiftTotal (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y) [hNn : N.Normal] {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (F : Q2Presentation.BoundaryFrame Yt) : Type**The cover-lift total space**: framed continuous homs into the AMBIENT target whose projection to the child is onto (`lem:covertransform`: all lifts of all unobstructed exact-image maps at once; surjectivity onto the ambient target NOT imposed — these are the weak lifts).(Q2Presentation.Induction.XRZero.xrChildQ2Presentation.Induction.XRZero.xrChild {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPairThe `𝒳_R = 0` child: the quotient framed pair at `N = Φ`-layer.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.(Q2Presentation.Induction.mChildKernelQ2Presentation.Induction.mChildKernel {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Lifting.ElementaryKernel (Q2Presentation.Induction.XRZero.xrChild chief K).fst**The elementary `M`-kernel at the child** `B = Y/Φ(K)` (`lem:simplehead` carrier for `lem:elementarystage`): `N = M' = K/Φ(K)`.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).NQ2Presentation.Lifting.ElementaryKernel.N {Yt : Q2Presentation.BoundaryFramedTarget} (self : Q2Presentation.Lifting.ElementaryKernel Yt) : Subgroup Yt.YQ2Presentation.boundaryPackage_GammaAQ2Presentation.boundaryPackage_GammaA : Q2Presentation.BoundaryPackage Q2Presentation.GammaA**The candidate boundary package** (manuscript Prop 3.14, `prop:compatiblemarking`; plan Turn 4 §6). The Stage-C data of `Γ_A`: the common tame quotient `gammaTameMap`, the maximal pro-`2` quotient `p : Γ_A ⟶ Π`, and the common unramified character `ν = gammaTameMap ≫ ν_t`, through which both factor.(Q2Presentation.Induction.XRZero.xrChildQ2Presentation.Induction.XRZero.xrChild {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPairThe `𝒳_R = 0` child: the quotient framed pair at `N = Φ`-layer.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.) : Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number. If `α` is infinite, `Nat.card α = 0`.(Q2Presentation.Induction.weakZ1Q2Presentation.Induction.weakZ1 {Yt : Q2Presentation.BoundaryFramedTarget} (E : Q2Presentation.Lifting.ElementaryKernel Yt) {Γ : ProfiniteGrp.{0}} (h : Γ ⟶ ProfiniteGrp.ofFiniteGrp (FiniteGrp.of Yt.Y)) : Type**The weak-base twisted-cocycle set** of an ARBITRARY continuous hom into the target, relative to an elementary kernel — the weak-base generalization of `TorsorProgram.Z1` (no surjectivity onto the quotient imposed; the basepoint is the hom itself). Carrier chosen to match the `EdgeTwistLocalCore` twist layer verbatim.(Q2Presentation.Induction.tChildKernelQ2Presentation.Induction.tChildKernel {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Lifting.ElementaryKernel (Q2Presentation.Induction.XRZero.xrChild chief K).fst**The elementary `T`-kernel at the child** (for the `|Z¹(T)|`-numerics and the twist calculus): `N = T' = (K∩S)Φ(K)/Φ(K)`.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) ↑fQ2Presentation.TorsorProgram.coverLiftTotal (Q2Presentation.Induction.XRZero.xrChild chief K).fst (Q2Presentation.Induction.mChildKernel chief K).N Q2Presentation.boundaryPackage_GammaA (Q2Presentation.Induction.XRZero.xrChild chief K).snd) =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`. We use `a = b` as notation for `Eq a b`. A fundamental property of equality is that it is an equivalence relation. ``` variable (α : Type) (a b c d : α) variable (hab : a = b) (hcb : c = b) (hcd : c = d) example : a = d := Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd ``` Equality is much more than an equivalence relation, however. It has the important property that every assertion respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value. That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`. Example: ``` example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := Eq.subst h1 h2 example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := h1 ▸ h2 ``` The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`. For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality) Conventions for notations in identifiers: * The recommended spelling of `=` in identifiers is `eq`.2 ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `^` in identifiers is `pow`.(HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `+` in identifiers is `add`.2 *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.Q2Presentation.Induction.dimTQ2Presentation.Induction.dimT {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : ℕ`dim T`.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor+HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `+` in identifiers is `add`.Q2Presentation.Induction.rTQ2Presentation.Induction.rT {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : ℕ`r = dim 𝒳_T`.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `+` in identifiers is `add`.theorem Q2Presentation.Induction.weakZ1_tChild_card_gammaA {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) (fQ2Presentation.TorsorProgram.coverLiftTotal (Q2Presentation.Induction.XRZero.xrChild chief K).fst (Q2Presentation.Induction.mChildKernel chief K).N Q2Presentation.boundaryPackage_GammaA (Q2Presentation.Induction.XRZero.xrChild chief K).snd: Q2Presentation.TorsorProgram.coverLiftTotalQ2Presentation.TorsorProgram.coverLiftTotal (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y) [hNn : N.Normal] {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (F : Q2Presentation.BoundaryFrame Yt) : Type**The cover-lift total space**: framed continuous homs into the AMBIENT target whose projection to the child is onto (`lem:covertransform`: all lifts of all unobstructed exact-image maps at once; surjectivity onto the ambient target NOT imposed — these are the weak lifts).(Q2Presentation.Induction.XRZero.xrChildQ2Presentation.Induction.XRZero.xrChild {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPairThe `𝒳_R = 0` child: the quotient framed pair at `N = Φ`-layer.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.(Q2Presentation.Induction.mChildKernelQ2Presentation.Induction.mChildKernel {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Lifting.ElementaryKernel (Q2Presentation.Induction.XRZero.xrChild chief K).fst**The elementary `M`-kernel at the child** `B = Y/Φ(K)` (`lem:simplehead` carrier for `lem:elementarystage`): `N = M' = K/Φ(K)`.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).NQ2Presentation.Lifting.ElementaryKernel.N {Yt : Q2Presentation.BoundaryFramedTarget} (self : Q2Presentation.Lifting.ElementaryKernel Yt) : Subgroup Yt.YQ2Presentation.boundaryPackage_GammaAQ2Presentation.boundaryPackage_GammaA : Q2Presentation.BoundaryPackage Q2Presentation.GammaA**The candidate boundary package** (manuscript Prop 3.14, `prop:compatiblemarking`; plan Turn 4 §6). The Stage-C data of `Γ_A`: the common tame quotient `gammaTameMap`, the maximal pro-`2` quotient `p : Γ_A ⟶ Π`, and the common unramified character `ν = gammaTameMap ≫ ν_t`, through which both factor.(Q2Presentation.Induction.XRZero.xrChildQ2Presentation.Induction.XRZero.xrChild {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPairThe `𝒳_R = 0` child: the quotient framed pair at `N = Φ`-layer.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.) : Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number. If `α` is infinite, `Nat.card α = 0`.(Q2Presentation.Induction.weakZ1Q2Presentation.Induction.weakZ1 {Yt : Q2Presentation.BoundaryFramedTarget} (E : Q2Presentation.Lifting.ElementaryKernel Yt) {Γ : ProfiniteGrp.{0}} (h : Γ ⟶ ProfiniteGrp.ofFiniteGrp (FiniteGrp.of Yt.Y)) : Type**The weak-base twisted-cocycle set** of an ARBITRARY continuous hom into the target, relative to an elementary kernel — the weak-base generalization of `TorsorProgram.Z1` (no surjectivity onto the quotient imposed; the basepoint is the hom itself). Carrier chosen to match the `EdgeTwistLocalCore` twist layer verbatim.(Q2Presentation.Induction.tChildKernelQ2Presentation.Induction.tChildKernel {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Lifting.ElementaryKernel (Q2Presentation.Induction.XRZero.xrChild chief K).fst**The elementary `T`-kernel at the child** (for the `|Z¹(T)|`-numerics and the twist calculus): `N = T' = (K∩S)Φ(K)/Φ(K)`.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) ↑fQ2Presentation.TorsorProgram.coverLiftTotal (Q2Presentation.Induction.XRZero.xrChild chief K).fst (Q2Presentation.Induction.mChildKernel chief K).N Q2Presentation.boundaryPackage_GammaA (Q2Presentation.Induction.XRZero.xrChild chief K).snd) =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`. We use `a = b` as notation for `Eq a b`. A fundamental property of equality is that it is an equivalence relation. ``` variable (α : Type) (a b c d : α) variable (hab : a = b) (hcb : c = b) (hcd : c = d) example : a = d := Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd ``` Equality is much more than an equivalence relation, however. It has the important property that every assertion respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value. That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`. Example: ``` example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := Eq.subst h1 h2 example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := h1 ▸ h2 ``` The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`. For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality) Conventions for notations in identifiers: * The recommended spelling of `=` in identifiers is `eq`.2 ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `^` in identifiers is `pow`.(HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `+` in identifiers is `add`.2 *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.Q2Presentation.Induction.dimTQ2Presentation.Induction.dimT {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : ℕ`dim T`.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor+HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `+` in identifiers is `add`.Q2Presentation.Induction.rTQ2Presentation.Induction.rT {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : ℕ`r = dim 𝒳_T`.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `+` in identifiers is `add`.**The candidate `|Z¹(T')|`-numeric at every weak `M`-lift** (the `lem:affinelifting` candidate `T`-stage factor of `eq:mumultiplicity`; N5's `weakZ1_tChild_card` mirror): the ledger corank engine at the child `T'`-kernel gives `|Z¹_{A,f}(T')| = 2^{2·dimT + rT}` at EVERY total-space point — the corank of the row map is `rT`, the `prop:defduality` instance at the `T`-layer. -
theoremdefined in Q2Presentation/Induction/ZeroEdgeMuCandidate.leancomplete
theorem Q2Presentation.Induction.weakZ1_vLayer_card_gammaA {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) (fQ2Presentation.TorsorProgram.coverLiftTotal (Q2Presentation.Induction.btChild chief K).fst (Q2Presentation.Induction.vLayerKernel chief K).N Q2Presentation.boundaryPackage_GammaA (Q2Presentation.Induction.btChild chief K).snd: Q2Presentation.TorsorProgram.coverLiftTotalQ2Presentation.TorsorProgram.coverLiftTotal (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y) [hNn : N.Normal] {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (F : Q2Presentation.BoundaryFrame Yt) : Type**The cover-lift total space**: framed continuous homs into the AMBIENT target whose projection to the child is onto (`lem:covertransform`: all lifts of all unobstructed exact-image maps at once; surjectivity onto the ambient target NOT imposed — these are the weak lifts).(Q2Presentation.Induction.btChildQ2Presentation.Induction.btChild {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPair**The `B/T'`-child**: the framed pair the descended cover covers (`lem:transgression`'s base, manuscript l.4032–4034; the quotient of the child by the radical layer `T'`).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.(Q2Presentation.Induction.vLayerKernelQ2Presentation.Induction.vLayerKernel {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Lifting.ElementaryKernel (Q2Presentation.Induction.btChild chief K).fst**The `V`-layer elementary kernel** at the descended child `B/T'` (design §4-N5's "`ElementaryKernel btChild` packaging"; `N = vLayer ≅ V = M/T`).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).NQ2Presentation.Lifting.ElementaryKernel.N {Yt : Q2Presentation.BoundaryFramedTarget} (self : Q2Presentation.Lifting.ElementaryKernel Yt) : Subgroup Yt.YQ2Presentation.boundaryPackage_GammaAQ2Presentation.boundaryPackage_GammaA : Q2Presentation.BoundaryPackage Q2Presentation.GammaA**The candidate boundary package** (manuscript Prop 3.14, `prop:compatiblemarking`; plan Turn 4 §6). The Stage-C data of `Γ_A`: the common tame quotient `gammaTameMap`, the maximal pro-`2` quotient `p : Γ_A ⟶ Π`, and the common unramified character `ν = gammaTameMap ≫ ν_t`, through which both factor.(Q2Presentation.Induction.btChildQ2Presentation.Induction.btChild {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPair**The `B/T'`-child**: the framed pair the descended cover covers (`lem:transgression`'s base, manuscript l.4032–4034; the quotient of the child by the radical layer `T'`).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.) : Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number. If `α` is infinite, `Nat.card α = 0`.(Q2Presentation.Induction.weakZ1Q2Presentation.Induction.weakZ1 {Yt : Q2Presentation.BoundaryFramedTarget} (E : Q2Presentation.Lifting.ElementaryKernel Yt) {Γ : ProfiniteGrp.{0}} (h : Γ ⟶ ProfiniteGrp.ofFiniteGrp (FiniteGrp.of Yt.Y)) : Type**The weak-base twisted-cocycle set** of an ARBITRARY continuous hom into the target, relative to an elementary kernel — the weak-base generalization of `TorsorProgram.Z1` (no surjectivity onto the quotient imposed; the basepoint is the hom itself). Carrier chosen to match the `EdgeTwistLocalCore` twist layer verbatim.(Q2Presentation.Induction.vLayerKernelQ2Presentation.Induction.vLayerKernel {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Lifting.ElementaryKernel (Q2Presentation.Induction.btChild chief K).fst**The `V`-layer elementary kernel** at the descended child `B/T'` (design §4-N5's "`ElementaryKernel btChild` packaging"; `N = vLayer ≅ V = M/T`).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) ↑fQ2Presentation.TorsorProgram.coverLiftTotal (Q2Presentation.Induction.btChild chief K).fst (Q2Presentation.Induction.vLayerKernel chief K).N Q2Presentation.boundaryPackage_GammaA (Q2Presentation.Induction.btChild chief K).snd) =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`. We use `a = b` as notation for `Eq a b`. A fundamental property of equality is that it is an equivalence relation. ``` variable (α : Type) (a b c d : α) variable (hab : a = b) (hcb : c = b) (hcd : c = d) example : a = d := Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd ``` Equality is much more than an equivalence relation, however. It has the important property that every assertion respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value. That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`. Example: ``` example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := Eq.subst h1 h2 example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := h1 ▸ h2 ``` The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`. For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality) Conventions for notations in identifiers: * The recommended spelling of `=` in identifiers is `eq`.2 ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `^` in identifiers is `pow`.(HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.2 *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.Q2Presentation.Induction.dimVQ2Presentation.Induction.dimV {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : ℕ`d = dim V` (the head `V = M/T`).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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`.theorem Q2Presentation.Induction.weakZ1_vLayer_card_gammaA {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) (fQ2Presentation.TorsorProgram.coverLiftTotal (Q2Presentation.Induction.btChild chief K).fst (Q2Presentation.Induction.vLayerKernel chief K).N Q2Presentation.boundaryPackage_GammaA (Q2Presentation.Induction.btChild chief K).snd: Q2Presentation.TorsorProgram.coverLiftTotalQ2Presentation.TorsorProgram.coverLiftTotal (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y) [hNn : N.Normal] {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (F : Q2Presentation.BoundaryFrame Yt) : Type**The cover-lift total space**: framed continuous homs into the AMBIENT target whose projection to the child is onto (`lem:covertransform`: all lifts of all unobstructed exact-image maps at once; surjectivity onto the ambient target NOT imposed — these are the weak lifts).(Q2Presentation.Induction.btChildQ2Presentation.Induction.btChild {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPair**The `B/T'`-child**: the framed pair the descended cover covers (`lem:transgression`'s base, manuscript l.4032–4034; the quotient of the child by the radical layer `T'`).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.(Q2Presentation.Induction.vLayerKernelQ2Presentation.Induction.vLayerKernel {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Lifting.ElementaryKernel (Q2Presentation.Induction.btChild chief K).fst**The `V`-layer elementary kernel** at the descended child `B/T'` (design §4-N5's "`ElementaryKernel btChild` packaging"; `N = vLayer ≅ V = M/T`).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).NQ2Presentation.Lifting.ElementaryKernel.N {Yt : Q2Presentation.BoundaryFramedTarget} (self : Q2Presentation.Lifting.ElementaryKernel Yt) : Subgroup Yt.YQ2Presentation.boundaryPackage_GammaAQ2Presentation.boundaryPackage_GammaA : Q2Presentation.BoundaryPackage Q2Presentation.GammaA**The candidate boundary package** (manuscript Prop 3.14, `prop:compatiblemarking`; plan Turn 4 §6). The Stage-C data of `Γ_A`: the common tame quotient `gammaTameMap`, the maximal pro-`2` quotient `p : Γ_A ⟶ Π`, and the common unramified character `ν = gammaTameMap ≫ ν_t`, through which both factor.(Q2Presentation.Induction.btChildQ2Presentation.Induction.btChild {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPair**The `B/T'`-child**: the framed pair the descended cover covers (`lem:transgression`'s base, manuscript l.4032–4034; the quotient of the child by the radical layer `T'`).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.) : Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number. If `α` is infinite, `Nat.card α = 0`.(Q2Presentation.Induction.weakZ1Q2Presentation.Induction.weakZ1 {Yt : Q2Presentation.BoundaryFramedTarget} (E : Q2Presentation.Lifting.ElementaryKernel Yt) {Γ : ProfiniteGrp.{0}} (h : Γ ⟶ ProfiniteGrp.ofFiniteGrp (FiniteGrp.of Yt.Y)) : Type**The weak-base twisted-cocycle set** of an ARBITRARY continuous hom into the target, relative to an elementary kernel — the weak-base generalization of `TorsorProgram.Z1` (no surjectivity onto the quotient imposed; the basepoint is the hom itself). Carrier chosen to match the `EdgeTwistLocalCore` twist layer verbatim.(Q2Presentation.Induction.vLayerKernelQ2Presentation.Induction.vLayerKernel {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Lifting.ElementaryKernel (Q2Presentation.Induction.btChild chief K).fst**The `V`-layer elementary kernel** at the descended child `B/T'` (design §4-N5's "`ElementaryKernel btChild` packaging"; `N = vLayer ≅ V = M/T`).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) ↑fQ2Presentation.TorsorProgram.coverLiftTotal (Q2Presentation.Induction.btChild chief K).fst (Q2Presentation.Induction.vLayerKernel chief K).N Q2Presentation.boundaryPackage_GammaA (Q2Presentation.Induction.btChild chief K).snd) =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`. We use `a = b` as notation for `Eq a b`. A fundamental property of equality is that it is an equivalence relation. ``` variable (α : Type) (a b c d : α) variable (hab : a = b) (hcb : c = b) (hcd : c = d) example : a = d := Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd ``` Equality is much more than an equivalence relation, however. It has the important property that every assertion respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value. That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`. Example: ``` example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := Eq.subst h1 h2 example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := h1 ▸ h2 ``` The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`. For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality) Conventions for notations in identifiers: * The recommended spelling of `=` in identifiers is `eq`.2 ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `^` in identifiers is `pow`.(HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.2 *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.Q2Presentation.Induction.dimVQ2Presentation.Induction.dimV {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : ℕ`d = dim V` (the head `V = M/T`).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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`.**The candidate `|Z¹(V)|`-numeric at every `V⋊C`-lift** (the `lem:affinelifting` candidate `V`-stage factor of `eq:mumultiplicity`; N5's `weakZ1_vLayer_card` mirror): the same corank engine with `𝒳_V = ⊥` gives `|Z¹_{A,f}(V)| = 2^{2·dimV}` — the corank-`0` face of the ledger (the design's `rT = 0` sanity anchor, realized at the `V`-layer). -
defdefined in Q2Presentation/Induction/ZeroEdgePinnedExistence.leancomplete
def Q2Presentation.Induction.pinET {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) (sQ2Presentation.Induction.towerC K → (Q2Presentation.Induction.btChild chief K).fst.Y: Q2Presentation.Induction.towerCQ2Presentation.Induction.towerC {p : Q2Presentation.Induction.FramedPair} {chief : Q2Presentation.Induction.NonScalarChiefFactor p} (K : Q2Presentation.Induction.KernelMinimal chief) : TypeThe lower target `C = Y/K` (`eq:targettower`).KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor→ (Q2Presentation.Induction.btChildQ2Presentation.Induction.btChild {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPair**The `B/T'`-child**: the framed pair the descended cover covers (`lem:transgression`'s base, manuscript l.4032–4034; the quotient of the child by the radical layer `T'`).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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`.) (hs1s 1 = 1: sQ2Presentation.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`.1) (hsmul∀ (c d : Q2Presentation.Induction.towerC K), s c * s d = s (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), sQ2Presentation.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`.sQ2Presentation.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`.sQ2Presentation.Induction.towerC K → (Q2Presentation.Induction.btChild chief K).fst.Y(HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.cQ2Presentation.Induction.towerC K*HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.dQ2Presentation.Induction.towerC K)HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.) (cQ2Presentation.Induction.towerC 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) : ↥(Q2Presentation.Induction.towerTQ2Presentation.Induction.towerT {p : Q2Presentation.Induction.FramedPair} {chief : Q2Presentation.Induction.NonScalarChiefFactor p} (K : Q2Presentation.Induction.KernelMinimal chief) : Submodule (ZMod 2) (Q2Presentation.Induction.towerM K)The manuscript's radical layer `T = (K ∩ S)/R ◁ M` (l.3628), as a `ZMod 2`-submodule of the additive module `M`.KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)def Q2Presentation.Induction.pinET {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) (sQ2Presentation.Induction.towerC K → (Q2Presentation.Induction.btChild chief K).fst.Y: Q2Presentation.Induction.towerCQ2Presentation.Induction.towerC {p : Q2Presentation.Induction.FramedPair} {chief : Q2Presentation.Induction.NonScalarChiefFactor p} (K : Q2Presentation.Induction.KernelMinimal chief) : TypeThe lower target `C = Y/K` (`eq:targettower`).KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor→ (Q2Presentation.Induction.btChildQ2Presentation.Induction.btChild {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPair**The `B/T'`-child**: the framed pair the descended cover covers (`lem:transgression`'s base, manuscript l.4032–4034; the quotient of the child by the radical layer `T'`).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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`.) (hs1s 1 = 1: sQ2Presentation.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`.1) (hsmul∀ (c d : Q2Presentation.Induction.towerC K), s c * s d = s (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), sQ2Presentation.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`.sQ2Presentation.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`.sQ2Presentation.Induction.towerC K → (Q2Presentation.Induction.btChild chief K).fst.Y(HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.cQ2Presentation.Induction.towerC K*HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.dQ2Presentation.Induction.towerC K)HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.) (cQ2Presentation.Induction.towerC 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) : ↥(Q2Presentation.Induction.towerTQ2Presentation.Induction.towerT {p : Q2Presentation.Induction.FramedPair} {chief : Q2Presentation.Induction.NonScalarChiefFactor p} (K : Q2Presentation.Induction.KernelMinimal chief) : Submodule (ZMod 2) (Q2Presentation.Induction.towerM K)The manuscript's radical layer `T = (K ∩ S)/R ◁ M` (l.3628), as a `ZMod 2`-submodule of the additive module `M`.KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)**The `lem:affinelifting` zero-section pullback read**: the `T`-element carried by the `tau`-defect.
-
defdefined in Q2Presentation/Induction/ZeroEdgeRealization.leancomplete
def Q2Presentation.Induction.weakLift (Yt
Q2Presentation.BoundaryFramedTarget: Q2Presentation.BoundaryFramedTargetQ2Presentation.BoundaryFramedTarget : Type 1A **boundary-framed marked target** `𝒴 = (Y, L_Y, π_Y, θ_Y)` (manuscript Definition 4.1, `def:framed`): a finite group `Y` with a normal finite `2`-subgroup `L_Y`, a surjection `π_Y : Y ↠ H` onto a finite *tame* quotient with kernel exactly `L_Y`, and an *elementary decoration* `θ_Y : Y → Multiplicative E` into the multiplicative image of a finite `𝔽₂`-vector space `E`. The pair `q_Y = (π_Y, θ_Y)` fixes both the tame quotient `Y / L_Y ≅ H` and the decoration.) (EQ2Presentation.Lifting.ElementaryKernel Yt: Q2Presentation.Lifting.ElementaryKernelQ2Presentation.Lifting.ElementaryKernel (Yt : Q2Presentation.BoundaryFramedTarget) : TypeA normal subgroup of a framed target that is killed by the decoration, contained in the wild kernel, **abelian**, and of **exponent 2** — the shape of the chief kernels the cochain keeps quantify over.YtQ2Presentation.BoundaryFramedTarget) {ΓProfiniteGrp.{0}: ProfiniteGrp.{0}ProfiniteGrp.{u_1} : Type (u_1 + 1)The category of profinite groups. A term of this type consists of a profinite set with a topological group structure.} (BQ2Presentation.BoundaryPackage Γ: Q2Presentation.BoundaryPackageQ2Presentation.BoundaryPackage (Γ : ProfiniteGrp.{0}) : TypeA **boundary package** on a profinite group `Γ`: the uniform Stage-C data of a tame quotient, a maximal pro-`2` quotient, and a common unramified character `ℤ₂` through which both factor (manuscript Prop 3.14, `prop:compatiblemarking`; plan Turn 4 §6). The compatibility `tameMap ≫ ν_t = ν = pro2Map ≫ ν_2` records that the two markings agree on the full unramified coordinate, not merely modulo `2`.ΓProfiniteGrp.{0}) (FQ2Presentation.BoundaryFrame Yt: Q2Presentation.BoundaryFrameQ2Presentation.BoundaryFrame (Yt : Q2Presentation.BoundaryFramedTarget) : TypeA **boundary frame** on a boundary-framed target `𝒴` (manuscript `eq:beta`): the fixed compatible data `α : 𝕋_tame ↠ H`, `ψ : Π → Multiplicative E`, and the induced `β : ∂_bd → H × Multiplicative E`. Surjectivity of `α` records that `H` really is a tame quotient (manuscript: "Fix a finite tame quotient `H`, an epimorphism `α : 𝕋_A ↠ H`").YtQ2Presentation.BoundaryFramedTarget) (h0Γ ⟶ ProfiniteGrp.ofFiniteGrp (FiniteGrp.of Yt.Y): ΓProfiniteGrp.{0}⟶Quiver.Hom.{v, u} {V : Type u} [self : Quiver V] : V → V → Type vThe type of edges/arrows/morphisms between a given source and target.ProfiniteGrp.ofFiniteGrpProfiniteGrp.ofFiniteGrp.{u_1} (G : FiniteGrp.{u_1}) : ProfiniteGrp.{u_1}A `FiniteGrp` when given the discrete topology can be considered as a profinite group.(FiniteGrp.ofFiniteGrp.of.{u} (G : Type u) [Group G] [Finite G] : FiniteGrp.{u}Construct a term of `FiniteGrp` from a type endowed with the structure of a finite group.YtQ2Presentation.BoundaryFramedTarget.YQ2Presentation.BoundaryFramedTarget.Y (self : Q2Presentation.BoundaryFramedTarget) : TypeThe finite target group `Y`.)) : TypeA type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`.def Q2Presentation.Induction.weakLift (Yt
Q2Presentation.BoundaryFramedTarget: Q2Presentation.BoundaryFramedTargetQ2Presentation.BoundaryFramedTarget : Type 1A **boundary-framed marked target** `𝒴 = (Y, L_Y, π_Y, θ_Y)` (manuscript Definition 4.1, `def:framed`): a finite group `Y` with a normal finite `2`-subgroup `L_Y`, a surjection `π_Y : Y ↠ H` onto a finite *tame* quotient with kernel exactly `L_Y`, and an *elementary decoration* `θ_Y : Y → Multiplicative E` into the multiplicative image of a finite `𝔽₂`-vector space `E`. The pair `q_Y = (π_Y, θ_Y)` fixes both the tame quotient `Y / L_Y ≅ H` and the decoration.) (EQ2Presentation.Lifting.ElementaryKernel Yt: Q2Presentation.Lifting.ElementaryKernelQ2Presentation.Lifting.ElementaryKernel (Yt : Q2Presentation.BoundaryFramedTarget) : TypeA normal subgroup of a framed target that is killed by the decoration, contained in the wild kernel, **abelian**, and of **exponent 2** — the shape of the chief kernels the cochain keeps quantify over.YtQ2Presentation.BoundaryFramedTarget) {ΓProfiniteGrp.{0}: ProfiniteGrp.{0}ProfiniteGrp.{u_1} : Type (u_1 + 1)The category of profinite groups. A term of this type consists of a profinite set with a topological group structure.} (BQ2Presentation.BoundaryPackage Γ: Q2Presentation.BoundaryPackageQ2Presentation.BoundaryPackage (Γ : ProfiniteGrp.{0}) : TypeA **boundary package** on a profinite group `Γ`: the uniform Stage-C data of a tame quotient, a maximal pro-`2` quotient, and a common unramified character `ℤ₂` through which both factor (manuscript Prop 3.14, `prop:compatiblemarking`; plan Turn 4 §6). The compatibility `tameMap ≫ ν_t = ν = pro2Map ≫ ν_2` records that the two markings agree on the full unramified coordinate, not merely modulo `2`.ΓProfiniteGrp.{0}) (FQ2Presentation.BoundaryFrame Yt: Q2Presentation.BoundaryFrameQ2Presentation.BoundaryFrame (Yt : Q2Presentation.BoundaryFramedTarget) : TypeA **boundary frame** on a boundary-framed target `𝒴` (manuscript `eq:beta`): the fixed compatible data `α : 𝕋_tame ↠ H`, `ψ : Π → Multiplicative E`, and the induced `β : ∂_bd → H × Multiplicative E`. Surjectivity of `α` records that `H` really is a tame quotient (manuscript: "Fix a finite tame quotient `H`, an epimorphism `α : 𝕋_A ↠ H`").YtQ2Presentation.BoundaryFramedTarget) (h0Γ ⟶ ProfiniteGrp.ofFiniteGrp (FiniteGrp.of Yt.Y): ΓProfiniteGrp.{0}⟶Quiver.Hom.{v, u} {V : Type u} [self : Quiver V] : V → V → Type vThe type of edges/arrows/morphisms between a given source and target.ProfiniteGrp.ofFiniteGrpProfiniteGrp.ofFiniteGrp.{u_1} (G : FiniteGrp.{u_1}) : ProfiniteGrp.{u_1}A `FiniteGrp` when given the discrete topology can be considered as a profinite group.(FiniteGrp.ofFiniteGrp.of.{u} (G : Type u) [Group G] [Finite G] : FiniteGrp.{u}Construct a term of `FiniteGrp` from a type endowed with the structure of a finite group.YtQ2Presentation.BoundaryFramedTarget.YQ2Presentation.BoundaryFramedTarget.Y (self : Q2Presentation.BoundaryFramedTarget) : TypeThe finite target group `Y`.)) : TypeA type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`.**The weak framed-lift set at a basepoint hom**: continuous framed homs agreeing with `h0` modulo the elementary kernel (the fibre of the mod-`E.N` reduction through `h0`'s coset; surjectivity NOT imposed — `lem:affinelifting`'s weak coordinates).
-
defdefined in Q2Presentation/Induction/ZeroEdgeRealization.leancomplete
def Q2Presentation.Induction.EdgeAffineLifting {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)) {ΓProfiniteGrp.{0}: ProfiniteGrp.{0}ProfiniteGrp.{u_1} : Type (u_1 + 1)The category of profinite groups. A term of this type consists of a profinite set with a topological group structure.} (BQ2Presentation.BoundaryPackage Γ: Q2Presentation.BoundaryPackageQ2Presentation.BoundaryPackage (Γ : ProfiniteGrp.{0}) : TypeA **boundary package** on a profinite group `Γ`: the uniform Stage-C data of a tame quotient, a maximal pro-`2` quotient, and a common unramified character `ℤ₂` through which both factor (manuscript Prop 3.14, `prop:compatiblemarking`; plan Turn 4 §6). The compatibility `tameMap ≫ ν_t = ν = pro2Map ≫ ν_2` records that the two markings agree on the full unramified coordinate, not merely modulo `2`.ΓProfiniteGrp.{0}) (ZQ2Presentation.Induction.ZeroEdgeDescentData chief K lam hinv: Q2Presentation.Induction.ZeroEdgeDescentDataQ2Presentation.Induction.ZeroEdgeDescentData {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) : Type**The zero-edge descent data** (`eq:descendedclass` l.4037–4045 + `lem:affinelifting` l.4048–4083, as one choice bundle — the §6.5 choice discipline: both R4b keeps take the SAME bundle): * `D`/`hW` — the zero-edge witness (a normal edge complement, P3-U3); the bundle therefore implies `ZeroEdge` (`ZeroEdgeDescentData.zeroEdge`); * `Csec` + `hdisj`/`hsup` — the `lem:transgression` splitting coordinates `B/T' = V ⋊ C` (`Csec` a complement to the `V`-layer); * `gammaK`/`deltaK` — the normalized decomposition data `γ_κ ∈ Z¹(C,V^∨)`, `δ_κ ∈ Z²(C,𝔽₂)` of the descended class, with concrete cocycle laws (dual action `(c·φ)(v) = φ(c⁻¹·v)`); * `eT` — the `lem:affinelifting` class `e ∈ Z²(C,T)` (pullback of `B → V⋊C` along the zero section), twisted cocycle law in the `hzc`-ready orientation; * `mC` — the equivariant-lift correction functions `m_c` of the `κ_q⁰`-model (`eq:mquadratic`/`eq:mcoherent` l.4118–4125, stated against the bilinear factor set `edgeBaseFactor`). The deep pinning identity — that a normalized section cocycle of the descended double cover `descTarget D hW` equals `κ_q⁰-model + Γ_{γ_κ} + inf δ_κ` in the `Csec`-coordinates, and that `eT` is the actual zero-section pullback — is owned by the deferred transgression unit (`btChild_splits`/`zeroEdgeDescentData_nonempty`, design §4.7); until it lands, the coordinated R4b keep must carry that pinning alongside this bundle (same discipline as U7's `¬ZeroEdge` conditioning living on the future keep).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst (Q2Presentation.Induction.cChild chief K).snd: Q2Presentation.boundaryFramedSurjQ2Presentation.boundaryFramedSurj {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (Yt : Q2Presentation.BoundaryFramedTarget) (F : Q2Presentation.BoundaryFrame Yt) : TypeThe **boundary-framed surjections** `e_Γ^β(𝒴)` (manuscript `eq:eGamma`): the continuous surjections `f : Γ ↠ Y` whose induced map to `H × E` is the prescribed `β ∘ b_Γ`, i.e. `q_Y ∘ f = β ∘ b_Γ`. This is the subtype counted in Theorem 4.2; its cardinality is `e_Γ^β(𝒴)`.BQ2Presentation.BoundaryPackage Γ(Q2Presentation.Induction.cChildQ2Presentation.Induction.cChild {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPair**The C-child framed pair** (the carrier of `X_Γ(C)`; manuscript `C = Y/K` via `B/M' ≅ C`, `mChildCollapse`).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.(Q2Presentation.Induction.cChildQ2Presentation.Induction.cChild {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPair**The C-child framed pair** (the carrier of `X_Γ(C)`; manuscript `C = Y/K` via `B/M' ≅ C`, `mChildCollapse`).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.) (PQ2Presentation.Induction.ZeroEdgePinning chief K lam hinv Z: Q2Presentation.Induction.ZeroEdgePinningQ2Presentation.Induction.ZeroEdgePinning {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) (Z : Q2Presentation.Induction.ZeroEdgeDescentData chief K lam hinv) : Type**The base-identity pinning of a bundle `Z`** — the §13 deferral's third item, concrete. In the `Z.Csec`-coordinates (a multiplicative section `s`, so the section cochain `η` vanishes), the normalized section cocycle of the ACTUAL descended cover `descTarget Z.D Z.hW` at the total section `(v,c) ↦ ℓ̂(v)·σ̂(c)` is `κ((v,c),(w,d)) = g(v,cw) + n_c(w) + e(c,d)` with `g/n/e` the three deck readings; the fields pin * `g = edgeBaseFactor` (`fib_*`): the fibre part is the `κ_q⁰`-model factor set — `eq:basekappacochain`'s fibre normalization; * `n_c = Z.mC c + Z.gammaK c ∘ (c·)` (`conj_*`): the conjugation defect is the model correction plus the `Γ_{γ_κ}`-term (`eq:Gammagamma`); * `e = Z.deltaK` (`sec_*`): the pure base part is the inflated scalar — i.e. `κ = κ_q⁰ + Γ_{γ_κ} + inf δ_κ` as normalized cochains, `eq:descendedclass` l.4037–4045 ON THE NOSE; and `tau_eT` pins `Z.eT` as the actual zero-section pullback of `B → V⋊C` along the `Csec`-section (`lem:affinelifting` l.4050–4056). `Nonempty (ZeroEdgePinning … Z)` is the pinning hypothesis the FUTURE coordinated R4b keep must carry alongside `Z` (both U8/U9 zero-edge keep docstrings + §13 note 6).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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) : PropThe universe of propositions. `Prop ≡ Sort 0`. Every proposition is propositionally equal to either `True` or `False`.def Q2Presentation.Induction.EdgeAffineLifting {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)) {ΓProfiniteGrp.{0}: ProfiniteGrp.{0}ProfiniteGrp.{u_1} : Type (u_1 + 1)The category of profinite groups. A term of this type consists of a profinite set with a topological group structure.} (BQ2Presentation.BoundaryPackage Γ: Q2Presentation.BoundaryPackageQ2Presentation.BoundaryPackage (Γ : ProfiniteGrp.{0}) : TypeA **boundary package** on a profinite group `Γ`: the uniform Stage-C data of a tame quotient, a maximal pro-`2` quotient, and a common unramified character `ℤ₂` through which both factor (manuscript Prop 3.14, `prop:compatiblemarking`; plan Turn 4 §6). The compatibility `tameMap ≫ ν_t = ν = pro2Map ≫ ν_2` records that the two markings agree on the full unramified coordinate, not merely modulo `2`.ΓProfiniteGrp.{0}) (ZQ2Presentation.Induction.ZeroEdgeDescentData chief K lam hinv: Q2Presentation.Induction.ZeroEdgeDescentDataQ2Presentation.Induction.ZeroEdgeDescentData {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) : Type**The zero-edge descent data** (`eq:descendedclass` l.4037–4045 + `lem:affinelifting` l.4048–4083, as one choice bundle — the §6.5 choice discipline: both R4b keeps take the SAME bundle): * `D`/`hW` — the zero-edge witness (a normal edge complement, P3-U3); the bundle therefore implies `ZeroEdge` (`ZeroEdgeDescentData.zeroEdge`); * `Csec` + `hdisj`/`hsup` — the `lem:transgression` splitting coordinates `B/T' = V ⋊ C` (`Csec` a complement to the `V`-layer); * `gammaK`/`deltaK` — the normalized decomposition data `γ_κ ∈ Z¹(C,V^∨)`, `δ_κ ∈ Z²(C,𝔽₂)` of the descended class, with concrete cocycle laws (dual action `(c·φ)(v) = φ(c⁻¹·v)`); * `eT` — the `lem:affinelifting` class `e ∈ Z²(C,T)` (pullback of `B → V⋊C` along the zero section), twisted cocycle law in the `hzc`-ready orientation; * `mC` — the equivariant-lift correction functions `m_c` of the `κ_q⁰`-model (`eq:mquadratic`/`eq:mcoherent` l.4118–4125, stated against the bilinear factor set `edgeBaseFactor`). The deep pinning identity — that a normalized section cocycle of the descended double cover `descTarget D hW` equals `κ_q⁰-model + Γ_{γ_κ} + inf δ_κ` in the `Csec`-coordinates, and that `eT` is the actual zero-section pullback — is owned by the deferred transgression unit (`btChild_splits`/`zeroEdgeDescentData_nonempty`, design §4.7); until it lands, the coordinated R4b keep must carry that pinning alongside this bundle (same discipline as U7's `¬ZeroEdge` conditioning living on the future keep).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst (Q2Presentation.Induction.cChild chief K).snd: Q2Presentation.boundaryFramedSurjQ2Presentation.boundaryFramedSurj {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (Yt : Q2Presentation.BoundaryFramedTarget) (F : Q2Presentation.BoundaryFrame Yt) : TypeThe **boundary-framed surjections** `e_Γ^β(𝒴)` (manuscript `eq:eGamma`): the continuous surjections `f : Γ ↠ Y` whose induced map to `H × E` is the prescribed `β ∘ b_Γ`, i.e. `q_Y ∘ f = β ∘ b_Γ`. This is the subtype counted in Theorem 4.2; its cardinality is `e_Γ^β(𝒴)`.BQ2Presentation.BoundaryPackage Γ(Q2Presentation.Induction.cChildQ2Presentation.Induction.cChild {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPair**The C-child framed pair** (the carrier of `X_Γ(C)`; manuscript `C = Y/K` via `B/M' ≅ C`, `mChildCollapse`).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.(Q2Presentation.Induction.cChildQ2Presentation.Induction.cChild {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPair**The C-child framed pair** (the carrier of `X_Γ(C)`; manuscript `C = Y/K` via `B/M' ≅ C`, `mChildCollapse`).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.) (PQ2Presentation.Induction.ZeroEdgePinning chief K lam hinv Z: Q2Presentation.Induction.ZeroEdgePinningQ2Presentation.Induction.ZeroEdgePinning {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) (Z : Q2Presentation.Induction.ZeroEdgeDescentData chief K lam hinv) : Type**The base-identity pinning of a bundle `Z`** — the §13 deferral's third item, concrete. In the `Z.Csec`-coordinates (a multiplicative section `s`, so the section cochain `η` vanishes), the normalized section cocycle of the ACTUAL descended cover `descTarget Z.D Z.hW` at the total section `(v,c) ↦ ℓ̂(v)·σ̂(c)` is `κ((v,c),(w,d)) = g(v,cw) + n_c(w) + e(c,d)` with `g/n/e` the three deck readings; the fields pin * `g = edgeBaseFactor` (`fib_*`): the fibre part is the `κ_q⁰`-model factor set — `eq:basekappacochain`'s fibre normalization; * `n_c = Z.mC c + Z.gammaK c ∘ (c·)` (`conj_*`): the conjugation defect is the model correction plus the `Γ_{γ_κ}`-term (`eq:Gammagamma`); * `e = Z.deltaK` (`sec_*`): the pure base part is the inflated scalar — i.e. `κ = κ_q⁰ + Γ_{γ_κ} + inf δ_κ` as normalized cochains, `eq:descendedclass` l.4037–4045 ON THE NOSE; and `tau_eT` pins `Z.eT` as the actual zero-section pullback of `B → V⋊C` along the `Csec`-section (`lem:affinelifting` l.4050–4056). `Nonempty (ZeroEdgePinning … Z)` is the pinning hypothesis the FUTURE coordinated R4b keep must carry alongside `Z` (both U8/U9 zero-edge keep docstrings + §13 note 6).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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) : PropThe universe of propositions. `Prop ≡ Sort 0`. Every proposition is propositionally equal to either `True` or `False`.**F-affine floor `Prop`** (design §4-N9's honest residue of S2/S3; `lem:affinelifting` l.4048–4083, `eq:affineequation` l.4060 + `lem:elementarystage` l.4171–4205): a twisted cocycle `z ∈ Z¹_ρ(V)` supports a framed `M`-lift over `ρ` through the pinned trivialization IFF its per-`χ` constraint readings (`edgeLRead`, the `Γ_{γ_χ}`-graph `ι`-values) hit the `χ_*e`-targets (`edgeKappaRead`) — the affine equation `∂z = ρ*e` in per-cocycle, token-FREE spelling. PROVENANCE + dissolution: (⟸, existence) is the `H²_{Γ,ρ}(M_χ-complement) = 0` counting dévissage — in-tree route: clause (d) of `q2_localduality_general` at `ker χ̃`-kernels (local) resp. the N6 corank engine (candidate), the SAME ladder as `EdgeDelSurj`'s dissolution (the concurrent ∂-glue lane); (⟹, admissibility) is the `tau_eT`-deck calculus of the pinning (`eq:basekappacochain` l.2131 read along the lift; dischargeable from `P.tau`/`P.tau_eT` + `edgeLRead_eq_chiDefect`, budgeted as the first dissolution rung). Falsifiable per `(ρ, z)`: both sides are decidable-in-principle finite statements at a concrete bundle. Strictly below keeps 3/4 (it carries no count, no sign, no Gauss content). -
theoremdefined in Q2Presentation/Lifting/Duality.leancomplete
theorem Q2Presentation.Lifting.lift_torsor_card.{u_2, u_3} {Z
Type u_2: Type u_2A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`.} {LType u_3: Type u_3A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`.} [AddGroupAddGroup.{u} (A : Type u) : Type uAn `AddGroup` is an `AddMonoid` with a unary `-` satisfying `-a + a = 0`. There is also a binary operation `-` such that `a - b = a + -b`, with a default so that `a - b = a + -b` holds by definition. Use `AddGroup.ofLeftAxioms` or `AddGroup.ofRightAxioms` to define an additive group structure on a type with the minimum proof obligations.ZType u_2] [AddTorsorAddTorsor.{u_1, u_2} (G : outParam (Type u_1)) (P : Type u_2) [AddGroup G] : Type (max u_1 u_2)An `AddTorsor G P` gives a structure to the nonempty type `P`, acted on by an `AddGroup G` with a transitive and free action given by the `+ᵥ` operation and a corresponding subtraction given by the `-ᵥ` operation. In the case of a vector space, it is an affine space.ZType u_2LType u_3] : Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number. If `α` is infinite, `Nat.card α = 0`.LType u_3=Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`. We use `a = b` as notation for `Eq a b`. A fundamental property of equality is that it is an equivalence relation. ``` variable (α : Type) (a b c d : α) variable (hab : a = b) (hcb : c = b) (hcd : c = d) example : a = d := Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd ``` Equality is much more than an equivalence relation, however. It has the important property that every assertion respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value. That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`. Example: ``` example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := Eq.subst h1 h2 example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := h1 ▸ h2 ``` The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`. For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality) Conventions for notations in identifiers: * The recommended spelling of `=` in identifiers is `eq`.Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number. If `α` is infinite, `Nat.card α = 0`.ZType u_2theorem Q2Presentation.Lifting.lift_torsor_card.{u_2, u_3} {Z
Type u_2: Type u_2A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`.} {LType u_3: Type u_3A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`.} [AddGroupAddGroup.{u} (A : Type u) : Type uAn `AddGroup` is an `AddMonoid` with a unary `-` satisfying `-a + a = 0`. There is also a binary operation `-` such that `a - b = a + -b`, with a default so that `a - b = a + -b` holds by definition. Use `AddGroup.ofLeftAxioms` or `AddGroup.ofRightAxioms` to define an additive group structure on a type with the minimum proof obligations.ZType u_2] [AddTorsorAddTorsor.{u_1, u_2} (G : outParam (Type u_1)) (P : Type u_2) [AddGroup G] : Type (max u_1 u_2)An `AddTorsor G P` gives a structure to the nonempty type `P`, acted on by an `AddGroup G` with a transitive and free action given by the `+ᵥ` operation and a corresponding subtraction given by the `-ᵥ` operation. In the case of a vector space, it is an affine space.ZType u_2LType u_3] : Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number. If `α` is infinite, `Nat.card α = 0`.LType u_3=Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`. We use `a = b` as notation for `Eq a b`. A fundamental property of equality is that it is an equivalence relation. ``` variable (α : Type) (a b c d : α) variable (hab : a = b) (hcb : c = b) (hcd : c = d) example : a = d := Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd ``` Equality is much more than an equivalence relation, however. It has the important property that every assertion respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value. That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`. Example: ``` example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := Eq.subst h1 h2 example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := h1 ▸ h2 ``` The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`. For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality) Conventions for notations in identifiers: * The recommended spelling of `=` in identifiers is `eq`.Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number. If `α` is infinite, `Nat.card α = 0`.ZType u_2**The lift count is the cocycle count** (`lem:affinelifting`, l.4015): a nonempty set `L` of lifts over a fixed lifting datum is a torsor under the `1`-cocycles `Z` (`AddTorsor` bakes in nonemptiness), so `|L| = |Z|`. Applied to `Z = Z¹_{Γ,ρ}` this is the `|Z¹|` factor of the lift multiplicity `μ`.
Proved in §8 of the paper. Ingredients: Theorem 5.12 Theorem 5.13.
Proposition 8.8 of the paper (Completed-square phase identity).
For either source, every lower exact-image map \rho, every
b\in H^1_{\Gamma,\rho}(V), and every \chi\in \mathcal X_T,
Q_{\kappa,\Gamma,\rho}(b) +\langle\partial_{\Gamma,\rho} b+\rho^*e,\chi\rangle =Q^0_{\Gamma,\rho}(b+\rho^*a_{\chi,\kappa}) +\iota_\Gamma(\rho^*\Delta_{\chi,\kappa}).
Here Q^0 is the base determinant form and Q_\kappa is the obstruction for
the actual scalar pushout class (131).
Lean code for Theorem8.8●4 theorems
Associated Lean declarations
-
theoremdefined in Q2Presentation/Induction/ZeroEdgePointwise.leancomplete
theorem Q2Presentation.Induction.edgeF0_add {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)) {ΓProfiniteGrp.{0}: ProfiniteGrp.{0}ProfiniteGrp.{u_1} : Type (u_1 + 1)The category of profinite groups. A term of this type consists of a profinite set with a topological group structure.} (BQ2Presentation.BoundaryPackage Γ: Q2Presentation.BoundaryPackageQ2Presentation.BoundaryPackage (Γ : ProfiniteGrp.{0}) : TypeA **boundary package** on a profinite group `Γ`: the uniform Stage-C data of a tame quotient, a maximal pro-`2` quotient, and a common unramified character `ℤ₂` through which both factor (manuscript Prop 3.14, `prop:compatiblemarking`; plan Turn 4 §6). The compatibility `tameMap ≫ ν_t = ν = pro2Map ≫ ν_2` records that the two markings agree on the full unramified coordinate, not merely modulo `2`.ΓProfiniteGrp.{0}) (ρQ2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst (Q2Presentation.Induction.cChild chief K).snd: Q2Presentation.boundaryFramedSurjQ2Presentation.boundaryFramedSurj {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (Yt : Q2Presentation.BoundaryFramedTarget) (F : Q2Presentation.BoundaryFrame Yt) : TypeThe **boundary-framed surjections** `e_Γ^β(𝒴)` (manuscript `eq:eGamma`): the continuous surjections `f : Γ ↠ Y` whose induced map to `H × E` is the prescribed `β ∘ b_Γ`, i.e. `q_Y ∘ f = β ∘ b_Γ`. This is the subtype counted in Theorem 4.2; its cardinality is `e_Γ^β(𝒴)`.BQ2Presentation.BoundaryPackage Γ(Q2Presentation.Induction.cChildQ2Presentation.Induction.cChild {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPair**The C-child framed pair** (the carrier of `X_Γ(C)`; manuscript `C = Y/K` via `B/M' ≅ C`, `mChildCollapse`).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.(Q2Presentation.Induction.cChildQ2Presentation.Induction.cChild {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPair**The C-child framed pair** (the carrier of `X_Γ(C)`; manuscript `C = Y/K` via `B/M' ≅ C`, `mChildCollapse`).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.) (z↥(Q2Presentation.Induction.edgeZ1 chief K B ρ)w↥(Q2Presentation.Induction.edgeZ1 chief K B ρ): ↥(Q2Presentation.Induction.edgeZ1Q2Presentation.Induction.edgeZ1 {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (ρ : Q2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst (Q2Presentation.Induction.cChild chief K).snd) : Submodule (ZMod 2) (↑Γ.toProfinite.toTop → Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K)**`Z¹_ρ(V)`** — the `ZMod 2`-module of continuous (locally constant) `V`-valued ρ̄-twisted 1-cocycles: `z(γγ′) = z(γ) + ρ̄(γ)·z(γ′)` (THE orientation pin — `aRep_cocycle`'s house orientation; design §2.1's `W_ρ`, the engine carrier of the W2 instantiation).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactorBQ2Presentation.BoundaryPackage ΓρQ2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst (Q2Presentation.Induction.cChild chief K).snd)) : Q2Presentation.Induction.edgeF0Q2Presentation.Induction.edgeF0 {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) (Z : Q2Presentation.Induction.ZeroEdgeDescentData chief K lam hinv) {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (ρ : Q2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst (Q2Presentation.Induction.cChild chief K).snd) (z : ↥(Q2Presentation.Induction.edgeZ1 chief K B ρ)) : ↑Γ.toProfinite.toTop → ↑Γ.toProfinite.toTop → ZMod 2**The quadratic defect leg `F₀(z)`** — the `κ_q⁰`-model graph read along the `z`-twisted lift: `F₀(z)(γ,γ′) = f(z γ, ρ̄γ·z γ′) + m_{ρ̄γ}(z γ′)` (the `thetaGraph` shape at the source).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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 hinvBQ2Presentation.BoundaryPackage ΓρQ2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst (Q2Presentation.Induction.cChild chief K).snd(HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `+` in identifiers is `add`.z↥(Q2Presentation.Induction.edgeZ1 chief K B ρ)+HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `+` in identifiers is `add`.w↥(Q2Presentation.Induction.edgeZ1 chief K B ρ))HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `+` in identifiers is `add`.=Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`. We use `a = b` as notation for `Eq a b`. A fundamental property of equality is that it is an equivalence relation. ``` variable (α : Type) (a b c d : α) variable (hab : a = b) (hcb : c = b) (hcd : c = d) example : a = d := Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd ``` Equality is much more than an equivalence relation, however. It has the important property that every assertion respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value. That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`. Example: ``` example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := Eq.subst h1 h2 example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := h1 ▸ h2 ``` The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`. For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality) Conventions for notations in identifiers: * The recommended spelling of `=` in identifiers is `eq`.Q2Presentation.Induction.edgeF0Q2Presentation.Induction.edgeF0 {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) (Z : Q2Presentation.Induction.ZeroEdgeDescentData chief K lam hinv) {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (ρ : Q2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst (Q2Presentation.Induction.cChild chief K).snd) (z : ↥(Q2Presentation.Induction.edgeZ1 chief K B ρ)) : ↑Γ.toProfinite.toTop → ↑Γ.toProfinite.toTop → ZMod 2**The quadratic defect leg `F₀(z)`** — the `κ_q⁰`-model graph read along the `z`-twisted lift: `F₀(z)(γ,γ′) = f(z γ, ρ̄γ·z γ′) + m_{ρ̄γ}(z γ′)` (the `thetaGraph` shape at the source).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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 hinvBQ2Presentation.BoundaryPackage ΓρQ2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst (Q2Presentation.Induction.cChild chief K).sndz↥(Q2Presentation.Induction.edgeZ1 chief K B ρ)+HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `+` in identifiers is `add`.Q2Presentation.Induction.edgeF0Q2Presentation.Induction.edgeF0 {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) (Z : Q2Presentation.Induction.ZeroEdgeDescentData chief K lam hinv) {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (ρ : Q2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst (Q2Presentation.Induction.cChild chief K).snd) (z : ↥(Q2Presentation.Induction.edgeZ1 chief K B ρ)) : ↑Γ.toProfinite.toTop → ↑Γ.toProfinite.toTop → ZMod 2**The quadratic defect leg `F₀(z)`** — the `κ_q⁰`-model graph read along the `z`-twisted lift: `F₀(z)(γ,γ′) = f(z γ, ρ̄γ·z γ′) + m_{ρ̄γ}(z γ′)` (the `thetaGraph` shape at the source).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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 hinvBQ2Presentation.BoundaryPackage ΓρQ2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst (Q2Presentation.Induction.cChild chief K).sndw↥(Q2Presentation.Induction.edgeZ1 chief K B ρ)+HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `+` in identifiers is `add`.Q2Presentation.Induction.edgePairQ2Presentation.Induction.edgePair {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) (Z : Q2Presentation.Induction.ZeroEdgeDescentData chief K lam hinv) {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (ρ : Q2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst (Q2Presentation.Induction.cChild chief K).snd) (x y : ↥(Q2Presentation.Induction.edgeZ1 chief K B ρ)) : ↑Γ.toProfinite.toTop → ↑Γ.toProfinite.toTop → ZMod 2**The polar pairing cochain** `P(x,y)(γ,γ′) = b(y γ, ρ̄γ·x γ′)` — the cross term of the completed square (design §4-N7 bullet 2); its `ι`-reading is `edgeQ`'s polar form.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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 hinvBQ2Presentation.BoundaryPackage ΓρQ2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst (Q2Presentation.Induction.cChild chief K).sndz↥(Q2Presentation.Induction.edgeZ1 chief K B ρ)w↥(Q2Presentation.Induction.edgeZ1 chief K B ρ)+HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `+` in identifiers is `add`.Q2Presentation.Induction.cochainCoboundaryQ2Presentation.Induction.cochainCoboundary (Γ : ProfiniteGrp.{0}) (u : ↑Γ.toProfinite.toTop → ZMod 2) : ↑Γ.toProfinite.toTop → ↑Γ.toProfinite.toTop → ZMod 2The **explicit coboundary** `δu` of a 1-cochain `u` (char-2 inhomogeneous differential, trivial action): `δu (γ, γ') = u γ + u γ' + u (γγ')`. N7's completed-square defects and `eq:Qkappadifference` corrections enter the calculus through this def.ΓProfiniteGrp.{0}fun γ↑Γ.toProfinite.toTop=> ((Q2Presentation.Induction.edgeBaseFactorQ2Presentation.Induction.edgeBaseFactor {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) (hne : lam ≠ 0) : Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K →ₗ[ZMod 2] Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K →ₗ[ZMod 2] ZMod 2`f`: the bilinear factor set of the base determinant model — `f(v,v) = q̄(v)`, `f(v,w) + f(w,v) = b_q̄(v,w)` (hygiene def fixing the `FiniteDimensional` instance path once).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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)⋯) (↑z↥(Q2Presentation.Induction.edgeZ1 chief K B ρ)γ↑Γ.toProfinite.toTop)) (↑w↥(Q2Presentation.Induction.edgeZ1 chief K B ρ)γ↑Γ.toProfinite.toTop)theorem Q2Presentation.Induction.edgeF0_add {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)) {ΓProfiniteGrp.{0}: ProfiniteGrp.{0}ProfiniteGrp.{u_1} : Type (u_1 + 1)The category of profinite groups. A term of this type consists of a profinite set with a topological group structure.} (BQ2Presentation.BoundaryPackage Γ: Q2Presentation.BoundaryPackageQ2Presentation.BoundaryPackage (Γ : ProfiniteGrp.{0}) : TypeA **boundary package** on a profinite group `Γ`: the uniform Stage-C data of a tame quotient, a maximal pro-`2` quotient, and a common unramified character `ℤ₂` through which both factor (manuscript Prop 3.14, `prop:compatiblemarking`; plan Turn 4 §6). The compatibility `tameMap ≫ ν_t = ν = pro2Map ≫ ν_2` records that the two markings agree on the full unramified coordinate, not merely modulo `2`.ΓProfiniteGrp.{0}) (ρQ2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst (Q2Presentation.Induction.cChild chief K).snd: Q2Presentation.boundaryFramedSurjQ2Presentation.boundaryFramedSurj {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (Yt : Q2Presentation.BoundaryFramedTarget) (F : Q2Presentation.BoundaryFrame Yt) : TypeThe **boundary-framed surjections** `e_Γ^β(𝒴)` (manuscript `eq:eGamma`): the continuous surjections `f : Γ ↠ Y` whose induced map to `H × E` is the prescribed `β ∘ b_Γ`, i.e. `q_Y ∘ f = β ∘ b_Γ`. This is the subtype counted in Theorem 4.2; its cardinality is `e_Γ^β(𝒴)`.BQ2Presentation.BoundaryPackage Γ(Q2Presentation.Induction.cChildQ2Presentation.Induction.cChild {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPair**The C-child framed pair** (the carrier of `X_Γ(C)`; manuscript `C = Y/K` via `B/M' ≅ C`, `mChildCollapse`).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.(Q2Presentation.Induction.cChildQ2Presentation.Induction.cChild {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPair**The C-child framed pair** (the carrier of `X_Γ(C)`; manuscript `C = Y/K` via `B/M' ≅ C`, `mChildCollapse`).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.) (z↥(Q2Presentation.Induction.edgeZ1 chief K B ρ)w↥(Q2Presentation.Induction.edgeZ1 chief K B ρ): ↥(Q2Presentation.Induction.edgeZ1Q2Presentation.Induction.edgeZ1 {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (ρ : Q2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst (Q2Presentation.Induction.cChild chief K).snd) : Submodule (ZMod 2) (↑Γ.toProfinite.toTop → Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K)**`Z¹_ρ(V)`** — the `ZMod 2`-module of continuous (locally constant) `V`-valued ρ̄-twisted 1-cocycles: `z(γγ′) = z(γ) + ρ̄(γ)·z(γ′)` (THE orientation pin — `aRep_cocycle`'s house orientation; design §2.1's `W_ρ`, the engine carrier of the W2 instantiation).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactorBQ2Presentation.BoundaryPackage ΓρQ2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst (Q2Presentation.Induction.cChild chief K).snd)) : Q2Presentation.Induction.edgeF0Q2Presentation.Induction.edgeF0 {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) (Z : Q2Presentation.Induction.ZeroEdgeDescentData chief K lam hinv) {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (ρ : Q2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst (Q2Presentation.Induction.cChild chief K).snd) (z : ↥(Q2Presentation.Induction.edgeZ1 chief K B ρ)) : ↑Γ.toProfinite.toTop → ↑Γ.toProfinite.toTop → ZMod 2**The quadratic defect leg `F₀(z)`** — the `κ_q⁰`-model graph read along the `z`-twisted lift: `F₀(z)(γ,γ′) = f(z γ, ρ̄γ·z γ′) + m_{ρ̄γ}(z γ′)` (the `thetaGraph` shape at the source).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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 hinvBQ2Presentation.BoundaryPackage ΓρQ2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst (Q2Presentation.Induction.cChild chief K).snd(HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `+` in identifiers is `add`.z↥(Q2Presentation.Induction.edgeZ1 chief K B ρ)+HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `+` in identifiers is `add`.w↥(Q2Presentation.Induction.edgeZ1 chief K B ρ))HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `+` in identifiers is `add`.=Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`. We use `a = b` as notation for `Eq a b`. A fundamental property of equality is that it is an equivalence relation. ``` variable (α : Type) (a b c d : α) variable (hab : a = b) (hcb : c = b) (hcd : c = d) example : a = d := Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd ``` Equality is much more than an equivalence relation, however. It has the important property that every assertion respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value. That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`. Example: ``` example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := Eq.subst h1 h2 example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := h1 ▸ h2 ``` The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`. For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality) Conventions for notations in identifiers: * The recommended spelling of `=` in identifiers is `eq`.Q2Presentation.Induction.edgeF0Q2Presentation.Induction.edgeF0 {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) (Z : Q2Presentation.Induction.ZeroEdgeDescentData chief K lam hinv) {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (ρ : Q2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst (Q2Presentation.Induction.cChild chief K).snd) (z : ↥(Q2Presentation.Induction.edgeZ1 chief K B ρ)) : ↑Γ.toProfinite.toTop → ↑Γ.toProfinite.toTop → ZMod 2**The quadratic defect leg `F₀(z)`** — the `κ_q⁰`-model graph read along the `z`-twisted lift: `F₀(z)(γ,γ′) = f(z γ, ρ̄γ·z γ′) + m_{ρ̄γ}(z γ′)` (the `thetaGraph` shape at the source).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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 hinvBQ2Presentation.BoundaryPackage ΓρQ2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst (Q2Presentation.Induction.cChild chief K).sndz↥(Q2Presentation.Induction.edgeZ1 chief K B ρ)+HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `+` in identifiers is `add`.Q2Presentation.Induction.edgeF0Q2Presentation.Induction.edgeF0 {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) (Z : Q2Presentation.Induction.ZeroEdgeDescentData chief K lam hinv) {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (ρ : Q2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst (Q2Presentation.Induction.cChild chief K).snd) (z : ↥(Q2Presentation.Induction.edgeZ1 chief K B ρ)) : ↑Γ.toProfinite.toTop → ↑Γ.toProfinite.toTop → ZMod 2**The quadratic defect leg `F₀(z)`** — the `κ_q⁰`-model graph read along the `z`-twisted lift: `F₀(z)(γ,γ′) = f(z γ, ρ̄γ·z γ′) + m_{ρ̄γ}(z γ′)` (the `thetaGraph` shape at the source).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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 hinvBQ2Presentation.BoundaryPackage ΓρQ2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst (Q2Presentation.Induction.cChild chief K).sndw↥(Q2Presentation.Induction.edgeZ1 chief K B ρ)+HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `+` in identifiers is `add`.Q2Presentation.Induction.edgePairQ2Presentation.Induction.edgePair {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) (Z : Q2Presentation.Induction.ZeroEdgeDescentData chief K lam hinv) {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (ρ : Q2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst (Q2Presentation.Induction.cChild chief K).snd) (x y : ↥(Q2Presentation.Induction.edgeZ1 chief K B ρ)) : ↑Γ.toProfinite.toTop → ↑Γ.toProfinite.toTop → ZMod 2**The polar pairing cochain** `P(x,y)(γ,γ′) = b(y γ, ρ̄γ·x γ′)` — the cross term of the completed square (design §4-N7 bullet 2); its `ι`-reading is `edgeQ`'s polar form.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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 hinvBQ2Presentation.BoundaryPackage ΓρQ2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst (Q2Presentation.Induction.cChild chief K).sndz↥(Q2Presentation.Induction.edgeZ1 chief K B ρ)w↥(Q2Presentation.Induction.edgeZ1 chief K B ρ)+HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `+` in identifiers is `add`.Q2Presentation.Induction.cochainCoboundaryQ2Presentation.Induction.cochainCoboundary (Γ : ProfiniteGrp.{0}) (u : ↑Γ.toProfinite.toTop → ZMod 2) : ↑Γ.toProfinite.toTop → ↑Γ.toProfinite.toTop → ZMod 2The **explicit coboundary** `δu` of a 1-cochain `u` (char-2 inhomogeneous differential, trivial action): `δu (γ, γ') = u γ + u γ' + u (γγ')`. N7's completed-square defects and `eq:Qkappadifference` corrections enter the calculus through this def.ΓProfiniteGrp.{0}fun γ↑Γ.toProfinite.toTop=> ((Q2Presentation.Induction.edgeBaseFactorQ2Presentation.Induction.edgeBaseFactor {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) (hne : lam ≠ 0) : Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K →ₗ[ZMod 2] Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K →ₗ[ZMod 2] ZMod 2`f`: the bilinear factor set of the base determinant model — `f(v,v) = q̄(v)`, `f(v,w) + f(w,v) = b_q̄(v,w)` (hygiene def fixing the `FiniteDimensional` instance path once).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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)⋯) (↑z↥(Q2Presentation.Induction.edgeZ1 chief K B ρ)γ↑Γ.toProfinite.toTop)) (↑w↥(Q2Presentation.Induction.edgeZ1 chief K B ρ)γ↑Γ.toProfinite.toTop)**The completed-square identity for `F₀`**: `F₀(z+w) = F₀(z) + F₀(w) + P(z,w) + δ(γ ↦ f(z γ, w γ))` — the cochain-level `prop:phaseidentity` cross-term computation.
-
theoremdefined in Q2Presentation/Induction/ZeroEdgePointwise.leancomplete
theorem Q2Presentation.Induction.edgeLiftableDesc_iff_solvable {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)) {ΓProfiniteGrp.{0}: ProfiniteGrp.{0}ProfiniteGrp.{u_1} : Type (u_1 + 1)The category of profinite groups. A term of this type consists of a profinite set with a topological group structure.} (BQ2Presentation.BoundaryPackage Γ: Q2Presentation.BoundaryPackageQ2Presentation.BoundaryPackage (Γ : ProfiniteGrp.{0}) : TypeA **boundary package** on a profinite group `Γ`: the uniform Stage-C data of a tame quotient, a maximal pro-`2` quotient, and a common unramified character `ℤ₂` through which both factor (manuscript Prop 3.14, `prop:compatiblemarking`; plan Turn 4 §6). The compatibility `tameMap ≫ ν_t = ν = pro2Map ≫ ν_2` records that the two markings agree on the full unramified coordinate, not merely modulo `2`.ΓProfiniteGrp.{0}) (ρQ2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst (Q2Presentation.Induction.cChild chief K).snd: Q2Presentation.boundaryFramedSurjQ2Presentation.boundaryFramedSurj {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (Yt : Q2Presentation.BoundaryFramedTarget) (F : Q2Presentation.BoundaryFrame Yt) : TypeThe **boundary-framed surjections** `e_Γ^β(𝒴)` (manuscript `eq:eGamma`): the continuous surjections `f : Γ ↠ Y` whose induced map to `H × E` is the prescribed `β ∘ b_Γ`, i.e. `q_Y ∘ f = β ∘ b_Γ`. This is the subtype counted in Theorem 4.2; its cardinality is `e_Γ^β(𝒴)`.BQ2Presentation.BoundaryPackage Γ(Q2Presentation.Induction.cChildQ2Presentation.Induction.cChild {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPair**The C-child framed pair** (the carrier of `X_Γ(C)`; manuscript `C = Y/K` via `B/M' ≅ C`, `mChildCollapse`).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.(Q2Presentation.Induction.cChildQ2Presentation.Induction.cChild {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPair**The C-child framed pair** (the carrier of `X_Γ(C)`; manuscript `C = Y/K` via `B/M' ≅ C`, `mChildCollapse`).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.) (PQ2Presentation.Induction.ZeroEdgePinning chief K lam hinv Z: Q2Presentation.Induction.ZeroEdgePinningQ2Presentation.Induction.ZeroEdgePinning {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) (Z : Q2Presentation.Induction.ZeroEdgeDescentData chief K lam hinv) : Type**The base-identity pinning of a bundle `Z`** — the §13 deferral's third item, concrete. In the `Z.Csec`-coordinates (a multiplicative section `s`, so the section cochain `η` vanishes), the normalized section cocycle of the ACTUAL descended cover `descTarget Z.D Z.hW` at the total section `(v,c) ↦ ℓ̂(v)·σ̂(c)` is `κ((v,c),(w,d)) = g(v,cw) + n_c(w) + e(c,d)` with `g/n/e` the three deck readings; the fields pin * `g = edgeBaseFactor` (`fib_*`): the fibre part is the `κ_q⁰`-model factor set — `eq:basekappacochain`'s fibre normalization; * `n_c = Z.mC c + Z.gammaK c ∘ (c·)` (`conj_*`): the conjugation defect is the model correction plus the `Γ_{γ_κ}`-term (`eq:Gammagamma`); * `e = Z.deltaK` (`sec_*`): the pure base part is the inflated scalar — i.e. `κ = κ_q⁰ + Γ_{γ_κ} + inf δ_κ` as normalized cochains, `eq:descendedclass` l.4037–4045 ON THE NOSE; and `tau_eT` pins `Z.eT` as the actual zero-section pullback of `B → V⋊C` along the `Csec`-section (`lem:affinelifting` l.4050–4056). `Nonempty (ZeroEdgePinning … Z)` is the pinning hypothesis the FUTURE coordinated R4b keep must carry alongside `Z` (both U8/U9 zero-edge keep docstrings + §13 note 6).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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) (z↥(Q2Presentation.Induction.edgeZ1 chief K B ρ): ↥(Q2Presentation.Induction.edgeZ1Q2Presentation.Induction.edgeZ1 {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (ρ : Q2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst (Q2Presentation.Induction.cChild chief K).snd) : Submodule (ZMod 2) (↑Γ.toProfinite.toTop → Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K)**`Z¹_ρ(V)`** — the `ZMod 2`-module of continuous (locally constant) `V`-valued ρ̄-twisted 1-cocycles: `z(γγ′) = z(γ) + ρ̄(γ)·z(γ′)` (THE orientation pin — `aRep_cocycle`'s house orientation; design §2.1's `W_ρ`, the engine carrier of the W2 instantiation).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactorBQ2Presentation.BoundaryPackage ΓρQ2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst (Q2Presentation.Induction.cChild chief K).snd)) : Q2Presentation.Induction.edgeLiftableDescQ2Presentation.Induction.edgeLiftableDesc {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) (Z : Q2Presentation.Induction.ZeroEdgeDescentData chief K lam hinv) {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (ρ : Q2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst (Q2Presentation.Induction.cChild chief K).snd) (P : Q2Presentation.Induction.ZeroEdgePinning chief K lam hinv Z) (z : ↥(Q2Presentation.Induction.edgeZ1 chief K B ρ)) : Prop**Desc-liftability of the `z`-twisted lift** — N1's `descLiftableWeak` shape at the pinned `V⋊C`-lift `γ ↦ vInG(z γ)·s(ρ̄γ)` (= `btLiftVal (edgeTrivial … P.s … z)`, `edgeTrivial_apply`).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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 hinvBQ2Presentation.BoundaryPackage ΓρQ2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst (Q2Presentation.Induction.cChild chief K).sndPQ2Presentation.Induction.ZeroEdgePinning chief K lam hinv Zz↥(Q2Presentation.Induction.edgeZ1 chief K B ρ)↔Iff (a b : Prop) : PropIf and only if, or logical bi-implication. `a ↔ b` means that `a` implies `b` and vice versa. By `propext`, this implies that `a` and `b` are equal and hence any expression involving `a` is equivalent to the corresponding expression with `b` instead. Conventions for notations in identifiers: * The recommended spelling of `↔` in identifiers is `iff`. * The recommended spelling of `<->` in identifiers is `iff` (prefer `↔` over `<->`).Q2Presentation.Induction.CochainSolvableQ2Presentation.Induction.CochainSolvable (Γ : ProfiniteGrp.{0}) (F : ↑Γ.toProfinite.toTop → ↑Γ.toProfinite.toTop → ZMod 2) : Prop**Cochain solvability** (design §4-N2): the 2-cochain equation of `F` on the profinite source `Γ` has a continuous (= locally constant, `Γ` profinite and `𝔽₂` discrete) solution — `∃ c : Γ → 𝔽₂` continuous with `c (γγ') = c γ + c γ' + F γ γ'`. This is the SOLVABILITY INDICATOR of the normalized-cochain house style: no cohomology carrier is ever formed, and `F` need not be a cocycle for the Prop to be well-formed (the calculus below restricts to cocycles exactly where the mathematics does).ΓProfiniteGrp.{0}(Q2Presentation.Induction.edgeDefectFullQ2Presentation.Induction.edgeDefectFull {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) (Z : Q2Presentation.Induction.ZeroEdgeDescentData chief K lam hinv) {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (ρ : Q2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst (Q2Presentation.Induction.cChild chief K).snd) (z : ↥(Q2Presentation.Induction.edgeZ1 chief K B ρ)) : ↑Γ.toProfinite.toTop → ↑Γ.toProfinite.toTop → ZMod 2**The full defect cochain `F(z)`** of the `z`-twisted lift through `descTarget` (`eq:descendedclass` along the graph): `F₀(z) + Γ_{γ_κ}(z) + ρ*δ_κ` — the `l/ε`-split of `eq:Qkappadifference` (l.2158–2163) is this sum's shape, and the pinned-lift bridge below reads it off the actual cover.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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 hinvBQ2Presentation.BoundaryPackage ΓρQ2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst (Q2Presentation.Induction.cChild chief K).sndz↥(Q2Presentation.Induction.edgeZ1 chief K B ρ))theorem Q2Presentation.Induction.edgeLiftableDesc_iff_solvable {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)) {ΓProfiniteGrp.{0}: ProfiniteGrp.{0}ProfiniteGrp.{u_1} : Type (u_1 + 1)The category of profinite groups. A term of this type consists of a profinite set with a topological group structure.} (BQ2Presentation.BoundaryPackage Γ: Q2Presentation.BoundaryPackageQ2Presentation.BoundaryPackage (Γ : ProfiniteGrp.{0}) : TypeA **boundary package** on a profinite group `Γ`: the uniform Stage-C data of a tame quotient, a maximal pro-`2` quotient, and a common unramified character `ℤ₂` through which both factor (manuscript Prop 3.14, `prop:compatiblemarking`; plan Turn 4 §6). The compatibility `tameMap ≫ ν_t = ν = pro2Map ≫ ν_2` records that the two markings agree on the full unramified coordinate, not merely modulo `2`.ΓProfiniteGrp.{0}) (ρQ2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst (Q2Presentation.Induction.cChild chief K).snd: Q2Presentation.boundaryFramedSurjQ2Presentation.boundaryFramedSurj {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (Yt : Q2Presentation.BoundaryFramedTarget) (F : Q2Presentation.BoundaryFrame Yt) : TypeThe **boundary-framed surjections** `e_Γ^β(𝒴)` (manuscript `eq:eGamma`): the continuous surjections `f : Γ ↠ Y` whose induced map to `H × E` is the prescribed `β ∘ b_Γ`, i.e. `q_Y ∘ f = β ∘ b_Γ`. This is the subtype counted in Theorem 4.2; its cardinality is `e_Γ^β(𝒴)`.BQ2Presentation.BoundaryPackage Γ(Q2Presentation.Induction.cChildQ2Presentation.Induction.cChild {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPair**The C-child framed pair** (the carrier of `X_Γ(C)`; manuscript `C = Y/K` via `B/M' ≅ C`, `mChildCollapse`).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.(Q2Presentation.Induction.cChildQ2Presentation.Induction.cChild {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPair**The C-child framed pair** (the carrier of `X_Γ(C)`; manuscript `C = Y/K` via `B/M' ≅ C`, `mChildCollapse`).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.) (PQ2Presentation.Induction.ZeroEdgePinning chief K lam hinv Z: Q2Presentation.Induction.ZeroEdgePinningQ2Presentation.Induction.ZeroEdgePinning {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) (Z : Q2Presentation.Induction.ZeroEdgeDescentData chief K lam hinv) : Type**The base-identity pinning of a bundle `Z`** — the §13 deferral's third item, concrete. In the `Z.Csec`-coordinates (a multiplicative section `s`, so the section cochain `η` vanishes), the normalized section cocycle of the ACTUAL descended cover `descTarget Z.D Z.hW` at the total section `(v,c) ↦ ℓ̂(v)·σ̂(c)` is `κ((v,c),(w,d)) = g(v,cw) + n_c(w) + e(c,d)` with `g/n/e` the three deck readings; the fields pin * `g = edgeBaseFactor` (`fib_*`): the fibre part is the `κ_q⁰`-model factor set — `eq:basekappacochain`'s fibre normalization; * `n_c = Z.mC c + Z.gammaK c ∘ (c·)` (`conj_*`): the conjugation defect is the model correction plus the `Γ_{γ_κ}`-term (`eq:Gammagamma`); * `e = Z.deltaK` (`sec_*`): the pure base part is the inflated scalar — i.e. `κ = κ_q⁰ + Γ_{γ_κ} + inf δ_κ` as normalized cochains, `eq:descendedclass` l.4037–4045 ON THE NOSE; and `tau_eT` pins `Z.eT` as the actual zero-section pullback of `B → V⋊C` along the `Csec`-section (`lem:affinelifting` l.4050–4056). `Nonempty (ZeroEdgePinning … Z)` is the pinning hypothesis the FUTURE coordinated R4b keep must carry alongside `Z` (both U8/U9 zero-edge keep docstrings + §13 note 6).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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) (z↥(Q2Presentation.Induction.edgeZ1 chief K B ρ): ↥(Q2Presentation.Induction.edgeZ1Q2Presentation.Induction.edgeZ1 {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (ρ : Q2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst (Q2Presentation.Induction.cChild chief K).snd) : Submodule (ZMod 2) (↑Γ.toProfinite.toTop → Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K)**`Z¹_ρ(V)`** — the `ZMod 2`-module of continuous (locally constant) `V`-valued ρ̄-twisted 1-cocycles: `z(γγ′) = z(γ) + ρ̄(γ)·z(γ′)` (THE orientation pin — `aRep_cocycle`'s house orientation; design §2.1's `W_ρ`, the engine carrier of the W2 instantiation).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactorBQ2Presentation.BoundaryPackage ΓρQ2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst (Q2Presentation.Induction.cChild chief K).snd)) : Q2Presentation.Induction.edgeLiftableDescQ2Presentation.Induction.edgeLiftableDesc {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) (Z : Q2Presentation.Induction.ZeroEdgeDescentData chief K lam hinv) {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (ρ : Q2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst (Q2Presentation.Induction.cChild chief K).snd) (P : Q2Presentation.Induction.ZeroEdgePinning chief K lam hinv Z) (z : ↥(Q2Presentation.Induction.edgeZ1 chief K B ρ)) : Prop**Desc-liftability of the `z`-twisted lift** — N1's `descLiftableWeak` shape at the pinned `V⋊C`-lift `γ ↦ vInG(z γ)·s(ρ̄γ)` (= `btLiftVal (edgeTrivial … P.s … z)`, `edgeTrivial_apply`).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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 hinvBQ2Presentation.BoundaryPackage ΓρQ2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst (Q2Presentation.Induction.cChild chief K).sndPQ2Presentation.Induction.ZeroEdgePinning chief K lam hinv Zz↥(Q2Presentation.Induction.edgeZ1 chief K B ρ)↔Iff (a b : Prop) : PropIf and only if, or logical bi-implication. `a ↔ b` means that `a` implies `b` and vice versa. By `propext`, this implies that `a` and `b` are equal and hence any expression involving `a` is equivalent to the corresponding expression with `b` instead. Conventions for notations in identifiers: * The recommended spelling of `↔` in identifiers is `iff`. * The recommended spelling of `<->` in identifiers is `iff` (prefer `↔` over `<->`).Q2Presentation.Induction.CochainSolvableQ2Presentation.Induction.CochainSolvable (Γ : ProfiniteGrp.{0}) (F : ↑Γ.toProfinite.toTop → ↑Γ.toProfinite.toTop → ZMod 2) : Prop**Cochain solvability** (design §4-N2): the 2-cochain equation of `F` on the profinite source `Γ` has a continuous (= locally constant, `Γ` profinite and `𝔽₂` discrete) solution — `∃ c : Γ → 𝔽₂` continuous with `c (γγ') = c γ + c γ' + F γ γ'`. This is the SOLVABILITY INDICATOR of the normalized-cochain house style: no cohomology carrier is ever formed, and `F` need not be a cocycle for the Prop to be well-formed (the calculus below restricts to cocycles exactly where the mathematics does).ΓProfiniteGrp.{0}(Q2Presentation.Induction.edgeDefectFullQ2Presentation.Induction.edgeDefectFull {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) (Z : Q2Presentation.Induction.ZeroEdgeDescentData chief K lam hinv) {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (ρ : Q2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst (Q2Presentation.Induction.cChild chief K).snd) (z : ↥(Q2Presentation.Induction.edgeZ1 chief K B ρ)) : ↑Γ.toProfinite.toTop → ↑Γ.toProfinite.toTop → ZMod 2**The full defect cochain `F(z)`** of the `z`-twisted lift through `descTarget` (`eq:descendedclass` along the graph): `F₀(z) + Γ_{γ_κ}(z) + ρ*δ_κ` — the `l/ε`-split of `eq:Qkappadifference` (l.2158–2163) is this sum's shape, and the pinned-lift bridge below reads it off the actual cover.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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 hinvBQ2Presentation.BoundaryPackage ΓρQ2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst (Q2Presentation.Induction.cChild chief K).sndz↥(Q2Presentation.Induction.edgeZ1 chief K B ρ))**The bridge (design §4-N7 bullet 1, exit)**: the `z`-twisted lift descends through `descTarget` iff its full defect 2-cocycle equation is continuously solvable — `prop:phaseidentity`'s carrier statement, dissolved into the normalized-cochain calculus.
-
theoremdefined in Q2Presentation/Induction/ZeroEdgePointwise.leancomplete
theorem Q2Presentation.Induction.edgePhaseBridge {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)) {ΓProfiniteGrp.{0}: ProfiniteGrp.{0}ProfiniteGrp.{u_1} : Type (u_1 + 1)The category of profinite groups. A term of this type consists of a profinite set with a topological group structure.} (BQ2Presentation.BoundaryPackage Γ: Q2Presentation.BoundaryPackageQ2Presentation.BoundaryPackage (Γ : ProfiniteGrp.{0}) : TypeA **boundary package** on a profinite group `Γ`: the uniform Stage-C data of a tame quotient, a maximal pro-`2` quotient, and a common unramified character `ℤ₂` through which both factor (manuscript Prop 3.14, `prop:compatiblemarking`; plan Turn 4 §6). The compatibility `tameMap ≫ ν_t = ν = pro2Map ≫ ν_2` records that the two markings agree on the full unramified coordinate, not merely modulo `2`.ΓProfiniteGrp.{0}) (ρQ2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst (Q2Presentation.Induction.cChild chief K).snd: Q2Presentation.boundaryFramedSurjQ2Presentation.boundaryFramedSurj {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (Yt : Q2Presentation.BoundaryFramedTarget) (F : Q2Presentation.BoundaryFrame Yt) : TypeThe **boundary-framed surjections** `e_Γ^β(𝒴)` (manuscript `eq:eGamma`): the continuous surjections `f : Γ ↠ Y` whose induced map to `H × E` is the prescribed `β ∘ b_Γ`, i.e. `q_Y ∘ f = β ∘ b_Γ`. This is the subtype counted in Theorem 4.2; its cardinality is `e_Γ^β(𝒴)`.BQ2Presentation.BoundaryPackage Γ(Q2Presentation.Induction.cChildQ2Presentation.Induction.cChild {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPair**The C-child framed pair** (the carrier of `X_Γ(C)`; manuscript `C = Y/K` via `B/M' ≅ C`, `mChildCollapse`).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.(Q2Presentation.Induction.cChildQ2Presentation.Induction.cChild {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPair**The C-child framed pair** (the carrier of `X_Γ(C)`; manuscript `C = Y/K` via `B/M' ≅ C`, `mChildCollapse`).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.) (tokQ2Presentation.Induction.IotaToken Γ: Q2Presentation.Induction.IotaTokenQ2Presentation.Induction.IotaToken (Γ : ProfiniteGrp.{0}) : Prop**The per-source `ι`-additivity token** (design §4-N2; the `h² ≤ 1` token): at the source `Γ`, any two UNSOLVABLE normalized continuous 2-cocycle equations have solvable sum. This is the cochain-level spelling of `dim H²(Γ, 𝔽₂) ≤ 1` — stated with no cohomology carriers. Consumed as a hypothesis by the N7 engine instantiation; discharged per source by N3 (`IotaToken GQ2Profinite`, floor F-ι-loc: NSW (7.2.6) at the trivial module + (7.3.1)) and N4 (`GammaA`-bases, floor F-ι-cand: `prop:chainmap` l.1687 + `lem:finitewordstokes`). Together with the free half (`cochainSolvable_add`, `not_cochainSolvable_add_left/right`) it makes the case table of `iotaRead` on cocycle sums total.ΓProfiniteGrp.{0}) (chi↥(Q2Presentation.Induction.XT chief K): ↥(Q2Presentation.Induction.XTQ2Presentation.Induction.XT {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Submodule (ZMod 2) (Module.Dual (ZMod 2) ↥(Q2Presentation.Induction.towerT K))**`𝒳_T = (T^∨)^C`**: the `C`-invariant duals of the radical layer, against the proven restricted action `sec7ActOnTHom`.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)) : Q2Presentation.Quadratic.Dickson.signCharQ2Presentation.Quadratic.Dickson.signChar (a : ZMod 2) : ℤThe sign character `χ(0) = 1`, `χ(1) = -1`.(HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `+` in identifiers is `add`.((Module.evalEquivModule.evalEquiv.{u_3, u_4} (R : Type u_3) (M : Type u_4) [CommSemiring R] [AddCommMonoid M] [Module R M] [Module.IsReflexive R M] : M ≃ₗ[R] Module.Dual R (Module.Dual R M)The bijection between a reflexive module and its double dual, bundled as a `LinearEquiv`.(ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.2) ↥(Q2Presentation.Induction.XTQ2Presentation.Induction.XT {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Submodule (ZMod 2) (Module.Dual (ZMod 2) ↥(Q2Presentation.Induction.towerT K))**`𝒳_T = (T^∨)^C`**: the `C`-invariant duals of the radical layer, against the proven restricted action `sec7ActOnTHom`.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)) chi↥(Q2Presentation.Induction.XT chief K)) (Q2Presentation.Induction.edgeKappaQ2Presentation.Induction.edgeKappa {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) (Z : Q2Presentation.Induction.ZeroEdgeDescentData chief K lam hinv) {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (ρ : Q2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst (Q2Presentation.Induction.cChild chief K).snd) (tok : Q2Presentation.Induction.IotaToken Γ) : Module.Dual (ZMod 2) ↥(Q2Presentation.Induction.XT chief K)**The constraint target `κ₀ ∈ 𝒳_T^∨`** (the `ρ*e`-class read).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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 hinvBQ2Presentation.BoundaryPackage ΓρQ2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst (Q2Presentation.Induction.cChild chief K).sndtokQ2Presentation.Induction.IotaToken Γ) +HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `+` in identifiers is `add`.Q2Presentation.Induction.edgeEpsReadQ2Presentation.Induction.edgeEpsRead {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) (Z : Q2Presentation.Induction.ZeroEdgeDescentData chief K lam hinv) {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (ρ : Q2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst (Q2Presentation.Induction.cChild chief K).snd) : ZMod 2The constant slot `ε₀ = ι_Γ(ρ*δ_κ)`.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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 hinvBQ2Presentation.BoundaryPackage ΓρQ2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst (Q2Presentation.Induction.cChild chief K).snd+HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `+` in identifiers is `add`.(Q2Presentation.Induction.edgeQQ2Presentation.Induction.edgeQ {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) (Z : Q2Presentation.Induction.ZeroEdgeDescentData chief K lam hinv) {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (ρ : Q2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst (Q2Presentation.Induction.cChild chief K).snd) (tok : Q2Presentation.Induction.IotaToken Γ) : Q2Presentation.Quadratic.QuadF2 ↥(Q2Presentation.Induction.edgeZ1 chief K B ρ)**`edgeQ` — the P6-engine form at `W_ρ = Z¹_ρ(V)`** (design §2.1, the W2 instantiation): form `= ι∘F₀`, polar `= ι∘P`; quadratic law from the completed-square cochain identity plus the token.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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 hinvBQ2Presentation.BoundaryPackage ΓρQ2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst (Q2Presentation.Induction.cChild chief K).sndtokQ2Presentation.Induction.IotaToken Γ).formQ2Presentation.Quadratic.QuadF2.form.{u_2} {V : Type u_2} [AddCommGroup V] [Module (ZMod 2) V] (self : Q2Presentation.Quadratic.QuadF2 V) : V → ZMod 2the quadratic map `q : V → F₂`(Q2Presentation.Induction.edgeAQ2Presentation.Induction.edgeA {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) (Z : Q2Presentation.Induction.ZeroEdgeDescentData chief K lam hinv) {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (ρ : Q2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst (Q2Presentation.Induction.cChild chief K).snd) (chi : ↥(Q2Presentation.Induction.XT chief K)) : ↥(Q2Presentation.Induction.edgeZ1 chief K B ρ)**`a_{χ,κ}` pulled to the cocycle level** (design §4-N7 bullet 3): `γ ↦ a_{χ,κ}(ρ̄γ)` is a `ρ̄`-twisted cocycle — the engine's representing vector at `χ`.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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 hinvBQ2Presentation.BoundaryPackage ΓρQ2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst (Q2Presentation.Induction.cChild chief K).sndchi↥(Q2Presentation.Induction.XT chief K)))HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `+` in identifiers is `add`.=Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`. We use `a = b` as notation for `Eq a b`. A fundamental property of equality is that it is an equivalence relation. ``` variable (α : Type) (a b c d : α) variable (hab : a = b) (hcb : c = b) (hcd : c = d) example : a = d := Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd ``` Equality is much more than an equivalence relation, however. It has the important property that every assertion respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value. That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`. Example: ``` example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := Eq.subst h1 h2 example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := h1 ▸ h2 ``` The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`. For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality) Conventions for notations in identifiers: * The recommended spelling of `=` in identifiers is `eq`.Q2Presentation.Induction.iotaSignQ2Presentation.Induction.iotaSign (Γ : ProfiniteGrp.{0}) (F : ↑Γ.toProfinite.toTop → ↑Γ.toProfinite.toTop → ZMod 2) : ℤ**The `±1`-indicator** of solvability in `ℤ`: `+1` if solvable, `−1` if not — the summand shape of `eq:recursionR5a`'s `s_Γ(ζ) = Σ_ρ (±1)` absorption (`sGammaZ_eq` downstream).ΓProfiniteGrp.{0}(Q2Presentation.Induction.pullCochainQ2Presentation.Induction.pullCochain (Yt : Q2Presentation.BoundaryFramedTarget) (zeta : Yt.Y → Yt.Y → ZMod 2) {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (F : Q2Presentation.BoundaryFrame Yt) (g : Q2Presentation.boundaryFramedSurj B Yt F) : ↑Γ.toProfinite.toTop → ↑Γ.toProfinite.toTop → ZMod 2**The pulled-back 2-cochain `g*ζ`** of a boundary-framed surjection `g : Γ ↠ Y` — the source-side equation whose solvability the ζ-cover lift indicator reads (`lem:phasecover` l.4377–4379).(Q2Presentation.Induction.cChildQ2Presentation.Induction.cChild {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPair**The C-child framed pair** (the carrier of `X_Γ(C)`; manuscript `C = Y/K` via `B/M' ≅ C`, `mChildCollapse`).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.(Q2Presentation.Induction.DeltaQ2Presentation.Induction.Delta {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) (Z : Q2Presentation.Induction.ZeroEdgeDescentData chief K lam hinv) (chi : ↥(Q2Presentation.Induction.XT chief K)) : (Q2Presentation.Induction.cChild chief K).fst.Y → (Q2Presentation.Induction.cChild chief K).fst.Y → ZMod 2**The phase class `Δ_{χ,κ}` on the C-child carrier** — `DeltaC` transported along the canonical collapse `B/M' ≃* C` (`cChildCollapse`); the cocycle P7's `phaseCount`/`phaseCoverPair` consume at `ζ := Delta Z chi` (design §4.7; per-cocycle discipline, no class-invariance asserted).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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 hinvchi↥(Q2Presentation.Induction.XT chief K)) BQ2Presentation.BoundaryPackage Γ(Q2Presentation.Induction.cChildQ2Presentation.Induction.cChild {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPair**The C-child framed pair** (the carrier of `X_Γ(C)`; manuscript `C = Y/K` via `B/M' ≅ C`, `mChildCollapse`).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.ρQ2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst (Q2Presentation.Induction.cChild chief K).snd)theorem Q2Presentation.Induction.edgePhaseBridge {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)) {ΓProfiniteGrp.{0}: ProfiniteGrp.{0}ProfiniteGrp.{u_1} : Type (u_1 + 1)The category of profinite groups. A term of this type consists of a profinite set with a topological group structure.} (BQ2Presentation.BoundaryPackage Γ: Q2Presentation.BoundaryPackageQ2Presentation.BoundaryPackage (Γ : ProfiniteGrp.{0}) : TypeA **boundary package** on a profinite group `Γ`: the uniform Stage-C data of a tame quotient, a maximal pro-`2` quotient, and a common unramified character `ℤ₂` through which both factor (manuscript Prop 3.14, `prop:compatiblemarking`; plan Turn 4 §6). The compatibility `tameMap ≫ ν_t = ν = pro2Map ≫ ν_2` records that the two markings agree on the full unramified coordinate, not merely modulo `2`.ΓProfiniteGrp.{0}) (ρQ2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst (Q2Presentation.Induction.cChild chief K).snd: Q2Presentation.boundaryFramedSurjQ2Presentation.boundaryFramedSurj {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (Yt : Q2Presentation.BoundaryFramedTarget) (F : Q2Presentation.BoundaryFrame Yt) : TypeThe **boundary-framed surjections** `e_Γ^β(𝒴)` (manuscript `eq:eGamma`): the continuous surjections `f : Γ ↠ Y` whose induced map to `H × E` is the prescribed `β ∘ b_Γ`, i.e. `q_Y ∘ f = β ∘ b_Γ`. This is the subtype counted in Theorem 4.2; its cardinality is `e_Γ^β(𝒴)`.BQ2Presentation.BoundaryPackage Γ(Q2Presentation.Induction.cChildQ2Presentation.Induction.cChild {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPair**The C-child framed pair** (the carrier of `X_Γ(C)`; manuscript `C = Y/K` via `B/M' ≅ C`, `mChildCollapse`).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.(Q2Presentation.Induction.cChildQ2Presentation.Induction.cChild {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPair**The C-child framed pair** (the carrier of `X_Γ(C)`; manuscript `C = Y/K` via `B/M' ≅ C`, `mChildCollapse`).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.) (tokQ2Presentation.Induction.IotaToken Γ: Q2Presentation.Induction.IotaTokenQ2Presentation.Induction.IotaToken (Γ : ProfiniteGrp.{0}) : Prop**The per-source `ι`-additivity token** (design §4-N2; the `h² ≤ 1` token): at the source `Γ`, any two UNSOLVABLE normalized continuous 2-cocycle equations have solvable sum. This is the cochain-level spelling of `dim H²(Γ, 𝔽₂) ≤ 1` — stated with no cohomology carriers. Consumed as a hypothesis by the N7 engine instantiation; discharged per source by N3 (`IotaToken GQ2Profinite`, floor F-ι-loc: NSW (7.2.6) at the trivial module + (7.3.1)) and N4 (`GammaA`-bases, floor F-ι-cand: `prop:chainmap` l.1687 + `lem:finitewordstokes`). Together with the free half (`cochainSolvable_add`, `not_cochainSolvable_add_left/right`) it makes the case table of `iotaRead` on cocycle sums total.ΓProfiniteGrp.{0}) (chi↥(Q2Presentation.Induction.XT chief K): ↥(Q2Presentation.Induction.XTQ2Presentation.Induction.XT {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Submodule (ZMod 2) (Module.Dual (ZMod 2) ↥(Q2Presentation.Induction.towerT K))**`𝒳_T = (T^∨)^C`**: the `C`-invariant duals of the radical layer, against the proven restricted action `sec7ActOnTHom`.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)) : Q2Presentation.Quadratic.Dickson.signCharQ2Presentation.Quadratic.Dickson.signChar (a : ZMod 2) : ℤThe sign character `χ(0) = 1`, `χ(1) = -1`.(HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `+` in identifiers is `add`.((Module.evalEquivModule.evalEquiv.{u_3, u_4} (R : Type u_3) (M : Type u_4) [CommSemiring R] [AddCommMonoid M] [Module R M] [Module.IsReflexive R M] : M ≃ₗ[R] Module.Dual R (Module.Dual R M)The bijection between a reflexive module and its double dual, bundled as a `LinearEquiv`.(ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.2) ↥(Q2Presentation.Induction.XTQ2Presentation.Induction.XT {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Submodule (ZMod 2) (Module.Dual (ZMod 2) ↥(Q2Presentation.Induction.towerT K))**`𝒳_T = (T^∨)^C`**: the `C`-invariant duals of the radical layer, against the proven restricted action `sec7ActOnTHom`.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)) chi↥(Q2Presentation.Induction.XT chief K)) (Q2Presentation.Induction.edgeKappaQ2Presentation.Induction.edgeKappa {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) (Z : Q2Presentation.Induction.ZeroEdgeDescentData chief K lam hinv) {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (ρ : Q2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst (Q2Presentation.Induction.cChild chief K).snd) (tok : Q2Presentation.Induction.IotaToken Γ) : Module.Dual (ZMod 2) ↥(Q2Presentation.Induction.XT chief K)**The constraint target `κ₀ ∈ 𝒳_T^∨`** (the `ρ*e`-class read).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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 hinvBQ2Presentation.BoundaryPackage ΓρQ2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst (Q2Presentation.Induction.cChild chief K).sndtokQ2Presentation.Induction.IotaToken Γ) +HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `+` in identifiers is `add`.Q2Presentation.Induction.edgeEpsReadQ2Presentation.Induction.edgeEpsRead {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) (Z : Q2Presentation.Induction.ZeroEdgeDescentData chief K lam hinv) {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (ρ : Q2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst (Q2Presentation.Induction.cChild chief K).snd) : ZMod 2The constant slot `ε₀ = ι_Γ(ρ*δ_κ)`.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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 hinvBQ2Presentation.BoundaryPackage ΓρQ2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst (Q2Presentation.Induction.cChild chief K).snd+HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `+` in identifiers is `add`.(Q2Presentation.Induction.edgeQQ2Presentation.Induction.edgeQ {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) (Z : Q2Presentation.Induction.ZeroEdgeDescentData chief K lam hinv) {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (ρ : Q2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst (Q2Presentation.Induction.cChild chief K).snd) (tok : Q2Presentation.Induction.IotaToken Γ) : Q2Presentation.Quadratic.QuadF2 ↥(Q2Presentation.Induction.edgeZ1 chief K B ρ)**`edgeQ` — the P6-engine form at `W_ρ = Z¹_ρ(V)`** (design §2.1, the W2 instantiation): form `= ι∘F₀`, polar `= ι∘P`; quadratic law from the completed-square cochain identity plus the token.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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 hinvBQ2Presentation.BoundaryPackage ΓρQ2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst (Q2Presentation.Induction.cChild chief K).sndtokQ2Presentation.Induction.IotaToken Γ).formQ2Presentation.Quadratic.QuadF2.form.{u_2} {V : Type u_2} [AddCommGroup V] [Module (ZMod 2) V] (self : Q2Presentation.Quadratic.QuadF2 V) : V → ZMod 2the quadratic map `q : V → F₂`(Q2Presentation.Induction.edgeAQ2Presentation.Induction.edgeA {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) (Z : Q2Presentation.Induction.ZeroEdgeDescentData chief K lam hinv) {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (ρ : Q2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst (Q2Presentation.Induction.cChild chief K).snd) (chi : ↥(Q2Presentation.Induction.XT chief K)) : ↥(Q2Presentation.Induction.edgeZ1 chief K B ρ)**`a_{χ,κ}` pulled to the cocycle level** (design §4-N7 bullet 3): `γ ↦ a_{χ,κ}(ρ̄γ)` is a `ρ̄`-twisted cocycle — the engine's representing vector at `χ`.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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 hinvBQ2Presentation.BoundaryPackage ΓρQ2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst (Q2Presentation.Induction.cChild chief K).sndchi↥(Q2Presentation.Induction.XT chief K)))HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `+` in identifiers is `add`.=Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`. We use `a = b` as notation for `Eq a b`. A fundamental property of equality is that it is an equivalence relation. ``` variable (α : Type) (a b c d : α) variable (hab : a = b) (hcb : c = b) (hcd : c = d) example : a = d := Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd ``` Equality is much more than an equivalence relation, however. It has the important property that every assertion respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value. That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`. Example: ``` example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := Eq.subst h1 h2 example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := h1 ▸ h2 ``` The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`. For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality) Conventions for notations in identifiers: * The recommended spelling of `=` in identifiers is `eq`.Q2Presentation.Induction.iotaSignQ2Presentation.Induction.iotaSign (Γ : ProfiniteGrp.{0}) (F : ↑Γ.toProfinite.toTop → ↑Γ.toProfinite.toTop → ZMod 2) : ℤ**The `±1`-indicator** of solvability in `ℤ`: `+1` if solvable, `−1` if not — the summand shape of `eq:recursionR5a`'s `s_Γ(ζ) = Σ_ρ (±1)` absorption (`sGammaZ_eq` downstream).ΓProfiniteGrp.{0}(Q2Presentation.Induction.pullCochainQ2Presentation.Induction.pullCochain (Yt : Q2Presentation.BoundaryFramedTarget) (zeta : Yt.Y → Yt.Y → ZMod 2) {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (F : Q2Presentation.BoundaryFrame Yt) (g : Q2Presentation.boundaryFramedSurj B Yt F) : ↑Γ.toProfinite.toTop → ↑Γ.toProfinite.toTop → ZMod 2**The pulled-back 2-cochain `g*ζ`** of a boundary-framed surjection `g : Γ ↠ Y` — the source-side equation whose solvability the ζ-cover lift indicator reads (`lem:phasecover` l.4377–4379).(Q2Presentation.Induction.cChildQ2Presentation.Induction.cChild {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPair**The C-child framed pair** (the carrier of `X_Γ(C)`; manuscript `C = Y/K` via `B/M' ≅ C`, `mChildCollapse`).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.(Q2Presentation.Induction.DeltaQ2Presentation.Induction.Delta {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) (Z : Q2Presentation.Induction.ZeroEdgeDescentData chief K lam hinv) (chi : ↥(Q2Presentation.Induction.XT chief K)) : (Q2Presentation.Induction.cChild chief K).fst.Y → (Q2Presentation.Induction.cChild chief K).fst.Y → ZMod 2**The phase class `Δ_{χ,κ}` on the C-child carrier** — `DeltaC` transported along the canonical collapse `B/M' ≃* C` (`cChildCollapse`); the cocycle P7's `phaseCount`/`phaseCoverPair` consume at `ζ := Delta Z chi` (design §4.7; per-cocycle discipline, no class-invariance asserted).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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 hinvchi↥(Q2Presentation.Induction.XT chief K)) BQ2Presentation.BoundaryPackage Γ(Q2Presentation.Induction.cChildQ2Presentation.Induction.cChild {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPair**The C-child framed pair** (the carrier of `X_Γ(C)`; manuscript `C = Y/K` via `B/M' ≅ C`, `mChildCollapse`).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.ρQ2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst (Q2Presentation.Induction.cChild chief K).snd)**The phase bridge** (`prop:phaseidentity` l.4108–4146, dissolved): per `χ ∈ 𝒳_T`, the engine's phase at the pulled representing vector EQUALS the `±1`-indicator of `ρ*(Δ_{χ,κ})` — `Δ`'s three legs are the `κ₀`/`ε₀`/`Q(a_χ)`-reads on the nose (`δ_κ` enters exactly once, the P6 §7.6 discipline, because `Delta` already contains it once). -
theoremdefined in Q2Presentation/Quadratic/ConstrainedGauss.leancomplete
theorem Q2Presentation.Quadratic.QuadF2.completedSquare.{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) (aVxV: VType u_1) : qQ2Presentation.Quadratic.QuadF2 V.formQ2Presentation.Quadratic.QuadF2.form.{u_2} {V : Type u_2} [AddCommGroup V] [Module (ZMod 2) V] (self : Q2Presentation.Quadratic.QuadF2 V) : V → ZMod 2the quadratic map `q : V → F₂`xV+HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `+` in identifiers is `add`.(qQ2Presentation.Quadratic.QuadF2 V.polarQ2Presentation.Quadratic.QuadF2.polar.{u_2} {V : Type u_2} [AddCommGroup V] [Module (ZMod 2) V] (self : Q2Presentation.Quadratic.QuadF2 V) : V →ₗ[ZMod 2] V →ₗ[ZMod 2] ZMod 2the bilinear polar form `b_q`, i.e. the commutator pairingaV) xV=Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`. We use `a = b` as notation for `Eq a b`. A fundamental property of equality is that it is an equivalence relation. ``` variable (α : Type) (a b c d : α) variable (hab : a = b) (hcb : c = b) (hcd : c = d) example : a = d := Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd ``` Equality is much more than an equivalence relation, however. It has the important property that every assertion respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value. That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`. Example: ``` example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := Eq.subst h1 h2 example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := h1 ▸ h2 ``` The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`. For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality) Conventions for notations in identifiers: * The recommended spelling of `=` in identifiers is `eq`.qQ2Presentation.Quadratic.QuadF2 V.formQ2Presentation.Quadratic.QuadF2.form.{u_2} {V : Type u_2} [AddCommGroup V] [Module (ZMod 2) V] (self : Q2Presentation.Quadratic.QuadF2 V) : V → ZMod 2the quadratic map `q : V → F₂`(HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `+` in identifiers is `add`.xV+HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `+` in identifiers is `add`.aV)HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `+` in identifiers is `add`.+HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `+` in identifiers is `add`.qQ2Presentation.Quadratic.QuadF2 V.formQ2Presentation.Quadratic.QuadF2.form.{u_2} {V : Type u_2} [AddCommGroup V] [Module (ZMod 2) V] (self : Q2Presentation.Quadratic.QuadF2 V) : V → ZMod 2the quadratic map `q : V → F₂`aVtheorem Q2Presentation.Quadratic.QuadF2.completedSquare.{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) (aVxV: VType u_1) : qQ2Presentation.Quadratic.QuadF2 V.formQ2Presentation.Quadratic.QuadF2.form.{u_2} {V : Type u_2} [AddCommGroup V] [Module (ZMod 2) V] (self : Q2Presentation.Quadratic.QuadF2 V) : V → ZMod 2the quadratic map `q : V → F₂`xV+HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `+` in identifiers is `add`.(qQ2Presentation.Quadratic.QuadF2 V.polarQ2Presentation.Quadratic.QuadF2.polar.{u_2} {V : Type u_2} [AddCommGroup V] [Module (ZMod 2) V] (self : Q2Presentation.Quadratic.QuadF2 V) : V →ₗ[ZMod 2] V →ₗ[ZMod 2] ZMod 2the bilinear polar form `b_q`, i.e. the commutator pairingaV) xV=Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`. We use `a = b` as notation for `Eq a b`. A fundamental property of equality is that it is an equivalence relation. ``` variable (α : Type) (a b c d : α) variable (hab : a = b) (hcb : c = b) (hcd : c = d) example : a = d := Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd ``` Equality is much more than an equivalence relation, however. It has the important property that every assertion respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value. That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`. Example: ``` example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := Eq.subst h1 h2 example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := h1 ▸ h2 ``` The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`. For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality) Conventions for notations in identifiers: * The recommended spelling of `=` in identifiers is `eq`.qQ2Presentation.Quadratic.QuadF2 V.formQ2Presentation.Quadratic.QuadF2.form.{u_2} {V : Type u_2} [AddCommGroup V] [Module (ZMod 2) V] (self : Q2Presentation.Quadratic.QuadF2 V) : V → ZMod 2the quadratic map `q : V → F₂`(HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `+` in identifiers is `add`.xV+HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `+` in identifiers is `add`.aV)HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `+` in identifiers is `add`.+HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `+` in identifiers is `add`.qQ2Presentation.Quadratic.QuadF2 V.formQ2Presentation.Quadratic.QuadF2.form.{u_2} {V : Type u_2} [AddCommGroup V] [Module (ZMod 2) V] (self : Q2Presentation.Quadratic.QuadF2 V) : V → ZMod 2the quadratic map `q : V → F₂`aV**The completed square** (`prop:phaseidentity`'s algebraic core, l.4137–4142; the square-completion step of `lem:constrainedgauss`, l.3899–3904): `Q(x) + b_Q(a, x) = Q(x + a) + Q(a)`.
Proved in §8 of the paper. Ingredients: Corollary 5.14.
-
Q2Presentation.Induction.edgeHalvingGammaA_iff_half_card[complete] -
Q2Presentation.Induction.mChild_rowMap_surjective[complete] -
Q2Presentation.Induction.MStage.sec7_mstage_cochainData[complete] -
Q2Presentation.Induction.mChild_liftHom_nonempty_gq2[complete] -
Q2Presentation.Induction.mChild_Z1_card_gq2[complete] -
Q2Presentation.Induction.sec7_frattiniTrivial_elementaryMStageNormalizedCountData[complete] -
Q2Presentation.Induction.EdgeDelSurj[complete]
Lemma 8.9 of the paper (Elementary lifting and exact-image subtraction).
For every \rho\in X_\Gamma(C),
H^2_{\Gamma,\rho}(M)=0, \qquad |Z^1_{\Gamma,\rho}(M)|=2^{2\dim M}.
Consequently
e_\Gamma(B)=2^{2\dim M}e_\Gamma(C) -\sum_{\substack{J<B\\J\twoheadrightarrow C}}e_\Gamma(J),
where each J has the boundary-framed structure induced from B. For every
proper J<B occurring in this sum,
|J\cap L_B|=|J\cap M|\,|L_C| \le \frac{|M|}{2}|L_C| =\frac{|L_B|}{2}<|L_Y|.
Lean code for Lemma8.9●7 declarations
Associated Lean declarations
-
Q2Presentation.Induction.edgeHalvingGammaA_iff_half_card[complete]
-
Q2Presentation.Induction.mChild_rowMap_surjective[complete]
-
Q2Presentation.Induction.MStage.sec7_mstage_cochainData[complete]
-
Q2Presentation.Induction.mChild_liftHom_nonempty_gq2[complete]
-
Q2Presentation.Induction.mChild_Z1_card_gq2[complete]
-
Q2Presentation.Induction.sec7_frattiniTrivial_elementaryMStageNormalizedCountData[complete]
-
Q2Presentation.Induction.EdgeDelSurj[complete]
-
Q2Presentation.Induction.edgeHalvingGammaA_iff_half_card[complete] -
Q2Presentation.Induction.mChild_rowMap_surjective[complete] -
Q2Presentation.Induction.MStage.sec7_mstage_cochainData[complete] -
Q2Presentation.Induction.mChild_liftHom_nonempty_gq2[complete] -
Q2Presentation.Induction.mChild_Z1_card_gq2[complete] -
Q2Presentation.Induction.sec7_frattiniTrivial_elementaryMStageNormalizedCountData[complete] -
Q2Presentation.Induction.EdgeDelSurj[complete]
-
theoremdefined in Q2Presentation/Induction/BlockRecursionKeeps.leancomplete
theorem Q2Presentation.Induction.edgeHalvingGammaA_iff_half_card {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)) : Q2Presentation.Induction.EdgeHalvingGammaAQ2Presentation.Induction.EdgeHalvingGammaA {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) : Prop**The R4a per-fibre halving, candidate source** — THE sharply-scoped R4a residual (manuscript `lem:radicaledge` step 6, l.4006–4019: exact variation formula + perfect degree-one duality; candidate half = `prop:chainmap` l.1687 + `prop:defduality`-grade degree-one content): over each `g_C`, exactly half of the weak `M`-lifts are λ-liftable, stated division-free per fibre. Deliberately does NOT assert the fibre size `2^{2·dim M}` (that is the separate, PROVEN `lem:elementarystage` obligation — design §6.3), and is deliberately NOT conditioned here on `¬ ZeroEdge` — the conditioning belongs to its (future, coordinated) keep `sec7_edgeHalving_gammaA (hne) (hedge) : EdgeHalvingGammaA …`, whose dissolution program is recorded in the design §4.6: (i) the ledger variation formula from U3's `edgeDefect` calculus + the weak-base defect engine; (ii) `edgeShadow ≠ 0` on the `T`-cocycle space by the trivial-chain dévissage over the PROVEN `Sec7TrivialChainData`; (iii) the free-orbit torsor bookkeeping.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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)↔Iff (a b : Prop) : PropIf and only if, or logical bi-implication. `a ↔ b` means that `a` implies `b` and vice versa. By `propext`, this implies that `a` and `b` are equal and hence any expression involving `a` is equivalent to the corresponding expression with `b` instead. Conventions for notations in identifiers: * The recommended spelling of `↔` in identifiers is `iff`. * The recommended spelling of `<->` in identifiers is `iff` (prefer `↔` over `<->`).∀ (gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GammaA (Q2Presentation.TorsorProgram.quotientFramedTarget (Q2Presentation.Induction.XRZero.xrChild chief K).fst (Q2Presentation.Induction.mChildKernel chief K).N ⋯ ⋯) (Q2Presentation.TorsorProgram.quotientFrame (Q2Presentation.Induction.XRZero.xrChild chief K).fst (Q2Presentation.Induction.mChildKernel chief K).N ⋯ ⋯ (Q2Presentation.Induction.XRZero.xrChild chief K).snd): Q2Presentation.boundaryFramedSurjQ2Presentation.boundaryFramedSurj {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (Yt : Q2Presentation.BoundaryFramedTarget) (F : Q2Presentation.BoundaryFrame Yt) : TypeThe **boundary-framed surjections** `e_Γ^β(𝒴)` (manuscript `eq:eGamma`): the continuous surjections `f : Γ ↠ Y` whose induced map to `H × E` is the prescribed `β ∘ b_Γ`, i.e. `q_Y ∘ f = β ∘ b_Γ`. This is the subtype counted in Theorem 4.2; its cardinality is `e_Γ^β(𝒴)`.Q2Presentation.boundaryPackage_GammaAQ2Presentation.boundaryPackage_GammaA : Q2Presentation.BoundaryPackage Q2Presentation.GammaA**The candidate boundary package** (manuscript Prop 3.14, `prop:compatiblemarking`; plan Turn 4 §6). The Stage-C data of `Γ_A`: the common tame quotient `gammaTameMap`, the maximal pro-`2` quotient `p : Γ_A ⟶ Π`, and the common unramified character `ν = gammaTameMap ≫ ν_t`, through which both factor.(Q2Presentation.TorsorProgram.quotientFramedTargetQ2Presentation.TorsorProgram.quotientFramedTarget (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y) [hNn : N.Normal] (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) : Q2Presentation.BoundaryFramedTarget**The quotient framed target** `Y/N` (same `H`, same `E`, image wild kernel).(Q2Presentation.Induction.XRZero.xrChildQ2Presentation.Induction.XRZero.xrChild {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPairThe `𝒳_R = 0` child: the quotient framed pair at `N = Φ`-layer.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.(Q2Presentation.Induction.mChildKernelQ2Presentation.Induction.mChildKernel {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Lifting.ElementaryKernel (Q2Presentation.Induction.XRZero.xrChild chief K).fst**The elementary `M`-kernel at the child** `B = Y/Φ(K)` (`lem:simplehead` carrier for `lem:elementarystage`): `N = M' = K/Φ(K)`.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).NQ2Presentation.Lifting.ElementaryKernel.N {Yt : Q2Presentation.BoundaryFramedTarget} (self : Q2Presentation.Lifting.ElementaryKernel Yt) : Subgroup Yt.Y⋯ ⋯) (Q2Presentation.TorsorProgram.quotientFrameQ2Presentation.TorsorProgram.quotientFrame (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y) [hNn : N.Normal] (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) (F : Q2Presentation.BoundaryFrame Yt) : Q2Presentation.BoundaryFrame (Q2Presentation.TorsorProgram.quotientFramedTarget Yt N hNLY hNθ)The frame transports verbatim (`H`, `E`, `α`, `ψ`, `β` unchanged).(Q2Presentation.Induction.XRZero.xrChildQ2Presentation.Induction.XRZero.xrChild {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPairThe `𝒳_R = 0` child: the quotient framed pair at `N = Φ`-layer.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.(Q2Presentation.Induction.mChildKernelQ2Presentation.Induction.mChildKernel {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Lifting.ElementaryKernel (Q2Presentation.Induction.XRZero.xrChild chief K).fst**The elementary `M`-kernel at the child** `B = Y/Φ(K)` (`lem:simplehead` carrier for `lem:elementarystage`): `N = M' = K/Φ(K)`.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).NQ2Presentation.Lifting.ElementaryKernel.N {Yt : Q2Presentation.BoundaryFramedTarget} (self : Q2Presentation.Lifting.ElementaryKernel Yt) : Subgroup Yt.Y⋯ ⋯ (Q2Presentation.Induction.XRZero.xrChildQ2Presentation.Induction.XRZero.xrChild {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPairThe `𝒳_R = 0` child: the quotient framed pair at `N = Φ`-layer.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.)), 2 *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number. If `α` is infinite, `Nat.card α = 0`.{Subtype.{u} {α : Sort u} (p : α → Prop) : Sort (max 1 u)All the elements of a type that satisfy a predicate. `Subtype p`, usually written `{ x : α // p x }` or `{ x // p x }`, contains all elements `x : α` for which `p x` is true. Its constructor is a pair of the value and the proof that it satisfies the predicate. In run-time code, `{ x : α // p x }` is represented identically to `α`. There is a coercion from `{ x : α // p x }` to `α`, so elements of a subtype may be used where the underlying type is expected. Examples: * `{ n : Nat // n % 2 = 0 }` is the type of even numbers. * `{ xs : Array String // xs.size = 5 }` is the type of arrays with five `String`s. * Given `xs : List α`, `List { x : α // x ∈ xs }` is the type of lists in which all elements are contained in `xs`. Conventions for notations in identifiers: * The recommended spelling of `{ x // p x }` in identifiers is `subtype`.fQ2Presentation.TorsorProgram.coverLiftTotal (Q2Presentation.Induction.XRZero.xrChild chief K).fst (Q2Presentation.Induction.mChildKernel chief K).N Q2Presentation.boundaryPackage_GammaA (Q2Presentation.Induction.XRZero.xrChild chief K).snd//Subtype.{u} {α : Sort u} (p : α → Prop) : Sort (max 1 u)All the elements of a type that satisfy a predicate. `Subtype p`, usually written `{ x : α // p x }` or `{ x // p x }`, contains all elements `x : α` for which `p x` is true. Its constructor is a pair of the value and the proof that it satisfies the predicate. In run-time code, `{ x : α // p x }` is represented identically to `α`. There is a coercion from `{ x : α // p x }` to `α`, so elements of a subtype may be used where the underlying type is expected. Examples: * `{ n : Nat // n % 2 = 0 }` is the type of even numbers. * `{ xs : Array String // xs.size = 5 }` is the type of arrays with five `String`s. * Given `xs : List α`, `List { x : α // x ∈ xs }` is the type of lists in which all elements are contained in `xs`. Conventions for notations in identifiers: * The recommended spelling of `{ x // p x }` in identifiers is `subtype`.Q2Presentation.TorsorProgram.coverLiftBaseQ2Presentation.TorsorProgram.coverLiftBase (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y) [hNn : N.Normal] (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (F : Q2Presentation.BoundaryFrame Yt) (t : Q2Presentation.TorsorProgram.coverLiftTotal Yt N B F) : Q2Presentation.boundaryFramedSurj B (Q2Presentation.TorsorProgram.quotientFramedTarget Yt N hNLY hNθ) (Q2Presentation.TorsorProgram.quotientFrame Yt N hNLY hNθ F)Fibration base 1: the induced child-framed surjection (mirror of `restrictSurj`, `Boundary/LiftFibration.lean`).(Q2Presentation.Induction.XRZero.xrChildQ2Presentation.Induction.XRZero.xrChild {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPairThe `𝒳_R = 0` child: the quotient framed pair at `N = Φ`-layer.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.(Q2Presentation.Induction.mChildKernelQ2Presentation.Induction.mChildKernel {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Lifting.ElementaryKernel (Q2Presentation.Induction.XRZero.xrChild chief K).fst**The elementary `M`-kernel at the child** `B = Y/Φ(K)` (`lem:simplehead` carrier for `lem:elementarystage`): `N = M' = K/Φ(K)`.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).NQ2Presentation.Lifting.ElementaryKernel.N {Yt : Q2Presentation.BoundaryFramedTarget} (self : Q2Presentation.Lifting.ElementaryKernel Yt) : Subgroup Yt.Y⋯ ⋯ Q2Presentation.boundaryPackage_GammaAQ2Presentation.boundaryPackage_GammaA : Q2Presentation.BoundaryPackage Q2Presentation.GammaA**The candidate boundary package** (manuscript Prop 3.14, `prop:compatiblemarking`; plan Turn 4 §6). The Stage-C data of `Γ_A`: the common tame quotient `gammaTameMap`, the maximal pro-`2` quotient `p : Γ_A ⟶ Π`, and the common unramified character `ν = gammaTameMap ≫ ν_t`, through which both factor.(Q2Presentation.Induction.XRZero.xrChildQ2Presentation.Induction.XRZero.xrChild {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPairThe `𝒳_R = 0` child: the quotient framed pair at `N = Φ`-layer.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.fQ2Presentation.TorsorProgram.coverLiftTotal (Q2Presentation.Induction.XRZero.xrChild chief K).fst (Q2Presentation.Induction.mChildKernel chief K).N Q2Presentation.boundaryPackage_GammaA (Q2Presentation.Induction.XRZero.xrChild chief K).snd=Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`. We use `a = b` as notation for `Eq a b`. A fundamental property of equality is that it is an equivalence relation. ``` variable (α : Type) (a b c d : α) variable (hab : a = b) (hcb : c = b) (hcd : c = d) example : a = d := Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd ``` Equality is much more than an equivalence relation, however. It has the important property that every assertion respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value. That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`. Example: ``` example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := Eq.subst h1 h2 example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := h1 ▸ h2 ``` The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`. For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality) Conventions for notations in identifiers: * The recommended spelling of `=` in identifiers is `eq`.gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GammaA (Q2Presentation.TorsorProgram.quotientFramedTarget (Q2Presentation.Induction.XRZero.xrChild chief K).fst (Q2Presentation.Induction.mChildKernel chief K).N ⋯ ⋯) (Q2Presentation.TorsorProgram.quotientFrame (Q2Presentation.Induction.XRZero.xrChild chief K).fst (Q2Presentation.Induction.mChildKernel chief K).N ⋯ ⋯ (Q2Presentation.Induction.XRZero.xrChild chief K).snd)∧And (a b : Prop) : Prop`And a b`, or `a ∧ b`, is the conjunction of propositions. It can be constructed and destructed like a pair: if `ha : a` and `hb : b` then `⟨ha, hb⟩ : a ∧ b`, and if `h : a ∧ b` then `h.left : a` and `h.right : b`. Conventions for notations in identifiers: * The recommended spelling of `∧` in identifiers is `and`. * The recommended spelling of `/\` in identifiers is `and` (prefer `∧` over `/\`).Q2Presentation.Induction.coverLiftableWeakQ2Presentation.Induction.coverLiftableWeak {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (f : Q2Presentation.TorsorProgram.coverLiftTotal (Q2Presentation.Induction.XRZero.xrChild chief K).fst (Q2Presentation.Induction.mChildKernel chief K).N B (Q2Presentation.Induction.XRZero.xrChild chief K).snd) : Prop**λ-liftability of a weak `M`-lift** (`lem:properimagesubtraction` l.4269–4271): a point of the W2a total space at the child M-kernel is λ-liftable when some framed hom into `B_λ` projects to it along `p_λ = scalarCoverProj` — surjectivity onto `B_λ` NOT imposed (weak solvability; images are stratified by `eq:recursionR2`/`R3`).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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.boundaryPackage_GammaAQ2Presentation.boundaryPackage_GammaA : Q2Presentation.BoundaryPackage Q2Presentation.GammaA**The candidate boundary package** (manuscript Prop 3.14, `prop:compatiblemarking`; plan Turn 4 §6). The Stage-C data of `Γ_A`: the common tame quotient `gammaTameMap`, the maximal pro-`2` quotient `p : Γ_A ⟶ Π`, and the common unramified character `ν = gammaTameMap ≫ ν_t`, through which both factor.fQ2Presentation.TorsorProgram.coverLiftTotal (Q2Presentation.Induction.XRZero.xrChild chief K).fst (Q2Presentation.Induction.mChildKernel chief K).N Q2Presentation.boundaryPackage_GammaA (Q2Presentation.Induction.XRZero.xrChild chief K).snd}Subtype.{u} {α : Sort u} (p : α → Prop) : Sort (max 1 u)All the elements of a type that satisfy a predicate. `Subtype p`, usually written `{ x : α // p x }` or `{ x // p x }`, contains all elements `x : α` for which `p x` is true. Its constructor is a pair of the value and the proof that it satisfies the predicate. In run-time code, `{ x : α // p x }` is represented identically to `α`. There is a coercion from `{ x : α // p x }` to `α`, so elements of a subtype may be used where the underlying type is expected. Examples: * `{ n : Nat // n % 2 = 0 }` is the type of even numbers. * `{ xs : Array String // xs.size = 5 }` is the type of arrays with five `String`s. * Given `xs : List α`, `List { x : α // x ∈ xs }` is the type of lists in which all elements are contained in `xs`. Conventions for notations in identifiers: * The recommended spelling of `{ x // p x }` in identifiers is `subtype`.=Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`. We use `a = b` as notation for `Eq a b`. A fundamental property of equality is that it is an equivalence relation. ``` variable (α : Type) (a b c d : α) variable (hab : a = b) (hcb : c = b) (hcd : c = d) example : a = d := Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd ``` Equality is much more than an equivalence relation, however. It has the important property that every assertion respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value. That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`. Example: ``` example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := Eq.subst h1 h2 example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := h1 ▸ h2 ``` The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`. For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality) Conventions for notations in identifiers: * The recommended spelling of `=` in identifiers is `eq`.2 ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `^` in identifiers is `pow`.(HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.2 *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.Q2Presentation.Induction.dimMQ2Presentation.Induction.dimM {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : ℕ`dim M` (the `2^{2·dimM}` of `lem:elementarystage`).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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`.theorem Q2Presentation.Induction.edgeHalvingGammaA_iff_half_card {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)) : Q2Presentation.Induction.EdgeHalvingGammaAQ2Presentation.Induction.EdgeHalvingGammaA {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) : Prop**The R4a per-fibre halving, candidate source** — THE sharply-scoped R4a residual (manuscript `lem:radicaledge` step 6, l.4006–4019: exact variation formula + perfect degree-one duality; candidate half = `prop:chainmap` l.1687 + `prop:defduality`-grade degree-one content): over each `g_C`, exactly half of the weak `M`-lifts are λ-liftable, stated division-free per fibre. Deliberately does NOT assert the fibre size `2^{2·dim M}` (that is the separate, PROVEN `lem:elementarystage` obligation — design §6.3), and is deliberately NOT conditioned here on `¬ ZeroEdge` — the conditioning belongs to its (future, coordinated) keep `sec7_edgeHalving_gammaA (hne) (hedge) : EdgeHalvingGammaA …`, whose dissolution program is recorded in the design §4.6: (i) the ledger variation formula from U3's `edgeDefect` calculus + the weak-base defect engine; (ii) `edgeShadow ≠ 0` on the `T`-cocycle space by the trivial-chain dévissage over the PROVEN `Sec7TrivialChainData`; (iii) the free-orbit torsor bookkeeping.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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)↔Iff (a b : Prop) : PropIf and only if, or logical bi-implication. `a ↔ b` means that `a` implies `b` and vice versa. By `propext`, this implies that `a` and `b` are equal and hence any expression involving `a` is equivalent to the corresponding expression with `b` instead. Conventions for notations in identifiers: * The recommended spelling of `↔` in identifiers is `iff`. * The recommended spelling of `<->` in identifiers is `iff` (prefer `↔` over `<->`).∀ (gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GammaA (Q2Presentation.TorsorProgram.quotientFramedTarget (Q2Presentation.Induction.XRZero.xrChild chief K).fst (Q2Presentation.Induction.mChildKernel chief K).N ⋯ ⋯) (Q2Presentation.TorsorProgram.quotientFrame (Q2Presentation.Induction.XRZero.xrChild chief K).fst (Q2Presentation.Induction.mChildKernel chief K).N ⋯ ⋯ (Q2Presentation.Induction.XRZero.xrChild chief K).snd): Q2Presentation.boundaryFramedSurjQ2Presentation.boundaryFramedSurj {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (Yt : Q2Presentation.BoundaryFramedTarget) (F : Q2Presentation.BoundaryFrame Yt) : TypeThe **boundary-framed surjections** `e_Γ^β(𝒴)` (manuscript `eq:eGamma`): the continuous surjections `f : Γ ↠ Y` whose induced map to `H × E` is the prescribed `β ∘ b_Γ`, i.e. `q_Y ∘ f = β ∘ b_Γ`. This is the subtype counted in Theorem 4.2; its cardinality is `e_Γ^β(𝒴)`.Q2Presentation.boundaryPackage_GammaAQ2Presentation.boundaryPackage_GammaA : Q2Presentation.BoundaryPackage Q2Presentation.GammaA**The candidate boundary package** (manuscript Prop 3.14, `prop:compatiblemarking`; plan Turn 4 §6). The Stage-C data of `Γ_A`: the common tame quotient `gammaTameMap`, the maximal pro-`2` quotient `p : Γ_A ⟶ Π`, and the common unramified character `ν = gammaTameMap ≫ ν_t`, through which both factor.(Q2Presentation.TorsorProgram.quotientFramedTargetQ2Presentation.TorsorProgram.quotientFramedTarget (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y) [hNn : N.Normal] (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) : Q2Presentation.BoundaryFramedTarget**The quotient framed target** `Y/N` (same `H`, same `E`, image wild kernel).(Q2Presentation.Induction.XRZero.xrChildQ2Presentation.Induction.XRZero.xrChild {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPairThe `𝒳_R = 0` child: the quotient framed pair at `N = Φ`-layer.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.(Q2Presentation.Induction.mChildKernelQ2Presentation.Induction.mChildKernel {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Lifting.ElementaryKernel (Q2Presentation.Induction.XRZero.xrChild chief K).fst**The elementary `M`-kernel at the child** `B = Y/Φ(K)` (`lem:simplehead` carrier for `lem:elementarystage`): `N = M' = K/Φ(K)`.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).NQ2Presentation.Lifting.ElementaryKernel.N {Yt : Q2Presentation.BoundaryFramedTarget} (self : Q2Presentation.Lifting.ElementaryKernel Yt) : Subgroup Yt.Y⋯ ⋯) (Q2Presentation.TorsorProgram.quotientFrameQ2Presentation.TorsorProgram.quotientFrame (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y) [hNn : N.Normal] (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) (F : Q2Presentation.BoundaryFrame Yt) : Q2Presentation.BoundaryFrame (Q2Presentation.TorsorProgram.quotientFramedTarget Yt N hNLY hNθ)The frame transports verbatim (`H`, `E`, `α`, `ψ`, `β` unchanged).(Q2Presentation.Induction.XRZero.xrChildQ2Presentation.Induction.XRZero.xrChild {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPairThe `𝒳_R = 0` child: the quotient framed pair at `N = Φ`-layer.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.(Q2Presentation.Induction.mChildKernelQ2Presentation.Induction.mChildKernel {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Lifting.ElementaryKernel (Q2Presentation.Induction.XRZero.xrChild chief K).fst**The elementary `M`-kernel at the child** `B = Y/Φ(K)` (`lem:simplehead` carrier for `lem:elementarystage`): `N = M' = K/Φ(K)`.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).NQ2Presentation.Lifting.ElementaryKernel.N {Yt : Q2Presentation.BoundaryFramedTarget} (self : Q2Presentation.Lifting.ElementaryKernel Yt) : Subgroup Yt.Y⋯ ⋯ (Q2Presentation.Induction.XRZero.xrChildQ2Presentation.Induction.XRZero.xrChild {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPairThe `𝒳_R = 0` child: the quotient framed pair at `N = Φ`-layer.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.)), 2 *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number. If `α` is infinite, `Nat.card α = 0`.{Subtype.{u} {α : Sort u} (p : α → Prop) : Sort (max 1 u)All the elements of a type that satisfy a predicate. `Subtype p`, usually written `{ x : α // p x }` or `{ x // p x }`, contains all elements `x : α` for which `p x` is true. Its constructor is a pair of the value and the proof that it satisfies the predicate. In run-time code, `{ x : α // p x }` is represented identically to `α`. There is a coercion from `{ x : α // p x }` to `α`, so elements of a subtype may be used where the underlying type is expected. Examples: * `{ n : Nat // n % 2 = 0 }` is the type of even numbers. * `{ xs : Array String // xs.size = 5 }` is the type of arrays with five `String`s. * Given `xs : List α`, `List { x : α // x ∈ xs }` is the type of lists in which all elements are contained in `xs`. Conventions for notations in identifiers: * The recommended spelling of `{ x // p x }` in identifiers is `subtype`.fQ2Presentation.TorsorProgram.coverLiftTotal (Q2Presentation.Induction.XRZero.xrChild chief K).fst (Q2Presentation.Induction.mChildKernel chief K).N Q2Presentation.boundaryPackage_GammaA (Q2Presentation.Induction.XRZero.xrChild chief K).snd//Subtype.{u} {α : Sort u} (p : α → Prop) : Sort (max 1 u)All the elements of a type that satisfy a predicate. `Subtype p`, usually written `{ x : α // p x }` or `{ x // p x }`, contains all elements `x : α` for which `p x` is true. Its constructor is a pair of the value and the proof that it satisfies the predicate. In run-time code, `{ x : α // p x }` is represented identically to `α`. There is a coercion from `{ x : α // p x }` to `α`, so elements of a subtype may be used where the underlying type is expected. Examples: * `{ n : Nat // n % 2 = 0 }` is the type of even numbers. * `{ xs : Array String // xs.size = 5 }` is the type of arrays with five `String`s. * Given `xs : List α`, `List { x : α // x ∈ xs }` is the type of lists in which all elements are contained in `xs`. Conventions for notations in identifiers: * The recommended spelling of `{ x // p x }` in identifiers is `subtype`.Q2Presentation.TorsorProgram.coverLiftBaseQ2Presentation.TorsorProgram.coverLiftBase (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y) [hNn : N.Normal] (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (F : Q2Presentation.BoundaryFrame Yt) (t : Q2Presentation.TorsorProgram.coverLiftTotal Yt N B F) : Q2Presentation.boundaryFramedSurj B (Q2Presentation.TorsorProgram.quotientFramedTarget Yt N hNLY hNθ) (Q2Presentation.TorsorProgram.quotientFrame Yt N hNLY hNθ F)Fibration base 1: the induced child-framed surjection (mirror of `restrictSurj`, `Boundary/LiftFibration.lean`).(Q2Presentation.Induction.XRZero.xrChildQ2Presentation.Induction.XRZero.xrChild {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPairThe `𝒳_R = 0` child: the quotient framed pair at `N = Φ`-layer.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.(Q2Presentation.Induction.mChildKernelQ2Presentation.Induction.mChildKernel {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Lifting.ElementaryKernel (Q2Presentation.Induction.XRZero.xrChild chief K).fst**The elementary `M`-kernel at the child** `B = Y/Φ(K)` (`lem:simplehead` carrier for `lem:elementarystage`): `N = M' = K/Φ(K)`.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).NQ2Presentation.Lifting.ElementaryKernel.N {Yt : Q2Presentation.BoundaryFramedTarget} (self : Q2Presentation.Lifting.ElementaryKernel Yt) : Subgroup Yt.Y⋯ ⋯ Q2Presentation.boundaryPackage_GammaAQ2Presentation.boundaryPackage_GammaA : Q2Presentation.BoundaryPackage Q2Presentation.GammaA**The candidate boundary package** (manuscript Prop 3.14, `prop:compatiblemarking`; plan Turn 4 §6). The Stage-C data of `Γ_A`: the common tame quotient `gammaTameMap`, the maximal pro-`2` quotient `p : Γ_A ⟶ Π`, and the common unramified character `ν = gammaTameMap ≫ ν_t`, through which both factor.(Q2Presentation.Induction.XRZero.xrChildQ2Presentation.Induction.XRZero.xrChild {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPairThe `𝒳_R = 0` child: the quotient framed pair at `N = Φ`-layer.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.fQ2Presentation.TorsorProgram.coverLiftTotal (Q2Presentation.Induction.XRZero.xrChild chief K).fst (Q2Presentation.Induction.mChildKernel chief K).N Q2Presentation.boundaryPackage_GammaA (Q2Presentation.Induction.XRZero.xrChild chief K).snd=Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`. We use `a = b` as notation for `Eq a b`. A fundamental property of equality is that it is an equivalence relation. ``` variable (α : Type) (a b c d : α) variable (hab : a = b) (hcb : c = b) (hcd : c = d) example : a = d := Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd ``` Equality is much more than an equivalence relation, however. It has the important property that every assertion respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value. That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`. Example: ``` example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := Eq.subst h1 h2 example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := h1 ▸ h2 ``` The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`. For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality) Conventions for notations in identifiers: * The recommended spelling of `=` in identifiers is `eq`.gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GammaA (Q2Presentation.TorsorProgram.quotientFramedTarget (Q2Presentation.Induction.XRZero.xrChild chief K).fst (Q2Presentation.Induction.mChildKernel chief K).N ⋯ ⋯) (Q2Presentation.TorsorProgram.quotientFrame (Q2Presentation.Induction.XRZero.xrChild chief K).fst (Q2Presentation.Induction.mChildKernel chief K).N ⋯ ⋯ (Q2Presentation.Induction.XRZero.xrChild chief K).snd)∧And (a b : Prop) : Prop`And a b`, or `a ∧ b`, is the conjunction of propositions. It can be constructed and destructed like a pair: if `ha : a` and `hb : b` then `⟨ha, hb⟩ : a ∧ b`, and if `h : a ∧ b` then `h.left : a` and `h.right : b`. Conventions for notations in identifiers: * The recommended spelling of `∧` in identifiers is `and`. * The recommended spelling of `/\` in identifiers is `and` (prefer `∧` over `/\`).Q2Presentation.Induction.coverLiftableWeakQ2Presentation.Induction.coverLiftableWeak {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (f : Q2Presentation.TorsorProgram.coverLiftTotal (Q2Presentation.Induction.XRZero.xrChild chief K).fst (Q2Presentation.Induction.mChildKernel chief K).N B (Q2Presentation.Induction.XRZero.xrChild chief K).snd) : Prop**λ-liftability of a weak `M`-lift** (`lem:properimagesubtraction` l.4269–4271): a point of the W2a total space at the child M-kernel is λ-liftable when some framed hom into `B_λ` projects to it along `p_λ = scalarCoverProj` — surjectivity onto `B_λ` NOT imposed (weak solvability; images are stratified by `eq:recursionR2`/`R3`).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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.boundaryPackage_GammaAQ2Presentation.boundaryPackage_GammaA : Q2Presentation.BoundaryPackage Q2Presentation.GammaA**The candidate boundary package** (manuscript Prop 3.14, `prop:compatiblemarking`; plan Turn 4 §6). The Stage-C data of `Γ_A`: the common tame quotient `gammaTameMap`, the maximal pro-`2` quotient `p : Γ_A ⟶ Π`, and the common unramified character `ν = gammaTameMap ≫ ν_t`, through which both factor.fQ2Presentation.TorsorProgram.coverLiftTotal (Q2Presentation.Induction.XRZero.xrChild chief K).fst (Q2Presentation.Induction.mChildKernel chief K).N Q2Presentation.boundaryPackage_GammaA (Q2Presentation.Induction.XRZero.xrChild chief K).snd}Subtype.{u} {α : Sort u} (p : α → Prop) : Sort (max 1 u)All the elements of a type that satisfy a predicate. `Subtype p`, usually written `{ x : α // p x }` or `{ x // p x }`, contains all elements `x : α` for which `p x` is true. Its constructor is a pair of the value and the proof that it satisfies the predicate. In run-time code, `{ x : α // p x }` is represented identically to `α`. There is a coercion from `{ x : α // p x }` to `α`, so elements of a subtype may be used where the underlying type is expected. Examples: * `{ n : Nat // n % 2 = 0 }` is the type of even numbers. * `{ xs : Array String // xs.size = 5 }` is the type of arrays with five `String`s. * Given `xs : List α`, `List { x : α // x ∈ xs }` is the type of lists in which all elements are contained in `xs`. Conventions for notations in identifiers: * The recommended spelling of `{ x // p x }` in identifiers is `subtype`.=Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`. We use `a = b` as notation for `Eq a b`. A fundamental property of equality is that it is an equivalence relation. ``` variable (α : Type) (a b c d : α) variable (hab : a = b) (hcb : c = b) (hcd : c = d) example : a = d := Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd ``` Equality is much more than an equivalence relation, however. It has the important property that every assertion respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value. That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`. Example: ``` example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := Eq.subst h1 h2 example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := h1 ▸ h2 ``` The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`. For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality) Conventions for notations in identifiers: * The recommended spelling of `=` in identifiers is `eq`.2 ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `^` in identifiers is `pow`.(HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.2 *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.Q2Presentation.Induction.dimMQ2Presentation.Induction.dimM {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : ℕ`dim M` (the `2^{2·dimM}` of `lem:elementarystage`).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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`.**Keep-1/keep-2 refutation target, candidate side** (design §5.2): the halving clause in closed numeric form — half of the PROVEN fibre size `2^{2·dimM}` per fibre (`coverLiftFibreEquiv` + `mChild_liftHom_card_gammaA`, the `lem:elementarystage` count). A concrete per-`g` counterexample refutes the recovered halving, hence keep 1. -
theoremdefined in Q2Presentation/Induction/MStageChild.leancomplete
theorem Q2Presentation.Induction.mChild_rowMap_surjective {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) (gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GammaA (Q2Presentation.TorsorProgram.quotientFramedTarget (Q2Presentation.Induction.XRZero.xrChild chief K).fst (Q2Presentation.Induction.mChildKernel chief K).N ⋯ ⋯) (Q2Presentation.TorsorProgram.quotientFrame (Q2Presentation.Induction.XRZero.xrChild chief K).fst (Q2Presentation.Induction.mChildKernel chief K).N ⋯ ⋯ (Q2Presentation.Induction.XRZero.xrChild chief K).snd): Q2Presentation.boundaryFramedSurjQ2Presentation.boundaryFramedSurj {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (Yt : Q2Presentation.BoundaryFramedTarget) (F : Q2Presentation.BoundaryFrame Yt) : TypeThe **boundary-framed surjections** `e_Γ^β(𝒴)` (manuscript `eq:eGamma`): the continuous surjections `f : Γ ↠ Y` whose induced map to `H × E` is the prescribed `β ∘ b_Γ`, i.e. `q_Y ∘ f = β ∘ b_Γ`. This is the subtype counted in Theorem 4.2; its cardinality is `e_Γ^β(𝒴)`.Q2Presentation.boundaryPackage_GammaAQ2Presentation.boundaryPackage_GammaA : Q2Presentation.BoundaryPackage Q2Presentation.GammaA**The candidate boundary package** (manuscript Prop 3.14, `prop:compatiblemarking`; plan Turn 4 §6). The Stage-C data of `Γ_A`: the common tame quotient `gammaTameMap`, the maximal pro-`2` quotient `p : Γ_A ⟶ Π`, and the common unramified character `ν = gammaTameMap ≫ ν_t`, through which both factor.(Q2Presentation.TorsorProgram.quotientFramedTargetQ2Presentation.TorsorProgram.quotientFramedTarget (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y) [hNn : N.Normal] (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) : Q2Presentation.BoundaryFramedTarget**The quotient framed target** `Y/N` (same `H`, same `E`, image wild kernel).(Q2Presentation.Induction.XRZero.xrChildQ2Presentation.Induction.XRZero.xrChild {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPairThe `𝒳_R = 0` child: the quotient framed pair at `N = Φ`-layer.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.(Q2Presentation.Induction.mChildKernelQ2Presentation.Induction.mChildKernel {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Lifting.ElementaryKernel (Q2Presentation.Induction.XRZero.xrChild chief K).fst**The elementary `M`-kernel at the child** `B = Y/Φ(K)` (`lem:simplehead` carrier for `lem:elementarystage`): `N = M' = K/Φ(K)`.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).NQ2Presentation.Lifting.ElementaryKernel.N {Yt : Q2Presentation.BoundaryFramedTarget} (self : Q2Presentation.Lifting.ElementaryKernel Yt) : Subgroup Yt.Y⋯ ⋯) (Q2Presentation.TorsorProgram.quotientFrameQ2Presentation.TorsorProgram.quotientFrame (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y) [hNn : N.Normal] (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) (F : Q2Presentation.BoundaryFrame Yt) : Q2Presentation.BoundaryFrame (Q2Presentation.TorsorProgram.quotientFramedTarget Yt N hNLY hNθ)The frame transports verbatim (`H`, `E`, `α`, `ψ`, `β` unchanged).(Q2Presentation.Induction.XRZero.xrChildQ2Presentation.Induction.XRZero.xrChild {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPairThe `𝒳_R = 0` child: the quotient framed pair at `N = Φ`-layer.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.(Q2Presentation.Induction.mChildKernelQ2Presentation.Induction.mChildKernel {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Lifting.ElementaryKernel (Q2Presentation.Induction.XRZero.xrChild chief K).fst**The elementary `M`-kernel at the child** `B = Y/Φ(K)` (`lem:simplehead` carrier for `lem:elementarystage`): `N = M' = K/Φ(K)`.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).NQ2Presentation.Lifting.ElementaryKernel.N {Yt : Q2Presentation.BoundaryFramedTarget} (self : Q2Presentation.Lifting.ElementaryKernel Yt) : Subgroup Yt.Y⋯ ⋯ (Q2Presentation.Induction.XRZero.xrChildQ2Presentation.Induction.XRZero.xrChild {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPairThe `𝒳_R = 0` child: the quotient framed pair at `N = Φ`-layer.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.)) (qQ2Presentation.Marking (Q2Presentation.Induction.XRZero.xrChild chief K).fst.Y: Q2Presentation.MarkingQ2Presentation.Marking.{u_1} (G : Type u_1) [Group G] : Type u_1A marking assigns a group element to each of the four generators.(Q2Presentation.Induction.XRZero.xrChildQ2Presentation.Induction.XRZero.xrChild {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPairThe `𝒳_R = 0` child: the quotient framed pair at `N = Φ`-layer.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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`.) (hlift∀ (a : Q2Presentation.Gen), (QuotientGroup.mk' (Q2Presentation.Induction.mChildKernel chief K).N) (q a) = (ProfiniteGrp.Hom.hom (↑g).hom) (Q2Presentation.gammaGen a): ∀ (aQ2Presentation.Gen: Q2Presentation.GenQ2Presentation.Gen : TypeThe four marked generators of the candidate presentation.), (QuotientGroup.mk'QuotientGroup.mk'.{u_1} {G : Type u_1} [Group G] (N : Subgroup G) [nN : N.Normal] : G →* G ⧸ NThe group homomorphism from `G` to `G/N`.(Q2Presentation.Induction.mChildKernelQ2Presentation.Induction.mChildKernel {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Lifting.ElementaryKernel (Q2Presentation.Induction.XRZero.xrChild chief K).fst**The elementary `M`-kernel at the child** `B = Y/Φ(K)` (`lem:simplehead` carrier for `lem:elementarystage`): `N = M' = K/Φ(K)`.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).NQ2Presentation.Lifting.ElementaryKernel.N {Yt : Q2Presentation.BoundaryFramedTarget} (self : Q2Presentation.Lifting.ElementaryKernel Yt) : Subgroup Yt.Y) (qQ2Presentation.Marking (Q2Presentation.Induction.XRZero.xrChild chief K).fst.YaQ2Presentation.Gen) =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`. We use `a = b` as notation for `Eq a b`. A fundamental property of equality is that it is an equivalence relation. ``` variable (α : Type) (a b c d : α) variable (hab : a = b) (hcb : c = b) (hcd : c = d) example : a = d := Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd ``` Equality is much more than an equivalence relation, however. It has the important property that every assertion respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value. That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`. Example: ``` example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := Eq.subst h1 h2 example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := h1 ▸ h2 ``` The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`. For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality) Conventions for notations in identifiers: * The recommended spelling of `=` in identifiers is `eq`.(ProfiniteGrp.Hom.homProfiniteGrp.Hom.hom.{u} {M N : ProfiniteGrp.{u}} (f : M.Hom N) : ↑M.toProfinite.toTop →ₜ* ↑N.toProfinite.toTopThe underlying `ContinuousMonoidHom`.(↑gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GammaA (Q2Presentation.TorsorProgram.quotientFramedTarget (Q2Presentation.Induction.XRZero.xrChild chief K).fst (Q2Presentation.Induction.mChildKernel chief K).N ⋯ ⋯) (Q2Presentation.TorsorProgram.quotientFrame (Q2Presentation.Induction.XRZero.xrChild chief K).fst (Q2Presentation.Induction.mChildKernel chief K).N ⋯ ⋯ (Q2Presentation.Induction.XRZero.xrChild chief K).snd)).homQ2Presentation.Profinite.SurjContHom.hom.{u} {P Q : ProfiniteGrp.{u}} (self : Q2Presentation.Profinite.SurjContHom P Q) : P ⟶ QThe underlying morphism of profinite groups.) (Q2Presentation.gammaGenQ2Presentation.gammaGen (a : Q2Presentation.Gen) : ↑Q2Presentation.GammaA.toProfinite.toTopThe four universal generators `σ, τ, x₀, x₁` of `Γ_A`, as the compatible families of marked generators.aQ2Presentation.Gen)) (hframe∀ (a : Q2Presentation.Gen), (Q2Presentation.Induction.XRZero.xrChild chief K).fst.qYMap (q a) = (ProfiniteGrp.Hom.hom (Q2Presentation.Induction.XRZero.xrChild chief K).snd.beta) ((ProfiniteGrp.Hom.hom Q2Presentation.boundaryPackage_GammaA.toBoundary) (Q2Presentation.gammaGen a)): ∀ (aQ2Presentation.Gen: Q2Presentation.GenQ2Presentation.Gen : TypeThe four marked generators of the candidate presentation.), (Q2Presentation.Induction.XRZero.xrChildQ2Presentation.Induction.XRZero.xrChild {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPairThe `𝒳_R = 0` child: the quotient framed pair at `N = Φ`-layer.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair..qYMapQ2Presentation.BoundaryFramedTarget.qYMap (Yt : Q2Presentation.BoundaryFramedTarget) : Yt.Y →* Yt.H × Multiplicative Yt.EThe combined map `q_Y = (π_Y, θ_Y) : Y →* H × Multiplicative E` of manuscript Definition 4.1: the data the boundary-framed count holds fixed.(qQ2Presentation.Marking (Q2Presentation.Induction.XRZero.xrChild chief K).fst.YaQ2Presentation.Gen) =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`. We use `a = b` as notation for `Eq a b`. A fundamental property of equality is that it is an equivalence relation. ``` variable (α : Type) (a b c d : α) variable (hab : a = b) (hcb : c = b) (hcd : c = d) example : a = d := Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd ``` Equality is much more than an equivalence relation, however. It has the important property that every assertion respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value. That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`. Example: ``` example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := Eq.subst h1 h2 example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := h1 ▸ h2 ``` The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`. For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality) Conventions for notations in identifiers: * The recommended spelling of `=` in identifiers is `eq`.(ProfiniteGrp.Hom.homProfiniteGrp.Hom.hom.{u} {M N : ProfiniteGrp.{u}} (f : M.Hom N) : ↑M.toProfinite.toTop →ₜ* ↑N.toProfinite.toTopThe underlying `ContinuousMonoidHom`.(Q2Presentation.Induction.XRZero.xrChildQ2Presentation.Induction.XRZero.xrChild {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPairThe `𝒳_R = 0` child: the quotient framed pair at `N = Φ`-layer.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component..betaQ2Presentation.BoundaryFrame.beta {Yt : Q2Presentation.BoundaryFramedTarget} (self : Q2Presentation.BoundaryFrame Yt) : Q2Presentation.Boundary ⟶ ProfiniteGrp.ofFiniteGrp (FiniteGrp.of (Yt.H × Multiplicative Yt.E))The induced boundary map `β : ∂_bd → H × Multiplicative E`.) ((ProfiniteGrp.Hom.homProfiniteGrp.Hom.hom.{u} {M N : ProfiniteGrp.{u}} (f : M.Hom N) : ↑M.toProfinite.toTop →ₜ* ↑N.toProfinite.toTopThe underlying `ContinuousMonoidHom`.Q2Presentation.boundaryPackage_GammaAQ2Presentation.boundaryPackage_GammaA : Q2Presentation.BoundaryPackage Q2Presentation.GammaA**The candidate boundary package** (manuscript Prop 3.14, `prop:compatiblemarking`; plan Turn 4 §6). The Stage-C data of `Γ_A`: the common tame quotient `gammaTameMap`, the maximal pro-`2` quotient `p : Γ_A ⟶ Π`, and the common unramified character `ν = gammaTameMap ≫ ν_t`, through which both factor..toBoundaryQ2Presentation.BoundaryPackage.toBoundary {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) : Γ ⟶ Q2Presentation.Boundary**The boundary map** `b_Γ : Γ ⟶ ∂_bd` (manuscript `eq:boundarymap`), the universal map into the fibre product induced by the compatible pair `(tameMap, pro2Map)`.) (Q2Presentation.gammaGenQ2Presentation.gammaGen (a : Q2Presentation.Gen) : ↑Q2Presentation.GammaA.toProfinite.toTopThe four universal generators `σ, τ, x₀, x₁` of `Γ_A`, as the compatible families of marked generators.aQ2Presentation.Gen))) : Function.SurjectiveFunction.Surjective.{u_1, u_2} {α : Sort u_1} {β : Sort u_2} (f : α → β) : PropA function `f : α → β` is called surjective if every `b : β` is equal to `f a` for some `a : α`.⇑(Q2Presentation.Lifting.rowMapQ2Presentation.Lifting.rowMap {Yt : Q2Presentation.BoundaryFramedTarget} (E : Q2Presentation.Lifting.ElementaryKernel Yt) [Finite Yt.Y] (q : Q2Presentation.Marking Yt.Y) : (Q2Presentation.Gen → Q2Presentation.Lifting.NAdd E) →ₗ[ZMod 2] Q2Presentation.Lifting.NAdd E × Q2Presentation.Lifting.NAdd E**The row map**: both relator shadows, as one linear map.(Q2Presentation.Induction.mChildKernelQ2Presentation.Induction.mChildKernel {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Lifting.ElementaryKernel (Q2Presentation.Induction.XRZero.xrChild chief K).fst**The elementary `M`-kernel at the child** `B = Y/Φ(K)` (`lem:simplehead` carrier for `lem:elementarystage`): `N = M' = K/Φ(K)`.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) qQ2Presentation.Marking (Q2Presentation.Induction.XRZero.xrChild chief K).fst.Y)theorem Q2Presentation.Induction.mChild_rowMap_surjective {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) (gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GammaA (Q2Presentation.TorsorProgram.quotientFramedTarget (Q2Presentation.Induction.XRZero.xrChild chief K).fst (Q2Presentation.Induction.mChildKernel chief K).N ⋯ ⋯) (Q2Presentation.TorsorProgram.quotientFrame (Q2Presentation.Induction.XRZero.xrChild chief K).fst (Q2Presentation.Induction.mChildKernel chief K).N ⋯ ⋯ (Q2Presentation.Induction.XRZero.xrChild chief K).snd): Q2Presentation.boundaryFramedSurjQ2Presentation.boundaryFramedSurj {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (Yt : Q2Presentation.BoundaryFramedTarget) (F : Q2Presentation.BoundaryFrame Yt) : TypeThe **boundary-framed surjections** `e_Γ^β(𝒴)` (manuscript `eq:eGamma`): the continuous surjections `f : Γ ↠ Y` whose induced map to `H × E` is the prescribed `β ∘ b_Γ`, i.e. `q_Y ∘ f = β ∘ b_Γ`. This is the subtype counted in Theorem 4.2; its cardinality is `e_Γ^β(𝒴)`.Q2Presentation.boundaryPackage_GammaAQ2Presentation.boundaryPackage_GammaA : Q2Presentation.BoundaryPackage Q2Presentation.GammaA**The candidate boundary package** (manuscript Prop 3.14, `prop:compatiblemarking`; plan Turn 4 §6). The Stage-C data of `Γ_A`: the common tame quotient `gammaTameMap`, the maximal pro-`2` quotient `p : Γ_A ⟶ Π`, and the common unramified character `ν = gammaTameMap ≫ ν_t`, through which both factor.(Q2Presentation.TorsorProgram.quotientFramedTargetQ2Presentation.TorsorProgram.quotientFramedTarget (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y) [hNn : N.Normal] (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) : Q2Presentation.BoundaryFramedTarget**The quotient framed target** `Y/N` (same `H`, same `E`, image wild kernel).(Q2Presentation.Induction.XRZero.xrChildQ2Presentation.Induction.XRZero.xrChild {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPairThe `𝒳_R = 0` child: the quotient framed pair at `N = Φ`-layer.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.(Q2Presentation.Induction.mChildKernelQ2Presentation.Induction.mChildKernel {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Lifting.ElementaryKernel (Q2Presentation.Induction.XRZero.xrChild chief K).fst**The elementary `M`-kernel at the child** `B = Y/Φ(K)` (`lem:simplehead` carrier for `lem:elementarystage`): `N = M' = K/Φ(K)`.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).NQ2Presentation.Lifting.ElementaryKernel.N {Yt : Q2Presentation.BoundaryFramedTarget} (self : Q2Presentation.Lifting.ElementaryKernel Yt) : Subgroup Yt.Y⋯ ⋯) (Q2Presentation.TorsorProgram.quotientFrameQ2Presentation.TorsorProgram.quotientFrame (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y) [hNn : N.Normal] (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) (F : Q2Presentation.BoundaryFrame Yt) : Q2Presentation.BoundaryFrame (Q2Presentation.TorsorProgram.quotientFramedTarget Yt N hNLY hNθ)The frame transports verbatim (`H`, `E`, `α`, `ψ`, `β` unchanged).(Q2Presentation.Induction.XRZero.xrChildQ2Presentation.Induction.XRZero.xrChild {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPairThe `𝒳_R = 0` child: the quotient framed pair at `N = Φ`-layer.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.(Q2Presentation.Induction.mChildKernelQ2Presentation.Induction.mChildKernel {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Lifting.ElementaryKernel (Q2Presentation.Induction.XRZero.xrChild chief K).fst**The elementary `M`-kernel at the child** `B = Y/Φ(K)` (`lem:simplehead` carrier for `lem:elementarystage`): `N = M' = K/Φ(K)`.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).NQ2Presentation.Lifting.ElementaryKernel.N {Yt : Q2Presentation.BoundaryFramedTarget} (self : Q2Presentation.Lifting.ElementaryKernel Yt) : Subgroup Yt.Y⋯ ⋯ (Q2Presentation.Induction.XRZero.xrChildQ2Presentation.Induction.XRZero.xrChild {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPairThe `𝒳_R = 0` child: the quotient framed pair at `N = Φ`-layer.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.)) (qQ2Presentation.Marking (Q2Presentation.Induction.XRZero.xrChild chief K).fst.Y: Q2Presentation.MarkingQ2Presentation.Marking.{u_1} (G : Type u_1) [Group G] : Type u_1A marking assigns a group element to each of the four generators.(Q2Presentation.Induction.XRZero.xrChildQ2Presentation.Induction.XRZero.xrChild {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPairThe `𝒳_R = 0` child: the quotient framed pair at `N = Φ`-layer.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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`.) (hlift∀ (a : Q2Presentation.Gen), (QuotientGroup.mk' (Q2Presentation.Induction.mChildKernel chief K).N) (q a) = (ProfiniteGrp.Hom.hom (↑g).hom) (Q2Presentation.gammaGen a): ∀ (aQ2Presentation.Gen: Q2Presentation.GenQ2Presentation.Gen : TypeThe four marked generators of the candidate presentation.), (QuotientGroup.mk'QuotientGroup.mk'.{u_1} {G : Type u_1} [Group G] (N : Subgroup G) [nN : N.Normal] : G →* G ⧸ NThe group homomorphism from `G` to `G/N`.(Q2Presentation.Induction.mChildKernelQ2Presentation.Induction.mChildKernel {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Lifting.ElementaryKernel (Q2Presentation.Induction.XRZero.xrChild chief K).fst**The elementary `M`-kernel at the child** `B = Y/Φ(K)` (`lem:simplehead` carrier for `lem:elementarystage`): `N = M' = K/Φ(K)`.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).NQ2Presentation.Lifting.ElementaryKernel.N {Yt : Q2Presentation.BoundaryFramedTarget} (self : Q2Presentation.Lifting.ElementaryKernel Yt) : Subgroup Yt.Y) (qQ2Presentation.Marking (Q2Presentation.Induction.XRZero.xrChild chief K).fst.YaQ2Presentation.Gen) =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`. We use `a = b` as notation for `Eq a b`. A fundamental property of equality is that it is an equivalence relation. ``` variable (α : Type) (a b c d : α) variable (hab : a = b) (hcb : c = b) (hcd : c = d) example : a = d := Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd ``` Equality is much more than an equivalence relation, however. It has the important property that every assertion respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value. That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`. Example: ``` example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := Eq.subst h1 h2 example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := h1 ▸ h2 ``` The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`. For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality) Conventions for notations in identifiers: * The recommended spelling of `=` in identifiers is `eq`.(ProfiniteGrp.Hom.homProfiniteGrp.Hom.hom.{u} {M N : ProfiniteGrp.{u}} (f : M.Hom N) : ↑M.toProfinite.toTop →ₜ* ↑N.toProfinite.toTopThe underlying `ContinuousMonoidHom`.(↑gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GammaA (Q2Presentation.TorsorProgram.quotientFramedTarget (Q2Presentation.Induction.XRZero.xrChild chief K).fst (Q2Presentation.Induction.mChildKernel chief K).N ⋯ ⋯) (Q2Presentation.TorsorProgram.quotientFrame (Q2Presentation.Induction.XRZero.xrChild chief K).fst (Q2Presentation.Induction.mChildKernel chief K).N ⋯ ⋯ (Q2Presentation.Induction.XRZero.xrChild chief K).snd)).homQ2Presentation.Profinite.SurjContHom.hom.{u} {P Q : ProfiniteGrp.{u}} (self : Q2Presentation.Profinite.SurjContHom P Q) : P ⟶ QThe underlying morphism of profinite groups.) (Q2Presentation.gammaGenQ2Presentation.gammaGen (a : Q2Presentation.Gen) : ↑Q2Presentation.GammaA.toProfinite.toTopThe four universal generators `σ, τ, x₀, x₁` of `Γ_A`, as the compatible families of marked generators.aQ2Presentation.Gen)) (hframe∀ (a : Q2Presentation.Gen), (Q2Presentation.Induction.XRZero.xrChild chief K).fst.qYMap (q a) = (ProfiniteGrp.Hom.hom (Q2Presentation.Induction.XRZero.xrChild chief K).snd.beta) ((ProfiniteGrp.Hom.hom Q2Presentation.boundaryPackage_GammaA.toBoundary) (Q2Presentation.gammaGen a)): ∀ (aQ2Presentation.Gen: Q2Presentation.GenQ2Presentation.Gen : TypeThe four marked generators of the candidate presentation.), (Q2Presentation.Induction.XRZero.xrChildQ2Presentation.Induction.XRZero.xrChild {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPairThe `𝒳_R = 0` child: the quotient framed pair at `N = Φ`-layer.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair..qYMapQ2Presentation.BoundaryFramedTarget.qYMap (Yt : Q2Presentation.BoundaryFramedTarget) : Yt.Y →* Yt.H × Multiplicative Yt.EThe combined map `q_Y = (π_Y, θ_Y) : Y →* H × Multiplicative E` of manuscript Definition 4.1: the data the boundary-framed count holds fixed.(qQ2Presentation.Marking (Q2Presentation.Induction.XRZero.xrChild chief K).fst.YaQ2Presentation.Gen) =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`. We use `a = b` as notation for `Eq a b`. A fundamental property of equality is that it is an equivalence relation. ``` variable (α : Type) (a b c d : α) variable (hab : a = b) (hcb : c = b) (hcd : c = d) example : a = d := Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd ``` Equality is much more than an equivalence relation, however. It has the important property that every assertion respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value. That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`. Example: ``` example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := Eq.subst h1 h2 example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := h1 ▸ h2 ``` The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`. For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality) Conventions for notations in identifiers: * The recommended spelling of `=` in identifiers is `eq`.(ProfiniteGrp.Hom.homProfiniteGrp.Hom.hom.{u} {M N : ProfiniteGrp.{u}} (f : M.Hom N) : ↑M.toProfinite.toTop →ₜ* ↑N.toProfinite.toTopThe underlying `ContinuousMonoidHom`.(Q2Presentation.Induction.XRZero.xrChildQ2Presentation.Induction.XRZero.xrChild {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPairThe `𝒳_R = 0` child: the quotient framed pair at `N = Φ`-layer.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component..betaQ2Presentation.BoundaryFrame.beta {Yt : Q2Presentation.BoundaryFramedTarget} (self : Q2Presentation.BoundaryFrame Yt) : Q2Presentation.Boundary ⟶ ProfiniteGrp.ofFiniteGrp (FiniteGrp.of (Yt.H × Multiplicative Yt.E))The induced boundary map `β : ∂_bd → H × Multiplicative E`.) ((ProfiniteGrp.Hom.homProfiniteGrp.Hom.hom.{u} {M N : ProfiniteGrp.{u}} (f : M.Hom N) : ↑M.toProfinite.toTop →ₜ* ↑N.toProfinite.toTopThe underlying `ContinuousMonoidHom`.Q2Presentation.boundaryPackage_GammaAQ2Presentation.boundaryPackage_GammaA : Q2Presentation.BoundaryPackage Q2Presentation.GammaA**The candidate boundary package** (manuscript Prop 3.14, `prop:compatiblemarking`; plan Turn 4 §6). The Stage-C data of `Γ_A`: the common tame quotient `gammaTameMap`, the maximal pro-`2` quotient `p : Γ_A ⟶ Π`, and the common unramified character `ν = gammaTameMap ≫ ν_t`, through which both factor..toBoundaryQ2Presentation.BoundaryPackage.toBoundary {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) : Γ ⟶ Q2Presentation.Boundary**The boundary map** `b_Γ : Γ ⟶ ∂_bd` (manuscript `eq:boundarymap`), the universal map into the fibre product induced by the compatible pair `(tameMap, pro2Map)`.) (Q2Presentation.gammaGenQ2Presentation.gammaGen (a : Q2Presentation.Gen) : ↑Q2Presentation.GammaA.toProfinite.toTopThe four universal generators `σ, τ, x₀, x₁` of `Γ_A`, as the compatible families of marked generators.aQ2Presentation.Gen))) : Function.SurjectiveFunction.Surjective.{u_1, u_2} {α : Sort u_1} {β : Sort u_2} (f : α → β) : PropA function `f : α → β` is called surjective if every `b : β` is equal to `f a` for some `a : α`.⇑(Q2Presentation.Lifting.rowMapQ2Presentation.Lifting.rowMap {Yt : Q2Presentation.BoundaryFramedTarget} (E : Q2Presentation.Lifting.ElementaryKernel Yt) [Finite Yt.Y] (q : Q2Presentation.Marking Yt.Y) : (Q2Presentation.Gen → Q2Presentation.Lifting.NAdd E) →ₗ[ZMod 2] Q2Presentation.Lifting.NAdd E × Q2Presentation.Lifting.NAdd E**The row map**: both relator shadows, as one linear map.(Q2Presentation.Induction.mChildKernelQ2Presentation.Induction.mChildKernel {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Lifting.ElementaryKernel (Q2Presentation.Induction.XRZero.xrChild chief K).fst**The elementary `M`-kernel at the child** `B = Y/Φ(K)` (`lem:simplehead` carrier for `lem:elementarystage`): `N = M' = K/Φ(K)`.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) qQ2Presentation.Marking (Q2Presentation.Induction.XRZero.xrChild chief K).fst.Y)**Row-map surjectivity at the child M-kernel** (`lem:elementarystage` `H² = 0` content, candidate source; design §4.6's first target statement).
-
theoremdefined in Q2Presentation/Induction/MStagePartitionAssembly.leancomplete
theorem Q2Presentation.Induction.MStage.sec7_mstage_cochainData {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|`.} (h¬Q2Presentation.Induction.ScalarTerminal p: ¬Not (a : Prop) : Prop`Not p`, or `¬p`, is the negation of `p`. It is defined to be `p → False`, so if your goal is `¬p` you can use `intro h` to turn the goal into `h : p ⊢ False`, and if you have `hn : ¬p` and `h : p` then `hn h : False` and `(hn h).elim` will prove anything. For more information: [Propositional Logic](https://lean-lang.org/theorem_proving_in_lean4/propositions_and_proofs.html#propositional-logic) Conventions for notations in identifiers: * The recommended spelling of `¬` in identifiers is `not`.Q2Presentation.Induction.ScalarTerminalQ2Presentation.Induction.ScalarTerminal (p : Q2Presentation.Induction.FramedPair) : Prop**Scalar-terminal framed pair.**pQ2Presentation.Induction.FramedPair) (chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p: Q2Presentation.Induction.FirstNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor (p : Q2Presentation.Induction.FramedPair) : TypeA non-scalar chief factor of `L_Y` that is **first**: every chief factor strictly below it (i.e. with upper term contained in `lower`) is scalar. This is the manuscript's choice `S ◁ P` at l.3616–3623 ("all chief factors below `S` are scalar and `V` is the first non-scalar simple factor"), which `lem:collapse` requires for the coprime step `[S, Ñ] = 1`.pQ2Presentation.Induction.FramedPair) (KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor: Q2Presentation.Induction.KernelMinimalQ2Presentation.Induction.KernelMinimal {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.NonScalarChiefFactor p) : TypeThe manuscript's kernel choice (l.3623): `K ◁ Y`, `K ≤ P`, `KS = P`, and `K` is **⊆-minimal** with these properties — stated as: any `Y`-normal `K' ≤ K` still joining with `S` to `P` equals `K`. (This, not leastness among all candidates, is what `lem:simplehead` and `lem:collapse` use: both apply it to subgroups of `K`.)chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p.toNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor.toNonScalarChiefFactor {p : Q2Presentation.Induction.FramedPair} (self : Q2Presentation.Induction.FirstNonScalarChiefFactor p) : Q2Presentation.Induction.NonScalarChiefFactor p) (hRNat.card ↥(Q2Presentation.Induction.kernelFrattini K) = 1: Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number. If `α` is infinite, `Nat.card α = 0`.↥(Q2Presentation.Induction.kernelFrattiniQ2Presentation.Induction.kernelFrattini {p : Q2Presentation.Induction.FramedPair} {chief : Q2Presentation.Induction.NonScalarChiefFactor p} (K : Q2Presentation.Induction.KernelMinimal chief) : Subgroup p.fst.YThe literal Frattini subgroup `R = Φ(K)` of the kernel, as a subgroup of `Y` (the manuscript's `R`, l.3626).KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`. We use `a = b` as notation for `Eq a b`. A fundamental property of equality is that it is an equivalence relation. ``` variable (α : Type) (a b c d : α) variable (hab : a = b) (hcb : c = b) (hcd : c = d) example : a = d := Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd ``` Equality is much more than an equivalence relation, however. It has the important property that every assertion respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value. That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`. Example: ``` example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := Eq.subst h1 h2 example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := h1 ▸ h2 ``` The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`. For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality) Conventions for notations in identifiers: * The recommended spelling of `=` in identifiers is `eq`.1) : (∀ (gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GammaA (Q2Presentation.Induction.MStage.mstageLower chief K).fst (Q2Presentation.Induction.MStage.mstageLower chief K).snd: Q2Presentation.boundaryFramedSurjQ2Presentation.boundaryFramedSurj {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (Yt : Q2Presentation.BoundaryFramedTarget) (F : Q2Presentation.BoundaryFrame Yt) : TypeThe **boundary-framed surjections** `e_Γ^β(𝒴)` (manuscript `eq:eGamma`): the continuous surjections `f : Γ ↠ Y` whose induced map to `H × E` is the prescribed `β ∘ b_Γ`, i.e. `q_Y ∘ f = β ∘ b_Γ`. This is the subtype counted in Theorem 4.2; its cardinality is `e_Γ^β(𝒴)`.Q2Presentation.boundaryPackage_GammaAQ2Presentation.boundaryPackage_GammaA : Q2Presentation.BoundaryPackage Q2Presentation.GammaA**The candidate boundary package** (manuscript Prop 3.14, `prop:compatiblemarking`; plan Turn 4 §6). The Stage-C data of `Γ_A`: the common tame quotient `gammaTameMap`, the maximal pro-`2` quotient `p : Γ_A ⟶ Π`, and the common unramified character `ν = gammaTameMap ≫ ν_t`, through which both factor.(Q2Presentation.Induction.MStage.mstageLowerQ2Presentation.Induction.MStage.mstageLower {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPairThe lower child in transparent form (instance-friendly).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.(Q2Presentation.Induction.MStage.mstageLowerQ2Presentation.Induction.MStage.mstageLower {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPairThe lower child in transparent form (instance-friendly).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.), NonemptyNonempty.{u} (α : Sort u) : Prop`Nonempty α` is a typeclass that says that `α` is not an empty type, that is, there exists an element in the type. It differs from `Inhabited α` in that `Nonempty α` is a `Prop`, which means that it does not actually carry an element of `α`, only a proof that *there exists* such an element. Given `Nonempty α`, you can construct an element of `α` *nonconstructively* using `Classical.choice`.(Q2Presentation.TorsorProgram.liftHomQ2Presentation.TorsorProgram.liftHom (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y) [hNn : N.Normal] (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (F : Q2Presentation.BoundaryFrame Yt) (g : Q2Presentation.boundaryFramedSurj B (Q2Presentation.TorsorProgram.quotientFramedTarget Yt N hNLY hNθ) (Q2Presentation.TorsorProgram.quotientFrame Yt N hNLY hNθ F)) : Type**All framed lifts** of a child-framed surjection (surjectivity NOT imposed; the Frattini argument recovers it per use-site).pQ2Presentation.Induction.FramedPair.fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor.KsubQ2Presentation.Induction.KernelMinimal.Ksub {p : Q2Presentation.Induction.FramedPair} {chief : Q2Presentation.Induction.NonScalarChiefFactor p} (self : Q2Presentation.Induction.KernelMinimal chief) : Subgroup p.fst.Y⋯ ⋯ Q2Presentation.boundaryPackage_GammaAQ2Presentation.boundaryPackage_GammaA : Q2Presentation.BoundaryPackage Q2Presentation.GammaA**The candidate boundary package** (manuscript Prop 3.14, `prop:compatiblemarking`; plan Turn 4 §6). The Stage-C data of `Γ_A`: the common tame quotient `gammaTameMap`, the maximal pro-`2` quotient `p : Γ_A ⟶ Π`, and the common unramified character `ν = gammaTameMap ≫ ν_t`, through which both factor.pQ2Presentation.Induction.FramedPair.sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GammaA (Q2Presentation.Induction.MStage.mstageLower chief K).fst (Q2Presentation.Induction.MStage.mstageLower chief K).snd)) ∧And (a b : Prop) : Prop`And a b`, or `a ∧ b`, is the conjunction of propositions. It can be constructed and destructed like a pair: if `ha : a` and `hb : b` then `⟨ha, hb⟩ : a ∧ b`, and if `h : a ∧ b` then `h.left : a` and `h.right : b`. Conventions for notations in identifiers: * The recommended spelling of `∧` in identifiers is `and`. * The recommended spelling of `/\` in identifiers is `and` (prefer `∧` over `/\`).(∀ (gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GammaA (Q2Presentation.TorsorProgram.quotientFramedTarget p.fst K.Ksub ⋯ ⋯) (Q2Presentation.TorsorProgram.quotientFrame p.fst K.Ksub ⋯ ⋯ p.snd): Q2Presentation.boundaryFramedSurjQ2Presentation.boundaryFramedSurj {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (Yt : Q2Presentation.BoundaryFramedTarget) (F : Q2Presentation.BoundaryFrame Yt) : TypeThe **boundary-framed surjections** `e_Γ^β(𝒴)` (manuscript `eq:eGamma`): the continuous surjections `f : Γ ↠ Y` whose induced map to `H × E` is the prescribed `β ∘ b_Γ`, i.e. `q_Y ∘ f = β ∘ b_Γ`. This is the subtype counted in Theorem 4.2; its cardinality is `e_Γ^β(𝒴)`.Q2Presentation.boundaryPackage_GammaAQ2Presentation.boundaryPackage_GammaA : Q2Presentation.BoundaryPackage Q2Presentation.GammaA**The candidate boundary package** (manuscript Prop 3.14, `prop:compatiblemarking`; plan Turn 4 §6). The Stage-C data of `Γ_A`: the common tame quotient `gammaTameMap`, the maximal pro-`2` quotient `p : Γ_A ⟶ Π`, and the common unramified character `ν = gammaTameMap ≫ ν_t`, through which both factor.(Q2Presentation.TorsorProgram.quotientFramedTargetQ2Presentation.TorsorProgram.quotientFramedTarget (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y) [hNn : N.Normal] (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) : Q2Presentation.BoundaryFramedTarget**The quotient framed target** `Y/N` (same `H`, same `E`, image wild kernel).pQ2Presentation.Induction.FramedPair.fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor.KsubQ2Presentation.Induction.KernelMinimal.Ksub {p : Q2Presentation.Induction.FramedPair} {chief : Q2Presentation.Induction.NonScalarChiefFactor p} (self : Q2Presentation.Induction.KernelMinimal chief) : Subgroup p.fst.Y⋯ ⋯) (Q2Presentation.TorsorProgram.quotientFrameQ2Presentation.TorsorProgram.quotientFrame (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y) [hNn : N.Normal] (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) (F : Q2Presentation.BoundaryFrame Yt) : Q2Presentation.BoundaryFrame (Q2Presentation.TorsorProgram.quotientFramedTarget Yt N hNLY hNθ)The frame transports verbatim (`H`, `E`, `α`, `ψ`, `β` unchanged).pQ2Presentation.Induction.FramedPair.fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor.KsubQ2Presentation.Induction.KernelMinimal.Ksub {p : Q2Presentation.Induction.FramedPair} {chief : Q2Presentation.Induction.NonScalarChiefFactor p} (self : Q2Presentation.Induction.KernelMinimal chief) : Subgroup p.fst.Y⋯ ⋯ pQ2Presentation.Induction.FramedPair.sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.)) (f₀Q2Presentation.TorsorProgram.liftHom p.fst K.Ksub ⋯ ⋯ Q2Presentation.boundaryPackage_GammaA p.snd g: Q2Presentation.TorsorProgram.liftHomQ2Presentation.TorsorProgram.liftHom (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y) [hNn : N.Normal] (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (F : Q2Presentation.BoundaryFrame Yt) (g : Q2Presentation.boundaryFramedSurj B (Q2Presentation.TorsorProgram.quotientFramedTarget Yt N hNLY hNθ) (Q2Presentation.TorsorProgram.quotientFrame Yt N hNLY hNθ F)) : Type**All framed lifts** of a child-framed surjection (surjectivity NOT imposed; the Frattini argument recovers it per use-site).pQ2Presentation.Induction.FramedPair.fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor.KsubQ2Presentation.Induction.KernelMinimal.Ksub {p : Q2Presentation.Induction.FramedPair} {chief : Q2Presentation.Induction.NonScalarChiefFactor p} (self : Q2Presentation.Induction.KernelMinimal chief) : Subgroup p.fst.Y⋯ ⋯ Q2Presentation.boundaryPackage_GammaAQ2Presentation.boundaryPackage_GammaA : Q2Presentation.BoundaryPackage Q2Presentation.GammaA**The candidate boundary package** (manuscript Prop 3.14, `prop:compatiblemarking`; plan Turn 4 §6). The Stage-C data of `Γ_A`: the common tame quotient `gammaTameMap`, the maximal pro-`2` quotient `p : Γ_A ⟶ Π`, and the common unramified character `ν = gammaTameMap ≫ ν_t`, through which both factor.pQ2Presentation.Induction.FramedPair.sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GammaA (Q2Presentation.TorsorProgram.quotientFramedTarget p.fst K.Ksub ⋯ ⋯) (Q2Presentation.TorsorProgram.quotientFrame p.fst K.Ksub ⋯ ⋯ p.snd)), Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number. If `α` is infinite, `Nat.card α = 0`.(Q2Presentation.TorsorProgram.Z1Q2Presentation.TorsorProgram.Z1 (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y) [hNn : N.Normal] (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (F : Q2Presentation.BoundaryFrame Yt) (g : Q2Presentation.boundaryFramedSurj B (Q2Presentation.TorsorProgram.quotientFramedTarget Yt N hNLY hNθ) (Q2Presentation.TorsorProgram.quotientFrame Yt N hNLY hNθ F)) (f₀ : Q2Presentation.TorsorProgram.liftHom Yt N hNLY hNθ B F g) : Type**The twisted cocycle set** relative to a base lift.pQ2Presentation.Induction.FramedPair.fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor.KsubQ2Presentation.Induction.KernelMinimal.Ksub {p : Q2Presentation.Induction.FramedPair} {chief : Q2Presentation.Induction.NonScalarChiefFactor p} (self : Q2Presentation.Induction.KernelMinimal chief) : Subgroup p.fst.Y⋯ ⋯ Q2Presentation.boundaryPackage_GammaAQ2Presentation.boundaryPackage_GammaA : Q2Presentation.BoundaryPackage Q2Presentation.GammaA**The candidate boundary package** (manuscript Prop 3.14, `prop:compatiblemarking`; plan Turn 4 §6). The Stage-C data of `Γ_A`: the common tame quotient `gammaTameMap`, the maximal pro-`2` quotient `p : Γ_A ⟶ Π`, and the common unramified character `ν = gammaTameMap ≫ ν_t`, through which both factor.pQ2Presentation.Induction.FramedPair.sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GammaA (Q2Presentation.TorsorProgram.quotientFramedTarget p.fst K.Ksub ⋯ ⋯) (Q2Presentation.TorsorProgram.quotientFrame p.fst K.Ksub ⋯ ⋯ p.snd)f₀Q2Presentation.TorsorProgram.liftHom p.fst K.Ksub ⋯ ⋯ Q2Presentation.boundaryPackage_GammaA p.snd g) =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`. We use `a = b` as notation for `Eq a b`. A fundamental property of equality is that it is an equivalence relation. ``` variable (α : Type) (a b c d : α) variable (hab : a = b) (hcb : c = b) (hcd : c = d) example : a = d := Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd ``` Equality is much more than an equivalence relation, however. It has the important property that every assertion respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value. That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`. Example: ``` example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := Eq.subst h1 h2 example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := h1 ▸ h2 ``` The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`. For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality) Conventions for notations in identifiers: * The recommended spelling of `=` in identifiers is `eq`.2 ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `^` in identifiers is `pow`.(HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.2 *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.Q2Presentation.Induction.sec7MStageDimQ2Presentation.Induction.sec7MStageDim {p : Q2Presentation.Induction.FramedPair} {chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p} (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : ℕThe actual elementary-layer dimension used by the `R = 1` M-stage. In the manuscript notation this is `dim_{𝔽₂} M`, with `M = K/Φ(K)`. The current concrete Section 7 tower realizes this as `towerM K`; when `R = Φ(K) = 1`, this is the elementary layer lifted in `eq:Mstage`.KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.) ∧And (a b : Prop) : Prop`And a b`, or `a ∧ b`, is the conjunction of propositions. It can be constructed and destructed like a pair: if `ha : a` and `hb : b` then `⟨ha, hb⟩ : a ∧ b`, and if `h : a ∧ b` then `h.left : a` and `h.right : b`. Conventions for notations in identifiers: * The recommended spelling of `∧` in identifiers is `and`. * The recommended spelling of `/\` in identifiers is `and` (prefer `∧` over `/\`).(∀ (gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GQ2 (Q2Presentation.Induction.MStage.mstageLower chief K).fst (Q2Presentation.Induction.MStage.mstageLower chief K).snd: Q2Presentation.boundaryFramedSurjQ2Presentation.boundaryFramedSurj {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (Yt : Q2Presentation.BoundaryFramedTarget) (F : Q2Presentation.BoundaryFrame Yt) : TypeThe **boundary-framed surjections** `e_Γ^β(𝒴)` (manuscript `eq:eGamma`): the continuous surjections `f : Γ ↠ Y` whose induced map to `H × E` is the prescribed `β ∘ b_Γ`, i.e. `q_Y ∘ f = β ∘ b_Γ`. This is the subtype counted in Theorem 4.2; its cardinality is `e_Γ^β(𝒴)`.Q2Presentation.boundaryPackage_GQ2Q2Presentation.boundaryPackage_GQ2 : Q2Presentation.BoundaryPackage Q2Presentation.GQ2Profinite**The local boundary package** `boundaryPackage_GQ2 : BoundaryPackage G_{ℚ₂}` (manuscript Prop 3.14 `prop:compatiblemarking` for `Γ = G_{ℚ₂}`; plan Turn 4 §6), the `G_{ℚ₂}`-side instance of the uniform Stage-C boundary datum. * `tameMap`/`tame_surj`/`tame_nu` — the local tame quotient `G_{ℚ₂} ↠ T_A` with unramified marking `ν_loc`, from the axiom `gq2_tame_quotient` (Prop 3.2 + the local half of Prop `compatiblemarking`); * `pro2Map`/`pro2_surj`/`pro2_nu` — the local maximal pro-`2` quotient `G_{ℚ₂} ↠ Π` with the *same* unramified marking `ν_loc`, proved from the fully marked Labute comparison `labute_GQ2_maxPro2_marked` (`pro2Map_loc`, `pro2Map_loc_surjective`, `pro2Map_loc_nu`); * `nu := ν_loc` — the common unramified character through which both factor.(Q2Presentation.Induction.MStage.mstageLowerQ2Presentation.Induction.MStage.mstageLower {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPairThe lower child in transparent form (instance-friendly).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.(Q2Presentation.Induction.MStage.mstageLowerQ2Presentation.Induction.MStage.mstageLower {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPairThe lower child in transparent form (instance-friendly).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.), NonemptyNonempty.{u} (α : Sort u) : Prop`Nonempty α` is a typeclass that says that `α` is not an empty type, that is, there exists an element in the type. It differs from `Inhabited α` in that `Nonempty α` is a `Prop`, which means that it does not actually carry an element of `α`, only a proof that *there exists* such an element. Given `Nonempty α`, you can construct an element of `α` *nonconstructively* using `Classical.choice`.(Q2Presentation.TorsorProgram.liftHomQ2Presentation.TorsorProgram.liftHom (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y) [hNn : N.Normal] (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (F : Q2Presentation.BoundaryFrame Yt) (g : Q2Presentation.boundaryFramedSurj B (Q2Presentation.TorsorProgram.quotientFramedTarget Yt N hNLY hNθ) (Q2Presentation.TorsorProgram.quotientFrame Yt N hNLY hNθ F)) : Type**All framed lifts** of a child-framed surjection (surjectivity NOT imposed; the Frattini argument recovers it per use-site).pQ2Presentation.Induction.FramedPair.fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor.KsubQ2Presentation.Induction.KernelMinimal.Ksub {p : Q2Presentation.Induction.FramedPair} {chief : Q2Presentation.Induction.NonScalarChiefFactor p} (self : Q2Presentation.Induction.KernelMinimal chief) : Subgroup p.fst.Y⋯ ⋯ Q2Presentation.boundaryPackage_GQ2Q2Presentation.boundaryPackage_GQ2 : Q2Presentation.BoundaryPackage Q2Presentation.GQ2Profinite**The local boundary package** `boundaryPackage_GQ2 : BoundaryPackage G_{ℚ₂}` (manuscript Prop 3.14 `prop:compatiblemarking` for `Γ = G_{ℚ₂}`; plan Turn 4 §6), the `G_{ℚ₂}`-side instance of the uniform Stage-C boundary datum. * `tameMap`/`tame_surj`/`tame_nu` — the local tame quotient `G_{ℚ₂} ↠ T_A` with unramified marking `ν_loc`, from the axiom `gq2_tame_quotient` (Prop 3.2 + the local half of Prop `compatiblemarking`); * `pro2Map`/`pro2_surj`/`pro2_nu` — the local maximal pro-`2` quotient `G_{ℚ₂} ↠ Π` with the *same* unramified marking `ν_loc`, proved from the fully marked Labute comparison `labute_GQ2_maxPro2_marked` (`pro2Map_loc`, `pro2Map_loc_surjective`, `pro2Map_loc_nu`); * `nu := ν_loc` — the common unramified character through which both factor.pQ2Presentation.Induction.FramedPair.sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GQ2 (Q2Presentation.Induction.MStage.mstageLower chief K).fst (Q2Presentation.Induction.MStage.mstageLower chief K).snd)) ∧And (a b : Prop) : Prop`And a b`, or `a ∧ b`, is the conjunction of propositions. It can be constructed and destructed like a pair: if `ha : a` and `hb : b` then `⟨ha, hb⟩ : a ∧ b`, and if `h : a ∧ b` then `h.left : a` and `h.right : b`. Conventions for notations in identifiers: * The recommended spelling of `∧` in identifiers is `and`. * The recommended spelling of `/\` in identifiers is `and` (prefer `∧` over `/\`).∀ (gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GQ2 (Q2Presentation.TorsorProgram.quotientFramedTarget p.fst K.Ksub ⋯ ⋯) (Q2Presentation.TorsorProgram.quotientFrame p.fst K.Ksub ⋯ ⋯ p.snd): Q2Presentation.boundaryFramedSurjQ2Presentation.boundaryFramedSurj {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (Yt : Q2Presentation.BoundaryFramedTarget) (F : Q2Presentation.BoundaryFrame Yt) : TypeThe **boundary-framed surjections** `e_Γ^β(𝒴)` (manuscript `eq:eGamma`): the continuous surjections `f : Γ ↠ Y` whose induced map to `H × E` is the prescribed `β ∘ b_Γ`, i.e. `q_Y ∘ f = β ∘ b_Γ`. This is the subtype counted in Theorem 4.2; its cardinality is `e_Γ^β(𝒴)`.Q2Presentation.boundaryPackage_GQ2Q2Presentation.boundaryPackage_GQ2 : Q2Presentation.BoundaryPackage Q2Presentation.GQ2Profinite**The local boundary package** `boundaryPackage_GQ2 : BoundaryPackage G_{ℚ₂}` (manuscript Prop 3.14 `prop:compatiblemarking` for `Γ = G_{ℚ₂}`; plan Turn 4 §6), the `G_{ℚ₂}`-side instance of the uniform Stage-C boundary datum. * `tameMap`/`tame_surj`/`tame_nu` — the local tame quotient `G_{ℚ₂} ↠ T_A` with unramified marking `ν_loc`, from the axiom `gq2_tame_quotient` (Prop 3.2 + the local half of Prop `compatiblemarking`); * `pro2Map`/`pro2_surj`/`pro2_nu` — the local maximal pro-`2` quotient `G_{ℚ₂} ↠ Π` with the *same* unramified marking `ν_loc`, proved from the fully marked Labute comparison `labute_GQ2_maxPro2_marked` (`pro2Map_loc`, `pro2Map_loc_surjective`, `pro2Map_loc_nu`); * `nu := ν_loc` — the common unramified character through which both factor.(Q2Presentation.TorsorProgram.quotientFramedTargetQ2Presentation.TorsorProgram.quotientFramedTarget (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y) [hNn : N.Normal] (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) : Q2Presentation.BoundaryFramedTarget**The quotient framed target** `Y/N` (same `H`, same `E`, image wild kernel).pQ2Presentation.Induction.FramedPair.fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor.KsubQ2Presentation.Induction.KernelMinimal.Ksub {p : Q2Presentation.Induction.FramedPair} {chief : Q2Presentation.Induction.NonScalarChiefFactor p} (self : Q2Presentation.Induction.KernelMinimal chief) : Subgroup p.fst.Y⋯ ⋯) (Q2Presentation.TorsorProgram.quotientFrameQ2Presentation.TorsorProgram.quotientFrame (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y) [hNn : N.Normal] (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) (F : Q2Presentation.BoundaryFrame Yt) : Q2Presentation.BoundaryFrame (Q2Presentation.TorsorProgram.quotientFramedTarget Yt N hNLY hNθ)The frame transports verbatim (`H`, `E`, `α`, `ψ`, `β` unchanged).pQ2Presentation.Induction.FramedPair.fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor.KsubQ2Presentation.Induction.KernelMinimal.Ksub {p : Q2Presentation.Induction.FramedPair} {chief : Q2Presentation.Induction.NonScalarChiefFactor p} (self : Q2Presentation.Induction.KernelMinimal chief) : Subgroup p.fst.Y⋯ ⋯ pQ2Presentation.Induction.FramedPair.sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.)) (f₀Q2Presentation.TorsorProgram.liftHom p.fst K.Ksub ⋯ ⋯ Q2Presentation.boundaryPackage_GQ2 p.snd g: Q2Presentation.TorsorProgram.liftHomQ2Presentation.TorsorProgram.liftHom (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y) [hNn : N.Normal] (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (F : Q2Presentation.BoundaryFrame Yt) (g : Q2Presentation.boundaryFramedSurj B (Q2Presentation.TorsorProgram.quotientFramedTarget Yt N hNLY hNθ) (Q2Presentation.TorsorProgram.quotientFrame Yt N hNLY hNθ F)) : Type**All framed lifts** of a child-framed surjection (surjectivity NOT imposed; the Frattini argument recovers it per use-site).pQ2Presentation.Induction.FramedPair.fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor.KsubQ2Presentation.Induction.KernelMinimal.Ksub {p : Q2Presentation.Induction.FramedPair} {chief : Q2Presentation.Induction.NonScalarChiefFactor p} (self : Q2Presentation.Induction.KernelMinimal chief) : Subgroup p.fst.Y⋯ ⋯ Q2Presentation.boundaryPackage_GQ2Q2Presentation.boundaryPackage_GQ2 : Q2Presentation.BoundaryPackage Q2Presentation.GQ2Profinite**The local boundary package** `boundaryPackage_GQ2 : BoundaryPackage G_{ℚ₂}` (manuscript Prop 3.14 `prop:compatiblemarking` for `Γ = G_{ℚ₂}`; plan Turn 4 §6), the `G_{ℚ₂}`-side instance of the uniform Stage-C boundary datum. * `tameMap`/`tame_surj`/`tame_nu` — the local tame quotient `G_{ℚ₂} ↠ T_A` with unramified marking `ν_loc`, from the axiom `gq2_tame_quotient` (Prop 3.2 + the local half of Prop `compatiblemarking`); * `pro2Map`/`pro2_surj`/`pro2_nu` — the local maximal pro-`2` quotient `G_{ℚ₂} ↠ Π` with the *same* unramified marking `ν_loc`, proved from the fully marked Labute comparison `labute_GQ2_maxPro2_marked` (`pro2Map_loc`, `pro2Map_loc_surjective`, `pro2Map_loc_nu`); * `nu := ν_loc` — the common unramified character through which both factor.pQ2Presentation.Induction.FramedPair.sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GQ2 (Q2Presentation.TorsorProgram.quotientFramedTarget p.fst K.Ksub ⋯ ⋯) (Q2Presentation.TorsorProgram.quotientFrame p.fst K.Ksub ⋯ ⋯ p.snd)), Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number. If `α` is infinite, `Nat.card α = 0`.(Q2Presentation.TorsorProgram.Z1Q2Presentation.TorsorProgram.Z1 (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y) [hNn : N.Normal] (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (F : Q2Presentation.BoundaryFrame Yt) (g : Q2Presentation.boundaryFramedSurj B (Q2Presentation.TorsorProgram.quotientFramedTarget Yt N hNLY hNθ) (Q2Presentation.TorsorProgram.quotientFrame Yt N hNLY hNθ F)) (f₀ : Q2Presentation.TorsorProgram.liftHom Yt N hNLY hNθ B F g) : Type**The twisted cocycle set** relative to a base lift.pQ2Presentation.Induction.FramedPair.fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor.KsubQ2Presentation.Induction.KernelMinimal.Ksub {p : Q2Presentation.Induction.FramedPair} {chief : Q2Presentation.Induction.NonScalarChiefFactor p} (self : Q2Presentation.Induction.KernelMinimal chief) : Subgroup p.fst.Y⋯ ⋯ Q2Presentation.boundaryPackage_GQ2Q2Presentation.boundaryPackage_GQ2 : Q2Presentation.BoundaryPackage Q2Presentation.GQ2Profinite**The local boundary package** `boundaryPackage_GQ2 : BoundaryPackage G_{ℚ₂}` (manuscript Prop 3.14 `prop:compatiblemarking` for `Γ = G_{ℚ₂}`; plan Turn 4 §6), the `G_{ℚ₂}`-side instance of the uniform Stage-C boundary datum. * `tameMap`/`tame_surj`/`tame_nu` — the local tame quotient `G_{ℚ₂} ↠ T_A` with unramified marking `ν_loc`, from the axiom `gq2_tame_quotient` (Prop 3.2 + the local half of Prop `compatiblemarking`); * `pro2Map`/`pro2_surj`/`pro2_nu` — the local maximal pro-`2` quotient `G_{ℚ₂} ↠ Π` with the *same* unramified marking `ν_loc`, proved from the fully marked Labute comparison `labute_GQ2_maxPro2_marked` (`pro2Map_loc`, `pro2Map_loc_surjective`, `pro2Map_loc_nu`); * `nu := ν_loc` — the common unramified character through which both factor.pQ2Presentation.Induction.FramedPair.sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GQ2 (Q2Presentation.TorsorProgram.quotientFramedTarget p.fst K.Ksub ⋯ ⋯) (Q2Presentation.TorsorProgram.quotientFrame p.fst K.Ksub ⋯ ⋯ p.snd)f₀Q2Presentation.TorsorProgram.liftHom p.fst K.Ksub ⋯ ⋯ Q2Presentation.boundaryPackage_GQ2 p.snd g) =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`. We use `a = b` as notation for `Eq a b`. A fundamental property of equality is that it is an equivalence relation. ``` variable (α : Type) (a b c d : α) variable (hab : a = b) (hcb : c = b) (hcd : c = d) example : a = d := Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd ``` Equality is much more than an equivalence relation, however. It has the important property that every assertion respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value. That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`. Example: ``` example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := Eq.subst h1 h2 example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := h1 ▸ h2 ``` The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`. For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality) Conventions for notations in identifiers: * The recommended spelling of `=` in identifiers is `eq`.2 ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `^` in identifiers is `pow`.(HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.2 *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.Q2Presentation.Induction.sec7MStageDimQ2Presentation.Induction.sec7MStageDim {p : Q2Presentation.Induction.FramedPair} {chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p} (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : ℕThe actual elementary-layer dimension used by the `R = 1` M-stage. In the manuscript notation this is `dim_{𝔽₂} M`, with `M = K/Φ(K)`. The current concrete Section 7 tower realizes this as `towerM K`; when `R = Φ(K) = 1`, this is the elementary layer lifted in `eq:Mstage`.KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.theorem Q2Presentation.Induction.MStage.sec7_mstage_cochainData {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|`.} (h¬Q2Presentation.Induction.ScalarTerminal p: ¬Not (a : Prop) : Prop`Not p`, or `¬p`, is the negation of `p`. It is defined to be `p → False`, so if your goal is `¬p` you can use `intro h` to turn the goal into `h : p ⊢ False`, and if you have `hn : ¬p` and `h : p` then `hn h : False` and `(hn h).elim` will prove anything. For more information: [Propositional Logic](https://lean-lang.org/theorem_proving_in_lean4/propositions_and_proofs.html#propositional-logic) Conventions for notations in identifiers: * The recommended spelling of `¬` in identifiers is `not`.Q2Presentation.Induction.ScalarTerminalQ2Presentation.Induction.ScalarTerminal (p : Q2Presentation.Induction.FramedPair) : Prop**Scalar-terminal framed pair.**pQ2Presentation.Induction.FramedPair) (chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p: Q2Presentation.Induction.FirstNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor (p : Q2Presentation.Induction.FramedPair) : TypeA non-scalar chief factor of `L_Y` that is **first**: every chief factor strictly below it (i.e. with upper term contained in `lower`) is scalar. This is the manuscript's choice `S ◁ P` at l.3616–3623 ("all chief factors below `S` are scalar and `V` is the first non-scalar simple factor"), which `lem:collapse` requires for the coprime step `[S, Ñ] = 1`.pQ2Presentation.Induction.FramedPair) (KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor: Q2Presentation.Induction.KernelMinimalQ2Presentation.Induction.KernelMinimal {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.NonScalarChiefFactor p) : TypeThe manuscript's kernel choice (l.3623): `K ◁ Y`, `K ≤ P`, `KS = P`, and `K` is **⊆-minimal** with these properties — stated as: any `Y`-normal `K' ≤ K` still joining with `S` to `P` equals `K`. (This, not leastness among all candidates, is what `lem:simplehead` and `lem:collapse` use: both apply it to subgroups of `K`.)chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p.toNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor.toNonScalarChiefFactor {p : Q2Presentation.Induction.FramedPair} (self : Q2Presentation.Induction.FirstNonScalarChiefFactor p) : Q2Presentation.Induction.NonScalarChiefFactor p) (hRNat.card ↥(Q2Presentation.Induction.kernelFrattini K) = 1: Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number. If `α` is infinite, `Nat.card α = 0`.↥(Q2Presentation.Induction.kernelFrattiniQ2Presentation.Induction.kernelFrattini {p : Q2Presentation.Induction.FramedPair} {chief : Q2Presentation.Induction.NonScalarChiefFactor p} (K : Q2Presentation.Induction.KernelMinimal chief) : Subgroup p.fst.YThe literal Frattini subgroup `R = Φ(K)` of the kernel, as a subgroup of `Y` (the manuscript's `R`, l.3626).KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`. We use `a = b` as notation for `Eq a b`. A fundamental property of equality is that it is an equivalence relation. ``` variable (α : Type) (a b c d : α) variable (hab : a = b) (hcb : c = b) (hcd : c = d) example : a = d := Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd ``` Equality is much more than an equivalence relation, however. It has the important property that every assertion respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value. That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`. Example: ``` example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := Eq.subst h1 h2 example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := h1 ▸ h2 ``` The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`. For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality) Conventions for notations in identifiers: * The recommended spelling of `=` in identifiers is `eq`.1) : (∀ (gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GammaA (Q2Presentation.Induction.MStage.mstageLower chief K).fst (Q2Presentation.Induction.MStage.mstageLower chief K).snd: Q2Presentation.boundaryFramedSurjQ2Presentation.boundaryFramedSurj {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (Yt : Q2Presentation.BoundaryFramedTarget) (F : Q2Presentation.BoundaryFrame Yt) : TypeThe **boundary-framed surjections** `e_Γ^β(𝒴)` (manuscript `eq:eGamma`): the continuous surjections `f : Γ ↠ Y` whose induced map to `H × E` is the prescribed `β ∘ b_Γ`, i.e. `q_Y ∘ f = β ∘ b_Γ`. This is the subtype counted in Theorem 4.2; its cardinality is `e_Γ^β(𝒴)`.Q2Presentation.boundaryPackage_GammaAQ2Presentation.boundaryPackage_GammaA : Q2Presentation.BoundaryPackage Q2Presentation.GammaA**The candidate boundary package** (manuscript Prop 3.14, `prop:compatiblemarking`; plan Turn 4 §6). The Stage-C data of `Γ_A`: the common tame quotient `gammaTameMap`, the maximal pro-`2` quotient `p : Γ_A ⟶ Π`, and the common unramified character `ν = gammaTameMap ≫ ν_t`, through which both factor.(Q2Presentation.Induction.MStage.mstageLowerQ2Presentation.Induction.MStage.mstageLower {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPairThe lower child in transparent form (instance-friendly).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.(Q2Presentation.Induction.MStage.mstageLowerQ2Presentation.Induction.MStage.mstageLower {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPairThe lower child in transparent form (instance-friendly).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.), NonemptyNonempty.{u} (α : Sort u) : Prop`Nonempty α` is a typeclass that says that `α` is not an empty type, that is, there exists an element in the type. It differs from `Inhabited α` in that `Nonempty α` is a `Prop`, which means that it does not actually carry an element of `α`, only a proof that *there exists* such an element. Given `Nonempty α`, you can construct an element of `α` *nonconstructively* using `Classical.choice`.(Q2Presentation.TorsorProgram.liftHomQ2Presentation.TorsorProgram.liftHom (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y) [hNn : N.Normal] (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (F : Q2Presentation.BoundaryFrame Yt) (g : Q2Presentation.boundaryFramedSurj B (Q2Presentation.TorsorProgram.quotientFramedTarget Yt N hNLY hNθ) (Q2Presentation.TorsorProgram.quotientFrame Yt N hNLY hNθ F)) : Type**All framed lifts** of a child-framed surjection (surjectivity NOT imposed; the Frattini argument recovers it per use-site).pQ2Presentation.Induction.FramedPair.fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor.KsubQ2Presentation.Induction.KernelMinimal.Ksub {p : Q2Presentation.Induction.FramedPair} {chief : Q2Presentation.Induction.NonScalarChiefFactor p} (self : Q2Presentation.Induction.KernelMinimal chief) : Subgroup p.fst.Y⋯ ⋯ Q2Presentation.boundaryPackage_GammaAQ2Presentation.boundaryPackage_GammaA : Q2Presentation.BoundaryPackage Q2Presentation.GammaA**The candidate boundary package** (manuscript Prop 3.14, `prop:compatiblemarking`; plan Turn 4 §6). The Stage-C data of `Γ_A`: the common tame quotient `gammaTameMap`, the maximal pro-`2` quotient `p : Γ_A ⟶ Π`, and the common unramified character `ν = gammaTameMap ≫ ν_t`, through which both factor.pQ2Presentation.Induction.FramedPair.sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GammaA (Q2Presentation.Induction.MStage.mstageLower chief K).fst (Q2Presentation.Induction.MStage.mstageLower chief K).snd)) ∧And (a b : Prop) : Prop`And a b`, or `a ∧ b`, is the conjunction of propositions. It can be constructed and destructed like a pair: if `ha : a` and `hb : b` then `⟨ha, hb⟩ : a ∧ b`, and if `h : a ∧ b` then `h.left : a` and `h.right : b`. Conventions for notations in identifiers: * The recommended spelling of `∧` in identifiers is `and`. * The recommended spelling of `/\` in identifiers is `and` (prefer `∧` over `/\`).(∀ (gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GammaA (Q2Presentation.TorsorProgram.quotientFramedTarget p.fst K.Ksub ⋯ ⋯) (Q2Presentation.TorsorProgram.quotientFrame p.fst K.Ksub ⋯ ⋯ p.snd): Q2Presentation.boundaryFramedSurjQ2Presentation.boundaryFramedSurj {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (Yt : Q2Presentation.BoundaryFramedTarget) (F : Q2Presentation.BoundaryFrame Yt) : TypeThe **boundary-framed surjections** `e_Γ^β(𝒴)` (manuscript `eq:eGamma`): the continuous surjections `f : Γ ↠ Y` whose induced map to `H × E` is the prescribed `β ∘ b_Γ`, i.e. `q_Y ∘ f = β ∘ b_Γ`. This is the subtype counted in Theorem 4.2; its cardinality is `e_Γ^β(𝒴)`.Q2Presentation.boundaryPackage_GammaAQ2Presentation.boundaryPackage_GammaA : Q2Presentation.BoundaryPackage Q2Presentation.GammaA**The candidate boundary package** (manuscript Prop 3.14, `prop:compatiblemarking`; plan Turn 4 §6). The Stage-C data of `Γ_A`: the common tame quotient `gammaTameMap`, the maximal pro-`2` quotient `p : Γ_A ⟶ Π`, and the common unramified character `ν = gammaTameMap ≫ ν_t`, through which both factor.(Q2Presentation.TorsorProgram.quotientFramedTargetQ2Presentation.TorsorProgram.quotientFramedTarget (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y) [hNn : N.Normal] (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) : Q2Presentation.BoundaryFramedTarget**The quotient framed target** `Y/N` (same `H`, same `E`, image wild kernel).pQ2Presentation.Induction.FramedPair.fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor.KsubQ2Presentation.Induction.KernelMinimal.Ksub {p : Q2Presentation.Induction.FramedPair} {chief : Q2Presentation.Induction.NonScalarChiefFactor p} (self : Q2Presentation.Induction.KernelMinimal chief) : Subgroup p.fst.Y⋯ ⋯) (Q2Presentation.TorsorProgram.quotientFrameQ2Presentation.TorsorProgram.quotientFrame (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y) [hNn : N.Normal] (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) (F : Q2Presentation.BoundaryFrame Yt) : Q2Presentation.BoundaryFrame (Q2Presentation.TorsorProgram.quotientFramedTarget Yt N hNLY hNθ)The frame transports verbatim (`H`, `E`, `α`, `ψ`, `β` unchanged).pQ2Presentation.Induction.FramedPair.fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor.KsubQ2Presentation.Induction.KernelMinimal.Ksub {p : Q2Presentation.Induction.FramedPair} {chief : Q2Presentation.Induction.NonScalarChiefFactor p} (self : Q2Presentation.Induction.KernelMinimal chief) : Subgroup p.fst.Y⋯ ⋯ pQ2Presentation.Induction.FramedPair.sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.)) (f₀Q2Presentation.TorsorProgram.liftHom p.fst K.Ksub ⋯ ⋯ Q2Presentation.boundaryPackage_GammaA p.snd g: Q2Presentation.TorsorProgram.liftHomQ2Presentation.TorsorProgram.liftHom (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y) [hNn : N.Normal] (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (F : Q2Presentation.BoundaryFrame Yt) (g : Q2Presentation.boundaryFramedSurj B (Q2Presentation.TorsorProgram.quotientFramedTarget Yt N hNLY hNθ) (Q2Presentation.TorsorProgram.quotientFrame Yt N hNLY hNθ F)) : Type**All framed lifts** of a child-framed surjection (surjectivity NOT imposed; the Frattini argument recovers it per use-site).pQ2Presentation.Induction.FramedPair.fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor.KsubQ2Presentation.Induction.KernelMinimal.Ksub {p : Q2Presentation.Induction.FramedPair} {chief : Q2Presentation.Induction.NonScalarChiefFactor p} (self : Q2Presentation.Induction.KernelMinimal chief) : Subgroup p.fst.Y⋯ ⋯ Q2Presentation.boundaryPackage_GammaAQ2Presentation.boundaryPackage_GammaA : Q2Presentation.BoundaryPackage Q2Presentation.GammaA**The candidate boundary package** (manuscript Prop 3.14, `prop:compatiblemarking`; plan Turn 4 §6). The Stage-C data of `Γ_A`: the common tame quotient `gammaTameMap`, the maximal pro-`2` quotient `p : Γ_A ⟶ Π`, and the common unramified character `ν = gammaTameMap ≫ ν_t`, through which both factor.pQ2Presentation.Induction.FramedPair.sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GammaA (Q2Presentation.TorsorProgram.quotientFramedTarget p.fst K.Ksub ⋯ ⋯) (Q2Presentation.TorsorProgram.quotientFrame p.fst K.Ksub ⋯ ⋯ p.snd)), Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number. If `α` is infinite, `Nat.card α = 0`.(Q2Presentation.TorsorProgram.Z1Q2Presentation.TorsorProgram.Z1 (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y) [hNn : N.Normal] (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (F : Q2Presentation.BoundaryFrame Yt) (g : Q2Presentation.boundaryFramedSurj B (Q2Presentation.TorsorProgram.quotientFramedTarget Yt N hNLY hNθ) (Q2Presentation.TorsorProgram.quotientFrame Yt N hNLY hNθ F)) (f₀ : Q2Presentation.TorsorProgram.liftHom Yt N hNLY hNθ B F g) : Type**The twisted cocycle set** relative to a base lift.pQ2Presentation.Induction.FramedPair.fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor.KsubQ2Presentation.Induction.KernelMinimal.Ksub {p : Q2Presentation.Induction.FramedPair} {chief : Q2Presentation.Induction.NonScalarChiefFactor p} (self : Q2Presentation.Induction.KernelMinimal chief) : Subgroup p.fst.Y⋯ ⋯ Q2Presentation.boundaryPackage_GammaAQ2Presentation.boundaryPackage_GammaA : Q2Presentation.BoundaryPackage Q2Presentation.GammaA**The candidate boundary package** (manuscript Prop 3.14, `prop:compatiblemarking`; plan Turn 4 §6). The Stage-C data of `Γ_A`: the common tame quotient `gammaTameMap`, the maximal pro-`2` quotient `p : Γ_A ⟶ Π`, and the common unramified character `ν = gammaTameMap ≫ ν_t`, through which both factor.pQ2Presentation.Induction.FramedPair.sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GammaA (Q2Presentation.TorsorProgram.quotientFramedTarget p.fst K.Ksub ⋯ ⋯) (Q2Presentation.TorsorProgram.quotientFrame p.fst K.Ksub ⋯ ⋯ p.snd)f₀Q2Presentation.TorsorProgram.liftHom p.fst K.Ksub ⋯ ⋯ Q2Presentation.boundaryPackage_GammaA p.snd g) =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`. We use `a = b` as notation for `Eq a b`. A fundamental property of equality is that it is an equivalence relation. ``` variable (α : Type) (a b c d : α) variable (hab : a = b) (hcb : c = b) (hcd : c = d) example : a = d := Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd ``` Equality is much more than an equivalence relation, however. It has the important property that every assertion respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value. That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`. Example: ``` example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := Eq.subst h1 h2 example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := h1 ▸ h2 ``` The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`. For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality) Conventions for notations in identifiers: * The recommended spelling of `=` in identifiers is `eq`.2 ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `^` in identifiers is `pow`.(HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.2 *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.Q2Presentation.Induction.sec7MStageDimQ2Presentation.Induction.sec7MStageDim {p : Q2Presentation.Induction.FramedPair} {chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p} (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : ℕThe actual elementary-layer dimension used by the `R = 1` M-stage. In the manuscript notation this is `dim_{𝔽₂} M`, with `M = K/Φ(K)`. The current concrete Section 7 tower realizes this as `towerM K`; when `R = Φ(K) = 1`, this is the elementary layer lifted in `eq:Mstage`.KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.) ∧And (a b : Prop) : Prop`And a b`, or `a ∧ b`, is the conjunction of propositions. It can be constructed and destructed like a pair: if `ha : a` and `hb : b` then `⟨ha, hb⟩ : a ∧ b`, and if `h : a ∧ b` then `h.left : a` and `h.right : b`. Conventions for notations in identifiers: * The recommended spelling of `∧` in identifiers is `and`. * The recommended spelling of `/\` in identifiers is `and` (prefer `∧` over `/\`).(∀ (gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GQ2 (Q2Presentation.Induction.MStage.mstageLower chief K).fst (Q2Presentation.Induction.MStage.mstageLower chief K).snd: Q2Presentation.boundaryFramedSurjQ2Presentation.boundaryFramedSurj {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (Yt : Q2Presentation.BoundaryFramedTarget) (F : Q2Presentation.BoundaryFrame Yt) : TypeThe **boundary-framed surjections** `e_Γ^β(𝒴)` (manuscript `eq:eGamma`): the continuous surjections `f : Γ ↠ Y` whose induced map to `H × E` is the prescribed `β ∘ b_Γ`, i.e. `q_Y ∘ f = β ∘ b_Γ`. This is the subtype counted in Theorem 4.2; its cardinality is `e_Γ^β(𝒴)`.Q2Presentation.boundaryPackage_GQ2Q2Presentation.boundaryPackage_GQ2 : Q2Presentation.BoundaryPackage Q2Presentation.GQ2Profinite**The local boundary package** `boundaryPackage_GQ2 : BoundaryPackage G_{ℚ₂}` (manuscript Prop 3.14 `prop:compatiblemarking` for `Γ = G_{ℚ₂}`; plan Turn 4 §6), the `G_{ℚ₂}`-side instance of the uniform Stage-C boundary datum. * `tameMap`/`tame_surj`/`tame_nu` — the local tame quotient `G_{ℚ₂} ↠ T_A` with unramified marking `ν_loc`, from the axiom `gq2_tame_quotient` (Prop 3.2 + the local half of Prop `compatiblemarking`); * `pro2Map`/`pro2_surj`/`pro2_nu` — the local maximal pro-`2` quotient `G_{ℚ₂} ↠ Π` with the *same* unramified marking `ν_loc`, proved from the fully marked Labute comparison `labute_GQ2_maxPro2_marked` (`pro2Map_loc`, `pro2Map_loc_surjective`, `pro2Map_loc_nu`); * `nu := ν_loc` — the common unramified character through which both factor.(Q2Presentation.Induction.MStage.mstageLowerQ2Presentation.Induction.MStage.mstageLower {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPairThe lower child in transparent form (instance-friendly).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.(Q2Presentation.Induction.MStage.mstageLowerQ2Presentation.Induction.MStage.mstageLower {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPairThe lower child in transparent form (instance-friendly).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.), NonemptyNonempty.{u} (α : Sort u) : Prop`Nonempty α` is a typeclass that says that `α` is not an empty type, that is, there exists an element in the type. It differs from `Inhabited α` in that `Nonempty α` is a `Prop`, which means that it does not actually carry an element of `α`, only a proof that *there exists* such an element. Given `Nonempty α`, you can construct an element of `α` *nonconstructively* using `Classical.choice`.(Q2Presentation.TorsorProgram.liftHomQ2Presentation.TorsorProgram.liftHom (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y) [hNn : N.Normal] (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (F : Q2Presentation.BoundaryFrame Yt) (g : Q2Presentation.boundaryFramedSurj B (Q2Presentation.TorsorProgram.quotientFramedTarget Yt N hNLY hNθ) (Q2Presentation.TorsorProgram.quotientFrame Yt N hNLY hNθ F)) : Type**All framed lifts** of a child-framed surjection (surjectivity NOT imposed; the Frattini argument recovers it per use-site).pQ2Presentation.Induction.FramedPair.fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor.KsubQ2Presentation.Induction.KernelMinimal.Ksub {p : Q2Presentation.Induction.FramedPair} {chief : Q2Presentation.Induction.NonScalarChiefFactor p} (self : Q2Presentation.Induction.KernelMinimal chief) : Subgroup p.fst.Y⋯ ⋯ Q2Presentation.boundaryPackage_GQ2Q2Presentation.boundaryPackage_GQ2 : Q2Presentation.BoundaryPackage Q2Presentation.GQ2Profinite**The local boundary package** `boundaryPackage_GQ2 : BoundaryPackage G_{ℚ₂}` (manuscript Prop 3.14 `prop:compatiblemarking` for `Γ = G_{ℚ₂}`; plan Turn 4 §6), the `G_{ℚ₂}`-side instance of the uniform Stage-C boundary datum. * `tameMap`/`tame_surj`/`tame_nu` — the local tame quotient `G_{ℚ₂} ↠ T_A` with unramified marking `ν_loc`, from the axiom `gq2_tame_quotient` (Prop 3.2 + the local half of Prop `compatiblemarking`); * `pro2Map`/`pro2_surj`/`pro2_nu` — the local maximal pro-`2` quotient `G_{ℚ₂} ↠ Π` with the *same* unramified marking `ν_loc`, proved from the fully marked Labute comparison `labute_GQ2_maxPro2_marked` (`pro2Map_loc`, `pro2Map_loc_surjective`, `pro2Map_loc_nu`); * `nu := ν_loc` — the common unramified character through which both factor.pQ2Presentation.Induction.FramedPair.sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GQ2 (Q2Presentation.Induction.MStage.mstageLower chief K).fst (Q2Presentation.Induction.MStage.mstageLower chief K).snd)) ∧And (a b : Prop) : Prop`And a b`, or `a ∧ b`, is the conjunction of propositions. It can be constructed and destructed like a pair: if `ha : a` and `hb : b` then `⟨ha, hb⟩ : a ∧ b`, and if `h : a ∧ b` then `h.left : a` and `h.right : b`. Conventions for notations in identifiers: * The recommended spelling of `∧` in identifiers is `and`. * The recommended spelling of `/\` in identifiers is `and` (prefer `∧` over `/\`).∀ (gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GQ2 (Q2Presentation.TorsorProgram.quotientFramedTarget p.fst K.Ksub ⋯ ⋯) (Q2Presentation.TorsorProgram.quotientFrame p.fst K.Ksub ⋯ ⋯ p.snd): Q2Presentation.boundaryFramedSurjQ2Presentation.boundaryFramedSurj {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (Yt : Q2Presentation.BoundaryFramedTarget) (F : Q2Presentation.BoundaryFrame Yt) : TypeThe **boundary-framed surjections** `e_Γ^β(𝒴)` (manuscript `eq:eGamma`): the continuous surjections `f : Γ ↠ Y` whose induced map to `H × E` is the prescribed `β ∘ b_Γ`, i.e. `q_Y ∘ f = β ∘ b_Γ`. This is the subtype counted in Theorem 4.2; its cardinality is `e_Γ^β(𝒴)`.Q2Presentation.boundaryPackage_GQ2Q2Presentation.boundaryPackage_GQ2 : Q2Presentation.BoundaryPackage Q2Presentation.GQ2Profinite**The local boundary package** `boundaryPackage_GQ2 : BoundaryPackage G_{ℚ₂}` (manuscript Prop 3.14 `prop:compatiblemarking` for `Γ = G_{ℚ₂}`; plan Turn 4 §6), the `G_{ℚ₂}`-side instance of the uniform Stage-C boundary datum. * `tameMap`/`tame_surj`/`tame_nu` — the local tame quotient `G_{ℚ₂} ↠ T_A` with unramified marking `ν_loc`, from the axiom `gq2_tame_quotient` (Prop 3.2 + the local half of Prop `compatiblemarking`); * `pro2Map`/`pro2_surj`/`pro2_nu` — the local maximal pro-`2` quotient `G_{ℚ₂} ↠ Π` with the *same* unramified marking `ν_loc`, proved from the fully marked Labute comparison `labute_GQ2_maxPro2_marked` (`pro2Map_loc`, `pro2Map_loc_surjective`, `pro2Map_loc_nu`); * `nu := ν_loc` — the common unramified character through which both factor.(Q2Presentation.TorsorProgram.quotientFramedTargetQ2Presentation.TorsorProgram.quotientFramedTarget (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y) [hNn : N.Normal] (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) : Q2Presentation.BoundaryFramedTarget**The quotient framed target** `Y/N` (same `H`, same `E`, image wild kernel).pQ2Presentation.Induction.FramedPair.fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor.KsubQ2Presentation.Induction.KernelMinimal.Ksub {p : Q2Presentation.Induction.FramedPair} {chief : Q2Presentation.Induction.NonScalarChiefFactor p} (self : Q2Presentation.Induction.KernelMinimal chief) : Subgroup p.fst.Y⋯ ⋯) (Q2Presentation.TorsorProgram.quotientFrameQ2Presentation.TorsorProgram.quotientFrame (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y) [hNn : N.Normal] (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) (F : Q2Presentation.BoundaryFrame Yt) : Q2Presentation.BoundaryFrame (Q2Presentation.TorsorProgram.quotientFramedTarget Yt N hNLY hNθ)The frame transports verbatim (`H`, `E`, `α`, `ψ`, `β` unchanged).pQ2Presentation.Induction.FramedPair.fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor.KsubQ2Presentation.Induction.KernelMinimal.Ksub {p : Q2Presentation.Induction.FramedPair} {chief : Q2Presentation.Induction.NonScalarChiefFactor p} (self : Q2Presentation.Induction.KernelMinimal chief) : Subgroup p.fst.Y⋯ ⋯ pQ2Presentation.Induction.FramedPair.sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.)) (f₀Q2Presentation.TorsorProgram.liftHom p.fst K.Ksub ⋯ ⋯ Q2Presentation.boundaryPackage_GQ2 p.snd g: Q2Presentation.TorsorProgram.liftHomQ2Presentation.TorsorProgram.liftHom (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y) [hNn : N.Normal] (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (F : Q2Presentation.BoundaryFrame Yt) (g : Q2Presentation.boundaryFramedSurj B (Q2Presentation.TorsorProgram.quotientFramedTarget Yt N hNLY hNθ) (Q2Presentation.TorsorProgram.quotientFrame Yt N hNLY hNθ F)) : Type**All framed lifts** of a child-framed surjection (surjectivity NOT imposed; the Frattini argument recovers it per use-site).pQ2Presentation.Induction.FramedPair.fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor.KsubQ2Presentation.Induction.KernelMinimal.Ksub {p : Q2Presentation.Induction.FramedPair} {chief : Q2Presentation.Induction.NonScalarChiefFactor p} (self : Q2Presentation.Induction.KernelMinimal chief) : Subgroup p.fst.Y⋯ ⋯ Q2Presentation.boundaryPackage_GQ2Q2Presentation.boundaryPackage_GQ2 : Q2Presentation.BoundaryPackage Q2Presentation.GQ2Profinite**The local boundary package** `boundaryPackage_GQ2 : BoundaryPackage G_{ℚ₂}` (manuscript Prop 3.14 `prop:compatiblemarking` for `Γ = G_{ℚ₂}`; plan Turn 4 §6), the `G_{ℚ₂}`-side instance of the uniform Stage-C boundary datum. * `tameMap`/`tame_surj`/`tame_nu` — the local tame quotient `G_{ℚ₂} ↠ T_A` with unramified marking `ν_loc`, from the axiom `gq2_tame_quotient` (Prop 3.2 + the local half of Prop `compatiblemarking`); * `pro2Map`/`pro2_surj`/`pro2_nu` — the local maximal pro-`2` quotient `G_{ℚ₂} ↠ Π` with the *same* unramified marking `ν_loc`, proved from the fully marked Labute comparison `labute_GQ2_maxPro2_marked` (`pro2Map_loc`, `pro2Map_loc_surjective`, `pro2Map_loc_nu`); * `nu := ν_loc` — the common unramified character through which both factor.pQ2Presentation.Induction.FramedPair.sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GQ2 (Q2Presentation.TorsorProgram.quotientFramedTarget p.fst K.Ksub ⋯ ⋯) (Q2Presentation.TorsorProgram.quotientFrame p.fst K.Ksub ⋯ ⋯ p.snd)), Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number. If `α` is infinite, `Nat.card α = 0`.(Q2Presentation.TorsorProgram.Z1Q2Presentation.TorsorProgram.Z1 (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y) [hNn : N.Normal] (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (F : Q2Presentation.BoundaryFrame Yt) (g : Q2Presentation.boundaryFramedSurj B (Q2Presentation.TorsorProgram.quotientFramedTarget Yt N hNLY hNθ) (Q2Presentation.TorsorProgram.quotientFrame Yt N hNLY hNθ F)) (f₀ : Q2Presentation.TorsorProgram.liftHom Yt N hNLY hNθ B F g) : Type**The twisted cocycle set** relative to a base lift.pQ2Presentation.Induction.FramedPair.fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor.KsubQ2Presentation.Induction.KernelMinimal.Ksub {p : Q2Presentation.Induction.FramedPair} {chief : Q2Presentation.Induction.NonScalarChiefFactor p} (self : Q2Presentation.Induction.KernelMinimal chief) : Subgroup p.fst.Y⋯ ⋯ Q2Presentation.boundaryPackage_GQ2Q2Presentation.boundaryPackage_GQ2 : Q2Presentation.BoundaryPackage Q2Presentation.GQ2Profinite**The local boundary package** `boundaryPackage_GQ2 : BoundaryPackage G_{ℚ₂}` (manuscript Prop 3.14 `prop:compatiblemarking` for `Γ = G_{ℚ₂}`; plan Turn 4 §6), the `G_{ℚ₂}`-side instance of the uniform Stage-C boundary datum. * `tameMap`/`tame_surj`/`tame_nu` — the local tame quotient `G_{ℚ₂} ↠ T_A` with unramified marking `ν_loc`, from the axiom `gq2_tame_quotient` (Prop 3.2 + the local half of Prop `compatiblemarking`); * `pro2Map`/`pro2_surj`/`pro2_nu` — the local maximal pro-`2` quotient `G_{ℚ₂} ↠ Π` with the *same* unramified marking `ν_loc`, proved from the fully marked Labute comparison `labute_GQ2_maxPro2_marked` (`pro2Map_loc`, `pro2Map_loc_surjective`, `pro2Map_loc_nu`); * `nu := ν_loc` — the common unramified character through which both factor.pQ2Presentation.Induction.FramedPair.sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GQ2 (Q2Presentation.TorsorProgram.quotientFramedTarget p.fst K.Ksub ⋯ ⋯) (Q2Presentation.TorsorProgram.quotientFrame p.fst K.Ksub ⋯ ⋯ p.snd)f₀Q2Presentation.TorsorProgram.liftHom p.fst K.Ksub ⋯ ⋯ Q2Presentation.boundaryPackage_GQ2 p.snd g) =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`. We use `a = b` as notation for `Eq a b`. A fundamental property of equality is that it is an equivalence relation. ``` variable (α : Type) (a b c d : α) variable (hab : a = b) (hcb : c = b) (hcd : c = d) example : a = d := Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd ``` Equality is much more than an equivalence relation, however. It has the important property that every assertion respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value. That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`. Example: ``` example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := Eq.subst h1 h2 example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := h1 ▸ h2 ``` The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`. For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality) Conventions for notations in identifiers: * The recommended spelling of `=` in identifiers is `eq`.2 ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `^` in identifiers is `pow`.(HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.2 *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.Q2Presentation.Induction.sec7MStageDimQ2Presentation.Induction.sec7MStageDim {p : Q2Presentation.Induction.FramedPair} {chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p} (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : ℕThe actual elementary-layer dimension used by the `R = 1` M-stage. In the manuscript notation this is `dim_{𝔽₂} M`, with `M = K/Φ(K)`. The current concrete Section 7 tower realizes this as `towerM K`; when `R = Φ(K) = 1`, this is the elementary layer lifted in `eq:Mstage`.KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.**The `M`-layer cochain keep** (`lem:elementarystage`, manuscript l.4170-4204): per source, every lower-child framed surjection admits a framed lift (`H²_{Γ,ρ}(M) = 0`) and the twisted cocycle set has the canonical size `|Z¹_{Γ,ρ}(M)| = 2^{2·dim M}`. Canonical-provenance existence-form. -
theoremdefined in Q2Presentation/Induction/RadicalEdgeCount.leancomplete
theorem Q2Presentation.Induction.mChild_liftHom_nonempty_gq2 {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) (gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GQ2 (Q2Presentation.TorsorProgram.quotientFramedTarget (Q2Presentation.Induction.XRZero.xrChild chief K).fst (Q2Presentation.Induction.mChildKernel chief K).N ⋯ ⋯) (Q2Presentation.TorsorProgram.quotientFrame (Q2Presentation.Induction.XRZero.xrChild chief K).fst (Q2Presentation.Induction.mChildKernel chief K).N ⋯ ⋯ (Q2Presentation.Induction.XRZero.xrChild chief K).snd): Q2Presentation.boundaryFramedSurjQ2Presentation.boundaryFramedSurj {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (Yt : Q2Presentation.BoundaryFramedTarget) (F : Q2Presentation.BoundaryFrame Yt) : TypeThe **boundary-framed surjections** `e_Γ^β(𝒴)` (manuscript `eq:eGamma`): the continuous surjections `f : Γ ↠ Y` whose induced map to `H × E` is the prescribed `β ∘ b_Γ`, i.e. `q_Y ∘ f = β ∘ b_Γ`. This is the subtype counted in Theorem 4.2; its cardinality is `e_Γ^β(𝒴)`.Q2Presentation.boundaryPackage_GQ2Q2Presentation.boundaryPackage_GQ2 : Q2Presentation.BoundaryPackage Q2Presentation.GQ2Profinite**The local boundary package** `boundaryPackage_GQ2 : BoundaryPackage G_{ℚ₂}` (manuscript Prop 3.14 `prop:compatiblemarking` for `Γ = G_{ℚ₂}`; plan Turn 4 §6), the `G_{ℚ₂}`-side instance of the uniform Stage-C boundary datum. * `tameMap`/`tame_surj`/`tame_nu` — the local tame quotient `G_{ℚ₂} ↠ T_A` with unramified marking `ν_loc`, from the axiom `gq2_tame_quotient` (Prop 3.2 + the local half of Prop `compatiblemarking`); * `pro2Map`/`pro2_surj`/`pro2_nu` — the local maximal pro-`2` quotient `G_{ℚ₂} ↠ Π` with the *same* unramified marking `ν_loc`, proved from the fully marked Labute comparison `labute_GQ2_maxPro2_marked` (`pro2Map_loc`, `pro2Map_loc_surjective`, `pro2Map_loc_nu`); * `nu := ν_loc` — the common unramified character through which both factor.(Q2Presentation.TorsorProgram.quotientFramedTargetQ2Presentation.TorsorProgram.quotientFramedTarget (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y) [hNn : N.Normal] (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) : Q2Presentation.BoundaryFramedTarget**The quotient framed target** `Y/N` (same `H`, same `E`, image wild kernel).(Q2Presentation.Induction.XRZero.xrChildQ2Presentation.Induction.XRZero.xrChild {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPairThe `𝒳_R = 0` child: the quotient framed pair at `N = Φ`-layer.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.(Q2Presentation.Induction.mChildKernelQ2Presentation.Induction.mChildKernel {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Lifting.ElementaryKernel (Q2Presentation.Induction.XRZero.xrChild chief K).fst**The elementary `M`-kernel at the child** `B = Y/Φ(K)` (`lem:simplehead` carrier for `lem:elementarystage`): `N = M' = K/Φ(K)`.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).NQ2Presentation.Lifting.ElementaryKernel.N {Yt : Q2Presentation.BoundaryFramedTarget} (self : Q2Presentation.Lifting.ElementaryKernel Yt) : Subgroup Yt.Y⋯ ⋯) (Q2Presentation.TorsorProgram.quotientFrameQ2Presentation.TorsorProgram.quotientFrame (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y) [hNn : N.Normal] (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) (F : Q2Presentation.BoundaryFrame Yt) : Q2Presentation.BoundaryFrame (Q2Presentation.TorsorProgram.quotientFramedTarget Yt N hNLY hNθ)The frame transports verbatim (`H`, `E`, `α`, `ψ`, `β` unchanged).(Q2Presentation.Induction.XRZero.xrChildQ2Presentation.Induction.XRZero.xrChild {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPairThe `𝒳_R = 0` child: the quotient framed pair at `N = Φ`-layer.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.(Q2Presentation.Induction.mChildKernelQ2Presentation.Induction.mChildKernel {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Lifting.ElementaryKernel (Q2Presentation.Induction.XRZero.xrChild chief K).fst**The elementary `M`-kernel at the child** `B = Y/Φ(K)` (`lem:simplehead` carrier for `lem:elementarystage`): `N = M' = K/Φ(K)`.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).NQ2Presentation.Lifting.ElementaryKernel.N {Yt : Q2Presentation.BoundaryFramedTarget} (self : Q2Presentation.Lifting.ElementaryKernel Yt) : Subgroup Yt.Y⋯ ⋯ (Q2Presentation.Induction.XRZero.xrChildQ2Presentation.Induction.XRZero.xrChild {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPairThe `𝒳_R = 0` child: the quotient framed pair at `N = Φ`-layer.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.)) : NonemptyNonempty.{u} (α : Sort u) : Prop`Nonempty α` is a typeclass that says that `α` is not an empty type, that is, there exists an element in the type. It differs from `Inhabited α` in that `Nonempty α` is a `Prop`, which means that it does not actually carry an element of `α`, only a proof that *there exists* such an element. Given `Nonempty α`, you can construct an element of `α` *nonconstructively* using `Classical.choice`.(Q2Presentation.TorsorProgram.liftHomQ2Presentation.TorsorProgram.liftHom (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y) [hNn : N.Normal] (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (F : Q2Presentation.BoundaryFrame Yt) (g : Q2Presentation.boundaryFramedSurj B (Q2Presentation.TorsorProgram.quotientFramedTarget Yt N hNLY hNθ) (Q2Presentation.TorsorProgram.quotientFrame Yt N hNLY hNθ F)) : Type**All framed lifts** of a child-framed surjection (surjectivity NOT imposed; the Frattini argument recovers it per use-site).(Q2Presentation.Induction.XRZero.xrChildQ2Presentation.Induction.XRZero.xrChild {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPairThe `𝒳_R = 0` child: the quotient framed pair at `N = Φ`-layer.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.(Q2Presentation.Induction.mChildKernelQ2Presentation.Induction.mChildKernel {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Lifting.ElementaryKernel (Q2Presentation.Induction.XRZero.xrChild chief K).fst**The elementary `M`-kernel at the child** `B = Y/Φ(K)` (`lem:simplehead` carrier for `lem:elementarystage`): `N = M' = K/Φ(K)`.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).NQ2Presentation.Lifting.ElementaryKernel.N {Yt : Q2Presentation.BoundaryFramedTarget} (self : Q2Presentation.Lifting.ElementaryKernel Yt) : Subgroup Yt.Y⋯ ⋯ Q2Presentation.boundaryPackage_GQ2Q2Presentation.boundaryPackage_GQ2 : Q2Presentation.BoundaryPackage Q2Presentation.GQ2Profinite**The local boundary package** `boundaryPackage_GQ2 : BoundaryPackage G_{ℚ₂}` (manuscript Prop 3.14 `prop:compatiblemarking` for `Γ = G_{ℚ₂}`; plan Turn 4 §6), the `G_{ℚ₂}`-side instance of the uniform Stage-C boundary datum. * `tameMap`/`tame_surj`/`tame_nu` — the local tame quotient `G_{ℚ₂} ↠ T_A` with unramified marking `ν_loc`, from the axiom `gq2_tame_quotient` (Prop 3.2 + the local half of Prop `compatiblemarking`); * `pro2Map`/`pro2_surj`/`pro2_nu` — the local maximal pro-`2` quotient `G_{ℚ₂} ↠ Π` with the *same* unramified marking `ν_loc`, proved from the fully marked Labute comparison `labute_GQ2_maxPro2_marked` (`pro2Map_loc`, `pro2Map_loc_surjective`, `pro2Map_loc_nu`); * `nu := ν_loc` — the common unramified character through which both factor.(Q2Presentation.Induction.XRZero.xrChildQ2Presentation.Induction.XRZero.xrChild {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPairThe `𝒳_R = 0` child: the quotient framed pair at `N = Φ`-layer.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GQ2 (Q2Presentation.TorsorProgram.quotientFramedTarget (Q2Presentation.Induction.XRZero.xrChild chief K).fst (Q2Presentation.Induction.mChildKernel chief K).N ⋯ ⋯) (Q2Presentation.TorsorProgram.quotientFrame (Q2Presentation.Induction.XRZero.xrChild chief K).fst (Q2Presentation.Induction.mChildKernel chief K).N ⋯ ⋯ (Q2Presentation.Induction.XRZero.xrChild chief K).snd))theorem Q2Presentation.Induction.mChild_liftHom_nonempty_gq2 {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) (gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GQ2 (Q2Presentation.TorsorProgram.quotientFramedTarget (Q2Presentation.Induction.XRZero.xrChild chief K).fst (Q2Presentation.Induction.mChildKernel chief K).N ⋯ ⋯) (Q2Presentation.TorsorProgram.quotientFrame (Q2Presentation.Induction.XRZero.xrChild chief K).fst (Q2Presentation.Induction.mChildKernel chief K).N ⋯ ⋯ (Q2Presentation.Induction.XRZero.xrChild chief K).snd): Q2Presentation.boundaryFramedSurjQ2Presentation.boundaryFramedSurj {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (Yt : Q2Presentation.BoundaryFramedTarget) (F : Q2Presentation.BoundaryFrame Yt) : TypeThe **boundary-framed surjections** `e_Γ^β(𝒴)` (manuscript `eq:eGamma`): the continuous surjections `f : Γ ↠ Y` whose induced map to `H × E` is the prescribed `β ∘ b_Γ`, i.e. `q_Y ∘ f = β ∘ b_Γ`. This is the subtype counted in Theorem 4.2; its cardinality is `e_Γ^β(𝒴)`.Q2Presentation.boundaryPackage_GQ2Q2Presentation.boundaryPackage_GQ2 : Q2Presentation.BoundaryPackage Q2Presentation.GQ2Profinite**The local boundary package** `boundaryPackage_GQ2 : BoundaryPackage G_{ℚ₂}` (manuscript Prop 3.14 `prop:compatiblemarking` for `Γ = G_{ℚ₂}`; plan Turn 4 §6), the `G_{ℚ₂}`-side instance of the uniform Stage-C boundary datum. * `tameMap`/`tame_surj`/`tame_nu` — the local tame quotient `G_{ℚ₂} ↠ T_A` with unramified marking `ν_loc`, from the axiom `gq2_tame_quotient` (Prop 3.2 + the local half of Prop `compatiblemarking`); * `pro2Map`/`pro2_surj`/`pro2_nu` — the local maximal pro-`2` quotient `G_{ℚ₂} ↠ Π` with the *same* unramified marking `ν_loc`, proved from the fully marked Labute comparison `labute_GQ2_maxPro2_marked` (`pro2Map_loc`, `pro2Map_loc_surjective`, `pro2Map_loc_nu`); * `nu := ν_loc` — the common unramified character through which both factor.(Q2Presentation.TorsorProgram.quotientFramedTargetQ2Presentation.TorsorProgram.quotientFramedTarget (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y) [hNn : N.Normal] (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) : Q2Presentation.BoundaryFramedTarget**The quotient framed target** `Y/N` (same `H`, same `E`, image wild kernel).(Q2Presentation.Induction.XRZero.xrChildQ2Presentation.Induction.XRZero.xrChild {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPairThe `𝒳_R = 0` child: the quotient framed pair at `N = Φ`-layer.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.(Q2Presentation.Induction.mChildKernelQ2Presentation.Induction.mChildKernel {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Lifting.ElementaryKernel (Q2Presentation.Induction.XRZero.xrChild chief K).fst**The elementary `M`-kernel at the child** `B = Y/Φ(K)` (`lem:simplehead` carrier for `lem:elementarystage`): `N = M' = K/Φ(K)`.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).NQ2Presentation.Lifting.ElementaryKernel.N {Yt : Q2Presentation.BoundaryFramedTarget} (self : Q2Presentation.Lifting.ElementaryKernel Yt) : Subgroup Yt.Y⋯ ⋯) (Q2Presentation.TorsorProgram.quotientFrameQ2Presentation.TorsorProgram.quotientFrame (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y) [hNn : N.Normal] (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) (F : Q2Presentation.BoundaryFrame Yt) : Q2Presentation.BoundaryFrame (Q2Presentation.TorsorProgram.quotientFramedTarget Yt N hNLY hNθ)The frame transports verbatim (`H`, `E`, `α`, `ψ`, `β` unchanged).(Q2Presentation.Induction.XRZero.xrChildQ2Presentation.Induction.XRZero.xrChild {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPairThe `𝒳_R = 0` child: the quotient framed pair at `N = Φ`-layer.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.(Q2Presentation.Induction.mChildKernelQ2Presentation.Induction.mChildKernel {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Lifting.ElementaryKernel (Q2Presentation.Induction.XRZero.xrChild chief K).fst**The elementary `M`-kernel at the child** `B = Y/Φ(K)` (`lem:simplehead` carrier for `lem:elementarystage`): `N = M' = K/Φ(K)`.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).NQ2Presentation.Lifting.ElementaryKernel.N {Yt : Q2Presentation.BoundaryFramedTarget} (self : Q2Presentation.Lifting.ElementaryKernel Yt) : Subgroup Yt.Y⋯ ⋯ (Q2Presentation.Induction.XRZero.xrChildQ2Presentation.Induction.XRZero.xrChild {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPairThe `𝒳_R = 0` child: the quotient framed pair at `N = Φ`-layer.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.)) : NonemptyNonempty.{u} (α : Sort u) : Prop`Nonempty α` is a typeclass that says that `α` is not an empty type, that is, there exists an element in the type. It differs from `Inhabited α` in that `Nonempty α` is a `Prop`, which means that it does not actually carry an element of `α`, only a proof that *there exists* such an element. Given `Nonempty α`, you can construct an element of `α` *nonconstructively* using `Classical.choice`.(Q2Presentation.TorsorProgram.liftHomQ2Presentation.TorsorProgram.liftHom (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y) [hNn : N.Normal] (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (F : Q2Presentation.BoundaryFrame Yt) (g : Q2Presentation.boundaryFramedSurj B (Q2Presentation.TorsorProgram.quotientFramedTarget Yt N hNLY hNθ) (Q2Presentation.TorsorProgram.quotientFrame Yt N hNLY hNθ F)) : Type**All framed lifts** of a child-framed surjection (surjectivity NOT imposed; the Frattini argument recovers it per use-site).(Q2Presentation.Induction.XRZero.xrChildQ2Presentation.Induction.XRZero.xrChild {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPairThe `𝒳_R = 0` child: the quotient framed pair at `N = Φ`-layer.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.(Q2Presentation.Induction.mChildKernelQ2Presentation.Induction.mChildKernel {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Lifting.ElementaryKernel (Q2Presentation.Induction.XRZero.xrChild chief K).fst**The elementary `M`-kernel at the child** `B = Y/Φ(K)` (`lem:simplehead` carrier for `lem:elementarystage`): `N = M' = K/Φ(K)`.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).NQ2Presentation.Lifting.ElementaryKernel.N {Yt : Q2Presentation.BoundaryFramedTarget} (self : Q2Presentation.Lifting.ElementaryKernel Yt) : Subgroup Yt.Y⋯ ⋯ Q2Presentation.boundaryPackage_GQ2Q2Presentation.boundaryPackage_GQ2 : Q2Presentation.BoundaryPackage Q2Presentation.GQ2Profinite**The local boundary package** `boundaryPackage_GQ2 : BoundaryPackage G_{ℚ₂}` (manuscript Prop 3.14 `prop:compatiblemarking` for `Γ = G_{ℚ₂}`; plan Turn 4 §6), the `G_{ℚ₂}`-side instance of the uniform Stage-C boundary datum. * `tameMap`/`tame_surj`/`tame_nu` — the local tame quotient `G_{ℚ₂} ↠ T_A` with unramified marking `ν_loc`, from the axiom `gq2_tame_quotient` (Prop 3.2 + the local half of Prop `compatiblemarking`); * `pro2Map`/`pro2_surj`/`pro2_nu` — the local maximal pro-`2` quotient `G_{ℚ₂} ↠ Π` with the *same* unramified marking `ν_loc`, proved from the fully marked Labute comparison `labute_GQ2_maxPro2_marked` (`pro2Map_loc`, `pro2Map_loc_surjective`, `pro2Map_loc_nu`); * `nu := ν_loc` — the common unramified character through which both factor.(Q2Presentation.Induction.XRZero.xrChildQ2Presentation.Induction.XRZero.xrChild {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPairThe `𝒳_R = 0` child: the quotient framed pair at `N = Φ`-layer.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GQ2 (Q2Presentation.TorsorProgram.quotientFramedTarget (Q2Presentation.Induction.XRZero.xrChild chief K).fst (Q2Presentation.Induction.mChildKernel chief K).N ⋯ ⋯) (Q2Presentation.TorsorProgram.quotientFrame (Q2Presentation.Induction.XRZero.xrChild chief K).fst (Q2Presentation.Induction.mChildKernel chief K).N ⋯ ⋯ (Q2Presentation.Induction.XRZero.xrChild chief K).snd))**Local `lem:elementarystage`, existence clause** (THEOREM from the citable `q2_localduality_general` + the proven invariant-dual vanishing): every `G_{ℚ₂}`-framed surjection onto the C-child admits framed `M`-lifts. -
theoremdefined in Q2Presentation/Induction/RadicalEdgeCount.leancomplete
theorem Q2Presentation.Induction.mChild_Z1_card_gq2 {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) (gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GQ2 (Q2Presentation.TorsorProgram.quotientFramedTarget (Q2Presentation.Induction.XRZero.xrChild chief K).fst (Q2Presentation.Induction.mChildKernel chief K).N ⋯ ⋯) (Q2Presentation.TorsorProgram.quotientFrame (Q2Presentation.Induction.XRZero.xrChild chief K).fst (Q2Presentation.Induction.mChildKernel chief K).N ⋯ ⋯ (Q2Presentation.Induction.XRZero.xrChild chief K).snd): Q2Presentation.boundaryFramedSurjQ2Presentation.boundaryFramedSurj {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (Yt : Q2Presentation.BoundaryFramedTarget) (F : Q2Presentation.BoundaryFrame Yt) : TypeThe **boundary-framed surjections** `e_Γ^β(𝒴)` (manuscript `eq:eGamma`): the continuous surjections `f : Γ ↠ Y` whose induced map to `H × E` is the prescribed `β ∘ b_Γ`, i.e. `q_Y ∘ f = β ∘ b_Γ`. This is the subtype counted in Theorem 4.2; its cardinality is `e_Γ^β(𝒴)`.Q2Presentation.boundaryPackage_GQ2Q2Presentation.boundaryPackage_GQ2 : Q2Presentation.BoundaryPackage Q2Presentation.GQ2Profinite**The local boundary package** `boundaryPackage_GQ2 : BoundaryPackage G_{ℚ₂}` (manuscript Prop 3.14 `prop:compatiblemarking` for `Γ = G_{ℚ₂}`; plan Turn 4 §6), the `G_{ℚ₂}`-side instance of the uniform Stage-C boundary datum. * `tameMap`/`tame_surj`/`tame_nu` — the local tame quotient `G_{ℚ₂} ↠ T_A` with unramified marking `ν_loc`, from the axiom `gq2_tame_quotient` (Prop 3.2 + the local half of Prop `compatiblemarking`); * `pro2Map`/`pro2_surj`/`pro2_nu` — the local maximal pro-`2` quotient `G_{ℚ₂} ↠ Π` with the *same* unramified marking `ν_loc`, proved from the fully marked Labute comparison `labute_GQ2_maxPro2_marked` (`pro2Map_loc`, `pro2Map_loc_surjective`, `pro2Map_loc_nu`); * `nu := ν_loc` — the common unramified character through which both factor.(Q2Presentation.TorsorProgram.quotientFramedTargetQ2Presentation.TorsorProgram.quotientFramedTarget (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y) [hNn : N.Normal] (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) : Q2Presentation.BoundaryFramedTarget**The quotient framed target** `Y/N` (same `H`, same `E`, image wild kernel).(Q2Presentation.Induction.XRZero.xrChildQ2Presentation.Induction.XRZero.xrChild {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPairThe `𝒳_R = 0` child: the quotient framed pair at `N = Φ`-layer.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.(Q2Presentation.Induction.mChildKernelQ2Presentation.Induction.mChildKernel {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Lifting.ElementaryKernel (Q2Presentation.Induction.XRZero.xrChild chief K).fst**The elementary `M`-kernel at the child** `B = Y/Φ(K)` (`lem:simplehead` carrier for `lem:elementarystage`): `N = M' = K/Φ(K)`.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).NQ2Presentation.Lifting.ElementaryKernel.N {Yt : Q2Presentation.BoundaryFramedTarget} (self : Q2Presentation.Lifting.ElementaryKernel Yt) : Subgroup Yt.Y⋯ ⋯) (Q2Presentation.TorsorProgram.quotientFrameQ2Presentation.TorsorProgram.quotientFrame (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y) [hNn : N.Normal] (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) (F : Q2Presentation.BoundaryFrame Yt) : Q2Presentation.BoundaryFrame (Q2Presentation.TorsorProgram.quotientFramedTarget Yt N hNLY hNθ)The frame transports verbatim (`H`, `E`, `α`, `ψ`, `β` unchanged).(Q2Presentation.Induction.XRZero.xrChildQ2Presentation.Induction.XRZero.xrChild {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPairThe `𝒳_R = 0` child: the quotient framed pair at `N = Φ`-layer.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.(Q2Presentation.Induction.mChildKernelQ2Presentation.Induction.mChildKernel {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Lifting.ElementaryKernel (Q2Presentation.Induction.XRZero.xrChild chief K).fst**The elementary `M`-kernel at the child** `B = Y/Φ(K)` (`lem:simplehead` carrier for `lem:elementarystage`): `N = M' = K/Φ(K)`.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).NQ2Presentation.Lifting.ElementaryKernel.N {Yt : Q2Presentation.BoundaryFramedTarget} (self : Q2Presentation.Lifting.ElementaryKernel Yt) : Subgroup Yt.Y⋯ ⋯ (Q2Presentation.Induction.XRZero.xrChildQ2Presentation.Induction.XRZero.xrChild {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPairThe `𝒳_R = 0` child: the quotient framed pair at `N = Φ`-layer.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.)) (f₀Q2Presentation.TorsorProgram.liftHom (Q2Presentation.Induction.XRZero.xrChild chief K).fst (Q2Presentation.Induction.mChildKernel chief K).N ⋯ ⋯ Q2Presentation.boundaryPackage_GQ2 (Q2Presentation.Induction.XRZero.xrChild chief K).snd g: Q2Presentation.TorsorProgram.liftHomQ2Presentation.TorsorProgram.liftHom (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y) [hNn : N.Normal] (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (F : Q2Presentation.BoundaryFrame Yt) (g : Q2Presentation.boundaryFramedSurj B (Q2Presentation.TorsorProgram.quotientFramedTarget Yt N hNLY hNθ) (Q2Presentation.TorsorProgram.quotientFrame Yt N hNLY hNθ F)) : Type**All framed lifts** of a child-framed surjection (surjectivity NOT imposed; the Frattini argument recovers it per use-site).(Q2Presentation.Induction.XRZero.xrChildQ2Presentation.Induction.XRZero.xrChild {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPairThe `𝒳_R = 0` child: the quotient framed pair at `N = Φ`-layer.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.(Q2Presentation.Induction.mChildKernelQ2Presentation.Induction.mChildKernel {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Lifting.ElementaryKernel (Q2Presentation.Induction.XRZero.xrChild chief K).fst**The elementary `M`-kernel at the child** `B = Y/Φ(K)` (`lem:simplehead` carrier for `lem:elementarystage`): `N = M' = K/Φ(K)`.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).NQ2Presentation.Lifting.ElementaryKernel.N {Yt : Q2Presentation.BoundaryFramedTarget} (self : Q2Presentation.Lifting.ElementaryKernel Yt) : Subgroup Yt.Y⋯ ⋯ Q2Presentation.boundaryPackage_GQ2Q2Presentation.boundaryPackage_GQ2 : Q2Presentation.BoundaryPackage Q2Presentation.GQ2Profinite**The local boundary package** `boundaryPackage_GQ2 : BoundaryPackage G_{ℚ₂}` (manuscript Prop 3.14 `prop:compatiblemarking` for `Γ = G_{ℚ₂}`; plan Turn 4 §6), the `G_{ℚ₂}`-side instance of the uniform Stage-C boundary datum. * `tameMap`/`tame_surj`/`tame_nu` — the local tame quotient `G_{ℚ₂} ↠ T_A` with unramified marking `ν_loc`, from the axiom `gq2_tame_quotient` (Prop 3.2 + the local half of Prop `compatiblemarking`); * `pro2Map`/`pro2_surj`/`pro2_nu` — the local maximal pro-`2` quotient `G_{ℚ₂} ↠ Π` with the *same* unramified marking `ν_loc`, proved from the fully marked Labute comparison `labute_GQ2_maxPro2_marked` (`pro2Map_loc`, `pro2Map_loc_surjective`, `pro2Map_loc_nu`); * `nu := ν_loc` — the common unramified character through which both factor.(Q2Presentation.Induction.XRZero.xrChildQ2Presentation.Induction.XRZero.xrChild {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPairThe `𝒳_R = 0` child: the quotient framed pair at `N = Φ`-layer.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GQ2 (Q2Presentation.TorsorProgram.quotientFramedTarget (Q2Presentation.Induction.XRZero.xrChild chief K).fst (Q2Presentation.Induction.mChildKernel chief K).N ⋯ ⋯) (Q2Presentation.TorsorProgram.quotientFrame (Q2Presentation.Induction.XRZero.xrChild chief K).fst (Q2Presentation.Induction.mChildKernel chief K).N ⋯ ⋯ (Q2Presentation.Induction.XRZero.xrChild chief K).snd)) : Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number. If `α` is infinite, `Nat.card α = 0`.(Q2Presentation.TorsorProgram.Z1Q2Presentation.TorsorProgram.Z1 (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y) [hNn : N.Normal] (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (F : Q2Presentation.BoundaryFrame Yt) (g : Q2Presentation.boundaryFramedSurj B (Q2Presentation.TorsorProgram.quotientFramedTarget Yt N hNLY hNθ) (Q2Presentation.TorsorProgram.quotientFrame Yt N hNLY hNθ F)) (f₀ : Q2Presentation.TorsorProgram.liftHom Yt N hNLY hNθ B F g) : Type**The twisted cocycle set** relative to a base lift.(Q2Presentation.Induction.XRZero.xrChildQ2Presentation.Induction.XRZero.xrChild {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPairThe `𝒳_R = 0` child: the quotient framed pair at `N = Φ`-layer.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.(Q2Presentation.Induction.mChildKernelQ2Presentation.Induction.mChildKernel {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Lifting.ElementaryKernel (Q2Presentation.Induction.XRZero.xrChild chief K).fst**The elementary `M`-kernel at the child** `B = Y/Φ(K)` (`lem:simplehead` carrier for `lem:elementarystage`): `N = M' = K/Φ(K)`.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).NQ2Presentation.Lifting.ElementaryKernel.N {Yt : Q2Presentation.BoundaryFramedTarget} (self : Q2Presentation.Lifting.ElementaryKernel Yt) : Subgroup Yt.Y⋯ ⋯ Q2Presentation.boundaryPackage_GQ2Q2Presentation.boundaryPackage_GQ2 : Q2Presentation.BoundaryPackage Q2Presentation.GQ2Profinite**The local boundary package** `boundaryPackage_GQ2 : BoundaryPackage G_{ℚ₂}` (manuscript Prop 3.14 `prop:compatiblemarking` for `Γ = G_{ℚ₂}`; plan Turn 4 §6), the `G_{ℚ₂}`-side instance of the uniform Stage-C boundary datum. * `tameMap`/`tame_surj`/`tame_nu` — the local tame quotient `G_{ℚ₂} ↠ T_A` with unramified marking `ν_loc`, from the axiom `gq2_tame_quotient` (Prop 3.2 + the local half of Prop `compatiblemarking`); * `pro2Map`/`pro2_surj`/`pro2_nu` — the local maximal pro-`2` quotient `G_{ℚ₂} ↠ Π` with the *same* unramified marking `ν_loc`, proved from the fully marked Labute comparison `labute_GQ2_maxPro2_marked` (`pro2Map_loc`, `pro2Map_loc_surjective`, `pro2Map_loc_nu`); * `nu := ν_loc` — the common unramified character through which both factor.(Q2Presentation.Induction.XRZero.xrChildQ2Presentation.Induction.XRZero.xrChild {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPairThe `𝒳_R = 0` child: the quotient framed pair at `N = Φ`-layer.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GQ2 (Q2Presentation.TorsorProgram.quotientFramedTarget (Q2Presentation.Induction.XRZero.xrChild chief K).fst (Q2Presentation.Induction.mChildKernel chief K).N ⋯ ⋯) (Q2Presentation.TorsorProgram.quotientFrame (Q2Presentation.Induction.XRZero.xrChild chief K).fst (Q2Presentation.Induction.mChildKernel chief K).N ⋯ ⋯ (Q2Presentation.Induction.XRZero.xrChild chief K).snd)f₀Q2Presentation.TorsorProgram.liftHom (Q2Presentation.Induction.XRZero.xrChild chief K).fst (Q2Presentation.Induction.mChildKernel chief K).N ⋯ ⋯ Q2Presentation.boundaryPackage_GQ2 (Q2Presentation.Induction.XRZero.xrChild chief K).snd g) =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`. We use `a = b` as notation for `Eq a b`. A fundamental property of equality is that it is an equivalence relation. ``` variable (α : Type) (a b c d : α) variable (hab : a = b) (hcb : c = b) (hcd : c = d) example : a = d := Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd ``` Equality is much more than an equivalence relation, however. It has the important property that every assertion respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value. That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`. Example: ``` example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := Eq.subst h1 h2 example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := h1 ▸ h2 ``` The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`. For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality) Conventions for notations in identifiers: * The recommended spelling of `=` in identifiers is `eq`.2 ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `^` in identifiers is `pow`.(HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.2 *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.Q2Presentation.Induction.dimMQ2Presentation.Induction.dimM {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : ℕ`dim M` (the `2^{2·dimM}` of `lem:elementarystage`).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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`.theorem Q2Presentation.Induction.mChild_Z1_card_gq2 {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) (gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GQ2 (Q2Presentation.TorsorProgram.quotientFramedTarget (Q2Presentation.Induction.XRZero.xrChild chief K).fst (Q2Presentation.Induction.mChildKernel chief K).N ⋯ ⋯) (Q2Presentation.TorsorProgram.quotientFrame (Q2Presentation.Induction.XRZero.xrChild chief K).fst (Q2Presentation.Induction.mChildKernel chief K).N ⋯ ⋯ (Q2Presentation.Induction.XRZero.xrChild chief K).snd): Q2Presentation.boundaryFramedSurjQ2Presentation.boundaryFramedSurj {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (Yt : Q2Presentation.BoundaryFramedTarget) (F : Q2Presentation.BoundaryFrame Yt) : TypeThe **boundary-framed surjections** `e_Γ^β(𝒴)` (manuscript `eq:eGamma`): the continuous surjections `f : Γ ↠ Y` whose induced map to `H × E` is the prescribed `β ∘ b_Γ`, i.e. `q_Y ∘ f = β ∘ b_Γ`. This is the subtype counted in Theorem 4.2; its cardinality is `e_Γ^β(𝒴)`.Q2Presentation.boundaryPackage_GQ2Q2Presentation.boundaryPackage_GQ2 : Q2Presentation.BoundaryPackage Q2Presentation.GQ2Profinite**The local boundary package** `boundaryPackage_GQ2 : BoundaryPackage G_{ℚ₂}` (manuscript Prop 3.14 `prop:compatiblemarking` for `Γ = G_{ℚ₂}`; plan Turn 4 §6), the `G_{ℚ₂}`-side instance of the uniform Stage-C boundary datum. * `tameMap`/`tame_surj`/`tame_nu` — the local tame quotient `G_{ℚ₂} ↠ T_A` with unramified marking `ν_loc`, from the axiom `gq2_tame_quotient` (Prop 3.2 + the local half of Prop `compatiblemarking`); * `pro2Map`/`pro2_surj`/`pro2_nu` — the local maximal pro-`2` quotient `G_{ℚ₂} ↠ Π` with the *same* unramified marking `ν_loc`, proved from the fully marked Labute comparison `labute_GQ2_maxPro2_marked` (`pro2Map_loc`, `pro2Map_loc_surjective`, `pro2Map_loc_nu`); * `nu := ν_loc` — the common unramified character through which both factor.(Q2Presentation.TorsorProgram.quotientFramedTargetQ2Presentation.TorsorProgram.quotientFramedTarget (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y) [hNn : N.Normal] (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) : Q2Presentation.BoundaryFramedTarget**The quotient framed target** `Y/N` (same `H`, same `E`, image wild kernel).(Q2Presentation.Induction.XRZero.xrChildQ2Presentation.Induction.XRZero.xrChild {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPairThe `𝒳_R = 0` child: the quotient framed pair at `N = Φ`-layer.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.(Q2Presentation.Induction.mChildKernelQ2Presentation.Induction.mChildKernel {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Lifting.ElementaryKernel (Q2Presentation.Induction.XRZero.xrChild chief K).fst**The elementary `M`-kernel at the child** `B = Y/Φ(K)` (`lem:simplehead` carrier for `lem:elementarystage`): `N = M' = K/Φ(K)`.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).NQ2Presentation.Lifting.ElementaryKernel.N {Yt : Q2Presentation.BoundaryFramedTarget} (self : Q2Presentation.Lifting.ElementaryKernel Yt) : Subgroup Yt.Y⋯ ⋯) (Q2Presentation.TorsorProgram.quotientFrameQ2Presentation.TorsorProgram.quotientFrame (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y) [hNn : N.Normal] (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) (F : Q2Presentation.BoundaryFrame Yt) : Q2Presentation.BoundaryFrame (Q2Presentation.TorsorProgram.quotientFramedTarget Yt N hNLY hNθ)The frame transports verbatim (`H`, `E`, `α`, `ψ`, `β` unchanged).(Q2Presentation.Induction.XRZero.xrChildQ2Presentation.Induction.XRZero.xrChild {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPairThe `𝒳_R = 0` child: the quotient framed pair at `N = Φ`-layer.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.(Q2Presentation.Induction.mChildKernelQ2Presentation.Induction.mChildKernel {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Lifting.ElementaryKernel (Q2Presentation.Induction.XRZero.xrChild chief K).fst**The elementary `M`-kernel at the child** `B = Y/Φ(K)` (`lem:simplehead` carrier for `lem:elementarystage`): `N = M' = K/Φ(K)`.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).NQ2Presentation.Lifting.ElementaryKernel.N {Yt : Q2Presentation.BoundaryFramedTarget} (self : Q2Presentation.Lifting.ElementaryKernel Yt) : Subgroup Yt.Y⋯ ⋯ (Q2Presentation.Induction.XRZero.xrChildQ2Presentation.Induction.XRZero.xrChild {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPairThe `𝒳_R = 0` child: the quotient framed pair at `N = Φ`-layer.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.)) (f₀Q2Presentation.TorsorProgram.liftHom (Q2Presentation.Induction.XRZero.xrChild chief K).fst (Q2Presentation.Induction.mChildKernel chief K).N ⋯ ⋯ Q2Presentation.boundaryPackage_GQ2 (Q2Presentation.Induction.XRZero.xrChild chief K).snd g: Q2Presentation.TorsorProgram.liftHomQ2Presentation.TorsorProgram.liftHom (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y) [hNn : N.Normal] (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (F : Q2Presentation.BoundaryFrame Yt) (g : Q2Presentation.boundaryFramedSurj B (Q2Presentation.TorsorProgram.quotientFramedTarget Yt N hNLY hNθ) (Q2Presentation.TorsorProgram.quotientFrame Yt N hNLY hNθ F)) : Type**All framed lifts** of a child-framed surjection (surjectivity NOT imposed; the Frattini argument recovers it per use-site).(Q2Presentation.Induction.XRZero.xrChildQ2Presentation.Induction.XRZero.xrChild {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPairThe `𝒳_R = 0` child: the quotient framed pair at `N = Φ`-layer.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.(Q2Presentation.Induction.mChildKernelQ2Presentation.Induction.mChildKernel {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Lifting.ElementaryKernel (Q2Presentation.Induction.XRZero.xrChild chief K).fst**The elementary `M`-kernel at the child** `B = Y/Φ(K)` (`lem:simplehead` carrier for `lem:elementarystage`): `N = M' = K/Φ(K)`.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).NQ2Presentation.Lifting.ElementaryKernel.N {Yt : Q2Presentation.BoundaryFramedTarget} (self : Q2Presentation.Lifting.ElementaryKernel Yt) : Subgroup Yt.Y⋯ ⋯ Q2Presentation.boundaryPackage_GQ2Q2Presentation.boundaryPackage_GQ2 : Q2Presentation.BoundaryPackage Q2Presentation.GQ2Profinite**The local boundary package** `boundaryPackage_GQ2 : BoundaryPackage G_{ℚ₂}` (manuscript Prop 3.14 `prop:compatiblemarking` for `Γ = G_{ℚ₂}`; plan Turn 4 §6), the `G_{ℚ₂}`-side instance of the uniform Stage-C boundary datum. * `tameMap`/`tame_surj`/`tame_nu` — the local tame quotient `G_{ℚ₂} ↠ T_A` with unramified marking `ν_loc`, from the axiom `gq2_tame_quotient` (Prop 3.2 + the local half of Prop `compatiblemarking`); * `pro2Map`/`pro2_surj`/`pro2_nu` — the local maximal pro-`2` quotient `G_{ℚ₂} ↠ Π` with the *same* unramified marking `ν_loc`, proved from the fully marked Labute comparison `labute_GQ2_maxPro2_marked` (`pro2Map_loc`, `pro2Map_loc_surjective`, `pro2Map_loc_nu`); * `nu := ν_loc` — the common unramified character through which both factor.(Q2Presentation.Induction.XRZero.xrChildQ2Presentation.Induction.XRZero.xrChild {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPairThe `𝒳_R = 0` child: the quotient framed pair at `N = Φ`-layer.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GQ2 (Q2Presentation.TorsorProgram.quotientFramedTarget (Q2Presentation.Induction.XRZero.xrChild chief K).fst (Q2Presentation.Induction.mChildKernel chief K).N ⋯ ⋯) (Q2Presentation.TorsorProgram.quotientFrame (Q2Presentation.Induction.XRZero.xrChild chief K).fst (Q2Presentation.Induction.mChildKernel chief K).N ⋯ ⋯ (Q2Presentation.Induction.XRZero.xrChild chief K).snd)) : Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number. If `α` is infinite, `Nat.card α = 0`.(Q2Presentation.TorsorProgram.Z1Q2Presentation.TorsorProgram.Z1 (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y) [hNn : N.Normal] (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (F : Q2Presentation.BoundaryFrame Yt) (g : Q2Presentation.boundaryFramedSurj B (Q2Presentation.TorsorProgram.quotientFramedTarget Yt N hNLY hNθ) (Q2Presentation.TorsorProgram.quotientFrame Yt N hNLY hNθ F)) (f₀ : Q2Presentation.TorsorProgram.liftHom Yt N hNLY hNθ B F g) : Type**The twisted cocycle set** relative to a base lift.(Q2Presentation.Induction.XRZero.xrChildQ2Presentation.Induction.XRZero.xrChild {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPairThe `𝒳_R = 0` child: the quotient framed pair at `N = Φ`-layer.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.(Q2Presentation.Induction.mChildKernelQ2Presentation.Induction.mChildKernel {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Lifting.ElementaryKernel (Q2Presentation.Induction.XRZero.xrChild chief K).fst**The elementary `M`-kernel at the child** `B = Y/Φ(K)` (`lem:simplehead` carrier for `lem:elementarystage`): `N = M' = K/Φ(K)`.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).NQ2Presentation.Lifting.ElementaryKernel.N {Yt : Q2Presentation.BoundaryFramedTarget} (self : Q2Presentation.Lifting.ElementaryKernel Yt) : Subgroup Yt.Y⋯ ⋯ Q2Presentation.boundaryPackage_GQ2Q2Presentation.boundaryPackage_GQ2 : Q2Presentation.BoundaryPackage Q2Presentation.GQ2Profinite**The local boundary package** `boundaryPackage_GQ2 : BoundaryPackage G_{ℚ₂}` (manuscript Prop 3.14 `prop:compatiblemarking` for `Γ = G_{ℚ₂}`; plan Turn 4 §6), the `G_{ℚ₂}`-side instance of the uniform Stage-C boundary datum. * `tameMap`/`tame_surj`/`tame_nu` — the local tame quotient `G_{ℚ₂} ↠ T_A` with unramified marking `ν_loc`, from the axiom `gq2_tame_quotient` (Prop 3.2 + the local half of Prop `compatiblemarking`); * `pro2Map`/`pro2_surj`/`pro2_nu` — the local maximal pro-`2` quotient `G_{ℚ₂} ↠ Π` with the *same* unramified marking `ν_loc`, proved from the fully marked Labute comparison `labute_GQ2_maxPro2_marked` (`pro2Map_loc`, `pro2Map_loc_surjective`, `pro2Map_loc_nu`); * `nu := ν_loc` — the common unramified character through which both factor.(Q2Presentation.Induction.XRZero.xrChildQ2Presentation.Induction.XRZero.xrChild {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPairThe `𝒳_R = 0` child: the quotient framed pair at `N = Φ`-layer.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GQ2 (Q2Presentation.TorsorProgram.quotientFramedTarget (Q2Presentation.Induction.XRZero.xrChild chief K).fst (Q2Presentation.Induction.mChildKernel chief K).N ⋯ ⋯) (Q2Presentation.TorsorProgram.quotientFrame (Q2Presentation.Induction.XRZero.xrChild chief K).fst (Q2Presentation.Induction.mChildKernel chief K).N ⋯ ⋯ (Q2Presentation.Induction.XRZero.xrChild chief K).snd)f₀Q2Presentation.TorsorProgram.liftHom (Q2Presentation.Induction.XRZero.xrChild chief K).fst (Q2Presentation.Induction.mChildKernel chief K).N ⋯ ⋯ Q2Presentation.boundaryPackage_GQ2 (Q2Presentation.Induction.XRZero.xrChild chief K).snd g) =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`. We use `a = b` as notation for `Eq a b`. A fundamental property of equality is that it is an equivalence relation. ``` variable (α : Type) (a b c d : α) variable (hab : a = b) (hcb : c = b) (hcd : c = d) example : a = d := Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd ``` Equality is much more than an equivalence relation, however. It has the important property that every assertion respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value. That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`. Example: ``` example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := Eq.subst h1 h2 example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := h1 ▸ h2 ``` The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`. For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality) Conventions for notations in identifiers: * The recommended spelling of `=` in identifiers is `eq`.2 ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `^` in identifiers is `pow`.(HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.2 *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.Q2Presentation.Induction.dimMQ2Presentation.Induction.dimM {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : ℕ`dim M` (the `2^{2·dimM}` of `lem:elementarystage`).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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`.**Local `lem:elementarystage`, count clause** (THEOREM): the framed twisted-cocycle count at the child M-kernel is `2^{2·dim M}`. -
theoremdefined in Q2Presentation/Induction/Section7FrattiniTrivialElementary.leancomplete
theorem Q2Presentation.Induction.sec7_frattiniTrivial_elementaryMStageNormalizedCountData {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|`.} (h¬Q2Presentation.Induction.ScalarTerminal p: ¬Not (a : Prop) : Prop`Not p`, or `¬p`, is the negation of `p`. It is defined to be `p → False`, so if your goal is `¬p` you can use `intro h` to turn the goal into `h : p ⊢ False`, and if you have `hn : ¬p` and `h : p` then `hn h : False` and `(hn h).elim` will prove anything. For more information: [Propositional Logic](https://lean-lang.org/theorem_proving_in_lean4/propositions_and_proofs.html#propositional-logic) Conventions for notations in identifiers: * The recommended spelling of `¬` in identifiers is `not`.Q2Presentation.Induction.ScalarTerminalQ2Presentation.Induction.ScalarTerminal (p : Q2Presentation.Induction.FramedPair) : Prop**Scalar-terminal framed pair.**pQ2Presentation.Induction.FramedPair) (chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p: Q2Presentation.Induction.FirstNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor (p : Q2Presentation.Induction.FramedPair) : TypeA non-scalar chief factor of `L_Y` that is **first**: every chief factor strictly below it (i.e. with upper term contained in `lower`) is scalar. This is the manuscript's choice `S ◁ P` at l.3616–3623 ("all chief factors below `S` are scalar and `V` is the first non-scalar simple factor"), which `lem:collapse` requires for the coprime step `[S, Ñ] = 1`.pQ2Presentation.Induction.FramedPair) (KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor: Q2Presentation.Induction.KernelMinimalQ2Presentation.Induction.KernelMinimal {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.NonScalarChiefFactor p) : TypeThe manuscript's kernel choice (l.3623): `K ◁ Y`, `K ≤ P`, `KS = P`, and `K` is **⊆-minimal** with these properties — stated as: any `Y`-normal `K' ≤ K` still joining with `S` to `P` equals `K`. (This, not leastness among all candidates, is what `lem:simplehead` and `lem:collapse` use: both apply it to subgroups of `K`.)chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p.toNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor.toNonScalarChiefFactor {p : Q2Presentation.Induction.FramedPair} (self : Q2Presentation.Induction.FirstNonScalarChiefFactor p) : Q2Presentation.Induction.NonScalarChiefFactor p) (hRNat.card ↥(Q2Presentation.Induction.kernelFrattini K) = 1: Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number. If `α` is infinite, `Nat.card α = 0`.↥(Q2Presentation.Induction.kernelFrattiniQ2Presentation.Induction.kernelFrattini {p : Q2Presentation.Induction.FramedPair} {chief : Q2Presentation.Induction.NonScalarChiefFactor p} (K : Q2Presentation.Induction.KernelMinimal chief) : Subgroup p.fst.YThe literal Frattini subgroup `R = Φ(K)` of the kernel, as a subgroup of `Y` (the manuscript's `R`, l.3626).KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`. We use `a = b` as notation for `Eq a b`. A fundamental property of equality is that it is an equivalence relation. ``` variable (α : Type) (a b c d : α) variable (hab : a = b) (hcb : c = b) (hcd : c = d) example : a = d := Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd ``` Equality is much more than an equivalence relation, however. It has the important property that every assertion respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value. That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`. Example: ``` example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := Eq.subst h1 h2 example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := h1 ▸ h2 ``` The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`. For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality) Conventions for notations in identifiers: * The recommended spelling of `=` in identifiers is `eq`.1) (childQ2Presentation.Induction.Sec7FrattiniTrivialElementaryChildData p: Q2Presentation.Induction.Sec7FrattiniTrivialElementaryChildDataQ2Presentation.Induction.Sec7FrattiniTrivialElementaryChildData (p : Q2Presentation.Induction.FramedPair) : Type 1The exact-image child packet for the `R = 1` elementary stage. This isolates the manuscript's child geometry (`C = Y/K` and the proper exact-image subtraction children) from the source-specific elementary lift counts.pQ2Presentation.Induction.FramedPair) (srcQ2Presentation.Induction.Sec7FrattiniTrivialElementaryMStageSourceIndexData child (Q2Presentation.Induction.sec7MStageCanonicalMultiplicityData K child): Q2Presentation.Induction.Sec7FrattiniTrivialElementaryMStageSourceIndexDataQ2Presentation.Induction.Sec7FrattiniTrivialElementaryMStageSourceIndexData {p : Q2Presentation.Induction.FramedPair} (D : Q2Presentation.Induction.Sec7FrattiniTrivialElementaryChildData p) (mult : Q2Presentation.Induction.Sec7FrattiniTrivialElementaryMStageMultiplicityData D) : Type 1The source-specific elementary lift indices, after the multiplicity has been fixed. This records only the realization of the candidate and local exact-image counts as the cardinalities of their elementary lift-index sets. It contains no subtraction formula.childQ2Presentation.Induction.Sec7FrattiniTrivialElementaryChildData p(Q2Presentation.Induction.sec7MStageCanonicalMultiplicityDataQ2Presentation.Induction.sec7MStageCanonicalMultiplicityData {p : Q2Presentation.Induction.FramedPair} {chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p} (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (child : Q2Presentation.Induction.Sec7FrattiniTrivialElementaryChildData p) : Q2Presentation.Induction.Sec7FrattiniTrivialElementaryMStageMultiplicityData childThe canonical elementary `M`-stage multiplicity datum: `dimM` is literally the concrete module dimension `sec7MStageDim K`, and the lift multiplicity is literally `2 ^ (2 * sec7MStageDim K)`. Using this definitional packet (instead of an opaque `Nonempty`-obtained one) lets the downstream count theorems discharge the dimension side condition `mult.dimM = sec7MStageDim K` by `rfl`.KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactorchildQ2Presentation.Induction.Sec7FrattiniTrivialElementaryChildData p)) (cardAQ2Presentation.Induction.Sec7FrattiniTrivialElementaryMStageCandidateExactImagePartitionCanonicalFinSigmaPartitionCardData child (Q2Presentation.Induction.sec7MStageCanonicalMultiplicityData K child) src: Q2Presentation.Induction.Sec7FrattiniTrivialElementaryMStageCandidateExactImagePartitionCanonicalFinSigmaPartitionCardDataQ2Presentation.Induction.Sec7FrattiniTrivialElementaryMStageCandidateExactImagePartitionCanonicalFinSigmaPartitionCardData {p : Q2Presentation.Induction.FramedPair} (D : Q2Presentation.Induction.Sec7FrattiniTrivialElementaryChildData p) (mult : Q2Presentation.Induction.Sec7FrattiniTrivialElementaryMStageMultiplicityData D) (src : Q2Presentation.Induction.Sec7FrattiniTrivialElementaryMStageSourceIndexData D mult) : PropCardinality form of the canonical candidate exact-image partition. This is strictly weaker than choosing the partition equivalence: it records only that the finite disjoint-union index and the canonical constant sigma-fibre index have the same cardinality. The equivalence is recovered theorem-level below using finite-cardinality choice, as in the existing exact-image lift-partition cardinality interface.childQ2Presentation.Induction.Sec7FrattiniTrivialElementaryChildData p(Q2Presentation.Induction.sec7MStageCanonicalMultiplicityDataQ2Presentation.Induction.sec7MStageCanonicalMultiplicityData {p : Q2Presentation.Induction.FramedPair} {chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p} (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (child : Q2Presentation.Induction.Sec7FrattiniTrivialElementaryChildData p) : Q2Presentation.Induction.Sec7FrattiniTrivialElementaryMStageMultiplicityData childThe canonical elementary `M`-stage multiplicity datum: `dimM` is literally the concrete module dimension `sec7MStageDim K`, and the lift multiplicity is literally `2 ^ (2 * sec7MStageDim K)`. Using this definitional packet (instead of an opaque `Nonempty`-obtained one) lets the downstream count theorems discharge the dimension side condition `mult.dimM = sec7MStageDim K` by `rfl`.KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactorchildQ2Presentation.Induction.Sec7FrattiniTrivialElementaryChildData p) srcQ2Presentation.Induction.Sec7FrattiniTrivialElementaryMStageSourceIndexData child (Q2Presentation.Induction.sec7MStageCanonicalMultiplicityData K child)) (cardQQ2Presentation.Induction.Sec7FrattiniTrivialElementaryMStageLocalExactImagePartitionCanonicalFinSigmaPartitionCardData child (Q2Presentation.Induction.sec7MStageCanonicalMultiplicityData K child) src: Q2Presentation.Induction.Sec7FrattiniTrivialElementaryMStageLocalExactImagePartitionCanonicalFinSigmaPartitionCardDataQ2Presentation.Induction.Sec7FrattiniTrivialElementaryMStageLocalExactImagePartitionCanonicalFinSigmaPartitionCardData {p : Q2Presentation.Induction.FramedPair} (D : Q2Presentation.Induction.Sec7FrattiniTrivialElementaryChildData p) (mult : Q2Presentation.Induction.Sec7FrattiniTrivialElementaryMStageMultiplicityData D) (src : Q2Presentation.Induction.Sec7FrattiniTrivialElementaryMStageSourceIndexData D mult) : PropSigma-fibre cardinality form of the local exact-image partition. The proper-image summand is the canonical finite set whose cardinality is the sum of the proper-child local counts; the lower-child summand is the actual local lower-child boundary-framed surjection set.childQ2Presentation.Induction.Sec7FrattiniTrivialElementaryChildData p(Q2Presentation.Induction.sec7MStageCanonicalMultiplicityDataQ2Presentation.Induction.sec7MStageCanonicalMultiplicityData {p : Q2Presentation.Induction.FramedPair} {chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p} (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (child : Q2Presentation.Induction.Sec7FrattiniTrivialElementaryChildData p) : Q2Presentation.Induction.Sec7FrattiniTrivialElementaryMStageMultiplicityData childThe canonical elementary `M`-stage multiplicity datum: `dimM` is literally the concrete module dimension `sec7MStageDim K`, and the lift multiplicity is literally `2 ^ (2 * sec7MStageDim K)`. Using this definitional packet (instead of an opaque `Nonempty`-obtained one) lets the downstream count theorems discharge the dimension side condition `mult.dimM = sec7MStageDim K` by `rfl`.KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactorchildQ2Presentation.Induction.Sec7FrattiniTrivialElementaryChildData p) srcQ2Presentation.Induction.Sec7FrattiniTrivialElementaryMStageSourceIndexData child (Q2Presentation.Induction.sec7MStageCanonicalMultiplicityData K child)) : NonemptyNonempty.{u} (α : Sort u) : Prop`Nonempty α` is a typeclass that says that `α` is not an empty type, that is, there exists an element in the type. It differs from `Inhabited α` in that `Nonempty α` is a `Prop`, which means that it does not actually carry an element of `α`, only a proof that *there exists* such an element. Given `Nonempty α`, you can construct an element of `α` *nonconstructively* using `Classical.choice`.(Q2Presentation.Induction.Sec7FrattiniTrivialElementaryMStageNormalizedCountDataQ2Presentation.Induction.Sec7FrattiniTrivialElementaryMStageNormalizedCountData {p : Q2Presentation.Induction.FramedPair} (D : Q2Presentation.Induction.Sec7FrattiniTrivialElementaryChildData p) : Type 1A manuscript-shaped normalized source-count packet for the `R = 1` elementary stage. Compared with `Sec7FrattiniTrivialElementaryNormalizedCountData`, this stores the actual `eq:Mstage` functional: the common lift multiplicity is `2^(2 dim M)`, and the candidate and local lift-index cardinalities are obtained from the lower child and the proper-image subtraction children by the same formula.childQ2Presentation.Induction.Sec7FrattiniTrivialElementaryChildData p)theorem Q2Presentation.Induction.sec7_frattiniTrivial_elementaryMStageNormalizedCountData {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|`.} (h¬Q2Presentation.Induction.ScalarTerminal p: ¬Not (a : Prop) : Prop`Not p`, or `¬p`, is the negation of `p`. It is defined to be `p → False`, so if your goal is `¬p` you can use `intro h` to turn the goal into `h : p ⊢ False`, and if you have `hn : ¬p` and `h : p` then `hn h : False` and `(hn h).elim` will prove anything. For more information: [Propositional Logic](https://lean-lang.org/theorem_proving_in_lean4/propositions_and_proofs.html#propositional-logic) Conventions for notations in identifiers: * The recommended spelling of `¬` in identifiers is `not`.Q2Presentation.Induction.ScalarTerminalQ2Presentation.Induction.ScalarTerminal (p : Q2Presentation.Induction.FramedPair) : Prop**Scalar-terminal framed pair.**pQ2Presentation.Induction.FramedPair) (chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p: Q2Presentation.Induction.FirstNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor (p : Q2Presentation.Induction.FramedPair) : TypeA non-scalar chief factor of `L_Y` that is **first**: every chief factor strictly below it (i.e. with upper term contained in `lower`) is scalar. This is the manuscript's choice `S ◁ P` at l.3616–3623 ("all chief factors below `S` are scalar and `V` is the first non-scalar simple factor"), which `lem:collapse` requires for the coprime step `[S, Ñ] = 1`.pQ2Presentation.Induction.FramedPair) (KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor: Q2Presentation.Induction.KernelMinimalQ2Presentation.Induction.KernelMinimal {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.NonScalarChiefFactor p) : TypeThe manuscript's kernel choice (l.3623): `K ◁ Y`, `K ≤ P`, `KS = P`, and `K` is **⊆-minimal** with these properties — stated as: any `Y`-normal `K' ≤ K` still joining with `S` to `P` equals `K`. (This, not leastness among all candidates, is what `lem:simplehead` and `lem:collapse` use: both apply it to subgroups of `K`.)chiefQ2Presentation.Induction.FirstNonScalarChiefFactor p.toNonScalarChiefFactorQ2Presentation.Induction.FirstNonScalarChiefFactor.toNonScalarChiefFactor {p : Q2Presentation.Induction.FramedPair} (self : Q2Presentation.Induction.FirstNonScalarChiefFactor p) : Q2Presentation.Induction.NonScalarChiefFactor p) (hRNat.card ↥(Q2Presentation.Induction.kernelFrattini K) = 1: Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number. If `α` is infinite, `Nat.card α = 0`.↥(Q2Presentation.Induction.kernelFrattiniQ2Presentation.Induction.kernelFrattini {p : Q2Presentation.Induction.FramedPair} {chief : Q2Presentation.Induction.NonScalarChiefFactor p} (K : Q2Presentation.Induction.KernelMinimal chief) : Subgroup p.fst.YThe literal Frattini subgroup `R = Φ(K)` of the kernel, as a subgroup of `Y` (the manuscript's `R`, l.3626).KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`. We use `a = b` as notation for `Eq a b`. A fundamental property of equality is that it is an equivalence relation. ``` variable (α : Type) (a b c d : α) variable (hab : a = b) (hcb : c = b) (hcd : c = d) example : a = d := Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd ``` Equality is much more than an equivalence relation, however. It has the important property that every assertion respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value. That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`. Example: ``` example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := Eq.subst h1 h2 example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := h1 ▸ h2 ``` The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`. For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality) Conventions for notations in identifiers: * The recommended spelling of `=` in identifiers is `eq`.1) (childQ2Presentation.Induction.Sec7FrattiniTrivialElementaryChildData p: Q2Presentation.Induction.Sec7FrattiniTrivialElementaryChildDataQ2Presentation.Induction.Sec7FrattiniTrivialElementaryChildData (p : Q2Presentation.Induction.FramedPair) : Type 1The exact-image child packet for the `R = 1` elementary stage. This isolates the manuscript's child geometry (`C = Y/K` and the proper exact-image subtraction children) from the source-specific elementary lift counts.pQ2Presentation.Induction.FramedPair) (srcQ2Presentation.Induction.Sec7FrattiniTrivialElementaryMStageSourceIndexData child (Q2Presentation.Induction.sec7MStageCanonicalMultiplicityData K child): Q2Presentation.Induction.Sec7FrattiniTrivialElementaryMStageSourceIndexDataQ2Presentation.Induction.Sec7FrattiniTrivialElementaryMStageSourceIndexData {p : Q2Presentation.Induction.FramedPair} (D : Q2Presentation.Induction.Sec7FrattiniTrivialElementaryChildData p) (mult : Q2Presentation.Induction.Sec7FrattiniTrivialElementaryMStageMultiplicityData D) : Type 1The source-specific elementary lift indices, after the multiplicity has been fixed. This records only the realization of the candidate and local exact-image counts as the cardinalities of their elementary lift-index sets. It contains no subtraction formula.childQ2Presentation.Induction.Sec7FrattiniTrivialElementaryChildData p(Q2Presentation.Induction.sec7MStageCanonicalMultiplicityDataQ2Presentation.Induction.sec7MStageCanonicalMultiplicityData {p : Q2Presentation.Induction.FramedPair} {chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p} (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (child : Q2Presentation.Induction.Sec7FrattiniTrivialElementaryChildData p) : Q2Presentation.Induction.Sec7FrattiniTrivialElementaryMStageMultiplicityData childThe canonical elementary `M`-stage multiplicity datum: `dimM` is literally the concrete module dimension `sec7MStageDim K`, and the lift multiplicity is literally `2 ^ (2 * sec7MStageDim K)`. Using this definitional packet (instead of an opaque `Nonempty`-obtained one) lets the downstream count theorems discharge the dimension side condition `mult.dimM = sec7MStageDim K` by `rfl`.KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactorchildQ2Presentation.Induction.Sec7FrattiniTrivialElementaryChildData p)) (cardAQ2Presentation.Induction.Sec7FrattiniTrivialElementaryMStageCandidateExactImagePartitionCanonicalFinSigmaPartitionCardData child (Q2Presentation.Induction.sec7MStageCanonicalMultiplicityData K child) src: Q2Presentation.Induction.Sec7FrattiniTrivialElementaryMStageCandidateExactImagePartitionCanonicalFinSigmaPartitionCardDataQ2Presentation.Induction.Sec7FrattiniTrivialElementaryMStageCandidateExactImagePartitionCanonicalFinSigmaPartitionCardData {p : Q2Presentation.Induction.FramedPair} (D : Q2Presentation.Induction.Sec7FrattiniTrivialElementaryChildData p) (mult : Q2Presentation.Induction.Sec7FrattiniTrivialElementaryMStageMultiplicityData D) (src : Q2Presentation.Induction.Sec7FrattiniTrivialElementaryMStageSourceIndexData D mult) : PropCardinality form of the canonical candidate exact-image partition. This is strictly weaker than choosing the partition equivalence: it records only that the finite disjoint-union index and the canonical constant sigma-fibre index have the same cardinality. The equivalence is recovered theorem-level below using finite-cardinality choice, as in the existing exact-image lift-partition cardinality interface.childQ2Presentation.Induction.Sec7FrattiniTrivialElementaryChildData p(Q2Presentation.Induction.sec7MStageCanonicalMultiplicityDataQ2Presentation.Induction.sec7MStageCanonicalMultiplicityData {p : Q2Presentation.Induction.FramedPair} {chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p} (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (child : Q2Presentation.Induction.Sec7FrattiniTrivialElementaryChildData p) : Q2Presentation.Induction.Sec7FrattiniTrivialElementaryMStageMultiplicityData childThe canonical elementary `M`-stage multiplicity datum: `dimM` is literally the concrete module dimension `sec7MStageDim K`, and the lift multiplicity is literally `2 ^ (2 * sec7MStageDim K)`. Using this definitional packet (instead of an opaque `Nonempty`-obtained one) lets the downstream count theorems discharge the dimension side condition `mult.dimM = sec7MStageDim K` by `rfl`.KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactorchildQ2Presentation.Induction.Sec7FrattiniTrivialElementaryChildData p) srcQ2Presentation.Induction.Sec7FrattiniTrivialElementaryMStageSourceIndexData child (Q2Presentation.Induction.sec7MStageCanonicalMultiplicityData K child)) (cardQQ2Presentation.Induction.Sec7FrattiniTrivialElementaryMStageLocalExactImagePartitionCanonicalFinSigmaPartitionCardData child (Q2Presentation.Induction.sec7MStageCanonicalMultiplicityData K child) src: Q2Presentation.Induction.Sec7FrattiniTrivialElementaryMStageLocalExactImagePartitionCanonicalFinSigmaPartitionCardDataQ2Presentation.Induction.Sec7FrattiniTrivialElementaryMStageLocalExactImagePartitionCanonicalFinSigmaPartitionCardData {p : Q2Presentation.Induction.FramedPair} (D : Q2Presentation.Induction.Sec7FrattiniTrivialElementaryChildData p) (mult : Q2Presentation.Induction.Sec7FrattiniTrivialElementaryMStageMultiplicityData D) (src : Q2Presentation.Induction.Sec7FrattiniTrivialElementaryMStageSourceIndexData D mult) : PropSigma-fibre cardinality form of the local exact-image partition. The proper-image summand is the canonical finite set whose cardinality is the sum of the proper-child local counts; the lower-child summand is the actual local lower-child boundary-framed surjection set.childQ2Presentation.Induction.Sec7FrattiniTrivialElementaryChildData p(Q2Presentation.Induction.sec7MStageCanonicalMultiplicityDataQ2Presentation.Induction.sec7MStageCanonicalMultiplicityData {p : Q2Presentation.Induction.FramedPair} {chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p} (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (child : Q2Presentation.Induction.Sec7FrattiniTrivialElementaryChildData p) : Q2Presentation.Induction.Sec7FrattiniTrivialElementaryMStageMultiplicityData childThe canonical elementary `M`-stage multiplicity datum: `dimM` is literally the concrete module dimension `sec7MStageDim K`, and the lift multiplicity is literally `2 ^ (2 * sec7MStageDim K)`. Using this definitional packet (instead of an opaque `Nonempty`-obtained one) lets the downstream count theorems discharge the dimension side condition `mult.dimM = sec7MStageDim K` by `rfl`.KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactorchildQ2Presentation.Induction.Sec7FrattiniTrivialElementaryChildData p) srcQ2Presentation.Induction.Sec7FrattiniTrivialElementaryMStageSourceIndexData child (Q2Presentation.Induction.sec7MStageCanonicalMultiplicityData K child)) : NonemptyNonempty.{u} (α : Sort u) : Prop`Nonempty α` is a typeclass that says that `α` is not an empty type, that is, there exists an element in the type. It differs from `Inhabited α` in that `Nonempty α` is a `Prop`, which means that it does not actually carry an element of `α`, only a proof that *there exists* such an element. Given `Nonempty α`, you can construct an element of `α` *nonconstructively* using `Classical.choice`.(Q2Presentation.Induction.Sec7FrattiniTrivialElementaryMStageNormalizedCountDataQ2Presentation.Induction.Sec7FrattiniTrivialElementaryMStageNormalizedCountData {p : Q2Presentation.Induction.FramedPair} (D : Q2Presentation.Induction.Sec7FrattiniTrivialElementaryChildData p) : Type 1A manuscript-shaped normalized source-count packet for the `R = 1` elementary stage. Compared with `Sec7FrattiniTrivialElementaryNormalizedCountData`, this stores the actual `eq:Mstage` functional: the common lift multiplicity is `2^(2 dim M)`, and the candidate and local lift-index cardinalities are obtained from the lower child and the proper-image subtraction children by the same formula.childQ2Presentation.Induction.Sec7FrattiniTrivialElementaryChildData p)**Former M-stage normalized-count residual, now theorem-level.** The public packet is assembled from the three manuscript mechanisms in `lem:elementarystage` / `eq:Mstage`: common lift multiplicity, source lift-index realization, and exact-image subtraction.
-
defdefined in Q2Presentation/Induction/ZeroEdgePointwise.leancomplete
def Q2Presentation.Induction.EdgeDelSurj {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) {ΓProfiniteGrp.{0}: ProfiniteGrp.{0}ProfiniteGrp.{u_1} : Type (u_1 + 1)The category of profinite groups. A term of this type consists of a profinite set with a topological group structure.} (BQ2Presentation.BoundaryPackage Γ: Q2Presentation.BoundaryPackageQ2Presentation.BoundaryPackage (Γ : ProfiniteGrp.{0}) : TypeA **boundary package** on a profinite group `Γ`: the uniform Stage-C data of a tame quotient, a maximal pro-`2` quotient, and a common unramified character `ℤ₂` through which both factor (manuscript Prop 3.14, `prop:compatiblemarking`; plan Turn 4 §6). The compatibility `tameMap ≫ ν_t = ν = pro2Map ≫ ν_2` records that the two markings agree on the full unramified coordinate, not merely modulo `2`.ΓProfiniteGrp.{0}) (ρQ2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst (Q2Presentation.Induction.cChild chief K).snd: Q2Presentation.boundaryFramedSurjQ2Presentation.boundaryFramedSurj {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (Yt : Q2Presentation.BoundaryFramedTarget) (F : Q2Presentation.BoundaryFrame Yt) : TypeThe **boundary-framed surjections** `e_Γ^β(𝒴)` (manuscript `eq:eGamma`): the continuous surjections `f : Γ ↠ Y` whose induced map to `H × E` is the prescribed `β ∘ b_Γ`, i.e. `q_Y ∘ f = β ∘ b_Γ`. This is the subtype counted in Theorem 4.2; its cardinality is `e_Γ^β(𝒴)`.BQ2Presentation.BoundaryPackage Γ(Q2Presentation.Induction.cChildQ2Presentation.Induction.cChild {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPair**The C-child framed pair** (the carrier of `X_Γ(C)`; manuscript `C = Y/K` via `B/M' ≅ C`, `mChildCollapse`).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.(Q2Presentation.Induction.cChildQ2Presentation.Induction.cChild {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPair**The C-child framed pair** (the carrier of `X_Γ(C)`; manuscript `C = Y/K` via `B/M' ≅ C`, `mChildCollapse`).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.) : PropThe universe of propositions. `Prop ≡ Sort 0`. Every proposition is propositionally equal to either `True` or `False`.def Q2Presentation.Induction.EdgeDelSurj {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) {ΓProfiniteGrp.{0}: ProfiniteGrp.{0}ProfiniteGrp.{u_1} : Type (u_1 + 1)The category of profinite groups. A term of this type consists of a profinite set with a topological group structure.} (BQ2Presentation.BoundaryPackage Γ: Q2Presentation.BoundaryPackageQ2Presentation.BoundaryPackage (Γ : ProfiniteGrp.{0}) : TypeA **boundary package** on a profinite group `Γ`: the uniform Stage-C data of a tame quotient, a maximal pro-`2` quotient, and a common unramified character `ℤ₂` through which both factor (manuscript Prop 3.14, `prop:compatiblemarking`; plan Turn 4 §6). The compatibility `tameMap ≫ ν_t = ν = pro2Map ≫ ν_2` records that the two markings agree on the full unramified coordinate, not merely modulo `2`.ΓProfiniteGrp.{0}) (ρQ2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst (Q2Presentation.Induction.cChild chief K).snd: Q2Presentation.boundaryFramedSurjQ2Presentation.boundaryFramedSurj {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (Yt : Q2Presentation.BoundaryFramedTarget) (F : Q2Presentation.BoundaryFrame Yt) : TypeThe **boundary-framed surjections** `e_Γ^β(𝒴)` (manuscript `eq:eGamma`): the continuous surjections `f : Γ ↠ Y` whose induced map to `H × E` is the prescribed `β ∘ b_Γ`, i.e. `q_Y ∘ f = β ∘ b_Γ`. This is the subtype counted in Theorem 4.2; its cardinality is `e_Γ^β(𝒴)`.BQ2Presentation.BoundaryPackage Γ(Q2Presentation.Induction.cChildQ2Presentation.Induction.cChild {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPair**The C-child framed pair** (the carrier of `X_Γ(C)`; manuscript `C = Y/K` via `B/M' ≅ C`, `mChildCollapse`).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.(Q2Presentation.Induction.cChildQ2Presentation.Induction.cChild {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPair**The C-child framed pair** (the carrier of `X_Γ(C)`; manuscript `C = Y/K` via `B/M' ≅ C`, `mChildCollapse`).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.) : PropThe universe of propositions. `Prop ≡ Sort 0`. Every proposition is propositionally equal to either `True` or `False`.**F-∂ floor `Prop`** (design §5 #F-∂; `lem:elementarystage` l.4171–4205, dual-injectivity spelling): no `0 ≠ χ ∈ 𝒳_T` kills every constraint defect reading — i.e. the transpose of `∂_{Γ,ρ}` is injective. PROVENANCE + dissolution program: the manuscript proof is the counting dévissage `H²_{Γ,ρ}(M) = 0` at the intermediate `χ`-pushout kernels `M_χ = ker χ̃`; in-tree this is the clause-(d) ladder (`q2_localduality_weakZ1_card`) at `M_χ`-kernels for the LOCAL source — derivable, expected NOT to survive — and the N6 corank engine for the candidate (manuscript fallback per the §5 table). Consumed as a HYPOTHESIS (never an axiom) by the engine fire below; `edgeL_surjective_of_delSurj` converts it to the engine's `hL`.
Proved in §8 of the paper. Ingredients: Lemma 7.1.
-
Q2Presentation.Induction.BlockR.blockCharDual[complete] -
Q2Presentation.Induction.BlockR.blockPerCharA_card_eq_coverCount[complete] -
Q2Presentation.Induction.candidateRoute30_zmod_two_eq_zero_or_one[missing declaration] -
Q2Presentation.Induction.centralCover_candidateMiddleRLiftObstructionMapData_from_scalarFrattiniRoute41[complete] -
Q2Presentation.Induction.MinimalBlock.XR[complete] -
Q2Presentation.Induction.xrObstructionDual[complete] -
Q2Presentation.Induction.xrObstructionDual_scalar_eq_zero_iff[complete] -
Q2Presentation.Lifting.scalar_defect_eq_zero_iff_coverLift[complete] -
Q2Presentation.Lifting.scalarKernel_normal[complete] -
Q2Presentation.Lifting.scalarCoverLiftHom[complete]
Lemma 8.10 of the paper (Scalar pushouts separate the complete obstruction).
Put
\mathcal X_R=(R^\vee)^B=(R^\vee)^C.
For either source, \mathcal X_R is canonically the dual of the R-valued
obstruction space. If o is an R-valued lifting obstruction, then
o=0\quad\Longleftrightarrow\quad \lambda_*o=0\text{ for every }\lambda\in\mathcal X_R.
For 0\ne\lambda\in\mathcal X_R, the corresponding scalar pushout is the
central double cover
p_\lambda:B_\lambda=Y/\ker\lambda\twoheadrightarrow B.
Lean code for Lemma8.10●10 declarations, 1 missing
Associated Lean declarations
-
Q2Presentation.Induction.BlockR.blockCharDual[complete]
-
Q2Presentation.Induction.BlockR.blockPerCharA_card_eq_coverCount[complete]
-
Q2Presentation.Induction.candidateRoute30_zmod_two_eq_zero_or_one[missing declaration]
-
Q2Presentation.Induction.centralCover_candidateMiddleRLiftObstructionMapData_from_scalarFrattiniRoute41[complete]
-
Q2Presentation.Induction.MinimalBlock.XR[complete]
-
Q2Presentation.Induction.xrObstructionDual[complete]
-
Q2Presentation.Induction.xrObstructionDual_scalar_eq_zero_iff[complete]
-
Q2Presentation.Lifting.scalar_defect_eq_zero_iff_coverLift[complete]
-
Q2Presentation.Lifting.scalarKernel_normal[complete]
-
Q2Presentation.Lifting.scalarCoverLiftHom[complete]
-
Q2Presentation.Induction.BlockR.blockCharDual[complete] -
Q2Presentation.Induction.BlockR.blockPerCharA_card_eq_coverCount[complete] -
Q2Presentation.Induction.candidateRoute30_zmod_two_eq_zero_or_one[missing declaration] -
Q2Presentation.Induction.centralCover_candidateMiddleRLiftObstructionMapData_from_scalarFrattiniRoute41[complete] -
Q2Presentation.Induction.MinimalBlock.XR[complete] -
Q2Presentation.Induction.xrObstructionDual[complete] -
Q2Presentation.Induction.xrObstructionDual_scalar_eq_zero_iff[complete] -
Q2Presentation.Lifting.scalar_defect_eq_zero_iff_coverLift[complete] -
Q2Presentation.Lifting.scalarKernel_normal[complete] -
Q2Presentation.Lifting.scalarCoverLiftHom[complete]
-
defdefined in Q2Presentation/Induction/BlockRealizationAssembly.leancomplete
def Q2Presentation.Induction.BlockR.blockCharDual {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) (XQ2Presentation.Induction.MinimalBlockPreheadInvariantCharacterData (Q2Presentation.Induction.sec7RawTowerPacketCanonical chief K).preheadTowerData: Q2Presentation.Induction.MinimalBlockPreheadInvariantCharacterDataQ2Presentation.Induction.MinimalBlockPreheadInvariantCharacterData {p : Q2Presentation.Induction.FramedPair} {chief : Q2Presentation.Induction.NonScalarChiefFactor p} (D : Q2Presentation.Induction.MinimalBlockPreheadTowerData p chief) : PropNonzero invariant determinant characters over a pre-head Section 7 tower. This is the same Frattini-character input as `MinimalBlockInvariantCharacterData`, but stated before `M/T` has been proved nonzero.(Q2Presentation.Induction.sec7RawTowerPacketCanonicalQ2Presentation.Induction.sec7RawTowerPacketCanonical {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.Sec7RawTowerPacket chief KThe canonical raw tower packet — the literal §7 constructors (checkpoint-F9). Using this definitional packet (instead of an opaque `Nonempty`-obtained one) lets the crux-lowered pushout packet of `Section7PushoutConstruction` be consumed directly.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).preheadTowerDataQ2Presentation.Induction.Sec7RawTowerPacket.preheadTowerData {p : Q2Presentation.Induction.FramedPair} {chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p} {K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor} (T : Q2Presentation.Induction.Sec7RawTowerPacket chief K) : Q2Presentation.Induction.MinimalBlockPreheadTowerData p chief.toNonScalarChiefFactorThe pre-head tower assembled from the packet.) (FdetQ2Presentation.Induction.MinimalBlockPreheadExtraspecialEquivariantFamilyData (Q2Presentation.Induction.sec7RawTowerPacketCanonical chief K).preheadTowerData: Q2Presentation.Induction.MinimalBlockPreheadExtraspecialEquivariantFamilyDataQ2Presentation.Induction.MinimalBlockPreheadExtraspecialEquivariantFamilyData {p : Q2Presentation.Induction.FramedPair} {chief : Q2Presentation.Induction.NonScalarChiefFactor p} (D : Q2Presentation.Induction.MinimalBlockPreheadTowerData p chief) : TypeEquivariant extraspecial self-duality data over a pre-head tower. This is now an assembled packet: the bare central-pushout self-duality family and its `C`-naturality/diagonal-invariance proof are separated below, then reassembled here for the existing downstream pre-head determinant interfaces.(Q2Presentation.Induction.sec7RawTowerPacketCanonicalQ2Presentation.Induction.sec7RawTowerPacketCanonical {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.Sec7RawTowerPacket chief KThe canonical raw tower packet — the literal §7 constructors (checkpoint-F9). Using this definitional packet (instead of an opaque `Nonempty`-obtained one) lets the crux-lowered pushout packet of `Section7PushoutConstruction` be consumed directly.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).preheadTowerDataQ2Presentation.Induction.Sec7RawTowerPacket.preheadTowerData {p : Q2Presentation.Induction.FramedPair} {chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p} {K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor} (T : Q2Presentation.Induction.Sec7RawTowerPacket chief K) : Q2Presentation.Induction.MinimalBlockPreheadTowerData p chief.toNonScalarChiefFactorThe pre-head tower assembled from the packet.) (AQ2Presentation.Induction.MinimalBlockPreheadExtraspecialAnnihilationData Fdet: Q2Presentation.Induction.MinimalBlockPreheadExtraspecialAnnihilationDataQ2Presentation.Induction.MinimalBlockPreheadExtraspecialAnnihilationData {p : Q2Presentation.Induction.FramedPair} {chief : Q2Presentation.Induction.NonScalarChiefFactor p} {D : Q2Presentation.Induction.MinimalBlockPreheadTowerData p chief} (F : Q2Presentation.Induction.MinimalBlockPreheadExtraspecialEquivariantFamilyData D) : PropThe two annihilation conclusions of `prop:simpleheaddet`, stated over the pre-head equivariant determinant family.FdetQ2Presentation.Induction.MinimalBlockPreheadExtraspecialEquivariantFamilyData (Q2Presentation.Induction.sec7RawTowerPacketCanonical chief K).preheadTowerData) (RdetQ2Presentation.Induction.MinimalBlockPreheadExtraspecialRadicalData Fdet: Q2Presentation.Induction.MinimalBlockPreheadExtraspecialRadicalDataQ2Presentation.Induction.MinimalBlockPreheadExtraspecialRadicalData {p : Q2Presentation.Induction.FramedPair} {chief : Q2Presentation.Induction.NonScalarChiefFactor p} {D : Q2Presentation.Induction.MinimalBlockPreheadTowerData p chief} (F : Q2Presentation.Induction.MinimalBlockPreheadExtraspecialEquivariantFamilyData D) : PropThe polar-radical containment conclusion of `prop:simpleheaddet`, stated before the head-nontrivial field is installed.FdetQ2Presentation.Induction.MinimalBlockPreheadExtraspecialEquivariantFamilyData (Q2Presentation.Induction.sec7RawTowerPacketCanonical chief K).preheadTowerData) (NQ2Presentation.Induction.MinimalBlockPreheadExtraspecialNonzeroData Fdet: Q2Presentation.Induction.MinimalBlockPreheadExtraspecialNonzeroDataQ2Presentation.Induction.MinimalBlockPreheadExtraspecialNonzeroData {p : Q2Presentation.Induction.FramedPair} {chief : Q2Presentation.Induction.NonScalarChiefFactor p} {D : Q2Presentation.Induction.MinimalBlockPreheadTowerData p chief} (F : Q2Presentation.Induction.MinimalBlockPreheadExtraspecialEquivariantFamilyData D) : PropThe nonzero diagonal conclusion of `prop:simpleheaddet`, stated before the head-nontrivial field is installed.FdetQ2Presentation.Induction.MinimalBlockPreheadExtraspecialEquivariantFamilyData (Q2Presentation.Induction.sec7RawTowerPacketCanonical chief K).preheadTowerData) (h¬Q2Presentation.Induction.ScalarTerminal p: ¬Not (a : Prop) : Prop`Not p`, or `¬p`, is the negation of `p`. It is defined to be `p → False`, so if your goal is `¬p` you can use `intro h` to turn the goal into `h : p ⊢ False`, and if you have `hn : ¬p` and `h : p` then `hn h : False` and `(hn h).elim` will prove anything. For more information: [Propositional Logic](https://lean-lang.org/theorem_proving_in_lean4/propositions_and_proofs.html#propositional-logic) Conventions for notations in identifiers: * The recommended spelling of `¬` in identifiers is `not`.Q2Presentation.Induction.ScalarTerminalQ2Presentation.Induction.ScalarTerminal (p : Q2Presentation.Induction.FramedPair) : Prop**Scalar-terminal framed pair.**pQ2Presentation.Induction.FramedPair) (chiModule.Dual (ZMod 2) (Q2Presentation.Induction.BlockR.Bstar chief K X Fdet A Rdet N h).obstructionSpace: Module.DualModule.Dual.{u_4, u_5} (R : Type u_4) (M : Type u_5) [Semiring R] [AddCommMonoid M] [Module R M] : Type (max u_5 u_4)The left dual space of an R-module M is the R-module of linear maps `M → R`.(ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.2) (Q2Presentation.Induction.BlockR.BstarQ2Presentation.Induction.BlockR.Bstar {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (X : Q2Presentation.Induction.MinimalBlockPreheadInvariantCharacterData (Q2Presentation.Induction.sec7RawTowerPacketCanonical chief K).preheadTowerData) (Fdet : Q2Presentation.Induction.MinimalBlockPreheadExtraspecialEquivariantFamilyData (Q2Presentation.Induction.sec7RawTowerPacketCanonical chief K).preheadTowerData) (A : Q2Presentation.Induction.MinimalBlockPreheadExtraspecialAnnihilationData Fdet) (Rdet : Q2Presentation.Induction.MinimalBlockPreheadExtraspecialRadicalData Fdet) (N : Q2Presentation.Induction.MinimalBlockPreheadExtraspecialNonzeroData Fdet) (h : ¬Q2Presentation.Induction.ScalarTerminal p) : Q2Presentation.Induction.MinimalBlock pThe pinned block.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactorXQ2Presentation.Induction.MinimalBlockPreheadInvariantCharacterData (Q2Presentation.Induction.sec7RawTowerPacketCanonical chief K).preheadTowerDataFdetQ2Presentation.Induction.MinimalBlockPreheadExtraspecialEquivariantFamilyData (Q2Presentation.Induction.sec7RawTowerPacketCanonical chief K).preheadTowerDataAQ2Presentation.Induction.MinimalBlockPreheadExtraspecialAnnihilationData FdetRdetQ2Presentation.Induction.MinimalBlockPreheadExtraspecialRadicalData FdetNQ2Presentation.Induction.MinimalBlockPreheadExtraspecialNonzeroData Fdeth¬Q2Presentation.Induction.ScalarTerminal p).obstructionSpaceQ2Presentation.Induction.MinimalBlock.obstructionSpace {p : Q2Presentation.Induction.FramedPair} (B : Q2Presentation.Induction.MinimalBlock p) : Type**The `R`-valued obstruction space `W = O_R`** (`prop:finalfourier`). By `lem:obstructionseparation` (l.4213, `𝒳_R = (R^∨)^B = (R^∨)^C` is *canonically the dual of the `R`-valued obstruction space*), `O_R = (𝒳_R)^∨`, so `O_R = Module.Dual (ZMod 2) 𝒳_R`. This is the finite `𝔽₂` space `FourierBranchData.W` the §8 Fourier branch consumes: the `R`-valued lifting obstruction `o_Γ` lands in `O_R`, and its character group `Ŵ = Dual O_R ≅ 𝒳_R` is the index of the Fourier sum `eq:recursionR1`.) : ↥(Q2Presentation.Lifting.conjInvDualsQ2Presentation.Lifting.conjInvDuals {Yt : Q2Presentation.BoundaryFramedTarget} (E : Q2Presentation.Lifting.ElementaryKernel Yt) : Submodule (ZMod 2) (Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E))The conjugation-invariant duals `X = (R^∨)^Y = (R^∨)^C` of an elementary kernel (consumer spelling of the manuscript's `𝒳_R`, §7 l.3720–3723).(Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel** (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor))def Q2Presentation.Induction.BlockR.blockCharDual {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) (XQ2Presentation.Induction.MinimalBlockPreheadInvariantCharacterData (Q2Presentation.Induction.sec7RawTowerPacketCanonical chief K).preheadTowerData: Q2Presentation.Induction.MinimalBlockPreheadInvariantCharacterDataQ2Presentation.Induction.MinimalBlockPreheadInvariantCharacterData {p : Q2Presentation.Induction.FramedPair} {chief : Q2Presentation.Induction.NonScalarChiefFactor p} (D : Q2Presentation.Induction.MinimalBlockPreheadTowerData p chief) : PropNonzero invariant determinant characters over a pre-head Section 7 tower. This is the same Frattini-character input as `MinimalBlockInvariantCharacterData`, but stated before `M/T` has been proved nonzero.(Q2Presentation.Induction.sec7RawTowerPacketCanonicalQ2Presentation.Induction.sec7RawTowerPacketCanonical {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.Sec7RawTowerPacket chief KThe canonical raw tower packet — the literal §7 constructors (checkpoint-F9). Using this definitional packet (instead of an opaque `Nonempty`-obtained one) lets the crux-lowered pushout packet of `Section7PushoutConstruction` be consumed directly.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).preheadTowerDataQ2Presentation.Induction.Sec7RawTowerPacket.preheadTowerData {p : Q2Presentation.Induction.FramedPair} {chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p} {K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor} (T : Q2Presentation.Induction.Sec7RawTowerPacket chief K) : Q2Presentation.Induction.MinimalBlockPreheadTowerData p chief.toNonScalarChiefFactorThe pre-head tower assembled from the packet.) (FdetQ2Presentation.Induction.MinimalBlockPreheadExtraspecialEquivariantFamilyData (Q2Presentation.Induction.sec7RawTowerPacketCanonical chief K).preheadTowerData: Q2Presentation.Induction.MinimalBlockPreheadExtraspecialEquivariantFamilyDataQ2Presentation.Induction.MinimalBlockPreheadExtraspecialEquivariantFamilyData {p : Q2Presentation.Induction.FramedPair} {chief : Q2Presentation.Induction.NonScalarChiefFactor p} (D : Q2Presentation.Induction.MinimalBlockPreheadTowerData p chief) : TypeEquivariant extraspecial self-duality data over a pre-head tower. This is now an assembled packet: the bare central-pushout self-duality family and its `C`-naturality/diagonal-invariance proof are separated below, then reassembled here for the existing downstream pre-head determinant interfaces.(Q2Presentation.Induction.sec7RawTowerPacketCanonicalQ2Presentation.Induction.sec7RawTowerPacketCanonical {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.Sec7RawTowerPacket chief KThe canonical raw tower packet — the literal §7 constructors (checkpoint-F9). Using this definitional packet (instead of an opaque `Nonempty`-obtained one) lets the crux-lowered pushout packet of `Section7PushoutConstruction` be consumed directly.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).preheadTowerDataQ2Presentation.Induction.Sec7RawTowerPacket.preheadTowerData {p : Q2Presentation.Induction.FramedPair} {chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p} {K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor} (T : Q2Presentation.Induction.Sec7RawTowerPacket chief K) : Q2Presentation.Induction.MinimalBlockPreheadTowerData p chief.toNonScalarChiefFactorThe pre-head tower assembled from the packet.) (AQ2Presentation.Induction.MinimalBlockPreheadExtraspecialAnnihilationData Fdet: Q2Presentation.Induction.MinimalBlockPreheadExtraspecialAnnihilationDataQ2Presentation.Induction.MinimalBlockPreheadExtraspecialAnnihilationData {p : Q2Presentation.Induction.FramedPair} {chief : Q2Presentation.Induction.NonScalarChiefFactor p} {D : Q2Presentation.Induction.MinimalBlockPreheadTowerData p chief} (F : Q2Presentation.Induction.MinimalBlockPreheadExtraspecialEquivariantFamilyData D) : PropThe two annihilation conclusions of `prop:simpleheaddet`, stated over the pre-head equivariant determinant family.FdetQ2Presentation.Induction.MinimalBlockPreheadExtraspecialEquivariantFamilyData (Q2Presentation.Induction.sec7RawTowerPacketCanonical chief K).preheadTowerData) (RdetQ2Presentation.Induction.MinimalBlockPreheadExtraspecialRadicalData Fdet: Q2Presentation.Induction.MinimalBlockPreheadExtraspecialRadicalDataQ2Presentation.Induction.MinimalBlockPreheadExtraspecialRadicalData {p : Q2Presentation.Induction.FramedPair} {chief : Q2Presentation.Induction.NonScalarChiefFactor p} {D : Q2Presentation.Induction.MinimalBlockPreheadTowerData p chief} (F : Q2Presentation.Induction.MinimalBlockPreheadExtraspecialEquivariantFamilyData D) : PropThe polar-radical containment conclusion of `prop:simpleheaddet`, stated before the head-nontrivial field is installed.FdetQ2Presentation.Induction.MinimalBlockPreheadExtraspecialEquivariantFamilyData (Q2Presentation.Induction.sec7RawTowerPacketCanonical chief K).preheadTowerData) (NQ2Presentation.Induction.MinimalBlockPreheadExtraspecialNonzeroData Fdet: Q2Presentation.Induction.MinimalBlockPreheadExtraspecialNonzeroDataQ2Presentation.Induction.MinimalBlockPreheadExtraspecialNonzeroData {p : Q2Presentation.Induction.FramedPair} {chief : Q2Presentation.Induction.NonScalarChiefFactor p} {D : Q2Presentation.Induction.MinimalBlockPreheadTowerData p chief} (F : Q2Presentation.Induction.MinimalBlockPreheadExtraspecialEquivariantFamilyData D) : PropThe nonzero diagonal conclusion of `prop:simpleheaddet`, stated before the head-nontrivial field is installed.FdetQ2Presentation.Induction.MinimalBlockPreheadExtraspecialEquivariantFamilyData (Q2Presentation.Induction.sec7RawTowerPacketCanonical chief K).preheadTowerData) (h¬Q2Presentation.Induction.ScalarTerminal p: ¬Not (a : Prop) : Prop`Not p`, or `¬p`, is the negation of `p`. It is defined to be `p → False`, so if your goal is `¬p` you can use `intro h` to turn the goal into `h : p ⊢ False`, and if you have `hn : ¬p` and `h : p` then `hn h : False` and `(hn h).elim` will prove anything. For more information: [Propositional Logic](https://lean-lang.org/theorem_proving_in_lean4/propositions_and_proofs.html#propositional-logic) Conventions for notations in identifiers: * The recommended spelling of `¬` in identifiers is `not`.Q2Presentation.Induction.ScalarTerminalQ2Presentation.Induction.ScalarTerminal (p : Q2Presentation.Induction.FramedPair) : Prop**Scalar-terminal framed pair.**pQ2Presentation.Induction.FramedPair) (chiModule.Dual (ZMod 2) (Q2Presentation.Induction.BlockR.Bstar chief K X Fdet A Rdet N h).obstructionSpace: Module.DualModule.Dual.{u_4, u_5} (R : Type u_4) (M : Type u_5) [Semiring R] [AddCommMonoid M] [Module R M] : Type (max u_5 u_4)The left dual space of an R-module M is the R-module of linear maps `M → R`.(ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.2) (Q2Presentation.Induction.BlockR.BstarQ2Presentation.Induction.BlockR.Bstar {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (X : Q2Presentation.Induction.MinimalBlockPreheadInvariantCharacterData (Q2Presentation.Induction.sec7RawTowerPacketCanonical chief K).preheadTowerData) (Fdet : Q2Presentation.Induction.MinimalBlockPreheadExtraspecialEquivariantFamilyData (Q2Presentation.Induction.sec7RawTowerPacketCanonical chief K).preheadTowerData) (A : Q2Presentation.Induction.MinimalBlockPreheadExtraspecialAnnihilationData Fdet) (Rdet : Q2Presentation.Induction.MinimalBlockPreheadExtraspecialRadicalData Fdet) (N : Q2Presentation.Induction.MinimalBlockPreheadExtraspecialNonzeroData Fdet) (h : ¬Q2Presentation.Induction.ScalarTerminal p) : Q2Presentation.Induction.MinimalBlock pThe pinned block.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactorXQ2Presentation.Induction.MinimalBlockPreheadInvariantCharacterData (Q2Presentation.Induction.sec7RawTowerPacketCanonical chief K).preheadTowerDataFdetQ2Presentation.Induction.MinimalBlockPreheadExtraspecialEquivariantFamilyData (Q2Presentation.Induction.sec7RawTowerPacketCanonical chief K).preheadTowerDataAQ2Presentation.Induction.MinimalBlockPreheadExtraspecialAnnihilationData FdetRdetQ2Presentation.Induction.MinimalBlockPreheadExtraspecialRadicalData FdetNQ2Presentation.Induction.MinimalBlockPreheadExtraspecialNonzeroData Fdeth¬Q2Presentation.Induction.ScalarTerminal p).obstructionSpaceQ2Presentation.Induction.MinimalBlock.obstructionSpace {p : Q2Presentation.Induction.FramedPair} (B : Q2Presentation.Induction.MinimalBlock p) : Type**The `R`-valued obstruction space `W = O_R`** (`prop:finalfourier`). By `lem:obstructionseparation` (l.4213, `𝒳_R = (R^∨)^B = (R^∨)^C` is *canonically the dual of the `R`-valued obstruction space*), `O_R = (𝒳_R)^∨`, so `O_R = Module.Dual (ZMod 2) 𝒳_R`. This is the finite `𝔽₂` space `FourierBranchData.W` the §8 Fourier branch consumes: the `R`-valued lifting obstruction `o_Γ` lands in `O_R`, and its character group `Ŵ = Dual O_R ≅ 𝒳_R` is the index of the Fourier sum `eq:recursionR1`.) : ↥(Q2Presentation.Lifting.conjInvDualsQ2Presentation.Lifting.conjInvDuals {Yt : Q2Presentation.BoundaryFramedTarget} (E : Q2Presentation.Lifting.ElementaryKernel Yt) : Submodule (ZMod 2) (Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E))The conjugation-invariant duals `X = (R^∨)^Y = (R^∨)^C` of an elementary kernel (consumer spelling of the manuscript's `𝒳_R`, §7 l.3720–3723).(Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel** (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor))**The invariant dual attached to a character** of the block obstruction space: double-dual reflexivity (`Module.evalEquiv` at the finite `𝔽₂` space `𝒳_R`) followed by the `blockXR_eq_conjInvDuals` transport — the χ ↔ λ leg of `lem:obstructionseparation`.
-
theoremdefined in Q2Presentation/Induction/BlockRealizationAssembly.leancomplete
theorem Q2Presentation.Induction.BlockR.blockPerCharA_card_eq_coverCount {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) (XQ2Presentation.Induction.MinimalBlockPreheadInvariantCharacterData (Q2Presentation.Induction.sec7RawTowerPacketCanonical chief K).preheadTowerData: Q2Presentation.Induction.MinimalBlockPreheadInvariantCharacterDataQ2Presentation.Induction.MinimalBlockPreheadInvariantCharacterData {p : Q2Presentation.Induction.FramedPair} {chief : Q2Presentation.Induction.NonScalarChiefFactor p} (D : Q2Presentation.Induction.MinimalBlockPreheadTowerData p chief) : PropNonzero invariant determinant characters over a pre-head Section 7 tower. This is the same Frattini-character input as `MinimalBlockInvariantCharacterData`, but stated before `M/T` has been proved nonzero.(Q2Presentation.Induction.sec7RawTowerPacketCanonicalQ2Presentation.Induction.sec7RawTowerPacketCanonical {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.Sec7RawTowerPacket chief KThe canonical raw tower packet — the literal §7 constructors (checkpoint-F9). Using this definitional packet (instead of an opaque `Nonempty`-obtained one) lets the crux-lowered pushout packet of `Section7PushoutConstruction` be consumed directly.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).preheadTowerDataQ2Presentation.Induction.Sec7RawTowerPacket.preheadTowerData {p : Q2Presentation.Induction.FramedPair} {chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p} {K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor} (T : Q2Presentation.Induction.Sec7RawTowerPacket chief K) : Q2Presentation.Induction.MinimalBlockPreheadTowerData p chief.toNonScalarChiefFactorThe pre-head tower assembled from the packet.) (FdetQ2Presentation.Induction.MinimalBlockPreheadExtraspecialEquivariantFamilyData (Q2Presentation.Induction.sec7RawTowerPacketCanonical chief K).preheadTowerData: Q2Presentation.Induction.MinimalBlockPreheadExtraspecialEquivariantFamilyDataQ2Presentation.Induction.MinimalBlockPreheadExtraspecialEquivariantFamilyData {p : Q2Presentation.Induction.FramedPair} {chief : Q2Presentation.Induction.NonScalarChiefFactor p} (D : Q2Presentation.Induction.MinimalBlockPreheadTowerData p chief) : TypeEquivariant extraspecial self-duality data over a pre-head tower. This is now an assembled packet: the bare central-pushout self-duality family and its `C`-naturality/diagonal-invariance proof are separated below, then reassembled here for the existing downstream pre-head determinant interfaces.(Q2Presentation.Induction.sec7RawTowerPacketCanonicalQ2Presentation.Induction.sec7RawTowerPacketCanonical {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.Sec7RawTowerPacket chief KThe canonical raw tower packet — the literal §7 constructors (checkpoint-F9). Using this definitional packet (instead of an opaque `Nonempty`-obtained one) lets the crux-lowered pushout packet of `Section7PushoutConstruction` be consumed directly.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).preheadTowerDataQ2Presentation.Induction.Sec7RawTowerPacket.preheadTowerData {p : Q2Presentation.Induction.FramedPair} {chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p} {K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor} (T : Q2Presentation.Induction.Sec7RawTowerPacket chief K) : Q2Presentation.Induction.MinimalBlockPreheadTowerData p chief.toNonScalarChiefFactorThe pre-head tower assembled from the packet.) (AQ2Presentation.Induction.MinimalBlockPreheadExtraspecialAnnihilationData Fdet: Q2Presentation.Induction.MinimalBlockPreheadExtraspecialAnnihilationDataQ2Presentation.Induction.MinimalBlockPreheadExtraspecialAnnihilationData {p : Q2Presentation.Induction.FramedPair} {chief : Q2Presentation.Induction.NonScalarChiefFactor p} {D : Q2Presentation.Induction.MinimalBlockPreheadTowerData p chief} (F : Q2Presentation.Induction.MinimalBlockPreheadExtraspecialEquivariantFamilyData D) : PropThe two annihilation conclusions of `prop:simpleheaddet`, stated over the pre-head equivariant determinant family.FdetQ2Presentation.Induction.MinimalBlockPreheadExtraspecialEquivariantFamilyData (Q2Presentation.Induction.sec7RawTowerPacketCanonical chief K).preheadTowerData) (RdetQ2Presentation.Induction.MinimalBlockPreheadExtraspecialRadicalData Fdet: Q2Presentation.Induction.MinimalBlockPreheadExtraspecialRadicalDataQ2Presentation.Induction.MinimalBlockPreheadExtraspecialRadicalData {p : Q2Presentation.Induction.FramedPair} {chief : Q2Presentation.Induction.NonScalarChiefFactor p} {D : Q2Presentation.Induction.MinimalBlockPreheadTowerData p chief} (F : Q2Presentation.Induction.MinimalBlockPreheadExtraspecialEquivariantFamilyData D) : PropThe polar-radical containment conclusion of `prop:simpleheaddet`, stated before the head-nontrivial field is installed.FdetQ2Presentation.Induction.MinimalBlockPreheadExtraspecialEquivariantFamilyData (Q2Presentation.Induction.sec7RawTowerPacketCanonical chief K).preheadTowerData) (NQ2Presentation.Induction.MinimalBlockPreheadExtraspecialNonzeroData Fdet: Q2Presentation.Induction.MinimalBlockPreheadExtraspecialNonzeroDataQ2Presentation.Induction.MinimalBlockPreheadExtraspecialNonzeroData {p : Q2Presentation.Induction.FramedPair} {chief : Q2Presentation.Induction.NonScalarChiefFactor p} {D : Q2Presentation.Induction.MinimalBlockPreheadTowerData p chief} (F : Q2Presentation.Induction.MinimalBlockPreheadExtraspecialEquivariantFamilyData D) : PropThe nonzero diagonal conclusion of `prop:simpleheaddet`, stated before the head-nontrivial field is installed.FdetQ2Presentation.Induction.MinimalBlockPreheadExtraspecialEquivariantFamilyData (Q2Presentation.Induction.sec7RawTowerPacketCanonical chief K).preheadTowerData) (h¬Q2Presentation.Induction.ScalarTerminal p: ¬Not (a : Prop) : Prop`Not p`, or `¬p`, is the negation of `p`. It is defined to be `p → False`, so if your goal is `¬p` you can use `intro h` to turn the goal into `h : p ⊢ False`, and if you have `hn : ¬p` and `h : p` then `hn h : False` and `(hn h).elim` will prove anything. For more information: [Propositional Logic](https://lean-lang.org/theorem_proving_in_lean4/propositions_and_proofs.html#propositional-logic) Conventions for notations in identifiers: * The recommended spelling of `¬` in identifiers is `not`.Q2Presentation.Induction.ScalarTerminalQ2Presentation.Induction.ScalarTerminal (p : Q2Presentation.Induction.FramedPair) : Prop**Scalar-terminal framed pair.**pQ2Presentation.Induction.FramedPair) (chiModule.Dual (ZMod 2) (Q2Presentation.Induction.BlockR.Bstar chief K X Fdet A Rdet N h).obstructionSpace: Module.DualModule.Dual.{u_4, u_5} (R : Type u_4) (M : Type u_5) [Semiring R] [AddCommMonoid M] [Module R M] : Type (max u_5 u_4)The left dual space of an R-module M is the R-module of linear maps `M → R`.(ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.2) (Q2Presentation.Induction.BlockR.BstarQ2Presentation.Induction.BlockR.Bstar {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (X : Q2Presentation.Induction.MinimalBlockPreheadInvariantCharacterData (Q2Presentation.Induction.sec7RawTowerPacketCanonical chief K).preheadTowerData) (Fdet : Q2Presentation.Induction.MinimalBlockPreheadExtraspecialEquivariantFamilyData (Q2Presentation.Induction.sec7RawTowerPacketCanonical chief K).preheadTowerData) (A : Q2Presentation.Induction.MinimalBlockPreheadExtraspecialAnnihilationData Fdet) (Rdet : Q2Presentation.Induction.MinimalBlockPreheadExtraspecialRadicalData Fdet) (N : Q2Presentation.Induction.MinimalBlockPreheadExtraspecialNonzeroData Fdet) (h : ¬Q2Presentation.Induction.ScalarTerminal p) : Q2Presentation.Induction.MinimalBlock pThe pinned block.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactorXQ2Presentation.Induction.MinimalBlockPreheadInvariantCharacterData (Q2Presentation.Induction.sec7RawTowerPacketCanonical chief K).preheadTowerDataFdetQ2Presentation.Induction.MinimalBlockPreheadExtraspecialEquivariantFamilyData (Q2Presentation.Induction.sec7RawTowerPacketCanonical chief K).preheadTowerDataAQ2Presentation.Induction.MinimalBlockPreheadExtraspecialAnnihilationData FdetRdetQ2Presentation.Induction.MinimalBlockPreheadExtraspecialRadicalData FdetNQ2Presentation.Induction.MinimalBlockPreheadExtraspecialNonzeroData Fdeth¬Q2Presentation.Induction.ScalarTerminal p).obstructionSpaceQ2Presentation.Induction.MinimalBlock.obstructionSpace {p : Q2Presentation.Induction.FramedPair} (B : Q2Presentation.Induction.MinimalBlock p) : Type**The `R`-valued obstruction space `W = O_R`** (`prop:finalfourier`). By `lem:obstructionseparation` (l.4213, `𝒳_R = (R^∨)^B = (R^∨)^C` is *canonically the dual of the `R`-valued obstruction space*), `O_R = (𝒳_R)^∨`, so `O_R = Module.Dual (ZMod 2) 𝒳_R`. This is the finite `𝔽₂` space `FourierBranchData.W` the §8 Fourier branch consumes: the `R`-valued lifting obstruction `o_Γ` lands in `O_R`, and its character group `Ŵ = Dual O_R ≅ 𝒳_R` is the index of the Fourier sum `eq:recursionR1`.) (hchichi ≠ 0: chiModule.Dual (ZMod 2) (Q2Presentation.Induction.BlockR.Bstar chief K X Fdet A Rdet N h).obstructionSpace≠Ne.{u} {α : Sort u} (a b : α) : Prop`a ≠ b`, or `Ne a b` is defined as `¬ (a = b)` or `a = b → False`, and asserts that `a` and `b` are not equal. Conventions for notations in identifiers: * The recommended spelling of `≠` in identifiers is `ne`.0) : Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number. If `α` is infinite, `Nat.card α = 0`.{Subtype.{u} {α : Sort u} (p : α → Prop) : Sort (max 1 u)All the elements of a type that satisfy a predicate. `Subtype p`, usually written `{ x : α // p x }` or `{ x // p x }`, contains all elements `x : α` for which `p x` is true. Its constructor is a pair of the value and the proof that it satisfies the predicate. In run-time code, `{ x : α // p x }` is represented identically to `α`. There is a coercion from `{ x : α // p x }` to `α`, so elements of a subtype may be used where the underlying type is expected. Examples: * `{ n : Nat // n % 2 = 0 }` is the type of even numbers. * `{ xs : Array String // xs.size = 5 }` is the type of arrays with five `String`s. * Given `xs : List α`, `List { x : α // x ∈ xs }` is the type of lists in which all elements are contained in `xs`. Conventions for notations in identifiers: * The recommended spelling of `{ x // p x }` in identifiers is `subtype`.gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GammaA (Q2Presentation.Induction.XRZero.xrChild chief K).fst (Q2Presentation.Induction.XRZero.xrChild chief K).snd//Subtype.{u} {α : Sort u} (p : α → Prop) : Sort (max 1 u)All the elements of a type that satisfy a predicate. `Subtype p`, usually written `{ x : α // p x }` or `{ x // p x }`, contains all elements `x : α` for which `p x` is true. Its constructor is a pair of the value and the proof that it satisfies the predicate. In run-time code, `{ x : α // p x }` is represented identically to `α`. There is a coercion from `{ x : α // p x }` to `α`, so elements of a subtype may be used where the underlying type is expected. Examples: * `{ n : Nat // n % 2 = 0 }` is the type of even numbers. * `{ xs : Array String // xs.size = 5 }` is the type of arrays with five `String`s. * Given `xs : List α`, `List { x : α // x ∈ xs }` is the type of lists in which all elements are contained in `xs`. Conventions for notations in identifiers: * The recommended spelling of `{ x // p x }` in identifiers is `subtype`.chiModule.Dual (ZMod 2) (Q2Presentation.Induction.BlockR.Bstar chief K X Fdet A Rdet N h).obstructionSpace(Q2Presentation.Induction.BlockR.blockObstructionAQ2Presentation.Induction.BlockR.blockObstructionA {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (X : Q2Presentation.Induction.MinimalBlockPreheadInvariantCharacterData (Q2Presentation.Induction.sec7RawTowerPacketCanonical chief K).preheadTowerData) (Fdet : Q2Presentation.Induction.MinimalBlockPreheadExtraspecialEquivariantFamilyData (Q2Presentation.Induction.sec7RawTowerPacketCanonical chief K).preheadTowerData) (A : Q2Presentation.Induction.MinimalBlockPreheadExtraspecialAnnihilationData Fdet) (Rdet : Q2Presentation.Induction.MinimalBlockPreheadExtraspecialRadicalData Fdet) (N : Q2Presentation.Induction.MinimalBlockPreheadExtraspecialNonzeroData Fdet) (h : ¬Q2Presentation.Induction.ScalarTerminal p) (g : Q2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GammaA (Q2Presentation.Induction.XRZero.xrChild chief K).fst (Q2Presentation.Induction.XRZero.xrChild chief K).snd) : (Q2Presentation.Induction.BlockR.Bstar chief K X Fdet A Rdet N h).obstructionSpace**The canonical candidate obstruction in block spelling**: the `XRObstruction` defect pairing, transported along `blockXR_eq_conjInvDuals`.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactorXQ2Presentation.Induction.MinimalBlockPreheadInvariantCharacterData (Q2Presentation.Induction.sec7RawTowerPacketCanonical chief K).preheadTowerDataFdetQ2Presentation.Induction.MinimalBlockPreheadExtraspecialEquivariantFamilyData (Q2Presentation.Induction.sec7RawTowerPacketCanonical chief K).preheadTowerDataAQ2Presentation.Induction.MinimalBlockPreheadExtraspecialAnnihilationData FdetRdetQ2Presentation.Induction.MinimalBlockPreheadExtraspecialRadicalData FdetNQ2Presentation.Induction.MinimalBlockPreheadExtraspecialNonzeroData Fdeth¬Q2Presentation.Induction.ScalarTerminal pgQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GammaA (Q2Presentation.Induction.XRZero.xrChild chief K).fst (Q2Presentation.Induction.XRZero.xrChild chief K).snd) =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`. We use `a = b` as notation for `Eq a b`. A fundamental property of equality is that it is an equivalence relation. ``` variable (α : Type) (a b c d : α) variable (hab : a = b) (hcb : c = b) (hcd : c = d) example : a = d := Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd ``` Equality is much more than an equivalence relation, however. It has the important property that every assertion respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value. That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`. Example: ``` example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := Eq.subst h1 h2 example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := h1 ▸ h2 ``` The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`. For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality) Conventions for notations in identifiers: * The recommended spelling of `=` in identifiers is `eq`.0 }Subtype.{u} {α : Sort u} (p : α → Prop) : Sort (max 1 u)All the elements of a type that satisfy a predicate. `Subtype p`, usually written `{ x : α // p x }` or `{ x // p x }`, contains all elements `x : α` for which `p x` is true. Its constructor is a pair of the value and the proof that it satisfies the predicate. In run-time code, `{ x : α // p x }` is represented identically to `α`. There is a coercion from `{ x : α // p x }` to `α`, so elements of a subtype may be used where the underlying type is expected. Examples: * `{ n : Nat // n % 2 = 0 }` is the type of even numbers. * `{ xs : Array String // xs.size = 5 }` is the type of arrays with five `String`s. * Given `xs : List α`, `List { x : α // x ∈ xs }` is the type of lists in which all elements are contained in `xs`. Conventions for notations in identifiers: * The recommended spelling of `{ x // p x }` in identifiers is `subtype`.=Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`. We use `a = b` as notation for `Eq a b`. A fundamental property of equality is that it is an equivalence relation. ``` variable (α : Type) (a b c d : α) variable (hab : a = b) (hcb : c = b) (hcd : c = d) example : a = d := Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd ``` Equality is much more than an equivalence relation, however. It has the important property that every assertion respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value. That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`. Example: ``` example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := Eq.subst h1 h2 example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := h1 ▸ h2 ``` The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`. For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality) Conventions for notations in identifiers: * The recommended spelling of `=` in identifiers is `eq`.Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number. If `α` is infinite, `Nat.card α = 0`.{Subtype.{u} {α : Sort u} (p : α → Prop) : Sort (max 1 u)All the elements of a type that satisfy a predicate. `Subtype p`, usually written `{ x : α // p x }` or `{ x // p x }`, contains all elements `x : α` for which `p x` is true. Its constructor is a pair of the value and the proof that it satisfies the predicate. In run-time code, `{ x : α // p x }` is represented identically to `α`. There is a coercion from `{ x : α // p x }` to `α`, so elements of a subtype may be used where the underlying type is expected. Examples: * `{ n : Nat // n % 2 = 0 }` is the type of even numbers. * `{ xs : Array String // xs.size = 5 }` is the type of arrays with five `String`s. * Given `xs : List α`, `List { x : α // x ∈ xs }` is the type of lists in which all elements are contained in `xs`. Conventions for notations in identifiers: * The recommended spelling of `{ x // p x }` in identifiers is `subtype`.gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GammaA (Q2Presentation.Induction.XRZero.xrChild chief K).fst (Q2Presentation.Induction.XRZero.xrChild chief K).snd//Subtype.{u} {α : Sort u} (p : α → Prop) : Sort (max 1 u)All the elements of a type that satisfy a predicate. `Subtype p`, usually written `{ x : α // p x }` or `{ x // p x }`, contains all elements `x : α` for which `p x` is true. Its constructor is a pair of the value and the proof that it satisfies the predicate. In run-time code, `{ x : α // p x }` is represented identically to `α`. There is a coercion from `{ x : α // p x }` to `α`, so elements of a subtype may be used where the underlying type is expected. Examples: * `{ n : Nat // n % 2 = 0 }` is the type of even numbers. * `{ xs : Array String // xs.size = 5 }` is the type of arrays with five `String`s. * Given `xs : List α`, `List { x : α // x ∈ xs }` is the type of lists in which all elements are contained in `xs`. Conventions for notations in identifiers: * The recommended spelling of `{ x // p x }` in identifiers is `subtype`.NonemptyNonempty.{u} (α : Sort u) : Prop`Nonempty α` is a typeclass that says that `α` is not an empty type, that is, there exists an element in the type. It differs from `Inhabited α` in that `Nonempty α` is a `Prop`, which means that it does not actually carry an element of `α`, only a proof that *there exists* such an element. Given `Nonempty α`, you can construct an element of `α` *nonconstructively* using `Classical.choice`.(Q2Presentation.Lifting.scalarCoverLiftHomQ2Presentation.Lifting.scalarCoverLiftHom {Yt : Q2Presentation.BoundaryFramedTarget} [Finite Yt.Y] (E : Q2Presentation.Lifting.ElementaryKernel Yt) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E)) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals E) {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (F : Q2Presentation.BoundaryFrame Yt) (g : Q2Presentation.boundaryFramedSurj B (Q2Presentation.TorsorProgram.quotientFramedTarget Yt E.N ⋯ ⋯) (Q2Presentation.TorsorProgram.quotientFrame Yt E.N ⋯ ⋯ F)) : Type**Cover lifts of `g`** (`lem:obstructionseparation` l.4219–4223): framed homs `Γ ⟶ B_λ` over `g` — surjectivity NOT imposed (the manuscript's compatible lifts: `λ_*o` measures weak liftability; images are stratified by `eq:recursionR2`/`R3` later).(Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel** (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) ↑(Q2Presentation.Induction.BlockR.blockCharDualQ2Presentation.Induction.BlockR.blockCharDual {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (X : Q2Presentation.Induction.MinimalBlockPreheadInvariantCharacterData (Q2Presentation.Induction.sec7RawTowerPacketCanonical chief K).preheadTowerData) (Fdet : Q2Presentation.Induction.MinimalBlockPreheadExtraspecialEquivariantFamilyData (Q2Presentation.Induction.sec7RawTowerPacketCanonical chief K).preheadTowerData) (A : Q2Presentation.Induction.MinimalBlockPreheadExtraspecialAnnihilationData Fdet) (Rdet : Q2Presentation.Induction.MinimalBlockPreheadExtraspecialRadicalData Fdet) (N : Q2Presentation.Induction.MinimalBlockPreheadExtraspecialNonzeroData Fdet) (h : ¬Q2Presentation.Induction.ScalarTerminal p) (chi : Module.Dual (ZMod 2) (Q2Presentation.Induction.BlockR.Bstar chief K X Fdet A Rdet N h).obstructionSpace) : ↥(Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K))**The invariant dual attached to a character** of the block obstruction space: double-dual reflexivity (`Module.evalEquiv` at the finite `𝔽₂` space `𝒳_R`) followed by the `blockXR_eq_conjInvDuals` transport — the χ ↔ λ leg of `lem:obstructionseparation`.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactorXQ2Presentation.Induction.MinimalBlockPreheadInvariantCharacterData (Q2Presentation.Induction.sec7RawTowerPacketCanonical chief K).preheadTowerDataFdetQ2Presentation.Induction.MinimalBlockPreheadExtraspecialEquivariantFamilyData (Q2Presentation.Induction.sec7RawTowerPacketCanonical chief K).preheadTowerDataAQ2Presentation.Induction.MinimalBlockPreheadExtraspecialAnnihilationData FdetRdetQ2Presentation.Induction.MinimalBlockPreheadExtraspecialRadicalData FdetNQ2Presentation.Induction.MinimalBlockPreheadExtraspecialNonzeroData Fdeth¬Q2Presentation.Induction.ScalarTerminal pchiModule.Dual (ZMod 2) (Q2Presentation.Induction.BlockR.Bstar chief K X Fdet A Rdet N h).obstructionSpace) ⋯ Q2Presentation.boundaryPackage_GammaAQ2Presentation.boundaryPackage_GammaA : Q2Presentation.BoundaryPackage Q2Presentation.GammaA**The candidate boundary package** (manuscript Prop 3.14, `prop:compatiblemarking`; plan Turn 4 §6). The Stage-C data of `Γ_A`: the common tame quotient `gammaTameMap`, the maximal pro-`2` quotient `p : Γ_A ⟶ Π`, and the common unramified character `ν = gammaTameMap ≫ ν_t`, through which both factor.pQ2Presentation.Induction.FramedPair.sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GammaA (Q2Presentation.Induction.XRZero.xrChild chief K).fst (Q2Presentation.Induction.XRZero.xrChild chief K).snd) }Subtype.{u} {α : Sort u} (p : α → Prop) : Sort (max 1 u)All the elements of a type that satisfy a predicate. `Subtype p`, usually written `{ x : α // p x }` or `{ x // p x }`, contains all elements `x : α` for which `p x` is true. Its constructor is a pair of the value and the proof that it satisfies the predicate. In run-time code, `{ x : α // p x }` is represented identically to `α`. There is a coercion from `{ x : α // p x }` to `α`, so elements of a subtype may be used where the underlying type is expected. Examples: * `{ n : Nat // n % 2 = 0 }` is the type of even numbers. * `{ xs : Array String // xs.size = 5 }` is the type of arrays with five `String`s. * Given `xs : List α`, `List { x : α // x ∈ xs }` is the type of lists in which all elements are contained in `xs`. Conventions for notations in identifiers: * The recommended spelling of `{ x // p x }` in identifiers is `subtype`.theorem Q2Presentation.Induction.BlockR.blockPerCharA_card_eq_coverCount {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) (XQ2Presentation.Induction.MinimalBlockPreheadInvariantCharacterData (Q2Presentation.Induction.sec7RawTowerPacketCanonical chief K).preheadTowerData: Q2Presentation.Induction.MinimalBlockPreheadInvariantCharacterDataQ2Presentation.Induction.MinimalBlockPreheadInvariantCharacterData {p : Q2Presentation.Induction.FramedPair} {chief : Q2Presentation.Induction.NonScalarChiefFactor p} (D : Q2Presentation.Induction.MinimalBlockPreheadTowerData p chief) : PropNonzero invariant determinant characters over a pre-head Section 7 tower. This is the same Frattini-character input as `MinimalBlockInvariantCharacterData`, but stated before `M/T` has been proved nonzero.(Q2Presentation.Induction.sec7RawTowerPacketCanonicalQ2Presentation.Induction.sec7RawTowerPacketCanonical {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.Sec7RawTowerPacket chief KThe canonical raw tower packet — the literal §7 constructors (checkpoint-F9). Using this definitional packet (instead of an opaque `Nonempty`-obtained one) lets the crux-lowered pushout packet of `Section7PushoutConstruction` be consumed directly.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).preheadTowerDataQ2Presentation.Induction.Sec7RawTowerPacket.preheadTowerData {p : Q2Presentation.Induction.FramedPair} {chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p} {K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor} (T : Q2Presentation.Induction.Sec7RawTowerPacket chief K) : Q2Presentation.Induction.MinimalBlockPreheadTowerData p chief.toNonScalarChiefFactorThe pre-head tower assembled from the packet.) (FdetQ2Presentation.Induction.MinimalBlockPreheadExtraspecialEquivariantFamilyData (Q2Presentation.Induction.sec7RawTowerPacketCanonical chief K).preheadTowerData: Q2Presentation.Induction.MinimalBlockPreheadExtraspecialEquivariantFamilyDataQ2Presentation.Induction.MinimalBlockPreheadExtraspecialEquivariantFamilyData {p : Q2Presentation.Induction.FramedPair} {chief : Q2Presentation.Induction.NonScalarChiefFactor p} (D : Q2Presentation.Induction.MinimalBlockPreheadTowerData p chief) : TypeEquivariant extraspecial self-duality data over a pre-head tower. This is now an assembled packet: the bare central-pushout self-duality family and its `C`-naturality/diagonal-invariance proof are separated below, then reassembled here for the existing downstream pre-head determinant interfaces.(Q2Presentation.Induction.sec7RawTowerPacketCanonicalQ2Presentation.Induction.sec7RawTowerPacketCanonical {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.Sec7RawTowerPacket chief KThe canonical raw tower packet — the literal §7 constructors (checkpoint-F9). Using this definitional packet (instead of an opaque `Nonempty`-obtained one) lets the crux-lowered pushout packet of `Section7PushoutConstruction` be consumed directly.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).preheadTowerDataQ2Presentation.Induction.Sec7RawTowerPacket.preheadTowerData {p : Q2Presentation.Induction.FramedPair} {chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p} {K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor} (T : Q2Presentation.Induction.Sec7RawTowerPacket chief K) : Q2Presentation.Induction.MinimalBlockPreheadTowerData p chief.toNonScalarChiefFactorThe pre-head tower assembled from the packet.) (AQ2Presentation.Induction.MinimalBlockPreheadExtraspecialAnnihilationData Fdet: Q2Presentation.Induction.MinimalBlockPreheadExtraspecialAnnihilationDataQ2Presentation.Induction.MinimalBlockPreheadExtraspecialAnnihilationData {p : Q2Presentation.Induction.FramedPair} {chief : Q2Presentation.Induction.NonScalarChiefFactor p} {D : Q2Presentation.Induction.MinimalBlockPreheadTowerData p chief} (F : Q2Presentation.Induction.MinimalBlockPreheadExtraspecialEquivariantFamilyData D) : PropThe two annihilation conclusions of `prop:simpleheaddet`, stated over the pre-head equivariant determinant family.FdetQ2Presentation.Induction.MinimalBlockPreheadExtraspecialEquivariantFamilyData (Q2Presentation.Induction.sec7RawTowerPacketCanonical chief K).preheadTowerData) (RdetQ2Presentation.Induction.MinimalBlockPreheadExtraspecialRadicalData Fdet: Q2Presentation.Induction.MinimalBlockPreheadExtraspecialRadicalDataQ2Presentation.Induction.MinimalBlockPreheadExtraspecialRadicalData {p : Q2Presentation.Induction.FramedPair} {chief : Q2Presentation.Induction.NonScalarChiefFactor p} {D : Q2Presentation.Induction.MinimalBlockPreheadTowerData p chief} (F : Q2Presentation.Induction.MinimalBlockPreheadExtraspecialEquivariantFamilyData D) : PropThe polar-radical containment conclusion of `prop:simpleheaddet`, stated before the head-nontrivial field is installed.FdetQ2Presentation.Induction.MinimalBlockPreheadExtraspecialEquivariantFamilyData (Q2Presentation.Induction.sec7RawTowerPacketCanonical chief K).preheadTowerData) (NQ2Presentation.Induction.MinimalBlockPreheadExtraspecialNonzeroData Fdet: Q2Presentation.Induction.MinimalBlockPreheadExtraspecialNonzeroDataQ2Presentation.Induction.MinimalBlockPreheadExtraspecialNonzeroData {p : Q2Presentation.Induction.FramedPair} {chief : Q2Presentation.Induction.NonScalarChiefFactor p} {D : Q2Presentation.Induction.MinimalBlockPreheadTowerData p chief} (F : Q2Presentation.Induction.MinimalBlockPreheadExtraspecialEquivariantFamilyData D) : PropThe nonzero diagonal conclusion of `prop:simpleheaddet`, stated before the head-nontrivial field is installed.FdetQ2Presentation.Induction.MinimalBlockPreheadExtraspecialEquivariantFamilyData (Q2Presentation.Induction.sec7RawTowerPacketCanonical chief K).preheadTowerData) (h¬Q2Presentation.Induction.ScalarTerminal p: ¬Not (a : Prop) : Prop`Not p`, or `¬p`, is the negation of `p`. It is defined to be `p → False`, so if your goal is `¬p` you can use `intro h` to turn the goal into `h : p ⊢ False`, and if you have `hn : ¬p` and `h : p` then `hn h : False` and `(hn h).elim` will prove anything. For more information: [Propositional Logic](https://lean-lang.org/theorem_proving_in_lean4/propositions_and_proofs.html#propositional-logic) Conventions for notations in identifiers: * The recommended spelling of `¬` in identifiers is `not`.Q2Presentation.Induction.ScalarTerminalQ2Presentation.Induction.ScalarTerminal (p : Q2Presentation.Induction.FramedPair) : Prop**Scalar-terminal framed pair.**pQ2Presentation.Induction.FramedPair) (chiModule.Dual (ZMod 2) (Q2Presentation.Induction.BlockR.Bstar chief K X Fdet A Rdet N h).obstructionSpace: Module.DualModule.Dual.{u_4, u_5} (R : Type u_4) (M : Type u_5) [Semiring R] [AddCommMonoid M] [Module R M] : Type (max u_5 u_4)The left dual space of an R-module M is the R-module of linear maps `M → R`.(ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.2) (Q2Presentation.Induction.BlockR.BstarQ2Presentation.Induction.BlockR.Bstar {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (X : Q2Presentation.Induction.MinimalBlockPreheadInvariantCharacterData (Q2Presentation.Induction.sec7RawTowerPacketCanonical chief K).preheadTowerData) (Fdet : Q2Presentation.Induction.MinimalBlockPreheadExtraspecialEquivariantFamilyData (Q2Presentation.Induction.sec7RawTowerPacketCanonical chief K).preheadTowerData) (A : Q2Presentation.Induction.MinimalBlockPreheadExtraspecialAnnihilationData Fdet) (Rdet : Q2Presentation.Induction.MinimalBlockPreheadExtraspecialRadicalData Fdet) (N : Q2Presentation.Induction.MinimalBlockPreheadExtraspecialNonzeroData Fdet) (h : ¬Q2Presentation.Induction.ScalarTerminal p) : Q2Presentation.Induction.MinimalBlock pThe pinned block.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactorXQ2Presentation.Induction.MinimalBlockPreheadInvariantCharacterData (Q2Presentation.Induction.sec7RawTowerPacketCanonical chief K).preheadTowerDataFdetQ2Presentation.Induction.MinimalBlockPreheadExtraspecialEquivariantFamilyData (Q2Presentation.Induction.sec7RawTowerPacketCanonical chief K).preheadTowerDataAQ2Presentation.Induction.MinimalBlockPreheadExtraspecialAnnihilationData FdetRdetQ2Presentation.Induction.MinimalBlockPreheadExtraspecialRadicalData FdetNQ2Presentation.Induction.MinimalBlockPreheadExtraspecialNonzeroData Fdeth¬Q2Presentation.Induction.ScalarTerminal p).obstructionSpaceQ2Presentation.Induction.MinimalBlock.obstructionSpace {p : Q2Presentation.Induction.FramedPair} (B : Q2Presentation.Induction.MinimalBlock p) : Type**The `R`-valued obstruction space `W = O_R`** (`prop:finalfourier`). By `lem:obstructionseparation` (l.4213, `𝒳_R = (R^∨)^B = (R^∨)^C` is *canonically the dual of the `R`-valued obstruction space*), `O_R = (𝒳_R)^∨`, so `O_R = Module.Dual (ZMod 2) 𝒳_R`. This is the finite `𝔽₂` space `FourierBranchData.W` the §8 Fourier branch consumes: the `R`-valued lifting obstruction `o_Γ` lands in `O_R`, and its character group `Ŵ = Dual O_R ≅ 𝒳_R` is the index of the Fourier sum `eq:recursionR1`.) (hchichi ≠ 0: chiModule.Dual (ZMod 2) (Q2Presentation.Induction.BlockR.Bstar chief K X Fdet A Rdet N h).obstructionSpace≠Ne.{u} {α : Sort u} (a b : α) : Prop`a ≠ b`, or `Ne a b` is defined as `¬ (a = b)` or `a = b → False`, and asserts that `a` and `b` are not equal. Conventions for notations in identifiers: * The recommended spelling of `≠` in identifiers is `ne`.0) : Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number. If `α` is infinite, `Nat.card α = 0`.{Subtype.{u} {α : Sort u} (p : α → Prop) : Sort (max 1 u)All the elements of a type that satisfy a predicate. `Subtype p`, usually written `{ x : α // p x }` or `{ x // p x }`, contains all elements `x : α` for which `p x` is true. Its constructor is a pair of the value and the proof that it satisfies the predicate. In run-time code, `{ x : α // p x }` is represented identically to `α`. There is a coercion from `{ x : α // p x }` to `α`, so elements of a subtype may be used where the underlying type is expected. Examples: * `{ n : Nat // n % 2 = 0 }` is the type of even numbers. * `{ xs : Array String // xs.size = 5 }` is the type of arrays with five `String`s. * Given `xs : List α`, `List { x : α // x ∈ xs }` is the type of lists in which all elements are contained in `xs`. Conventions for notations in identifiers: * The recommended spelling of `{ x // p x }` in identifiers is `subtype`.gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GammaA (Q2Presentation.Induction.XRZero.xrChild chief K).fst (Q2Presentation.Induction.XRZero.xrChild chief K).snd//Subtype.{u} {α : Sort u} (p : α → Prop) : Sort (max 1 u)All the elements of a type that satisfy a predicate. `Subtype p`, usually written `{ x : α // p x }` or `{ x // p x }`, contains all elements `x : α` for which `p x` is true. Its constructor is a pair of the value and the proof that it satisfies the predicate. In run-time code, `{ x : α // p x }` is represented identically to `α`. There is a coercion from `{ x : α // p x }` to `α`, so elements of a subtype may be used where the underlying type is expected. Examples: * `{ n : Nat // n % 2 = 0 }` is the type of even numbers. * `{ xs : Array String // xs.size = 5 }` is the type of arrays with five `String`s. * Given `xs : List α`, `List { x : α // x ∈ xs }` is the type of lists in which all elements are contained in `xs`. Conventions for notations in identifiers: * The recommended spelling of `{ x // p x }` in identifiers is `subtype`.chiModule.Dual (ZMod 2) (Q2Presentation.Induction.BlockR.Bstar chief K X Fdet A Rdet N h).obstructionSpace(Q2Presentation.Induction.BlockR.blockObstructionAQ2Presentation.Induction.BlockR.blockObstructionA {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (X : Q2Presentation.Induction.MinimalBlockPreheadInvariantCharacterData (Q2Presentation.Induction.sec7RawTowerPacketCanonical chief K).preheadTowerData) (Fdet : Q2Presentation.Induction.MinimalBlockPreheadExtraspecialEquivariantFamilyData (Q2Presentation.Induction.sec7RawTowerPacketCanonical chief K).preheadTowerData) (A : Q2Presentation.Induction.MinimalBlockPreheadExtraspecialAnnihilationData Fdet) (Rdet : Q2Presentation.Induction.MinimalBlockPreheadExtraspecialRadicalData Fdet) (N : Q2Presentation.Induction.MinimalBlockPreheadExtraspecialNonzeroData Fdet) (h : ¬Q2Presentation.Induction.ScalarTerminal p) (g : Q2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GammaA (Q2Presentation.Induction.XRZero.xrChild chief K).fst (Q2Presentation.Induction.XRZero.xrChild chief K).snd) : (Q2Presentation.Induction.BlockR.Bstar chief K X Fdet A Rdet N h).obstructionSpace**The canonical candidate obstruction in block spelling**: the `XRObstruction` defect pairing, transported along `blockXR_eq_conjInvDuals`.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactorXQ2Presentation.Induction.MinimalBlockPreheadInvariantCharacterData (Q2Presentation.Induction.sec7RawTowerPacketCanonical chief K).preheadTowerDataFdetQ2Presentation.Induction.MinimalBlockPreheadExtraspecialEquivariantFamilyData (Q2Presentation.Induction.sec7RawTowerPacketCanonical chief K).preheadTowerDataAQ2Presentation.Induction.MinimalBlockPreheadExtraspecialAnnihilationData FdetRdetQ2Presentation.Induction.MinimalBlockPreheadExtraspecialRadicalData FdetNQ2Presentation.Induction.MinimalBlockPreheadExtraspecialNonzeroData Fdeth¬Q2Presentation.Induction.ScalarTerminal pgQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GammaA (Q2Presentation.Induction.XRZero.xrChild chief K).fst (Q2Presentation.Induction.XRZero.xrChild chief K).snd) =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`. We use `a = b` as notation for `Eq a b`. A fundamental property of equality is that it is an equivalence relation. ``` variable (α : Type) (a b c d : α) variable (hab : a = b) (hcb : c = b) (hcd : c = d) example : a = d := Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd ``` Equality is much more than an equivalence relation, however. It has the important property that every assertion respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value. That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`. Example: ``` example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := Eq.subst h1 h2 example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := h1 ▸ h2 ``` The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`. For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality) Conventions for notations in identifiers: * The recommended spelling of `=` in identifiers is `eq`.0 }Subtype.{u} {α : Sort u} (p : α → Prop) : Sort (max 1 u)All the elements of a type that satisfy a predicate. `Subtype p`, usually written `{ x : α // p x }` or `{ x // p x }`, contains all elements `x : α` for which `p x` is true. Its constructor is a pair of the value and the proof that it satisfies the predicate. In run-time code, `{ x : α // p x }` is represented identically to `α`. There is a coercion from `{ x : α // p x }` to `α`, so elements of a subtype may be used where the underlying type is expected. Examples: * `{ n : Nat // n % 2 = 0 }` is the type of even numbers. * `{ xs : Array String // xs.size = 5 }` is the type of arrays with five `String`s. * Given `xs : List α`, `List { x : α // x ∈ xs }` is the type of lists in which all elements are contained in `xs`. Conventions for notations in identifiers: * The recommended spelling of `{ x // p x }` in identifiers is `subtype`.=Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`. We use `a = b` as notation for `Eq a b`. A fundamental property of equality is that it is an equivalence relation. ``` variable (α : Type) (a b c d : α) variable (hab : a = b) (hcb : c = b) (hcd : c = d) example : a = d := Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd ``` Equality is much more than an equivalence relation, however. It has the important property that every assertion respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value. That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`. Example: ``` example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := Eq.subst h1 h2 example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := h1 ▸ h2 ``` The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`. For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality) Conventions for notations in identifiers: * The recommended spelling of `=` in identifiers is `eq`.Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number. If `α` is infinite, `Nat.card α = 0`.{Subtype.{u} {α : Sort u} (p : α → Prop) : Sort (max 1 u)All the elements of a type that satisfy a predicate. `Subtype p`, usually written `{ x : α // p x }` or `{ x // p x }`, contains all elements `x : α` for which `p x` is true. Its constructor is a pair of the value and the proof that it satisfies the predicate. In run-time code, `{ x : α // p x }` is represented identically to `α`. There is a coercion from `{ x : α // p x }` to `α`, so elements of a subtype may be used where the underlying type is expected. Examples: * `{ n : Nat // n % 2 = 0 }` is the type of even numbers. * `{ xs : Array String // xs.size = 5 }` is the type of arrays with five `String`s. * Given `xs : List α`, `List { x : α // x ∈ xs }` is the type of lists in which all elements are contained in `xs`. Conventions for notations in identifiers: * The recommended spelling of `{ x // p x }` in identifiers is `subtype`.gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GammaA (Q2Presentation.Induction.XRZero.xrChild chief K).fst (Q2Presentation.Induction.XRZero.xrChild chief K).snd//Subtype.{u} {α : Sort u} (p : α → Prop) : Sort (max 1 u)All the elements of a type that satisfy a predicate. `Subtype p`, usually written `{ x : α // p x }` or `{ x // p x }`, contains all elements `x : α` for which `p x` is true. Its constructor is a pair of the value and the proof that it satisfies the predicate. In run-time code, `{ x : α // p x }` is represented identically to `α`. There is a coercion from `{ x : α // p x }` to `α`, so elements of a subtype may be used where the underlying type is expected. Examples: * `{ n : Nat // n % 2 = 0 }` is the type of even numbers. * `{ xs : Array String // xs.size = 5 }` is the type of arrays with five `String`s. * Given `xs : List α`, `List { x : α // x ∈ xs }` is the type of lists in which all elements are contained in `xs`. Conventions for notations in identifiers: * The recommended spelling of `{ x // p x }` in identifiers is `subtype`.NonemptyNonempty.{u} (α : Sort u) : Prop`Nonempty α` is a typeclass that says that `α` is not an empty type, that is, there exists an element in the type. It differs from `Inhabited α` in that `Nonempty α` is a `Prop`, which means that it does not actually carry an element of `α`, only a proof that *there exists* such an element. Given `Nonempty α`, you can construct an element of `α` *nonconstructively* using `Classical.choice`.(Q2Presentation.Lifting.scalarCoverLiftHomQ2Presentation.Lifting.scalarCoverLiftHom {Yt : Q2Presentation.BoundaryFramedTarget} [Finite Yt.Y] (E : Q2Presentation.Lifting.ElementaryKernel Yt) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E)) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals E) {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (F : Q2Presentation.BoundaryFrame Yt) (g : Q2Presentation.boundaryFramedSurj B (Q2Presentation.TorsorProgram.quotientFramedTarget Yt E.N ⋯ ⋯) (Q2Presentation.TorsorProgram.quotientFrame Yt E.N ⋯ ⋯ F)) : Type**Cover lifts of `g`** (`lem:obstructionseparation` l.4219–4223): framed homs `Γ ⟶ B_λ` over `g` — surjectivity NOT imposed (the manuscript's compatible lifts: `λ_*o` measures weak liftability; images are stratified by `eq:recursionR2`/`R3` later).(Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel** (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) ↑(Q2Presentation.Induction.BlockR.blockCharDualQ2Presentation.Induction.BlockR.blockCharDual {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (X : Q2Presentation.Induction.MinimalBlockPreheadInvariantCharacterData (Q2Presentation.Induction.sec7RawTowerPacketCanonical chief K).preheadTowerData) (Fdet : Q2Presentation.Induction.MinimalBlockPreheadExtraspecialEquivariantFamilyData (Q2Presentation.Induction.sec7RawTowerPacketCanonical chief K).preheadTowerData) (A : Q2Presentation.Induction.MinimalBlockPreheadExtraspecialAnnihilationData Fdet) (Rdet : Q2Presentation.Induction.MinimalBlockPreheadExtraspecialRadicalData Fdet) (N : Q2Presentation.Induction.MinimalBlockPreheadExtraspecialNonzeroData Fdet) (h : ¬Q2Presentation.Induction.ScalarTerminal p) (chi : Module.Dual (ZMod 2) (Q2Presentation.Induction.BlockR.Bstar chief K X Fdet A Rdet N h).obstructionSpace) : ↥(Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K))**The invariant dual attached to a character** of the block obstruction space: double-dual reflexivity (`Module.evalEquiv` at the finite `𝔽₂` space `𝒳_R`) followed by the `blockXR_eq_conjInvDuals` transport — the χ ↔ λ leg of `lem:obstructionseparation`.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactorXQ2Presentation.Induction.MinimalBlockPreheadInvariantCharacterData (Q2Presentation.Induction.sec7RawTowerPacketCanonical chief K).preheadTowerDataFdetQ2Presentation.Induction.MinimalBlockPreheadExtraspecialEquivariantFamilyData (Q2Presentation.Induction.sec7RawTowerPacketCanonical chief K).preheadTowerDataAQ2Presentation.Induction.MinimalBlockPreheadExtraspecialAnnihilationData FdetRdetQ2Presentation.Induction.MinimalBlockPreheadExtraspecialRadicalData FdetNQ2Presentation.Induction.MinimalBlockPreheadExtraspecialNonzeroData Fdeth¬Q2Presentation.Induction.ScalarTerminal pchiModule.Dual (ZMod 2) (Q2Presentation.Induction.BlockR.Bstar chief K X Fdet A Rdet N h).obstructionSpace) ⋯ Q2Presentation.boundaryPackage_GammaAQ2Presentation.boundaryPackage_GammaA : Q2Presentation.BoundaryPackage Q2Presentation.GammaA**The candidate boundary package** (manuscript Prop 3.14, `prop:compatiblemarking`; plan Turn 4 §6). The Stage-C data of `Γ_A`: the common tame quotient `gammaTameMap`, the maximal pro-`2` quotient `p : Γ_A ⟶ Π`, and the common unramified character `ν = gammaTameMap ≫ ν_t`, through which both factor.pQ2Presentation.Induction.FramedPair.sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GammaA (Q2Presentation.Induction.XRZero.xrChild chief K).fst (Q2Presentation.Induction.XRZero.xrChild chief K).snd) }Subtype.{u} {α : Sort u} (p : α → Prop) : Sort (max 1 u)All the elements of a type that satisfy a predicate. `Subtype p`, usually written `{ x : α // p x }` or `{ x // p x }`, contains all elements `x : α` for which `p x` is true. Its constructor is a pair of the value and the proof that it satisfies the predicate. In run-time code, `{ x : α // p x }` is represented identically to `α`. There is a coercion from `{ x : α // p x }` to `α`, so elements of a subtype may be used where the underlying type is expected. Examples: * `{ n : Nat // n % 2 = 0 }` is the type of even numbers. * `{ xs : Array String // xs.size = 5 }` is the type of arrays with five `String`s. * Given `xs : List α`, `List { x : α // x ∈ xs }` is the type of lists in which all elements are contained in `xs`. Conventions for notations in identifiers: * The recommended spelling of `{ x // p x }` in identifiers is `subtype`.**Candidate per-character fibres are cover-lift counts** (`lem:obstructionseparation`, candidate half, at `λ := blockCharDual χ`): for `χ ≠ 0` the χ-fibre of the canonical candidate obstruction is the set of child maps that weakly lift through `B_λ`.
-
Q2Presentation.Induction.candidateRoute30_zmod_two_eq_zero_or_onemissing declarationdeclaration not found (name was not present during directive/code-block registration)
-
theoremdefined in Q2Presentation/Induction/CandidateScalarFrattiniRoute41Proofs.leancomplete
theorem Q2Presentation.Induction.centralCover_candidateMiddleRLiftObstructionMapData_from_scalarFrattiniRoute41 {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|`.} (BQ2Presentation.Induction.MinimalBlock p: Q2Presentation.Induction.MinimalBlockQ2Presentation.Induction.MinimalBlock (p : Q2Presentation.Induction.FramedPair) : Type 1**The §7 minimal non-scalar block.** Source-uniform module-level data of the manuscript tower (`eq:targettower`), with the deep group/representation inputs of `lem:simplehead`/`lem:collapse`/`prop:simpleheaddet` isolated as documented fields.pQ2Presentation.Induction.FramedPair) (TQ2Presentation.Induction.CentralCoverElementaryQuotientTowerData B: Q2Presentation.Induction.CentralCoverElementaryQuotientTowerDataQ2Presentation.Induction.CentralCoverElementaryQuotientTowerData {p : Q2Presentation.Induction.FramedPair} (B : Q2Presentation.Induction.MinimalBlock p) : Type 1A realized elementary quotient tower for `eq:targettower`. This is the missing target-side finite group datum behind the lower term in `eq:Mstage`: the middle quotient `B = Y/R`, the lower quotient `C = Y/K`, and the map `B -> C`. The cardinal equations record the two quotient steps in a form that proves strict decrease. The current `MinimalBlock` supplies the abstract modules, but not this realized quotient tower.BQ2Presentation.Induction.MinimalBlock p) : NonemptyNonempty.{u} (α : Sort u) : Prop`Nonempty α` is a typeclass that says that `α` is not an empty type, that is, there exists an element in the type. It differs from `Inhabited α` in that `Nonempty α` is a `Prop`, which means that it does not actually carry an element of `α`, only a proof that *there exists* such an element. Given `Nonempty α`, you can construct an element of `α` *nonconstructively* using `Classical.choice`.(Q2Presentation.Induction.CentralCoverCandidateMiddleRLiftObstructionMapDataQ2Presentation.Induction.CentralCoverCandidateMiddleRLiftObstructionMapData {p : Q2Presentation.Induction.FramedPair} (B : Q2Presentation.Induction.MinimalBlock p) (T : Q2Presentation.Induction.CentralCoverElementaryQuotientTowerData B) : TypeCandidate `R`-lift obstruction map on the canonical middle exact-image index. The index is theorem-level: `centralCover_candidateMiddleExactImageIndexBaseData B T` is the finite set of middle boundary-framed exact-image maps (`def:Xgamma`). The residual content is only the semantic `R`-valued obstruction evaluation of `lem:obstructionseparation` on that index.BQ2Presentation.Induction.MinimalBlock pTQ2Presentation.Induction.CentralCoverElementaryQuotientTowerData B)theorem Q2Presentation.Induction.centralCover_candidateMiddleRLiftObstructionMapData_from_scalarFrattiniRoute41 {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|`.} (BQ2Presentation.Induction.MinimalBlock p: Q2Presentation.Induction.MinimalBlockQ2Presentation.Induction.MinimalBlock (p : Q2Presentation.Induction.FramedPair) : Type 1**The §7 minimal non-scalar block.** Source-uniform module-level data of the manuscript tower (`eq:targettower`), with the deep group/representation inputs of `lem:simplehead`/`lem:collapse`/`prop:simpleheaddet` isolated as documented fields.pQ2Presentation.Induction.FramedPair) (TQ2Presentation.Induction.CentralCoverElementaryQuotientTowerData B: Q2Presentation.Induction.CentralCoverElementaryQuotientTowerDataQ2Presentation.Induction.CentralCoverElementaryQuotientTowerData {p : Q2Presentation.Induction.FramedPair} (B : Q2Presentation.Induction.MinimalBlock p) : Type 1A realized elementary quotient tower for `eq:targettower`. This is the missing target-side finite group datum behind the lower term in `eq:Mstage`: the middle quotient `B = Y/R`, the lower quotient `C = Y/K`, and the map `B -> C`. The cardinal equations record the two quotient steps in a form that proves strict decrease. The current `MinimalBlock` supplies the abstract modules, but not this realized quotient tower.BQ2Presentation.Induction.MinimalBlock p) : NonemptyNonempty.{u} (α : Sort u) : Prop`Nonempty α` is a typeclass that says that `α` is not an empty type, that is, there exists an element in the type. It differs from `Inhabited α` in that `Nonempty α` is a `Prop`, which means that it does not actually carry an element of `α`, only a proof that *there exists* such an element. Given `Nonempty α`, you can construct an element of `α` *nonconstructively* using `Classical.choice`.(Q2Presentation.Induction.CentralCoverCandidateMiddleRLiftObstructionMapDataQ2Presentation.Induction.CentralCoverCandidateMiddleRLiftObstructionMapData {p : Q2Presentation.Induction.FramedPair} (B : Q2Presentation.Induction.MinimalBlock p) (T : Q2Presentation.Induction.CentralCoverElementaryQuotientTowerData B) : TypeCandidate `R`-lift obstruction map on the canonical middle exact-image index. The index is theorem-level: `centralCover_candidateMiddleExactImageIndexBaseData B T` is the finite set of middle boundary-framed exact-image maps (`def:Xgamma`). The residual content is only the semantic `R`-valued obstruction evaluation of `lem:obstructionseparation` on that index.BQ2Presentation.Induction.MinimalBlock pTQ2Presentation.Induction.CentralCoverElementaryQuotientTowerData B)Route41 middle `R`-lift obstruction map through the pointwise scalar-pushout actual closer packets. Manuscript anchor: Section 8, pages 45--47, `lem:obstructionseparation` separates the `R`-valued obstruction by invariant scalar pushouts; the actual closer API records the value of each scalar test and its linearity in the invariant character.
-
defdefined in Q2Presentation/Induction/MinimalBlock.leancomplete
def Q2Presentation.Induction.MinimalBlock.XR {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|`.} (BQ2Presentation.Induction.MinimalBlock p: Q2Presentation.Induction.MinimalBlockQ2Presentation.Induction.MinimalBlock (p : Q2Presentation.Induction.FramedPair) : Type 1**The §7 minimal non-scalar block.** Source-uniform module-level data of the manuscript tower (`eq:targettower`), with the deep group/representation inputs of `lem:simplehead`/`lem:collapse`/`prop:simpleheaddet` isolated as documented fields.pQ2Presentation.Induction.FramedPair) : SubmoduleSubmodule.{u, v} (R : Type u) (M : Type v) [Semiring R] [AddCommMonoid M] [Module R M] : Type vA submodule of a module is one which is closed under vector operations. This is a sufficient condition for the subset of vectors in the submodule to themselves form a module.(ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.2) (Module.DualModule.Dual.{u_4, u_5} (R : Type u_4) (M : Type u_5) [Semiring R] [AddCommMonoid M] [Module R M] : Type (max u_5 u_4)The left dual space of an R-module M is the R-module of linear maps `M → R`.(ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.2) BQ2Presentation.Induction.MinimalBlock p.RQ2Presentation.Induction.MinimalBlock.R {p : Q2Presentation.Induction.FramedPair} (self : Q2Presentation.Induction.MinimalBlock p) : TypeThe central elementary-abelian Frattini quotient `R = Φ(K)` (`lem:collapse`: an `𝔽₂`-vector space, since `R` is central of exponent `2` in `K`).)def Q2Presentation.Induction.MinimalBlock.XR {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|`.} (BQ2Presentation.Induction.MinimalBlock p: Q2Presentation.Induction.MinimalBlockQ2Presentation.Induction.MinimalBlock (p : Q2Presentation.Induction.FramedPair) : Type 1**The §7 minimal non-scalar block.** Source-uniform module-level data of the manuscript tower (`eq:targettower`), with the deep group/representation inputs of `lem:simplehead`/`lem:collapse`/`prop:simpleheaddet` isolated as documented fields.pQ2Presentation.Induction.FramedPair) : SubmoduleSubmodule.{u, v} (R : Type u) (M : Type v) [Semiring R] [AddCommMonoid M] [Module R M] : Type vA submodule of a module is one which is closed under vector operations. This is a sufficient condition for the subset of vectors in the submodule to themselves form a module.(ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.2) (Module.DualModule.Dual.{u_4, u_5} (R : Type u_4) (M : Type u_5) [Semiring R] [AddCommMonoid M] [Module R M] : Type (max u_5 u_4)The left dual space of an R-module M is the R-module of linear maps `M → R`.(ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.2) BQ2Presentation.Induction.MinimalBlock p.RQ2Presentation.Induction.MinimalBlock.R {p : Q2Presentation.Induction.FramedPair} (self : Q2Presentation.Induction.MinimalBlock p) : TypeThe central elementary-abelian Frattini quotient `R = Φ(K)` (`lem:collapse`: an `𝔽₂`-vector space, since `R` is central of exponent `2` in `K`).)**The determinant character space `𝒳_R = (R^∨)^C`** (manuscript l.3722/l.4211: `𝒳_R = (R^∨)^B = (R^∨)^C`): the `C`-invariants of the dual of `R`, cut out as a genuine `𝔽₂`-submodule of `Module.Dual (ZMod 2) R`. By `lem:obstructionseparation` (l.4213) this is canonically `Ŵ`, the **character group of the obstruction space** `O_R = obstructionSpace`; `prop:simpleheaddet` and the §8 Fourier inversion both range over `0 ≠ λ ∈ 𝒳_R` (= `↥XR`).
-
defdefined in Q2Presentation/Induction/XRObstruction.leancomplete
def Q2Presentation.Induction.xrObstructionDual {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) (gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GammaA (Q2Presentation.TorsorProgram.quotientFramedTarget p.fst (Q2Presentation.Induction.xrKernel chief K).N ⋯ ⋯) (Q2Presentation.TorsorProgram.quotientFrame p.fst (Q2Presentation.Induction.xrKernel chief K).N ⋯ ⋯ p.snd): Q2Presentation.boundaryFramedSurjQ2Presentation.boundaryFramedSurj {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (Yt : Q2Presentation.BoundaryFramedTarget) (F : Q2Presentation.BoundaryFrame Yt) : TypeThe **boundary-framed surjections** `e_Γ^β(𝒴)` (manuscript `eq:eGamma`): the continuous surjections `f : Γ ↠ Y` whose induced map to `H × E` is the prescribed `β ∘ b_Γ`, i.e. `q_Y ∘ f = β ∘ b_Γ`. This is the subtype counted in Theorem 4.2; its cardinality is `e_Γ^β(𝒴)`.Q2Presentation.boundaryPackage_GammaAQ2Presentation.boundaryPackage_GammaA : Q2Presentation.BoundaryPackage Q2Presentation.GammaA**The candidate boundary package** (manuscript Prop 3.14, `prop:compatiblemarking`; plan Turn 4 §6). The Stage-C data of `Γ_A`: the common tame quotient `gammaTameMap`, the maximal pro-`2` quotient `p : Γ_A ⟶ Π`, and the common unramified character `ν = gammaTameMap ≫ ν_t`, through which both factor.(Q2Presentation.TorsorProgram.quotientFramedTargetQ2Presentation.TorsorProgram.quotientFramedTarget (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y) [hNn : N.Normal] (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) : Q2Presentation.BoundaryFramedTarget**The quotient framed target** `Y/N` (same `H`, same `E`, image wild kernel).pQ2Presentation.Induction.FramedPair.fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.(Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel** (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).NQ2Presentation.Lifting.ElementaryKernel.N {Yt : Q2Presentation.BoundaryFramedTarget} (self : Q2Presentation.Lifting.ElementaryKernel Yt) : Subgroup Yt.Y⋯ ⋯) (Q2Presentation.TorsorProgram.quotientFrameQ2Presentation.TorsorProgram.quotientFrame (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y) [hNn : N.Normal] (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) (F : Q2Presentation.BoundaryFrame Yt) : Q2Presentation.BoundaryFrame (Q2Presentation.TorsorProgram.quotientFramedTarget Yt N hNLY hNθ)The frame transports verbatim (`H`, `E`, `α`, `ψ`, `β` unchanged).pQ2Presentation.Induction.FramedPair.fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.(Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel** (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).NQ2Presentation.Lifting.ElementaryKernel.N {Yt : Q2Presentation.BoundaryFramedTarget} (self : Q2Presentation.Lifting.ElementaryKernel Yt) : Subgroup Yt.Y⋯ ⋯ pQ2Presentation.Induction.FramedPair.sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.)) : Module.DualModule.Dual.{u_4, u_5} (R : Type u_4) (M : Type u_5) [Semiring R] [AddCommMonoid M] [Module R M] : Type (max u_5 u_4)The left dual space of an R-module M is the R-module of linear maps `M → R`.(ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.2) ↥(Q2Presentation.Lifting.conjInvDualsQ2Presentation.Lifting.conjInvDuals {Yt : Q2Presentation.BoundaryFramedTarget} (E : Q2Presentation.Lifting.ElementaryKernel Yt) : Submodule (ZMod 2) (Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E))The conjugation-invariant duals `X = (R^∨)^Y = (R^∨)^C` of an elementary kernel (consumer spelling of the manuscript's `𝒳_R`, §7 l.3720–3723).(Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel** (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor))def Q2Presentation.Induction.xrObstructionDual {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) (gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GammaA (Q2Presentation.TorsorProgram.quotientFramedTarget p.fst (Q2Presentation.Induction.xrKernel chief K).N ⋯ ⋯) (Q2Presentation.TorsorProgram.quotientFrame p.fst (Q2Presentation.Induction.xrKernel chief K).N ⋯ ⋯ p.snd): Q2Presentation.boundaryFramedSurjQ2Presentation.boundaryFramedSurj {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (Yt : Q2Presentation.BoundaryFramedTarget) (F : Q2Presentation.BoundaryFrame Yt) : TypeThe **boundary-framed surjections** `e_Γ^β(𝒴)` (manuscript `eq:eGamma`): the continuous surjections `f : Γ ↠ Y` whose induced map to `H × E` is the prescribed `β ∘ b_Γ`, i.e. `q_Y ∘ f = β ∘ b_Γ`. This is the subtype counted in Theorem 4.2; its cardinality is `e_Γ^β(𝒴)`.Q2Presentation.boundaryPackage_GammaAQ2Presentation.boundaryPackage_GammaA : Q2Presentation.BoundaryPackage Q2Presentation.GammaA**The candidate boundary package** (manuscript Prop 3.14, `prop:compatiblemarking`; plan Turn 4 §6). The Stage-C data of `Γ_A`: the common tame quotient `gammaTameMap`, the maximal pro-`2` quotient `p : Γ_A ⟶ Π`, and the common unramified character `ν = gammaTameMap ≫ ν_t`, through which both factor.(Q2Presentation.TorsorProgram.quotientFramedTargetQ2Presentation.TorsorProgram.quotientFramedTarget (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y) [hNn : N.Normal] (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) : Q2Presentation.BoundaryFramedTarget**The quotient framed target** `Y/N` (same `H`, same `E`, image wild kernel).pQ2Presentation.Induction.FramedPair.fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.(Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel** (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).NQ2Presentation.Lifting.ElementaryKernel.N {Yt : Q2Presentation.BoundaryFramedTarget} (self : Q2Presentation.Lifting.ElementaryKernel Yt) : Subgroup Yt.Y⋯ ⋯) (Q2Presentation.TorsorProgram.quotientFrameQ2Presentation.TorsorProgram.quotientFrame (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y) [hNn : N.Normal] (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) (F : Q2Presentation.BoundaryFrame Yt) : Q2Presentation.BoundaryFrame (Q2Presentation.TorsorProgram.quotientFramedTarget Yt N hNLY hNθ)The frame transports verbatim (`H`, `E`, `α`, `ψ`, `β` unchanged).pQ2Presentation.Induction.FramedPair.fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.(Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel** (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).NQ2Presentation.Lifting.ElementaryKernel.N {Yt : Q2Presentation.BoundaryFramedTarget} (self : Q2Presentation.Lifting.ElementaryKernel Yt) : Subgroup Yt.Y⋯ ⋯ pQ2Presentation.Induction.FramedPair.sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.)) : Module.DualModule.Dual.{u_4, u_5} (R : Type u_4) (M : Type u_5) [Semiring R] [AddCommMonoid M] [Module R M] : Type (max u_5 u_4)The left dual space of an R-module M is the R-module of linear maps `M → R`.(ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.2) ↥(Q2Presentation.Lifting.conjInvDualsQ2Presentation.Lifting.conjInvDuals {Yt : Q2Presentation.BoundaryFramedTarget} (E : Q2Presentation.Lifting.ElementaryKernel Yt) : Submodule (ZMod 2) (Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E))The conjugation-invariant duals `X = (R^∨)^Y = (R^∨)^C` of an elementary kernel (consumer spelling of the manuscript's `𝒳_R`, §7 l.3720–3723).(Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel** (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor))**The canonical candidate obstruction**, valued in the dual of the invariant duals (`lem:obstructionseparation`): pair the base-marking defect sum against `𝒳_R`.
-
theoremdefined in Q2Presentation/Induction/XRScalarCover.leancomplete
theorem Q2Presentation.Induction.xrObstructionDual_scalar_eq_zero_iff {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) (gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GammaA (Q2Presentation.TorsorProgram.quotientFramedTarget p.fst (Q2Presentation.Induction.xrKernel chief K).N ⋯ ⋯) (Q2Presentation.TorsorProgram.quotientFrame p.fst (Q2Presentation.Induction.xrKernel chief K).N ⋯ ⋯ p.snd): Q2Presentation.boundaryFramedSurjQ2Presentation.boundaryFramedSurj {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (Yt : Q2Presentation.BoundaryFramedTarget) (F : Q2Presentation.BoundaryFrame Yt) : TypeThe **boundary-framed surjections** `e_Γ^β(𝒴)` (manuscript `eq:eGamma`): the continuous surjections `f : Γ ↠ Y` whose induced map to `H × E` is the prescribed `β ∘ b_Γ`, i.e. `q_Y ∘ f = β ∘ b_Γ`. This is the subtype counted in Theorem 4.2; its cardinality is `e_Γ^β(𝒴)`.Q2Presentation.boundaryPackage_GammaAQ2Presentation.boundaryPackage_GammaA : Q2Presentation.BoundaryPackage Q2Presentation.GammaA**The candidate boundary package** (manuscript Prop 3.14, `prop:compatiblemarking`; plan Turn 4 §6). The Stage-C data of `Γ_A`: the common tame quotient `gammaTameMap`, the maximal pro-`2` quotient `p : Γ_A ⟶ Π`, and the common unramified character `ν = gammaTameMap ≫ ν_t`, through which both factor.(Q2Presentation.TorsorProgram.quotientFramedTargetQ2Presentation.TorsorProgram.quotientFramedTarget (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y) [hNn : N.Normal] (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) : Q2Presentation.BoundaryFramedTarget**The quotient framed target** `Y/N` (same `H`, same `E`, image wild kernel).pQ2Presentation.Induction.FramedPair.fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.(Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel** (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).NQ2Presentation.Lifting.ElementaryKernel.N {Yt : Q2Presentation.BoundaryFramedTarget} (self : Q2Presentation.Lifting.ElementaryKernel Yt) : Subgroup Yt.Y⋯ ⋯) (Q2Presentation.TorsorProgram.quotientFrameQ2Presentation.TorsorProgram.quotientFrame (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y) [hNn : N.Normal] (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) (F : Q2Presentation.BoundaryFrame Yt) : Q2Presentation.BoundaryFrame (Q2Presentation.TorsorProgram.quotientFramedTarget Yt N hNLY hNθ)The frame transports verbatim (`H`, `E`, `α`, `ψ`, `β` unchanged).pQ2Presentation.Induction.FramedPair.fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.(Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel** (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).NQ2Presentation.Lifting.ElementaryKernel.N {Yt : Q2Presentation.BoundaryFramedTarget} (self : Q2Presentation.Lifting.ElementaryKernel Yt) : Subgroup Yt.Y⋯ ⋯ pQ2Presentation.Induction.FramedPair.sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.)) (lam↥(Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)): ↥(Q2Presentation.Lifting.conjInvDualsQ2Presentation.Lifting.conjInvDuals {Yt : Q2Presentation.BoundaryFramedTarget} (E : Q2Presentation.Lifting.ElementaryKernel Yt) : Submodule (ZMod 2) (Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E))The conjugation-invariant duals `X = (R^∨)^Y = (R^∨)^C` of an elementary kernel (consumer spelling of the manuscript's `𝒳_R`, §7 l.3720–3723).(Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel** (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor))) (hne↑lam ≠ 0: ↑lam↥(Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K))≠Ne.{u} {α : Sort u} (a b : α) : Prop`a ≠ b`, or `Ne a b` is defined as `¬ (a = b)` or `a = b → False`, and asserts that `a` and `b` are not equal. Conventions for notations in identifiers: * The recommended spelling of `≠` in identifiers is `ne`.0) : (Q2Presentation.Induction.xrObstructionDualQ2Presentation.Induction.xrObstructionDual {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (g : Q2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GammaA (Q2Presentation.TorsorProgram.quotientFramedTarget p.fst (Q2Presentation.Induction.xrKernel chief K).N ⋯ ⋯) (Q2Presentation.TorsorProgram.quotientFrame p.fst (Q2Presentation.Induction.xrKernel chief K).N ⋯ ⋯ p.snd)) : Module.Dual (ZMod 2) ↥(Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K))**The canonical candidate obstruction**, valued in the dual of the invariant duals (`lem:obstructionseparation`): pair the base-marking defect sum against `𝒳_R`.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactorgQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GammaA (Q2Presentation.TorsorProgram.quotientFramedTarget p.fst (Q2Presentation.Induction.xrKernel chief K).N ⋯ ⋯) (Q2Presentation.TorsorProgram.quotientFrame p.fst (Q2Presentation.Induction.xrKernel chief K).N ⋯ ⋯ p.snd)) lam↥(Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K))=Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`. We use `a = b` as notation for `Eq a b`. A fundamental property of equality is that it is an equivalence relation. ``` variable (α : Type) (a b c d : α) variable (hab : a = b) (hcb : c = b) (hcd : c = d) example : a = d := Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd ``` Equality is much more than an equivalence relation, however. It has the important property that every assertion respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value. That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`. Example: ``` example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := Eq.subst h1 h2 example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := h1 ▸ h2 ``` The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`. For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality) Conventions for notations in identifiers: * The recommended spelling of `=` in identifiers is `eq`.0 ↔Iff (a b : Prop) : PropIf and only if, or logical bi-implication. `a ↔ b` means that `a` implies `b` and vice versa. By `propext`, this implies that `a` and `b` are equal and hence any expression involving `a` is equivalent to the corresponding expression with `b` instead. Conventions for notations in identifiers: * The recommended spelling of `↔` in identifiers is `iff`. * The recommended spelling of `<->` in identifiers is `iff` (prefer `↔` over `<->`).NonemptyNonempty.{u} (α : Sort u) : Prop`Nonempty α` is a typeclass that says that `α` is not an empty type, that is, there exists an element in the type. It differs from `Inhabited α` in that `Nonempty α` is a `Prop`, which means that it does not actually carry an element of `α`, only a proof that *there exists* such an element. Given `Nonempty α`, you can construct an element of `α` *nonconstructively* using `Classical.choice`.(Q2Presentation.Lifting.scalarCoverLiftHomQ2Presentation.Lifting.scalarCoverLiftHom {Yt : Q2Presentation.BoundaryFramedTarget} [Finite Yt.Y] (E : Q2Presentation.Lifting.ElementaryKernel Yt) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E)) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals E) {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (F : Q2Presentation.BoundaryFrame Yt) (g : Q2Presentation.boundaryFramedSurj B (Q2Presentation.TorsorProgram.quotientFramedTarget Yt E.N ⋯ ⋯) (Q2Presentation.TorsorProgram.quotientFrame Yt E.N ⋯ ⋯ F)) : Type**Cover lifts of `g`** (`lem:obstructionseparation` l.4219–4223): framed homs `Γ ⟶ B_λ` over `g` — surjectivity NOT imposed (the manuscript's compatible lifts: `λ_*o` measures weak liftability; images are stratified by `eq:recursionR2`/`R3` later).(Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel** (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) ↑lam↥(Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K))⋯ Q2Presentation.boundaryPackage_GammaAQ2Presentation.boundaryPackage_GammaA : Q2Presentation.BoundaryPackage Q2Presentation.GammaA**The candidate boundary package** (manuscript Prop 3.14, `prop:compatiblemarking`; plan Turn 4 §6). The Stage-C data of `Γ_A`: the common tame quotient `gammaTameMap`, the maximal pro-`2` quotient `p : Γ_A ⟶ Π`, and the common unramified character `ν = gammaTameMap ≫ ν_t`, through which both factor.pQ2Presentation.Induction.FramedPair.sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GammaA (Q2Presentation.TorsorProgram.quotientFramedTarget p.fst (Q2Presentation.Induction.xrKernel chief K).N ⋯ ⋯) (Q2Presentation.TorsorProgram.quotientFrame p.fst (Q2Presentation.Induction.xrKernel chief K).N ⋯ ⋯ p.snd))theorem Q2Presentation.Induction.xrObstructionDual_scalar_eq_zero_iff {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) (gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GammaA (Q2Presentation.TorsorProgram.quotientFramedTarget p.fst (Q2Presentation.Induction.xrKernel chief K).N ⋯ ⋯) (Q2Presentation.TorsorProgram.quotientFrame p.fst (Q2Presentation.Induction.xrKernel chief K).N ⋯ ⋯ p.snd): Q2Presentation.boundaryFramedSurjQ2Presentation.boundaryFramedSurj {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (Yt : Q2Presentation.BoundaryFramedTarget) (F : Q2Presentation.BoundaryFrame Yt) : TypeThe **boundary-framed surjections** `e_Γ^β(𝒴)` (manuscript `eq:eGamma`): the continuous surjections `f : Γ ↠ Y` whose induced map to `H × E` is the prescribed `β ∘ b_Γ`, i.e. `q_Y ∘ f = β ∘ b_Γ`. This is the subtype counted in Theorem 4.2; its cardinality is `e_Γ^β(𝒴)`.Q2Presentation.boundaryPackage_GammaAQ2Presentation.boundaryPackage_GammaA : Q2Presentation.BoundaryPackage Q2Presentation.GammaA**The candidate boundary package** (manuscript Prop 3.14, `prop:compatiblemarking`; plan Turn 4 §6). The Stage-C data of `Γ_A`: the common tame quotient `gammaTameMap`, the maximal pro-`2` quotient `p : Γ_A ⟶ Π`, and the common unramified character `ν = gammaTameMap ≫ ν_t`, through which both factor.(Q2Presentation.TorsorProgram.quotientFramedTargetQ2Presentation.TorsorProgram.quotientFramedTarget (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y) [hNn : N.Normal] (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) : Q2Presentation.BoundaryFramedTarget**The quotient framed target** `Y/N` (same `H`, same `E`, image wild kernel).pQ2Presentation.Induction.FramedPair.fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.(Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel** (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).NQ2Presentation.Lifting.ElementaryKernel.N {Yt : Q2Presentation.BoundaryFramedTarget} (self : Q2Presentation.Lifting.ElementaryKernel Yt) : Subgroup Yt.Y⋯ ⋯) (Q2Presentation.TorsorProgram.quotientFrameQ2Presentation.TorsorProgram.quotientFrame (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y) [hNn : N.Normal] (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) (F : Q2Presentation.BoundaryFrame Yt) : Q2Presentation.BoundaryFrame (Q2Presentation.TorsorProgram.quotientFramedTarget Yt N hNLY hNθ)The frame transports verbatim (`H`, `E`, `α`, `ψ`, `β` unchanged).pQ2Presentation.Induction.FramedPair.fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.(Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel** (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).NQ2Presentation.Lifting.ElementaryKernel.N {Yt : Q2Presentation.BoundaryFramedTarget} (self : Q2Presentation.Lifting.ElementaryKernel Yt) : Subgroup Yt.Y⋯ ⋯ pQ2Presentation.Induction.FramedPair.sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.)) (lam↥(Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)): ↥(Q2Presentation.Lifting.conjInvDualsQ2Presentation.Lifting.conjInvDuals {Yt : Q2Presentation.BoundaryFramedTarget} (E : Q2Presentation.Lifting.ElementaryKernel Yt) : Submodule (ZMod 2) (Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E))The conjugation-invariant duals `X = (R^∨)^Y = (R^∨)^C` of an elementary kernel (consumer spelling of the manuscript's `𝒳_R`, §7 l.3720–3723).(Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel** (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor))) (hne↑lam ≠ 0: ↑lam↥(Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K))≠Ne.{u} {α : Sort u} (a b : α) : Prop`a ≠ b`, or `Ne a b` is defined as `¬ (a = b)` or `a = b → False`, and asserts that `a` and `b` are not equal. Conventions for notations in identifiers: * The recommended spelling of `≠` in identifiers is `ne`.0) : (Q2Presentation.Induction.xrObstructionDualQ2Presentation.Induction.xrObstructionDual {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (g : Q2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GammaA (Q2Presentation.TorsorProgram.quotientFramedTarget p.fst (Q2Presentation.Induction.xrKernel chief K).N ⋯ ⋯) (Q2Presentation.TorsorProgram.quotientFrame p.fst (Q2Presentation.Induction.xrKernel chief K).N ⋯ ⋯ p.snd)) : Module.Dual (ZMod 2) ↥(Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K))**The canonical candidate obstruction**, valued in the dual of the invariant duals (`lem:obstructionseparation`): pair the base-marking defect sum against `𝒳_R`.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactorgQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GammaA (Q2Presentation.TorsorProgram.quotientFramedTarget p.fst (Q2Presentation.Induction.xrKernel chief K).N ⋯ ⋯) (Q2Presentation.TorsorProgram.quotientFrame p.fst (Q2Presentation.Induction.xrKernel chief K).N ⋯ ⋯ p.snd)) lam↥(Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K))=Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`. We use `a = b` as notation for `Eq a b`. A fundamental property of equality is that it is an equivalence relation. ``` variable (α : Type) (a b c d : α) variable (hab : a = b) (hcb : c = b) (hcd : c = d) example : a = d := Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd ``` Equality is much more than an equivalence relation, however. It has the important property that every assertion respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value. That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`. Example: ``` example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := Eq.subst h1 h2 example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := h1 ▸ h2 ``` The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`. For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality) Conventions for notations in identifiers: * The recommended spelling of `=` in identifiers is `eq`.0 ↔Iff (a b : Prop) : PropIf and only if, or logical bi-implication. `a ↔ b` means that `a` implies `b` and vice versa. By `propext`, this implies that `a` and `b` are equal and hence any expression involving `a` is equivalent to the corresponding expression with `b` instead. Conventions for notations in identifiers: * The recommended spelling of `↔` in identifiers is `iff`. * The recommended spelling of `<->` in identifiers is `iff` (prefer `↔` over `<->`).NonemptyNonempty.{u} (α : Sort u) : Prop`Nonempty α` is a typeclass that says that `α` is not an empty type, that is, there exists an element in the type. It differs from `Inhabited α` in that `Nonempty α` is a `Prop`, which means that it does not actually carry an element of `α`, only a proof that *there exists* such an element. Given `Nonempty α`, you can construct an element of `α` *nonconstructively* using `Classical.choice`.(Q2Presentation.Lifting.scalarCoverLiftHomQ2Presentation.Lifting.scalarCoverLiftHom {Yt : Q2Presentation.BoundaryFramedTarget} [Finite Yt.Y] (E : Q2Presentation.Lifting.ElementaryKernel Yt) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E)) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals E) {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (F : Q2Presentation.BoundaryFrame Yt) (g : Q2Presentation.boundaryFramedSurj B (Q2Presentation.TorsorProgram.quotientFramedTarget Yt E.N ⋯ ⋯) (Q2Presentation.TorsorProgram.quotientFrame Yt E.N ⋯ ⋯ F)) : Type**Cover lifts of `g`** (`lem:obstructionseparation` l.4219–4223): framed homs `Γ ⟶ B_λ` over `g` — surjectivity NOT imposed (the manuscript's compatible lifts: `λ_*o` measures weak liftability; images are stratified by `eq:recursionR2`/`R3` later).(Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel** (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) ↑lam↥(Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K))⋯ Q2Presentation.boundaryPackage_GammaAQ2Presentation.boundaryPackage_GammaA : Q2Presentation.BoundaryPackage Q2Presentation.GammaA**The candidate boundary package** (manuscript Prop 3.14, `prop:compatiblemarking`; plan Turn 4 §6). The Stage-C data of `Γ_A`: the common tame quotient `gammaTameMap`, the maximal pro-`2` quotient `p : Γ_A ⟶ Π`, and the common unramified character `ν = gammaTameMap ≫ ν_t`, through which both factor.pQ2Presentation.Induction.FramedPair.sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GammaA (Q2Presentation.TorsorProgram.quotientFramedTarget p.fst (Q2Presentation.Induction.xrKernel chief K).N ⋯ ⋯) (Q2Presentation.TorsorProgram.quotientFrame p.fst (Q2Presentation.Induction.xrKernel chief K).N ⋯ ⋯ p.snd))**P1-A at the Frattini layer**: the canonical candidate obstruction's `λ`-component vanishes iff `g` lifts through `B_λ` (`lem:obstructionseparation` l.4219–4223). No `hR`.
-
theoremdefined in Q2Presentation/Lifting/ScalarObstruction.leancomplete
theorem Q2Presentation.Lifting.scalar_defect_eq_zero_iff_coverLift {Yt
Q2Presentation.BoundaryFramedTarget: Q2Presentation.BoundaryFramedTargetQ2Presentation.BoundaryFramedTarget : Type 1A **boundary-framed marked target** `𝒴 = (Y, L_Y, π_Y, θ_Y)` (manuscript Definition 4.1, `def:framed`): a finite group `Y` with a normal finite `2`-subgroup `L_Y`, a surjection `π_Y : Y ↠ H` onto a finite *tame* quotient with kernel exactly `L_Y`, and an *elementary decoration* `θ_Y : Y → Multiplicative E` into the multiplicative image of a finite `𝔽₂`-vector space `E`. The pair `q_Y = (π_Y, θ_Y)` fixes both the tame quotient `Y / L_Y ≅ H` and the decoration.} [FiniteFinite.{u_3} (α : Sort u_3) : PropA type is `Finite` if it is in bijective correspondence to some `Fin n`. This is similar to `Fintype`, but `Finite` is a proposition rather than data. A particular benefit to this is that `Finite` instances are definitionally equal to one another (due to proof irrelevance) rather than being merely propositionally equal, and, furthermore, `Finite` instances generally avoid the need for `Decidable` instances. One other notable difference is that `Finite` allows there to be `Finite p` instances for all `p : Prop`, which is not allowed by `Fintype` due to universe constraints. An application of this is that `Finite (x ∈ s → β x)` follows from the general instance for pi types, assuming `[∀ x, Finite (β x)]`. Implementation note: this is a reason `Finite α` is not defined as `Nonempty (Fintype α)`. Every `Fintype` instance provides a `Finite` instance via `Finite.of_fintype`. Conversely, one can noncomputably create a `Fintype` instance from a `Finite` instance via `Fintype.ofFinite`. In a proof one might write ```lean have := Fintype.ofFinite α ``` to obtain such an instance. Do not write noncomputable `Fintype` instances; instead write `Finite` instances and use this `Fintype.ofFinite` interface. The `Fintype` instances should be relied upon to be computable for evaluation purposes. Theorems should use `Finite` instead of `Fintype`, unless definitions in the theorem statement require `Fintype`. Definitions should prefer `Finite` as well, unless it is important that the definitions are meant to be computable in the reduction or `#eval` sense.YtQ2Presentation.BoundaryFramedTarget.YQ2Presentation.BoundaryFramedTarget.Y (self : Q2Presentation.BoundaryFramedTarget) : TypeThe finite target group `Y`.] (EQ2Presentation.Lifting.ElementaryKernel Yt: Q2Presentation.Lifting.ElementaryKernelQ2Presentation.Lifting.ElementaryKernel (Yt : Q2Presentation.BoundaryFramedTarget) : TypeA normal subgroup of a framed target that is killed by the decoration, contained in the wild kernel, **abelian**, and of **exponent 2** — the shape of the chief kernels the cochain keeps quantify over.YtQ2Presentation.BoundaryFramedTarget) (FQ2Presentation.BoundaryFrame Yt: Q2Presentation.BoundaryFrameQ2Presentation.BoundaryFrame (Yt : Q2Presentation.BoundaryFramedTarget) : TypeA **boundary frame** on a boundary-framed target `𝒴` (manuscript `eq:beta`): the fixed compatible data `α : 𝕋_tame ↠ H`, `ψ : Π → Multiplicative E`, and the induced `β : ∂_bd → H × Multiplicative E`. Surjectivity of `α` records that `H` really is a tame quotient (manuscript: "Fix a finite tame quotient `H`, an epimorphism `α : 𝕋_A ↠ H`").YtQ2Presentation.BoundaryFramedTarget) (gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GammaA (Q2Presentation.TorsorProgram.quotientFramedTarget Yt E.N ⋯ ⋯) (Q2Presentation.TorsorProgram.quotientFrame Yt E.N ⋯ ⋯ F): Q2Presentation.boundaryFramedSurjQ2Presentation.boundaryFramedSurj {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (Yt : Q2Presentation.BoundaryFramedTarget) (F : Q2Presentation.BoundaryFrame Yt) : TypeThe **boundary-framed surjections** `e_Γ^β(𝒴)` (manuscript `eq:eGamma`): the continuous surjections `f : Γ ↠ Y` whose induced map to `H × E` is the prescribed `β ∘ b_Γ`, i.e. `q_Y ∘ f = β ∘ b_Γ`. This is the subtype counted in Theorem 4.2; its cardinality is `e_Γ^β(𝒴)`.Q2Presentation.boundaryPackage_GammaAQ2Presentation.boundaryPackage_GammaA : Q2Presentation.BoundaryPackage Q2Presentation.GammaA**The candidate boundary package** (manuscript Prop 3.14, `prop:compatiblemarking`; plan Turn 4 §6). The Stage-C data of `Γ_A`: the common tame quotient `gammaTameMap`, the maximal pro-`2` quotient `p : Γ_A ⟶ Π`, and the common unramified character `ν = gammaTameMap ≫ ν_t`, through which both factor.(Q2Presentation.TorsorProgram.quotientFramedTargetQ2Presentation.TorsorProgram.quotientFramedTarget (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y) [hNn : N.Normal] (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) : Q2Presentation.BoundaryFramedTarget**The quotient framed target** `Y/N` (same `H`, same `E`, image wild kernel).YtQ2Presentation.BoundaryFramedTargetEQ2Presentation.Lifting.ElementaryKernel Yt.NQ2Presentation.Lifting.ElementaryKernel.N {Yt : Q2Presentation.BoundaryFramedTarget} (self : Q2Presentation.Lifting.ElementaryKernel Yt) : Subgroup Yt.Y⋯ ⋯) (Q2Presentation.TorsorProgram.quotientFrameQ2Presentation.TorsorProgram.quotientFrame (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y) [hNn : N.Normal] (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) (F : Q2Presentation.BoundaryFrame Yt) : Q2Presentation.BoundaryFrame (Q2Presentation.TorsorProgram.quotientFramedTarget Yt N hNLY hNθ)The frame transports verbatim (`H`, `E`, `α`, `ψ`, `β` unchanged).YtQ2Presentation.BoundaryFramedTargetEQ2Presentation.Lifting.ElementaryKernel Yt.NQ2Presentation.Lifting.ElementaryKernel.N {Yt : Q2Presentation.BoundaryFramedTarget} (self : Q2Presentation.Lifting.ElementaryKernel Yt) : Subgroup Yt.Y⋯ ⋯ FQ2Presentation.BoundaryFrame Yt)) (lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E): Module.DualModule.Dual.{u_4, u_5} (R : Type u_4) (M : Type u_5) [Semiring R] [AddCommMonoid M] [Module R M] : Type (max u_5 u_4)The left dual space of an R-module M is the R-module of linear maps `M → R`.(ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.2) (Q2Presentation.Lifting.NAddQ2Presentation.Lifting.NAdd {Yt : Q2Presentation.BoundaryFramedTarget} (E : Q2Presentation.Lifting.ElementaryKernel Yt) : TypeThe additive `F₂`-carrier of an elementary kernel.EQ2Presentation.Lifting.ElementaryKernel Yt)) (hinvlam ∈ Q2Presentation.Lifting.conjInvDuals E: lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E)∈Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. Conventions for notations in identifiers: * The recommended spelling of `∈` in identifiers is `mem`.Q2Presentation.Lifting.conjInvDualsQ2Presentation.Lifting.conjInvDuals {Yt : Q2Presentation.BoundaryFramedTarget} (E : Q2Presentation.Lifting.ElementaryKernel Yt) : Submodule (ZMod 2) (Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E))The conjugation-invariant duals `X = (R^∨)^Y = (R^∨)^C` of an elementary kernel (consumer spelling of the manuscript's `𝒳_R`, §7 l.3720–3723).EQ2Presentation.Lifting.ElementaryKernel Yt) (hnelam ≠ 0: lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E)≠Ne.{u} {α : Sort u} (a b : α) : Prop`a ≠ b`, or `Ne a b` is defined as `¬ (a = b)` or `a = b → False`, and asserts that `a` and `b` are not equal. Conventions for notations in identifiers: * The recommended spelling of `≠` in identifiers is `ne`.0) : lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E)(HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `+` in identifiers is `add`.(Q2Presentation.Lifting.defectPairQ2Presentation.Lifting.defectPair {Yt : Q2Presentation.BoundaryFramedTarget} [Finite Yt.Y] (E : Q2Presentation.Lifting.ElementaryKernel Yt) (F : Q2Presentation.BoundaryFrame Yt) (g : Q2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GammaA (Q2Presentation.TorsorProgram.quotientFramedTarget Yt E.N ⋯ ⋯) (Q2Presentation.TorsorProgram.quotientFrame Yt E.N ⋯ ⋯ F)) (q : Q2Presentation.Marking Yt.Y) (hq : ∀ (a : Q2Presentation.Gen), (QuotientGroup.mk' E.N) (q a) = (ProfiniteGrp.Hom.hom (↑g).hom) (Q2Presentation.gammaGen a)) : Q2Presentation.Lifting.NAdd E × Q2Presentation.Lifting.NAdd EThe relator-defect pair of a compatible marking.EQ2Presentation.Lifting.ElementaryKernel YtFQ2Presentation.BoundaryFrame YtgQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GammaA (Q2Presentation.TorsorProgram.quotientFramedTarget Yt E.N ⋯ ⋯) (Q2Presentation.TorsorProgram.quotientFrame Yt E.N ⋯ ⋯ F)(Q2Presentation.Lifting.baseMarkingQ2Presentation.Lifting.baseMarking {Yt : Q2Presentation.BoundaryFramedTarget} (E : Q2Presentation.Lifting.ElementaryKernel Yt) (F : Q2Presentation.BoundaryFrame Yt) (g : Q2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GammaA (Q2Presentation.TorsorProgram.quotientFramedTarget Yt E.N ⋯ ⋯) (Q2Presentation.TorsorProgram.quotientFrame Yt E.N ⋯ ⋯ F)) : Q2Presentation.Marking Yt.YA chosen base marking under `g`.EQ2Presentation.Lifting.ElementaryKernel YtFQ2Presentation.BoundaryFrame YtgQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GammaA (Q2Presentation.TorsorProgram.quotientFramedTarget Yt E.N ⋯ ⋯) (Q2Presentation.TorsorProgram.quotientFrame Yt E.N ⋯ ⋯ F)) ⋯).1 +HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `+` in identifiers is `add`.(Q2Presentation.Lifting.defectPairQ2Presentation.Lifting.defectPair {Yt : Q2Presentation.BoundaryFramedTarget} [Finite Yt.Y] (E : Q2Presentation.Lifting.ElementaryKernel Yt) (F : Q2Presentation.BoundaryFrame Yt) (g : Q2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GammaA (Q2Presentation.TorsorProgram.quotientFramedTarget Yt E.N ⋯ ⋯) (Q2Presentation.TorsorProgram.quotientFrame Yt E.N ⋯ ⋯ F)) (q : Q2Presentation.Marking Yt.Y) (hq : ∀ (a : Q2Presentation.Gen), (QuotientGroup.mk' E.N) (q a) = (ProfiniteGrp.Hom.hom (↑g).hom) (Q2Presentation.gammaGen a)) : Q2Presentation.Lifting.NAdd E × Q2Presentation.Lifting.NAdd EThe relator-defect pair of a compatible marking.EQ2Presentation.Lifting.ElementaryKernel YtFQ2Presentation.BoundaryFrame YtgQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GammaA (Q2Presentation.TorsorProgram.quotientFramedTarget Yt E.N ⋯ ⋯) (Q2Presentation.TorsorProgram.quotientFrame Yt E.N ⋯ ⋯ F)(Q2Presentation.Lifting.baseMarkingQ2Presentation.Lifting.baseMarking {Yt : Q2Presentation.BoundaryFramedTarget} (E : Q2Presentation.Lifting.ElementaryKernel Yt) (F : Q2Presentation.BoundaryFrame Yt) (g : Q2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GammaA (Q2Presentation.TorsorProgram.quotientFramedTarget Yt E.N ⋯ ⋯) (Q2Presentation.TorsorProgram.quotientFrame Yt E.N ⋯ ⋯ F)) : Q2Presentation.Marking Yt.YA chosen base marking under `g`.EQ2Presentation.Lifting.ElementaryKernel YtFQ2Presentation.BoundaryFrame YtgQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GammaA (Q2Presentation.TorsorProgram.quotientFramedTarget Yt E.N ⋯ ⋯) (Q2Presentation.TorsorProgram.quotientFrame Yt E.N ⋯ ⋯ F)) ⋯).2)HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `+` in identifiers is `add`.=Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`. We use `a = b` as notation for `Eq a b`. A fundamental property of equality is that it is an equivalence relation. ``` variable (α : Type) (a b c d : α) variable (hab : a = b) (hcb : c = b) (hcd : c = d) example : a = d := Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd ``` Equality is much more than an equivalence relation, however. It has the important property that every assertion respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value. That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`. Example: ``` example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := Eq.subst h1 h2 example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := h1 ▸ h2 ``` The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`. For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality) Conventions for notations in identifiers: * The recommended spelling of `=` in identifiers is `eq`.0 ↔Iff (a b : Prop) : PropIf and only if, or logical bi-implication. `a ↔ b` means that `a` implies `b` and vice versa. By `propext`, this implies that `a` and `b` are equal and hence any expression involving `a` is equivalent to the corresponding expression with `b` instead. Conventions for notations in identifiers: * The recommended spelling of `↔` in identifiers is `iff`. * The recommended spelling of `<->` in identifiers is `iff` (prefer `↔` over `<->`).NonemptyNonempty.{u} (α : Sort u) : Prop`Nonempty α` is a typeclass that says that `α` is not an empty type, that is, there exists an element in the type. It differs from `Inhabited α` in that `Nonempty α` is a `Prop`, which means that it does not actually carry an element of `α`, only a proof that *there exists* such an element. Given `Nonempty α`, you can construct an element of `α` *nonconstructively* using `Classical.choice`.(Q2Presentation.Lifting.scalarCoverLiftHomQ2Presentation.Lifting.scalarCoverLiftHom {Yt : Q2Presentation.BoundaryFramedTarget} [Finite Yt.Y] (E : Q2Presentation.Lifting.ElementaryKernel Yt) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E)) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals E) {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (F : Q2Presentation.BoundaryFrame Yt) (g : Q2Presentation.boundaryFramedSurj B (Q2Presentation.TorsorProgram.quotientFramedTarget Yt E.N ⋯ ⋯) (Q2Presentation.TorsorProgram.quotientFrame Yt E.N ⋯ ⋯ F)) : Type**Cover lifts of `g`** (`lem:obstructionseparation` l.4219–4223): framed homs `Γ ⟶ B_λ` over `g` — surjectivity NOT imposed (the manuscript's compatible lifts: `λ_*o` measures weak liftability; images are stratified by `eq:recursionR2`/`R3` later).EQ2Presentation.Lifting.ElementaryKernel YtlamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E)hinvlam ∈ Q2Presentation.Lifting.conjInvDuals EQ2Presentation.boundaryPackage_GammaAQ2Presentation.boundaryPackage_GammaA : Q2Presentation.BoundaryPackage Q2Presentation.GammaA**The candidate boundary package** (manuscript Prop 3.14, `prop:compatiblemarking`; plan Turn 4 §6). The Stage-C data of `Γ_A`: the common tame quotient `gammaTameMap`, the maximal pro-`2` quotient `p : Γ_A ⟶ Π`, and the common unramified character `ν = gammaTameMap ≫ ν_t`, through which both factor.FQ2Presentation.BoundaryFrame YtgQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GammaA (Q2Presentation.TorsorProgram.quotientFramedTarget Yt E.N ⋯ ⋯) (Q2Presentation.TorsorProgram.quotientFrame Yt E.N ⋯ ⋯ F))theorem Q2Presentation.Lifting.scalar_defect_eq_zero_iff_coverLift {Yt
Q2Presentation.BoundaryFramedTarget: Q2Presentation.BoundaryFramedTargetQ2Presentation.BoundaryFramedTarget : Type 1A **boundary-framed marked target** `𝒴 = (Y, L_Y, π_Y, θ_Y)` (manuscript Definition 4.1, `def:framed`): a finite group `Y` with a normal finite `2`-subgroup `L_Y`, a surjection `π_Y : Y ↠ H` onto a finite *tame* quotient with kernel exactly `L_Y`, and an *elementary decoration* `θ_Y : Y → Multiplicative E` into the multiplicative image of a finite `𝔽₂`-vector space `E`. The pair `q_Y = (π_Y, θ_Y)` fixes both the tame quotient `Y / L_Y ≅ H` and the decoration.} [FiniteFinite.{u_3} (α : Sort u_3) : PropA type is `Finite` if it is in bijective correspondence to some `Fin n`. This is similar to `Fintype`, but `Finite` is a proposition rather than data. A particular benefit to this is that `Finite` instances are definitionally equal to one another (due to proof irrelevance) rather than being merely propositionally equal, and, furthermore, `Finite` instances generally avoid the need for `Decidable` instances. One other notable difference is that `Finite` allows there to be `Finite p` instances for all `p : Prop`, which is not allowed by `Fintype` due to universe constraints. An application of this is that `Finite (x ∈ s → β x)` follows from the general instance for pi types, assuming `[∀ x, Finite (β x)]`. Implementation note: this is a reason `Finite α` is not defined as `Nonempty (Fintype α)`. Every `Fintype` instance provides a `Finite` instance via `Finite.of_fintype`. Conversely, one can noncomputably create a `Fintype` instance from a `Finite` instance via `Fintype.ofFinite`. In a proof one might write ```lean have := Fintype.ofFinite α ``` to obtain such an instance. Do not write noncomputable `Fintype` instances; instead write `Finite` instances and use this `Fintype.ofFinite` interface. The `Fintype` instances should be relied upon to be computable for evaluation purposes. Theorems should use `Finite` instead of `Fintype`, unless definitions in the theorem statement require `Fintype`. Definitions should prefer `Finite` as well, unless it is important that the definitions are meant to be computable in the reduction or `#eval` sense.YtQ2Presentation.BoundaryFramedTarget.YQ2Presentation.BoundaryFramedTarget.Y (self : Q2Presentation.BoundaryFramedTarget) : TypeThe finite target group `Y`.] (EQ2Presentation.Lifting.ElementaryKernel Yt: Q2Presentation.Lifting.ElementaryKernelQ2Presentation.Lifting.ElementaryKernel (Yt : Q2Presentation.BoundaryFramedTarget) : TypeA normal subgroup of a framed target that is killed by the decoration, contained in the wild kernel, **abelian**, and of **exponent 2** — the shape of the chief kernels the cochain keeps quantify over.YtQ2Presentation.BoundaryFramedTarget) (FQ2Presentation.BoundaryFrame Yt: Q2Presentation.BoundaryFrameQ2Presentation.BoundaryFrame (Yt : Q2Presentation.BoundaryFramedTarget) : TypeA **boundary frame** on a boundary-framed target `𝒴` (manuscript `eq:beta`): the fixed compatible data `α : 𝕋_tame ↠ H`, `ψ : Π → Multiplicative E`, and the induced `β : ∂_bd → H × Multiplicative E`. Surjectivity of `α` records that `H` really is a tame quotient (manuscript: "Fix a finite tame quotient `H`, an epimorphism `α : 𝕋_A ↠ H`").YtQ2Presentation.BoundaryFramedTarget) (gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GammaA (Q2Presentation.TorsorProgram.quotientFramedTarget Yt E.N ⋯ ⋯) (Q2Presentation.TorsorProgram.quotientFrame Yt E.N ⋯ ⋯ F): Q2Presentation.boundaryFramedSurjQ2Presentation.boundaryFramedSurj {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (Yt : Q2Presentation.BoundaryFramedTarget) (F : Q2Presentation.BoundaryFrame Yt) : TypeThe **boundary-framed surjections** `e_Γ^β(𝒴)` (manuscript `eq:eGamma`): the continuous surjections `f : Γ ↠ Y` whose induced map to `H × E` is the prescribed `β ∘ b_Γ`, i.e. `q_Y ∘ f = β ∘ b_Γ`. This is the subtype counted in Theorem 4.2; its cardinality is `e_Γ^β(𝒴)`.Q2Presentation.boundaryPackage_GammaAQ2Presentation.boundaryPackage_GammaA : Q2Presentation.BoundaryPackage Q2Presentation.GammaA**The candidate boundary package** (manuscript Prop 3.14, `prop:compatiblemarking`; plan Turn 4 §6). The Stage-C data of `Γ_A`: the common tame quotient `gammaTameMap`, the maximal pro-`2` quotient `p : Γ_A ⟶ Π`, and the common unramified character `ν = gammaTameMap ≫ ν_t`, through which both factor.(Q2Presentation.TorsorProgram.quotientFramedTargetQ2Presentation.TorsorProgram.quotientFramedTarget (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y) [hNn : N.Normal] (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) : Q2Presentation.BoundaryFramedTarget**The quotient framed target** `Y/N` (same `H`, same `E`, image wild kernel).YtQ2Presentation.BoundaryFramedTargetEQ2Presentation.Lifting.ElementaryKernel Yt.NQ2Presentation.Lifting.ElementaryKernel.N {Yt : Q2Presentation.BoundaryFramedTarget} (self : Q2Presentation.Lifting.ElementaryKernel Yt) : Subgroup Yt.Y⋯ ⋯) (Q2Presentation.TorsorProgram.quotientFrameQ2Presentation.TorsorProgram.quotientFrame (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y) [hNn : N.Normal] (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) (F : Q2Presentation.BoundaryFrame Yt) : Q2Presentation.BoundaryFrame (Q2Presentation.TorsorProgram.quotientFramedTarget Yt N hNLY hNθ)The frame transports verbatim (`H`, `E`, `α`, `ψ`, `β` unchanged).YtQ2Presentation.BoundaryFramedTargetEQ2Presentation.Lifting.ElementaryKernel Yt.NQ2Presentation.Lifting.ElementaryKernel.N {Yt : Q2Presentation.BoundaryFramedTarget} (self : Q2Presentation.Lifting.ElementaryKernel Yt) : Subgroup Yt.Y⋯ ⋯ FQ2Presentation.BoundaryFrame Yt)) (lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E): Module.DualModule.Dual.{u_4, u_5} (R : Type u_4) (M : Type u_5) [Semiring R] [AddCommMonoid M] [Module R M] : Type (max u_5 u_4)The left dual space of an R-module M is the R-module of linear maps `M → R`.(ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.2) (Q2Presentation.Lifting.NAddQ2Presentation.Lifting.NAdd {Yt : Q2Presentation.BoundaryFramedTarget} (E : Q2Presentation.Lifting.ElementaryKernel Yt) : TypeThe additive `F₂`-carrier of an elementary kernel.EQ2Presentation.Lifting.ElementaryKernel Yt)) (hinvlam ∈ Q2Presentation.Lifting.conjInvDuals E: lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E)∈Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. Conventions for notations in identifiers: * The recommended spelling of `∈` in identifiers is `mem`.Q2Presentation.Lifting.conjInvDualsQ2Presentation.Lifting.conjInvDuals {Yt : Q2Presentation.BoundaryFramedTarget} (E : Q2Presentation.Lifting.ElementaryKernel Yt) : Submodule (ZMod 2) (Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E))The conjugation-invariant duals `X = (R^∨)^Y = (R^∨)^C` of an elementary kernel (consumer spelling of the manuscript's `𝒳_R`, §7 l.3720–3723).EQ2Presentation.Lifting.ElementaryKernel Yt) (hnelam ≠ 0: lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E)≠Ne.{u} {α : Sort u} (a b : α) : Prop`a ≠ b`, or `Ne a b` is defined as `¬ (a = b)` or `a = b → False`, and asserts that `a` and `b` are not equal. Conventions for notations in identifiers: * The recommended spelling of `≠` in identifiers is `ne`.0) : lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E)(HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `+` in identifiers is `add`.(Q2Presentation.Lifting.defectPairQ2Presentation.Lifting.defectPair {Yt : Q2Presentation.BoundaryFramedTarget} [Finite Yt.Y] (E : Q2Presentation.Lifting.ElementaryKernel Yt) (F : Q2Presentation.BoundaryFrame Yt) (g : Q2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GammaA (Q2Presentation.TorsorProgram.quotientFramedTarget Yt E.N ⋯ ⋯) (Q2Presentation.TorsorProgram.quotientFrame Yt E.N ⋯ ⋯ F)) (q : Q2Presentation.Marking Yt.Y) (hq : ∀ (a : Q2Presentation.Gen), (QuotientGroup.mk' E.N) (q a) = (ProfiniteGrp.Hom.hom (↑g).hom) (Q2Presentation.gammaGen a)) : Q2Presentation.Lifting.NAdd E × Q2Presentation.Lifting.NAdd EThe relator-defect pair of a compatible marking.EQ2Presentation.Lifting.ElementaryKernel YtFQ2Presentation.BoundaryFrame YtgQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GammaA (Q2Presentation.TorsorProgram.quotientFramedTarget Yt E.N ⋯ ⋯) (Q2Presentation.TorsorProgram.quotientFrame Yt E.N ⋯ ⋯ F)(Q2Presentation.Lifting.baseMarkingQ2Presentation.Lifting.baseMarking {Yt : Q2Presentation.BoundaryFramedTarget} (E : Q2Presentation.Lifting.ElementaryKernel Yt) (F : Q2Presentation.BoundaryFrame Yt) (g : Q2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GammaA (Q2Presentation.TorsorProgram.quotientFramedTarget Yt E.N ⋯ ⋯) (Q2Presentation.TorsorProgram.quotientFrame Yt E.N ⋯ ⋯ F)) : Q2Presentation.Marking Yt.YA chosen base marking under `g`.EQ2Presentation.Lifting.ElementaryKernel YtFQ2Presentation.BoundaryFrame YtgQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GammaA (Q2Presentation.TorsorProgram.quotientFramedTarget Yt E.N ⋯ ⋯) (Q2Presentation.TorsorProgram.quotientFrame Yt E.N ⋯ ⋯ F)) ⋯).1 +HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `+` in identifiers is `add`.(Q2Presentation.Lifting.defectPairQ2Presentation.Lifting.defectPair {Yt : Q2Presentation.BoundaryFramedTarget} [Finite Yt.Y] (E : Q2Presentation.Lifting.ElementaryKernel Yt) (F : Q2Presentation.BoundaryFrame Yt) (g : Q2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GammaA (Q2Presentation.TorsorProgram.quotientFramedTarget Yt E.N ⋯ ⋯) (Q2Presentation.TorsorProgram.quotientFrame Yt E.N ⋯ ⋯ F)) (q : Q2Presentation.Marking Yt.Y) (hq : ∀ (a : Q2Presentation.Gen), (QuotientGroup.mk' E.N) (q a) = (ProfiniteGrp.Hom.hom (↑g).hom) (Q2Presentation.gammaGen a)) : Q2Presentation.Lifting.NAdd E × Q2Presentation.Lifting.NAdd EThe relator-defect pair of a compatible marking.EQ2Presentation.Lifting.ElementaryKernel YtFQ2Presentation.BoundaryFrame YtgQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GammaA (Q2Presentation.TorsorProgram.quotientFramedTarget Yt E.N ⋯ ⋯) (Q2Presentation.TorsorProgram.quotientFrame Yt E.N ⋯ ⋯ F)(Q2Presentation.Lifting.baseMarkingQ2Presentation.Lifting.baseMarking {Yt : Q2Presentation.BoundaryFramedTarget} (E : Q2Presentation.Lifting.ElementaryKernel Yt) (F : Q2Presentation.BoundaryFrame Yt) (g : Q2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GammaA (Q2Presentation.TorsorProgram.quotientFramedTarget Yt E.N ⋯ ⋯) (Q2Presentation.TorsorProgram.quotientFrame Yt E.N ⋯ ⋯ F)) : Q2Presentation.Marking Yt.YA chosen base marking under `g`.EQ2Presentation.Lifting.ElementaryKernel YtFQ2Presentation.BoundaryFrame YtgQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GammaA (Q2Presentation.TorsorProgram.quotientFramedTarget Yt E.N ⋯ ⋯) (Q2Presentation.TorsorProgram.quotientFrame Yt E.N ⋯ ⋯ F)) ⋯).2)HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `+` in identifiers is `add`.=Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`. We use `a = b` as notation for `Eq a b`. A fundamental property of equality is that it is an equivalence relation. ``` variable (α : Type) (a b c d : α) variable (hab : a = b) (hcb : c = b) (hcd : c = d) example : a = d := Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd ``` Equality is much more than an equivalence relation, however. It has the important property that every assertion respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value. That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`. Example: ``` example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := Eq.subst h1 h2 example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := h1 ▸ h2 ``` The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`. For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality) Conventions for notations in identifiers: * The recommended spelling of `=` in identifiers is `eq`.0 ↔Iff (a b : Prop) : PropIf and only if, or logical bi-implication. `a ↔ b` means that `a` implies `b` and vice versa. By `propext`, this implies that `a` and `b` are equal and hence any expression involving `a` is equivalent to the corresponding expression with `b` instead. Conventions for notations in identifiers: * The recommended spelling of `↔` in identifiers is `iff`. * The recommended spelling of `<->` in identifiers is `iff` (prefer `↔` over `<->`).NonemptyNonempty.{u} (α : Sort u) : Prop`Nonempty α` is a typeclass that says that `α` is not an empty type, that is, there exists an element in the type. It differs from `Inhabited α` in that `Nonempty α` is a `Prop`, which means that it does not actually carry an element of `α`, only a proof that *there exists* such an element. Given `Nonempty α`, you can construct an element of `α` *nonconstructively* using `Classical.choice`.(Q2Presentation.Lifting.scalarCoverLiftHomQ2Presentation.Lifting.scalarCoverLiftHom {Yt : Q2Presentation.BoundaryFramedTarget} [Finite Yt.Y] (E : Q2Presentation.Lifting.ElementaryKernel Yt) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E)) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals E) {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (F : Q2Presentation.BoundaryFrame Yt) (g : Q2Presentation.boundaryFramedSurj B (Q2Presentation.TorsorProgram.quotientFramedTarget Yt E.N ⋯ ⋯) (Q2Presentation.TorsorProgram.quotientFrame Yt E.N ⋯ ⋯ F)) : Type**Cover lifts of `g`** (`lem:obstructionseparation` l.4219–4223): framed homs `Γ ⟶ B_λ` over `g` — surjectivity NOT imposed (the manuscript's compatible lifts: `λ_*o` measures weak liftability; images are stratified by `eq:recursionR2`/`R3` later).EQ2Presentation.Lifting.ElementaryKernel YtlamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E)hinvlam ∈ Q2Presentation.Lifting.conjInvDuals EQ2Presentation.boundaryPackage_GammaAQ2Presentation.boundaryPackage_GammaA : Q2Presentation.BoundaryPackage Q2Presentation.GammaA**The candidate boundary package** (manuscript Prop 3.14, `prop:compatiblemarking`; plan Turn 4 §6). The Stage-C data of `Γ_A`: the common tame quotient `gammaTameMap`, the maximal pro-`2` quotient `p : Γ_A ⟶ Π`, and the common unramified character `ν = gammaTameMap ≫ ν_t`, through which both factor.FQ2Presentation.BoundaryFrame YtgQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GammaA (Q2Presentation.TorsorProgram.quotientFramedTarget Yt E.N ⋯ ⋯) (Q2Presentation.TorsorProgram.quotientFrame Yt E.N ⋯ ⋯ F))**P1-A, generic core** (`lem:obstructionseparation` l.4219–4223, candidate half): the λ-pairing of the defect sum vanishes iff `g` lifts through `B_λ`. `hR`-free, diamond-free: the engine at the cover parent with the relative kernel, plus the diagonal row image and `ker mkN = ker λ`.
-
theoremdefined in Q2Presentation/Lifting/ScalarPushout.leancomplete
theorem Q2Presentation.Lifting.scalarKernel_normal {Yt
Q2Presentation.BoundaryFramedTarget: Q2Presentation.BoundaryFramedTargetQ2Presentation.BoundaryFramedTarget : Type 1A **boundary-framed marked target** `𝒴 = (Y, L_Y, π_Y, θ_Y)` (manuscript Definition 4.1, `def:framed`): a finite group `Y` with a normal finite `2`-subgroup `L_Y`, a surjection `π_Y : Y ↠ H` onto a finite *tame* quotient with kernel exactly `L_Y`, and an *elementary decoration* `θ_Y : Y → Multiplicative E` into the multiplicative image of a finite `𝔽₂`-vector space `E`. The pair `q_Y = (π_Y, θ_Y)` fixes both the tame quotient `Y / L_Y ≅ H` and the decoration.} [FiniteFinite.{u_3} (α : Sort u_3) : PropA type is `Finite` if it is in bijective correspondence to some `Fin n`. This is similar to `Fintype`, but `Finite` is a proposition rather than data. A particular benefit to this is that `Finite` instances are definitionally equal to one another (due to proof irrelevance) rather than being merely propositionally equal, and, furthermore, `Finite` instances generally avoid the need for `Decidable` instances. One other notable difference is that `Finite` allows there to be `Finite p` instances for all `p : Prop`, which is not allowed by `Fintype` due to universe constraints. An application of this is that `Finite (x ∈ s → β x)` follows from the general instance for pi types, assuming `[∀ x, Finite (β x)]`. Implementation note: this is a reason `Finite α` is not defined as `Nonempty (Fintype α)`. Every `Fintype` instance provides a `Finite` instance via `Finite.of_fintype`. Conversely, one can noncomputably create a `Fintype` instance from a `Finite` instance via `Fintype.ofFinite`. In a proof one might write ```lean have := Fintype.ofFinite α ``` to obtain such an instance. Do not write noncomputable `Fintype` instances; instead write `Finite` instances and use this `Fintype.ofFinite` interface. The `Fintype` instances should be relied upon to be computable for evaluation purposes. Theorems should use `Finite` instead of `Fintype`, unless definitions in the theorem statement require `Fintype`. Definitions should prefer `Finite` as well, unless it is important that the definitions are meant to be computable in the reduction or `#eval` sense.YtQ2Presentation.BoundaryFramedTarget.YQ2Presentation.BoundaryFramedTarget.Y (self : Q2Presentation.BoundaryFramedTarget) : TypeThe finite target group `Y`.] (EQ2Presentation.Lifting.ElementaryKernel Yt: Q2Presentation.Lifting.ElementaryKernelQ2Presentation.Lifting.ElementaryKernel (Yt : Q2Presentation.BoundaryFramedTarget) : TypeA normal subgroup of a framed target that is killed by the decoration, contained in the wild kernel, **abelian**, and of **exponent 2** — the shape of the chief kernels the cochain keeps quantify over.YtQ2Presentation.BoundaryFramedTarget) (lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E): Module.DualModule.Dual.{u_4, u_5} (R : Type u_4) (M : Type u_5) [Semiring R] [AddCommMonoid M] [Module R M] : Type (max u_5 u_4)The left dual space of an R-module M is the R-module of linear maps `M → R`.(ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.2) (Q2Presentation.Lifting.NAddQ2Presentation.Lifting.NAdd {Yt : Q2Presentation.BoundaryFramedTarget} (E : Q2Presentation.Lifting.ElementaryKernel Yt) : TypeThe additive `F₂`-carrier of an elementary kernel.EQ2Presentation.Lifting.ElementaryKernel Yt)) (hinvlam ∈ Q2Presentation.Lifting.conjInvDuals E: lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E)∈Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. Conventions for notations in identifiers: * The recommended spelling of `∈` in identifiers is `mem`.Q2Presentation.Lifting.conjInvDualsQ2Presentation.Lifting.conjInvDuals {Yt : Q2Presentation.BoundaryFramedTarget} (E : Q2Presentation.Lifting.ElementaryKernel Yt) : Submodule (ZMod 2) (Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E))The conjugation-invariant duals `X = (R^∨)^Y = (R^∨)^C` of an elementary kernel (consumer spelling of the manuscript's `𝒳_R`, §7 l.3720–3723).EQ2Presentation.Lifting.ElementaryKernel Yt) : (Q2Presentation.Lifting.scalarKernelQ2Presentation.Lifting.scalarKernel {Yt : Q2Presentation.BoundaryFramedTarget} (E : Q2Presentation.Lifting.ElementaryKernel Yt) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E)) : Subgroup Yt.Y`ker λ` as a subgroup of the ambient target: the additive kernel of `lam` inside `NAdd E`, read back multiplicatively and pushed along the subtype.EQ2Presentation.Lifting.ElementaryKernel YtlamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E)).NormalSubgroup.Normal.{u_1} {G : Type u_1} [Group G] (H : Subgroup G) : PropA subgroup `H` is normal if whenever `n ∈ H`, then `g * n * g⁻¹ ∈ H` for every `g : G`theorem Q2Presentation.Lifting.scalarKernel_normal {Yt
Q2Presentation.BoundaryFramedTarget: Q2Presentation.BoundaryFramedTargetQ2Presentation.BoundaryFramedTarget : Type 1A **boundary-framed marked target** `𝒴 = (Y, L_Y, π_Y, θ_Y)` (manuscript Definition 4.1, `def:framed`): a finite group `Y` with a normal finite `2`-subgroup `L_Y`, a surjection `π_Y : Y ↠ H` onto a finite *tame* quotient with kernel exactly `L_Y`, and an *elementary decoration* `θ_Y : Y → Multiplicative E` into the multiplicative image of a finite `𝔽₂`-vector space `E`. The pair `q_Y = (π_Y, θ_Y)` fixes both the tame quotient `Y / L_Y ≅ H` and the decoration.} [FiniteFinite.{u_3} (α : Sort u_3) : PropA type is `Finite` if it is in bijective correspondence to some `Fin n`. This is similar to `Fintype`, but `Finite` is a proposition rather than data. A particular benefit to this is that `Finite` instances are definitionally equal to one another (due to proof irrelevance) rather than being merely propositionally equal, and, furthermore, `Finite` instances generally avoid the need for `Decidable` instances. One other notable difference is that `Finite` allows there to be `Finite p` instances for all `p : Prop`, which is not allowed by `Fintype` due to universe constraints. An application of this is that `Finite (x ∈ s → β x)` follows from the general instance for pi types, assuming `[∀ x, Finite (β x)]`. Implementation note: this is a reason `Finite α` is not defined as `Nonempty (Fintype α)`. Every `Fintype` instance provides a `Finite` instance via `Finite.of_fintype`. Conversely, one can noncomputably create a `Fintype` instance from a `Finite` instance via `Fintype.ofFinite`. In a proof one might write ```lean have := Fintype.ofFinite α ``` to obtain such an instance. Do not write noncomputable `Fintype` instances; instead write `Finite` instances and use this `Fintype.ofFinite` interface. The `Fintype` instances should be relied upon to be computable for evaluation purposes. Theorems should use `Finite` instead of `Fintype`, unless definitions in the theorem statement require `Fintype`. Definitions should prefer `Finite` as well, unless it is important that the definitions are meant to be computable in the reduction or `#eval` sense.YtQ2Presentation.BoundaryFramedTarget.YQ2Presentation.BoundaryFramedTarget.Y (self : Q2Presentation.BoundaryFramedTarget) : TypeThe finite target group `Y`.] (EQ2Presentation.Lifting.ElementaryKernel Yt: Q2Presentation.Lifting.ElementaryKernelQ2Presentation.Lifting.ElementaryKernel (Yt : Q2Presentation.BoundaryFramedTarget) : TypeA normal subgroup of a framed target that is killed by the decoration, contained in the wild kernel, **abelian**, and of **exponent 2** — the shape of the chief kernels the cochain keeps quantify over.YtQ2Presentation.BoundaryFramedTarget) (lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E): Module.DualModule.Dual.{u_4, u_5} (R : Type u_4) (M : Type u_5) [Semiring R] [AddCommMonoid M] [Module R M] : Type (max u_5 u_4)The left dual space of an R-module M is the R-module of linear maps `M → R`.(ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.2) (Q2Presentation.Lifting.NAddQ2Presentation.Lifting.NAdd {Yt : Q2Presentation.BoundaryFramedTarget} (E : Q2Presentation.Lifting.ElementaryKernel Yt) : TypeThe additive `F₂`-carrier of an elementary kernel.EQ2Presentation.Lifting.ElementaryKernel Yt)) (hinvlam ∈ Q2Presentation.Lifting.conjInvDuals E: lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E)∈Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. Conventions for notations in identifiers: * The recommended spelling of `∈` in identifiers is `mem`.Q2Presentation.Lifting.conjInvDualsQ2Presentation.Lifting.conjInvDuals {Yt : Q2Presentation.BoundaryFramedTarget} (E : Q2Presentation.Lifting.ElementaryKernel Yt) : Submodule (ZMod 2) (Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E))The conjugation-invariant duals `X = (R^∨)^Y = (R^∨)^C` of an elementary kernel (consumer spelling of the manuscript's `𝒳_R`, §7 l.3720–3723).EQ2Presentation.Lifting.ElementaryKernel Yt) : (Q2Presentation.Lifting.scalarKernelQ2Presentation.Lifting.scalarKernel {Yt : Q2Presentation.BoundaryFramedTarget} (E : Q2Presentation.Lifting.ElementaryKernel Yt) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E)) : Subgroup Yt.Y`ker λ` as a subgroup of the ambient target: the additive kernel of `lam` inside `NAdd E`, read back multiplicatively and pushed along the subtype.EQ2Presentation.Lifting.ElementaryKernel YtlamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E)).NormalSubgroup.Normal.{u_1} {G : Type u_1} [Group G] (H : Subgroup G) : PropA subgroup `H` is normal if whenever `n ∈ H`, then `g * n * g⁻¹ ∈ H` for every `g : G`**Normality from invariance** (`lem:obstructionseparation` l.4230–4231): `λ ∈ (R^∨)^Y` makes `ker λ` conjugation-stable. Mind the right-conjugation orientation `conjEndN E y m = y⁻¹ m y`: normality needs `y n y⁻¹ ∈ ker λ`, so invariance is applied at `y⁻¹`.
-
defdefined in Q2Presentation/Lifting/ScalarPushout.leancomplete
def Q2Presentation.Lifting.scalarCoverLiftHom {Yt
Q2Presentation.BoundaryFramedTarget: Q2Presentation.BoundaryFramedTargetQ2Presentation.BoundaryFramedTarget : Type 1A **boundary-framed marked target** `𝒴 = (Y, L_Y, π_Y, θ_Y)` (manuscript Definition 4.1, `def:framed`): a finite group `Y` with a normal finite `2`-subgroup `L_Y`, a surjection `π_Y : Y ↠ H` onto a finite *tame* quotient with kernel exactly `L_Y`, and an *elementary decoration* `θ_Y : Y → Multiplicative E` into the multiplicative image of a finite `𝔽₂`-vector space `E`. The pair `q_Y = (π_Y, θ_Y)` fixes both the tame quotient `Y / L_Y ≅ H` and the decoration.} [FiniteFinite.{u_3} (α : Sort u_3) : PropA type is `Finite` if it is in bijective correspondence to some `Fin n`. This is similar to `Fintype`, but `Finite` is a proposition rather than data. A particular benefit to this is that `Finite` instances are definitionally equal to one another (due to proof irrelevance) rather than being merely propositionally equal, and, furthermore, `Finite` instances generally avoid the need for `Decidable` instances. One other notable difference is that `Finite` allows there to be `Finite p` instances for all `p : Prop`, which is not allowed by `Fintype` due to universe constraints. An application of this is that `Finite (x ∈ s → β x)` follows from the general instance for pi types, assuming `[∀ x, Finite (β x)]`. Implementation note: this is a reason `Finite α` is not defined as `Nonempty (Fintype α)`. Every `Fintype` instance provides a `Finite` instance via `Finite.of_fintype`. Conversely, one can noncomputably create a `Fintype` instance from a `Finite` instance via `Fintype.ofFinite`. In a proof one might write ```lean have := Fintype.ofFinite α ``` to obtain such an instance. Do not write noncomputable `Fintype` instances; instead write `Finite` instances and use this `Fintype.ofFinite` interface. The `Fintype` instances should be relied upon to be computable for evaluation purposes. Theorems should use `Finite` instead of `Fintype`, unless definitions in the theorem statement require `Fintype`. Definitions should prefer `Finite` as well, unless it is important that the definitions are meant to be computable in the reduction or `#eval` sense.YtQ2Presentation.BoundaryFramedTarget.YQ2Presentation.BoundaryFramedTarget.Y (self : Q2Presentation.BoundaryFramedTarget) : TypeThe finite target group `Y`.] (EQ2Presentation.Lifting.ElementaryKernel Yt: Q2Presentation.Lifting.ElementaryKernelQ2Presentation.Lifting.ElementaryKernel (Yt : Q2Presentation.BoundaryFramedTarget) : TypeA normal subgroup of a framed target that is killed by the decoration, contained in the wild kernel, **abelian**, and of **exponent 2** — the shape of the chief kernels the cochain keeps quantify over.YtQ2Presentation.BoundaryFramedTarget) (lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E): Module.DualModule.Dual.{u_4, u_5} (R : Type u_4) (M : Type u_5) [Semiring R] [AddCommMonoid M] [Module R M] : Type (max u_5 u_4)The left dual space of an R-module M is the R-module of linear maps `M → R`.(ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.2) (Q2Presentation.Lifting.NAddQ2Presentation.Lifting.NAdd {Yt : Q2Presentation.BoundaryFramedTarget} (E : Q2Presentation.Lifting.ElementaryKernel Yt) : TypeThe additive `F₂`-carrier of an elementary kernel.EQ2Presentation.Lifting.ElementaryKernel Yt)) (hinvlam ∈ Q2Presentation.Lifting.conjInvDuals E: lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E)∈Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. Conventions for notations in identifiers: * The recommended spelling of `∈` in identifiers is `mem`.Q2Presentation.Lifting.conjInvDualsQ2Presentation.Lifting.conjInvDuals {Yt : Q2Presentation.BoundaryFramedTarget} (E : Q2Presentation.Lifting.ElementaryKernel Yt) : Submodule (ZMod 2) (Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E))The conjugation-invariant duals `X = (R^∨)^Y = (R^∨)^C` of an elementary kernel (consumer spelling of the manuscript's `𝒳_R`, §7 l.3720–3723).EQ2Presentation.Lifting.ElementaryKernel Yt) {ΓProfiniteGrp.{0}: ProfiniteGrp.{0}ProfiniteGrp.{u_1} : Type (u_1 + 1)The category of profinite groups. A term of this type consists of a profinite set with a topological group structure.} (BQ2Presentation.BoundaryPackage Γ: Q2Presentation.BoundaryPackageQ2Presentation.BoundaryPackage (Γ : ProfiniteGrp.{0}) : TypeA **boundary package** on a profinite group `Γ`: the uniform Stage-C data of a tame quotient, a maximal pro-`2` quotient, and a common unramified character `ℤ₂` through which both factor (manuscript Prop 3.14, `prop:compatiblemarking`; plan Turn 4 §6). The compatibility `tameMap ≫ ν_t = ν = pro2Map ≫ ν_2` records that the two markings agree on the full unramified coordinate, not merely modulo `2`.ΓProfiniteGrp.{0}) (FQ2Presentation.BoundaryFrame Yt: Q2Presentation.BoundaryFrameQ2Presentation.BoundaryFrame (Yt : Q2Presentation.BoundaryFramedTarget) : TypeA **boundary frame** on a boundary-framed target `𝒴` (manuscript `eq:beta`): the fixed compatible data `α : 𝕋_tame ↠ H`, `ψ : Π → Multiplicative E`, and the induced `β : ∂_bd → H × Multiplicative E`. Surjectivity of `α` records that `H` really is a tame quotient (manuscript: "Fix a finite tame quotient `H`, an epimorphism `α : 𝕋_A ↠ H`").YtQ2Presentation.BoundaryFramedTarget) (gQ2Presentation.boundaryFramedSurj B (Q2Presentation.TorsorProgram.quotientFramedTarget Yt E.N ⋯ ⋯) (Q2Presentation.TorsorProgram.quotientFrame Yt E.N ⋯ ⋯ F): Q2Presentation.boundaryFramedSurjQ2Presentation.boundaryFramedSurj {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (Yt : Q2Presentation.BoundaryFramedTarget) (F : Q2Presentation.BoundaryFrame Yt) : TypeThe **boundary-framed surjections** `e_Γ^β(𝒴)` (manuscript `eq:eGamma`): the continuous surjections `f : Γ ↠ Y` whose induced map to `H × E` is the prescribed `β ∘ b_Γ`, i.e. `q_Y ∘ f = β ∘ b_Γ`. This is the subtype counted in Theorem 4.2; its cardinality is `e_Γ^β(𝒴)`.BQ2Presentation.BoundaryPackage Γ(Q2Presentation.TorsorProgram.quotientFramedTargetQ2Presentation.TorsorProgram.quotientFramedTarget (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y) [hNn : N.Normal] (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) : Q2Presentation.BoundaryFramedTarget**The quotient framed target** `Y/N` (same `H`, same `E`, image wild kernel).YtQ2Presentation.BoundaryFramedTargetEQ2Presentation.Lifting.ElementaryKernel Yt.NQ2Presentation.Lifting.ElementaryKernel.N {Yt : Q2Presentation.BoundaryFramedTarget} (self : Q2Presentation.Lifting.ElementaryKernel Yt) : Subgroup Yt.Y⋯ ⋯) (Q2Presentation.TorsorProgram.quotientFrameQ2Presentation.TorsorProgram.quotientFrame (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y) [hNn : N.Normal] (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) (F : Q2Presentation.BoundaryFrame Yt) : Q2Presentation.BoundaryFrame (Q2Presentation.TorsorProgram.quotientFramedTarget Yt N hNLY hNθ)The frame transports verbatim (`H`, `E`, `α`, `ψ`, `β` unchanged).YtQ2Presentation.BoundaryFramedTargetEQ2Presentation.Lifting.ElementaryKernel Yt.NQ2Presentation.Lifting.ElementaryKernel.N {Yt : Q2Presentation.BoundaryFramedTarget} (self : Q2Presentation.Lifting.ElementaryKernel Yt) : Subgroup Yt.Y⋯ ⋯ FQ2Presentation.BoundaryFrame Yt)) : TypeA type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`.def Q2Presentation.Lifting.scalarCoverLiftHom {Yt
Q2Presentation.BoundaryFramedTarget: Q2Presentation.BoundaryFramedTargetQ2Presentation.BoundaryFramedTarget : Type 1A **boundary-framed marked target** `𝒴 = (Y, L_Y, π_Y, θ_Y)` (manuscript Definition 4.1, `def:framed`): a finite group `Y` with a normal finite `2`-subgroup `L_Y`, a surjection `π_Y : Y ↠ H` onto a finite *tame* quotient with kernel exactly `L_Y`, and an *elementary decoration* `θ_Y : Y → Multiplicative E` into the multiplicative image of a finite `𝔽₂`-vector space `E`. The pair `q_Y = (π_Y, θ_Y)` fixes both the tame quotient `Y / L_Y ≅ H` and the decoration.} [FiniteFinite.{u_3} (α : Sort u_3) : PropA type is `Finite` if it is in bijective correspondence to some `Fin n`. This is similar to `Fintype`, but `Finite` is a proposition rather than data. A particular benefit to this is that `Finite` instances are definitionally equal to one another (due to proof irrelevance) rather than being merely propositionally equal, and, furthermore, `Finite` instances generally avoid the need for `Decidable` instances. One other notable difference is that `Finite` allows there to be `Finite p` instances for all `p : Prop`, which is not allowed by `Fintype` due to universe constraints. An application of this is that `Finite (x ∈ s → β x)` follows from the general instance for pi types, assuming `[∀ x, Finite (β x)]`. Implementation note: this is a reason `Finite α` is not defined as `Nonempty (Fintype α)`. Every `Fintype` instance provides a `Finite` instance via `Finite.of_fintype`. Conversely, one can noncomputably create a `Fintype` instance from a `Finite` instance via `Fintype.ofFinite`. In a proof one might write ```lean have := Fintype.ofFinite α ``` to obtain such an instance. Do not write noncomputable `Fintype` instances; instead write `Finite` instances and use this `Fintype.ofFinite` interface. The `Fintype` instances should be relied upon to be computable for evaluation purposes. Theorems should use `Finite` instead of `Fintype`, unless definitions in the theorem statement require `Fintype`. Definitions should prefer `Finite` as well, unless it is important that the definitions are meant to be computable in the reduction or `#eval` sense.YtQ2Presentation.BoundaryFramedTarget.YQ2Presentation.BoundaryFramedTarget.Y (self : Q2Presentation.BoundaryFramedTarget) : TypeThe finite target group `Y`.] (EQ2Presentation.Lifting.ElementaryKernel Yt: Q2Presentation.Lifting.ElementaryKernelQ2Presentation.Lifting.ElementaryKernel (Yt : Q2Presentation.BoundaryFramedTarget) : TypeA normal subgroup of a framed target that is killed by the decoration, contained in the wild kernel, **abelian**, and of **exponent 2** — the shape of the chief kernels the cochain keeps quantify over.YtQ2Presentation.BoundaryFramedTarget) (lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E): Module.DualModule.Dual.{u_4, u_5} (R : Type u_4) (M : Type u_5) [Semiring R] [AddCommMonoid M] [Module R M] : Type (max u_5 u_4)The left dual space of an R-module M is the R-module of linear maps `M → R`.(ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.2) (Q2Presentation.Lifting.NAddQ2Presentation.Lifting.NAdd {Yt : Q2Presentation.BoundaryFramedTarget} (E : Q2Presentation.Lifting.ElementaryKernel Yt) : TypeThe additive `F₂`-carrier of an elementary kernel.EQ2Presentation.Lifting.ElementaryKernel Yt)) (hinvlam ∈ Q2Presentation.Lifting.conjInvDuals E: lamModule.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E)∈Membership.mem.{u, v} {α : outParam (Type u)} {γ : Type v} [self : Membership α γ] : γ → α → PropThe membership relation `a ∈ s : Prop` where `a : α`, `s : γ`. Conventions for notations in identifiers: * The recommended spelling of `∈` in identifiers is `mem`.Q2Presentation.Lifting.conjInvDualsQ2Presentation.Lifting.conjInvDuals {Yt : Q2Presentation.BoundaryFramedTarget} (E : Q2Presentation.Lifting.ElementaryKernel Yt) : Submodule (ZMod 2) (Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E))The conjugation-invariant duals `X = (R^∨)^Y = (R^∨)^C` of an elementary kernel (consumer spelling of the manuscript's `𝒳_R`, §7 l.3720–3723).EQ2Presentation.Lifting.ElementaryKernel Yt) {ΓProfiniteGrp.{0}: ProfiniteGrp.{0}ProfiniteGrp.{u_1} : Type (u_1 + 1)The category of profinite groups. A term of this type consists of a profinite set with a topological group structure.} (BQ2Presentation.BoundaryPackage Γ: Q2Presentation.BoundaryPackageQ2Presentation.BoundaryPackage (Γ : ProfiniteGrp.{0}) : TypeA **boundary package** on a profinite group `Γ`: the uniform Stage-C data of a tame quotient, a maximal pro-`2` quotient, and a common unramified character `ℤ₂` through which both factor (manuscript Prop 3.14, `prop:compatiblemarking`; plan Turn 4 §6). The compatibility `tameMap ≫ ν_t = ν = pro2Map ≫ ν_2` records that the two markings agree on the full unramified coordinate, not merely modulo `2`.ΓProfiniteGrp.{0}) (FQ2Presentation.BoundaryFrame Yt: Q2Presentation.BoundaryFrameQ2Presentation.BoundaryFrame (Yt : Q2Presentation.BoundaryFramedTarget) : TypeA **boundary frame** on a boundary-framed target `𝒴` (manuscript `eq:beta`): the fixed compatible data `α : 𝕋_tame ↠ H`, `ψ : Π → Multiplicative E`, and the induced `β : ∂_bd → H × Multiplicative E`. Surjectivity of `α` records that `H` really is a tame quotient (manuscript: "Fix a finite tame quotient `H`, an epimorphism `α : 𝕋_A ↠ H`").YtQ2Presentation.BoundaryFramedTarget) (gQ2Presentation.boundaryFramedSurj B (Q2Presentation.TorsorProgram.quotientFramedTarget Yt E.N ⋯ ⋯) (Q2Presentation.TorsorProgram.quotientFrame Yt E.N ⋯ ⋯ F): Q2Presentation.boundaryFramedSurjQ2Presentation.boundaryFramedSurj {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (Yt : Q2Presentation.BoundaryFramedTarget) (F : Q2Presentation.BoundaryFrame Yt) : TypeThe **boundary-framed surjections** `e_Γ^β(𝒴)` (manuscript `eq:eGamma`): the continuous surjections `f : Γ ↠ Y` whose induced map to `H × E` is the prescribed `β ∘ b_Γ`, i.e. `q_Y ∘ f = β ∘ b_Γ`. This is the subtype counted in Theorem 4.2; its cardinality is `e_Γ^β(𝒴)`.BQ2Presentation.BoundaryPackage Γ(Q2Presentation.TorsorProgram.quotientFramedTargetQ2Presentation.TorsorProgram.quotientFramedTarget (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y) [hNn : N.Normal] (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) : Q2Presentation.BoundaryFramedTarget**The quotient framed target** `Y/N` (same `H`, same `E`, image wild kernel).YtQ2Presentation.BoundaryFramedTargetEQ2Presentation.Lifting.ElementaryKernel Yt.NQ2Presentation.Lifting.ElementaryKernel.N {Yt : Q2Presentation.BoundaryFramedTarget} (self : Q2Presentation.Lifting.ElementaryKernel Yt) : Subgroup Yt.Y⋯ ⋯) (Q2Presentation.TorsorProgram.quotientFrameQ2Presentation.TorsorProgram.quotientFrame (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y) [hNn : N.Normal] (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) (F : Q2Presentation.BoundaryFrame Yt) : Q2Presentation.BoundaryFrame (Q2Presentation.TorsorProgram.quotientFramedTarget Yt N hNLY hNθ)The frame transports verbatim (`H`, `E`, `α`, `ψ`, `β` unchanged).YtQ2Presentation.BoundaryFramedTargetEQ2Presentation.Lifting.ElementaryKernel Yt.NQ2Presentation.Lifting.ElementaryKernel.N {Yt : Q2Presentation.BoundaryFramedTarget} (self : Q2Presentation.Lifting.ElementaryKernel Yt) : Subgroup Yt.Y⋯ ⋯ FQ2Presentation.BoundaryFrame Yt)) : TypeA type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`.**Cover lifts of `g`** (`lem:obstructionseparation` l.4219–4223): framed homs `Γ ⟶ B_λ` over `g` — surjectivity NOT imposed (the manuscript's compatible lifts: `λ_*o` measures weak liftability; images are stratified by `eq:recursionR2`/`R3` later).
Proved in §8 of the paper. Ingredients: Lemma 7.2.
-
Q2Presentation.Induction.BlockR.blockCountingPartialFormula[complete] -
Q2Presentation.Induction.CentralCoverCandidateRoute29FrattiniFourierCountData[complete] -
Q2Presentation.Induction.CoverRealization.realizeA_of[complete] -
Q2Presentation.Induction.CoverRealization.realizeQ_of[complete] -
Q2Presentation.Induction.MinimalBlock.obstructionSpace[complete] -
Q2Presentation.Induction.MinimalBlock.dimExp[complete] -
Q2Presentation.Induction.MinimalBlock.zR[complete] -
Q2Presentation.Induction.properCoverLiftable[complete] -
Q2Presentation.Induction.FourierBranchData[complete] -
Q2Presentation.Induction.xr_ker_rowMap_card[complete]
Proposition 8.11 of the paper (Fourier inversion for the final Frattini obstruction).
Assume R\ne1 and put
z_R=|Z^1_{\Gamma,\rho}(R)| =2^{2\dim R+\dim\mathcal X_R}.
For \lambda\in\mathcal X_R, let m_{\Gamma,\lambda}(B) be the number of
exact-image maps to B for which the scalar pushout \lambda_*o_R vanishes.
Then m_{\Gamma,0}(B)=e_\Gamma(B) and
\boxed{ e_\Gamma(Y)=\frac{z_R}{|\mathcal X_R|} \sum_{\lambda\in\mathcal X_R} \bigl(2m_{\Gamma,\lambda}(B)-e_\Gamma(B)\bigr).}
Lean code for Theorem8.11●10 declarations
Associated Lean declarations
-
Q2Presentation.Induction.BlockR.blockCountingPartialFormula[complete]
-
Q2Presentation.Induction.CentralCoverCandidateRoute29FrattiniFourierCountData[complete]
-
Q2Presentation.Induction.CoverRealization.realizeA_of[complete]
-
Q2Presentation.Induction.CoverRealization.realizeQ_of[complete]
-
Q2Presentation.Induction.MinimalBlock.obstructionSpace[complete]
-
Q2Presentation.Induction.MinimalBlock.dimExp[complete]
-
Q2Presentation.Induction.MinimalBlock.zR[complete]
-
Q2Presentation.Induction.properCoverLiftable[complete]
-
Q2Presentation.Induction.FourierBranchData[complete]
-
Q2Presentation.Induction.xr_ker_rowMap_card[complete]
-
Q2Presentation.Induction.BlockR.blockCountingPartialFormula[complete] -
Q2Presentation.Induction.CentralCoverCandidateRoute29FrattiniFourierCountData[complete] -
Q2Presentation.Induction.CoverRealization.realizeA_of[complete] -
Q2Presentation.Induction.CoverRealization.realizeQ_of[complete] -
Q2Presentation.Induction.MinimalBlock.obstructionSpace[complete] -
Q2Presentation.Induction.MinimalBlock.dimExp[complete] -
Q2Presentation.Induction.MinimalBlock.zR[complete] -
Q2Presentation.Induction.properCoverLiftable[complete] -
Q2Presentation.Induction.FourierBranchData[complete] -
Q2Presentation.Induction.xr_ker_rowMap_card[complete]
-
defdefined in Q2Presentation/Induction/BlockRealizationAssembly.leancomplete
def Q2Presentation.Induction.BlockR.blockCountingPartialFormula {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) (XQ2Presentation.Induction.MinimalBlockPreheadInvariantCharacterData (Q2Presentation.Induction.sec7RawTowerPacketCanonical chief K).preheadTowerData: Q2Presentation.Induction.MinimalBlockPreheadInvariantCharacterDataQ2Presentation.Induction.MinimalBlockPreheadInvariantCharacterData {p : Q2Presentation.Induction.FramedPair} {chief : Q2Presentation.Induction.NonScalarChiefFactor p} (D : Q2Presentation.Induction.MinimalBlockPreheadTowerData p chief) : PropNonzero invariant determinant characters over a pre-head Section 7 tower. This is the same Frattini-character input as `MinimalBlockInvariantCharacterData`, but stated before `M/T` has been proved nonzero.(Q2Presentation.Induction.sec7RawTowerPacketCanonicalQ2Presentation.Induction.sec7RawTowerPacketCanonical {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.Sec7RawTowerPacket chief KThe canonical raw tower packet — the literal §7 constructors (checkpoint-F9). Using this definitional packet (instead of an opaque `Nonempty`-obtained one) lets the crux-lowered pushout packet of `Section7PushoutConstruction` be consumed directly.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).preheadTowerDataQ2Presentation.Induction.Sec7RawTowerPacket.preheadTowerData {p : Q2Presentation.Induction.FramedPair} {chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p} {K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor} (T : Q2Presentation.Induction.Sec7RawTowerPacket chief K) : Q2Presentation.Induction.MinimalBlockPreheadTowerData p chief.toNonScalarChiefFactorThe pre-head tower assembled from the packet.) (FdetQ2Presentation.Induction.MinimalBlockPreheadExtraspecialEquivariantFamilyData (Q2Presentation.Induction.sec7RawTowerPacketCanonical chief K).preheadTowerData: Q2Presentation.Induction.MinimalBlockPreheadExtraspecialEquivariantFamilyDataQ2Presentation.Induction.MinimalBlockPreheadExtraspecialEquivariantFamilyData {p : Q2Presentation.Induction.FramedPair} {chief : Q2Presentation.Induction.NonScalarChiefFactor p} (D : Q2Presentation.Induction.MinimalBlockPreheadTowerData p chief) : TypeEquivariant extraspecial self-duality data over a pre-head tower. This is now an assembled packet: the bare central-pushout self-duality family and its `C`-naturality/diagonal-invariance proof are separated below, then reassembled here for the existing downstream pre-head determinant interfaces.(Q2Presentation.Induction.sec7RawTowerPacketCanonicalQ2Presentation.Induction.sec7RawTowerPacketCanonical {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.Sec7RawTowerPacket chief KThe canonical raw tower packet — the literal §7 constructors (checkpoint-F9). Using this definitional packet (instead of an opaque `Nonempty`-obtained one) lets the crux-lowered pushout packet of `Section7PushoutConstruction` be consumed directly.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).preheadTowerDataQ2Presentation.Induction.Sec7RawTowerPacket.preheadTowerData {p : Q2Presentation.Induction.FramedPair} {chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p} {K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor} (T : Q2Presentation.Induction.Sec7RawTowerPacket chief K) : Q2Presentation.Induction.MinimalBlockPreheadTowerData p chief.toNonScalarChiefFactorThe pre-head tower assembled from the packet.) (AQ2Presentation.Induction.MinimalBlockPreheadExtraspecialAnnihilationData Fdet: Q2Presentation.Induction.MinimalBlockPreheadExtraspecialAnnihilationDataQ2Presentation.Induction.MinimalBlockPreheadExtraspecialAnnihilationData {p : Q2Presentation.Induction.FramedPair} {chief : Q2Presentation.Induction.NonScalarChiefFactor p} {D : Q2Presentation.Induction.MinimalBlockPreheadTowerData p chief} (F : Q2Presentation.Induction.MinimalBlockPreheadExtraspecialEquivariantFamilyData D) : PropThe two annihilation conclusions of `prop:simpleheaddet`, stated over the pre-head equivariant determinant family.FdetQ2Presentation.Induction.MinimalBlockPreheadExtraspecialEquivariantFamilyData (Q2Presentation.Induction.sec7RawTowerPacketCanonical chief K).preheadTowerData) (RdetQ2Presentation.Induction.MinimalBlockPreheadExtraspecialRadicalData Fdet: Q2Presentation.Induction.MinimalBlockPreheadExtraspecialRadicalDataQ2Presentation.Induction.MinimalBlockPreheadExtraspecialRadicalData {p : Q2Presentation.Induction.FramedPair} {chief : Q2Presentation.Induction.NonScalarChiefFactor p} {D : Q2Presentation.Induction.MinimalBlockPreheadTowerData p chief} (F : Q2Presentation.Induction.MinimalBlockPreheadExtraspecialEquivariantFamilyData D) : PropThe polar-radical containment conclusion of `prop:simpleheaddet`, stated before the head-nontrivial field is installed.FdetQ2Presentation.Induction.MinimalBlockPreheadExtraspecialEquivariantFamilyData (Q2Presentation.Induction.sec7RawTowerPacketCanonical chief K).preheadTowerData) (NQ2Presentation.Induction.MinimalBlockPreheadExtraspecialNonzeroData Fdet: Q2Presentation.Induction.MinimalBlockPreheadExtraspecialNonzeroDataQ2Presentation.Induction.MinimalBlockPreheadExtraspecialNonzeroData {p : Q2Presentation.Induction.FramedPair} {chief : Q2Presentation.Induction.NonScalarChiefFactor p} {D : Q2Presentation.Induction.MinimalBlockPreheadTowerData p chief} (F : Q2Presentation.Induction.MinimalBlockPreheadExtraspecialEquivariantFamilyData D) : PropThe nonzero diagonal conclusion of `prop:simpleheaddet`, stated before the head-nontrivial field is installed.FdetQ2Presentation.Induction.MinimalBlockPreheadExtraspecialEquivariantFamilyData (Q2Presentation.Induction.sec7RawTowerPacketCanonical chief K).preheadTowerData) (h¬Q2Presentation.Induction.ScalarTerminal p: ¬Not (a : Prop) : Prop`Not p`, or `¬p`, is the negation of `p`. It is defined to be `p → False`, so if your goal is `¬p` you can use `intro h` to turn the goal into `h : p ⊢ False`, and if you have `hn : ¬p` and `h : p` then `hn h : False` and `(hn h).elim` will prove anything. For more information: [Propositional Logic](https://lean-lang.org/theorem_proving_in_lean4/propositions_and_proofs.html#propositional-logic) Conventions for notations in identifiers: * The recommended spelling of `¬` in identifiers is `not`.Q2Presentation.Induction.ScalarTerminalQ2Presentation.Induction.ScalarTerminal (p : Q2Presentation.Induction.FramedPair) : Prop**Scalar-terminal framed pair.**pQ2Presentation.Induction.FramedPair) (LQ2Presentation.Induction.CentralCoverLiftTorsorData (Q2Presentation.Induction.BlockR.Bstar chief K X Fdet A Rdet N h): Q2Presentation.Induction.CentralCoverLiftTorsorDataQ2Presentation.Induction.CentralCoverLiftTorsorData {p : Q2Presentation.Induction.FramedPair} (B : Q2Presentation.Induction.MinimalBlock p) : Type 1The per-source lift-torsor and exact-image orbit data needed for the `prop:finalfourier` numerator over a fixed minimal block. This is strictly weaker than `CoverRealization B`: it contains only the finite lift indices, obstruction maps, `Z^1(R)` torsor fibres, and the two boundary-framed surjection decompositions. It does not assert any recursive children or any source-independent partial-count recipe.(Q2Presentation.Induction.BlockR.BstarQ2Presentation.Induction.BlockR.Bstar {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (X : Q2Presentation.Induction.MinimalBlockPreheadInvariantCharacterData (Q2Presentation.Induction.sec7RawTowerPacketCanonical chief K).preheadTowerData) (Fdet : Q2Presentation.Induction.MinimalBlockPreheadExtraspecialEquivariantFamilyData (Q2Presentation.Induction.sec7RawTowerPacketCanonical chief K).preheadTowerData) (A : Q2Presentation.Induction.MinimalBlockPreheadExtraspecialAnnihilationData Fdet) (Rdet : Q2Presentation.Induction.MinimalBlockPreheadExtraspecialRadicalData Fdet) (N : Q2Presentation.Induction.MinimalBlockPreheadExtraspecialNonzeroData Fdet) (h : ¬Q2Presentation.Induction.ScalarTerminal p) : Q2Presentation.Induction.MinimalBlock pThe pinned block.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactorXQ2Presentation.Induction.MinimalBlockPreheadInvariantCharacterData (Q2Presentation.Induction.sec7RawTowerPacketCanonical chief K).preheadTowerDataFdetQ2Presentation.Induction.MinimalBlockPreheadExtraspecialEquivariantFamilyData (Q2Presentation.Induction.sec7RawTowerPacketCanonical chief K).preheadTowerDataAQ2Presentation.Induction.MinimalBlockPreheadExtraspecialAnnihilationData FdetRdetQ2Presentation.Induction.MinimalBlockPreheadExtraspecialRadicalData FdetNQ2Presentation.Induction.MinimalBlockPreheadExtraspecialNonzeroData Fdeth¬Q2Presentation.Induction.ScalarTerminal p)) (CQ2Presentation.Induction.CentralCoverChildrenData (Q2Presentation.Induction.BlockR.Bstar chief K X Fdet A Rdet N h): Q2Presentation.Induction.CentralCoverChildrenDataQ2Presentation.Induction.CentralCoverChildrenData {p : Q2Presentation.Induction.FramedPair} (B : Q2Presentation.Induction.MinimalBlock p) : Type 1Strictly smaller recursive targets, isolated from the partial-count formula. Manuscript anchor: `lem:strictdecrease`.(Q2Presentation.Induction.BlockR.BstarQ2Presentation.Induction.BlockR.Bstar {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (X : Q2Presentation.Induction.MinimalBlockPreheadInvariantCharacterData (Q2Presentation.Induction.sec7RawTowerPacketCanonical chief K).preheadTowerData) (Fdet : Q2Presentation.Induction.MinimalBlockPreheadExtraspecialEquivariantFamilyData (Q2Presentation.Induction.sec7RawTowerPacketCanonical chief K).preheadTowerData) (A : Q2Presentation.Induction.MinimalBlockPreheadExtraspecialAnnihilationData Fdet) (Rdet : Q2Presentation.Induction.MinimalBlockPreheadExtraspecialRadicalData Fdet) (N : Q2Presentation.Induction.MinimalBlockPreheadExtraspecialNonzeroData Fdet) (h : ¬Q2Presentation.Induction.ScalarTerminal p) : Q2Presentation.Induction.MinimalBlock pThe pinned block.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactorXQ2Presentation.Induction.MinimalBlockPreheadInvariantCharacterData (Q2Presentation.Induction.sec7RawTowerPacketCanonical chief K).preheadTowerDataFdetQ2Presentation.Induction.MinimalBlockPreheadExtraspecialEquivariantFamilyData (Q2Presentation.Induction.sec7RawTowerPacketCanonical chief K).preheadTowerDataAQ2Presentation.Induction.MinimalBlockPreheadExtraspecialAnnihilationData FdetRdetQ2Presentation.Induction.MinimalBlockPreheadExtraspecialRadicalData FdetNQ2Presentation.Induction.MinimalBlockPreheadExtraspecialNonzeroData Fdeth¬Q2Presentation.Induction.ScalarTerminal p)) : Q2Presentation.Induction.CentralCoverSourcePartialFormulaQ2Presentation.Induction.CentralCoverSourcePartialFormula {p : Q2Presentation.Induction.FramedPair} (B : Q2Presentation.Induction.MinimalBlock p) (T : Q2Presentation.Induction.CentralCoverLiftTorsorData B) (C : Q2Presentation.Induction.CentralCoverChildrenData B) : TypeThe source-side formula components whose sum is the partial-count recipe. These are the finite/combinatorial pieces of `eq:recursionR2` through `eq:phasecovertransform`: elementary lifting, proper-image subtraction, nonzero radical-edge terms, zero-edge constrained Gauss terms, and phase-cover transforms. The terms are kept separate so the public partial-data theorem is not a single arbitrary function.(Q2Presentation.Induction.BlockR.BstarQ2Presentation.Induction.BlockR.Bstar {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (X : Q2Presentation.Induction.MinimalBlockPreheadInvariantCharacterData (Q2Presentation.Induction.sec7RawTowerPacketCanonical chief K).preheadTowerData) (Fdet : Q2Presentation.Induction.MinimalBlockPreheadExtraspecialEquivariantFamilyData (Q2Presentation.Induction.sec7RawTowerPacketCanonical chief K).preheadTowerData) (A : Q2Presentation.Induction.MinimalBlockPreheadExtraspecialAnnihilationData Fdet) (Rdet : Q2Presentation.Induction.MinimalBlockPreheadExtraspecialRadicalData Fdet) (N : Q2Presentation.Induction.MinimalBlockPreheadExtraspecialNonzeroData Fdet) (h : ¬Q2Presentation.Induction.ScalarTerminal p) : Q2Presentation.Induction.MinimalBlock pThe pinned block.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactorXQ2Presentation.Induction.MinimalBlockPreheadInvariantCharacterData (Q2Presentation.Induction.sec7RawTowerPacketCanonical chief K).preheadTowerDataFdetQ2Presentation.Induction.MinimalBlockPreheadExtraspecialEquivariantFamilyData (Q2Presentation.Induction.sec7RawTowerPacketCanonical chief K).preheadTowerDataAQ2Presentation.Induction.MinimalBlockPreheadExtraspecialAnnihilationData FdetRdetQ2Presentation.Induction.MinimalBlockPreheadExtraspecialRadicalData FdetNQ2Presentation.Induction.MinimalBlockPreheadExtraspecialNonzeroData Fdeth¬Q2Presentation.Induction.ScalarTerminal p) LQ2Presentation.Induction.CentralCoverLiftTorsorData (Q2Presentation.Induction.BlockR.Bstar chief K X Fdet A Rdet N h)CQ2Presentation.Induction.CentralCoverChildrenData (Q2Presentation.Induction.BlockR.Bstar chief K X Fdet A Rdet N h)def Q2Presentation.Induction.BlockR.blockCountingPartialFormula {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) (XQ2Presentation.Induction.MinimalBlockPreheadInvariantCharacterData (Q2Presentation.Induction.sec7RawTowerPacketCanonical chief K).preheadTowerData: Q2Presentation.Induction.MinimalBlockPreheadInvariantCharacterDataQ2Presentation.Induction.MinimalBlockPreheadInvariantCharacterData {p : Q2Presentation.Induction.FramedPair} {chief : Q2Presentation.Induction.NonScalarChiefFactor p} (D : Q2Presentation.Induction.MinimalBlockPreheadTowerData p chief) : PropNonzero invariant determinant characters over a pre-head Section 7 tower. This is the same Frattini-character input as `MinimalBlockInvariantCharacterData`, but stated before `M/T` has been proved nonzero.(Q2Presentation.Induction.sec7RawTowerPacketCanonicalQ2Presentation.Induction.sec7RawTowerPacketCanonical {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.Sec7RawTowerPacket chief KThe canonical raw tower packet — the literal §7 constructors (checkpoint-F9). Using this definitional packet (instead of an opaque `Nonempty`-obtained one) lets the crux-lowered pushout packet of `Section7PushoutConstruction` be consumed directly.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).preheadTowerDataQ2Presentation.Induction.Sec7RawTowerPacket.preheadTowerData {p : Q2Presentation.Induction.FramedPair} {chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p} {K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor} (T : Q2Presentation.Induction.Sec7RawTowerPacket chief K) : Q2Presentation.Induction.MinimalBlockPreheadTowerData p chief.toNonScalarChiefFactorThe pre-head tower assembled from the packet.) (FdetQ2Presentation.Induction.MinimalBlockPreheadExtraspecialEquivariantFamilyData (Q2Presentation.Induction.sec7RawTowerPacketCanonical chief K).preheadTowerData: Q2Presentation.Induction.MinimalBlockPreheadExtraspecialEquivariantFamilyDataQ2Presentation.Induction.MinimalBlockPreheadExtraspecialEquivariantFamilyData {p : Q2Presentation.Induction.FramedPair} {chief : Q2Presentation.Induction.NonScalarChiefFactor p} (D : Q2Presentation.Induction.MinimalBlockPreheadTowerData p chief) : TypeEquivariant extraspecial self-duality data over a pre-head tower. This is now an assembled packet: the bare central-pushout self-duality family and its `C`-naturality/diagonal-invariance proof are separated below, then reassembled here for the existing downstream pre-head determinant interfaces.(Q2Presentation.Induction.sec7RawTowerPacketCanonicalQ2Presentation.Induction.sec7RawTowerPacketCanonical {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.Sec7RawTowerPacket chief KThe canonical raw tower packet — the literal §7 constructors (checkpoint-F9). Using this definitional packet (instead of an opaque `Nonempty`-obtained one) lets the crux-lowered pushout packet of `Section7PushoutConstruction` be consumed directly.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).preheadTowerDataQ2Presentation.Induction.Sec7RawTowerPacket.preheadTowerData {p : Q2Presentation.Induction.FramedPair} {chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p} {K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor} (T : Q2Presentation.Induction.Sec7RawTowerPacket chief K) : Q2Presentation.Induction.MinimalBlockPreheadTowerData p chief.toNonScalarChiefFactorThe pre-head tower assembled from the packet.) (AQ2Presentation.Induction.MinimalBlockPreheadExtraspecialAnnihilationData Fdet: Q2Presentation.Induction.MinimalBlockPreheadExtraspecialAnnihilationDataQ2Presentation.Induction.MinimalBlockPreheadExtraspecialAnnihilationData {p : Q2Presentation.Induction.FramedPair} {chief : Q2Presentation.Induction.NonScalarChiefFactor p} {D : Q2Presentation.Induction.MinimalBlockPreheadTowerData p chief} (F : Q2Presentation.Induction.MinimalBlockPreheadExtraspecialEquivariantFamilyData D) : PropThe two annihilation conclusions of `prop:simpleheaddet`, stated over the pre-head equivariant determinant family.FdetQ2Presentation.Induction.MinimalBlockPreheadExtraspecialEquivariantFamilyData (Q2Presentation.Induction.sec7RawTowerPacketCanonical chief K).preheadTowerData) (RdetQ2Presentation.Induction.MinimalBlockPreheadExtraspecialRadicalData Fdet: Q2Presentation.Induction.MinimalBlockPreheadExtraspecialRadicalDataQ2Presentation.Induction.MinimalBlockPreheadExtraspecialRadicalData {p : Q2Presentation.Induction.FramedPair} {chief : Q2Presentation.Induction.NonScalarChiefFactor p} {D : Q2Presentation.Induction.MinimalBlockPreheadTowerData p chief} (F : Q2Presentation.Induction.MinimalBlockPreheadExtraspecialEquivariantFamilyData D) : PropThe polar-radical containment conclusion of `prop:simpleheaddet`, stated before the head-nontrivial field is installed.FdetQ2Presentation.Induction.MinimalBlockPreheadExtraspecialEquivariantFamilyData (Q2Presentation.Induction.sec7RawTowerPacketCanonical chief K).preheadTowerData) (NQ2Presentation.Induction.MinimalBlockPreheadExtraspecialNonzeroData Fdet: Q2Presentation.Induction.MinimalBlockPreheadExtraspecialNonzeroDataQ2Presentation.Induction.MinimalBlockPreheadExtraspecialNonzeroData {p : Q2Presentation.Induction.FramedPair} {chief : Q2Presentation.Induction.NonScalarChiefFactor p} {D : Q2Presentation.Induction.MinimalBlockPreheadTowerData p chief} (F : Q2Presentation.Induction.MinimalBlockPreheadExtraspecialEquivariantFamilyData D) : PropThe nonzero diagonal conclusion of `prop:simpleheaddet`, stated before the head-nontrivial field is installed.FdetQ2Presentation.Induction.MinimalBlockPreheadExtraspecialEquivariantFamilyData (Q2Presentation.Induction.sec7RawTowerPacketCanonical chief K).preheadTowerData) (h¬Q2Presentation.Induction.ScalarTerminal p: ¬Not (a : Prop) : Prop`Not p`, or `¬p`, is the negation of `p`. It is defined to be `p → False`, so if your goal is `¬p` you can use `intro h` to turn the goal into `h : p ⊢ False`, and if you have `hn : ¬p` and `h : p` then `hn h : False` and `(hn h).elim` will prove anything. For more information: [Propositional Logic](https://lean-lang.org/theorem_proving_in_lean4/propositions_and_proofs.html#propositional-logic) Conventions for notations in identifiers: * The recommended spelling of `¬` in identifiers is `not`.Q2Presentation.Induction.ScalarTerminalQ2Presentation.Induction.ScalarTerminal (p : Q2Presentation.Induction.FramedPair) : Prop**Scalar-terminal framed pair.**pQ2Presentation.Induction.FramedPair) (LQ2Presentation.Induction.CentralCoverLiftTorsorData (Q2Presentation.Induction.BlockR.Bstar chief K X Fdet A Rdet N h): Q2Presentation.Induction.CentralCoverLiftTorsorDataQ2Presentation.Induction.CentralCoverLiftTorsorData {p : Q2Presentation.Induction.FramedPair} (B : Q2Presentation.Induction.MinimalBlock p) : Type 1The per-source lift-torsor and exact-image orbit data needed for the `prop:finalfourier` numerator over a fixed minimal block. This is strictly weaker than `CoverRealization B`: it contains only the finite lift indices, obstruction maps, `Z^1(R)` torsor fibres, and the two boundary-framed surjection decompositions. It does not assert any recursive children or any source-independent partial-count recipe.(Q2Presentation.Induction.BlockR.BstarQ2Presentation.Induction.BlockR.Bstar {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (X : Q2Presentation.Induction.MinimalBlockPreheadInvariantCharacterData (Q2Presentation.Induction.sec7RawTowerPacketCanonical chief K).preheadTowerData) (Fdet : Q2Presentation.Induction.MinimalBlockPreheadExtraspecialEquivariantFamilyData (Q2Presentation.Induction.sec7RawTowerPacketCanonical chief K).preheadTowerData) (A : Q2Presentation.Induction.MinimalBlockPreheadExtraspecialAnnihilationData Fdet) (Rdet : Q2Presentation.Induction.MinimalBlockPreheadExtraspecialRadicalData Fdet) (N : Q2Presentation.Induction.MinimalBlockPreheadExtraspecialNonzeroData Fdet) (h : ¬Q2Presentation.Induction.ScalarTerminal p) : Q2Presentation.Induction.MinimalBlock pThe pinned block.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactorXQ2Presentation.Induction.MinimalBlockPreheadInvariantCharacterData (Q2Presentation.Induction.sec7RawTowerPacketCanonical chief K).preheadTowerDataFdetQ2Presentation.Induction.MinimalBlockPreheadExtraspecialEquivariantFamilyData (Q2Presentation.Induction.sec7RawTowerPacketCanonical chief K).preheadTowerDataAQ2Presentation.Induction.MinimalBlockPreheadExtraspecialAnnihilationData FdetRdetQ2Presentation.Induction.MinimalBlockPreheadExtraspecialRadicalData FdetNQ2Presentation.Induction.MinimalBlockPreheadExtraspecialNonzeroData Fdeth¬Q2Presentation.Induction.ScalarTerminal p)) (CQ2Presentation.Induction.CentralCoverChildrenData (Q2Presentation.Induction.BlockR.Bstar chief K X Fdet A Rdet N h): Q2Presentation.Induction.CentralCoverChildrenDataQ2Presentation.Induction.CentralCoverChildrenData {p : Q2Presentation.Induction.FramedPair} (B : Q2Presentation.Induction.MinimalBlock p) : Type 1Strictly smaller recursive targets, isolated from the partial-count formula. Manuscript anchor: `lem:strictdecrease`.(Q2Presentation.Induction.BlockR.BstarQ2Presentation.Induction.BlockR.Bstar {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (X : Q2Presentation.Induction.MinimalBlockPreheadInvariantCharacterData (Q2Presentation.Induction.sec7RawTowerPacketCanonical chief K).preheadTowerData) (Fdet : Q2Presentation.Induction.MinimalBlockPreheadExtraspecialEquivariantFamilyData (Q2Presentation.Induction.sec7RawTowerPacketCanonical chief K).preheadTowerData) (A : Q2Presentation.Induction.MinimalBlockPreheadExtraspecialAnnihilationData Fdet) (Rdet : Q2Presentation.Induction.MinimalBlockPreheadExtraspecialRadicalData Fdet) (N : Q2Presentation.Induction.MinimalBlockPreheadExtraspecialNonzeroData Fdet) (h : ¬Q2Presentation.Induction.ScalarTerminal p) : Q2Presentation.Induction.MinimalBlock pThe pinned block.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactorXQ2Presentation.Induction.MinimalBlockPreheadInvariantCharacterData (Q2Presentation.Induction.sec7RawTowerPacketCanonical chief K).preheadTowerDataFdetQ2Presentation.Induction.MinimalBlockPreheadExtraspecialEquivariantFamilyData (Q2Presentation.Induction.sec7RawTowerPacketCanonical chief K).preheadTowerDataAQ2Presentation.Induction.MinimalBlockPreheadExtraspecialAnnihilationData FdetRdetQ2Presentation.Induction.MinimalBlockPreheadExtraspecialRadicalData FdetNQ2Presentation.Induction.MinimalBlockPreheadExtraspecialNonzeroData Fdeth¬Q2Presentation.Induction.ScalarTerminal p)) : Q2Presentation.Induction.CentralCoverSourcePartialFormulaQ2Presentation.Induction.CentralCoverSourcePartialFormula {p : Q2Presentation.Induction.FramedPair} (B : Q2Presentation.Induction.MinimalBlock p) (T : Q2Presentation.Induction.CentralCoverLiftTorsorData B) (C : Q2Presentation.Induction.CentralCoverChildrenData B) : TypeThe source-side formula components whose sum is the partial-count recipe. These are the finite/combinatorial pieces of `eq:recursionR2` through `eq:phasecovertransform`: elementary lifting, proper-image subtraction, nonzero radical-edge terms, zero-edge constrained Gauss terms, and phase-cover transforms. The terms are kept separate so the public partial-data theorem is not a single arbitrary function.(Q2Presentation.Induction.BlockR.BstarQ2Presentation.Induction.BlockR.Bstar {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (X : Q2Presentation.Induction.MinimalBlockPreheadInvariantCharacterData (Q2Presentation.Induction.sec7RawTowerPacketCanonical chief K).preheadTowerData) (Fdet : Q2Presentation.Induction.MinimalBlockPreheadExtraspecialEquivariantFamilyData (Q2Presentation.Induction.sec7RawTowerPacketCanonical chief K).preheadTowerData) (A : Q2Presentation.Induction.MinimalBlockPreheadExtraspecialAnnihilationData Fdet) (Rdet : Q2Presentation.Induction.MinimalBlockPreheadExtraspecialRadicalData Fdet) (N : Q2Presentation.Induction.MinimalBlockPreheadExtraspecialNonzeroData Fdet) (h : ¬Q2Presentation.Induction.ScalarTerminal p) : Q2Presentation.Induction.MinimalBlock pThe pinned block.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactorXQ2Presentation.Induction.MinimalBlockPreheadInvariantCharacterData (Q2Presentation.Induction.sec7RawTowerPacketCanonical chief K).preheadTowerDataFdetQ2Presentation.Induction.MinimalBlockPreheadExtraspecialEquivariantFamilyData (Q2Presentation.Induction.sec7RawTowerPacketCanonical chief K).preheadTowerDataAQ2Presentation.Induction.MinimalBlockPreheadExtraspecialAnnihilationData FdetRdetQ2Presentation.Induction.MinimalBlockPreheadExtraspecialRadicalData FdetNQ2Presentation.Induction.MinimalBlockPreheadExtraspecialNonzeroData Fdeth¬Q2Presentation.Induction.ScalarTerminal p) LQ2Presentation.Induction.CentralCoverLiftTorsorData (Q2Presentation.Induction.BlockR.Bstar chief K X Fdet A Rdet N h)CQ2Presentation.Induction.CentralCoverChildrenData (Q2Presentation.Induction.BlockR.Bstar chief K X Fdet A Rdet N h)**The split counting formula** (P8-lite): at `χ = 0` the partial count is the CHILD count (`counts.headI` — threaded through `children`, so the engine's induction hypothesis supplies the source-agreement there, `m_{Γ,0}(B) = e_Γ(B)`, `prop:finalfourier` l.4249); at `χ ≠ 0` with `4 ≤ |Φ(K)|` it is the `χ`-strata chunk sum of the children counts divided by 8 (`eq:covertransform` at the scalar cover `B_{λ(χ)}`: the strata are children, so the engine IH supplies the per-stratum source-agreement, and the division is exact — at the realized lists the numerator is `8·m_{Γ,λ(χ)}(B)` by `sec7_scalarCoverPartition_gammaA/gq2`); at `χ ≠ 0` with `|Φ(K)| = 2` it is the R2–R5 recursion term `cardTwoTerm` (design §3.3): `zeroEdgeZterm − properTerm`, both read positionally from the card-2 children counts — one shared source-independent term, so `partialRecipe_of_sourceAgreement … rfl` survives unchanged. -
structuredefined in Q2Presentation/Induction/CandidateScalarFrattiniRoute29Proofs.leancomplete
structure Q2Presentation.Induction.CentralCoverCandidateRoute29FrattiniFourierCountData {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|`.} (BQ2Presentation.Induction.MinimalBlock p: Q2Presentation.Induction.MinimalBlockQ2Presentation.Induction.MinimalBlock (p : Q2Presentation.Induction.FramedPair) : Type 1**The §7 minimal non-scalar block.** Source-uniform module-level data of the manuscript tower (`eq:targettower`), with the deep group/representation inputs of `lem:simplehead`/`lem:collapse`/`prop:simpleheaddet` isolated as documented fields.pQ2Presentation.Induction.FramedPair) (TQ2Presentation.Induction.CentralCoverElementaryQuotientTowerData B: Q2Presentation.Induction.CentralCoverElementaryQuotientTowerDataQ2Presentation.Induction.CentralCoverElementaryQuotientTowerData {p : Q2Presentation.Induction.FramedPair} (B : Q2Presentation.Induction.MinimalBlock p) : Type 1A realized elementary quotient tower for `eq:targettower`. This is the missing target-side finite group datum behind the lower term in `eq:Mstage`: the middle quotient `B = Y/R`, the lower quotient `C = Y/K`, and the map `B -> C`. The cardinal equations record the two quotient steps in a form that proves strict decrease. The current `MinimalBlock` supplies the abstract modules, but not this realized quotient tower.BQ2Presentation.Induction.MinimalBlock p) (DQ2Presentation.Induction.CentralCoverCandidateMiddleRLiftObstructionMapData B T: Q2Presentation.Induction.CentralCoverCandidateMiddleRLiftObstructionMapDataQ2Presentation.Induction.CentralCoverCandidateMiddleRLiftObstructionMapData {p : Q2Presentation.Induction.FramedPair} (B : Q2Presentation.Induction.MinimalBlock p) (T : Q2Presentation.Induction.CentralCoverElementaryQuotientTowerData B) : TypeCandidate `R`-lift obstruction map on the canonical middle exact-image index. The index is theorem-level: `centralCover_candidateMiddleExactImageIndexBaseData B T` is the finite set of middle boundary-framed exact-image maps (`def:Xgamma`). The residual content is only the semantic `R`-valued obstruction evaluation of `lem:obstructionseparation` on that index.BQ2Presentation.Induction.MinimalBlock pTQ2Presentation.Induction.CentralCoverElementaryQuotientTowerData B) : TypeA type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`.structure Q2Presentation.Induction.CentralCoverCandidateRoute29FrattiniFourierCountData {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|`.} (BQ2Presentation.Induction.MinimalBlock p: Q2Presentation.Induction.MinimalBlockQ2Presentation.Induction.MinimalBlock (p : Q2Presentation.Induction.FramedPair) : Type 1**The §7 minimal non-scalar block.** Source-uniform module-level data of the manuscript tower (`eq:targettower`), with the deep group/representation inputs of `lem:simplehead`/`lem:collapse`/`prop:simpleheaddet` isolated as documented fields.pQ2Presentation.Induction.FramedPair) (TQ2Presentation.Induction.CentralCoverElementaryQuotientTowerData B: Q2Presentation.Induction.CentralCoverElementaryQuotientTowerDataQ2Presentation.Induction.CentralCoverElementaryQuotientTowerData {p : Q2Presentation.Induction.FramedPair} (B : Q2Presentation.Induction.MinimalBlock p) : Type 1A realized elementary quotient tower for `eq:targettower`. This is the missing target-side finite group datum behind the lower term in `eq:Mstage`: the middle quotient `B = Y/R`, the lower quotient `C = Y/K`, and the map `B -> C`. The cardinal equations record the two quotient steps in a form that proves strict decrease. The current `MinimalBlock` supplies the abstract modules, but not this realized quotient tower.BQ2Presentation.Induction.MinimalBlock p) (DQ2Presentation.Induction.CentralCoverCandidateMiddleRLiftObstructionMapData B T: Q2Presentation.Induction.CentralCoverCandidateMiddleRLiftObstructionMapDataQ2Presentation.Induction.CentralCoverCandidateMiddleRLiftObstructionMapData {p : Q2Presentation.Induction.FramedPair} (B : Q2Presentation.Induction.MinimalBlock p) (T : Q2Presentation.Induction.CentralCoverElementaryQuotientTowerData B) : TypeCandidate `R`-lift obstruction map on the canonical middle exact-image index. The index is theorem-level: `centralCover_candidateMiddleExactImageIndexBaseData B T` is the finite set of middle boundary-framed exact-image maps (`def:Xgamma`). The residual content is only the semantic `R`-valued obstruction evaluation of `lem:obstructionseparation` on that index.BQ2Presentation.Induction.MinimalBlock pTQ2Presentation.Induction.CentralCoverElementaryQuotientTowerData B) : TypeA type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`.**Route29 Frattini Fourier count packet.** Manuscript anchor: Section 8, `prop:finalfourier`. This is the numerator form of the final Frattini obstruction count for the chosen canonical middle obstruction: top exact-image candidate maps are counted as `z_R` times the unobstructed middle exact-image locus. The conversion from this statement to the full route28 cardinality packet is theorem-level below.
Fields
top_count_eq
Nat.card Q2Presentation.Induction.centralCoverCandidateSource = B.zR * Nat.card { x // D.obstructionIndexToBaseMapData.O.o x = 0 }: Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number. If `α` is infinite, `Nat.card α = 0`.Q2Presentation.Induction.centralCoverCandidateSourceQ2Presentation.Induction.centralCoverCandidateSource {p : Q2Presentation.Induction.FramedPair} : TypeCandidate source set for the fixed boundary-framed target.=Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`. We use `a = b` as notation for `Eq a b`. A fundamental property of equality is that it is an equivalence relation. ``` variable (α : Type) (a b c d : α) variable (hab : a = b) (hcb : c = b) (hcd : c = d) example : a = d := Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd ``` Equality is much more than an equivalence relation, however. It has the important property that every assertion respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value. That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`. Example: ``` example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := Eq.subst h1 h2 example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := h1 ▸ h2 ``` The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`. For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality) Conventions for notations in identifiers: * The recommended spelling of `=` in identifiers is `eq`.BQ2Presentation.Induction.MinimalBlock p.zRQ2Presentation.Induction.MinimalBlock.zR {p : Q2Presentation.Induction.FramedPair} (B : Q2Presentation.Induction.MinimalBlock p) : ℕ**`zR = 2^{2 dim R}·|𝒳_R| = 2^{dimExp}·|Ŵ|`** (manuscript `prop:finalfourier`, `z_R = |Z¹_{Γ,ρ}(R)| = 2^{2 dim R + dim 𝒳_R}`, l.4244). Since `𝒳_R = Ŵ` is the character group of `W = O_R`, this is exactly the value `FourierBranchData.hzR` demands for the common lift-torsor size.*HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number. If `α` is infinite, `Nat.card α = 0`.{Subtype.{u} {α : Sort u} (p : α → Prop) : Sort (max 1 u)All the elements of a type that satisfy a predicate. `Subtype p`, usually written `{ x : α // p x }` or `{ x // p x }`, contains all elements `x : α` for which `p x` is true. Its constructor is a pair of the value and the proof that it satisfies the predicate. In run-time code, `{ x : α // p x }` is represented identically to `α`. There is a coercion from `{ x : α // p x }` to `α`, so elements of a subtype may be used where the underlying type is expected. Examples: * `{ n : Nat // n % 2 = 0 }` is the type of even numbers. * `{ xs : Array String // xs.size = 5 }` is the type of arrays with five `String`s. * Given `xs : List α`, `List { x : α // x ∈ xs }` is the type of lists in which all elements are contained in `xs`. Conventions for notations in identifiers: * The recommended spelling of `{ x // p x }` in identifiers is `subtype`.xD.obstructionIndexToBaseMapData.O.X//Subtype.{u} {α : Sort u} (p : α → Prop) : Sort (max 1 u)All the elements of a type that satisfy a predicate. `Subtype p`, usually written `{ x : α // p x }` or `{ x // p x }`, contains all elements `x : α` for which `p x` is true. Its constructor is a pair of the value and the proof that it satisfies the predicate. In run-time code, `{ x : α // p x }` is represented identically to `α`. There is a coercion from `{ x : α // p x }` to `α`, so elements of a subtype may be used where the underlying type is expected. Examples: * `{ n : Nat // n % 2 = 0 }` is the type of even numbers. * `{ xs : Array String // xs.size = 5 }` is the type of arrays with five `String`s. * Given `xs : List α`, `List { x : α // x ∈ xs }` is the type of lists in which all elements are contained in `xs`. Conventions for notations in identifiers: * The recommended spelling of `{ x // p x }` in identifiers is `subtype`.DQ2Presentation.Induction.CentralCoverCandidateMiddleRLiftObstructionMapData B T.obstructionIndexToBaseMapDataQ2Presentation.Induction.CentralCoverCandidateMiddleRLiftObstructionMapData.obstructionIndexToBaseMapData {p : Q2Presentation.Induction.FramedPair} {B : Q2Presentation.Induction.MinimalBlock p} {T : Q2Presentation.Induction.CentralCoverElementaryQuotientTowerData B} (D : Q2Presentation.Induction.CentralCoverCandidateMiddleRLiftObstructionMapData B T) : Q2Presentation.Induction.CentralCoverCandidateObstructionIndexToBaseMapData B TReassemble the obstruction-index-to-base packet. Since the chosen index is the middle exact-image source itself, the forgetful map is the canonical one already stored in `centralCover_candidateMiddleExactImageIndexBaseData`..OQ2Presentation.Induction.CentralCoverCandidateObstructionIndexToBaseMapData.O {p : Q2Presentation.Induction.FramedPair} {B : Q2Presentation.Induction.MinimalBlock p} {T : Q2Presentation.Induction.CentralCoverElementaryQuotientTowerData B} (self : Q2Presentation.Induction.CentralCoverCandidateObstructionIndexToBaseMapData B T) : Q2Presentation.Induction.CentralCoverSourceObstructionData B Q2Presentation.Induction.centralCoverCandidateSource.oQ2Presentation.Induction.CentralCoverSourceObstructionData.o {p : Q2Presentation.Induction.FramedPair} {B : Q2Presentation.Induction.MinimalBlock p} {S : Type} (self : Q2Presentation.Induction.CentralCoverSourceObstructionData B S) : self.X → B.obstructionSpacexD.obstructionIndexToBaseMapData.O.X=Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`. We use `a = b` as notation for `Eq a b`. A fundamental property of equality is that it is an equivalence relation. ``` variable (α : Type) (a b c d : α) variable (hab : a = b) (hcb : c = b) (hcd : c = d) example : a = d := Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd ``` Equality is much more than an equivalence relation, however. It has the important property that every assertion respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value. That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`. Example: ``` example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := Eq.subst h1 h2 example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := h1 ▸ h2 ``` The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`. For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality) Conventions for notations in identifiers: * The recommended spelling of `=` in identifiers is `eq`.0 }Subtype.{u} {α : Sort u} (p : α → Prop) : Sort (max 1 u)All the elements of a type that satisfy a predicate. `Subtype p`, usually written `{ x : α // p x }` or `{ x // p x }`, contains all elements `x : α` for which `p x` is true. Its constructor is a pair of the value and the proof that it satisfies the predicate. In run-time code, `{ x : α // p x }` is represented identically to `α`. There is a coercion from `{ x : α // p x }` to `α`, so elements of a subtype may be used where the underlying type is expected. Examples: * `{ n : Nat // n % 2 = 0 }` is the type of even numbers. * `{ xs : Array String // xs.size = 5 }` is the type of arrays with five `String`s. * Given `xs : List α`, `List { x : α // x ∈ xs }` is the type of lists in which all elements are contained in `xs`. Conventions for notations in identifiers: * The recommended spelling of `{ x // p x }` in identifiers is `subtype`. -
theoremdefined in Q2Presentation/Induction/CentralCovers.leancomplete
theorem Q2Presentation.Induction.CoverRealization.realizeA_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|`.} {BQ2Presentation.Induction.MinimalBlock p: Q2Presentation.Induction.MinimalBlockQ2Presentation.Induction.MinimalBlock (p : Q2Presentation.Induction.FramedPair) : Type 1**The §7 minimal non-scalar block.** Source-uniform module-level data of the manuscript tower (`eq:targettower`), with the deep group/representation inputs of `lem:simplehead`/`lem:collapse`/`prop:simpleheaddet` isolated as documented fields.pQ2Presentation.Induction.FramedPair} (RQ2Presentation.Induction.CoverRealization B: Q2Presentation.Induction.CoverRealizationQ2Presentation.Induction.CoverRealization {p : Q2Presentation.Induction.FramedPair} (B : Q2Presentation.Induction.MinimalBlock p) : Type 1**The §8 central-cover obstruction realization over a minimal block** (`sec:fourier`). Source-uniform: the strictly-smaller `children`, the source-independent partial-count recipe `partialN`. Per source `Γ`: a finite lift index `X_Γ`, the `R`-valued obstruction `o_Γ : X_Γ → O_R = B.obstructionSpace`, the `R`-cocycle group `Z_Γ = Z¹_Γ(R)` (`|Z_Γ| = z_R`) with the per-point `R`-lift torsors `Lift_Γ`, and the **lift-torsor decomposition** `bijΓ` (`prop:finalfourier`: boundary-framed surjections onto `Y` = the disjoint union `Σ` over the unobstructed exact-image base maps of the `z_R`-sized `R`-lift torsor), and the partial-count realization `partial_Γ` (`eq:recursionR2`–`eq:phasecovertransform`). The `realize_Γ` count equation is **derived** from `bijΓ` via `Lifting.lift_torsor_card` (`realizeA_of`/`realizeQ_of`), not stored.BQ2Presentation.Induction.MinimalBlock p) : Q2Presentation.Induction.framedCountAQ2Presentation.Induction.framedCountA (p : Q2Presentation.Induction.FramedPair) : Cardinal.{0}The **candidate** boundary-framed surjection count `e_{Γ_A}^β(𝒴)` (`eq:eGamma`), as a cardinal `|boundaryFramedSurj boundaryPackage_GammaA 𝒴 F|`.pQ2Presentation.Induction.FramedPair=Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`. We use `a = b` as notation for `Eq a b`. A fundamental property of equality is that it is an equivalence relation. ``` variable (α : Type) (a b c d : α) variable (hab : a = b) (hcb : c = b) (hcd : c = d) example : a = d := Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd ``` Equality is much more than an equivalence relation, however. It has the important property that every assertion respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value. That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`. Example: ``` example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := Eq.subst h1 h2 example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := h1 ▸ h2 ``` The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`. For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality) Conventions for notations in identifiers: * The recommended spelling of `=` in identifiers is `eq`.↑(HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.BQ2Presentation.Induction.MinimalBlock p.zRQ2Presentation.Induction.MinimalBlock.zR {p : Q2Presentation.Induction.FramedPair} (B : Q2Presentation.Induction.MinimalBlock p) : ℕ**`zR = 2^{2 dim R}·|𝒳_R| = 2^{dimExp}·|Ŵ|`** (manuscript `prop:finalfourier`, `z_R = |Z¹_{Γ,ρ}(R)| = 2^{2 dim R + dim 𝒳_R}`, l.4244). Since `𝒳_R = Ŵ` is the character group of `W = O_R`, this is exactly the value `FourierBranchData.hzR` demands for the common lift-torsor size.*HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number. If `α` is infinite, `Nat.card α = 0`.{Subtype.{u} {α : Sort u} (p : α → Prop) : Sort (max 1 u)All the elements of a type that satisfy a predicate. `Subtype p`, usually written `{ x : α // p x }` or `{ x // p x }`, contains all elements `x : α` for which `p x` is true. Its constructor is a pair of the value and the proof that it satisfies the predicate. In run-time code, `{ x : α // p x }` is represented identically to `α`. There is a coercion from `{ x : α // p x }` to `α`, so elements of a subtype may be used where the underlying type is expected. Examples: * `{ n : Nat // n % 2 = 0 }` is the type of even numbers. * `{ xs : Array String // xs.size = 5 }` is the type of arrays with five `String`s. * Given `xs : List α`, `List { x : α // x ∈ xs }` is the type of lists in which all elements are contained in `xs`. Conventions for notations in identifiers: * The recommended spelling of `{ x // p x }` in identifiers is `subtype`.xR.XA//Subtype.{u} {α : Sort u} (p : α → Prop) : Sort (max 1 u)All the elements of a type that satisfy a predicate. `Subtype p`, usually written `{ x : α // p x }` or `{ x // p x }`, contains all elements `x : α` for which `p x` is true. Its constructor is a pair of the value and the proof that it satisfies the predicate. In run-time code, `{ x : α // p x }` is represented identically to `α`. There is a coercion from `{ x : α // p x }` to `α`, so elements of a subtype may be used where the underlying type is expected. Examples: * `{ n : Nat // n % 2 = 0 }` is the type of even numbers. * `{ xs : Array String // xs.size = 5 }` is the type of arrays with five `String`s. * Given `xs : List α`, `List { x : α // x ∈ xs }` is the type of lists in which all elements are contained in `xs`. Conventions for notations in identifiers: * The recommended spelling of `{ x // p x }` in identifiers is `subtype`.RQ2Presentation.Induction.CoverRealization B.oAQ2Presentation.Induction.CoverRealization.oA {p : Q2Presentation.Induction.FramedPair} {B : Q2Presentation.Induction.MinimalBlock p} (self : Q2Presentation.Induction.CoverRealization B) : self.XA → B.obstructionSpaceCandidate-source `R`-valued obstruction `o_{Γ_A} : X_{Γ_A} → O_R`.xR.XA=Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`. We use `a = b` as notation for `Eq a b`. A fundamental property of equality is that it is an equivalence relation. ``` variable (α : Type) (a b c d : α) variable (hab : a = b) (hcb : c = b) (hcd : c = d) example : a = d := Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd ``` Equality is much more than an equivalence relation, however. It has the important property that every assertion respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value. That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`. Example: ``` example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := Eq.subst h1 h2 example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := h1 ▸ h2 ``` The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`. For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality) Conventions for notations in identifiers: * The recommended spelling of `=` in identifiers is `eq`.0 }Subtype.{u} {α : Sort u} (p : α → Prop) : Sort (max 1 u)All the elements of a type that satisfy a predicate. `Subtype p`, usually written `{ x : α // p x }` or `{ x // p x }`, contains all elements `x : α` for which `p x` is true. Its constructor is a pair of the value and the proof that it satisfies the predicate. In run-time code, `{ x : α // p x }` is represented identically to `α`. There is a coercion from `{ x : α // p x }` to `α`, so elements of a subtype may be used where the underlying type is expected. Examples: * `{ n : Nat // n % 2 = 0 }` is the type of even numbers. * `{ xs : Array String // xs.size = 5 }` is the type of arrays with five `String`s. * Given `xs : List α`, `List { x : α // x ∈ xs }` is the type of lists in which all elements are contained in `xs`. Conventions for notations in identifiers: * The recommended spelling of `{ x // p x }` in identifiers is `subtype`.)HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.theorem Q2Presentation.Induction.CoverRealization.realizeA_of {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|`.} {BQ2Presentation.Induction.MinimalBlock p: Q2Presentation.Induction.MinimalBlockQ2Presentation.Induction.MinimalBlock (p : Q2Presentation.Induction.FramedPair) : Type 1**The §7 minimal non-scalar block.** Source-uniform module-level data of the manuscript tower (`eq:targettower`), with the deep group/representation inputs of `lem:simplehead`/`lem:collapse`/`prop:simpleheaddet` isolated as documented fields.pQ2Presentation.Induction.FramedPair} (RQ2Presentation.Induction.CoverRealization B: Q2Presentation.Induction.CoverRealizationQ2Presentation.Induction.CoverRealization {p : Q2Presentation.Induction.FramedPair} (B : Q2Presentation.Induction.MinimalBlock p) : Type 1**The §8 central-cover obstruction realization over a minimal block** (`sec:fourier`). Source-uniform: the strictly-smaller `children`, the source-independent partial-count recipe `partialN`. Per source `Γ`: a finite lift index `X_Γ`, the `R`-valued obstruction `o_Γ : X_Γ → O_R = B.obstructionSpace`, the `R`-cocycle group `Z_Γ = Z¹_Γ(R)` (`|Z_Γ| = z_R`) with the per-point `R`-lift torsors `Lift_Γ`, and the **lift-torsor decomposition** `bijΓ` (`prop:finalfourier`: boundary-framed surjections onto `Y` = the disjoint union `Σ` over the unobstructed exact-image base maps of the `z_R`-sized `R`-lift torsor), and the partial-count realization `partial_Γ` (`eq:recursionR2`–`eq:phasecovertransform`). The `realize_Γ` count equation is **derived** from `bijΓ` via `Lifting.lift_torsor_card` (`realizeA_of`/`realizeQ_of`), not stored.BQ2Presentation.Induction.MinimalBlock p) : Q2Presentation.Induction.framedCountAQ2Presentation.Induction.framedCountA (p : Q2Presentation.Induction.FramedPair) : Cardinal.{0}The **candidate** boundary-framed surjection count `e_{Γ_A}^β(𝒴)` (`eq:eGamma`), as a cardinal `|boundaryFramedSurj boundaryPackage_GammaA 𝒴 F|`.pQ2Presentation.Induction.FramedPair=Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`. We use `a = b` as notation for `Eq a b`. A fundamental property of equality is that it is an equivalence relation. ``` variable (α : Type) (a b c d : α) variable (hab : a = b) (hcb : c = b) (hcd : c = d) example : a = d := Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd ``` Equality is much more than an equivalence relation, however. It has the important property that every assertion respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value. That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`. Example: ``` example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := Eq.subst h1 h2 example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := h1 ▸ h2 ``` The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`. For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality) Conventions for notations in identifiers: * The recommended spelling of `=` in identifiers is `eq`.↑(HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.BQ2Presentation.Induction.MinimalBlock p.zRQ2Presentation.Induction.MinimalBlock.zR {p : Q2Presentation.Induction.FramedPair} (B : Q2Presentation.Induction.MinimalBlock p) : ℕ**`zR = 2^{2 dim R}·|𝒳_R| = 2^{dimExp}·|Ŵ|`** (manuscript `prop:finalfourier`, `z_R = |Z¹_{Γ,ρ}(R)| = 2^{2 dim R + dim 𝒳_R}`, l.4244). Since `𝒳_R = Ŵ` is the character group of `W = O_R`, this is exactly the value `FourierBranchData.hzR` demands for the common lift-torsor size.*HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number. If `α` is infinite, `Nat.card α = 0`.{Subtype.{u} {α : Sort u} (p : α → Prop) : Sort (max 1 u)All the elements of a type that satisfy a predicate. `Subtype p`, usually written `{ x : α // p x }` or `{ x // p x }`, contains all elements `x : α` for which `p x` is true. Its constructor is a pair of the value and the proof that it satisfies the predicate. In run-time code, `{ x : α // p x }` is represented identically to `α`. There is a coercion from `{ x : α // p x }` to `α`, so elements of a subtype may be used where the underlying type is expected. Examples: * `{ n : Nat // n % 2 = 0 }` is the type of even numbers. * `{ xs : Array String // xs.size = 5 }` is the type of arrays with five `String`s. * Given `xs : List α`, `List { x : α // x ∈ xs }` is the type of lists in which all elements are contained in `xs`. Conventions for notations in identifiers: * The recommended spelling of `{ x // p x }` in identifiers is `subtype`.xR.XA//Subtype.{u} {α : Sort u} (p : α → Prop) : Sort (max 1 u)All the elements of a type that satisfy a predicate. `Subtype p`, usually written `{ x : α // p x }` or `{ x // p x }`, contains all elements `x : α` for which `p x` is true. Its constructor is a pair of the value and the proof that it satisfies the predicate. In run-time code, `{ x : α // p x }` is represented identically to `α`. There is a coercion from `{ x : α // p x }` to `α`, so elements of a subtype may be used where the underlying type is expected. Examples: * `{ n : Nat // n % 2 = 0 }` is the type of even numbers. * `{ xs : Array String // xs.size = 5 }` is the type of arrays with five `String`s. * Given `xs : List α`, `List { x : α // x ∈ xs }` is the type of lists in which all elements are contained in `xs`. Conventions for notations in identifiers: * The recommended spelling of `{ x // p x }` in identifiers is `subtype`.RQ2Presentation.Induction.CoverRealization B.oAQ2Presentation.Induction.CoverRealization.oA {p : Q2Presentation.Induction.FramedPair} {B : Q2Presentation.Induction.MinimalBlock p} (self : Q2Presentation.Induction.CoverRealization B) : self.XA → B.obstructionSpaceCandidate-source `R`-valued obstruction `o_{Γ_A} : X_{Γ_A} → O_R`.xR.XA=Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`. We use `a = b` as notation for `Eq a b`. A fundamental property of equality is that it is an equivalence relation. ``` variable (α : Type) (a b c d : α) variable (hab : a = b) (hcb : c = b) (hcd : c = d) example : a = d := Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd ``` Equality is much more than an equivalence relation, however. It has the important property that every assertion respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value. That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`. Example: ``` example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := Eq.subst h1 h2 example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := h1 ▸ h2 ``` The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`. For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality) Conventions for notations in identifiers: * The recommended spelling of `=` in identifiers is `eq`.0 }Subtype.{u} {α : Sort u} (p : α → Prop) : Sort (max 1 u)All the elements of a type that satisfy a predicate. `Subtype p`, usually written `{ x : α // p x }` or `{ x // p x }`, contains all elements `x : α` for which `p x` is true. Its constructor is a pair of the value and the proof that it satisfies the predicate. In run-time code, `{ x : α // p x }` is represented identically to `α`. There is a coercion from `{ x : α // p x }` to `α`, so elements of a subtype may be used where the underlying type is expected. Examples: * `{ n : Nat // n % 2 = 0 }` is the type of even numbers. * `{ xs : Array String // xs.size = 5 }` is the type of arrays with five `String`s. * Given `xs : List α`, `List { x : α // x ∈ xs }` is the type of lists in which all elements are contained in `xs`. Conventions for notations in identifiers: * The recommended spelling of `{ x // p x }` in identifiers is `subtype`.)HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.**`realize_{Γ_A}` is PROVEN** (`prop:finalfourier`, `eq:recursionR1` numerator): `e_{Γ_A}(Y) = z_R · #{x : o_{Γ_A} x = 0}`, by the lift-torsor mechanism `framedCount_eq_zR_of_torsorDecomp` applied to the candidate decomposition `bijA` — the `z_R` factor is `Lifting.lift_torsor_card` (each unobstructed map has a `Z¹_A(R)`-torsor of `z_R` lifts). Genuinely uses the `Lifting/Duality.lean` scaffolding. -
theoremdefined in Q2Presentation/Induction/CentralCovers.leancomplete
theorem Q2Presentation.Induction.CoverRealization.realizeQ_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|`.} {BQ2Presentation.Induction.MinimalBlock p: Q2Presentation.Induction.MinimalBlockQ2Presentation.Induction.MinimalBlock (p : Q2Presentation.Induction.FramedPair) : Type 1**The §7 minimal non-scalar block.** Source-uniform module-level data of the manuscript tower (`eq:targettower`), with the deep group/representation inputs of `lem:simplehead`/`lem:collapse`/`prop:simpleheaddet` isolated as documented fields.pQ2Presentation.Induction.FramedPair} (RQ2Presentation.Induction.CoverRealization B: Q2Presentation.Induction.CoverRealizationQ2Presentation.Induction.CoverRealization {p : Q2Presentation.Induction.FramedPair} (B : Q2Presentation.Induction.MinimalBlock p) : Type 1**The §8 central-cover obstruction realization over a minimal block** (`sec:fourier`). Source-uniform: the strictly-smaller `children`, the source-independent partial-count recipe `partialN`. Per source `Γ`: a finite lift index `X_Γ`, the `R`-valued obstruction `o_Γ : X_Γ → O_R = B.obstructionSpace`, the `R`-cocycle group `Z_Γ = Z¹_Γ(R)` (`|Z_Γ| = z_R`) with the per-point `R`-lift torsors `Lift_Γ`, and the **lift-torsor decomposition** `bijΓ` (`prop:finalfourier`: boundary-framed surjections onto `Y` = the disjoint union `Σ` over the unobstructed exact-image base maps of the `z_R`-sized `R`-lift torsor), and the partial-count realization `partial_Γ` (`eq:recursionR2`–`eq:phasecovertransform`). The `realize_Γ` count equation is **derived** from `bijΓ` via `Lifting.lift_torsor_card` (`realizeA_of`/`realizeQ_of`), not stored.BQ2Presentation.Induction.MinimalBlock p) : Q2Presentation.Induction.framedCountQQ2Presentation.Induction.framedCountQ (p : Q2Presentation.Induction.FramedPair) : Cardinal.{0}The **local** boundary-framed surjection count `e_{G_{ℚ₂}}^β(𝒴)` (`eq:eGamma`), as a cardinal `|boundaryFramedSurj boundaryPackage_GQ2 𝒴 F|`.pQ2Presentation.Induction.FramedPair=Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`. We use `a = b` as notation for `Eq a b`. A fundamental property of equality is that it is an equivalence relation. ``` variable (α : Type) (a b c d : α) variable (hab : a = b) (hcb : c = b) (hcd : c = d) example : a = d := Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd ``` Equality is much more than an equivalence relation, however. It has the important property that every assertion respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value. That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`. Example: ``` example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := Eq.subst h1 h2 example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := h1 ▸ h2 ``` The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`. For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality) Conventions for notations in identifiers: * The recommended spelling of `=` in identifiers is `eq`.↑(HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.BQ2Presentation.Induction.MinimalBlock p.zRQ2Presentation.Induction.MinimalBlock.zR {p : Q2Presentation.Induction.FramedPair} (B : Q2Presentation.Induction.MinimalBlock p) : ℕ**`zR = 2^{2 dim R}·|𝒳_R| = 2^{dimExp}·|Ŵ|`** (manuscript `prop:finalfourier`, `z_R = |Z¹_{Γ,ρ}(R)| = 2^{2 dim R + dim 𝒳_R}`, l.4244). Since `𝒳_R = Ŵ` is the character group of `W = O_R`, this is exactly the value `FourierBranchData.hzR` demands for the common lift-torsor size.*HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number. If `α` is infinite, `Nat.card α = 0`.{Subtype.{u} {α : Sort u} (p : α → Prop) : Sort (max 1 u)All the elements of a type that satisfy a predicate. `Subtype p`, usually written `{ x : α // p x }` or `{ x // p x }`, contains all elements `x : α` for which `p x` is true. Its constructor is a pair of the value and the proof that it satisfies the predicate. In run-time code, `{ x : α // p x }` is represented identically to `α`. There is a coercion from `{ x : α // p x }` to `α`, so elements of a subtype may be used where the underlying type is expected. Examples: * `{ n : Nat // n % 2 = 0 }` is the type of even numbers. * `{ xs : Array String // xs.size = 5 }` is the type of arrays with five `String`s. * Given `xs : List α`, `List { x : α // x ∈ xs }` is the type of lists in which all elements are contained in `xs`. Conventions for notations in identifiers: * The recommended spelling of `{ x // p x }` in identifiers is `subtype`.xR.XQ//Subtype.{u} {α : Sort u} (p : α → Prop) : Sort (max 1 u)All the elements of a type that satisfy a predicate. `Subtype p`, usually written `{ x : α // p x }` or `{ x // p x }`, contains all elements `x : α` for which `p x` is true. Its constructor is a pair of the value and the proof that it satisfies the predicate. In run-time code, `{ x : α // p x }` is represented identically to `α`. There is a coercion from `{ x : α // p x }` to `α`, so elements of a subtype may be used where the underlying type is expected. Examples: * `{ n : Nat // n % 2 = 0 }` is the type of even numbers. * `{ xs : Array String // xs.size = 5 }` is the type of arrays with five `String`s. * Given `xs : List α`, `List { x : α // x ∈ xs }` is the type of lists in which all elements are contained in `xs`. Conventions for notations in identifiers: * The recommended spelling of `{ x // p x }` in identifiers is `subtype`.RQ2Presentation.Induction.CoverRealization B.oQQ2Presentation.Induction.CoverRealization.oQ {p : Q2Presentation.Induction.FramedPair} {B : Q2Presentation.Induction.MinimalBlock p} (self : Q2Presentation.Induction.CoverRealization B) : self.XQ → B.obstructionSpaceLocal-source `R`-valued obstruction `o_{G_{ℚ₂}} : X_{G_{ℚ₂}} → O_R`.xR.XQ=Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`. We use `a = b` as notation for `Eq a b`. A fundamental property of equality is that it is an equivalence relation. ``` variable (α : Type) (a b c d : α) variable (hab : a = b) (hcb : c = b) (hcd : c = d) example : a = d := Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd ``` Equality is much more than an equivalence relation, however. It has the important property that every assertion respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value. That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`. Example: ``` example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := Eq.subst h1 h2 example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := h1 ▸ h2 ``` The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`. For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality) Conventions for notations in identifiers: * The recommended spelling of `=` in identifiers is `eq`.0 }Subtype.{u} {α : Sort u} (p : α → Prop) : Sort (max 1 u)All the elements of a type that satisfy a predicate. `Subtype p`, usually written `{ x : α // p x }` or `{ x // p x }`, contains all elements `x : α` for which `p x` is true. Its constructor is a pair of the value and the proof that it satisfies the predicate. In run-time code, `{ x : α // p x }` is represented identically to `α`. There is a coercion from `{ x : α // p x }` to `α`, so elements of a subtype may be used where the underlying type is expected. Examples: * `{ n : Nat // n % 2 = 0 }` is the type of even numbers. * `{ xs : Array String // xs.size = 5 }` is the type of arrays with five `String`s. * Given `xs : List α`, `List { x : α // x ∈ xs }` is the type of lists in which all elements are contained in `xs`. Conventions for notations in identifiers: * The recommended spelling of `{ x // p x }` in identifiers is `subtype`.)HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.theorem Q2Presentation.Induction.CoverRealization.realizeQ_of {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|`.} {BQ2Presentation.Induction.MinimalBlock p: Q2Presentation.Induction.MinimalBlockQ2Presentation.Induction.MinimalBlock (p : Q2Presentation.Induction.FramedPair) : Type 1**The §7 minimal non-scalar block.** Source-uniform module-level data of the manuscript tower (`eq:targettower`), with the deep group/representation inputs of `lem:simplehead`/`lem:collapse`/`prop:simpleheaddet` isolated as documented fields.pQ2Presentation.Induction.FramedPair} (RQ2Presentation.Induction.CoverRealization B: Q2Presentation.Induction.CoverRealizationQ2Presentation.Induction.CoverRealization {p : Q2Presentation.Induction.FramedPair} (B : Q2Presentation.Induction.MinimalBlock p) : Type 1**The §8 central-cover obstruction realization over a minimal block** (`sec:fourier`). Source-uniform: the strictly-smaller `children`, the source-independent partial-count recipe `partialN`. Per source `Γ`: a finite lift index `X_Γ`, the `R`-valued obstruction `o_Γ : X_Γ → O_R = B.obstructionSpace`, the `R`-cocycle group `Z_Γ = Z¹_Γ(R)` (`|Z_Γ| = z_R`) with the per-point `R`-lift torsors `Lift_Γ`, and the **lift-torsor decomposition** `bijΓ` (`prop:finalfourier`: boundary-framed surjections onto `Y` = the disjoint union `Σ` over the unobstructed exact-image base maps of the `z_R`-sized `R`-lift torsor), and the partial-count realization `partial_Γ` (`eq:recursionR2`–`eq:phasecovertransform`). The `realize_Γ` count equation is **derived** from `bijΓ` via `Lifting.lift_torsor_card` (`realizeA_of`/`realizeQ_of`), not stored.BQ2Presentation.Induction.MinimalBlock p) : Q2Presentation.Induction.framedCountQQ2Presentation.Induction.framedCountQ (p : Q2Presentation.Induction.FramedPair) : Cardinal.{0}The **local** boundary-framed surjection count `e_{G_{ℚ₂}}^β(𝒴)` (`eq:eGamma`), as a cardinal `|boundaryFramedSurj boundaryPackage_GQ2 𝒴 F|`.pQ2Presentation.Induction.FramedPair=Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`. We use `a = b` as notation for `Eq a b`. A fundamental property of equality is that it is an equivalence relation. ``` variable (α : Type) (a b c d : α) variable (hab : a = b) (hcb : c = b) (hcd : c = d) example : a = d := Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd ``` Equality is much more than an equivalence relation, however. It has the important property that every assertion respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value. That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`. Example: ``` example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := Eq.subst h1 h2 example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := h1 ▸ h2 ``` The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`. For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality) Conventions for notations in identifiers: * The recommended spelling of `=` in identifiers is `eq`.↑(HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.BQ2Presentation.Induction.MinimalBlock p.zRQ2Presentation.Induction.MinimalBlock.zR {p : Q2Presentation.Induction.FramedPair} (B : Q2Presentation.Induction.MinimalBlock p) : ℕ**`zR = 2^{2 dim R}·|𝒳_R| = 2^{dimExp}·|Ŵ|`** (manuscript `prop:finalfourier`, `z_R = |Z¹_{Γ,ρ}(R)| = 2^{2 dim R + dim 𝒳_R}`, l.4244). Since `𝒳_R = Ŵ` is the character group of `W = O_R`, this is exactly the value `FourierBranchData.hzR` demands for the common lift-torsor size.*HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number. If `α` is infinite, `Nat.card α = 0`.{Subtype.{u} {α : Sort u} (p : α → Prop) : Sort (max 1 u)All the elements of a type that satisfy a predicate. `Subtype p`, usually written `{ x : α // p x }` or `{ x // p x }`, contains all elements `x : α` for which `p x` is true. Its constructor is a pair of the value and the proof that it satisfies the predicate. In run-time code, `{ x : α // p x }` is represented identically to `α`. There is a coercion from `{ x : α // p x }` to `α`, so elements of a subtype may be used where the underlying type is expected. Examples: * `{ n : Nat // n % 2 = 0 }` is the type of even numbers. * `{ xs : Array String // xs.size = 5 }` is the type of arrays with five `String`s. * Given `xs : List α`, `List { x : α // x ∈ xs }` is the type of lists in which all elements are contained in `xs`. Conventions for notations in identifiers: * The recommended spelling of `{ x // p x }` in identifiers is `subtype`.xR.XQ//Subtype.{u} {α : Sort u} (p : α → Prop) : Sort (max 1 u)All the elements of a type that satisfy a predicate. `Subtype p`, usually written `{ x : α // p x }` or `{ x // p x }`, contains all elements `x : α` for which `p x` is true. Its constructor is a pair of the value and the proof that it satisfies the predicate. In run-time code, `{ x : α // p x }` is represented identically to `α`. There is a coercion from `{ x : α // p x }` to `α`, so elements of a subtype may be used where the underlying type is expected. Examples: * `{ n : Nat // n % 2 = 0 }` is the type of even numbers. * `{ xs : Array String // xs.size = 5 }` is the type of arrays with five `String`s. * Given `xs : List α`, `List { x : α // x ∈ xs }` is the type of lists in which all elements are contained in `xs`. Conventions for notations in identifiers: * The recommended spelling of `{ x // p x }` in identifiers is `subtype`.RQ2Presentation.Induction.CoverRealization B.oQQ2Presentation.Induction.CoverRealization.oQ {p : Q2Presentation.Induction.FramedPair} {B : Q2Presentation.Induction.MinimalBlock p} (self : Q2Presentation.Induction.CoverRealization B) : self.XQ → B.obstructionSpaceLocal-source `R`-valued obstruction `o_{G_{ℚ₂}} : X_{G_{ℚ₂}} → O_R`.xR.XQ=Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`. We use `a = b` as notation for `Eq a b`. A fundamental property of equality is that it is an equivalence relation. ``` variable (α : Type) (a b c d : α) variable (hab : a = b) (hcb : c = b) (hcd : c = d) example : a = d := Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd ``` Equality is much more than an equivalence relation, however. It has the important property that every assertion respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value. That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`. Example: ``` example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := Eq.subst h1 h2 example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := h1 ▸ h2 ``` The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`. For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality) Conventions for notations in identifiers: * The recommended spelling of `=` in identifiers is `eq`.0 }Subtype.{u} {α : Sort u} (p : α → Prop) : Sort (max 1 u)All the elements of a type that satisfy a predicate. `Subtype p`, usually written `{ x : α // p x }` or `{ x // p x }`, contains all elements `x : α` for which `p x` is true. Its constructor is a pair of the value and the proof that it satisfies the predicate. In run-time code, `{ x : α // p x }` is represented identically to `α`. There is a coercion from `{ x : α // p x }` to `α`, so elements of a subtype may be used where the underlying type is expected. Examples: * `{ n : Nat // n % 2 = 0 }` is the type of even numbers. * `{ xs : Array String // xs.size = 5 }` is the type of arrays with five `String`s. * Given `xs : List α`, `List { x : α // x ∈ xs }` is the type of lists in which all elements are contained in `xs`. Conventions for notations in identifiers: * The recommended spelling of `{ x // p x }` in identifiers is `subtype`.)HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.**`realize_{G_{ℚ₂}}` is PROVEN** (`prop:finalfourier`): `e_{G_{ℚ₂}}(Y) = z_R · #{o_Q = 0}`, by the lift-torsor mechanism applied to the local decomposition `bijQ` (the `Z¹_Q(R)`-torsor of `z_R` lifts, `Lifting.lift_torsor_card`). -
abbrevdefined in Q2Presentation/Induction/MinimalBlock.leancomplete
abbrev Q2Presentation.Induction.MinimalBlock.obstructionSpace {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|`.} (BQ2Presentation.Induction.MinimalBlock p: Q2Presentation.Induction.MinimalBlockQ2Presentation.Induction.MinimalBlock (p : Q2Presentation.Induction.FramedPair) : Type 1**The §7 minimal non-scalar block.** Source-uniform module-level data of the manuscript tower (`eq:targettower`), with the deep group/representation inputs of `lem:simplehead`/`lem:collapse`/`prop:simpleheaddet` isolated as documented fields.pQ2Presentation.Induction.FramedPair) : TypeA type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`.abbrev Q2Presentation.Induction.MinimalBlock.obstructionSpace {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|`.} (BQ2Presentation.Induction.MinimalBlock p: Q2Presentation.Induction.MinimalBlockQ2Presentation.Induction.MinimalBlock (p : Q2Presentation.Induction.FramedPair) : Type 1**The §7 minimal non-scalar block.** Source-uniform module-level data of the manuscript tower (`eq:targettower`), with the deep group/representation inputs of `lem:simplehead`/`lem:collapse`/`prop:simpleheaddet` isolated as documented fields.pQ2Presentation.Induction.FramedPair) : TypeA type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`.**The `R`-valued obstruction space `W = O_R`** (`prop:finalfourier`). By `lem:obstructionseparation` (l.4213, `𝒳_R = (R^∨)^B = (R^∨)^C` is *canonically the dual of the `R`-valued obstruction space*), `O_R = (𝒳_R)^∨`, so `O_R = Module.Dual (ZMod 2) 𝒳_R`. This is the finite `𝔽₂` space `FourierBranchData.W` the §8 Fourier branch consumes: the `R`-valued lifting obstruction `o_Γ` lands in `O_R`, and its character group `Ŵ = Dual O_R ≅ 𝒳_R` is the index of the Fourier sum `eq:recursionR1`.
-
defdefined in Q2Presentation/Induction/MinimalBlock.leancomplete
def Q2Presentation.Induction.MinimalBlock.dimExp {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|`.} (BQ2Presentation.Induction.MinimalBlock p: Q2Presentation.Induction.MinimalBlockQ2Presentation.Induction.MinimalBlock (p : Q2Presentation.Induction.FramedPair) : Type 1**The §7 minimal non-scalar block.** Source-uniform module-level data of the manuscript tower (`eq:targettower`), with the deep group/representation inputs of `lem:simplehead`/`lem:collapse`/`prop:simpleheaddet` isolated as documented fields.pQ2Presentation.Induction.FramedPair) : ℕNat : TypeThe natural numbers, starting at zero. This type is special-cased by both the kernel and the compiler, and overridden with an efficient implementation. Both use a fast arbitrary-precision arithmetic library (usually [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.def Q2Presentation.Induction.MinimalBlock.dimExp {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|`.} (BQ2Presentation.Induction.MinimalBlock p: Q2Presentation.Induction.MinimalBlockQ2Presentation.Induction.MinimalBlock (p : Q2Presentation.Induction.FramedPair) : Type 1**The §7 minimal non-scalar block.** Source-uniform module-level data of the manuscript tower (`eq:targettower`), with the deep group/representation inputs of `lem:simplehead`/`lem:collapse`/`prop:simpleheaddet` isolated as documented fields.pQ2Presentation.Induction.FramedPair) : ℕNat : TypeThe natural numbers, starting at zero. This type is special-cased by both the kernel and the compiler, and overridden with an efficient implementation. Both use a fast arbitrary-precision arithmetic library (usually [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.**`dimExp = 2·dim R`** (manuscript: the lift-torsor exponent `2 dim R`, `prop:finalfourier`, `z_R = 2^{2 dim R + dim 𝒳_R}`). -
defdefined in Q2Presentation/Induction/MinimalBlock.leancomplete
def Q2Presentation.Induction.MinimalBlock.zR {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|`.} (BQ2Presentation.Induction.MinimalBlock p: Q2Presentation.Induction.MinimalBlockQ2Presentation.Induction.MinimalBlock (p : Q2Presentation.Induction.FramedPair) : Type 1**The §7 minimal non-scalar block.** Source-uniform module-level data of the manuscript tower (`eq:targettower`), with the deep group/representation inputs of `lem:simplehead`/`lem:collapse`/`prop:simpleheaddet` isolated as documented fields.pQ2Presentation.Induction.FramedPair) : ℕNat : TypeThe natural numbers, starting at zero. This type is special-cased by both the kernel and the compiler, and overridden with an efficient implementation. Both use a fast arbitrary-precision arithmetic library (usually [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.def Q2Presentation.Induction.MinimalBlock.zR {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|`.} (BQ2Presentation.Induction.MinimalBlock p: Q2Presentation.Induction.MinimalBlockQ2Presentation.Induction.MinimalBlock (p : Q2Presentation.Induction.FramedPair) : Type 1**The §7 minimal non-scalar block.** Source-uniform module-level data of the manuscript tower (`eq:targettower`), with the deep group/representation inputs of `lem:simplehead`/`lem:collapse`/`prop:simpleheaddet` isolated as documented fields.pQ2Presentation.Induction.FramedPair) : ℕNat : TypeThe natural numbers, starting at zero. This type is special-cased by both the kernel and the compiler, and overridden with an efficient implementation. Both use a fast arbitrary-precision arithmetic library (usually [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.**`zR = 2^{2 dim R}·|𝒳_R| = 2^{dimExp}·|Ŵ|`** (manuscript `prop:finalfourier`, `z_R = |Z¹_{Γ,ρ}(R)| = 2^{2 dim R + dim 𝒳_R}`, l.4244). Since `𝒳_R = Ŵ` is the character group of `W = O_R`, this is exactly the value `FourierBranchData.hzR` demands for the common lift-torsor size. -
defdefined in Q2Presentation/Induction/ProperImageSubtraction.leancomplete
def Q2Presentation.Induction.properCoverLiftable {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)) (JQ2Presentation.Induction.mImageStrata chief K: Q2Presentation.Induction.mImageStrataQ2Presentation.Induction.mImageStrata {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Type**The proper-image index** (`eq:recursionR2`'s sum): exact-image subgroups `J ≤ B = Y/Φ(K)` mapping onto `C` (`J·M' = B`). Includes the top `J = B`; "proper" is `J.1 ≠ ⊤`. `Fintype` is the canonical global `coverStrata` instance (`CoverLiftPartition.lean:54`).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) {ΓProfiniteGrp.{0}: ProfiniteGrp.{0}ProfiniteGrp.{u_1} : Type (u_1 + 1)The category of profinite groups. A term of this type consists of a profinite set with a topological group structure.} (BQ2Presentation.BoundaryPackage Γ: Q2Presentation.BoundaryPackageQ2Presentation.BoundaryPackage (Γ : ProfiniteGrp.{0}) : TypeA **boundary package** on a profinite group `Γ`: the uniform Stage-C data of a tame quotient, a maximal pro-`2` quotient, and a common unramified character `ℤ₂` through which both factor (manuscript Prop 3.14, `prop:compatiblemarking`; plan Turn 4 §6). The compatibility `tameMap ≫ ν_t = ν = pro2Map ≫ ν_2` records that the two markings agree on the full unramified coordinate, not merely modulo `2`.ΓProfiniteGrp.{0}) (hQ2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.mImageStratumPair chief K J).fst (Q2Presentation.Induction.mImageStratumPair chief K J).snd: Q2Presentation.boundaryFramedSurjQ2Presentation.boundaryFramedSurj {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (Yt : Q2Presentation.BoundaryFramedTarget) (F : Q2Presentation.BoundaryFrame Yt) : TypeThe **boundary-framed surjections** `e_Γ^β(𝒴)` (manuscript `eq:eGamma`): the continuous surjections `f : Γ ↠ Y` whose induced map to `H × E` is the prescribed `β ∘ b_Γ`, i.e. `q_Y ∘ f = β ∘ b_Γ`. This is the subtype counted in Theorem 4.2; its cardinality is `e_Γ^β(𝒴)`.BQ2Presentation.BoundaryPackage Γ(Q2Presentation.Induction.mImageStratumPairQ2Presentation.Induction.mImageStratumPair {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (J : Q2Presentation.Induction.mImageStrata chief K) : Q2Presentation.Induction.FramedPairThe stratum framed pair `(J, J ∩ L_B, π|_J, θ|_J; p.2's frame)` — manuscript: the exact-image object `𝒥` at the child. Measure `|J ∩ L_B|`.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactorJQ2Presentation.Induction.mImageStrata chief K).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.(Q2Presentation.Induction.mImageStratumPairQ2Presentation.Induction.mImageStratumPair {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (J : Q2Presentation.Induction.mImageStrata chief K) : Q2Presentation.Induction.FramedPairThe stratum framed pair `(J, J ∩ L_B, π|_J, θ|_J; p.2's frame)` — manuscript: the exact-image object `𝒥` at the child. Measure `|J ∩ L_B|`.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactorJQ2Presentation.Induction.mImageStrata chief K).sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.) : PropThe universe of propositions. `Prop ≡ Sort 0`. Every proposition is propositionally equal to either `True` or `False`.def Q2Presentation.Induction.properCoverLiftable {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)) (JQ2Presentation.Induction.mImageStrata chief K: Q2Presentation.Induction.mImageStrataQ2Presentation.Induction.mImageStrata {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Type**The proper-image index** (`eq:recursionR2`'s sum): exact-image subgroups `J ≤ B = Y/Φ(K)` mapping onto `C` (`J·M' = B`). Includes the top `J = B`; "proper" is `J.1 ≠ ⊤`. `Fintype` is the canonical global `coverStrata` instance (`CoverLiftPartition.lean:54`).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) {ΓProfiniteGrp.{0}: ProfiniteGrp.{0}ProfiniteGrp.{u_1} : Type (u_1 + 1)The category of profinite groups. A term of this type consists of a profinite set with a topological group structure.} (BQ2Presentation.BoundaryPackage Γ: Q2Presentation.BoundaryPackageQ2Presentation.BoundaryPackage (Γ : ProfiniteGrp.{0}) : TypeA **boundary package** on a profinite group `Γ`: the uniform Stage-C data of a tame quotient, a maximal pro-`2` quotient, and a common unramified character `ℤ₂` through which both factor (manuscript Prop 3.14, `prop:compatiblemarking`; plan Turn 4 §6). The compatibility `tameMap ≫ ν_t = ν = pro2Map ≫ ν_2` records that the two markings agree on the full unramified coordinate, not merely modulo `2`.ΓProfiniteGrp.{0}) (hQ2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.mImageStratumPair chief K J).fst (Q2Presentation.Induction.mImageStratumPair chief K J).snd: Q2Presentation.boundaryFramedSurjQ2Presentation.boundaryFramedSurj {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (Yt : Q2Presentation.BoundaryFramedTarget) (F : Q2Presentation.BoundaryFrame Yt) : TypeThe **boundary-framed surjections** `e_Γ^β(𝒴)` (manuscript `eq:eGamma`): the continuous surjections `f : Γ ↠ Y` whose induced map to `H × E` is the prescribed `β ∘ b_Γ`, i.e. `q_Y ∘ f = β ∘ b_Γ`. This is the subtype counted in Theorem 4.2; its cardinality is `e_Γ^β(𝒴)`.BQ2Presentation.BoundaryPackage Γ(Q2Presentation.Induction.mImageStratumPairQ2Presentation.Induction.mImageStratumPair {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (J : Q2Presentation.Induction.mImageStrata chief K) : Q2Presentation.Induction.FramedPairThe stratum framed pair `(J, J ∩ L_B, π|_J, θ|_J; p.2's frame)` — manuscript: the exact-image object `𝒥` at the child. Measure `|J ∩ L_B|`.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactorJQ2Presentation.Induction.mImageStrata chief K).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.(Q2Presentation.Induction.mImageStratumPairQ2Presentation.Induction.mImageStratumPair {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (J : Q2Presentation.Induction.mImageStrata chief K) : Q2Presentation.Induction.FramedPairThe stratum framed pair `(J, J ∩ L_B, π|_J, θ|_J; p.2's frame)` — manuscript: the exact-image object `𝒥` at the child. Measure `|J ∩ L_B|`.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactorJQ2Presentation.Induction.mImageStrata chief K).sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.) : PropThe universe of propositions. `Prop ≡ Sort 0`. Every proposition is propositionally equal to either `True` or `False`.**Per-stratum λ-liftability** (the `m_{Γ,λ}(J)`-condition of `prop:finalfourier` l.4246–4248, `lem:obstructionseparation` reading): some framed hom into `B_λ` projects to the stratum surjection's values. Same `∃`-raw-hom shape as `coverLiftableWeak` (P3-U5) and `restrictLiftHom_iff_exists` (P4-V2). -
structuredefined in Q2Presentation/Induction/Recursion.leancomplete
structure Q2Presentation.Induction.FourierBranchData (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|`.) : Type 1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`.structure Q2Presentation.Induction.FourierBranchData (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|`.) : Type 1A type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`.**Nonterminal Fourier-recursion packet.** Source-uniform data: the finite `𝔽₂` obstruction space `W = O_R`, the lift-torsor exponent/size `dimExp`/`zR` (`prop:finalfourier`), the strictly-smaller `children`, and the *single* partial-count recipe `partialN` (`eq:recursionR2`–`eq:phasecovertransform`). Per-source data: the finite lift index `X_Γ`, the `R`-obstruction `o_Γ : X_Γ → O_R`, the lift-torsor identity `realize_Γ` (`e_Γ(Y) = z_R·#{o_Γ = 0}`), and the partial-count identity `partial_Γ`. The two recursion equations are **not** fields: they are derived from `fourier_recursion_step`.Fields
W
TypeThe finite `𝔽₂` obstruction space `O_R` of the minimal non-scalar layer.: TypeA type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`.The finite `𝔽₂` obstruction space `O_R` of the minimal non-scalar layer.
acg
AddCommGroup self.W: AddCommGroupAddCommGroup.{u} (G : Type u) : Type uAn additive commutative group is an additive group with commutative `(+)`.selfQ2Presentation.Induction.FourierBranchData p.WQ2Presentation.Induction.FourierBranchData.W {p : Q2Presentation.Induction.FramedPair} (self : Q2Presentation.Induction.FourierBranchData p) : TypeThe finite `𝔽₂` obstruction space `O_R` of the minimal non-scalar layer.mod
Module (ZMod 2) self.W: ModuleModule.{u, v} (R : Type u) (M : Type v) [Semiring R] [AddCommMonoid M] : Type (max u v)A module is a generalization of vector spaces to a scalar semiring. It consists of a scalar semiring `R` and an additive monoid of "vectors" `M`, connected by a "scalar multiplication" operation `r • x : M` (where `r : R` and `x : M`) with some natural associativity and distributivity axioms similar to those on a ring.(ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.2) selfQ2Presentation.Induction.FourierBranchData p.WQ2Presentation.Induction.FourierBranchData.W {p : Q2Presentation.Induction.FramedPair} (self : Q2Presentation.Induction.FourierBranchData p) : TypeThe finite `𝔽₂` obstruction space `O_R` of the minimal non-scalar layer.finW
Fintype self.W: FintypeFintype.{u_4} (α : Type u_4) : Type u_4`Fintype α` means that `α` is finite, i.e. there are only finitely many distinct elements of type `α`. The evidence of this is a finset `elems` (a list up to permutation without duplicates), together with a proof that everything of type `α` is in the list.selfQ2Presentation.Induction.FourierBranchData p.WQ2Presentation.Induction.FourierBranchData.W {p : Q2Presentation.Induction.FramedPair} (self : Q2Presentation.Induction.FourierBranchData p) : TypeThe finite `𝔽₂` obstruction space `O_R` of the minimal non-scalar layer.decW
DecidableEq self.W: DecidableEqDecidableEq.{u} (α : Sort u) : Sort (max 1 u)Propositional equality is `Decidable` for all elements of a type. In other words, an instance of `DecidableEq α` is a means of deciding the proposition `a = b` is for all `a b : α`.selfQ2Presentation.Induction.FourierBranchData p.WQ2Presentation.Induction.FourierBranchData.W {p : Q2Presentation.Induction.FramedPair} (self : Q2Presentation.Induction.FourierBranchData p) : TypeThe finite `𝔽₂` obstruction space `O_R` of the minimal non-scalar layer.dimExp
ℕ`2·dim R`: the lift-torsor exponent.: ℕNat : TypeThe natural numbers, starting at zero. This type is special-cased by both the kernel and the compiler, and overridden with an efficient implementation. Both use a fast arbitrary-precision arithmetic library (usually [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.`2·dim R`: the lift-torsor exponent.
zR
ℕThe common lift-torsor size `z_R = 2^{2 dim R}·|X_R|`.: ℕNat : TypeThe natural numbers, starting at zero. This type is special-cased by both the kernel and the compiler, and overridden with an efficient implementation. Both use a fast arbitrary-precision arithmetic library (usually [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.The common lift-torsor size `z_R = 2^{2 dim R}·|X_R|`.hzR
self.zR = 2 ^ self.dimExp * Fintype.card (Module.Dual (ZMod 2) self.W): selfQ2Presentation.Induction.FourierBranchData p.zRQ2Presentation.Induction.FourierBranchData.zR {p : Q2Presentation.Induction.FramedPair} (self : Q2Presentation.Induction.FourierBranchData p) : ℕThe common lift-torsor size `z_R = 2^{2 dim R}·|X_R|`.=Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`. We use `a = b` as notation for `Eq a b`. A fundamental property of equality is that it is an equivalence relation. ``` variable (α : Type) (a b c d : α) variable (hab : a = b) (hcb : c = b) (hcd : c = d) example : a = d := Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd ``` Equality is much more than an equivalence relation, however. It has the important property that every assertion respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value. That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`. Example: ``` example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := Eq.subst h1 h2 example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := h1 ▸ h2 ``` The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`. For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality) Conventions for notations in identifiers: * The recommended spelling of `=` in identifiers is `eq`.2 ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `^` in identifiers is `pow`.selfQ2Presentation.Induction.FourierBranchData p.dimExpQ2Presentation.Induction.FourierBranchData.dimExp {p : Q2Presentation.Induction.FramedPair} (self : Q2Presentation.Induction.FourierBranchData p) : ℕ`2·dim R`: the lift-torsor exponent.*HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.Fintype.cardFintype.card.{u_4} (α : Type u_4) [Fintype α] : ℕ`card α` is the number of elements in `α`, defined when `α` is a fintype.(Module.DualModule.Dual.{u_4, u_5} (R : Type u_4) (M : Type u_5) [Semiring R] [AddCommMonoid M] [Module R M] : Type (max u_5 u_4)The left dual space of an R-module M is the R-module of linear maps `M → R`.(ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.2) selfQ2Presentation.Induction.FourierBranchData p.WQ2Presentation.Induction.FourierBranchData.W {p : Q2Presentation.Induction.FramedPair} (self : Q2Presentation.Induction.FourierBranchData p) : TypeThe finite `𝔽₂` obstruction space `O_R` of the minimal non-scalar layer.)children
List Q2Presentation.Induction.FramedPairThe strictly-smaller exact-image children targets.: ListList.{u} (α : Type u) : Type uLinked lists: ordered lists, in which each element has a reference to the next element. Most operations on linked lists take time proportional to the length of the list, because each element must be traversed to find the next element. `List α` is isomorphic to `Array α`, but they are useful for different things: * `List α` is easier for reasoning, and `Array α` is modeled as a wrapper around `List α`. * `List α` works well as a persistent data structure, when many copies of the tail are shared. When the value is not shared, `Array α` will have better performance because it can do destructive updates.Q2Presentation.Induction.FramedPairQ2Presentation.Induction.FramedPair : Type 1A **framed pair** `(𝒴, F)`: a boundary-framed marked target together with a boundary frame for it (manuscript Definition 4.1 + `eq:beta`). This is the index of Theorem 4.2: the boundary-framed surjection count `e_Γ^β` is a function of the pair. The induction of `sec:induction` ranges over *all* such pairs simultaneously ("the induction is stated globally", l.1213), ordered by `|L_Y|`.The strictly-smaller exact-image children targets.
small
∀ c ∈ self.children, Q2Presentation.Induction.framedMeasure c < Q2Presentation.Induction.framedMeasure p: ∀ cQ2Presentation.Induction.FramedPair∈ selfQ2Presentation.Induction.FourierBranchData p.childrenQ2Presentation.Induction.FourierBranchData.children {p : Q2Presentation.Induction.FramedPair} (self : Q2Presentation.Induction.FourierBranchData p) : List Q2Presentation.Induction.FramedPairThe strictly-smaller exact-image children targets., Q2Presentation.Induction.framedMeasureQ2Presentation.Induction.framedMeasure (p : Q2Presentation.Induction.FramedPair) : ℕThe induction measure `|L_Y|`: the order of the marked `2`-kernel of the framed target (manuscript: the strong induction of `thm:fixedframe` is on `|L_Y|`).cQ2Presentation.Induction.FramedPair<LT.lt.{u} {α : Type u} [self : LT α] : α → α → PropThe less-than relation: `x < y` Conventions for notations in identifiers: * The recommended spelling of `<` in identifiers is `lt`.Q2Presentation.Induction.framedMeasureQ2Presentation.Induction.framedMeasure (p : Q2Presentation.Induction.FramedPair) : ℕThe induction measure `|L_Y|`: the order of the marked `2`-kernel of the framed target (manuscript: the strong induction of `thm:fixedframe` is on `|L_Y|`).pQ2Presentation.Induction.FramedPairpartialN
Module.Dual (ZMod 2) self.W → List ℕ → ℕSource-independent partial-count recipe (`eq:recursionR2`–`eq:phasecovertransform`).: Module.DualModule.Dual.{u_4, u_5} (R : Type u_4) (M : Type u_5) [Semiring R] [AddCommMonoid M] [Module R M] : Type (max u_5 u_4)The left dual space of an R-module M is the R-module of linear maps `M → R`.(ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.2) selfQ2Presentation.Induction.FourierBranchData p.WQ2Presentation.Induction.FourierBranchData.W {p : Q2Presentation.Induction.FramedPair} (self : Q2Presentation.Induction.FourierBranchData p) : TypeThe finite `𝔽₂` obstruction space `O_R` of the minimal non-scalar layer.→ ListList.{u} (α : Type u) : Type uLinked lists: ordered lists, in which each element has a reference to the next element. Most operations on linked lists take time proportional to the length of the list, because each element must be traversed to find the next element. `List α` is isomorphic to `Array α`, but they are useful for different things: * `List α` is easier for reasoning, and `Array α` is modeled as a wrapper around `List α`. * `List α` works well as a persistent data structure, when many copies of the tail are shared. When the value is not shared, `Array α` will have better performance because it can do destructive updates.ℕNat : TypeThe natural numbers, starting at zero. This type is special-cased by both the kernel and the compiler, and overridden with an efficient implementation. Both use a fast arbitrary-precision arithmetic library (usually [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.→ ℕNat : TypeThe natural numbers, starting at zero. This type is special-cased by both the kernel and the compiler, and overridden with an efficient implementation. Both use a fast arbitrary-precision arithmetic library (usually [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.Source-independent partial-count recipe (`eq:recursionR2`–`eq:phasecovertransform`).
XA
TypeCandidate-source finite lift index and `R`-obstruction.: TypeA type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`.Candidate-source finite lift index and `R`-obstruction.
finXA
Fintype self.XA: FintypeFintype.{u_4} (α : Type u_4) : Type u_4`Fintype α` means that `α` is finite, i.e. there are only finitely many distinct elements of type `α`. The evidence of this is a finset `elems` (a list up to permutation without duplicates), together with a proof that everything of type `α` is in the list.selfQ2Presentation.Induction.FourierBranchData p.XAQ2Presentation.Induction.FourierBranchData.XA {p : Q2Presentation.Induction.FramedPair} (self : Q2Presentation.Induction.FourierBranchData p) : TypeCandidate-source finite lift index and `R`-obstruction.oA
self.XA → self.W: selfQ2Presentation.Induction.FourierBranchData p.XAQ2Presentation.Induction.FourierBranchData.XA {p : Q2Presentation.Induction.FramedPair} (self : Q2Presentation.Induction.FourierBranchData p) : TypeCandidate-source finite lift index and `R`-obstruction.→ selfQ2Presentation.Induction.FourierBranchData p.WQ2Presentation.Induction.FourierBranchData.W {p : Q2Presentation.Induction.FramedPair} (self : Q2Presentation.Induction.FourierBranchData p) : TypeThe finite `𝔽₂` obstruction space `O_R` of the minimal non-scalar layer.XQ
TypeLocal-source finite lift index and `R`-obstruction.: TypeA type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`.Local-source finite lift index and `R`-obstruction.
finXQ
Fintype self.XQ: FintypeFintype.{u_4} (α : Type u_4) : Type u_4`Fintype α` means that `α` is finite, i.e. there are only finitely many distinct elements of type `α`. The evidence of this is a finset `elems` (a list up to permutation without duplicates), together with a proof that everything of type `α` is in the list.selfQ2Presentation.Induction.FourierBranchData p.XQQ2Presentation.Induction.FourierBranchData.XQ {p : Q2Presentation.Induction.FramedPair} (self : Q2Presentation.Induction.FourierBranchData p) : TypeLocal-source finite lift index and `R`-obstruction.oQ
self.XQ → self.W: selfQ2Presentation.Induction.FourierBranchData p.XQQ2Presentation.Induction.FourierBranchData.XQ {p : Q2Presentation.Induction.FramedPair} (self : Q2Presentation.Induction.FourierBranchData p) : TypeLocal-source finite lift index and `R`-obstruction.→ selfQ2Presentation.Induction.FourierBranchData p.WQ2Presentation.Induction.FourierBranchData.W {p : Q2Presentation.Induction.FramedPair} (self : Q2Presentation.Induction.FourierBranchData p) : TypeThe finite `𝔽₂` obstruction space `O_R` of the minimal non-scalar layer.realizeA
Q2Presentation.Induction.framedCountA p = ↑(self.zR * Nat.card { x // self.oA x = 0 })Candidate lift-torsor identity `e_{Γ_A}(Y) = z_R·#{o_A = 0}` (`eq:recursionR1`).: Q2Presentation.Induction.framedCountAQ2Presentation.Induction.framedCountA (p : Q2Presentation.Induction.FramedPair) : Cardinal.{0}The **candidate** boundary-framed surjection count `e_{Γ_A}^β(𝒴)` (`eq:eGamma`), as a cardinal `|boundaryFramedSurj boundaryPackage_GammaA 𝒴 F|`.pQ2Presentation.Induction.FramedPair=Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`. We use `a = b` as notation for `Eq a b`. A fundamental property of equality is that it is an equivalence relation. ``` variable (α : Type) (a b c d : α) variable (hab : a = b) (hcb : c = b) (hcd : c = d) example : a = d := Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd ``` Equality is much more than an equivalence relation, however. It has the important property that every assertion respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value. That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`. Example: ``` example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := Eq.subst h1 h2 example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := h1 ▸ h2 ``` The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`. For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality) Conventions for notations in identifiers: * The recommended spelling of `=` in identifiers is `eq`.↑(HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.selfQ2Presentation.Induction.FourierBranchData p.zRQ2Presentation.Induction.FourierBranchData.zR {p : Q2Presentation.Induction.FramedPair} (self : Q2Presentation.Induction.FourierBranchData p) : ℕThe common lift-torsor size `z_R = 2^{2 dim R}·|X_R|`.*HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number. If `α` is infinite, `Nat.card α = 0`.{Subtype.{u} {α : Sort u} (p : α → Prop) : Sort (max 1 u)All the elements of a type that satisfy a predicate. `Subtype p`, usually written `{ x : α // p x }` or `{ x // p x }`, contains all elements `x : α` for which `p x` is true. Its constructor is a pair of the value and the proof that it satisfies the predicate. In run-time code, `{ x : α // p x }` is represented identically to `α`. There is a coercion from `{ x : α // p x }` to `α`, so elements of a subtype may be used where the underlying type is expected. Examples: * `{ n : Nat // n % 2 = 0 }` is the type of even numbers. * `{ xs : Array String // xs.size = 5 }` is the type of arrays with five `String`s. * Given `xs : List α`, `List { x : α // x ∈ xs }` is the type of lists in which all elements are contained in `xs`. Conventions for notations in identifiers: * The recommended spelling of `{ x // p x }` in identifiers is `subtype`.xself.XA//Subtype.{u} {α : Sort u} (p : α → Prop) : Sort (max 1 u)All the elements of a type that satisfy a predicate. `Subtype p`, usually written `{ x : α // p x }` or `{ x // p x }`, contains all elements `x : α` for which `p x` is true. Its constructor is a pair of the value and the proof that it satisfies the predicate. In run-time code, `{ x : α // p x }` is represented identically to `α`. There is a coercion from `{ x : α // p x }` to `α`, so elements of a subtype may be used where the underlying type is expected. Examples: * `{ n : Nat // n % 2 = 0 }` is the type of even numbers. * `{ xs : Array String // xs.size = 5 }` is the type of arrays with five `String`s. * Given `xs : List α`, `List { x : α // x ∈ xs }` is the type of lists in which all elements are contained in `xs`. Conventions for notations in identifiers: * The recommended spelling of `{ x // p x }` in identifiers is `subtype`.selfQ2Presentation.Induction.FourierBranchData p.oAQ2Presentation.Induction.FourierBranchData.oA {p : Q2Presentation.Induction.FramedPair} (self : Q2Presentation.Induction.FourierBranchData p) : self.XA → self.Wxself.XA=Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`. We use `a = b` as notation for `Eq a b`. A fundamental property of equality is that it is an equivalence relation. ``` variable (α : Type) (a b c d : α) variable (hab : a = b) (hcb : c = b) (hcd : c = d) example : a = d := Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd ``` Equality is much more than an equivalence relation, however. It has the important property that every assertion respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value. That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`. Example: ``` example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := Eq.subst h1 h2 example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := h1 ▸ h2 ``` The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`. For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality) Conventions for notations in identifiers: * The recommended spelling of `=` in identifiers is `eq`.0 }Subtype.{u} {α : Sort u} (p : α → Prop) : Sort (max 1 u)All the elements of a type that satisfy a predicate. `Subtype p`, usually written `{ x : α // p x }` or `{ x // p x }`, contains all elements `x : α` for which `p x` is true. Its constructor is a pair of the value and the proof that it satisfies the predicate. In run-time code, `{ x : α // p x }` is represented identically to `α`. There is a coercion from `{ x : α // p x }` to `α`, so elements of a subtype may be used where the underlying type is expected. Examples: * `{ n : Nat // n % 2 = 0 }` is the type of even numbers. * `{ xs : Array String // xs.size = 5 }` is the type of arrays with five `String`s. * Given `xs : List α`, `List { x : α // x ∈ xs }` is the type of lists in which all elements are contained in `xs`. Conventions for notations in identifiers: * The recommended spelling of `{ x // p x }` in identifiers is `subtype`.)HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.Candidate lift-torsor identity `e_{Γ_A}(Y) = z_R·#{o_A = 0}` (`eq:recursionR1`).realizeQ
Q2Presentation.Induction.framedCountQ p = ↑(self.zR * Nat.card { x // self.oQ x = 0 })Local lift-torsor identity `e_{G_{ℚ₂}}(Y) = z_R·#{o_Q = 0}`.: Q2Presentation.Induction.framedCountQQ2Presentation.Induction.framedCountQ (p : Q2Presentation.Induction.FramedPair) : Cardinal.{0}The **local** boundary-framed surjection count `e_{G_{ℚ₂}}^β(𝒴)` (`eq:eGamma`), as a cardinal `|boundaryFramedSurj boundaryPackage_GQ2 𝒴 F|`.pQ2Presentation.Induction.FramedPair=Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`. We use `a = b` as notation for `Eq a b`. A fundamental property of equality is that it is an equivalence relation. ``` variable (α : Type) (a b c d : α) variable (hab : a = b) (hcb : c = b) (hcd : c = d) example : a = d := Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd ``` Equality is much more than an equivalence relation, however. It has the important property that every assertion respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value. That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`. Example: ``` example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := Eq.subst h1 h2 example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := h1 ▸ h2 ``` The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`. For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality) Conventions for notations in identifiers: * The recommended spelling of `=` in identifiers is `eq`.↑(HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.selfQ2Presentation.Induction.FourierBranchData p.zRQ2Presentation.Induction.FourierBranchData.zR {p : Q2Presentation.Induction.FramedPair} (self : Q2Presentation.Induction.FourierBranchData p) : ℕThe common lift-torsor size `z_R = 2^{2 dim R}·|X_R|`.*HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number. If `α` is infinite, `Nat.card α = 0`.{Subtype.{u} {α : Sort u} (p : α → Prop) : Sort (max 1 u)All the elements of a type that satisfy a predicate. `Subtype p`, usually written `{ x : α // p x }` or `{ x // p x }`, contains all elements `x : α` for which `p x` is true. Its constructor is a pair of the value and the proof that it satisfies the predicate. In run-time code, `{ x : α // p x }` is represented identically to `α`. There is a coercion from `{ x : α // p x }` to `α`, so elements of a subtype may be used where the underlying type is expected. Examples: * `{ n : Nat // n % 2 = 0 }` is the type of even numbers. * `{ xs : Array String // xs.size = 5 }` is the type of arrays with five `String`s. * Given `xs : List α`, `List { x : α // x ∈ xs }` is the type of lists in which all elements are contained in `xs`. Conventions for notations in identifiers: * The recommended spelling of `{ x // p x }` in identifiers is `subtype`.xself.XQ//Subtype.{u} {α : Sort u} (p : α → Prop) : Sort (max 1 u)All the elements of a type that satisfy a predicate. `Subtype p`, usually written `{ x : α // p x }` or `{ x // p x }`, contains all elements `x : α` for which `p x` is true. Its constructor is a pair of the value and the proof that it satisfies the predicate. In run-time code, `{ x : α // p x }` is represented identically to `α`. There is a coercion from `{ x : α // p x }` to `α`, so elements of a subtype may be used where the underlying type is expected. Examples: * `{ n : Nat // n % 2 = 0 }` is the type of even numbers. * `{ xs : Array String // xs.size = 5 }` is the type of arrays with five `String`s. * Given `xs : List α`, `List { x : α // x ∈ xs }` is the type of lists in which all elements are contained in `xs`. Conventions for notations in identifiers: * The recommended spelling of `{ x // p x }` in identifiers is `subtype`.selfQ2Presentation.Induction.FourierBranchData p.oQQ2Presentation.Induction.FourierBranchData.oQ {p : Q2Presentation.Induction.FramedPair} (self : Q2Presentation.Induction.FourierBranchData p) : self.XQ → self.Wxself.XQ=Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`. We use `a = b` as notation for `Eq a b`. A fundamental property of equality is that it is an equivalence relation. ``` variable (α : Type) (a b c d : α) variable (hab : a = b) (hcb : c = b) (hcd : c = d) example : a = d := Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd ``` Equality is much more than an equivalence relation, however. It has the important property that every assertion respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value. That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`. Example: ``` example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := Eq.subst h1 h2 example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := h1 ▸ h2 ``` The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`. For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality) Conventions for notations in identifiers: * The recommended spelling of `=` in identifiers is `eq`.0 }Subtype.{u} {α : Sort u} (p : α → Prop) : Sort (max 1 u)All the elements of a type that satisfy a predicate. `Subtype p`, usually written `{ x : α // p x }` or `{ x // p x }`, contains all elements `x : α` for which `p x` is true. Its constructor is a pair of the value and the proof that it satisfies the predicate. In run-time code, `{ x : α // p x }` is represented identically to `α`. There is a coercion from `{ x : α // p x }` to `α`, so elements of a subtype may be used where the underlying type is expected. Examples: * `{ n : Nat // n % 2 = 0 }` is the type of even numbers. * `{ xs : Array String // xs.size = 5 }` is the type of arrays with five `String`s. * Given `xs : List α`, `List { x : α // x ∈ xs }` is the type of lists in which all elements are contained in `xs`. Conventions for notations in identifiers: * The recommended spelling of `{ x // p x }` in identifiers is `subtype`.)HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.Local lift-torsor identity `e_{G_{ℚ₂}}(Y) = z_R·#{o_Q = 0}`.partialA
∀ (χ : Module.Dual (ZMod 2) self.W), Nat.card { x // χ (self.oA x) = 0 } = self.partialN χ (List.map (⇑Cardinal.toNat) (List.map Q2Presentation.Induction.framedCountA self.children))Candidate partial-count realization `m_{Γ_A,χ} = partialN χ (children counts)`.: ∀ (χModule.Dual (ZMod 2) self.W: Module.DualModule.Dual.{u_4, u_5} (R : Type u_4) (M : Type u_5) [Semiring R] [AddCommMonoid M] [Module R M] : Type (max u_5 u_4)The left dual space of an R-module M is the R-module of linear maps `M → R`.(ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.2) selfQ2Presentation.Induction.FourierBranchData p.WQ2Presentation.Induction.FourierBranchData.W {p : Q2Presentation.Induction.FramedPair} (self : Q2Presentation.Induction.FourierBranchData p) : TypeThe finite `𝔽₂` obstruction space `O_R` of the minimal non-scalar layer.), Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number. If `α` is infinite, `Nat.card α = 0`.{Subtype.{u} {α : Sort u} (p : α → Prop) : Sort (max 1 u)All the elements of a type that satisfy a predicate. `Subtype p`, usually written `{ x : α // p x }` or `{ x // p x }`, contains all elements `x : α` for which `p x` is true. Its constructor is a pair of the value and the proof that it satisfies the predicate. In run-time code, `{ x : α // p x }` is represented identically to `α`. There is a coercion from `{ x : α // p x }` to `α`, so elements of a subtype may be used where the underlying type is expected. Examples: * `{ n : Nat // n % 2 = 0 }` is the type of even numbers. * `{ xs : Array String // xs.size = 5 }` is the type of arrays with five `String`s. * Given `xs : List α`, `List { x : α // x ∈ xs }` is the type of lists in which all elements are contained in `xs`. Conventions for notations in identifiers: * The recommended spelling of `{ x // p x }` in identifiers is `subtype`.xself.XA//Subtype.{u} {α : Sort u} (p : α → Prop) : Sort (max 1 u)All the elements of a type that satisfy a predicate. `Subtype p`, usually written `{ x : α // p x }` or `{ x // p x }`, contains all elements `x : α` for which `p x` is true. Its constructor is a pair of the value and the proof that it satisfies the predicate. In run-time code, `{ x : α // p x }` is represented identically to `α`. There is a coercion from `{ x : α // p x }` to `α`, so elements of a subtype may be used where the underlying type is expected. Examples: * `{ n : Nat // n % 2 = 0 }` is the type of even numbers. * `{ xs : Array String // xs.size = 5 }` is the type of arrays with five `String`s. * Given `xs : List α`, `List { x : α // x ∈ xs }` is the type of lists in which all elements are contained in `xs`. Conventions for notations in identifiers: * The recommended spelling of `{ x // p x }` in identifiers is `subtype`.χModule.Dual (ZMod 2) self.W(selfQ2Presentation.Induction.FourierBranchData p.oAQ2Presentation.Induction.FourierBranchData.oA {p : Q2Presentation.Induction.FramedPair} (self : Q2Presentation.Induction.FourierBranchData p) : self.XA → self.Wxself.XA) =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`. We use `a = b` as notation for `Eq a b`. A fundamental property of equality is that it is an equivalence relation. ``` variable (α : Type) (a b c d : α) variable (hab : a = b) (hcb : c = b) (hcd : c = d) example : a = d := Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd ``` Equality is much more than an equivalence relation, however. It has the important property that every assertion respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value. That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`. Example: ``` example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := Eq.subst h1 h2 example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := h1 ▸ h2 ``` The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`. For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality) Conventions for notations in identifiers: * The recommended spelling of `=` in identifiers is `eq`.0 }Subtype.{u} {α : Sort u} (p : α → Prop) : Sort (max 1 u)All the elements of a type that satisfy a predicate. `Subtype p`, usually written `{ x : α // p x }` or `{ x // p x }`, contains all elements `x : α` for which `p x` is true. Its constructor is a pair of the value and the proof that it satisfies the predicate. In run-time code, `{ x : α // p x }` is represented identically to `α`. There is a coercion from `{ x : α // p x }` to `α`, so elements of a subtype may be used where the underlying type is expected. Examples: * `{ n : Nat // n % 2 = 0 }` is the type of even numbers. * `{ xs : Array String // xs.size = 5 }` is the type of arrays with five `String`s. * Given `xs : List α`, `List { x : α // x ∈ xs }` is the type of lists in which all elements are contained in `xs`. Conventions for notations in identifiers: * The recommended spelling of `{ x // p x }` in identifiers is `subtype`.=Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`. We use `a = b` as notation for `Eq a b`. A fundamental property of equality is that it is an equivalence relation. ``` variable (α : Type) (a b c d : α) variable (hab : a = b) (hcb : c = b) (hcd : c = d) example : a = d := Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd ``` Equality is much more than an equivalence relation, however. It has the important property that every assertion respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value. That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`. Example: ``` example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := Eq.subst h1 h2 example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := h1 ▸ h2 ``` The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`. For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality) Conventions for notations in identifiers: * The recommended spelling of `=` in identifiers is `eq`.selfQ2Presentation.Induction.FourierBranchData p.partialNQ2Presentation.Induction.FourierBranchData.partialN {p : Q2Presentation.Induction.FramedPair} (self : Q2Presentation.Induction.FourierBranchData p) : Module.Dual (ZMod 2) self.W → List ℕ → ℕSource-independent partial-count recipe (`eq:recursionR2`–`eq:phasecovertransform`).χModule.Dual (ZMod 2) self.W(List.mapList.map.{u_1, u_2} {α : Type u_1} {β : Type u_2} (f : α → β) (l : List α) : List βApplies a function to each element of the list, returning the resulting list of values. `O(|l|)`. Examples: * `[a, b, c].map f = [f a, f b, f c]` * `[].map Nat.succ = []` * `["one", "two", "three"].map (·.length) = [3, 3, 5]` * `["one", "two", "three"].map (·.reverse) = ["eno", "owt", "eerht"]`(⇑Cardinal.toNatCardinal.toNat.{u_1} : Cardinal.{u_1} →*₀ ℕThis function sends finite cardinals to the corresponding natural, and infinite cardinals to 0.) (List.mapList.map.{u_1, u_2} {α : Type u_1} {β : Type u_2} (f : α → β) (l : List α) : List βApplies a function to each element of the list, returning the resulting list of values. `O(|l|)`. Examples: * `[a, b, c].map f = [f a, f b, f c]` * `[].map Nat.succ = []` * `["one", "two", "three"].map (·.length) = [3, 3, 5]` * `["one", "two", "three"].map (·.reverse) = ["eno", "owt", "eerht"]`Q2Presentation.Induction.framedCountAQ2Presentation.Induction.framedCountA (p : Q2Presentation.Induction.FramedPair) : Cardinal.{0}The **candidate** boundary-framed surjection count `e_{Γ_A}^β(𝒴)` (`eq:eGamma`), as a cardinal `|boundaryFramedSurj boundaryPackage_GammaA 𝒴 F|`.selfQ2Presentation.Induction.FourierBranchData p.childrenQ2Presentation.Induction.FourierBranchData.children {p : Q2Presentation.Induction.FramedPair} (self : Q2Presentation.Induction.FourierBranchData p) : List Q2Presentation.Induction.FramedPairThe strictly-smaller exact-image children targets.))Candidate partial-count realization `m_{Γ_A,χ} = partialN χ (children counts)`.partialQ
∀ (χ : Module.Dual (ZMod 2) self.W), Nat.card { x // χ (self.oQ x) = 0 } = self.partialN χ (List.map (⇑Cardinal.toNat) (List.map Q2Presentation.Induction.framedCountQ self.children))Local partial-count realization `m_{G_{ℚ₂},χ} = partialN χ (children counts)`.: ∀ (χModule.Dual (ZMod 2) self.W: Module.DualModule.Dual.{u_4, u_5} (R : Type u_4) (M : Type u_5) [Semiring R] [AddCommMonoid M] [Module R M] : Type (max u_5 u_4)The left dual space of an R-module M is the R-module of linear maps `M → R`.(ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.2) selfQ2Presentation.Induction.FourierBranchData p.WQ2Presentation.Induction.FourierBranchData.W {p : Q2Presentation.Induction.FramedPair} (self : Q2Presentation.Induction.FourierBranchData p) : TypeThe finite `𝔽₂` obstruction space `O_R` of the minimal non-scalar layer.), Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number. If `α` is infinite, `Nat.card α = 0`.{Subtype.{u} {α : Sort u} (p : α → Prop) : Sort (max 1 u)All the elements of a type that satisfy a predicate. `Subtype p`, usually written `{ x : α // p x }` or `{ x // p x }`, contains all elements `x : α` for which `p x` is true. Its constructor is a pair of the value and the proof that it satisfies the predicate. In run-time code, `{ x : α // p x }` is represented identically to `α`. There is a coercion from `{ x : α // p x }` to `α`, so elements of a subtype may be used where the underlying type is expected. Examples: * `{ n : Nat // n % 2 = 0 }` is the type of even numbers. * `{ xs : Array String // xs.size = 5 }` is the type of arrays with five `String`s. * Given `xs : List α`, `List { x : α // x ∈ xs }` is the type of lists in which all elements are contained in `xs`. Conventions for notations in identifiers: * The recommended spelling of `{ x // p x }` in identifiers is `subtype`.xself.XQ//Subtype.{u} {α : Sort u} (p : α → Prop) : Sort (max 1 u)All the elements of a type that satisfy a predicate. `Subtype p`, usually written `{ x : α // p x }` or `{ x // p x }`, contains all elements `x : α` for which `p x` is true. Its constructor is a pair of the value and the proof that it satisfies the predicate. In run-time code, `{ x : α // p x }` is represented identically to `α`. There is a coercion from `{ x : α // p x }` to `α`, so elements of a subtype may be used where the underlying type is expected. Examples: * `{ n : Nat // n % 2 = 0 }` is the type of even numbers. * `{ xs : Array String // xs.size = 5 }` is the type of arrays with five `String`s. * Given `xs : List α`, `List { x : α // x ∈ xs }` is the type of lists in which all elements are contained in `xs`. Conventions for notations in identifiers: * The recommended spelling of `{ x // p x }` in identifiers is `subtype`.χModule.Dual (ZMod 2) self.W(selfQ2Presentation.Induction.FourierBranchData p.oQQ2Presentation.Induction.FourierBranchData.oQ {p : Q2Presentation.Induction.FramedPair} (self : Q2Presentation.Induction.FourierBranchData p) : self.XQ → self.Wxself.XQ) =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`. We use `a = b` as notation for `Eq a b`. A fundamental property of equality is that it is an equivalence relation. ``` variable (α : Type) (a b c d : α) variable (hab : a = b) (hcb : c = b) (hcd : c = d) example : a = d := Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd ``` Equality is much more than an equivalence relation, however. It has the important property that every assertion respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value. That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`. Example: ``` example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := Eq.subst h1 h2 example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := h1 ▸ h2 ``` The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`. For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality) Conventions for notations in identifiers: * The recommended spelling of `=` in identifiers is `eq`.0 }Subtype.{u} {α : Sort u} (p : α → Prop) : Sort (max 1 u)All the elements of a type that satisfy a predicate. `Subtype p`, usually written `{ x : α // p x }` or `{ x // p x }`, contains all elements `x : α` for which `p x` is true. Its constructor is a pair of the value and the proof that it satisfies the predicate. In run-time code, `{ x : α // p x }` is represented identically to `α`. There is a coercion from `{ x : α // p x }` to `α`, so elements of a subtype may be used where the underlying type is expected. Examples: * `{ n : Nat // n % 2 = 0 }` is the type of even numbers. * `{ xs : Array String // xs.size = 5 }` is the type of arrays with five `String`s. * Given `xs : List α`, `List { x : α // x ∈ xs }` is the type of lists in which all elements are contained in `xs`. Conventions for notations in identifiers: * The recommended spelling of `{ x // p x }` in identifiers is `subtype`.=Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`. We use `a = b` as notation for `Eq a b`. A fundamental property of equality is that it is an equivalence relation. ``` variable (α : Type) (a b c d : α) variable (hab : a = b) (hcb : c = b) (hcd : c = d) example : a = d := Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd ``` Equality is much more than an equivalence relation, however. It has the important property that every assertion respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value. That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`. Example: ``` example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := Eq.subst h1 h2 example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := h1 ▸ h2 ``` The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`. For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality) Conventions for notations in identifiers: * The recommended spelling of `=` in identifiers is `eq`.selfQ2Presentation.Induction.FourierBranchData p.partialNQ2Presentation.Induction.FourierBranchData.partialN {p : Q2Presentation.Induction.FramedPair} (self : Q2Presentation.Induction.FourierBranchData p) : Module.Dual (ZMod 2) self.W → List ℕ → ℕSource-independent partial-count recipe (`eq:recursionR2`–`eq:phasecovertransform`).χModule.Dual (ZMod 2) self.W(List.mapList.map.{u_1, u_2} {α : Type u_1} {β : Type u_2} (f : α → β) (l : List α) : List βApplies a function to each element of the list, returning the resulting list of values. `O(|l|)`. Examples: * `[a, b, c].map f = [f a, f b, f c]` * `[].map Nat.succ = []` * `["one", "two", "three"].map (·.length) = [3, 3, 5]` * `["one", "two", "three"].map (·.reverse) = ["eno", "owt", "eerht"]`(⇑Cardinal.toNatCardinal.toNat.{u_1} : Cardinal.{u_1} →*₀ ℕThis function sends finite cardinals to the corresponding natural, and infinite cardinals to 0.) (List.mapList.map.{u_1, u_2} {α : Type u_1} {β : Type u_2} (f : α → β) (l : List α) : List βApplies a function to each element of the list, returning the resulting list of values. `O(|l|)`. Examples: * `[a, b, c].map f = [f a, f b, f c]` * `[].map Nat.succ = []` * `["one", "two", "three"].map (·.length) = [3, 3, 5]` * `["one", "two", "three"].map (·.reverse) = ["eno", "owt", "eerht"]`Q2Presentation.Induction.framedCountQQ2Presentation.Induction.framedCountQ (p : Q2Presentation.Induction.FramedPair) : Cardinal.{0}The **local** boundary-framed surjection count `e_{G_{ℚ₂}}^β(𝒴)` (`eq:eGamma`), as a cardinal `|boundaryFramedSurj boundaryPackage_GQ2 𝒴 F|`.selfQ2Presentation.Induction.FourierBranchData p.childrenQ2Presentation.Induction.FourierBranchData.children {p : Q2Presentation.Induction.FramedPair} (self : Q2Presentation.Induction.FourierBranchData p) : List Q2Presentation.Induction.FramedPairThe strictly-smaller exact-image children targets.))Local partial-count realization `m_{G_{ℚ₂},χ} = partialN χ (children counts)`. -
theoremdefined in Q2Presentation/Induction/XRObstruction.leancomplete
theorem Q2Presentation.Induction.xr_ker_rowMap_card {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) (gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GammaA (Q2Presentation.TorsorProgram.quotientFramedTarget p.fst (Q2Presentation.Induction.xrKernel chief K).N ⋯ ⋯) (Q2Presentation.TorsorProgram.quotientFrame p.fst (Q2Presentation.Induction.xrKernel chief K).N ⋯ ⋯ p.snd): Q2Presentation.boundaryFramedSurjQ2Presentation.boundaryFramedSurj {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (Yt : Q2Presentation.BoundaryFramedTarget) (F : Q2Presentation.BoundaryFrame Yt) : TypeThe **boundary-framed surjections** `e_Γ^β(𝒴)` (manuscript `eq:eGamma`): the continuous surjections `f : Γ ↠ Y` whose induced map to `H × E` is the prescribed `β ∘ b_Γ`, i.e. `q_Y ∘ f = β ∘ b_Γ`. This is the subtype counted in Theorem 4.2; its cardinality is `e_Γ^β(𝒴)`.Q2Presentation.boundaryPackage_GammaAQ2Presentation.boundaryPackage_GammaA : Q2Presentation.BoundaryPackage Q2Presentation.GammaA**The candidate boundary package** (manuscript Prop 3.14, `prop:compatiblemarking`; plan Turn 4 §6). The Stage-C data of `Γ_A`: the common tame quotient `gammaTameMap`, the maximal pro-`2` quotient `p : Γ_A ⟶ Π`, and the common unramified character `ν = gammaTameMap ≫ ν_t`, through which both factor.(Q2Presentation.TorsorProgram.quotientFramedTargetQ2Presentation.TorsorProgram.quotientFramedTarget (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y) [hNn : N.Normal] (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) : Q2Presentation.BoundaryFramedTarget**The quotient framed target** `Y/N` (same `H`, same `E`, image wild kernel).pQ2Presentation.Induction.FramedPair.fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.(Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel** (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).NQ2Presentation.Lifting.ElementaryKernel.N {Yt : Q2Presentation.BoundaryFramedTarget} (self : Q2Presentation.Lifting.ElementaryKernel Yt) : Subgroup Yt.Y⋯ ⋯) (Q2Presentation.TorsorProgram.quotientFrameQ2Presentation.TorsorProgram.quotientFrame (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y) [hNn : N.Normal] (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) (F : Q2Presentation.BoundaryFrame Yt) : Q2Presentation.BoundaryFrame (Q2Presentation.TorsorProgram.quotientFramedTarget Yt N hNLY hNθ)The frame transports verbatim (`H`, `E`, `α`, `ψ`, `β` unchanged).pQ2Presentation.Induction.FramedPair.fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.(Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel** (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).NQ2Presentation.Lifting.ElementaryKernel.N {Yt : Q2Presentation.BoundaryFramedTarget} (self : Q2Presentation.Lifting.ElementaryKernel Yt) : Subgroup Yt.Y⋯ ⋯ pQ2Presentation.Induction.FramedPair.sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.)) (hR1 < Nat.card ↥(Q2Presentation.Induction.kernelFrattini K): 1 <LT.lt.{u} {α : Type u} [self : LT α] : α → α → PropThe less-than relation: `x < y` Conventions for notations in identifiers: * The recommended spelling of `<` in identifiers is `lt`.Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number. If `α` is infinite, `Nat.card α = 0`.↥(Q2Presentation.Induction.kernelFrattiniQ2Presentation.Induction.kernelFrattini {p : Q2Presentation.Induction.FramedPair} {chief : Q2Presentation.Induction.NonScalarChiefFactor p} (K : Q2Presentation.Induction.KernelMinimal chief) : Subgroup p.fst.YThe literal Frattini subgroup `R = Φ(K)` of the kernel, as a subgroup of `Y` (the manuscript's `R`, l.3626).KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)) : Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number. If `α` is infinite, `Nat.card α = 0`.↥(Q2Presentation.Lifting.rowMapQ2Presentation.Lifting.rowMap {Yt : Q2Presentation.BoundaryFramedTarget} (E : Q2Presentation.Lifting.ElementaryKernel Yt) [Finite Yt.Y] (q : Q2Presentation.Marking Yt.Y) : (Q2Presentation.Gen → Q2Presentation.Lifting.NAdd E) →ₗ[ZMod 2] Q2Presentation.Lifting.NAdd E × Q2Presentation.Lifting.NAdd E**The row map**: both relator shadows, as one linear map.(Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel** (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (Q2Presentation.Lifting.baseMarkingQ2Presentation.Lifting.baseMarking {Yt : Q2Presentation.BoundaryFramedTarget} (E : Q2Presentation.Lifting.ElementaryKernel Yt) (F : Q2Presentation.BoundaryFrame Yt) (g : Q2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GammaA (Q2Presentation.TorsorProgram.quotientFramedTarget Yt E.N ⋯ ⋯) (Q2Presentation.TorsorProgram.quotientFrame Yt E.N ⋯ ⋯ F)) : Q2Presentation.Marking Yt.YA chosen base marking under `g`.(Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel** (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) pQ2Presentation.Induction.FramedPair.sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GammaA (Q2Presentation.TorsorProgram.quotientFramedTarget p.fst (Q2Presentation.Induction.xrKernel chief K).N ⋯ ⋯) (Q2Presentation.TorsorProgram.quotientFrame p.fst (Q2Presentation.Induction.xrKernel chief K).N ⋯ ⋯ p.snd))).kerLinearMap.ker.{u_1, u_2, u_5, u_7} {R : Type u_1} {R₂ : Type u_2} {M : Type u_5} {M₂ : Type u_7} [Semiring R] [Semiring R₂] [AddCommMonoid M] [AddCommMonoid M₂] [Module R M] [Module R₂ M₂] {τ₁₂ : R →+* R₂} (f : M →ₛₗ[τ₁₂] M₂) : Submodule R MThe kernel of a linear map `f : M → M₂` is defined to be `comap f ⊥`. This is equivalent to the set of `x : M` such that `f x = 0`. The kernel is a submodule of `M`.=Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`. We use `a = b` as notation for `Eq a b`. A fundamental property of equality is that it is an equivalence relation. ``` variable (α : Type) (a b c d : α) variable (hab : a = b) (hcb : c = b) (hcd : c = d) example : a = d := Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd ``` Equality is much more than an equivalence relation, however. It has the important property that every assertion respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value. That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`. Example: ``` example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := Eq.subst h1 h2 example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := h1 ▸ h2 ``` The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`. For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality) Conventions for notations in identifiers: * The recommended spelling of `=` in identifiers is `eq`.2 ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `^` in identifiers is `pow`.(HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.2 *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.Module.finrankModule.finrank.{u_1, u_2} (R : Type u_1) (M : Type u_2) [Semiring R] [AddCommMonoid M] [Module R M] : ℕThe rank of a module as a natural number. For a finite-dimensional vector space `V` over a field `k`, `Module.finrank k V` is equal to the dimension of `V` over `k`. For a general module `M` over a ring `R`, `Module.finrank R M` is defined to be the supremum of the cardinalities of the `R`-linearly independent subsets of `M`, if this supremum is finite. It is defined by convention to be `0` if this supremum is infinite. See `Module.rank` for a cardinal-valued version where infinite rank modules have rank an infinite cardinal. Note that if `R` is not a field then there can exist modules `M` with `¬(Module.Finite R M)` but `finrank R M ≠ 0`. For example `ℚ` has `finrank` equal to `1` over `ℤ`, because the nonempty `ℤ`-linearly independent subsets of `ℚ` are precisely the nonzero singletons.(ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.2) (Q2Presentation.Lifting.NAddQ2Presentation.Lifting.NAdd {Yt : Q2Presentation.BoundaryFramedTarget} (E : Q2Presentation.Lifting.ElementaryKernel Yt) : TypeThe additive `F₂`-carrier of an elementary kernel.(Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel** (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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`.*HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number. If `α` is infinite, `Nat.card α = 0`.↥(Q2Presentation.Lifting.conjInvDualsQ2Presentation.Lifting.conjInvDuals {Yt : Q2Presentation.BoundaryFramedTarget} (E : Q2Presentation.Lifting.ElementaryKernel Yt) : Submodule (ZMod 2) (Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E))The conjugation-invariant duals `X = (R^∨)^Y = (R^∨)^C` of an elementary kernel (consumer spelling of the manuscript's `𝒳_R`, §7 l.3720–3723).(Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel** (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor))theorem Q2Presentation.Induction.xr_ker_rowMap_card {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) (gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GammaA (Q2Presentation.TorsorProgram.quotientFramedTarget p.fst (Q2Presentation.Induction.xrKernel chief K).N ⋯ ⋯) (Q2Presentation.TorsorProgram.quotientFrame p.fst (Q2Presentation.Induction.xrKernel chief K).N ⋯ ⋯ p.snd): Q2Presentation.boundaryFramedSurjQ2Presentation.boundaryFramedSurj {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (Yt : Q2Presentation.BoundaryFramedTarget) (F : Q2Presentation.BoundaryFrame Yt) : TypeThe **boundary-framed surjections** `e_Γ^β(𝒴)` (manuscript `eq:eGamma`): the continuous surjections `f : Γ ↠ Y` whose induced map to `H × E` is the prescribed `β ∘ b_Γ`, i.e. `q_Y ∘ f = β ∘ b_Γ`. This is the subtype counted in Theorem 4.2; its cardinality is `e_Γ^β(𝒴)`.Q2Presentation.boundaryPackage_GammaAQ2Presentation.boundaryPackage_GammaA : Q2Presentation.BoundaryPackage Q2Presentation.GammaA**The candidate boundary package** (manuscript Prop 3.14, `prop:compatiblemarking`; plan Turn 4 §6). The Stage-C data of `Γ_A`: the common tame quotient `gammaTameMap`, the maximal pro-`2` quotient `p : Γ_A ⟶ Π`, and the common unramified character `ν = gammaTameMap ≫ ν_t`, through which both factor.(Q2Presentation.TorsorProgram.quotientFramedTargetQ2Presentation.TorsorProgram.quotientFramedTarget (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y) [hNn : N.Normal] (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) : Q2Presentation.BoundaryFramedTarget**The quotient framed target** `Y/N` (same `H`, same `E`, image wild kernel).pQ2Presentation.Induction.FramedPair.fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.(Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel** (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).NQ2Presentation.Lifting.ElementaryKernel.N {Yt : Q2Presentation.BoundaryFramedTarget} (self : Q2Presentation.Lifting.ElementaryKernel Yt) : Subgroup Yt.Y⋯ ⋯) (Q2Presentation.TorsorProgram.quotientFrameQ2Presentation.TorsorProgram.quotientFrame (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y) [hNn : N.Normal] (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) (F : Q2Presentation.BoundaryFrame Yt) : Q2Presentation.BoundaryFrame (Q2Presentation.TorsorProgram.quotientFramedTarget Yt N hNLY hNθ)The frame transports verbatim (`H`, `E`, `α`, `ψ`, `β` unchanged).pQ2Presentation.Induction.FramedPair.fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.(Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel** (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).NQ2Presentation.Lifting.ElementaryKernel.N {Yt : Q2Presentation.BoundaryFramedTarget} (self : Q2Presentation.Lifting.ElementaryKernel Yt) : Subgroup Yt.Y⋯ ⋯ pQ2Presentation.Induction.FramedPair.sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.)) (hR1 < Nat.card ↥(Q2Presentation.Induction.kernelFrattini K): 1 <LT.lt.{u} {α : Type u} [self : LT α] : α → α → PropThe less-than relation: `x < y` Conventions for notations in identifiers: * The recommended spelling of `<` in identifiers is `lt`.Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number. If `α` is infinite, `Nat.card α = 0`.↥(Q2Presentation.Induction.kernelFrattiniQ2Presentation.Induction.kernelFrattini {p : Q2Presentation.Induction.FramedPair} {chief : Q2Presentation.Induction.NonScalarChiefFactor p} (K : Q2Presentation.Induction.KernelMinimal chief) : Subgroup p.fst.YThe literal Frattini subgroup `R = Φ(K)` of the kernel, as a subgroup of `Y` (the manuscript's `R`, l.3626).KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)) : Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number. If `α` is infinite, `Nat.card α = 0`.↥(Q2Presentation.Lifting.rowMapQ2Presentation.Lifting.rowMap {Yt : Q2Presentation.BoundaryFramedTarget} (E : Q2Presentation.Lifting.ElementaryKernel Yt) [Finite Yt.Y] (q : Q2Presentation.Marking Yt.Y) : (Q2Presentation.Gen → Q2Presentation.Lifting.NAdd E) →ₗ[ZMod 2] Q2Presentation.Lifting.NAdd E × Q2Presentation.Lifting.NAdd E**The row map**: both relator shadows, as one linear map.(Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel** (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (Q2Presentation.Lifting.baseMarkingQ2Presentation.Lifting.baseMarking {Yt : Q2Presentation.BoundaryFramedTarget} (E : Q2Presentation.Lifting.ElementaryKernel Yt) (F : Q2Presentation.BoundaryFrame Yt) (g : Q2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GammaA (Q2Presentation.TorsorProgram.quotientFramedTarget Yt E.N ⋯ ⋯) (Q2Presentation.TorsorProgram.quotientFrame Yt E.N ⋯ ⋯ F)) : Q2Presentation.Marking Yt.YA chosen base marking under `g`.(Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel** (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) pQ2Presentation.Induction.FramedPair.sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.gQ2Presentation.boundaryFramedSurj Q2Presentation.boundaryPackage_GammaA (Q2Presentation.TorsorProgram.quotientFramedTarget p.fst (Q2Presentation.Induction.xrKernel chief K).N ⋯ ⋯) (Q2Presentation.TorsorProgram.quotientFrame p.fst (Q2Presentation.Induction.xrKernel chief K).N ⋯ ⋯ p.snd))).kerLinearMap.ker.{u_1, u_2, u_5, u_7} {R : Type u_1} {R₂ : Type u_2} {M : Type u_5} {M₂ : Type u_7} [Semiring R] [Semiring R₂] [AddCommMonoid M] [AddCommMonoid M₂] [Module R M] [Module R₂ M₂] {τ₁₂ : R →+* R₂} (f : M →ₛₗ[τ₁₂] M₂) : Submodule R MThe kernel of a linear map `f : M → M₂` is defined to be `comap f ⊥`. This is equivalent to the set of `x : M` such that `f x = 0`. The kernel is a submodule of `M`.=Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`. We use `a = b` as notation for `Eq a b`. A fundamental property of equality is that it is an equivalence relation. ``` variable (α : Type) (a b c d : α) variable (hab : a = b) (hcb : c = b) (hcd : c = d) example : a = d := Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd ``` Equality is much more than an equivalence relation, however. It has the important property that every assertion respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value. That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`. Example: ``` example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := Eq.subst h1 h2 example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := h1 ▸ h2 ``` The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`. For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality) Conventions for notations in identifiers: * The recommended spelling of `=` in identifiers is `eq`.2 ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `^` in identifiers is `pow`.(HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.2 *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.Module.finrankModule.finrank.{u_1, u_2} (R : Type u_1) (M : Type u_2) [Semiring R] [AddCommMonoid M] [Module R M] : ℕThe rank of a module as a natural number. For a finite-dimensional vector space `V` over a field `k`, `Module.finrank k V` is equal to the dimension of `V` over `k`. For a general module `M` over a ring `R`, `Module.finrank R M` is defined to be the supremum of the cardinalities of the `R`-linearly independent subsets of `M`, if this supremum is finite. It is defined by convention to be `0` if this supremum is infinite. See `Module.rank` for a cardinal-valued version where infinite rank modules have rank an infinite cardinal. Note that if `R` is not a field then there can exist modules `M` with `¬(Module.Finite R M)` but `finrank R M ≠ 0`. For example `ℚ` has `finrank` equal to `1` over `ℤ`, because the nonempty `ℤ`-linearly independent subsets of `ℚ` are precisely the nonzero singletons.(ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.2) (Q2Presentation.Lifting.NAddQ2Presentation.Lifting.NAdd {Yt : Q2Presentation.BoundaryFramedTarget} (E : Q2Presentation.Lifting.ElementaryKernel Yt) : TypeThe additive `F₂`-carrier of an elementary kernel.(Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel** (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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`.*HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number. If `α` is infinite, `Nat.card α = 0`.↥(Q2Presentation.Lifting.conjInvDualsQ2Presentation.Lifting.conjInvDuals {Yt : Q2Presentation.BoundaryFramedTarget} (E : Q2Presentation.Lifting.ElementaryKernel Yt) : Submodule (ZMod 2) (Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd E))The conjugation-invariant duals `X = (R^∨)^Y = (R^∨)^C` of an elementary kernel (consumer spelling of the manuscript's `𝒳_R`, §7 l.3720–3723).(Q2Presentation.Induction.xrKernelQ2Presentation.Induction.xrKernel {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Lifting.ElementaryKernel p.fst**The Frattini layer `R = Φ(K)` as an elementary kernel** (`lem:collapse`): normal, inside `L_Y`, `θ`-dead, elementary abelian.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor))**The kernel count** `|ker (rowMap)| = 2^{2·dim R}·|𝒳_R|` (`prop:finalfourier` l.4243–4245): rank–nullity against the sum-line size of the row image and the coannihilator dimension count.
Lemma 8.12 of the paper (Proper-image subtraction for a scalar pushout).
Fix 0\ne\lambda\in\mathcal X_R. Let Z_{\Gamma,\lambda}(B/C) count all
compatible lifts of exact-image maps to C, without imposing generation in
B. Then
\boxed{ m_{\Gamma,\lambda}(B)=Z_{\Gamma,\lambda}(B/C) -\sum_{\substack{J<B\\J\twoheadrightarrow C}} m_{\Gamma,\lambda}(J).}
For every proper J in the sum,
\boxed{ 8m_{\Gamma,\lambda}(J)= \sum_{\substack{\widetilde J\le p_\lambda^{-1}(J)\\ p_\lambda(\widetilde J)=J}} e_\Gamma(\widetilde J).}
Lean code for Lemma8.12●1 definition
Associated Lean declarations
-
defdefined in Q2Presentation/Induction/RadicalEdgeCount.leancomplete
def Q2Presentation.Induction.coverLiftableWeak {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)) {ΓProfiniteGrp.{0}: ProfiniteGrp.{0}ProfiniteGrp.{u_1} : Type (u_1 + 1)The category of profinite groups. A term of this type consists of a profinite set with a topological group structure.} (BQ2Presentation.BoundaryPackage Γ: Q2Presentation.BoundaryPackageQ2Presentation.BoundaryPackage (Γ : ProfiniteGrp.{0}) : TypeA **boundary package** on a profinite group `Γ`: the uniform Stage-C data of a tame quotient, a maximal pro-`2` quotient, and a common unramified character `ℤ₂` through which both factor (manuscript Prop 3.14, `prop:compatiblemarking`; plan Turn 4 §6). The compatibility `tameMap ≫ ν_t = ν = pro2Map ≫ ν_2` records that the two markings agree on the full unramified coordinate, not merely modulo `2`.ΓProfiniteGrp.{0}) (fQ2Presentation.TorsorProgram.coverLiftTotal (Q2Presentation.Induction.XRZero.xrChild chief K).fst (Q2Presentation.Induction.mChildKernel chief K).N B (Q2Presentation.Induction.XRZero.xrChild chief K).snd: Q2Presentation.TorsorProgram.coverLiftTotalQ2Presentation.TorsorProgram.coverLiftTotal (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y) [hNn : N.Normal] {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (F : Q2Presentation.BoundaryFrame Yt) : Type**The cover-lift total space**: framed continuous homs into the AMBIENT target whose projection to the child is onto (`lem:covertransform`: all lifts of all unobstructed exact-image maps at once; surjectivity onto the ambient target NOT imposed — these are the weak lifts).(Q2Presentation.Induction.XRZero.xrChildQ2Presentation.Induction.XRZero.xrChild {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPairThe `𝒳_R = 0` child: the quotient framed pair at `N = Φ`-layer.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.(Q2Presentation.Induction.mChildKernelQ2Presentation.Induction.mChildKernel {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Lifting.ElementaryKernel (Q2Presentation.Induction.XRZero.xrChild chief K).fst**The elementary `M`-kernel at the child** `B = Y/Φ(K)` (`lem:simplehead` carrier for `lem:elementarystage`): `N = M' = K/Φ(K)`.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).NQ2Presentation.Lifting.ElementaryKernel.N {Yt : Q2Presentation.BoundaryFramedTarget} (self : Q2Presentation.Lifting.ElementaryKernel Yt) : Subgroup Yt.YBQ2Presentation.BoundaryPackage Γ(Q2Presentation.Induction.XRZero.xrChildQ2Presentation.Induction.XRZero.xrChild {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPairThe `𝒳_R = 0` child: the quotient framed pair at `N = Φ`-layer.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.) : PropThe universe of propositions. `Prop ≡ Sort 0`. Every proposition is propositionally equal to either `True` or `False`.def Q2Presentation.Induction.coverLiftableWeak {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)) {ΓProfiniteGrp.{0}: ProfiniteGrp.{0}ProfiniteGrp.{u_1} : Type (u_1 + 1)The category of profinite groups. A term of this type consists of a profinite set with a topological group structure.} (BQ2Presentation.BoundaryPackage Γ: Q2Presentation.BoundaryPackageQ2Presentation.BoundaryPackage (Γ : ProfiniteGrp.{0}) : TypeA **boundary package** on a profinite group `Γ`: the uniform Stage-C data of a tame quotient, a maximal pro-`2` quotient, and a common unramified character `ℤ₂` through which both factor (manuscript Prop 3.14, `prop:compatiblemarking`; plan Turn 4 §6). The compatibility `tameMap ≫ ν_t = ν = pro2Map ≫ ν_2` records that the two markings agree on the full unramified coordinate, not merely modulo `2`.ΓProfiniteGrp.{0}) (fQ2Presentation.TorsorProgram.coverLiftTotal (Q2Presentation.Induction.XRZero.xrChild chief K).fst (Q2Presentation.Induction.mChildKernel chief K).N B (Q2Presentation.Induction.XRZero.xrChild chief K).snd: Q2Presentation.TorsorProgram.coverLiftTotalQ2Presentation.TorsorProgram.coverLiftTotal (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y) [hNn : N.Normal] {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (F : Q2Presentation.BoundaryFrame Yt) : Type**The cover-lift total space**: framed continuous homs into the AMBIENT target whose projection to the child is onto (`lem:covertransform`: all lifts of all unobstructed exact-image maps at once; surjectivity onto the ambient target NOT imposed — these are the weak lifts).(Q2Presentation.Induction.XRZero.xrChildQ2Presentation.Induction.XRZero.xrChild {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPairThe `𝒳_R = 0` child: the quotient framed pair at `N = Φ`-layer.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.(Q2Presentation.Induction.mChildKernelQ2Presentation.Induction.mChildKernel {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Lifting.ElementaryKernel (Q2Presentation.Induction.XRZero.xrChild chief K).fst**The elementary `M`-kernel at the child** `B = Y/Φ(K)` (`lem:simplehead` carrier for `lem:elementarystage`): `N = M' = K/Φ(K)`.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).NQ2Presentation.Lifting.ElementaryKernel.N {Yt : Q2Presentation.BoundaryFramedTarget} (self : Q2Presentation.Lifting.ElementaryKernel Yt) : Subgroup Yt.YBQ2Presentation.BoundaryPackage Γ(Q2Presentation.Induction.XRZero.xrChildQ2Presentation.Induction.XRZero.xrChild {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPairThe `𝒳_R = 0` child: the quotient framed pair at `N = Φ`-layer.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.) : PropThe universe of propositions. `Prop ≡ Sort 0`. Every proposition is propositionally equal to either `True` or `False`.**λ-liftability of a weak `M`-lift** (`lem:properimagesubtraction` l.4269–4271): a point of the W2a total space at the child M-kernel is λ-liftable when some framed hom into `B_λ` projects to it along `p_λ = scalarCoverProj` — surjectivity onto `B_λ` NOT imposed (weak solvability; images are stratified by `eq:recursionR2`/`R3`).
Proved in §8 of the paper. Ingredients: Lemma 8.3.
Proposition 8.13 of the paper (The nonzero radical-edge case).
If the radical edge of p_\lambda is nonzero, then
\boxed{ Z_{\Gamma,\lambda}(B/C) =2^{2\dim M-1}e_\Gamma(C).}
Lean code for Theorem8.13●2 theorems
Associated Lean declarations
-
theoremdefined in Q2Presentation/Induction/RadicalEdgeHalving.leancomplete
theorem Q2Presentation.Induction.sec7_nonzeroEdge_count_gammaA {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) (_hedge¬Q2Presentation.Induction.ZeroEdge chief K lam hinv: ¬Not (a : Prop) : Prop`Not p`, or `¬p`, is the negation of `p`. It is defined to be `p → False`, so if your goal is `¬p` you can use `intro h` to turn the goal into `h : p ⊢ False`, and if you have `hn : ¬p` and `h : p` then `hn h : False` and `(hn h).elim` will prove anything. For more information: [Propositional Logic](https://lean-lang.org/theorem_proving_in_lean4/propositions_and_proofs.html#propositional-logic) Conventions for notations in identifiers: * The recommended spelling of `¬` in identifiers is `not`.Q2Presentation.Induction.ZeroEdgeQ2Presentation.Induction.ZeroEdge {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) : Prop**The zero-edge predicate** (`lem:radicaledge`'s `[ε̄] = 0` branch, cocycle-free): some edge complement is normal in the whole cover.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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)) (hhalfQ2Presentation.Induction.EdgeHalvingGammaA chief K lam hinv: Q2Presentation.Induction.EdgeHalvingGammaAQ2Presentation.Induction.EdgeHalvingGammaA {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) : Prop**The R4a per-fibre halving, candidate source** — THE sharply-scoped R4a residual (manuscript `lem:radicaledge` step 6, l.4006–4019: exact variation formula + perfect degree-one duality; candidate half = `prop:chainmap` l.1687 + `prop:defduality`-grade degree-one content): over each `g_C`, exactly half of the weak `M`-lifts are λ-liftable, stated division-free per fibre. Deliberately does NOT assert the fibre size `2^{2·dim M}` (that is the separate, PROVEN `lem:elementarystage` obligation — design §6.3), and is deliberately NOT conditioned here on `¬ ZeroEdge` — the conditioning belongs to its (future, coordinated) keep `sec7_edgeHalving_gammaA (hne) (hedge) : EdgeHalvingGammaA …`, whose dissolution program is recorded in the design §4.6: (i) the ledger variation formula from U3's `edgeDefect` calculus + the weak-base defect engine; (ii) `edgeShadow ≠ 0` on the `T`-cocycle space by the trivial-chain dévissage over the PROVEN `Sec7TrivialChainData`; (iii) the free-orbit torsor bookkeeping.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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)) : 2 *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.Q2Presentation.Induction.ZcountQ2Presentation.Induction.Zcount {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) : ℕ**The unrestricted top count `Z_{Γ,λ}(B/C)`**: framed maps to `B` whose composite to `C` is onto ("without imposing generation in `B`", l.4270) and which weakly lift through `p_λ`.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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.boundaryPackage_GammaAQ2Presentation.boundaryPackage_GammaA : Q2Presentation.BoundaryPackage Q2Presentation.GammaA**The candidate boundary package** (manuscript Prop 3.14, `prop:compatiblemarking`; plan Turn 4 §6). The Stage-C data of `Γ_A`: the common tame quotient `gammaTameMap`, the maximal pro-`2` quotient `p : Γ_A ⟶ Π`, and the common unramified character `ν = gammaTameMap ≫ ν_t`, through which both factor.=Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`. We use `a = b` as notation for `Eq a b`. A fundamental property of equality is that it is an equivalence relation. ``` variable (α : Type) (a b c d : α) variable (hab : a = b) (hcb : c = b) (hcd : c = d) example : a = d := Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd ``` Equality is much more than an equivalence relation, however. It has the important property that every assertion respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value. That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`. Example: ``` example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := Eq.subst h1 h2 example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := h1 ▸ h2 ``` The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`. For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality) Conventions for notations in identifiers: * The recommended spelling of `=` in identifiers is `eq`.2 ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `^` in identifiers is `pow`.(HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.2 *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.Q2Presentation.Induction.dimMQ2Presentation.Induction.dimM {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : ℕ`dim M` (the `2^{2·dimM}` of `lem:elementarystage`).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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`.*HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.Q2Presentation.Induction.eCQ2Presentation.Induction.eC {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) : ℕ**The C-child count** (the `e_Γ(C')` of R4a/R4b): boundary-framed surjections onto the C-child pair (P3-U2's `cChild`).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactorQ2Presentation.boundaryPackage_GammaAQ2Presentation.boundaryPackage_GammaA : Q2Presentation.BoundaryPackage Q2Presentation.GammaA**The candidate boundary package** (manuscript Prop 3.14, `prop:compatiblemarking`; plan Turn 4 §6). The Stage-C data of `Γ_A`: the common tame quotient `gammaTameMap`, the maximal pro-`2` quotient `p : Γ_A ⟶ Π`, and the common unramified character `ν = gammaTameMap ≫ ν_t`, through which both factor.theorem Q2Presentation.Induction.sec7_nonzeroEdge_count_gammaA {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) (_hedge¬Q2Presentation.Induction.ZeroEdge chief K lam hinv: ¬Not (a : Prop) : Prop`Not p`, or `¬p`, is the negation of `p`. It is defined to be `p → False`, so if your goal is `¬p` you can use `intro h` to turn the goal into `h : p ⊢ False`, and if you have `hn : ¬p` and `h : p` then `hn h : False` and `(hn h).elim` will prove anything. For more information: [Propositional Logic](https://lean-lang.org/theorem_proving_in_lean4/propositions_and_proofs.html#propositional-logic) Conventions for notations in identifiers: * The recommended spelling of `¬` in identifiers is `not`.Q2Presentation.Induction.ZeroEdgeQ2Presentation.Induction.ZeroEdge {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) : Prop**The zero-edge predicate** (`lem:radicaledge`'s `[ε̄] = 0` branch, cocycle-free): some edge complement is normal in the whole cover.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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)) (hhalfQ2Presentation.Induction.EdgeHalvingGammaA chief K lam hinv: Q2Presentation.Induction.EdgeHalvingGammaAQ2Presentation.Induction.EdgeHalvingGammaA {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) : Prop**The R4a per-fibre halving, candidate source** — THE sharply-scoped R4a residual (manuscript `lem:radicaledge` step 6, l.4006–4019: exact variation formula + perfect degree-one duality; candidate half = `prop:chainmap` l.1687 + `prop:defduality`-grade degree-one content): over each `g_C`, exactly half of the weak `M`-lifts are λ-liftable, stated division-free per fibre. Deliberately does NOT assert the fibre size `2^{2·dim M}` (that is the separate, PROVEN `lem:elementarystage` obligation — design §6.3), and is deliberately NOT conditioned here on `¬ ZeroEdge` — the conditioning belongs to its (future, coordinated) keep `sec7_edgeHalving_gammaA (hne) (hedge) : EdgeHalvingGammaA …`, whose dissolution program is recorded in the design §4.6: (i) the ledger variation formula from U3's `edgeDefect` calculus + the weak-base defect engine; (ii) `edgeShadow ≠ 0` on the `T`-cocycle space by the trivial-chain dévissage over the PROVEN `Sec7TrivialChainData`; (iii) the free-orbit torsor bookkeeping.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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)) : 2 *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.Q2Presentation.Induction.ZcountQ2Presentation.Induction.Zcount {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) : ℕ**The unrestricted top count `Z_{Γ,λ}(B/C)`**: framed maps to `B` whose composite to `C` is onto ("without imposing generation in `B`", l.4270) and which weakly lift through `p_λ`.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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.boundaryPackage_GammaAQ2Presentation.boundaryPackage_GammaA : Q2Presentation.BoundaryPackage Q2Presentation.GammaA**The candidate boundary package** (manuscript Prop 3.14, `prop:compatiblemarking`; plan Turn 4 §6). The Stage-C data of `Γ_A`: the common tame quotient `gammaTameMap`, the maximal pro-`2` quotient `p : Γ_A ⟶ Π`, and the common unramified character `ν = gammaTameMap ≫ ν_t`, through which both factor.=Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`. We use `a = b` as notation for `Eq a b`. A fundamental property of equality is that it is an equivalence relation. ``` variable (α : Type) (a b c d : α) variable (hab : a = b) (hcb : c = b) (hcd : c = d) example : a = d := Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd ``` Equality is much more than an equivalence relation, however. It has the important property that every assertion respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value. That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`. Example: ``` example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := Eq.subst h1 h2 example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := h1 ▸ h2 ``` The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`. For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality) Conventions for notations in identifiers: * The recommended spelling of `=` in identifiers is `eq`.2 ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `^` in identifiers is `pow`.(HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.2 *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.Q2Presentation.Induction.dimMQ2Presentation.Induction.dimM {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : ℕ`dim M` (the `2^{2·dimM}` of `lem:elementarystage`).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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`.*HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.Q2Presentation.Induction.eCQ2Presentation.Induction.eC {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) : ℕ**The C-child count** (the `e_Γ(C')` of R4a/R4b): boundary-framed surjections onto the C-child pair (P3-U2's `cChild`).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactorQ2Presentation.boundaryPackage_GammaAQ2Presentation.boundaryPackage_GammaA : Q2Presentation.BoundaryPackage Q2Presentation.GammaA**The candidate boundary package** (manuscript Prop 3.14, `prop:compatiblemarking`; plan Turn 4 §6). The Stage-C data of `Γ_A`: the common tame quotient `gammaTameMap`, the maximal pro-`2` quotient `p : Γ_A ⟶ Π`, and the common unramified character `ν = gammaTameMap ≫ ν_t`, through which both factor.**R4a, candidate source** (`prop:nonzeroedge`, `eq:recursionR4a` l.4299–4303, division-free): on the nonzero-edge branch, `2·Z_{Γ_A,λ}(B/C) = 2^{2·dim M}·e_{Γ_A}(C')`. The branch hypotheses `_hne`/`_hedge` pin the R4a case (design §4.6's exit signature; they are consumed by P8's `Classical.byCases` split and by the keeps discharging `hhalf`, not by this counting proof). The halving clause enters as an explicit HYPOTHESIS (`EdgeHalvingGammaA`); the fibre size is the PROVEN candidate `lem:elementarystage` count (P3-U6). -
theoremdefined in Q2Presentation/Induction/RadicalEdgeHalving.leancomplete
theorem Q2Presentation.Induction.sec7_nonzeroEdge_count_gq2 {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) (_hedge¬Q2Presentation.Induction.ZeroEdge chief K lam hinv: ¬Not (a : Prop) : Prop`Not p`, or `¬p`, is the negation of `p`. It is defined to be `p → False`, so if your goal is `¬p` you can use `intro h` to turn the goal into `h : p ⊢ False`, and if you have `hn : ¬p` and `h : p` then `hn h : False` and `(hn h).elim` will prove anything. For more information: [Propositional Logic](https://lean-lang.org/theorem_proving_in_lean4/propositions_and_proofs.html#propositional-logic) Conventions for notations in identifiers: * The recommended spelling of `¬` in identifiers is `not`.Q2Presentation.Induction.ZeroEdgeQ2Presentation.Induction.ZeroEdge {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) : Prop**The zero-edge predicate** (`lem:radicaledge`'s `[ε̄] = 0` branch, cocycle-free): some edge complement is normal in the whole cover.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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)) (hhalfQ2Presentation.Induction.EdgeHalvingGQ2 chief K lam hinv: Q2Presentation.Induction.EdgeHalvingGQ2Q2Presentation.Induction.EdgeHalvingGQ2 {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) : Prop**The R4a per-fibre halving, local source** (manuscript `lem:radicaledge` step 6, l.4006–4019, with `prop:localduality` — NSW VII.2, perfectness of the degree-one local pairing — the citable-with-derivation trust class of `localObstruction_scalar`, BLOCKR_P1_DESIGN §5.3). Same statement shape as the candidate clause; its (future, coordinated) keep is `q2_edgeHalving (hne) (hedge) : EdgeHalvingGQ2 …`.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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)) : 2 *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.Q2Presentation.Induction.ZcountQ2Presentation.Induction.Zcount {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) : ℕ**The unrestricted top count `Z_{Γ,λ}(B/C)`**: framed maps to `B` whose composite to `C` is onto ("without imposing generation in `B`", l.4270) and which weakly lift through `p_λ`.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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.boundaryPackage_GQ2Q2Presentation.boundaryPackage_GQ2 : Q2Presentation.BoundaryPackage Q2Presentation.GQ2Profinite**The local boundary package** `boundaryPackage_GQ2 : BoundaryPackage G_{ℚ₂}` (manuscript Prop 3.14 `prop:compatiblemarking` for `Γ = G_{ℚ₂}`; plan Turn 4 §6), the `G_{ℚ₂}`-side instance of the uniform Stage-C boundary datum. * `tameMap`/`tame_surj`/`tame_nu` — the local tame quotient `G_{ℚ₂} ↠ T_A` with unramified marking `ν_loc`, from the axiom `gq2_tame_quotient` (Prop 3.2 + the local half of Prop `compatiblemarking`); * `pro2Map`/`pro2_surj`/`pro2_nu` — the local maximal pro-`2` quotient `G_{ℚ₂} ↠ Π` with the *same* unramified marking `ν_loc`, proved from the fully marked Labute comparison `labute_GQ2_maxPro2_marked` (`pro2Map_loc`, `pro2Map_loc_surjective`, `pro2Map_loc_nu`); * `nu := ν_loc` — the common unramified character through which both factor.=Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`. We use `a = b` as notation for `Eq a b`. A fundamental property of equality is that it is an equivalence relation. ``` variable (α : Type) (a b c d : α) variable (hab : a = b) (hcb : c = b) (hcd : c = d) example : a = d := Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd ``` Equality is much more than an equivalence relation, however. It has the important property that every assertion respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value. That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`. Example: ``` example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := Eq.subst h1 h2 example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := h1 ▸ h2 ``` The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`. For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality) Conventions for notations in identifiers: * The recommended spelling of `=` in identifiers is `eq`.2 ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `^` in identifiers is `pow`.(HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.2 *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.Q2Presentation.Induction.dimMQ2Presentation.Induction.dimM {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : ℕ`dim M` (the `2^{2·dimM}` of `lem:elementarystage`).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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`.*HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.Q2Presentation.Induction.eCQ2Presentation.Induction.eC {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) : ℕ**The C-child count** (the `e_Γ(C')` of R4a/R4b): boundary-framed surjections onto the C-child pair (P3-U2's `cChild`).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactorQ2Presentation.boundaryPackage_GQ2Q2Presentation.boundaryPackage_GQ2 : Q2Presentation.BoundaryPackage Q2Presentation.GQ2Profinite**The local boundary package** `boundaryPackage_GQ2 : BoundaryPackage G_{ℚ₂}` (manuscript Prop 3.14 `prop:compatiblemarking` for `Γ = G_{ℚ₂}`; plan Turn 4 §6), the `G_{ℚ₂}`-side instance of the uniform Stage-C boundary datum. * `tameMap`/`tame_surj`/`tame_nu` — the local tame quotient `G_{ℚ₂} ↠ T_A` with unramified marking `ν_loc`, from the axiom `gq2_tame_quotient` (Prop 3.2 + the local half of Prop `compatiblemarking`); * `pro2Map`/`pro2_surj`/`pro2_nu` — the local maximal pro-`2` quotient `G_{ℚ₂} ↠ Π` with the *same* unramified marking `ν_loc`, proved from the fully marked Labute comparison `labute_GQ2_maxPro2_marked` (`pro2Map_loc`, `pro2Map_loc_surjective`, `pro2Map_loc_nu`); * `nu := ν_loc` — the common unramified character through which both factor.theorem Q2Presentation.Induction.sec7_nonzeroEdge_count_gq2 {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) (_hedge¬Q2Presentation.Induction.ZeroEdge chief K lam hinv: ¬Not (a : Prop) : Prop`Not p`, or `¬p`, is the negation of `p`. It is defined to be `p → False`, so if your goal is `¬p` you can use `intro h` to turn the goal into `h : p ⊢ False`, and if you have `hn : ¬p` and `h : p` then `hn h : False` and `(hn h).elim` will prove anything. For more information: [Propositional Logic](https://lean-lang.org/theorem_proving_in_lean4/propositions_and_proofs.html#propositional-logic) Conventions for notations in identifiers: * The recommended spelling of `¬` in identifiers is `not`.Q2Presentation.Induction.ZeroEdgeQ2Presentation.Induction.ZeroEdge {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) : Prop**The zero-edge predicate** (`lem:radicaledge`'s `[ε̄] = 0` branch, cocycle-free): some edge complement is normal in the whole cover.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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)) (hhalfQ2Presentation.Induction.EdgeHalvingGQ2 chief K lam hinv: Q2Presentation.Induction.EdgeHalvingGQ2Q2Presentation.Induction.EdgeHalvingGQ2 {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) : Prop**The R4a per-fibre halving, local source** (manuscript `lem:radicaledge` step 6, l.4006–4019, with `prop:localduality` — NSW VII.2, perfectness of the degree-one local pairing — the citable-with-derivation trust class of `localObstruction_scalar`, BLOCKR_P1_DESIGN §5.3). Same statement shape as the candidate clause; its (future, coordinated) keep is `q2_edgeHalving (hne) (hedge) : EdgeHalvingGQ2 …`.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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)) : 2 *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.Q2Presentation.Induction.ZcountQ2Presentation.Induction.Zcount {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) : ℕ**The unrestricted top count `Z_{Γ,λ}(B/C)`**: framed maps to `B` whose composite to `C` is onto ("without imposing generation in `B`", l.4270) and which weakly lift through `p_λ`.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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.boundaryPackage_GQ2Q2Presentation.boundaryPackage_GQ2 : Q2Presentation.BoundaryPackage Q2Presentation.GQ2Profinite**The local boundary package** `boundaryPackage_GQ2 : BoundaryPackage G_{ℚ₂}` (manuscript Prop 3.14 `prop:compatiblemarking` for `Γ = G_{ℚ₂}`; plan Turn 4 §6), the `G_{ℚ₂}`-side instance of the uniform Stage-C boundary datum. * `tameMap`/`tame_surj`/`tame_nu` — the local tame quotient `G_{ℚ₂} ↠ T_A` with unramified marking `ν_loc`, from the axiom `gq2_tame_quotient` (Prop 3.2 + the local half of Prop `compatiblemarking`); * `pro2Map`/`pro2_surj`/`pro2_nu` — the local maximal pro-`2` quotient `G_{ℚ₂} ↠ Π` with the *same* unramified marking `ν_loc`, proved from the fully marked Labute comparison `labute_GQ2_maxPro2_marked` (`pro2Map_loc`, `pro2Map_loc_surjective`, `pro2Map_loc_nu`); * `nu := ν_loc` — the common unramified character through which both factor.=Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`. We use `a = b` as notation for `Eq a b`. A fundamental property of equality is that it is an equivalence relation. ``` variable (α : Type) (a b c d : α) variable (hab : a = b) (hcb : c = b) (hcd : c = d) example : a = d := Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd ``` Equality is much more than an equivalence relation, however. It has the important property that every assertion respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value. That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`. Example: ``` example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := Eq.subst h1 h2 example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := h1 ▸ h2 ``` The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`. For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality) Conventions for notations in identifiers: * The recommended spelling of `=` in identifiers is `eq`.2 ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `^` in identifiers is `pow`.(HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.2 *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.Q2Presentation.Induction.dimMQ2Presentation.Induction.dimM {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : ℕ`dim M` (the `2^{2·dimM}` of `lem:elementarystage`).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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`.*HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.Q2Presentation.Induction.eCQ2Presentation.Induction.eC {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) : ℕ**The C-child count** (the `e_Γ(C')` of R4a/R4b): boundary-framed surjections onto the C-child pair (P3-U2's `cChild`).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactorQ2Presentation.boundaryPackage_GQ2Q2Presentation.boundaryPackage_GQ2 : Q2Presentation.BoundaryPackage Q2Presentation.GQ2Profinite**The local boundary package** `boundaryPackage_GQ2 : BoundaryPackage G_{ℚ₂}` (manuscript Prop 3.14 `prop:compatiblemarking` for `Γ = G_{ℚ₂}`; plan Turn 4 §6), the `G_{ℚ₂}`-side instance of the uniform Stage-C boundary datum. * `tameMap`/`tame_surj`/`tame_nu` — the local tame quotient `G_{ℚ₂} ↠ T_A` with unramified marking `ν_loc`, from the axiom `gq2_tame_quotient` (Prop 3.2 + the local half of Prop `compatiblemarking`); * `pro2Map`/`pro2_surj`/`pro2_nu` — the local maximal pro-`2` quotient `G_{ℚ₂} ↠ Π` with the *same* unramified marking `ν_loc`, proved from the fully marked Labute comparison `labute_GQ2_maxPro2_marked` (`pro2Map_loc`, `pro2Map_loc_surjective`, `pro2Map_loc_nu`); * `nu := ν_loc` — the common unramified character through which both factor.**R4a, local source** (`prop:nonzeroedge`, mirror): on the nonzero-edge branch, `2·Z_{G_{ℚ₂},λ}(B/C) = 2^{2·dim M}·e_{G_{ℚ₂}}(C')`. The fibre size is the local `lem:elementarystage` count (P3-U5, THEOREM from the citable `q2_localduality_general`); the halving clause enters as an explicit HYPOTHESIS (`EdgeHalvingGQ2`).
Proved in §8 of the paper. Ingredients: Lemma 8.6.
-
Q2Presentation.Induction.ZeroEdgeCountGammaA[complete] -
Q2Presentation.Induction.ZeroEdgeCountGQ2[complete] -
Q2Presentation.Induction.sec7_zeroEdge_count_gammaA[complete] -
Q2Presentation.Induction.sec7_zeroEdge_count_gq2[complete] -
Q2Presentation.Induction.q2_edgePointwise_count[complete] -
Q2Presentation.Quadratic.QuadF2.addLinear_nonsingular_iff[complete] -
Q2Presentation.Quadratic.gaussSum_eq_of_gaussType_eq[complete]
Proposition 8.14 of the paper (The zero radical-edge case).
Assume that the radical edge vanishes. Write the descended scalar pushout class as
\kappa=\kappa_q^0+\Gamma_{\gamma_\kappa} +\operatorname{inf}\delta_\kappa \quad\text{on }V\rtimes C,
and put
\mathcal X_T=(T^\vee)^C, \qquad r=\dim\mathcal X_T, \qquad d=\dim V, \qquad \mu=|B^1_{\Gamma,\rho}(V)|\,|Z^1_{\Gamma,\rho}(T)|.
For each lower map \rho,
\begin{aligned}&\#\{c:\partial_{\Gamma,\rho}c=\rho^*e, \ Q_{\kappa,\Gamma,\rho}(c)=0\} \\ &\qquad=\frac1{2^{r+1}} \left(2^d+G(Q^0)\sum_{\chi\in\mathcal X_T} (-1)^{\iota_\Gamma(\rho^*\Delta_{\chi,\kappa})}\right).\end{aligned}
Consequently
\boxed{ Z_{\Gamma,\lambda}(B/C) =\frac{\mu}{2^{r+1}} \left(2^d e_\Gamma(C) +G(Q^0)\sum_{\chi\in\mathcal X_T} s_\Gamma(\Delta_{\chi,\kappa})\right),}
where
s_\Gamma(\zeta)= \sum_{\rho\in X_\Gamma(C)} (-1)^{\iota_\Gamma(\rho^*\zeta)}.
Lean code for Theorem8.14●7 declarations
Associated Lean declarations
-
Q2Presentation.Induction.ZeroEdgeCountGammaA[complete]
-
Q2Presentation.Induction.ZeroEdgeCountGQ2[complete]
-
Q2Presentation.Induction.sec7_zeroEdge_count_gammaA[complete]
-
Q2Presentation.Induction.sec7_zeroEdge_count_gq2[complete]
-
Q2Presentation.Induction.q2_edgePointwise_count[complete]
-
Q2Presentation.Quadratic.QuadF2.addLinear_nonsingular_iff[complete]
-
Q2Presentation.Quadratic.gaussSum_eq_of_gaussType_eq[complete]
-
Q2Presentation.Induction.ZeroEdgeCountGammaA[complete] -
Q2Presentation.Induction.ZeroEdgeCountGQ2[complete] -
Q2Presentation.Induction.sec7_zeroEdge_count_gammaA[complete] -
Q2Presentation.Induction.sec7_zeroEdge_count_gq2[complete] -
Q2Presentation.Induction.q2_edgePointwise_count[complete] -
Q2Presentation.Quadratic.QuadF2.addLinear_nonsingular_iff[complete] -
Q2Presentation.Quadratic.gaussSum_eq_of_gaussType_eq[complete]
-
defdefined in Q2Presentation/Induction/ZeroEdgeCount.leancomplete
def Q2Presentation.Induction.ZeroEdgeCountGammaA {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)) (ramBool: BoolBool : TypeThe Boolean values, `true` and `false`. Logically speaking, this is equivalent to `Prop` (the type of propositions). The distinction is public important for programming: both propositions and their proofs are erased in the code generator, while `Bool` corresponds to the Boolean type in most programming languages and carries precisely one bit of run-time information.) : PropThe universe of propositions. `Prop ≡ Sort 0`. Every proposition is propositionally equal to either `True` or `False`.def Q2Presentation.Induction.ZeroEdgeCountGammaA {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)) (ramBool: BoolBool : TypeThe Boolean values, `true` and `false`. Logically speaking, this is equivalent to `Prop` (the type of propositions). The distinction is public important for programming: both propositions and their proofs are erased in the code generator, while `Bool` corresponds to the Boolean type in most programming languages and carries precisely one bit of run-time information.) : PropThe universe of propositions. `Prop ≡ Sort 0`. Every proposition is propositionally equal to either `True` or `False`.**The R4b count, candidate source** — THE zero-edge interim keep (manuscript `prop:zeroedge` l.4314–4369, `eq:recursionR4b` l.4342–4353 with the candidate functional `ι_A` of `prop:chainmap`; division-free): `2^{r+1}·Z_{Γ_A,λ}(B/C) = μ·(2^d·e_{Γ_A}(C) + G⁰·Σ_{χ∈𝒳_T} (2·n_{Γ_A,0}(Δ_{χ,κ}) − e_{Γ_A}(C)))` with `μ = muT` (the `eq:mumultiplicity` value), `G⁰ = baseGaussSign ram · 2^{d/2}` (the base Gauss sum of `q̄_λ`, `gaussSum_eq_sign_two_pow`-shaped), and `Δ_{χ,κ} = Delta Z χ` the U8 phase classes of ONE fixed bundle `Z`. `s_Γ` enters pre-absorbed as `2·n − e` (`eq:recursionR5a` = the proven `sGammaZ_eq`; the ι_Γ-sign is BY DEFINITION the splitting indicator). Deliberately NOT conditioned here on anything beyond the bundle — the `hne`/`ZeroEdge`/`ram`-pinning conditioning lives on the exits and on the (future, coordinated) keep `axiom … (hne) (Z) (ram) (hram) (hpin) : ZeroEdgeCountGammaA …`, which must also carry the base-identity pinning of `Z` until the transgression unit lands (U8 bundle note). Dissolution program (design §4.7): (i) P8 realization over the P6 engine (`constrainedGauss_count` + `prop:phaseidentity` via `completedSquare`/`addLinear` at the descended class, `eq:pointwiseconstrained` per lower map, then `μ`-multiplication and summation); (ii) `∂`-surjectivity = the `H²(M) = 0` content (U6-grade dévissage at the child); (iii) `lem:affinelifting` per source (candidate: ledger dévissage at `V`/`T`; local: citable numerics at `tChildKernel`); (iv) the `signChar ↔` splitting-indicator identification (P8, per P6 §3's contract, `δ_κ`-absorption per P6 §7.6 — `Delta` includes `δ_κ` exactly once); (v) the sign pinnings P6.4–P6.8 discharging `ram`. -
defdefined in Q2Presentation/Induction/ZeroEdgeCount.leancomplete
def Q2Presentation.Induction.ZeroEdgeCountGQ2 {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)) (ramBool: BoolBool : TypeThe Boolean values, `true` and `false`. Logically speaking, this is equivalent to `Prop` (the type of propositions). The distinction is public important for programming: both propositions and their proofs are erased in the code generator, while `Bool` corresponds to the Boolean type in most programming languages and carries precisely one bit of run-time information.) : PropThe universe of propositions. `Prop ≡ Sort 0`. Every proposition is propositionally equal to either `True` or `False`.def Q2Presentation.Induction.ZeroEdgeCountGQ2 {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)) (ramBool: BoolBool : TypeThe Boolean values, `true` and `false`. Logically speaking, this is equivalent to `Prop` (the type of propositions). The distinction is public important for programming: both propositions and their proofs are erased in the code generator, while `Bool` corresponds to the Boolean type in most programming languages and carries precisely one bit of run-time information.) : PropThe universe of propositions. `Prop ≡ Sort 0`. Every proposition is propositionally equal to either `True` or `False`.**The R4b count, local source** (manuscript `prop:zeroedge` mirror, with the local functional `ι_F = inv_{ℚ₂}`; same fixed bundle `Z` as the candidate clause — design §6.5). Same statement shape, provenance and dissolution program as `ZeroEdgeCountGammaA`. -
theoremdefined in Q2Presentation/Induction/ZeroEdgeCount.leancomplete
theorem Q2Presentation.Induction.sec7_zeroEdge_count_gammaA {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) (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)) (ramBool: BoolBool : TypeThe Boolean values, `true` and `false`. Logically speaking, this is equivalent to `Prop` (the type of propositions). The distinction is public important for programming: both propositions and their proofs are erased in the code generator, while `Bool` corresponds to the Boolean type in most programming languages and carries precisely one bit of run-time information.) (_hramQ2Presentation.Quadratic.gaussType (Q2Presentation.Induction.edgeHeadForm chief K lam hinv ⋯) = ram: Q2Presentation.Quadratic.gaussTypeQ2Presentation.Quadratic.gaussType.{u_1} {V : Type u_1} [AddCommGroup V] [Module (ZMod 2) V] (q : Q2Presentation.Quadratic.QuadF2 V) : BoolThe **Gauss type** of a quadratic form: the `Bool`-valued ramification flag read off from its zero count — `true` (plus type / ramified) iff the count is the plus value `baseZeroCount true d`, else `false` (minus type / unramified). This is the form's own Arf type made into the *unique* `ram` for which `# Q⁻¹(0) = baseZeroCount ram d` (uniqueness is `baseZeroCount_ne`; that this `ram` is *realized* is the Dickson zero count, `candidate_numZeros_eq_gaussType` / `q2_local_numZeros_eq_gaussType` in `DicksonCount.lean`). Tying the flag to the form this way is exactly the de-bugging of the old *free* `ram` argument.(Q2Presentation.Induction.edgeHeadFormQ2Presentation.Induction.edgeHeadForm {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) (hne : lam ≠ 0) : Q2Presentation.Quadratic.QuadF2 (Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K)**The descended head form `q̄_λ : QuadF2 (M/T)`** (`prop:simpleheaddet` at the tower, the U1-aligned carrier of the R4b Gauss data).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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)⋯) =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`. We use `a = b` as notation for `Eq a b`. A fundamental property of equality is that it is an equivalence relation. ``` variable (α : Type) (a b c d : α) variable (hab : a = b) (hcb : c = b) (hcd : c = d) example : a = d := Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd ``` Equality is much more than an equivalence relation, however. It has the important property that every assertion respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value. That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`. Example: ``` example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := Eq.subst h1 h2 example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := h1 ▸ h2 ``` The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`. For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality) Conventions for notations in identifiers: * The recommended spelling of `=` in identifiers is `eq`.ramBool) (hkeepQ2Presentation.Induction.ZeroEdgeCountGammaA chief K lam hinv Z ram: Q2Presentation.Induction.ZeroEdgeCountGammaAQ2Presentation.Induction.ZeroEdgeCountGammaA {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) (Z : Q2Presentation.Induction.ZeroEdgeDescentData chief K lam hinv) (ram : Bool) : Prop**The R4b count, candidate source** — THE zero-edge interim keep (manuscript `prop:zeroedge` l.4314–4369, `eq:recursionR4b` l.4342–4353 with the candidate functional `ι_A` of `prop:chainmap`; division-free): `2^{r+1}·Z_{Γ_A,λ}(B/C) = μ·(2^d·e_{Γ_A}(C) + G⁰·Σ_{χ∈𝒳_T} (2·n_{Γ_A,0}(Δ_{χ,κ}) − e_{Γ_A}(C)))` with `μ = muT` (the `eq:mumultiplicity` value), `G⁰ = baseGaussSign ram · 2^{d/2}` (the base Gauss sum of `q̄_λ`, `gaussSum_eq_sign_two_pow`-shaped), and `Δ_{χ,κ} = Delta Z χ` the U8 phase classes of ONE fixed bundle `Z`. `s_Γ` enters pre-absorbed as `2·n − e` (`eq:recursionR5a` = the proven `sGammaZ_eq`; the ι_Γ-sign is BY DEFINITION the splitting indicator). Deliberately NOT conditioned here on anything beyond the bundle — the `hne`/`ZeroEdge`/`ram`-pinning conditioning lives on the exits and on the (future, coordinated) keep `axiom … (hne) (Z) (ram) (hram) (hpin) : ZeroEdgeCountGammaA …`, which must also carry the base-identity pinning of `Z` until the transgression unit lands (U8 bundle note). Dissolution program (design §4.7): (i) P8 realization over the P6 engine (`constrainedGauss_count` + `prop:phaseidentity` via `completedSquare`/`addLinear` at the descended class, `eq:pointwiseconstrained` per lower map, then `μ`-multiplication and summation); (ii) `∂`-surjectivity = the `H²(M) = 0` content (U6-grade dévissage at the child); (iii) `lem:affinelifting` per source (candidate: ledger dévissage at `V`/`T`; local: citable numerics at `tChildKernel`); (iv) the `signChar ↔` splitting-indicator identification (P8, per P6 §3's contract, `δ_κ`-absorption per P6 §7.6 — `Delta` includes `δ_κ` exactly once); (v) the sign pinnings P6.4–P6.8 discharging `ram`.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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 hinvramBool) : 2 ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `^` in identifiers is `pow`.(HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `+` in identifiers is `add`.Q2Presentation.Induction.rTQ2Presentation.Induction.rT {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : ℕ`r = dim 𝒳_T`.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor+HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `+` in identifiers is `add`.1)HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `+` in identifiers is `add`.*HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.↑(Q2Presentation.Induction.ZcountQ2Presentation.Induction.Zcount {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) : ℕ**The unrestricted top count `Z_{Γ,λ}(B/C)`**: framed maps to `B` whose composite to `C` is onto ("without imposing generation in `B`", l.4270) and which weakly lift through `p_λ`.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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.boundaryPackage_GammaAQ2Presentation.boundaryPackage_GammaA : Q2Presentation.BoundaryPackage Q2Presentation.GammaA**The candidate boundary package** (manuscript Prop 3.14, `prop:compatiblemarking`; plan Turn 4 §6). The Stage-C data of `Γ_A`: the common tame quotient `gammaTameMap`, the maximal pro-`2` quotient `p : Γ_A ⟶ Π`, and the common unramified character `ν = gammaTameMap ≫ ν_t`, through which both factor.) =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`. We use `a = b` as notation for `Eq a b`. A fundamental property of equality is that it is an equivalence relation. ``` variable (α : Type) (a b c d : α) variable (hab : a = b) (hcb : c = b) (hcd : c = d) example : a = d := Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd ``` Equality is much more than an equivalence relation, however. It has the important property that every assertion respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value. That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`. Example: ``` example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := Eq.subst h1 h2 example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := h1 ▸ h2 ``` The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`. For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality) Conventions for notations in identifiers: * The recommended spelling of `=` in identifiers is `eq`.↑(Q2Presentation.Induction.muTQ2Presentation.Induction.muT {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : ℕ**The affine-lifting multiplicity VALUE** `μ = |B¹(V)|·|Z¹(T)| = 2^d · 2^{2·dimT + r}` (`eq:mumultiplicity`; the per-source realization of this count is the §4.5–4.6 lane, not U2).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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`.(HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `+` in identifiers is `add`.2 ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `^` in identifiers is `pow`.Q2Presentation.Induction.dimVQ2Presentation.Induction.dimV {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : ℕ`d = dim V` (the head `V = M/T`).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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`.↑(Q2Presentation.Induction.eCQ2Presentation.Induction.eC {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) : ℕ**The C-child count** (the `e_Γ(C')` of R4a/R4b): boundary-framed surjections onto the C-child pair (P3-U2's `cChild`).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactorQ2Presentation.boundaryPackage_GammaAQ2Presentation.boundaryPackage_GammaA : Q2Presentation.BoundaryPackage Q2Presentation.GammaA**The candidate boundary package** (manuscript Prop 3.14, `prop:compatiblemarking`; plan Turn 4 §6). The Stage-C data of `Γ_A`: the common tame quotient `gammaTameMap`, the maximal pro-`2` quotient `p : Γ_A ⟶ Π`, and the common unramified character `ν = gammaTameMap ≫ ν_t`, through which both factor.) +HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `+` in identifiers is `add`.Q2Presentation.Quadratic.baseGaussSignQ2Presentation.Quadratic.baseGaussSign (ramified : Bool) : ℤThe **base Gauss sign** (`prop:candidatezero`/`prop:localzero`): `+1` (plus type) in the ramified case, `-1` (minus type) in the unramified case.ramBool*HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.2 ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `^` in identifiers is `pow`.(HDiv.hDiv.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HDiv α β γ] : α → β → γ`a / b` computes the result of dividing `a` by `b`. The meaning of this notation is type-dependent. * For most types like `Nat`, `Int`, `Rat`, `Real`, `a / 0` is defined to be `0`. * For `Nat`, `a / b` rounds downwards. * For `Int`, `a / b` rounds downwards if `b` is positive or upwards if `b` is negative. It is implemented as `Int.ediv`, the unique function satisfying `a % b + b * (a / b) = a` and `0 ≤ a % b < natAbs b` for `b ≠ 0`. Other rounding conventions are available using the functions `Int.fdiv` (floor rounding) and `Int.tdiv` (truncation rounding). * For `Float`, `a / 0` follows the IEEE 754 semantics for division, usually resulting in `inf` or `nan`. Conventions for notations in identifiers: * The recommended spelling of `/` in identifiers is `div`.Q2Presentation.Induction.dimVQ2Presentation.Induction.dimV {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : ℕ`d = dim V` (the head `V = M/T`).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor/HDiv.hDiv.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HDiv α β γ] : α → β → γ`a / b` computes the result of dividing `a` by `b`. The meaning of this notation is type-dependent. * For most types like `Nat`, `Int`, `Rat`, `Real`, `a / 0` is defined to be `0`. * For `Nat`, `a / b` rounds downwards. * For `Int`, `a / b` rounds downwards if `b` is positive or upwards if `b` is negative. It is implemented as `Int.ediv`, the unique function satisfying `a % b + b * (a / b) = a` and `0 ≤ a % b < natAbs b` for `b ≠ 0`. Other rounding conventions are available using the functions `Int.fdiv` (floor rounding) and `Int.tdiv` (truncation rounding). * For `Float`, `a / 0` follows the IEEE 754 semantics for division, usually resulting in `inf` or `nan`. Conventions for notations in identifiers: * The recommended spelling of `/` in identifiers is `div`.2)HDiv.hDiv.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HDiv α β γ] : α → β → γ`a / b` computes the result of dividing `a` by `b`. The meaning of this notation is type-dependent. * For most types like `Nat`, `Int`, `Rat`, `Real`, `a / 0` is defined to be `0`. * For `Nat`, `a / b` rounds downwards. * For `Int`, `a / b` rounds downwards if `b` is positive or upwards if `b` is negative. It is implemented as `Int.ediv`, the unique function satisfying `a % b + b * (a / b) = a` and `0 ≤ a % b < natAbs b` for `b ≠ 0`. Other rounding conventions are available using the functions `Int.fdiv` (floor rounding) and `Int.tdiv` (truncation rounding). * For `Float`, `a / 0` follows the IEEE 754 semantics for division, usually resulting in `inf` or `nan`. Conventions for notations in identifiers: * The recommended spelling of `/` in identifiers is `div`.*HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.∑ chi↥(Q2Presentation.Induction.XT chief K), (HSub.hSub.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HSub α β γ] : α → β → γ`a - b` computes the difference of `a` and `b`. The meaning of this notation is type-dependent. * For natural numbers, this operator saturates at 0: `a - b = 0` when `a ≤ b`. Conventions for notations in identifiers: * The recommended spelling of `-` in identifiers is `sub` (when used as a binary operator).2 *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.↑(Q2Presentation.Induction.phaseCountQ2Presentation.Induction.phaseCount {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (zeta : (Q2Presentation.Induction.cChild chief K).fst.Y → (Q2Presentation.Induction.cChild chief K).fst.Y → ZMod 2) (hz1 : ∀ (y : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta 1 y = 0) (hz2 : ∀ (y : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta y 1 = 0) (hzc : ∀ (a b c : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta a b + zeta (a * b) c = zeta b c + zeta a (b * c)) {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) : ℕ**`n_{Γ,0}(ζ)`** (l.4377–4379): the number of lower exact-image maps `ρ ∈ X_Γ(C)` for which the phase cover is unobstructed, i.e. which admit a weak (no image condition) framed lift through `p_ζ`. The child transport of P3-§4.7's `phaseChildTransport` slot is W7a's `cocycleChildEquiv`, absorbed into `cocycleCoverLiftHom`.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor(Q2Presentation.Induction.DeltaQ2Presentation.Induction.Delta {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) (Z : Q2Presentation.Induction.ZeroEdgeDescentData chief K lam hinv) (chi : ↥(Q2Presentation.Induction.XT chief K)) : (Q2Presentation.Induction.cChild chief K).fst.Y → (Q2Presentation.Induction.cChild chief K).fst.Y → ZMod 2**The phase class `Δ_{χ,κ}` on the C-child carrier** — `DeltaC` transported along the canonical collapse `B/M' ≃* C` (`cChildCollapse`); the cocycle P7's `phaseCount`/`phaseCoverPair` consume at `ζ := Delta Z chi` (design §4.7; per-cocycle discipline, no class-invariance asserted).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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 hinvchi↥(Q2Presentation.Induction.XT chief K)) ⋯ ⋯ ⋯ Q2Presentation.boundaryPackage_GammaAQ2Presentation.boundaryPackage_GammaA : Q2Presentation.BoundaryPackage Q2Presentation.GammaA**The candidate boundary package** (manuscript Prop 3.14, `prop:compatiblemarking`; plan Turn 4 §6). The Stage-C data of `Γ_A`: the common tame quotient `gammaTameMap`, the maximal pro-`2` quotient `p : Γ_A ⟶ Π`, and the common unramified character `ν = gammaTameMap ≫ ν_t`, through which both factor.) -HSub.hSub.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HSub α β γ] : α → β → γ`a - b` computes the difference of `a` and `b`. The meaning of this notation is type-dependent. * For natural numbers, this operator saturates at 0: `a - b = 0` when `a ≤ b`. Conventions for notations in identifiers: * The recommended spelling of `-` in identifiers is `sub` (when used as a binary operator).↑(Q2Presentation.Induction.eCQ2Presentation.Induction.eC {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) : ℕ**The C-child count** (the `e_Γ(C')` of R4a/R4b): boundary-framed surjections onto the C-child pair (P3-U2's `cChild`).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactorQ2Presentation.boundaryPackage_GammaAQ2Presentation.boundaryPackage_GammaA : Q2Presentation.BoundaryPackage Q2Presentation.GammaA**The candidate boundary package** (manuscript Prop 3.14, `prop:compatiblemarking`; plan Turn 4 §6). The Stage-C data of `Γ_A`: the common tame quotient `gammaTameMap`, the maximal pro-`2` quotient `p : Γ_A ⟶ Π`, and the common unramified character `ν = gammaTameMap ≫ ν_t`, through which both factor.))HSub.hSub.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HSub α β γ] : α → β → γ`a - b` computes the difference of `a` and `b`. The meaning of this notation is type-dependent. * For natural numbers, this operator saturates at 0: `a - b = 0` when `a ≤ b`. Conventions for notations in identifiers: * The recommended spelling of `-` in identifiers is `sub` (when used as a binary operator).)HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `+` in identifiers is `add`.theorem Q2Presentation.Induction.sec7_zeroEdge_count_gammaA {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) (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)) (ramBool: BoolBool : TypeThe Boolean values, `true` and `false`. Logically speaking, this is equivalent to `Prop` (the type of propositions). The distinction is public important for programming: both propositions and their proofs are erased in the code generator, while `Bool` corresponds to the Boolean type in most programming languages and carries precisely one bit of run-time information.) (_hramQ2Presentation.Quadratic.gaussType (Q2Presentation.Induction.edgeHeadForm chief K lam hinv ⋯) = ram: Q2Presentation.Quadratic.gaussTypeQ2Presentation.Quadratic.gaussType.{u_1} {V : Type u_1} [AddCommGroup V] [Module (ZMod 2) V] (q : Q2Presentation.Quadratic.QuadF2 V) : BoolThe **Gauss type** of a quadratic form: the `Bool`-valued ramification flag read off from its zero count — `true` (plus type / ramified) iff the count is the plus value `baseZeroCount true d`, else `false` (minus type / unramified). This is the form's own Arf type made into the *unique* `ram` for which `# Q⁻¹(0) = baseZeroCount ram d` (uniqueness is `baseZeroCount_ne`; that this `ram` is *realized* is the Dickson zero count, `candidate_numZeros_eq_gaussType` / `q2_local_numZeros_eq_gaussType` in `DicksonCount.lean`). Tying the flag to the form this way is exactly the de-bugging of the old *free* `ram` argument.(Q2Presentation.Induction.edgeHeadFormQ2Presentation.Induction.edgeHeadForm {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) (hne : lam ≠ 0) : Q2Presentation.Quadratic.QuadF2 (Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K)**The descended head form `q̄_λ : QuadF2 (M/T)`** (`prop:simpleheaddet` at the tower, the U1-aligned carrier of the R4b Gauss data).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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)⋯) =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`. We use `a = b` as notation for `Eq a b`. A fundamental property of equality is that it is an equivalence relation. ``` variable (α : Type) (a b c d : α) variable (hab : a = b) (hcb : c = b) (hcd : c = d) example : a = d := Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd ``` Equality is much more than an equivalence relation, however. It has the important property that every assertion respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value. That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`. Example: ``` example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := Eq.subst h1 h2 example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := h1 ▸ h2 ``` The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`. For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality) Conventions for notations in identifiers: * The recommended spelling of `=` in identifiers is `eq`.ramBool) (hkeepQ2Presentation.Induction.ZeroEdgeCountGammaA chief K lam hinv Z ram: Q2Presentation.Induction.ZeroEdgeCountGammaAQ2Presentation.Induction.ZeroEdgeCountGammaA {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) (Z : Q2Presentation.Induction.ZeroEdgeDescentData chief K lam hinv) (ram : Bool) : Prop**The R4b count, candidate source** — THE zero-edge interim keep (manuscript `prop:zeroedge` l.4314–4369, `eq:recursionR4b` l.4342–4353 with the candidate functional `ι_A` of `prop:chainmap`; division-free): `2^{r+1}·Z_{Γ_A,λ}(B/C) = μ·(2^d·e_{Γ_A}(C) + G⁰·Σ_{χ∈𝒳_T} (2·n_{Γ_A,0}(Δ_{χ,κ}) − e_{Γ_A}(C)))` with `μ = muT` (the `eq:mumultiplicity` value), `G⁰ = baseGaussSign ram · 2^{d/2}` (the base Gauss sum of `q̄_λ`, `gaussSum_eq_sign_two_pow`-shaped), and `Δ_{χ,κ} = Delta Z χ` the U8 phase classes of ONE fixed bundle `Z`. `s_Γ` enters pre-absorbed as `2·n − e` (`eq:recursionR5a` = the proven `sGammaZ_eq`; the ι_Γ-sign is BY DEFINITION the splitting indicator). Deliberately NOT conditioned here on anything beyond the bundle — the `hne`/`ZeroEdge`/`ram`-pinning conditioning lives on the exits and on the (future, coordinated) keep `axiom … (hne) (Z) (ram) (hram) (hpin) : ZeroEdgeCountGammaA …`, which must also carry the base-identity pinning of `Z` until the transgression unit lands (U8 bundle note). Dissolution program (design §4.7): (i) P8 realization over the P6 engine (`constrainedGauss_count` + `prop:phaseidentity` via `completedSquare`/`addLinear` at the descended class, `eq:pointwiseconstrained` per lower map, then `μ`-multiplication and summation); (ii) `∂`-surjectivity = the `H²(M) = 0` content (U6-grade dévissage at the child); (iii) `lem:affinelifting` per source (candidate: ledger dévissage at `V`/`T`; local: citable numerics at `tChildKernel`); (iv) the `signChar ↔` splitting-indicator identification (P8, per P6 §3's contract, `δ_κ`-absorption per P6 §7.6 — `Delta` includes `δ_κ` exactly once); (v) the sign pinnings P6.4–P6.8 discharging `ram`.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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 hinvramBool) : 2 ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `^` in identifiers is `pow`.(HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `+` in identifiers is `add`.Q2Presentation.Induction.rTQ2Presentation.Induction.rT {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : ℕ`r = dim 𝒳_T`.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor+HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `+` in identifiers is `add`.1)HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `+` in identifiers is `add`.*HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.↑(Q2Presentation.Induction.ZcountQ2Presentation.Induction.Zcount {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) : ℕ**The unrestricted top count `Z_{Γ,λ}(B/C)`**: framed maps to `B` whose composite to `C` is onto ("without imposing generation in `B`", l.4270) and which weakly lift through `p_λ`.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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.boundaryPackage_GammaAQ2Presentation.boundaryPackage_GammaA : Q2Presentation.BoundaryPackage Q2Presentation.GammaA**The candidate boundary package** (manuscript Prop 3.14, `prop:compatiblemarking`; plan Turn 4 §6). The Stage-C data of `Γ_A`: the common tame quotient `gammaTameMap`, the maximal pro-`2` quotient `p : Γ_A ⟶ Π`, and the common unramified character `ν = gammaTameMap ≫ ν_t`, through which both factor.) =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`. We use `a = b` as notation for `Eq a b`. A fundamental property of equality is that it is an equivalence relation. ``` variable (α : Type) (a b c d : α) variable (hab : a = b) (hcb : c = b) (hcd : c = d) example : a = d := Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd ``` Equality is much more than an equivalence relation, however. It has the important property that every assertion respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value. That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`. Example: ``` example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := Eq.subst h1 h2 example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := h1 ▸ h2 ``` The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`. For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality) Conventions for notations in identifiers: * The recommended spelling of `=` in identifiers is `eq`.↑(Q2Presentation.Induction.muTQ2Presentation.Induction.muT {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : ℕ**The affine-lifting multiplicity VALUE** `μ = |B¹(V)|·|Z¹(T)| = 2^d · 2^{2·dimT + r}` (`eq:mumultiplicity`; the per-source realization of this count is the §4.5–4.6 lane, not U2).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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`.(HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `+` in identifiers is `add`.2 ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `^` in identifiers is `pow`.Q2Presentation.Induction.dimVQ2Presentation.Induction.dimV {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : ℕ`d = dim V` (the head `V = M/T`).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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`.↑(Q2Presentation.Induction.eCQ2Presentation.Induction.eC {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) : ℕ**The C-child count** (the `e_Γ(C')` of R4a/R4b): boundary-framed surjections onto the C-child pair (P3-U2's `cChild`).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactorQ2Presentation.boundaryPackage_GammaAQ2Presentation.boundaryPackage_GammaA : Q2Presentation.BoundaryPackage Q2Presentation.GammaA**The candidate boundary package** (manuscript Prop 3.14, `prop:compatiblemarking`; plan Turn 4 §6). The Stage-C data of `Γ_A`: the common tame quotient `gammaTameMap`, the maximal pro-`2` quotient `p : Γ_A ⟶ Π`, and the common unramified character `ν = gammaTameMap ≫ ν_t`, through which both factor.) +HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `+` in identifiers is `add`.Q2Presentation.Quadratic.baseGaussSignQ2Presentation.Quadratic.baseGaussSign (ramified : Bool) : ℤThe **base Gauss sign** (`prop:candidatezero`/`prop:localzero`): `+1` (plus type) in the ramified case, `-1` (minus type) in the unramified case.ramBool*HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.2 ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `^` in identifiers is `pow`.(HDiv.hDiv.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HDiv α β γ] : α → β → γ`a / b` computes the result of dividing `a` by `b`. The meaning of this notation is type-dependent. * For most types like `Nat`, `Int`, `Rat`, `Real`, `a / 0` is defined to be `0`. * For `Nat`, `a / b` rounds downwards. * For `Int`, `a / b` rounds downwards if `b` is positive or upwards if `b` is negative. It is implemented as `Int.ediv`, the unique function satisfying `a % b + b * (a / b) = a` and `0 ≤ a % b < natAbs b` for `b ≠ 0`. Other rounding conventions are available using the functions `Int.fdiv` (floor rounding) and `Int.tdiv` (truncation rounding). * For `Float`, `a / 0` follows the IEEE 754 semantics for division, usually resulting in `inf` or `nan`. Conventions for notations in identifiers: * The recommended spelling of `/` in identifiers is `div`.Q2Presentation.Induction.dimVQ2Presentation.Induction.dimV {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : ℕ`d = dim V` (the head `V = M/T`).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor/HDiv.hDiv.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HDiv α β γ] : α → β → γ`a / b` computes the result of dividing `a` by `b`. The meaning of this notation is type-dependent. * For most types like `Nat`, `Int`, `Rat`, `Real`, `a / 0` is defined to be `0`. * For `Nat`, `a / b` rounds downwards. * For `Int`, `a / b` rounds downwards if `b` is positive or upwards if `b` is negative. It is implemented as `Int.ediv`, the unique function satisfying `a % b + b * (a / b) = a` and `0 ≤ a % b < natAbs b` for `b ≠ 0`. Other rounding conventions are available using the functions `Int.fdiv` (floor rounding) and `Int.tdiv` (truncation rounding). * For `Float`, `a / 0` follows the IEEE 754 semantics for division, usually resulting in `inf` or `nan`. Conventions for notations in identifiers: * The recommended spelling of `/` in identifiers is `div`.2)HDiv.hDiv.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HDiv α β γ] : α → β → γ`a / b` computes the result of dividing `a` by `b`. The meaning of this notation is type-dependent. * For most types like `Nat`, `Int`, `Rat`, `Real`, `a / 0` is defined to be `0`. * For `Nat`, `a / b` rounds downwards. * For `Int`, `a / b` rounds downwards if `b` is positive or upwards if `b` is negative. It is implemented as `Int.ediv`, the unique function satisfying `a % b + b * (a / b) = a` and `0 ≤ a % b < natAbs b` for `b ≠ 0`. Other rounding conventions are available using the functions `Int.fdiv` (floor rounding) and `Int.tdiv` (truncation rounding). * For `Float`, `a / 0` follows the IEEE 754 semantics for division, usually resulting in `inf` or `nan`. Conventions for notations in identifiers: * The recommended spelling of `/` in identifiers is `div`.*HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.∑ chi↥(Q2Presentation.Induction.XT chief K), (HSub.hSub.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HSub α β γ] : α → β → γ`a - b` computes the difference of `a` and `b`. The meaning of this notation is type-dependent. * For natural numbers, this operator saturates at 0: `a - b = 0` when `a ≤ b`. Conventions for notations in identifiers: * The recommended spelling of `-` in identifiers is `sub` (when used as a binary operator).2 *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.↑(Q2Presentation.Induction.phaseCountQ2Presentation.Induction.phaseCount {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (zeta : (Q2Presentation.Induction.cChild chief K).fst.Y → (Q2Presentation.Induction.cChild chief K).fst.Y → ZMod 2) (hz1 : ∀ (y : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta 1 y = 0) (hz2 : ∀ (y : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta y 1 = 0) (hzc : ∀ (a b c : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta a b + zeta (a * b) c = zeta b c + zeta a (b * c)) {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) : ℕ**`n_{Γ,0}(ζ)`** (l.4377–4379): the number of lower exact-image maps `ρ ∈ X_Γ(C)` for which the phase cover is unobstructed, i.e. which admit a weak (no image condition) framed lift through `p_ζ`. The child transport of P3-§4.7's `phaseChildTransport` slot is W7a's `cocycleChildEquiv`, absorbed into `cocycleCoverLiftHom`.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor(Q2Presentation.Induction.DeltaQ2Presentation.Induction.Delta {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) (Z : Q2Presentation.Induction.ZeroEdgeDescentData chief K lam hinv) (chi : ↥(Q2Presentation.Induction.XT chief K)) : (Q2Presentation.Induction.cChild chief K).fst.Y → (Q2Presentation.Induction.cChild chief K).fst.Y → ZMod 2**The phase class `Δ_{χ,κ}` on the C-child carrier** — `DeltaC` transported along the canonical collapse `B/M' ≃* C` (`cChildCollapse`); the cocycle P7's `phaseCount`/`phaseCoverPair` consume at `ζ := Delta Z chi` (design §4.7; per-cocycle discipline, no class-invariance asserted).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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 hinvchi↥(Q2Presentation.Induction.XT chief K)) ⋯ ⋯ ⋯ Q2Presentation.boundaryPackage_GammaAQ2Presentation.boundaryPackage_GammaA : Q2Presentation.BoundaryPackage Q2Presentation.GammaA**The candidate boundary package** (manuscript Prop 3.14, `prop:compatiblemarking`; plan Turn 4 §6). The Stage-C data of `Γ_A`: the common tame quotient `gammaTameMap`, the maximal pro-`2` quotient `p : Γ_A ⟶ Π`, and the common unramified character `ν = gammaTameMap ≫ ν_t`, through which both factor.) -HSub.hSub.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HSub α β γ] : α → β → γ`a - b` computes the difference of `a` and `b`. The meaning of this notation is type-dependent. * For natural numbers, this operator saturates at 0: `a - b = 0` when `a ≤ b`. Conventions for notations in identifiers: * The recommended spelling of `-` in identifiers is `sub` (when used as a binary operator).↑(Q2Presentation.Induction.eCQ2Presentation.Induction.eC {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) : ℕ**The C-child count** (the `e_Γ(C')` of R4a/R4b): boundary-framed surjections onto the C-child pair (P3-U2's `cChild`).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactorQ2Presentation.boundaryPackage_GammaAQ2Presentation.boundaryPackage_GammaA : Q2Presentation.BoundaryPackage Q2Presentation.GammaA**The candidate boundary package** (manuscript Prop 3.14, `prop:compatiblemarking`; plan Turn 4 §6). The Stage-C data of `Γ_A`: the common tame quotient `gammaTameMap`, the maximal pro-`2` quotient `p : Γ_A ⟶ Π`, and the common unramified character `ν = gammaTameMap ≫ ν_t`, through which both factor.))HSub.hSub.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HSub α β γ] : α → β → γ`a - b` computes the difference of `a` and `b`. The meaning of this notation is type-dependent. * For natural numbers, this operator saturates at 0: `a - b = 0` when `a ≤ b`. Conventions for notations in identifiers: * The recommended spelling of `-` in identifiers is `sub` (when used as a binary operator).)HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `+` in identifiers is `add`.**R4b, candidate source** (`prop:zeroedge`, division-free ℤ-spelling): on the zero-edge branch, `2^{r+1}·Z_{Γ_A,λ}(B/C)` equals the `μ·(2^d·e_C + G⁰·Σ_χ(2·n − e_C))` closed form. The branch hypotheses pin the R4b case (design §4.7 exit signature): `_hne` mirrors U7's spelling (the bundle already carries `Z.hne`; consumed by P8's `Classical.byCases` split via `Z.zeroEdge`), and `_hram` is the P6 pinning slot tying the `ram`-flag to the target-side head form (`gaussType q̄_λ = ram`, discharged by P6.4–P6.8 through `candidate_numZeros_eq_gaussType`-grade theorems at `[Nontrivial V]` — supplied by `edgeHead_nontrivial`). The count clause enters as an explicit HYPOTHESIS (`ZeroEdgeCountGammaA`). -
theoremdefined in Q2Presentation/Induction/ZeroEdgeCount.leancomplete
theorem Q2Presentation.Induction.sec7_zeroEdge_count_gq2 {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) (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)) (ramBool: BoolBool : TypeThe Boolean values, `true` and `false`. Logically speaking, this is equivalent to `Prop` (the type of propositions). The distinction is public important for programming: both propositions and their proofs are erased in the code generator, while `Bool` corresponds to the Boolean type in most programming languages and carries precisely one bit of run-time information.) (_hramQ2Presentation.Quadratic.gaussType (Q2Presentation.Induction.edgeHeadForm chief K lam hinv ⋯) = ram: Q2Presentation.Quadratic.gaussTypeQ2Presentation.Quadratic.gaussType.{u_1} {V : Type u_1} [AddCommGroup V] [Module (ZMod 2) V] (q : Q2Presentation.Quadratic.QuadF2 V) : BoolThe **Gauss type** of a quadratic form: the `Bool`-valued ramification flag read off from its zero count — `true` (plus type / ramified) iff the count is the plus value `baseZeroCount true d`, else `false` (minus type / unramified). This is the form's own Arf type made into the *unique* `ram` for which `# Q⁻¹(0) = baseZeroCount ram d` (uniqueness is `baseZeroCount_ne`; that this `ram` is *realized* is the Dickson zero count, `candidate_numZeros_eq_gaussType` / `q2_local_numZeros_eq_gaussType` in `DicksonCount.lean`). Tying the flag to the form this way is exactly the de-bugging of the old *free* `ram` argument.(Q2Presentation.Induction.edgeHeadFormQ2Presentation.Induction.edgeHeadForm {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) (hne : lam ≠ 0) : Q2Presentation.Quadratic.QuadF2 (Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K)**The descended head form `q̄_λ : QuadF2 (M/T)`** (`prop:simpleheaddet` at the tower, the U1-aligned carrier of the R4b Gauss data).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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)⋯) =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`. We use `a = b` as notation for `Eq a b`. A fundamental property of equality is that it is an equivalence relation. ``` variable (α : Type) (a b c d : α) variable (hab : a = b) (hcb : c = b) (hcd : c = d) example : a = d := Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd ``` Equality is much more than an equivalence relation, however. It has the important property that every assertion respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value. That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`. Example: ``` example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := Eq.subst h1 h2 example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := h1 ▸ h2 ``` The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`. For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality) Conventions for notations in identifiers: * The recommended spelling of `=` in identifiers is `eq`.ramBool) (hkeepQ2Presentation.Induction.ZeroEdgeCountGQ2 chief K lam hinv Z ram: Q2Presentation.Induction.ZeroEdgeCountGQ2Q2Presentation.Induction.ZeroEdgeCountGQ2 {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) (Z : Q2Presentation.Induction.ZeroEdgeDescentData chief K lam hinv) (ram : Bool) : Prop**The R4b count, local source** (manuscript `prop:zeroedge` mirror, with the local functional `ι_F = inv_{ℚ₂}`; same fixed bundle `Z` as the candidate clause — design §6.5). Same statement shape, provenance and dissolution program as `ZeroEdgeCountGammaA`.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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 hinvramBool) : 2 ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `^` in identifiers is `pow`.(HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `+` in identifiers is `add`.Q2Presentation.Induction.rTQ2Presentation.Induction.rT {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : ℕ`r = dim 𝒳_T`.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor+HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `+` in identifiers is `add`.1)HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `+` in identifiers is `add`.*HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.↑(Q2Presentation.Induction.ZcountQ2Presentation.Induction.Zcount {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) : ℕ**The unrestricted top count `Z_{Γ,λ}(B/C)`**: framed maps to `B` whose composite to `C` is onto ("without imposing generation in `B`", l.4270) and which weakly lift through `p_λ`.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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.boundaryPackage_GQ2Q2Presentation.boundaryPackage_GQ2 : Q2Presentation.BoundaryPackage Q2Presentation.GQ2Profinite**The local boundary package** `boundaryPackage_GQ2 : BoundaryPackage G_{ℚ₂}` (manuscript Prop 3.14 `prop:compatiblemarking` for `Γ = G_{ℚ₂}`; plan Turn 4 §6), the `G_{ℚ₂}`-side instance of the uniform Stage-C boundary datum. * `tameMap`/`tame_surj`/`tame_nu` — the local tame quotient `G_{ℚ₂} ↠ T_A` with unramified marking `ν_loc`, from the axiom `gq2_tame_quotient` (Prop 3.2 + the local half of Prop `compatiblemarking`); * `pro2Map`/`pro2_surj`/`pro2_nu` — the local maximal pro-`2` quotient `G_{ℚ₂} ↠ Π` with the *same* unramified marking `ν_loc`, proved from the fully marked Labute comparison `labute_GQ2_maxPro2_marked` (`pro2Map_loc`, `pro2Map_loc_surjective`, `pro2Map_loc_nu`); * `nu := ν_loc` — the common unramified character through which both factor.) =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`. We use `a = b` as notation for `Eq a b`. A fundamental property of equality is that it is an equivalence relation. ``` variable (α : Type) (a b c d : α) variable (hab : a = b) (hcb : c = b) (hcd : c = d) example : a = d := Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd ``` Equality is much more than an equivalence relation, however. It has the important property that every assertion respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value. That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`. Example: ``` example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := Eq.subst h1 h2 example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := h1 ▸ h2 ``` The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`. For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality) Conventions for notations in identifiers: * The recommended spelling of `=` in identifiers is `eq`.↑(Q2Presentation.Induction.muTQ2Presentation.Induction.muT {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : ℕ**The affine-lifting multiplicity VALUE** `μ = |B¹(V)|·|Z¹(T)| = 2^d · 2^{2·dimT + r}` (`eq:mumultiplicity`; the per-source realization of this count is the §4.5–4.6 lane, not U2).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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`.(HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `+` in identifiers is `add`.2 ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `^` in identifiers is `pow`.Q2Presentation.Induction.dimVQ2Presentation.Induction.dimV {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : ℕ`d = dim V` (the head `V = M/T`).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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`.↑(Q2Presentation.Induction.eCQ2Presentation.Induction.eC {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) : ℕ**The C-child count** (the `e_Γ(C')` of R4a/R4b): boundary-framed surjections onto the C-child pair (P3-U2's `cChild`).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactorQ2Presentation.boundaryPackage_GQ2Q2Presentation.boundaryPackage_GQ2 : Q2Presentation.BoundaryPackage Q2Presentation.GQ2Profinite**The local boundary package** `boundaryPackage_GQ2 : BoundaryPackage G_{ℚ₂}` (manuscript Prop 3.14 `prop:compatiblemarking` for `Γ = G_{ℚ₂}`; plan Turn 4 §6), the `G_{ℚ₂}`-side instance of the uniform Stage-C boundary datum. * `tameMap`/`tame_surj`/`tame_nu` — the local tame quotient `G_{ℚ₂} ↠ T_A` with unramified marking `ν_loc`, from the axiom `gq2_tame_quotient` (Prop 3.2 + the local half of Prop `compatiblemarking`); * `pro2Map`/`pro2_surj`/`pro2_nu` — the local maximal pro-`2` quotient `G_{ℚ₂} ↠ Π` with the *same* unramified marking `ν_loc`, proved from the fully marked Labute comparison `labute_GQ2_maxPro2_marked` (`pro2Map_loc`, `pro2Map_loc_surjective`, `pro2Map_loc_nu`); * `nu := ν_loc` — the common unramified character through which both factor.) +HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `+` in identifiers is `add`.Q2Presentation.Quadratic.baseGaussSignQ2Presentation.Quadratic.baseGaussSign (ramified : Bool) : ℤThe **base Gauss sign** (`prop:candidatezero`/`prop:localzero`): `+1` (plus type) in the ramified case, `-1` (minus type) in the unramified case.ramBool*HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.2 ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `^` in identifiers is `pow`.(HDiv.hDiv.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HDiv α β γ] : α → β → γ`a / b` computes the result of dividing `a` by `b`. The meaning of this notation is type-dependent. * For most types like `Nat`, `Int`, `Rat`, `Real`, `a / 0` is defined to be `0`. * For `Nat`, `a / b` rounds downwards. * For `Int`, `a / b` rounds downwards if `b` is positive or upwards if `b` is negative. It is implemented as `Int.ediv`, the unique function satisfying `a % b + b * (a / b) = a` and `0 ≤ a % b < natAbs b` for `b ≠ 0`. Other rounding conventions are available using the functions `Int.fdiv` (floor rounding) and `Int.tdiv` (truncation rounding). * For `Float`, `a / 0` follows the IEEE 754 semantics for division, usually resulting in `inf` or `nan`. Conventions for notations in identifiers: * The recommended spelling of `/` in identifiers is `div`.Q2Presentation.Induction.dimVQ2Presentation.Induction.dimV {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : ℕ`d = dim V` (the head `V = M/T`).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor/HDiv.hDiv.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HDiv α β γ] : α → β → γ`a / b` computes the result of dividing `a` by `b`. The meaning of this notation is type-dependent. * For most types like `Nat`, `Int`, `Rat`, `Real`, `a / 0` is defined to be `0`. * For `Nat`, `a / b` rounds downwards. * For `Int`, `a / b` rounds downwards if `b` is positive or upwards if `b` is negative. It is implemented as `Int.ediv`, the unique function satisfying `a % b + b * (a / b) = a` and `0 ≤ a % b < natAbs b` for `b ≠ 0`. Other rounding conventions are available using the functions `Int.fdiv` (floor rounding) and `Int.tdiv` (truncation rounding). * For `Float`, `a / 0` follows the IEEE 754 semantics for division, usually resulting in `inf` or `nan`. Conventions for notations in identifiers: * The recommended spelling of `/` in identifiers is `div`.2)HDiv.hDiv.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HDiv α β γ] : α → β → γ`a / b` computes the result of dividing `a` by `b`. The meaning of this notation is type-dependent. * For most types like `Nat`, `Int`, `Rat`, `Real`, `a / 0` is defined to be `0`. * For `Nat`, `a / b` rounds downwards. * For `Int`, `a / b` rounds downwards if `b` is positive or upwards if `b` is negative. It is implemented as `Int.ediv`, the unique function satisfying `a % b + b * (a / b) = a` and `0 ≤ a % b < natAbs b` for `b ≠ 0`. Other rounding conventions are available using the functions `Int.fdiv` (floor rounding) and `Int.tdiv` (truncation rounding). * For `Float`, `a / 0` follows the IEEE 754 semantics for division, usually resulting in `inf` or `nan`. Conventions for notations in identifiers: * The recommended spelling of `/` in identifiers is `div`.*HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.∑ chi↥(Q2Presentation.Induction.XT chief K), (HSub.hSub.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HSub α β γ] : α → β → γ`a - b` computes the difference of `a` and `b`. The meaning of this notation is type-dependent. * For natural numbers, this operator saturates at 0: `a - b = 0` when `a ≤ b`. Conventions for notations in identifiers: * The recommended spelling of `-` in identifiers is `sub` (when used as a binary operator).2 *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.↑(Q2Presentation.Induction.phaseCountQ2Presentation.Induction.phaseCount {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (zeta : (Q2Presentation.Induction.cChild chief K).fst.Y → (Q2Presentation.Induction.cChild chief K).fst.Y → ZMod 2) (hz1 : ∀ (y : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta 1 y = 0) (hz2 : ∀ (y : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta y 1 = 0) (hzc : ∀ (a b c : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta a b + zeta (a * b) c = zeta b c + zeta a (b * c)) {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) : ℕ**`n_{Γ,0}(ζ)`** (l.4377–4379): the number of lower exact-image maps `ρ ∈ X_Γ(C)` for which the phase cover is unobstructed, i.e. which admit a weak (no image condition) framed lift through `p_ζ`. The child transport of P3-§4.7's `phaseChildTransport` slot is W7a's `cocycleChildEquiv`, absorbed into `cocycleCoverLiftHom`.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor(Q2Presentation.Induction.DeltaQ2Presentation.Induction.Delta {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) (Z : Q2Presentation.Induction.ZeroEdgeDescentData chief K lam hinv) (chi : ↥(Q2Presentation.Induction.XT chief K)) : (Q2Presentation.Induction.cChild chief K).fst.Y → (Q2Presentation.Induction.cChild chief K).fst.Y → ZMod 2**The phase class `Δ_{χ,κ}` on the C-child carrier** — `DeltaC` transported along the canonical collapse `B/M' ≃* C` (`cChildCollapse`); the cocycle P7's `phaseCount`/`phaseCoverPair` consume at `ζ := Delta Z chi` (design §4.7; per-cocycle discipline, no class-invariance asserted).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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 hinvchi↥(Q2Presentation.Induction.XT chief K)) ⋯ ⋯ ⋯ Q2Presentation.boundaryPackage_GQ2Q2Presentation.boundaryPackage_GQ2 : Q2Presentation.BoundaryPackage Q2Presentation.GQ2Profinite**The local boundary package** `boundaryPackage_GQ2 : BoundaryPackage G_{ℚ₂}` (manuscript Prop 3.14 `prop:compatiblemarking` for `Γ = G_{ℚ₂}`; plan Turn 4 §6), the `G_{ℚ₂}`-side instance of the uniform Stage-C boundary datum. * `tameMap`/`tame_surj`/`tame_nu` — the local tame quotient `G_{ℚ₂} ↠ T_A` with unramified marking `ν_loc`, from the axiom `gq2_tame_quotient` (Prop 3.2 + the local half of Prop `compatiblemarking`); * `pro2Map`/`pro2_surj`/`pro2_nu` — the local maximal pro-`2` quotient `G_{ℚ₂} ↠ Π` with the *same* unramified marking `ν_loc`, proved from the fully marked Labute comparison `labute_GQ2_maxPro2_marked` (`pro2Map_loc`, `pro2Map_loc_surjective`, `pro2Map_loc_nu`); * `nu := ν_loc` — the common unramified character through which both factor.) -HSub.hSub.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HSub α β γ] : α → β → γ`a - b` computes the difference of `a` and `b`. The meaning of this notation is type-dependent. * For natural numbers, this operator saturates at 0: `a - b = 0` when `a ≤ b`. Conventions for notations in identifiers: * The recommended spelling of `-` in identifiers is `sub` (when used as a binary operator).↑(Q2Presentation.Induction.eCQ2Presentation.Induction.eC {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) : ℕ**The C-child count** (the `e_Γ(C')` of R4a/R4b): boundary-framed surjections onto the C-child pair (P3-U2's `cChild`).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactorQ2Presentation.boundaryPackage_GQ2Q2Presentation.boundaryPackage_GQ2 : Q2Presentation.BoundaryPackage Q2Presentation.GQ2Profinite**The local boundary package** `boundaryPackage_GQ2 : BoundaryPackage G_{ℚ₂}` (manuscript Prop 3.14 `prop:compatiblemarking` for `Γ = G_{ℚ₂}`; plan Turn 4 §6), the `G_{ℚ₂}`-side instance of the uniform Stage-C boundary datum. * `tameMap`/`tame_surj`/`tame_nu` — the local tame quotient `G_{ℚ₂} ↠ T_A` with unramified marking `ν_loc`, from the axiom `gq2_tame_quotient` (Prop 3.2 + the local half of Prop `compatiblemarking`); * `pro2Map`/`pro2_surj`/`pro2_nu` — the local maximal pro-`2` quotient `G_{ℚ₂} ↠ Π` with the *same* unramified marking `ν_loc`, proved from the fully marked Labute comparison `labute_GQ2_maxPro2_marked` (`pro2Map_loc`, `pro2Map_loc_surjective`, `pro2Map_loc_nu`); * `nu := ν_loc` — the common unramified character through which both factor.))HSub.hSub.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HSub α β γ] : α → β → γ`a - b` computes the difference of `a` and `b`. The meaning of this notation is type-dependent. * For natural numbers, this operator saturates at 0: `a - b = 0` when `a ≤ b`. Conventions for notations in identifiers: * The recommended spelling of `-` in identifiers is `sub` (when used as a binary operator).)HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `+` in identifiers is `add`.theorem Q2Presentation.Induction.sec7_zeroEdge_count_gq2 {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) (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)) (ramBool: BoolBool : TypeThe Boolean values, `true` and `false`. Logically speaking, this is equivalent to `Prop` (the type of propositions). The distinction is public important for programming: both propositions and their proofs are erased in the code generator, while `Bool` corresponds to the Boolean type in most programming languages and carries precisely one bit of run-time information.) (_hramQ2Presentation.Quadratic.gaussType (Q2Presentation.Induction.edgeHeadForm chief K lam hinv ⋯) = ram: Q2Presentation.Quadratic.gaussTypeQ2Presentation.Quadratic.gaussType.{u_1} {V : Type u_1} [AddCommGroup V] [Module (ZMod 2) V] (q : Q2Presentation.Quadratic.QuadF2 V) : BoolThe **Gauss type** of a quadratic form: the `Bool`-valued ramification flag read off from its zero count — `true` (plus type / ramified) iff the count is the plus value `baseZeroCount true d`, else `false` (minus type / unramified). This is the form's own Arf type made into the *unique* `ram` for which `# Q⁻¹(0) = baseZeroCount ram d` (uniqueness is `baseZeroCount_ne`; that this `ram` is *realized* is the Dickson zero count, `candidate_numZeros_eq_gaussType` / `q2_local_numZeros_eq_gaussType` in `DicksonCount.lean`). Tying the flag to the form this way is exactly the de-bugging of the old *free* `ram` argument.(Q2Presentation.Induction.edgeHeadFormQ2Presentation.Induction.edgeHeadForm {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) (hne : lam ≠ 0) : Q2Presentation.Quadratic.QuadF2 (Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K)**The descended head form `q̄_λ : QuadF2 (M/T)`** (`prop:simpleheaddet` at the tower, the U1-aligned carrier of the R4b Gauss data).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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)⋯) =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`. We use `a = b` as notation for `Eq a b`. A fundamental property of equality is that it is an equivalence relation. ``` variable (α : Type) (a b c d : α) variable (hab : a = b) (hcb : c = b) (hcd : c = d) example : a = d := Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd ``` Equality is much more than an equivalence relation, however. It has the important property that every assertion respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value. That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`. Example: ``` example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := Eq.subst h1 h2 example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := h1 ▸ h2 ``` The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`. For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality) Conventions for notations in identifiers: * The recommended spelling of `=` in identifiers is `eq`.ramBool) (hkeepQ2Presentation.Induction.ZeroEdgeCountGQ2 chief K lam hinv Z ram: Q2Presentation.Induction.ZeroEdgeCountGQ2Q2Presentation.Induction.ZeroEdgeCountGQ2 {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) (Z : Q2Presentation.Induction.ZeroEdgeDescentData chief K lam hinv) (ram : Bool) : Prop**The R4b count, local source** (manuscript `prop:zeroedge` mirror, with the local functional `ι_F = inv_{ℚ₂}`; same fixed bundle `Z` as the candidate clause — design §6.5). Same statement shape, provenance and dissolution program as `ZeroEdgeCountGammaA`.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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 hinvramBool) : 2 ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `^` in identifiers is `pow`.(HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `+` in identifiers is `add`.Q2Presentation.Induction.rTQ2Presentation.Induction.rT {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : ℕ`r = dim 𝒳_T`.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor+HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `+` in identifiers is `add`.1)HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `+` in identifiers is `add`.*HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.↑(Q2Presentation.Induction.ZcountQ2Presentation.Induction.Zcount {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) : ℕ**The unrestricted top count `Z_{Γ,λ}(B/C)`**: framed maps to `B` whose composite to `C` is onto ("without imposing generation in `B`", l.4270) and which weakly lift through `p_λ`.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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.boundaryPackage_GQ2Q2Presentation.boundaryPackage_GQ2 : Q2Presentation.BoundaryPackage Q2Presentation.GQ2Profinite**The local boundary package** `boundaryPackage_GQ2 : BoundaryPackage G_{ℚ₂}` (manuscript Prop 3.14 `prop:compatiblemarking` for `Γ = G_{ℚ₂}`; plan Turn 4 §6), the `G_{ℚ₂}`-side instance of the uniform Stage-C boundary datum. * `tameMap`/`tame_surj`/`tame_nu` — the local tame quotient `G_{ℚ₂} ↠ T_A` with unramified marking `ν_loc`, from the axiom `gq2_tame_quotient` (Prop 3.2 + the local half of Prop `compatiblemarking`); * `pro2Map`/`pro2_surj`/`pro2_nu` — the local maximal pro-`2` quotient `G_{ℚ₂} ↠ Π` with the *same* unramified marking `ν_loc`, proved from the fully marked Labute comparison `labute_GQ2_maxPro2_marked` (`pro2Map_loc`, `pro2Map_loc_surjective`, `pro2Map_loc_nu`); * `nu := ν_loc` — the common unramified character through which both factor.) =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`. We use `a = b` as notation for `Eq a b`. A fundamental property of equality is that it is an equivalence relation. ``` variable (α : Type) (a b c d : α) variable (hab : a = b) (hcb : c = b) (hcd : c = d) example : a = d := Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd ``` Equality is much more than an equivalence relation, however. It has the important property that every assertion respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value. That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`. Example: ``` example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := Eq.subst h1 h2 example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := h1 ▸ h2 ``` The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`. For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality) Conventions for notations in identifiers: * The recommended spelling of `=` in identifiers is `eq`.↑(Q2Presentation.Induction.muTQ2Presentation.Induction.muT {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : ℕ**The affine-lifting multiplicity VALUE** `μ = |B¹(V)|·|Z¹(T)| = 2^d · 2^{2·dimT + r}` (`eq:mumultiplicity`; the per-source realization of this count is the §4.5–4.6 lane, not U2).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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`.(HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `+` in identifiers is `add`.2 ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `^` in identifiers is `pow`.Q2Presentation.Induction.dimVQ2Presentation.Induction.dimV {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : ℕ`d = dim V` (the head `V = M/T`).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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`.↑(Q2Presentation.Induction.eCQ2Presentation.Induction.eC {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) : ℕ**The C-child count** (the `e_Γ(C')` of R4a/R4b): boundary-framed surjections onto the C-child pair (P3-U2's `cChild`).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactorQ2Presentation.boundaryPackage_GQ2Q2Presentation.boundaryPackage_GQ2 : Q2Presentation.BoundaryPackage Q2Presentation.GQ2Profinite**The local boundary package** `boundaryPackage_GQ2 : BoundaryPackage G_{ℚ₂}` (manuscript Prop 3.14 `prop:compatiblemarking` for `Γ = G_{ℚ₂}`; plan Turn 4 §6), the `G_{ℚ₂}`-side instance of the uniform Stage-C boundary datum. * `tameMap`/`tame_surj`/`tame_nu` — the local tame quotient `G_{ℚ₂} ↠ T_A` with unramified marking `ν_loc`, from the axiom `gq2_tame_quotient` (Prop 3.2 + the local half of Prop `compatiblemarking`); * `pro2Map`/`pro2_surj`/`pro2_nu` — the local maximal pro-`2` quotient `G_{ℚ₂} ↠ Π` with the *same* unramified marking `ν_loc`, proved from the fully marked Labute comparison `labute_GQ2_maxPro2_marked` (`pro2Map_loc`, `pro2Map_loc_surjective`, `pro2Map_loc_nu`); * `nu := ν_loc` — the common unramified character through which both factor.) +HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `+` in identifiers is `add`.Q2Presentation.Quadratic.baseGaussSignQ2Presentation.Quadratic.baseGaussSign (ramified : Bool) : ℤThe **base Gauss sign** (`prop:candidatezero`/`prop:localzero`): `+1` (plus type) in the ramified case, `-1` (minus type) in the unramified case.ramBool*HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.2 ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `^` in identifiers is `pow`.(HDiv.hDiv.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HDiv α β γ] : α → β → γ`a / b` computes the result of dividing `a` by `b`. The meaning of this notation is type-dependent. * For most types like `Nat`, `Int`, `Rat`, `Real`, `a / 0` is defined to be `0`. * For `Nat`, `a / b` rounds downwards. * For `Int`, `a / b` rounds downwards if `b` is positive or upwards if `b` is negative. It is implemented as `Int.ediv`, the unique function satisfying `a % b + b * (a / b) = a` and `0 ≤ a % b < natAbs b` for `b ≠ 0`. Other rounding conventions are available using the functions `Int.fdiv` (floor rounding) and `Int.tdiv` (truncation rounding). * For `Float`, `a / 0` follows the IEEE 754 semantics for division, usually resulting in `inf` or `nan`. Conventions for notations in identifiers: * The recommended spelling of `/` in identifiers is `div`.Q2Presentation.Induction.dimVQ2Presentation.Induction.dimV {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : ℕ`d = dim V` (the head `V = M/T`).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor/HDiv.hDiv.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HDiv α β γ] : α → β → γ`a / b` computes the result of dividing `a` by `b`. The meaning of this notation is type-dependent. * For most types like `Nat`, `Int`, `Rat`, `Real`, `a / 0` is defined to be `0`. * For `Nat`, `a / b` rounds downwards. * For `Int`, `a / b` rounds downwards if `b` is positive or upwards if `b` is negative. It is implemented as `Int.ediv`, the unique function satisfying `a % b + b * (a / b) = a` and `0 ≤ a % b < natAbs b` for `b ≠ 0`. Other rounding conventions are available using the functions `Int.fdiv` (floor rounding) and `Int.tdiv` (truncation rounding). * For `Float`, `a / 0` follows the IEEE 754 semantics for division, usually resulting in `inf` or `nan`. Conventions for notations in identifiers: * The recommended spelling of `/` in identifiers is `div`.2)HDiv.hDiv.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HDiv α β γ] : α → β → γ`a / b` computes the result of dividing `a` by `b`. The meaning of this notation is type-dependent. * For most types like `Nat`, `Int`, `Rat`, `Real`, `a / 0` is defined to be `0`. * For `Nat`, `a / b` rounds downwards. * For `Int`, `a / b` rounds downwards if `b` is positive or upwards if `b` is negative. It is implemented as `Int.ediv`, the unique function satisfying `a % b + b * (a / b) = a` and `0 ≤ a % b < natAbs b` for `b ≠ 0`. Other rounding conventions are available using the functions `Int.fdiv` (floor rounding) and `Int.tdiv` (truncation rounding). * For `Float`, `a / 0` follows the IEEE 754 semantics for division, usually resulting in `inf` or `nan`. Conventions for notations in identifiers: * The recommended spelling of `/` in identifiers is `div`.*HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.∑ chi↥(Q2Presentation.Induction.XT chief K), (HSub.hSub.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HSub α β γ] : α → β → γ`a - b` computes the difference of `a` and `b`. The meaning of this notation is type-dependent. * For natural numbers, this operator saturates at 0: `a - b = 0` when `a ≤ b`. Conventions for notations in identifiers: * The recommended spelling of `-` in identifiers is `sub` (when used as a binary operator).2 *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.↑(Q2Presentation.Induction.phaseCountQ2Presentation.Induction.phaseCount {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (zeta : (Q2Presentation.Induction.cChild chief K).fst.Y → (Q2Presentation.Induction.cChild chief K).fst.Y → ZMod 2) (hz1 : ∀ (y : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta 1 y = 0) (hz2 : ∀ (y : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta y 1 = 0) (hzc : ∀ (a b c : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta a b + zeta (a * b) c = zeta b c + zeta a (b * c)) {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) : ℕ**`n_{Γ,0}(ζ)`** (l.4377–4379): the number of lower exact-image maps `ρ ∈ X_Γ(C)` for which the phase cover is unobstructed, i.e. which admit a weak (no image condition) framed lift through `p_ζ`. The child transport of P3-§4.7's `phaseChildTransport` slot is W7a's `cocycleChildEquiv`, absorbed into `cocycleCoverLiftHom`.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor(Q2Presentation.Induction.DeltaQ2Presentation.Induction.Delta {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) (Z : Q2Presentation.Induction.ZeroEdgeDescentData chief K lam hinv) (chi : ↥(Q2Presentation.Induction.XT chief K)) : (Q2Presentation.Induction.cChild chief K).fst.Y → (Q2Presentation.Induction.cChild chief K).fst.Y → ZMod 2**The phase class `Δ_{χ,κ}` on the C-child carrier** — `DeltaC` transported along the canonical collapse `B/M' ≃* C` (`cChildCollapse`); the cocycle P7's `phaseCount`/`phaseCoverPair` consume at `ζ := Delta Z chi` (design §4.7; per-cocycle discipline, no class-invariance asserted).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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 hinvchi↥(Q2Presentation.Induction.XT chief K)) ⋯ ⋯ ⋯ Q2Presentation.boundaryPackage_GQ2Q2Presentation.boundaryPackage_GQ2 : Q2Presentation.BoundaryPackage Q2Presentation.GQ2Profinite**The local boundary package** `boundaryPackage_GQ2 : BoundaryPackage G_{ℚ₂}` (manuscript Prop 3.14 `prop:compatiblemarking` for `Γ = G_{ℚ₂}`; plan Turn 4 §6), the `G_{ℚ₂}`-side instance of the uniform Stage-C boundary datum. * `tameMap`/`tame_surj`/`tame_nu` — the local tame quotient `G_{ℚ₂} ↠ T_A` with unramified marking `ν_loc`, from the axiom `gq2_tame_quotient` (Prop 3.2 + the local half of Prop `compatiblemarking`); * `pro2Map`/`pro2_surj`/`pro2_nu` — the local maximal pro-`2` quotient `G_{ℚ₂} ↠ Π` with the *same* unramified marking `ν_loc`, proved from the fully marked Labute comparison `labute_GQ2_maxPro2_marked` (`pro2Map_loc`, `pro2Map_loc_surjective`, `pro2Map_loc_nu`); * `nu := ν_loc` — the common unramified character through which both factor.) -HSub.hSub.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HSub α β γ] : α → β → γ`a - b` computes the difference of `a` and `b`. The meaning of this notation is type-dependent. * For natural numbers, this operator saturates at 0: `a - b = 0` when `a ≤ b`. Conventions for notations in identifiers: * The recommended spelling of `-` in identifiers is `sub` (when used as a binary operator).↑(Q2Presentation.Induction.eCQ2Presentation.Induction.eC {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) : ℕ**The C-child count** (the `e_Γ(C')` of R4a/R4b): boundary-framed surjections onto the C-child pair (P3-U2's `cChild`).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactorQ2Presentation.boundaryPackage_GQ2Q2Presentation.boundaryPackage_GQ2 : Q2Presentation.BoundaryPackage Q2Presentation.GQ2Profinite**The local boundary package** `boundaryPackage_GQ2 : BoundaryPackage G_{ℚ₂}` (manuscript Prop 3.14 `prop:compatiblemarking` for `Γ = G_{ℚ₂}`; plan Turn 4 §6), the `G_{ℚ₂}`-side instance of the uniform Stage-C boundary datum. * `tameMap`/`tame_surj`/`tame_nu` — the local tame quotient `G_{ℚ₂} ↠ T_A` with unramified marking `ν_loc`, from the axiom `gq2_tame_quotient` (Prop 3.2 + the local half of Prop `compatiblemarking`); * `pro2Map`/`pro2_surj`/`pro2_nu` — the local maximal pro-`2` quotient `G_{ℚ₂} ↠ Π` with the *same* unramified marking `ν_loc`, proved from the fully marked Labute comparison `labute_GQ2_maxPro2_marked` (`pro2Map_loc`, `pro2Map_loc_surjective`, `pro2Map_loc_nu`); * `nu := ν_loc` — the common unramified character through which both factor.))HSub.hSub.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HSub α β γ] : α → β → γ`a - b` computes the difference of `a` and `b`. The meaning of this notation is type-dependent. * For natural numbers, this operator saturates at 0: `a - b = 0` when `a ≤ b`. Conventions for notations in identifiers: * The recommended spelling of `-` in identifiers is `sub` (when used as a binary operator).)HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `+` in identifiers is `add`.**R4b, local source** (`prop:zeroedge` mirror): same shape, same bundle `Z`, same `ram`-pinning slot; the count clause enters as an explicit HYPOTHESIS (`ZeroEdgeCountGQ2`).
-
theoremdefined in Q2Presentation/Induction/ZeroEdgePointwise.leancomplete
theorem Q2Presentation.Induction.q2_edgePointwise_count {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)) (BQ2Presentation.BoundaryPackage Q2Presentation.GQ2Profinite: Q2Presentation.BoundaryPackageQ2Presentation.BoundaryPackage (Γ : ProfiniteGrp.{0}) : TypeA **boundary package** on a profinite group `Γ`: the uniform Stage-C data of a tame quotient, a maximal pro-`2` quotient, and a common unramified character `ℤ₂` through which both factor (manuscript Prop 3.14, `prop:compatiblemarking`; plan Turn 4 §6). The compatibility `tameMap ≫ ν_t = ν = pro2Map ≫ ν_2` records that the two markings agree on the full unramified coordinate, not merely modulo `2`.Q2Presentation.GQ2ProfiniteQ2Presentation.GQ2Profinite : ProfiniteGrp.{0}The absolute Galois group `G_{ℚ₂} = Gal(Q̄₂/ℚ₂)` of the `2`-adic field `ℚ₂ = ℚ_[2]`, as a profinite group. Concretely it is `Gal(SeparableClosure ℚ_[2] / ℚ_[2])`, packaged as an object of `ProfiniteGrp` by `InfiniteGalois.profiniteGalGrp`. Since `ℚ_[2]` has characteristic `0` its separable closure is an algebraic closure, so this is the absolute Galois group in the usual sense, matching the manuscript's `G_{ℚ₂}`.) (ρQ2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst (Q2Presentation.Induction.cChild chief K).snd: Q2Presentation.boundaryFramedSurjQ2Presentation.boundaryFramedSurj {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (Yt : Q2Presentation.BoundaryFramedTarget) (F : Q2Presentation.BoundaryFrame Yt) : TypeThe **boundary-framed surjections** `e_Γ^β(𝒴)` (manuscript `eq:eGamma`): the continuous surjections `f : Γ ↠ Y` whose induced map to `H × E` is the prescribed `β ∘ b_Γ`, i.e. `q_Y ∘ f = β ∘ b_Γ`. This is the subtype counted in Theorem 4.2; its cardinality is `e_Γ^β(𝒴)`.BQ2Presentation.BoundaryPackage Q2Presentation.GQ2Profinite(Q2Presentation.Induction.cChildQ2Presentation.Induction.cChild {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPair**The C-child framed pair** (the carrier of `X_Γ(C)`; manuscript `C = Y/K` via `B/M' ≅ C`, `mChildCollapse`).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.(Q2Presentation.Induction.cChildQ2Presentation.Induction.cChild {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPair**The C-child framed pair** (the carrier of `X_Γ(C)`; manuscript `C = Y/K` via `B/M' ≅ C`, `mChildCollapse`).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.) (PQ2Presentation.Induction.ZeroEdgePinning chief K lam hinv Z: Q2Presentation.Induction.ZeroEdgePinningQ2Presentation.Induction.ZeroEdgePinning {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) (Z : Q2Presentation.Induction.ZeroEdgeDescentData chief K lam hinv) : Type**The base-identity pinning of a bundle `Z`** — the §13 deferral's third item, concrete. In the `Z.Csec`-coordinates (a multiplicative section `s`, so the section cochain `η` vanishes), the normalized section cocycle of the ACTUAL descended cover `descTarget Z.D Z.hW` at the total section `(v,c) ↦ ℓ̂(v)·σ̂(c)` is `κ((v,c),(w,d)) = g(v,cw) + n_c(w) + e(c,d)` with `g/n/e` the three deck readings; the fields pin * `g = edgeBaseFactor` (`fib_*`): the fibre part is the `κ_q⁰`-model factor set — `eq:basekappacochain`'s fibre normalization; * `n_c = Z.mC c + Z.gammaK c ∘ (c·)` (`conj_*`): the conjugation defect is the model correction plus the `Γ_{γ_κ}`-term (`eq:Gammagamma`); * `e = Z.deltaK` (`sec_*`): the pure base part is the inflated scalar — i.e. `κ = κ_q⁰ + Γ_{γ_κ} + inf δ_κ` as normalized cochains, `eq:descendedclass` l.4037–4045 ON THE NOSE; and `tau_eT` pins `Z.eT` as the actual zero-section pullback of `B → V⋊C` along the `Csec`-section (`lem:affinelifting` l.4050–4056). `Nonempty (ZeroEdgePinning … Z)` is the pinning hypothesis the FUTURE coordinated R4b keep must carry alongside `Z` (both U8/U9 zero-edge keep docstrings + §13 note 6).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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) (hdelQ2Presentation.Induction.EdgeDelSurj chief K B ρ: Q2Presentation.Induction.EdgeDelSurjQ2Presentation.Induction.EdgeDelSurj {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (ρ : Q2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst (Q2Presentation.Induction.cChild chief K).snd) : Prop**F-∂ floor `Prop`** (design §5 #F-∂; `lem:elementarystage` l.4171–4205, dual-injectivity spelling): no `0 ≠ χ ∈ 𝒳_T` kills every constraint defect reading — i.e. the transpose of `∂_{Γ,ρ}` is injective. PROVENANCE + dissolution program: the manuscript proof is the counting dévissage `H²_{Γ,ρ}(M) = 0` at the intermediate `χ`-pushout kernels `M_χ = ker χ̃`; in-tree this is the clause-(d) ladder (`q2_localduality_weakZ1_card`) at `M_χ`-kernels for the LOCAL source — derivable, expected NOT to survive — and the N6 corank engine for the candidate (manuscript fallback per the §5 table). Consumed as a HYPOTHESIS (never an axiom) by the engine fire below; `edgeL_surjective_of_delSurj` converts it to the engine's `hL`.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactorBQ2Presentation.BoundaryPackage Q2Presentation.GQ2ProfiniteρQ2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst (Q2Presentation.Induction.cChild chief K).snd) : 2 *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.2 ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `^` in identifiers is `pow`.Q2Presentation.Induction.rTQ2Presentation.Induction.rT {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : ℕ`r = dim 𝒳_T`.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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`.↑(Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number. If `α` is infinite, `Nat.card α = 0`.{Subtype.{u} {α : Sort u} (p : α → Prop) : Sort (max 1 u)All the elements of a type that satisfy a predicate. `Subtype p`, usually written `{ x : α // p x }` or `{ x // p x }`, contains all elements `x : α` for which `p x` is true. Its constructor is a pair of the value and the proof that it satisfies the predicate. In run-time code, `{ x : α // p x }` is represented identically to `α`. There is a coercion from `{ x : α // p x }` to `α`, so elements of a subtype may be used where the underlying type is expected. Examples: * `{ n : Nat // n % 2 = 0 }` is the type of even numbers. * `{ xs : Array String // xs.size = 5 }` is the type of arrays with five `String`s. * Given `xs : List α`, `List { x : α // x ∈ xs }` is the type of lists in which all elements are contained in `xs`. Conventions for notations in identifiers: * The recommended spelling of `{ x // p x }` in identifiers is `subtype`.z↥(Q2Presentation.Induction.edgeZ1 chief K B ρ)//Subtype.{u} {α : Sort u} (p : α → Prop) : Sort (max 1 u)All the elements of a type that satisfy a predicate. `Subtype p`, usually written `{ x : α // p x }` or `{ x // p x }`, contains all elements `x : α` for which `p x` is true. Its constructor is a pair of the value and the proof that it satisfies the predicate. In run-time code, `{ x : α // p x }` is represented identically to `α`. There is a coercion from `{ x : α // p x }` to `α`, so elements of a subtype may be used where the underlying type is expected. Examples: * `{ n : Nat // n % 2 = 0 }` is the type of even numbers. * `{ xs : Array String // xs.size = 5 }` is the type of arrays with five `String`s. * Given `xs : List α`, `List { x : α // x ∈ xs }` is the type of lists in which all elements are contained in `xs`. Conventions for notations in identifiers: * The recommended spelling of `{ x // p x }` in identifiers is `subtype`.(Q2Presentation.Induction.edgeLQ2Presentation.Induction.edgeL {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (ρ : Q2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst (Q2Presentation.Induction.cChild chief K).snd) (tok : Q2Presentation.Induction.IotaToken Γ) : ↥(Q2Presentation.Induction.edgeZ1 chief K B ρ) →ₗ[ZMod 2] Module.Dual (ZMod 2) ↥(Q2Presentation.Induction.XT chief K)**The constraint map `L : W_ρ →ₗ 𝒳_T^∨`** (design §4-N7 bullet 4: `L z = (χ ↦ ι(χ-pushout defect))`, in the coboundary-free graph spelling; `edgeLRead_eq_chiDefect` aligns it with the `∂`-defect).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactorBQ2Presentation.BoundaryPackage Q2Presentation.GQ2ProfiniteρQ2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst (Q2Presentation.Induction.cChild chief K).snd⋯) z↥(Q2Presentation.Induction.edgeZ1 chief K B ρ)=Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`. We use `a = b` as notation for `Eq a b`. A fundamental property of equality is that it is an equivalence relation. ``` variable (α : Type) (a b c d : α) variable (hab : a = b) (hcb : c = b) (hcd : c = d) example : a = d := Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd ``` Equality is much more than an equivalence relation, however. It has the important property that every assertion respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value. That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`. Example: ``` example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := Eq.subst h1 h2 example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := h1 ▸ h2 ``` The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`. For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality) Conventions for notations in identifiers: * The recommended spelling of `=` in identifiers is `eq`.Q2Presentation.Induction.edgeKappaQ2Presentation.Induction.edgeKappa {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) (Z : Q2Presentation.Induction.ZeroEdgeDescentData chief K lam hinv) {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (ρ : Q2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst (Q2Presentation.Induction.cChild chief K).snd) (tok : Q2Presentation.Induction.IotaToken Γ) : Module.Dual (ZMod 2) ↥(Q2Presentation.Induction.XT chief K)**The constraint target `κ₀ ∈ 𝒳_T^∨`** (the `ρ*e`-class read).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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 hinvBQ2Presentation.BoundaryPackage Q2Presentation.GQ2ProfiniteρQ2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst (Q2Presentation.Induction.cChild chief K).snd⋯ ∧And (a b : Prop) : Prop`And a b`, or `a ∧ b`, is the conjunction of propositions. It can be constructed and destructed like a pair: if `ha : a` and `hb : b` then `⟨ha, hb⟩ : a ∧ b`, and if `h : a ∧ b` then `h.left : a` and `h.right : b`. Conventions for notations in identifiers: * The recommended spelling of `∧` in identifiers is `and`. * The recommended spelling of `/\` in identifiers is `and` (prefer `∧` over `/\`).Q2Presentation.Induction.edgeLiftableDescQ2Presentation.Induction.edgeLiftableDesc {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) (Z : Q2Presentation.Induction.ZeroEdgeDescentData chief K lam hinv) {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (ρ : Q2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst (Q2Presentation.Induction.cChild chief K).snd) (P : Q2Presentation.Induction.ZeroEdgePinning chief K lam hinv Z) (z : ↥(Q2Presentation.Induction.edgeZ1 chief K B ρ)) : Prop**Desc-liftability of the `z`-twisted lift** — N1's `descLiftableWeak` shape at the pinned `V⋊C`-lift `γ ↦ vInG(z γ)·s(ρ̄γ)` (= `btLiftVal (edgeTrivial … P.s … z)`, `edgeTrivial_apply`).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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 hinvBQ2Presentation.BoundaryPackage Q2Presentation.GQ2ProfiniteρQ2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst (Q2Presentation.Induction.cChild chief K).sndPQ2Presentation.Induction.ZeroEdgePinning chief K lam hinv Zz↥(Q2Presentation.Induction.edgeZ1 chief K B ρ)}Subtype.{u} {α : Sort u} (p : α → Prop) : Sort (max 1 u)All the elements of a type that satisfy a predicate. `Subtype p`, usually written `{ x : α // p x }` or `{ x // p x }`, contains all elements `x : α` for which `p x` is true. Its constructor is a pair of the value and the proof that it satisfies the predicate. In run-time code, `{ x : α // p x }` is represented identically to `α`. There is a coercion from `{ x : α // p x }` to `α`, so elements of a subtype may be used where the underlying type is expected. Examples: * `{ n : Nat // n % 2 = 0 }` is the type of even numbers. * `{ xs : Array String // xs.size = 5 }` is the type of arrays with five `String`s. * Given `xs : List α`, `List { x : α // x ∈ xs }` is the type of lists in which all elements are contained in `xs`. Conventions for notations in identifiers: * The recommended spelling of `{ x // p x }` in identifiers is `subtype`.) =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`. We use `a = b` as notation for `Eq a b`. A fundamental property of equality is that it is an equivalence relation. ``` variable (α : Type) (a b c d : α) variable (hab : a = b) (hcb : c = b) (hcd : c = d) example : a = d := Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd ``` Equality is much more than an equivalence relation, however. It has the important property that every assertion respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value. That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`. Example: ``` example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := Eq.subst h1 h2 example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := h1 ▸ h2 ``` The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`. For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality) Conventions for notations in identifiers: * The recommended spelling of `=` in identifiers is `eq`.↑(Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number. If `α` is infinite, `Nat.card α = 0`.↥(Q2Presentation.Induction.edgeZ1Q2Presentation.Induction.edgeZ1 {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (ρ : Q2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst (Q2Presentation.Induction.cChild chief K).snd) : Submodule (ZMod 2) (↑Γ.toProfinite.toTop → Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K)**`Z¹_ρ(V)`** — the `ZMod 2`-module of continuous (locally constant) `V`-valued ρ̄-twisted 1-cocycles: `z(γγ′) = z(γ) + ρ̄(γ)·z(γ′)` (THE orientation pin — `aRep_cocycle`'s house orientation; design §2.1's `W_ρ`, the engine carrier of the W2 instantiation).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactorBQ2Presentation.BoundaryPackage Q2Presentation.GQ2ProfiniteρQ2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst (Q2Presentation.Induction.cChild chief K).snd)) +HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `+` in identifiers is `add`.Q2Presentation.Quadratic.Dickson.gaussSumQ2Presentation.Quadratic.Dickson.gaussSum.{u_1} {V : Type u_1} [AddCommGroup V] [Module (ZMod 2) V] [Fintype V] (q : Q2Presentation.Quadratic.QuadF2 V) : ℤThe **Gauss sum** `D(q) = ∑_v χ(q v)`.(Q2Presentation.Induction.edgeQQ2Presentation.Induction.edgeQ {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) (Z : Q2Presentation.Induction.ZeroEdgeDescentData chief K lam hinv) {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (ρ : Q2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst (Q2Presentation.Induction.cChild chief K).snd) (tok : Q2Presentation.Induction.IotaToken Γ) : Q2Presentation.Quadratic.QuadF2 ↥(Q2Presentation.Induction.edgeZ1 chief K B ρ)**`edgeQ` — the P6-engine form at `W_ρ = Z¹_ρ(V)`** (design §2.1, the W2 instantiation): form `= ι∘F₀`, polar `= ι∘P`; quadratic law from the completed-square cochain identity plus the token.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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 hinvBQ2Presentation.BoundaryPackage Q2Presentation.GQ2ProfiniteρQ2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst (Q2Presentation.Induction.cChild chief K).snd⋯) *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.∑ chi↥(Q2Presentation.Induction.XT chief K), Q2Presentation.Induction.iotaSignQ2Presentation.Induction.iotaSign (Γ : ProfiniteGrp.{0}) (F : ↑Γ.toProfinite.toTop → ↑Γ.toProfinite.toTop → ZMod 2) : ℤ**The `±1`-indicator** of solvability in `ℤ`: `+1` if solvable, `−1` if not — the summand shape of `eq:recursionR5a`'s `s_Γ(ζ) = Σ_ρ (±1)` absorption (`sGammaZ_eq` downstream).Q2Presentation.GQ2ProfiniteQ2Presentation.GQ2Profinite : ProfiniteGrp.{0}The absolute Galois group `G_{ℚ₂} = Gal(Q̄₂/ℚ₂)` of the `2`-adic field `ℚ₂ = ℚ_[2]`, as a profinite group. Concretely it is `Gal(SeparableClosure ℚ_[2] / ℚ_[2])`, packaged as an object of `ProfiniteGrp` by `InfiniteGalois.profiniteGalGrp`. Since `ℚ_[2]` has characteristic `0` its separable closure is an algebraic closure, so this is the absolute Galois group in the usual sense, matching the manuscript's `G_{ℚ₂}`.(Q2Presentation.Induction.pullCochainQ2Presentation.Induction.pullCochain (Yt : Q2Presentation.BoundaryFramedTarget) (zeta : Yt.Y → Yt.Y → ZMod 2) {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (F : Q2Presentation.BoundaryFrame Yt) (g : Q2Presentation.boundaryFramedSurj B Yt F) : ↑Γ.toProfinite.toTop → ↑Γ.toProfinite.toTop → ZMod 2**The pulled-back 2-cochain `g*ζ`** of a boundary-framed surjection `g : Γ ↠ Y` — the source-side equation whose solvability the ζ-cover lift indicator reads (`lem:phasecover` l.4377–4379).(Q2Presentation.Induction.cChildQ2Presentation.Induction.cChild {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPair**The C-child framed pair** (the carrier of `X_Γ(C)`; manuscript `C = Y/K` via `B/M' ≅ C`, `mChildCollapse`).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.(Q2Presentation.Induction.DeltaQ2Presentation.Induction.Delta {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) (Z : Q2Presentation.Induction.ZeroEdgeDescentData chief K lam hinv) (chi : ↥(Q2Presentation.Induction.XT chief K)) : (Q2Presentation.Induction.cChild chief K).fst.Y → (Q2Presentation.Induction.cChild chief K).fst.Y → ZMod 2**The phase class `Δ_{χ,κ}` on the C-child carrier** — `DeltaC` transported along the canonical collapse `B/M' ≃* C` (`cChildCollapse`); the cocycle P7's `phaseCount`/`phaseCoverPair` consume at `ζ := Delta Z chi` (design §4.7; per-cocycle discipline, no class-invariance asserted).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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 hinvchi↥(Q2Presentation.Induction.XT chief K)) BQ2Presentation.BoundaryPackage Q2Presentation.GQ2Profinite(Q2Presentation.Induction.cChildQ2Presentation.Induction.cChild {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPair**The C-child framed pair** (the carrier of `X_Γ(C)`; manuscript `C = Y/K` via `B/M' ≅ C`, `mChildCollapse`).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.ρQ2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst (Q2Presentation.Induction.cChild chief K).snd)theorem Q2Presentation.Induction.q2_edgePointwise_count {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)) (BQ2Presentation.BoundaryPackage Q2Presentation.GQ2Profinite: Q2Presentation.BoundaryPackageQ2Presentation.BoundaryPackage (Γ : ProfiniteGrp.{0}) : TypeA **boundary package** on a profinite group `Γ`: the uniform Stage-C data of a tame quotient, a maximal pro-`2` quotient, and a common unramified character `ℤ₂` through which both factor (manuscript Prop 3.14, `prop:compatiblemarking`; plan Turn 4 §6). The compatibility `tameMap ≫ ν_t = ν = pro2Map ≫ ν_2` records that the two markings agree on the full unramified coordinate, not merely modulo `2`.Q2Presentation.GQ2ProfiniteQ2Presentation.GQ2Profinite : ProfiniteGrp.{0}The absolute Galois group `G_{ℚ₂} = Gal(Q̄₂/ℚ₂)` of the `2`-adic field `ℚ₂ = ℚ_[2]`, as a profinite group. Concretely it is `Gal(SeparableClosure ℚ_[2] / ℚ_[2])`, packaged as an object of `ProfiniteGrp` by `InfiniteGalois.profiniteGalGrp`. Since `ℚ_[2]` has characteristic `0` its separable closure is an algebraic closure, so this is the absolute Galois group in the usual sense, matching the manuscript's `G_{ℚ₂}`.) (ρQ2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst (Q2Presentation.Induction.cChild chief K).snd: Q2Presentation.boundaryFramedSurjQ2Presentation.boundaryFramedSurj {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (Yt : Q2Presentation.BoundaryFramedTarget) (F : Q2Presentation.BoundaryFrame Yt) : TypeThe **boundary-framed surjections** `e_Γ^β(𝒴)` (manuscript `eq:eGamma`): the continuous surjections `f : Γ ↠ Y` whose induced map to `H × E` is the prescribed `β ∘ b_Γ`, i.e. `q_Y ∘ f = β ∘ b_Γ`. This is the subtype counted in Theorem 4.2; its cardinality is `e_Γ^β(𝒴)`.BQ2Presentation.BoundaryPackage Q2Presentation.GQ2Profinite(Q2Presentation.Induction.cChildQ2Presentation.Induction.cChild {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPair**The C-child framed pair** (the carrier of `X_Γ(C)`; manuscript `C = Y/K` via `B/M' ≅ C`, `mChildCollapse`).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.(Q2Presentation.Induction.cChildQ2Presentation.Induction.cChild {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPair**The C-child framed pair** (the carrier of `X_Γ(C)`; manuscript `C = Y/K` via `B/M' ≅ C`, `mChildCollapse`).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.) (PQ2Presentation.Induction.ZeroEdgePinning chief K lam hinv Z: Q2Presentation.Induction.ZeroEdgePinningQ2Presentation.Induction.ZeroEdgePinning {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) (Z : Q2Presentation.Induction.ZeroEdgeDescentData chief K lam hinv) : Type**The base-identity pinning of a bundle `Z`** — the §13 deferral's third item, concrete. In the `Z.Csec`-coordinates (a multiplicative section `s`, so the section cochain `η` vanishes), the normalized section cocycle of the ACTUAL descended cover `descTarget Z.D Z.hW` at the total section `(v,c) ↦ ℓ̂(v)·σ̂(c)` is `κ((v,c),(w,d)) = g(v,cw) + n_c(w) + e(c,d)` with `g/n/e` the three deck readings; the fields pin * `g = edgeBaseFactor` (`fib_*`): the fibre part is the `κ_q⁰`-model factor set — `eq:basekappacochain`'s fibre normalization; * `n_c = Z.mC c + Z.gammaK c ∘ (c·)` (`conj_*`): the conjugation defect is the model correction plus the `Γ_{γ_κ}`-term (`eq:Gammagamma`); * `e = Z.deltaK` (`sec_*`): the pure base part is the inflated scalar — i.e. `κ = κ_q⁰ + Γ_{γ_κ} + inf δ_κ` as normalized cochains, `eq:descendedclass` l.4037–4045 ON THE NOSE; and `tau_eT` pins `Z.eT` as the actual zero-section pullback of `B → V⋊C` along the `Csec`-section (`lem:affinelifting` l.4050–4056). `Nonempty (ZeroEdgePinning … Z)` is the pinning hypothesis the FUTURE coordinated R4b keep must carry alongside `Z` (both U8/U9 zero-edge keep docstrings + §13 note 6).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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) (hdelQ2Presentation.Induction.EdgeDelSurj chief K B ρ: Q2Presentation.Induction.EdgeDelSurjQ2Presentation.Induction.EdgeDelSurj {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (ρ : Q2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst (Q2Presentation.Induction.cChild chief K).snd) : Prop**F-∂ floor `Prop`** (design §5 #F-∂; `lem:elementarystage` l.4171–4205, dual-injectivity spelling): no `0 ≠ χ ∈ 𝒳_T` kills every constraint defect reading — i.e. the transpose of `∂_{Γ,ρ}` is injective. PROVENANCE + dissolution program: the manuscript proof is the counting dévissage `H²_{Γ,ρ}(M) = 0` at the intermediate `χ`-pushout kernels `M_χ = ker χ̃`; in-tree this is the clause-(d) ladder (`q2_localduality_weakZ1_card`) at `M_χ`-kernels for the LOCAL source — derivable, expected NOT to survive — and the N6 corank engine for the candidate (manuscript fallback per the §5 table). Consumed as a HYPOTHESIS (never an axiom) by the engine fire below; `edgeL_surjective_of_delSurj` converts it to the engine's `hL`.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactorBQ2Presentation.BoundaryPackage Q2Presentation.GQ2ProfiniteρQ2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst (Q2Presentation.Induction.cChild chief K).snd) : 2 *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.2 ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `^` in identifiers is `pow`.Q2Presentation.Induction.rTQ2Presentation.Induction.rT {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : ℕ`r = dim 𝒳_T`.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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`.↑(Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number. If `α` is infinite, `Nat.card α = 0`.{Subtype.{u} {α : Sort u} (p : α → Prop) : Sort (max 1 u)All the elements of a type that satisfy a predicate. `Subtype p`, usually written `{ x : α // p x }` or `{ x // p x }`, contains all elements `x : α` for which `p x` is true. Its constructor is a pair of the value and the proof that it satisfies the predicate. In run-time code, `{ x : α // p x }` is represented identically to `α`. There is a coercion from `{ x : α // p x }` to `α`, so elements of a subtype may be used where the underlying type is expected. Examples: * `{ n : Nat // n % 2 = 0 }` is the type of even numbers. * `{ xs : Array String // xs.size = 5 }` is the type of arrays with five `String`s. * Given `xs : List α`, `List { x : α // x ∈ xs }` is the type of lists in which all elements are contained in `xs`. Conventions for notations in identifiers: * The recommended spelling of `{ x // p x }` in identifiers is `subtype`.z↥(Q2Presentation.Induction.edgeZ1 chief K B ρ)//Subtype.{u} {α : Sort u} (p : α → Prop) : Sort (max 1 u)All the elements of a type that satisfy a predicate. `Subtype p`, usually written `{ x : α // p x }` or `{ x // p x }`, contains all elements `x : α` for which `p x` is true. Its constructor is a pair of the value and the proof that it satisfies the predicate. In run-time code, `{ x : α // p x }` is represented identically to `α`. There is a coercion from `{ x : α // p x }` to `α`, so elements of a subtype may be used where the underlying type is expected. Examples: * `{ n : Nat // n % 2 = 0 }` is the type of even numbers. * `{ xs : Array String // xs.size = 5 }` is the type of arrays with five `String`s. * Given `xs : List α`, `List { x : α // x ∈ xs }` is the type of lists in which all elements are contained in `xs`. Conventions for notations in identifiers: * The recommended spelling of `{ x // p x }` in identifiers is `subtype`.(Q2Presentation.Induction.edgeLQ2Presentation.Induction.edgeL {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (ρ : Q2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst (Q2Presentation.Induction.cChild chief K).snd) (tok : Q2Presentation.Induction.IotaToken Γ) : ↥(Q2Presentation.Induction.edgeZ1 chief K B ρ) →ₗ[ZMod 2] Module.Dual (ZMod 2) ↥(Q2Presentation.Induction.XT chief K)**The constraint map `L : W_ρ →ₗ 𝒳_T^∨`** (design §4-N7 bullet 4: `L z = (χ ↦ ι(χ-pushout defect))`, in the coboundary-free graph spelling; `edgeLRead_eq_chiDefect` aligns it with the `∂`-defect).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactorBQ2Presentation.BoundaryPackage Q2Presentation.GQ2ProfiniteρQ2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst (Q2Presentation.Induction.cChild chief K).snd⋯) z↥(Q2Presentation.Induction.edgeZ1 chief K B ρ)=Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`. We use `a = b` as notation for `Eq a b`. A fundamental property of equality is that it is an equivalence relation. ``` variable (α : Type) (a b c d : α) variable (hab : a = b) (hcb : c = b) (hcd : c = d) example : a = d := Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd ``` Equality is much more than an equivalence relation, however. It has the important property that every assertion respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value. That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`. Example: ``` example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := Eq.subst h1 h2 example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := h1 ▸ h2 ``` The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`. For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality) Conventions for notations in identifiers: * The recommended spelling of `=` in identifiers is `eq`.Q2Presentation.Induction.edgeKappaQ2Presentation.Induction.edgeKappa {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) (Z : Q2Presentation.Induction.ZeroEdgeDescentData chief K lam hinv) {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (ρ : Q2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst (Q2Presentation.Induction.cChild chief K).snd) (tok : Q2Presentation.Induction.IotaToken Γ) : Module.Dual (ZMod 2) ↥(Q2Presentation.Induction.XT chief K)**The constraint target `κ₀ ∈ 𝒳_T^∨`** (the `ρ*e`-class read).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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 hinvBQ2Presentation.BoundaryPackage Q2Presentation.GQ2ProfiniteρQ2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst (Q2Presentation.Induction.cChild chief K).snd⋯ ∧And (a b : Prop) : Prop`And a b`, or `a ∧ b`, is the conjunction of propositions. It can be constructed and destructed like a pair: if `ha : a` and `hb : b` then `⟨ha, hb⟩ : a ∧ b`, and if `h : a ∧ b` then `h.left : a` and `h.right : b`. Conventions for notations in identifiers: * The recommended spelling of `∧` in identifiers is `and`. * The recommended spelling of `/\` in identifiers is `and` (prefer `∧` over `/\`).Q2Presentation.Induction.edgeLiftableDescQ2Presentation.Induction.edgeLiftableDesc {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) (Z : Q2Presentation.Induction.ZeroEdgeDescentData chief K lam hinv) {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (ρ : Q2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst (Q2Presentation.Induction.cChild chief K).snd) (P : Q2Presentation.Induction.ZeroEdgePinning chief K lam hinv Z) (z : ↥(Q2Presentation.Induction.edgeZ1 chief K B ρ)) : Prop**Desc-liftability of the `z`-twisted lift** — N1's `descLiftableWeak` shape at the pinned `V⋊C`-lift `γ ↦ vInG(z γ)·s(ρ̄γ)` (= `btLiftVal (edgeTrivial … P.s … z)`, `edgeTrivial_apply`).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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 hinvBQ2Presentation.BoundaryPackage Q2Presentation.GQ2ProfiniteρQ2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst (Q2Presentation.Induction.cChild chief K).sndPQ2Presentation.Induction.ZeroEdgePinning chief K lam hinv Zz↥(Q2Presentation.Induction.edgeZ1 chief K B ρ)}Subtype.{u} {α : Sort u} (p : α → Prop) : Sort (max 1 u)All the elements of a type that satisfy a predicate. `Subtype p`, usually written `{ x : α // p x }` or `{ x // p x }`, contains all elements `x : α` for which `p x` is true. Its constructor is a pair of the value and the proof that it satisfies the predicate. In run-time code, `{ x : α // p x }` is represented identically to `α`. There is a coercion from `{ x : α // p x }` to `α`, so elements of a subtype may be used where the underlying type is expected. Examples: * `{ n : Nat // n % 2 = 0 }` is the type of even numbers. * `{ xs : Array String // xs.size = 5 }` is the type of arrays with five `String`s. * Given `xs : List α`, `List { x : α // x ∈ xs }` is the type of lists in which all elements are contained in `xs`. Conventions for notations in identifiers: * The recommended spelling of `{ x // p x }` in identifiers is `subtype`.) =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`. We use `a = b` as notation for `Eq a b`. A fundamental property of equality is that it is an equivalence relation. ``` variable (α : Type) (a b c d : α) variable (hab : a = b) (hcb : c = b) (hcd : c = d) example : a = d := Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd ``` Equality is much more than an equivalence relation, however. It has the important property that every assertion respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value. That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`. Example: ``` example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := Eq.subst h1 h2 example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := h1 ▸ h2 ``` The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`. For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality) Conventions for notations in identifiers: * The recommended spelling of `=` in identifiers is `eq`.↑(Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number. If `α` is infinite, `Nat.card α = 0`.↥(Q2Presentation.Induction.edgeZ1Q2Presentation.Induction.edgeZ1 {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (ρ : Q2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst (Q2Presentation.Induction.cChild chief K).snd) : Submodule (ZMod 2) (↑Γ.toProfinite.toTop → Q2Presentation.Induction.towerM K ⧸ Q2Presentation.Induction.towerT K)**`Z¹_ρ(V)`** — the `ZMod 2`-module of continuous (locally constant) `V`-valued ρ̄-twisted 1-cocycles: `z(γγ′) = z(γ) + ρ̄(γ)·z(γ′)` (THE orientation pin — `aRep_cocycle`'s house orientation; design §2.1's `W_ρ`, the engine carrier of the W2 instantiation).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactorBQ2Presentation.BoundaryPackage Q2Presentation.GQ2ProfiniteρQ2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst (Q2Presentation.Induction.cChild chief K).snd)) +HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `+` in identifiers is `add`.Q2Presentation.Quadratic.Dickson.gaussSumQ2Presentation.Quadratic.Dickson.gaussSum.{u_1} {V : Type u_1} [AddCommGroup V] [Module (ZMod 2) V] [Fintype V] (q : Q2Presentation.Quadratic.QuadF2 V) : ℤThe **Gauss sum** `D(q) = ∑_v χ(q v)`.(Q2Presentation.Induction.edgeQQ2Presentation.Induction.edgeQ {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) (Z : Q2Presentation.Induction.ZeroEdgeDescentData chief K lam hinv) {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (ρ : Q2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst (Q2Presentation.Induction.cChild chief K).snd) (tok : Q2Presentation.Induction.IotaToken Γ) : Q2Presentation.Quadratic.QuadF2 ↥(Q2Presentation.Induction.edgeZ1 chief K B ρ)**`edgeQ` — the P6-engine form at `W_ρ = Z¹_ρ(V)`** (design §2.1, the W2 instantiation): form `= ι∘F₀`, polar `= ι∘P`; quadratic law from the completed-square cochain identity plus the token.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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 hinvBQ2Presentation.BoundaryPackage Q2Presentation.GQ2ProfiniteρQ2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst (Q2Presentation.Induction.cChild chief K).snd⋯) *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.∑ chi↥(Q2Presentation.Induction.XT chief K), Q2Presentation.Induction.iotaSignQ2Presentation.Induction.iotaSign (Γ : ProfiniteGrp.{0}) (F : ↑Γ.toProfinite.toTop → ↑Γ.toProfinite.toTop → ZMod 2) : ℤ**The `±1`-indicator** of solvability in `ℤ`: `+1` if solvable, `−1` if not — the summand shape of `eq:recursionR5a`'s `s_Γ(ζ) = Σ_ρ (±1)` absorption (`sGammaZ_eq` downstream).Q2Presentation.GQ2ProfiniteQ2Presentation.GQ2Profinite : ProfiniteGrp.{0}The absolute Galois group `G_{ℚ₂} = Gal(Q̄₂/ℚ₂)` of the `2`-adic field `ℚ₂ = ℚ_[2]`, as a profinite group. Concretely it is `Gal(SeparableClosure ℚ_[2] / ℚ_[2])`, packaged as an object of `ProfiniteGrp` by `InfiniteGalois.profiniteGalGrp`. Since `ℚ_[2]` has characteristic `0` its separable closure is an algebraic closure, so this is the absolute Galois group in the usual sense, matching the manuscript's `G_{ℚ₂}`.(Q2Presentation.Induction.pullCochainQ2Presentation.Induction.pullCochain (Yt : Q2Presentation.BoundaryFramedTarget) (zeta : Yt.Y → Yt.Y → ZMod 2) {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (F : Q2Presentation.BoundaryFrame Yt) (g : Q2Presentation.boundaryFramedSurj B Yt F) : ↑Γ.toProfinite.toTop → ↑Γ.toProfinite.toTop → ZMod 2**The pulled-back 2-cochain `g*ζ`** of a boundary-framed surjection `g : Γ ↠ Y` — the source-side equation whose solvability the ζ-cover lift indicator reads (`lem:phasecover` l.4377–4379).(Q2Presentation.Induction.cChildQ2Presentation.Induction.cChild {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPair**The C-child framed pair** (the carrier of `X_Γ(C)`; manuscript `C = Y/K` via `B/M' ≅ C`, `mChildCollapse`).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.(Q2Presentation.Induction.DeltaQ2Presentation.Induction.Delta {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) (Z : Q2Presentation.Induction.ZeroEdgeDescentData chief K lam hinv) (chi : ↥(Q2Presentation.Induction.XT chief K)) : (Q2Presentation.Induction.cChild chief K).fst.Y → (Q2Presentation.Induction.cChild chief K).fst.Y → ZMod 2**The phase class `Δ_{χ,κ}` on the C-child carrier** — `DeltaC` transported along the canonical collapse `B/M' ≃* C` (`cChildCollapse`); the cocycle P7's `phaseCount`/`phaseCoverPair` consume at `ζ := Delta Z chi` (design §4.7; per-cocycle discipline, no class-invariance asserted).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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 hinvchi↥(Q2Presentation.Induction.XT chief K)) BQ2Presentation.BoundaryPackage Q2Presentation.GQ2Profinite(Q2Presentation.Induction.cChildQ2Presentation.Induction.cChild {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPair**The C-child framed pair** (the carrier of `X_Γ(C)`; manuscript `C = Y/K` via `B/M' ≅ C`, `mChildCollapse`).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor).sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.ρQ2Presentation.boundaryFramedSurj B (Q2Presentation.Induction.cChild chief K).fst (Q2Presentation.Induction.cChild chief K).snd)**`q2_zeroEdgePointwise` — the R4b pointwise identity at the LOCAL source** (`prop:zeroedge` clauses S3–S5 at `G_ℚ₂`, engine form): the `ι`-token is the placed citable `q2_trivialCoeff_h2_line` (NSW (7.1.8)(ii) + (7.2.6), audit §H); only the F-∂ floor remains hypothesis-shaped.
-
theoremdefined in Q2Presentation/Quadratic/ConstrainedGauss.leancomplete
theorem Q2Presentation.Quadratic.QuadF2.addLinear_nonsingular_iff.{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) (lModule.Dual (ZMod 2) V: Module.DualModule.Dual.{u_4, u_5} (R : Type u_4) (M : Type u_5) [Semiring R] [AddCommMonoid M] [Module R M] : Type (max u_5 u_4)The left dual space of an R-module M is the R-module of linear maps `M → R`.(ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.2) VType u_1) : (qQ2Presentation.Quadratic.QuadF2 V.addLinearQ2Presentation.Quadratic.QuadF2.addLinear.{u_1} {V : Type u_1} [AddCommGroup V] [Module (ZMod 2) V] (q : Q2Presentation.Quadratic.QuadF2 V) (l : Module.Dual (ZMod 2) V) : Q2Presentation.Quadratic.QuadF2 VAdding a **linear term** to a `QuadF2` (`eq:Qkappadifference` l.2158–2163 / `eq:candidategeneralQ` l.2487–2491 at form level, constants dropped): the polar form is unchanged.lModule.Dual (ZMod 2) V).NonsingularQ2Presentation.Quadratic.QuadF2.Nonsingular.{u_1} {V : Type u_1} [AddCommGroup V] [Module (ZMod 2) V] (q : Q2Presentation.Quadratic.QuadF2 V) : Prop**Nonsingularity** (the polar form is nondegenerate / perfect): the only vector pairing to `0` with everything is `0`. For a nonzero invariant form on a simple self-dual `V` this is automatic (`lem:zeropolar`, l.3452).↔Iff (a b : Prop) : PropIf and only if, or logical bi-implication. `a ↔ b` means that `a` implies `b` and vice versa. By `propext`, this implies that `a` and `b` are equal and hence any expression involving `a` is equivalent to the corresponding expression with `b` instead. Conventions for notations in identifiers: * The recommended spelling of `↔` in identifiers is `iff`. * The recommended spelling of `<->` in identifiers is `iff` (prefer `↔` over `<->`).qQ2Presentation.Quadratic.QuadF2 V.NonsingularQ2Presentation.Quadratic.QuadF2.Nonsingular.{u_1} {V : Type u_1} [AddCommGroup V] [Module (ZMod 2) V] (q : Q2Presentation.Quadratic.QuadF2 V) : Prop**Nonsingularity** (the polar form is nondegenerate / perfect): the only vector pairing to `0` with everything is `0`. For a nonzero invariant form on a simple self-dual `V` this is automatic (`lem:zeropolar`, l.3452).theorem Q2Presentation.Quadratic.QuadF2.addLinear_nonsingular_iff.{u_1} {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) (lModule.Dual (ZMod 2) V: Module.DualModule.Dual.{u_4, u_5} (R : Type u_4) (M : Type u_5) [Semiring R] [AddCommMonoid M] [Module R M] : Type (max u_5 u_4)The left dual space of an R-module M is the R-module of linear maps `M → R`.(ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.2) VType u_1) : (qQ2Presentation.Quadratic.QuadF2 V.addLinearQ2Presentation.Quadratic.QuadF2.addLinear.{u_1} {V : Type u_1} [AddCommGroup V] [Module (ZMod 2) V] (q : Q2Presentation.Quadratic.QuadF2 V) (l : Module.Dual (ZMod 2) V) : Q2Presentation.Quadratic.QuadF2 VAdding a **linear term** to a `QuadF2` (`eq:Qkappadifference` l.2158–2163 / `eq:candidategeneralQ` l.2487–2491 at form level, constants dropped): the polar form is unchanged.lModule.Dual (ZMod 2) V).NonsingularQ2Presentation.Quadratic.QuadF2.Nonsingular.{u_1} {V : Type u_1} [AddCommGroup V] [Module (ZMod 2) V] (q : Q2Presentation.Quadratic.QuadF2 V) : Prop**Nonsingularity** (the polar form is nondegenerate / perfect): the only vector pairing to `0` with everything is `0`. For a nonzero invariant form on a simple self-dual `V` this is automatic (`lem:zeropolar`, l.3452).↔Iff (a b : Prop) : PropIf and only if, or logical bi-implication. `a ↔ b` means that `a` implies `b` and vice versa. By `propext`, this implies that `a` and `b` are equal and hence any expression involving `a` is equivalent to the corresponding expression with `b` instead. Conventions for notations in identifiers: * The recommended spelling of `↔` in identifiers is `iff`. * The recommended spelling of `<->` in identifiers is `iff` (prefer `↔` over `<->`).qQ2Presentation.Quadratic.QuadF2 V.NonsingularQ2Presentation.Quadratic.QuadF2.Nonsingular.{u_1} {V : Type u_1} [AddCommGroup V] [Module (ZMod 2) V] (q : Q2Presentation.Quadratic.QuadF2 V) : Prop**Nonsingularity** (the polar form is nondegenerate / perfect): the only vector pairing to `0` with everything is `0`. For a nonzero invariant form on a simple self-dual `V` this is automatic (`lem:zeropolar`, l.3452).A linear shift preserves nonsingularity (same polar form). This is why the zero-edge count of the *actual* pushout form `Q_κ` may be computed against the *base* form `Q⁰` (`prop:zeroedge` l.4358–4366).
-
theoremdefined in Q2Presentation/Quadratic/GaussSumValue.leancomplete
theorem Q2Presentation.Quadratic.gaussSum_eq_of_gaussType_eq.{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] [FintypeFintype.{u_4} (α : Type u_4) : Type u_4`Fintype α` means that `α` is finite, i.e. there are only finitely many distinct elements of type `α`. The evidence of this is a finset `elems` (a list up to permutation without duplicates), together with a proof that everything of type `α` is in the list.VcType u_1] [AddCommGroupAddCommGroup.{u} (G : Type u) : Type uAn additive commutative group is an additive group with commutative `(+)`.VlType u_2] [ModuleModule.{u, v} (R : Type u) (M : Type v) [Semiring R] [AddCommMonoid M] : Type (max u v)A module is a generalization of vector spaces to a scalar semiring. It consists of a scalar semiring `R` and an additive monoid of "vectors" `M`, connected by a "scalar multiplication" operation `r • x : M` (where `r : R` and `x : M`) with some natural associativity and distributivity axioms similar to those on a ring.(ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.2) VlType u_2] [FintypeFintype.{u_4} (α : Type u_4) : Type u_4`Fintype α` means that `α` is finite, i.e. there are only finitely many distinct elements of type `α`. The evidence of this is a finset `elems` (a list up to permutation without duplicates), together with a proof that everything of type `α` is in the list.VlType u_2] (qcQ2Presentation.Quadratic.QuadF2 Vc: Q2Presentation.Quadratic.QuadF2Q2Presentation.Quadratic.QuadF2.{u_2} (V : Type u_2) [AddCommGroup V] [Module (ZMod 2) V] : Type u_2A **quadratic form over `F₂`** with its bilinear polar (commutator) form.VcType u_1) (hnscqc.Nonsingular: qcQ2Presentation.Quadratic.QuadF2 Vc.NonsingularQ2Presentation.Quadratic.QuadF2.Nonsingular.{u_1} {V : Type u_1} [AddCommGroup V] [Module (ZMod 2) V] (q : Q2Presentation.Quadratic.QuadF2 V) : Prop**Nonsingularity** (the polar form is nondegenerate / perfect): the only vector pairing to `0` with everything is `0`. For a nonzero invariant form on a simple self-dual `V` this is automatic (`lem:zeropolar`, l.3452).) (qlQ2Presentation.Quadratic.QuadF2 Vl: Q2Presentation.Quadratic.QuadF2Q2Presentation.Quadratic.QuadF2.{u_2} (V : Type u_2) [AddCommGroup V] [Module (ZMod 2) V] : Type u_2A **quadratic form over `F₂`** with its bilinear polar (commutator) form.VlType u_2) (hnslql.Nonsingular: qlQ2Presentation.Quadratic.QuadF2 Vl.NonsingularQ2Presentation.Quadratic.QuadF2.Nonsingular.{u_1} {V : Type u_1} [AddCommGroup V] [Module (ZMod 2) V] (q : Q2Presentation.Quadratic.QuadF2 V) : Prop**Nonsingularity** (the polar form is nondegenerate / perfect): the only vector pairing to `0` with everything is `0`. For a nonzero invariant form on a simple self-dual `V` this is automatic (`lem:zeropolar`, l.3452).) (hdimModule.finrank (ZMod 2) Vc = Module.finrank (ZMod 2) Vl: Module.finrankModule.finrank.{u_1, u_2} (R : Type u_1) (M : Type u_2) [Semiring R] [AddCommMonoid M] [Module R M] : ℕThe rank of a module as a natural number. For a finite-dimensional vector space `V` over a field `k`, `Module.finrank k V` is equal to the dimension of `V` over `k`. For a general module `M` over a ring `R`, `Module.finrank R M` is defined to be the supremum of the cardinalities of the `R`-linearly independent subsets of `M`, if this supremum is finite. It is defined by convention to be `0` if this supremum is infinite. See `Module.rank` for a cardinal-valued version where infinite rank modules have rank an infinite cardinal. Note that if `R` is not a field then there can exist modules `M` with `¬(Module.Finite R M)` but `finrank R M ≠ 0`. For example `ℚ` has `finrank` equal to `1` over `ℤ`, because the nonempty `ℤ`-linearly independent subsets of `ℚ` are precisely the nonzero singletons.(ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.2) VcType u_1=Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`. We use `a = b` as notation for `Eq a b`. A fundamental property of equality is that it is an equivalence relation. ``` variable (α : Type) (a b c d : α) variable (hab : a = b) (hcb : c = b) (hcd : c = d) example : a = d := Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd ``` Equality is much more than an equivalence relation, however. It has the important property that every assertion respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value. That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`. Example: ``` example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := Eq.subst h1 h2 example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := h1 ▸ h2 ``` The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`. For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality) Conventions for notations in identifiers: * The recommended spelling of `=` in identifiers is `eq`.Module.finrankModule.finrank.{u_1, u_2} (R : Type u_1) (M : Type u_2) [Semiring R] [AddCommMonoid M] [Module R M] : ℕThe rank of a module as a natural number. For a finite-dimensional vector space `V` over a field `k`, `Module.finrank k V` is equal to the dimension of `V` over `k`. For a general module `M` over a ring `R`, `Module.finrank R M` is defined to be the supremum of the cardinalities of the `R`-linearly independent subsets of `M`, if this supremum is finite. It is defined by convention to be `0` if this supremum is infinite. See `Module.rank` for a cardinal-valued version where infinite rank modules have rank an infinite cardinal. Note that if `R` is not a field then there can exist modules `M` with `¬(Module.Finite R M)` but `finrank R M ≠ 0`. For example `ℚ` has `finrank` equal to `1` over `ℤ`, because the nonempty `ℤ`-linearly independent subsets of `ℚ` are precisely the nonzero singletons.(ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.2) VlType u_2) (hpos0 < Module.finrank (ZMod 2) Vc: 0 <LT.lt.{u} {α : Type u} [self : LT α] : α → α → PropThe less-than relation: `x < y` Conventions for notations in identifiers: * The recommended spelling of `<` in identifiers is `lt`.Module.finrankModule.finrank.{u_1, u_2} (R : Type u_1) (M : Type u_2) [Semiring R] [AddCommMonoid M] [Module R M] : ℕThe rank of a module as a natural number. For a finite-dimensional vector space `V` over a field `k`, `Module.finrank k V` is equal to the dimension of `V` over `k`. For a general module `M` over a ring `R`, `Module.finrank R M` is defined to be the supremum of the cardinalities of the `R`-linearly independent subsets of `M`, if this supremum is finite. It is defined by convention to be `0` if this supremum is infinite. See `Module.rank` for a cardinal-valued version where infinite rank modules have rank an infinite cardinal. Note that if `R` is not a field then there can exist modules `M` with `¬(Module.Finite R M)` but `finrank R M ≠ 0`. For example `ℚ` has `finrank` equal to `1` over `ℤ`, because the nonempty `ℤ`-linearly independent subsets of `ℚ` are precisely the nonzero singletons.(ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.2) VcType u_1) (htypeQ2Presentation.Quadratic.gaussType qc = Q2Presentation.Quadratic.gaussType ql: Q2Presentation.Quadratic.gaussTypeQ2Presentation.Quadratic.gaussType.{u_1} {V : Type u_1} [AddCommGroup V] [Module (ZMod 2) V] (q : Q2Presentation.Quadratic.QuadF2 V) : BoolThe **Gauss type** of a quadratic form: the `Bool`-valued ramification flag read off from its zero count — `true` (plus type / ramified) iff the count is the plus value `baseZeroCount true d`, else `false` (minus type / unramified). This is the form's own Arf type made into the *unique* `ram` for which `# Q⁻¹(0) = baseZeroCount ram d` (uniqueness is `baseZeroCount_ne`; that this `ram` is *realized* is the Dickson zero count, `candidate_numZeros_eq_gaussType` / `q2_local_numZeros_eq_gaussType` in `DicksonCount.lean`). Tying the flag to the form this way is exactly the de-bugging of the old *free* `ram` argument.qcQ2Presentation.Quadratic.QuadF2 Vc=Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`. We use `a = b` as notation for `Eq a b`. A fundamental property of equality is that it is an equivalence relation. ``` variable (α : Type) (a b c d : α) variable (hab : a = b) (hcb : c = b) (hcd : c = d) example : a = d := Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd ``` Equality is much more than an equivalence relation, however. It has the important property that every assertion respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value. That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`. Example: ``` example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := Eq.subst h1 h2 example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := h1 ▸ h2 ``` The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`. For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality) Conventions for notations in identifiers: * The recommended spelling of `=` in identifiers is `eq`.Q2Presentation.Quadratic.gaussTypeQ2Presentation.Quadratic.gaussType.{u_1} {V : Type u_1} [AddCommGroup V] [Module (ZMod 2) V] (q : Q2Presentation.Quadratic.QuadF2 V) : BoolThe **Gauss type** of a quadratic form: the `Bool`-valued ramification flag read off from its zero count — `true` (plus type / ramified) iff the count is the plus value `baseZeroCount true d`, else `false` (minus type / unramified). This is the form's own Arf type made into the *unique* `ram` for which `# Q⁻¹(0) = baseZeroCount ram d` (uniqueness is `baseZeroCount_ne`; that this `ram` is *realized* is the Dickson zero count, `candidate_numZeros_eq_gaussType` / `q2_local_numZeros_eq_gaussType` in `DicksonCount.lean`). Tying the flag to the form this way is exactly the de-bugging of the old *free* `ram` argument.qlQ2Presentation.Quadratic.QuadF2 Vl) : Q2Presentation.Quadratic.Dickson.gaussSumQ2Presentation.Quadratic.Dickson.gaussSum.{u_1} {V : Type u_1} [AddCommGroup V] [Module (ZMod 2) V] [Fintype V] (q : Q2Presentation.Quadratic.QuadF2 V) : ℤThe **Gauss sum** `D(q) = ∑_v χ(q v)`.qcQ2Presentation.Quadratic.QuadF2 Vc=Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`. We use `a = b` as notation for `Eq a b`. A fundamental property of equality is that it is an equivalence relation. ``` variable (α : Type) (a b c d : α) variable (hab : a = b) (hcb : c = b) (hcd : c = d) example : a = d := Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd ``` Equality is much more than an equivalence relation, however. It has the important property that every assertion respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value. That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`. Example: ``` example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := Eq.subst h1 h2 example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := h1 ▸ h2 ``` The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`. For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality) Conventions for notations in identifiers: * The recommended spelling of `=` in identifiers is `eq`.Q2Presentation.Quadratic.Dickson.gaussSumQ2Presentation.Quadratic.Dickson.gaussSum.{u_1} {V : Type u_1} [AddCommGroup V] [Module (ZMod 2) V] [Fintype V] (q : Q2Presentation.Quadratic.QuadF2 V) : ℤThe **Gauss sum** `D(q) = ∑_v χ(q v)`.qlQ2Presentation.Quadratic.QuadF2 Vltheorem Q2Presentation.Quadratic.gaussSum_eq_of_gaussType_eq.{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] [FintypeFintype.{u_4} (α : Type u_4) : Type u_4`Fintype α` means that `α` is finite, i.e. there are only finitely many distinct elements of type `α`. The evidence of this is a finset `elems` (a list up to permutation without duplicates), together with a proof that everything of type `α` is in the list.VcType u_1] [AddCommGroupAddCommGroup.{u} (G : Type u) : Type uAn additive commutative group is an additive group with commutative `(+)`.VlType u_2] [ModuleModule.{u, v} (R : Type u) (M : Type v) [Semiring R] [AddCommMonoid M] : Type (max u v)A module is a generalization of vector spaces to a scalar semiring. It consists of a scalar semiring `R` and an additive monoid of "vectors" `M`, connected by a "scalar multiplication" operation `r • x : M` (where `r : R` and `x : M`) with some natural associativity and distributivity axioms similar to those on a ring.(ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.2) VlType u_2] [FintypeFintype.{u_4} (α : Type u_4) : Type u_4`Fintype α` means that `α` is finite, i.e. there are only finitely many distinct elements of type `α`. The evidence of this is a finset `elems` (a list up to permutation without duplicates), together with a proof that everything of type `α` is in the list.VlType u_2] (qcQ2Presentation.Quadratic.QuadF2 Vc: Q2Presentation.Quadratic.QuadF2Q2Presentation.Quadratic.QuadF2.{u_2} (V : Type u_2) [AddCommGroup V] [Module (ZMod 2) V] : Type u_2A **quadratic form over `F₂`** with its bilinear polar (commutator) form.VcType u_1) (hnscqc.Nonsingular: qcQ2Presentation.Quadratic.QuadF2 Vc.NonsingularQ2Presentation.Quadratic.QuadF2.Nonsingular.{u_1} {V : Type u_1} [AddCommGroup V] [Module (ZMod 2) V] (q : Q2Presentation.Quadratic.QuadF2 V) : Prop**Nonsingularity** (the polar form is nondegenerate / perfect): the only vector pairing to `0` with everything is `0`. For a nonzero invariant form on a simple self-dual `V` this is automatic (`lem:zeropolar`, l.3452).) (qlQ2Presentation.Quadratic.QuadF2 Vl: Q2Presentation.Quadratic.QuadF2Q2Presentation.Quadratic.QuadF2.{u_2} (V : Type u_2) [AddCommGroup V] [Module (ZMod 2) V] : Type u_2A **quadratic form over `F₂`** with its bilinear polar (commutator) form.VlType u_2) (hnslql.Nonsingular: qlQ2Presentation.Quadratic.QuadF2 Vl.NonsingularQ2Presentation.Quadratic.QuadF2.Nonsingular.{u_1} {V : Type u_1} [AddCommGroup V] [Module (ZMod 2) V] (q : Q2Presentation.Quadratic.QuadF2 V) : Prop**Nonsingularity** (the polar form is nondegenerate / perfect): the only vector pairing to `0` with everything is `0`. For a nonzero invariant form on a simple self-dual `V` this is automatic (`lem:zeropolar`, l.3452).) (hdimModule.finrank (ZMod 2) Vc = Module.finrank (ZMod 2) Vl: Module.finrankModule.finrank.{u_1, u_2} (R : Type u_1) (M : Type u_2) [Semiring R] [AddCommMonoid M] [Module R M] : ℕThe rank of a module as a natural number. For a finite-dimensional vector space `V` over a field `k`, `Module.finrank k V` is equal to the dimension of `V` over `k`. For a general module `M` over a ring `R`, `Module.finrank R M` is defined to be the supremum of the cardinalities of the `R`-linearly independent subsets of `M`, if this supremum is finite. It is defined by convention to be `0` if this supremum is infinite. See `Module.rank` for a cardinal-valued version where infinite rank modules have rank an infinite cardinal. Note that if `R` is not a field then there can exist modules `M` with `¬(Module.Finite R M)` but `finrank R M ≠ 0`. For example `ℚ` has `finrank` equal to `1` over `ℤ`, because the nonempty `ℤ`-linearly independent subsets of `ℚ` are precisely the nonzero singletons.(ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.2) VcType u_1=Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`. We use `a = b` as notation for `Eq a b`. A fundamental property of equality is that it is an equivalence relation. ``` variable (α : Type) (a b c d : α) variable (hab : a = b) (hcb : c = b) (hcd : c = d) example : a = d := Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd ``` Equality is much more than an equivalence relation, however. It has the important property that every assertion respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value. That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`. Example: ``` example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := Eq.subst h1 h2 example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := h1 ▸ h2 ``` The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`. For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality) Conventions for notations in identifiers: * The recommended spelling of `=` in identifiers is `eq`.Module.finrankModule.finrank.{u_1, u_2} (R : Type u_1) (M : Type u_2) [Semiring R] [AddCommMonoid M] [Module R M] : ℕThe rank of a module as a natural number. For a finite-dimensional vector space `V` over a field `k`, `Module.finrank k V` is equal to the dimension of `V` over `k`. For a general module `M` over a ring `R`, `Module.finrank R M` is defined to be the supremum of the cardinalities of the `R`-linearly independent subsets of `M`, if this supremum is finite. It is defined by convention to be `0` if this supremum is infinite. See `Module.rank` for a cardinal-valued version where infinite rank modules have rank an infinite cardinal. Note that if `R` is not a field then there can exist modules `M` with `¬(Module.Finite R M)` but `finrank R M ≠ 0`. For example `ℚ` has `finrank` equal to `1` over `ℤ`, because the nonempty `ℤ`-linearly independent subsets of `ℚ` are precisely the nonzero singletons.(ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.2) VlType u_2) (hpos0 < Module.finrank (ZMod 2) Vc: 0 <LT.lt.{u} {α : Type u} [self : LT α] : α → α → PropThe less-than relation: `x < y` Conventions for notations in identifiers: * The recommended spelling of `<` in identifiers is `lt`.Module.finrankModule.finrank.{u_1, u_2} (R : Type u_1) (M : Type u_2) [Semiring R] [AddCommMonoid M] [Module R M] : ℕThe rank of a module as a natural number. For a finite-dimensional vector space `V` over a field `k`, `Module.finrank k V` is equal to the dimension of `V` over `k`. For a general module `M` over a ring `R`, `Module.finrank R M` is defined to be the supremum of the cardinalities of the `R`-linearly independent subsets of `M`, if this supremum is finite. It is defined by convention to be `0` if this supremum is infinite. See `Module.rank` for a cardinal-valued version where infinite rank modules have rank an infinite cardinal. Note that if `R` is not a field then there can exist modules `M` with `¬(Module.Finite R M)` but `finrank R M ≠ 0`. For example `ℚ` has `finrank` equal to `1` over `ℤ`, because the nonempty `ℤ`-linearly independent subsets of `ℚ` are precisely the nonzero singletons.(ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.2) VcType u_1) (htypeQ2Presentation.Quadratic.gaussType qc = Q2Presentation.Quadratic.gaussType ql: Q2Presentation.Quadratic.gaussTypeQ2Presentation.Quadratic.gaussType.{u_1} {V : Type u_1} [AddCommGroup V] [Module (ZMod 2) V] (q : Q2Presentation.Quadratic.QuadF2 V) : BoolThe **Gauss type** of a quadratic form: the `Bool`-valued ramification flag read off from its zero count — `true` (plus type / ramified) iff the count is the plus value `baseZeroCount true d`, else `false` (minus type / unramified). This is the form's own Arf type made into the *unique* `ram` for which `# Q⁻¹(0) = baseZeroCount ram d` (uniqueness is `baseZeroCount_ne`; that this `ram` is *realized* is the Dickson zero count, `candidate_numZeros_eq_gaussType` / `q2_local_numZeros_eq_gaussType` in `DicksonCount.lean`). Tying the flag to the form this way is exactly the de-bugging of the old *free* `ram` argument.qcQ2Presentation.Quadratic.QuadF2 Vc=Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`. We use `a = b` as notation for `Eq a b`. A fundamental property of equality is that it is an equivalence relation. ``` variable (α : Type) (a b c d : α) variable (hab : a = b) (hcb : c = b) (hcd : c = d) example : a = d := Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd ``` Equality is much more than an equivalence relation, however. It has the important property that every assertion respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value. That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`. Example: ``` example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := Eq.subst h1 h2 example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := h1 ▸ h2 ``` The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`. For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality) Conventions for notations in identifiers: * The recommended spelling of `=` in identifiers is `eq`.Q2Presentation.Quadratic.gaussTypeQ2Presentation.Quadratic.gaussType.{u_1} {V : Type u_1} [AddCommGroup V] [Module (ZMod 2) V] (q : Q2Presentation.Quadratic.QuadF2 V) : BoolThe **Gauss type** of a quadratic form: the `Bool`-valued ramification flag read off from its zero count — `true` (plus type / ramified) iff the count is the plus value `baseZeroCount true d`, else `false` (minus type / unramified). This is the form's own Arf type made into the *unique* `ram` for which `# Q⁻¹(0) = baseZeroCount ram d` (uniqueness is `baseZeroCount_ne`; that this `ram` is *realized* is the Dickson zero count, `candidate_numZeros_eq_gaussType` / `q2_local_numZeros_eq_gaussType` in `DicksonCount.lean`). Tying the flag to the form this way is exactly the de-bugging of the old *free* `ram` argument.qlQ2Presentation.Quadratic.QuadF2 Vl) : Q2Presentation.Quadratic.Dickson.gaussSumQ2Presentation.Quadratic.Dickson.gaussSum.{u_1} {V : Type u_1} [AddCommGroup V] [Module (ZMod 2) V] [Fintype V] (q : Q2Presentation.Quadratic.QuadF2 V) : ℤThe **Gauss sum** `D(q) = ∑_v χ(q v)`.qcQ2Presentation.Quadratic.QuadF2 Vc=Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`. We use `a = b` as notation for `Eq a b`. A fundamental property of equality is that it is an equivalence relation. ``` variable (α : Type) (a b c d : α) variable (hab : a = b) (hcb : c = b) (hcd : c = d) example : a = d := Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd ``` Equality is much more than an equivalence relation, however. It has the important property that every assertion respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value. That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`. Example: ``` example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := Eq.subst h1 h2 example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := h1 ▸ h2 ``` The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`. For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality) Conventions for notations in identifiers: * The recommended spelling of `=` in identifiers is `eq`.Q2Presentation.Quadratic.Dickson.gaussSumQ2Presentation.Quadratic.Dickson.gaussSum.{u_1} {V : Type u_1} [AddCommGroup V] [Module (ZMod 2) V] [Fintype V] (q : Q2Presentation.Quadratic.QuadF2 V) : ℤThe **Gauss sum** `D(q) = ∑_v χ(q v)`.qlQ2Presentation.Quadratic.QuadF2 Vl**The common-Gauss-sum glue for `prop:zeroedge`** (`eq:recursionR4b` l.4342–4349): two nonsingular forms of the same positive dimension and the same Gauss *type* have the same Gauss *sum* `G(Q⁰) = ±2^{d/2}`. The two §6 type-pinning inputs (`gaussType Q_A⁰ = ram(V)` from `prop:candidatezero`, `gaussType Q⁰_loc = ram(V)` from `prop:localzero`) plug in here to produce the single common factor `G(Q⁰)` of the zero-edge formula.
Proved in §8 of the paper. Ingredients: Lemma 8.7 Lemma 6.8 Theorem 6.4 Theorem 6.5.
Lemma 8.15 of the paper (Phase-cover transform).
For \zeta\in H^2(C,\F_2), let p_\zeta:C_\zeta\twoheadrightarrow C be the
corresponding central double cover and let n_{\Gamma,0}(\zeta) count the
lower exact-image maps for which it is unobstructed. Then
s_\Gamma(\zeta)=2n_{\Gamma,0}(\zeta)-e_\Gamma(C)
and
\boxed{ 8n_{\Gamma,0}(\zeta)= \sum_{\substack{\widetilde J\le C_\zeta\\ p_\zeta(\widetilde J)=C}} e_\Gamma(\widetilde J).}
Lean code for Lemma8.15●5 declarations
Associated Lean declarations
-
defdefined in Q2Presentation/Induction/PhaseCoverTransform.leancomplete
def Q2Presentation.Induction.phaseCoverPair {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) (zeta(Q2Presentation.Induction.cChild chief K).fst.Y → (Q2Presentation.Induction.cChild chief K).fst.Y → ZMod 2: (Q2Presentation.Induction.cChildQ2Presentation.Induction.cChild {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPair**The C-child framed pair** (the carrier of `X_Γ(C)`; manuscript `C = Y/K` via `B/M' ≅ C`, `mChildCollapse`).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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`.→ (Q2Presentation.Induction.cChildQ2Presentation.Induction.cChild {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPair**The C-child framed pair** (the carrier of `X_Γ(C)`; manuscript `C = Y/K` via `B/M' ≅ C`, `mChildCollapse`).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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`.→ ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.2) (hz1∀ (y : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta 1 y = 0: ∀ (y(Q2Presentation.Induction.cChild chief K).fst.Y: (Q2Presentation.Induction.cChildQ2Presentation.Induction.cChild {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPair**The C-child framed pair** (the carrier of `X_Γ(C)`; manuscript `C = Y/K` via `B/M' ≅ C`, `mChildCollapse`).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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`.), zeta(Q2Presentation.Induction.cChild chief K).fst.Y → (Q2Presentation.Induction.cChild chief K).fst.Y → ZMod 21 y(Q2Presentation.Induction.cChild chief K).fst.Y=Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`. We use `a = b` as notation for `Eq a b`. A fundamental property of equality is that it is an equivalence relation. ``` variable (α : Type) (a b c d : α) variable (hab : a = b) (hcb : c = b) (hcd : c = d) example : a = d := Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd ``` Equality is much more than an equivalence relation, however. It has the important property that every assertion respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value. That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`. Example: ``` example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := Eq.subst h1 h2 example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := h1 ▸ h2 ``` The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`. For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality) Conventions for notations in identifiers: * The recommended spelling of `=` in identifiers is `eq`.0) (hz2∀ (y : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta y 1 = 0: ∀ (y(Q2Presentation.Induction.cChild chief K).fst.Y: (Q2Presentation.Induction.cChildQ2Presentation.Induction.cChild {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPair**The C-child framed pair** (the carrier of `X_Γ(C)`; manuscript `C = Y/K` via `B/M' ≅ C`, `mChildCollapse`).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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`.), zeta(Q2Presentation.Induction.cChild chief K).fst.Y → (Q2Presentation.Induction.cChild chief K).fst.Y → ZMod 2y(Q2Presentation.Induction.cChild 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`.0) (hzc∀ (a b c : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta a b + zeta (a * b) c = zeta b c + zeta a (b * c): ∀ (a(Q2Presentation.Induction.cChild chief K).fst.Yb(Q2Presentation.Induction.cChild chief K).fst.Yc(Q2Presentation.Induction.cChild chief K).fst.Y: (Q2Presentation.Induction.cChildQ2Presentation.Induction.cChild {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPair**The C-child framed pair** (the carrier of `X_Γ(C)`; manuscript `C = Y/K` via `B/M' ≅ C`, `mChildCollapse`).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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`.), zeta(Q2Presentation.Induction.cChild chief K).fst.Y → (Q2Presentation.Induction.cChild chief K).fst.Y → ZMod 2a(Q2Presentation.Induction.cChild chief K).fst.Yb(Q2Presentation.Induction.cChild chief K).fst.Y+HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `+` in identifiers is `add`.zeta(Q2Presentation.Induction.cChild chief K).fst.Y → (Q2Presentation.Induction.cChild chief K).fst.Y → ZMod 2(HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.a(Q2Presentation.Induction.cChild chief K).fst.Y*HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.b(Q2Presentation.Induction.cChild chief K).fst.Y)HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.c(Q2Presentation.Induction.cChild chief K).fst.Y=Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`. We use `a = b` as notation for `Eq a b`. A fundamental property of equality is that it is an equivalence relation. ``` variable (α : Type) (a b c d : α) variable (hab : a = b) (hcb : c = b) (hcd : c = d) example : a = d := Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd ``` Equality is much more than an equivalence relation, however. It has the important property that every assertion respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value. That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`. Example: ``` example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := Eq.subst h1 h2 example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := h1 ▸ h2 ``` The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`. For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality) Conventions for notations in identifiers: * The recommended spelling of `=` in identifiers is `eq`.zeta(Q2Presentation.Induction.cChild chief K).fst.Y → (Q2Presentation.Induction.cChild chief K).fst.Y → ZMod 2b(Q2Presentation.Induction.cChild chief K).fst.Yc(Q2Presentation.Induction.cChild chief K).fst.Y+HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `+` in identifiers is `add`.zeta(Q2Presentation.Induction.cChild chief K).fst.Y → (Q2Presentation.Induction.cChild chief K).fst.Y → ZMod 2a(Q2Presentation.Induction.cChild chief K).fst.Y(HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.b(Q2Presentation.Induction.cChild chief K).fst.Y*HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.c(Q2Presentation.Induction.cChild chief K).fst.Y)HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.) : Q2Presentation.Induction.FramedPairQ2Presentation.Induction.FramedPair : Type 1A **framed pair** `(𝒴, F)`: a boundary-framed marked target together with a boundary frame for it (manuscript Definition 4.1 + `eq:beta`). This is the index of Theorem 4.2: the boundary-framed surjection count `e_Γ^β` is a function of the pair. The induction of `sec:induction` ranges over *all* such pairs simultaneously ("the induction is stated globally", l.1213), ordered by `|L_Y|`.def Q2Presentation.Induction.phaseCoverPair {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) (zeta(Q2Presentation.Induction.cChild chief K).fst.Y → (Q2Presentation.Induction.cChild chief K).fst.Y → ZMod 2: (Q2Presentation.Induction.cChildQ2Presentation.Induction.cChild {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPair**The C-child framed pair** (the carrier of `X_Γ(C)`; manuscript `C = Y/K` via `B/M' ≅ C`, `mChildCollapse`).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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`.→ (Q2Presentation.Induction.cChildQ2Presentation.Induction.cChild {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPair**The C-child framed pair** (the carrier of `X_Γ(C)`; manuscript `C = Y/K` via `B/M' ≅ C`, `mChildCollapse`).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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`.→ ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.2) (hz1∀ (y : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta 1 y = 0: ∀ (y(Q2Presentation.Induction.cChild chief K).fst.Y: (Q2Presentation.Induction.cChildQ2Presentation.Induction.cChild {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPair**The C-child framed pair** (the carrier of `X_Γ(C)`; manuscript `C = Y/K` via `B/M' ≅ C`, `mChildCollapse`).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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`.), zeta(Q2Presentation.Induction.cChild chief K).fst.Y → (Q2Presentation.Induction.cChild chief K).fst.Y → ZMod 21 y(Q2Presentation.Induction.cChild chief K).fst.Y=Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`. We use `a = b` as notation for `Eq a b`. A fundamental property of equality is that it is an equivalence relation. ``` variable (α : Type) (a b c d : α) variable (hab : a = b) (hcb : c = b) (hcd : c = d) example : a = d := Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd ``` Equality is much more than an equivalence relation, however. It has the important property that every assertion respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value. That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`. Example: ``` example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := Eq.subst h1 h2 example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := h1 ▸ h2 ``` The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`. For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality) Conventions for notations in identifiers: * The recommended spelling of `=` in identifiers is `eq`.0) (hz2∀ (y : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta y 1 = 0: ∀ (y(Q2Presentation.Induction.cChild chief K).fst.Y: (Q2Presentation.Induction.cChildQ2Presentation.Induction.cChild {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPair**The C-child framed pair** (the carrier of `X_Γ(C)`; manuscript `C = Y/K` via `B/M' ≅ C`, `mChildCollapse`).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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`.), zeta(Q2Presentation.Induction.cChild chief K).fst.Y → (Q2Presentation.Induction.cChild chief K).fst.Y → ZMod 2y(Q2Presentation.Induction.cChild 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`.0) (hzc∀ (a b c : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta a b + zeta (a * b) c = zeta b c + zeta a (b * c): ∀ (a(Q2Presentation.Induction.cChild chief K).fst.Yb(Q2Presentation.Induction.cChild chief K).fst.Yc(Q2Presentation.Induction.cChild chief K).fst.Y: (Q2Presentation.Induction.cChildQ2Presentation.Induction.cChild {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPair**The C-child framed pair** (the carrier of `X_Γ(C)`; manuscript `C = Y/K` via `B/M' ≅ C`, `mChildCollapse`).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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`.), zeta(Q2Presentation.Induction.cChild chief K).fst.Y → (Q2Presentation.Induction.cChild chief K).fst.Y → ZMod 2a(Q2Presentation.Induction.cChild chief K).fst.Yb(Q2Presentation.Induction.cChild chief K).fst.Y+HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `+` in identifiers is `add`.zeta(Q2Presentation.Induction.cChild chief K).fst.Y → (Q2Presentation.Induction.cChild chief K).fst.Y → ZMod 2(HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.a(Q2Presentation.Induction.cChild chief K).fst.Y*HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.b(Q2Presentation.Induction.cChild chief K).fst.Y)HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.c(Q2Presentation.Induction.cChild chief K).fst.Y=Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`. We use `a = b` as notation for `Eq a b`. A fundamental property of equality is that it is an equivalence relation. ``` variable (α : Type) (a b c d : α) variable (hab : a = b) (hcb : c = b) (hcd : c = d) example : a = d := Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd ``` Equality is much more than an equivalence relation, however. It has the important property that every assertion respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value. That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`. Example: ``` example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := Eq.subst h1 h2 example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := h1 ▸ h2 ``` The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`. For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality) Conventions for notations in identifiers: * The recommended spelling of `=` in identifiers is `eq`.zeta(Q2Presentation.Induction.cChild chief K).fst.Y → (Q2Presentation.Induction.cChild chief K).fst.Y → ZMod 2b(Q2Presentation.Induction.cChild chief K).fst.Yc(Q2Presentation.Induction.cChild chief K).fst.Y+HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `+` in identifiers is `add`.zeta(Q2Presentation.Induction.cChild chief K).fst.Y → (Q2Presentation.Induction.cChild chief K).fst.Y → ZMod 2a(Q2Presentation.Induction.cChild chief K).fst.Y(HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.b(Q2Presentation.Induction.cChild chief K).fst.Y*HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.c(Q2Presentation.Induction.cChild chief K).fst.Y)HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.) : Q2Presentation.Induction.FramedPairQ2Presentation.Induction.FramedPair : Type 1A **framed pair** `(𝒴, F)`: a boundary-framed marked target together with a boundary frame for it (manuscript Definition 4.1 + `eq:beta`). This is the index of Theorem 4.2: the boundary-framed surjection count `e_Γ^β` is a function of the pair. The induction of `sec:induction` ranges over *all* such pairs simultaneously ("the induction is stated globally", l.1213), ordered by `|L_Y|`.**The phase-cover framed pair `C_ζ`** (`lem:phasecover`'s carrier, l.4376–4378): the normalized-cocycle central double cover of the C-child, with the pulled-back boundary framing of `lem:covertransform` (l.3822–3830). Built by W7a (`Lifting/CocycleCover.lean`); P3-U8's `phaseCoverPair` sketch resolves to this definition (P7 owns the carrier, U8 imports it — the §2.5/§7 coordination note of the P7 design).
-
theoremdefined in Q2Presentation/Induction/PhaseCoverTransform.leancomplete
theorem Q2Presentation.Induction.sec7_phaseCoverPartition_gammaA {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) (zeta(Q2Presentation.Induction.cChild chief K).fst.Y → (Q2Presentation.Induction.cChild chief K).fst.Y → ZMod 2: (Q2Presentation.Induction.cChildQ2Presentation.Induction.cChild {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPair**The C-child framed pair** (the carrier of `X_Γ(C)`; manuscript `C = Y/K` via `B/M' ≅ C`, `mChildCollapse`).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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`.→ (Q2Presentation.Induction.cChildQ2Presentation.Induction.cChild {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPair**The C-child framed pair** (the carrier of `X_Γ(C)`; manuscript `C = Y/K` via `B/M' ≅ C`, `mChildCollapse`).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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`.→ ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.2) (hz1∀ (y : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta 1 y = 0: ∀ (y(Q2Presentation.Induction.cChild chief K).fst.Y: (Q2Presentation.Induction.cChildQ2Presentation.Induction.cChild {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPair**The C-child framed pair** (the carrier of `X_Γ(C)`; manuscript `C = Y/K` via `B/M' ≅ C`, `mChildCollapse`).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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`.), zeta(Q2Presentation.Induction.cChild chief K).fst.Y → (Q2Presentation.Induction.cChild chief K).fst.Y → ZMod 21 y(Q2Presentation.Induction.cChild chief K).fst.Y=Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`. We use `a = b` as notation for `Eq a b`. A fundamental property of equality is that it is an equivalence relation. ``` variable (α : Type) (a b c d : α) variable (hab : a = b) (hcb : c = b) (hcd : c = d) example : a = d := Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd ``` Equality is much more than an equivalence relation, however. It has the important property that every assertion respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value. That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`. Example: ``` example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := Eq.subst h1 h2 example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := h1 ▸ h2 ``` The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`. For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality) Conventions for notations in identifiers: * The recommended spelling of `=` in identifiers is `eq`.0) (hz2∀ (y : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta y 1 = 0: ∀ (y(Q2Presentation.Induction.cChild chief K).fst.Y: (Q2Presentation.Induction.cChildQ2Presentation.Induction.cChild {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPair**The C-child framed pair** (the carrier of `X_Γ(C)`; manuscript `C = Y/K` via `B/M' ≅ C`, `mChildCollapse`).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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`.), zeta(Q2Presentation.Induction.cChild chief K).fst.Y → (Q2Presentation.Induction.cChild chief K).fst.Y → ZMod 2y(Q2Presentation.Induction.cChild 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`.0) (hzc∀ (a b c : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta a b + zeta (a * b) c = zeta b c + zeta a (b * c): ∀ (a(Q2Presentation.Induction.cChild chief K).fst.Yb(Q2Presentation.Induction.cChild chief K).fst.Yc(Q2Presentation.Induction.cChild chief K).fst.Y: (Q2Presentation.Induction.cChildQ2Presentation.Induction.cChild {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPair**The C-child framed pair** (the carrier of `X_Γ(C)`; manuscript `C = Y/K` via `B/M' ≅ C`, `mChildCollapse`).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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`.), zeta(Q2Presentation.Induction.cChild chief K).fst.Y → (Q2Presentation.Induction.cChild chief K).fst.Y → ZMod 2a(Q2Presentation.Induction.cChild chief K).fst.Yb(Q2Presentation.Induction.cChild chief K).fst.Y+HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `+` in identifiers is `add`.zeta(Q2Presentation.Induction.cChild chief K).fst.Y → (Q2Presentation.Induction.cChild chief K).fst.Y → ZMod 2(HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.a(Q2Presentation.Induction.cChild chief K).fst.Y*HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.b(Q2Presentation.Induction.cChild chief K).fst.Y)HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.c(Q2Presentation.Induction.cChild chief K).fst.Y=Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`. We use `a = b` as notation for `Eq a b`. A fundamental property of equality is that it is an equivalence relation. ``` variable (α : Type) (a b c d : α) variable (hab : a = b) (hcb : c = b) (hcd : c = d) example : a = d := Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd ``` Equality is much more than an equivalence relation, however. It has the important property that every assertion respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value. That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`. Example: ``` example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := Eq.subst h1 h2 example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := h1 ▸ h2 ``` The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`. For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality) Conventions for notations in identifiers: * The recommended spelling of `=` in identifiers is `eq`.zeta(Q2Presentation.Induction.cChild chief K).fst.Y → (Q2Presentation.Induction.cChild chief K).fst.Y → ZMod 2b(Q2Presentation.Induction.cChild chief K).fst.Yc(Q2Presentation.Induction.cChild chief K).fst.Y+HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `+` in identifiers is `add`.zeta(Q2Presentation.Induction.cChild chief K).fst.Y → (Q2Presentation.Induction.cChild chief K).fst.Y → ZMod 2a(Q2Presentation.Induction.cChild chief K).fst.Y(HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.b(Q2Presentation.Induction.cChild chief K).fst.Y*HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.c(Q2Presentation.Induction.cChild chief K).fst.Y)HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.) : 8 *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.Q2Presentation.Induction.phaseCountQ2Presentation.Induction.phaseCount {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (zeta : (Q2Presentation.Induction.cChild chief K).fst.Y → (Q2Presentation.Induction.cChild chief K).fst.Y → ZMod 2) (hz1 : ∀ (y : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta 1 y = 0) (hz2 : ∀ (y : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta y 1 = 0) (hzc : ∀ (a b c : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta a b + zeta (a * b) c = zeta b c + zeta a (b * c)) {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) : ℕ**`n_{Γ,0}(ζ)`** (l.4377–4379): the number of lower exact-image maps `ρ ∈ X_Γ(C)` for which the phase cover is unobstructed, i.e. which admit a weak (no image condition) framed lift through `p_ζ`. The child transport of P3-§4.7's `phaseChildTransport` slot is W7a's `cocycleChildEquiv`, absorbed into `cocycleCoverLiftHom`.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactorzeta(Q2Presentation.Induction.cChild chief K).fst.Y → (Q2Presentation.Induction.cChild chief K).fst.Y → ZMod 2hz1∀ (y : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta 1 y = 0hz2∀ (y : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta y 1 = 0hzc∀ (a b c : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta a b + zeta (a * b) c = zeta b c + zeta a (b * c)Q2Presentation.boundaryPackage_GammaAQ2Presentation.boundaryPackage_GammaA : Q2Presentation.BoundaryPackage Q2Presentation.GammaA**The candidate boundary package** (manuscript Prop 3.14, `prop:compatiblemarking`; plan Turn 4 §6). The Stage-C data of `Γ_A`: the common tame quotient `gammaTameMap`, the maximal pro-`2` quotient `p : Γ_A ⟶ Π`, and the common unramified character `ν = gammaTameMap ≫ ν_t`, through which both factor.=Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`. We use `a = b` as notation for `Eq a b`. A fundamental property of equality is that it is an equivalence relation. ``` variable (α : Type) (a b c d : α) variable (hab : a = b) (hcb : c = b) (hcd : c = d) example : a = d := Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd ``` Equality is much more than an equivalence relation, however. It has the important property that every assertion respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value. That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`. Example: ``` example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := Eq.subst h1 h2 example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := h1 ▸ h2 ``` The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`. For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality) Conventions for notations in identifiers: * The recommended spelling of `=` in identifiers is `eq`.∑ JQ2Presentation.Induction.phaseCoverStrata chief K zeta hz1 hz2 hzc, Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number. If `α` is infinite, `Nat.card α = 0`.(Q2Presentation.boundaryFramedSurjQ2Presentation.boundaryFramedSurj {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (Yt : Q2Presentation.BoundaryFramedTarget) (F : Q2Presentation.BoundaryFrame Yt) : TypeThe **boundary-framed surjections** `e_Γ^β(𝒴)` (manuscript `eq:eGamma`): the continuous surjections `f : Γ ↠ Y` whose induced map to `H × E` is the prescribed `β ∘ b_Γ`, i.e. `q_Y ∘ f = β ∘ b_Γ`. This is the subtype counted in Theorem 4.2; its cardinality is `e_Γ^β(𝒴)`.Q2Presentation.boundaryPackage_GammaAQ2Presentation.boundaryPackage_GammaA : Q2Presentation.BoundaryPackage Q2Presentation.GammaA**The candidate boundary package** (manuscript Prop 3.14, `prop:compatiblemarking`; plan Turn 4 §6). The Stage-C data of `Γ_A`: the common tame quotient `gammaTameMap`, the maximal pro-`2` quotient `p : Γ_A ⟶ Π`, and the common unramified character `ν = gammaTameMap ≫ ν_t`, through which both factor.(Q2Presentation.Induction.phaseStratumPairQ2Presentation.Induction.phaseStratumPair {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (zeta : (Q2Presentation.Induction.cChild chief K).fst.Y → (Q2Presentation.Induction.cChild chief K).fst.Y → ZMod 2) (hz1 : ∀ (y : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta 1 y = 0) (hz2 : ∀ (y : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta y 1 = 0) (hzc : ∀ (a b c : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta a b + zeta (a * b) c = zeta b c + zeta a (b * c)) (J : Q2Presentation.Induction.phaseCoverStrata chief K zeta hz1 hz2 hzc) : Q2Presentation.Induction.FramedPairThe stratum framed pair `(J̃, J̃ ∩ L̃, π̃|_J̃, θ̃|_J̃; same frame)` — an ordinary exact-image object in the same global boundary-framed category (l.3841–3843; mirror of `scalarCoverStratumPair`).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactorzeta(Q2Presentation.Induction.cChild chief K).fst.Y → (Q2Presentation.Induction.cChild chief K).fst.Y → ZMod 2hz1∀ (y : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta 1 y = 0hz2∀ (y : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta y 1 = 0hzc∀ (a b c : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta a b + zeta (a * b) c = zeta b c + zeta a (b * c)JQ2Presentation.Induction.phaseCoverStrata chief K zeta hz1 hz2 hzc).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.(Q2Presentation.Induction.phaseStratumPairQ2Presentation.Induction.phaseStratumPair {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (zeta : (Q2Presentation.Induction.cChild chief K).fst.Y → (Q2Presentation.Induction.cChild chief K).fst.Y → ZMod 2) (hz1 : ∀ (y : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta 1 y = 0) (hz2 : ∀ (y : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta y 1 = 0) (hzc : ∀ (a b c : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta a b + zeta (a * b) c = zeta b c + zeta a (b * c)) (J : Q2Presentation.Induction.phaseCoverStrata chief K zeta hz1 hz2 hzc) : Q2Presentation.Induction.FramedPairThe stratum framed pair `(J̃, J̃ ∩ L̃, π̃|_J̃, θ̃|_J̃; same frame)` — an ordinary exact-image object in the same global boundary-framed category (l.3841–3843; mirror of `scalarCoverStratumPair`).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactorzeta(Q2Presentation.Induction.cChild chief K).fst.Y → (Q2Presentation.Induction.cChild chief K).fst.Y → ZMod 2hz1∀ (y : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta 1 y = 0hz2∀ (y : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta y 1 = 0hzc∀ (a b c : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta a b + zeta (a * b) c = zeta b c + zeta a (b * c)JQ2Presentation.Induction.phaseCoverStrata chief K zeta hz1 hz2 hzc).sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.)theorem Q2Presentation.Induction.sec7_phaseCoverPartition_gammaA {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) (zeta(Q2Presentation.Induction.cChild chief K).fst.Y → (Q2Presentation.Induction.cChild chief K).fst.Y → ZMod 2: (Q2Presentation.Induction.cChildQ2Presentation.Induction.cChild {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPair**The C-child framed pair** (the carrier of `X_Γ(C)`; manuscript `C = Y/K` via `B/M' ≅ C`, `mChildCollapse`).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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`.→ (Q2Presentation.Induction.cChildQ2Presentation.Induction.cChild {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPair**The C-child framed pair** (the carrier of `X_Γ(C)`; manuscript `C = Y/K` via `B/M' ≅ C`, `mChildCollapse`).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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`.→ ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.2) (hz1∀ (y : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta 1 y = 0: ∀ (y(Q2Presentation.Induction.cChild chief K).fst.Y: (Q2Presentation.Induction.cChildQ2Presentation.Induction.cChild {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPair**The C-child framed pair** (the carrier of `X_Γ(C)`; manuscript `C = Y/K` via `B/M' ≅ C`, `mChildCollapse`).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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`.), zeta(Q2Presentation.Induction.cChild chief K).fst.Y → (Q2Presentation.Induction.cChild chief K).fst.Y → ZMod 21 y(Q2Presentation.Induction.cChild chief K).fst.Y=Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`. We use `a = b` as notation for `Eq a b`. A fundamental property of equality is that it is an equivalence relation. ``` variable (α : Type) (a b c d : α) variable (hab : a = b) (hcb : c = b) (hcd : c = d) example : a = d := Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd ``` Equality is much more than an equivalence relation, however. It has the important property that every assertion respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value. That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`. Example: ``` example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := Eq.subst h1 h2 example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := h1 ▸ h2 ``` The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`. For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality) Conventions for notations in identifiers: * The recommended spelling of `=` in identifiers is `eq`.0) (hz2∀ (y : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta y 1 = 0: ∀ (y(Q2Presentation.Induction.cChild chief K).fst.Y: (Q2Presentation.Induction.cChildQ2Presentation.Induction.cChild {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPair**The C-child framed pair** (the carrier of `X_Γ(C)`; manuscript `C = Y/K` via `B/M' ≅ C`, `mChildCollapse`).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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`.), zeta(Q2Presentation.Induction.cChild chief K).fst.Y → (Q2Presentation.Induction.cChild chief K).fst.Y → ZMod 2y(Q2Presentation.Induction.cChild 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`.0) (hzc∀ (a b c : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta a b + zeta (a * b) c = zeta b c + zeta a (b * c): ∀ (a(Q2Presentation.Induction.cChild chief K).fst.Yb(Q2Presentation.Induction.cChild chief K).fst.Yc(Q2Presentation.Induction.cChild chief K).fst.Y: (Q2Presentation.Induction.cChildQ2Presentation.Induction.cChild {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPair**The C-child framed pair** (the carrier of `X_Γ(C)`; manuscript `C = Y/K` via `B/M' ≅ C`, `mChildCollapse`).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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`.), zeta(Q2Presentation.Induction.cChild chief K).fst.Y → (Q2Presentation.Induction.cChild chief K).fst.Y → ZMod 2a(Q2Presentation.Induction.cChild chief K).fst.Yb(Q2Presentation.Induction.cChild chief K).fst.Y+HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `+` in identifiers is `add`.zeta(Q2Presentation.Induction.cChild chief K).fst.Y → (Q2Presentation.Induction.cChild chief K).fst.Y → ZMod 2(HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.a(Q2Presentation.Induction.cChild chief K).fst.Y*HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.b(Q2Presentation.Induction.cChild chief K).fst.Y)HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.c(Q2Presentation.Induction.cChild chief K).fst.Y=Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`. We use `a = b` as notation for `Eq a b`. A fundamental property of equality is that it is an equivalence relation. ``` variable (α : Type) (a b c d : α) variable (hab : a = b) (hcb : c = b) (hcd : c = d) example : a = d := Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd ``` Equality is much more than an equivalence relation, however. It has the important property that every assertion respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value. That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`. Example: ``` example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := Eq.subst h1 h2 example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := h1 ▸ h2 ``` The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`. For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality) Conventions for notations in identifiers: * The recommended spelling of `=` in identifiers is `eq`.zeta(Q2Presentation.Induction.cChild chief K).fst.Y → (Q2Presentation.Induction.cChild chief K).fst.Y → ZMod 2b(Q2Presentation.Induction.cChild chief K).fst.Yc(Q2Presentation.Induction.cChild chief K).fst.Y+HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `+` in identifiers is `add`.zeta(Q2Presentation.Induction.cChild chief K).fst.Y → (Q2Presentation.Induction.cChild chief K).fst.Y → ZMod 2a(Q2Presentation.Induction.cChild chief K).fst.Y(HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.b(Q2Presentation.Induction.cChild chief K).fst.Y*HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.c(Q2Presentation.Induction.cChild chief K).fst.Y)HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.) : 8 *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.Q2Presentation.Induction.phaseCountQ2Presentation.Induction.phaseCount {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (zeta : (Q2Presentation.Induction.cChild chief K).fst.Y → (Q2Presentation.Induction.cChild chief K).fst.Y → ZMod 2) (hz1 : ∀ (y : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta 1 y = 0) (hz2 : ∀ (y : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta y 1 = 0) (hzc : ∀ (a b c : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta a b + zeta (a * b) c = zeta b c + zeta a (b * c)) {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) : ℕ**`n_{Γ,0}(ζ)`** (l.4377–4379): the number of lower exact-image maps `ρ ∈ X_Γ(C)` for which the phase cover is unobstructed, i.e. which admit a weak (no image condition) framed lift through `p_ζ`. The child transport of P3-§4.7's `phaseChildTransport` slot is W7a's `cocycleChildEquiv`, absorbed into `cocycleCoverLiftHom`.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactorzeta(Q2Presentation.Induction.cChild chief K).fst.Y → (Q2Presentation.Induction.cChild chief K).fst.Y → ZMod 2hz1∀ (y : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta 1 y = 0hz2∀ (y : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta y 1 = 0hzc∀ (a b c : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta a b + zeta (a * b) c = zeta b c + zeta a (b * c)Q2Presentation.boundaryPackage_GammaAQ2Presentation.boundaryPackage_GammaA : Q2Presentation.BoundaryPackage Q2Presentation.GammaA**The candidate boundary package** (manuscript Prop 3.14, `prop:compatiblemarking`; plan Turn 4 §6). The Stage-C data of `Γ_A`: the common tame quotient `gammaTameMap`, the maximal pro-`2` quotient `p : Γ_A ⟶ Π`, and the common unramified character `ν = gammaTameMap ≫ ν_t`, through which both factor.=Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`. We use `a = b` as notation for `Eq a b`. A fundamental property of equality is that it is an equivalence relation. ``` variable (α : Type) (a b c d : α) variable (hab : a = b) (hcb : c = b) (hcd : c = d) example : a = d := Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd ``` Equality is much more than an equivalence relation, however. It has the important property that every assertion respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value. That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`. Example: ``` example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := Eq.subst h1 h2 example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := h1 ▸ h2 ``` The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`. For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality) Conventions for notations in identifiers: * The recommended spelling of `=` in identifiers is `eq`.∑ JQ2Presentation.Induction.phaseCoverStrata chief K zeta hz1 hz2 hzc, Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number. If `α` is infinite, `Nat.card α = 0`.(Q2Presentation.boundaryFramedSurjQ2Presentation.boundaryFramedSurj {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (Yt : Q2Presentation.BoundaryFramedTarget) (F : Q2Presentation.BoundaryFrame Yt) : TypeThe **boundary-framed surjections** `e_Γ^β(𝒴)` (manuscript `eq:eGamma`): the continuous surjections `f : Γ ↠ Y` whose induced map to `H × E` is the prescribed `β ∘ b_Γ`, i.e. `q_Y ∘ f = β ∘ b_Γ`. This is the subtype counted in Theorem 4.2; its cardinality is `e_Γ^β(𝒴)`.Q2Presentation.boundaryPackage_GammaAQ2Presentation.boundaryPackage_GammaA : Q2Presentation.BoundaryPackage Q2Presentation.GammaA**The candidate boundary package** (manuscript Prop 3.14, `prop:compatiblemarking`; plan Turn 4 §6). The Stage-C data of `Γ_A`: the common tame quotient `gammaTameMap`, the maximal pro-`2` quotient `p : Γ_A ⟶ Π`, and the common unramified character `ν = gammaTameMap ≫ ν_t`, through which both factor.(Q2Presentation.Induction.phaseStratumPairQ2Presentation.Induction.phaseStratumPair {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (zeta : (Q2Presentation.Induction.cChild chief K).fst.Y → (Q2Presentation.Induction.cChild chief K).fst.Y → ZMod 2) (hz1 : ∀ (y : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta 1 y = 0) (hz2 : ∀ (y : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta y 1 = 0) (hzc : ∀ (a b c : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta a b + zeta (a * b) c = zeta b c + zeta a (b * c)) (J : Q2Presentation.Induction.phaseCoverStrata chief K zeta hz1 hz2 hzc) : Q2Presentation.Induction.FramedPairThe stratum framed pair `(J̃, J̃ ∩ L̃, π̃|_J̃, θ̃|_J̃; same frame)` — an ordinary exact-image object in the same global boundary-framed category (l.3841–3843; mirror of `scalarCoverStratumPair`).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactorzeta(Q2Presentation.Induction.cChild chief K).fst.Y → (Q2Presentation.Induction.cChild chief K).fst.Y → ZMod 2hz1∀ (y : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta 1 y = 0hz2∀ (y : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta y 1 = 0hzc∀ (a b c : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta a b + zeta (a * b) c = zeta b c + zeta a (b * c)JQ2Presentation.Induction.phaseCoverStrata chief K zeta hz1 hz2 hzc).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.(Q2Presentation.Induction.phaseStratumPairQ2Presentation.Induction.phaseStratumPair {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (zeta : (Q2Presentation.Induction.cChild chief K).fst.Y → (Q2Presentation.Induction.cChild chief K).fst.Y → ZMod 2) (hz1 : ∀ (y : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta 1 y = 0) (hz2 : ∀ (y : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta y 1 = 0) (hzc : ∀ (a b c : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta a b + zeta (a * b) c = zeta b c + zeta a (b * c)) (J : Q2Presentation.Induction.phaseCoverStrata chief K zeta hz1 hz2 hzc) : Q2Presentation.Induction.FramedPairThe stratum framed pair `(J̃, J̃ ∩ L̃, π̃|_J̃, θ̃|_J̃; same frame)` — an ordinary exact-image object in the same global boundary-framed category (l.3841–3843; mirror of `scalarCoverStratumPair`).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactorzeta(Q2Presentation.Induction.cChild chief K).fst.Y → (Q2Presentation.Induction.cChild chief K).fst.Y → ZMod 2hz1∀ (y : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta 1 y = 0hz2∀ (y : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta y 1 = 0hzc∀ (a b c : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta a b + zeta (a * b) c = zeta b c + zeta a (b * c)JQ2Presentation.Induction.phaseCoverStrata chief K zeta hz1 hz2 hzc).sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.)**`lem:phasecover` `eq:phasecovertransform` (l.4384–4390), candidate source**: the exact eight-lift partition of `lem:covertransform` applied to `p_ζ` at the FULL lower target (manuscript proof l.4395–4396) — a literal partition, no equidistribution assumption (l.3853–3856), `hR`-free and division-free.
-
theoremdefined in Q2Presentation/Induction/PhaseCoverTransform.leancomplete
theorem Q2Presentation.Induction.sec7_phaseCoverPartition_gq2 {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) (zeta(Q2Presentation.Induction.cChild chief K).fst.Y → (Q2Presentation.Induction.cChild chief K).fst.Y → ZMod 2: (Q2Presentation.Induction.cChildQ2Presentation.Induction.cChild {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPair**The C-child framed pair** (the carrier of `X_Γ(C)`; manuscript `C = Y/K` via `B/M' ≅ C`, `mChildCollapse`).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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`.→ (Q2Presentation.Induction.cChildQ2Presentation.Induction.cChild {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPair**The C-child framed pair** (the carrier of `X_Γ(C)`; manuscript `C = Y/K` via `B/M' ≅ C`, `mChildCollapse`).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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`.→ ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.2) (hz1∀ (y : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta 1 y = 0: ∀ (y(Q2Presentation.Induction.cChild chief K).fst.Y: (Q2Presentation.Induction.cChildQ2Presentation.Induction.cChild {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPair**The C-child framed pair** (the carrier of `X_Γ(C)`; manuscript `C = Y/K` via `B/M' ≅ C`, `mChildCollapse`).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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`.), zeta(Q2Presentation.Induction.cChild chief K).fst.Y → (Q2Presentation.Induction.cChild chief K).fst.Y → ZMod 21 y(Q2Presentation.Induction.cChild chief K).fst.Y=Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`. We use `a = b` as notation for `Eq a b`. A fundamental property of equality is that it is an equivalence relation. ``` variable (α : Type) (a b c d : α) variable (hab : a = b) (hcb : c = b) (hcd : c = d) example : a = d := Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd ``` Equality is much more than an equivalence relation, however. It has the important property that every assertion respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value. That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`. Example: ``` example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := Eq.subst h1 h2 example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := h1 ▸ h2 ``` The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`. For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality) Conventions for notations in identifiers: * The recommended spelling of `=` in identifiers is `eq`.0) (hz2∀ (y : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta y 1 = 0: ∀ (y(Q2Presentation.Induction.cChild chief K).fst.Y: (Q2Presentation.Induction.cChildQ2Presentation.Induction.cChild {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPair**The C-child framed pair** (the carrier of `X_Γ(C)`; manuscript `C = Y/K` via `B/M' ≅ C`, `mChildCollapse`).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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`.), zeta(Q2Presentation.Induction.cChild chief K).fst.Y → (Q2Presentation.Induction.cChild chief K).fst.Y → ZMod 2y(Q2Presentation.Induction.cChild 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`.0) (hzc∀ (a b c : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta a b + zeta (a * b) c = zeta b c + zeta a (b * c): ∀ (a(Q2Presentation.Induction.cChild chief K).fst.Yb(Q2Presentation.Induction.cChild chief K).fst.Yc(Q2Presentation.Induction.cChild chief K).fst.Y: (Q2Presentation.Induction.cChildQ2Presentation.Induction.cChild {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPair**The C-child framed pair** (the carrier of `X_Γ(C)`; manuscript `C = Y/K` via `B/M' ≅ C`, `mChildCollapse`).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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`.), zeta(Q2Presentation.Induction.cChild chief K).fst.Y → (Q2Presentation.Induction.cChild chief K).fst.Y → ZMod 2a(Q2Presentation.Induction.cChild chief K).fst.Yb(Q2Presentation.Induction.cChild chief K).fst.Y+HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `+` in identifiers is `add`.zeta(Q2Presentation.Induction.cChild chief K).fst.Y → (Q2Presentation.Induction.cChild chief K).fst.Y → ZMod 2(HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.a(Q2Presentation.Induction.cChild chief K).fst.Y*HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.b(Q2Presentation.Induction.cChild chief K).fst.Y)HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.c(Q2Presentation.Induction.cChild chief K).fst.Y=Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`. We use `a = b` as notation for `Eq a b`. A fundamental property of equality is that it is an equivalence relation. ``` variable (α : Type) (a b c d : α) variable (hab : a = b) (hcb : c = b) (hcd : c = d) example : a = d := Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd ``` Equality is much more than an equivalence relation, however. It has the important property that every assertion respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value. That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`. Example: ``` example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := Eq.subst h1 h2 example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := h1 ▸ h2 ``` The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`. For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality) Conventions for notations in identifiers: * The recommended spelling of `=` in identifiers is `eq`.zeta(Q2Presentation.Induction.cChild chief K).fst.Y → (Q2Presentation.Induction.cChild chief K).fst.Y → ZMod 2b(Q2Presentation.Induction.cChild chief K).fst.Yc(Q2Presentation.Induction.cChild chief K).fst.Y+HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `+` in identifiers is `add`.zeta(Q2Presentation.Induction.cChild chief K).fst.Y → (Q2Presentation.Induction.cChild chief K).fst.Y → ZMod 2a(Q2Presentation.Induction.cChild chief K).fst.Y(HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.b(Q2Presentation.Induction.cChild chief K).fst.Y*HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.c(Q2Presentation.Induction.cChild chief K).fst.Y)HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.) : 8 *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.Q2Presentation.Induction.phaseCountQ2Presentation.Induction.phaseCount {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (zeta : (Q2Presentation.Induction.cChild chief K).fst.Y → (Q2Presentation.Induction.cChild chief K).fst.Y → ZMod 2) (hz1 : ∀ (y : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta 1 y = 0) (hz2 : ∀ (y : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta y 1 = 0) (hzc : ∀ (a b c : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta a b + zeta (a * b) c = zeta b c + zeta a (b * c)) {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) : ℕ**`n_{Γ,0}(ζ)`** (l.4377–4379): the number of lower exact-image maps `ρ ∈ X_Γ(C)` for which the phase cover is unobstructed, i.e. which admit a weak (no image condition) framed lift through `p_ζ`. The child transport of P3-§4.7's `phaseChildTransport` slot is W7a's `cocycleChildEquiv`, absorbed into `cocycleCoverLiftHom`.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactorzeta(Q2Presentation.Induction.cChild chief K).fst.Y → (Q2Presentation.Induction.cChild chief K).fst.Y → ZMod 2hz1∀ (y : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta 1 y = 0hz2∀ (y : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta y 1 = 0hzc∀ (a b c : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta a b + zeta (a * b) c = zeta b c + zeta a (b * c)Q2Presentation.boundaryPackage_GQ2Q2Presentation.boundaryPackage_GQ2 : Q2Presentation.BoundaryPackage Q2Presentation.GQ2Profinite**The local boundary package** `boundaryPackage_GQ2 : BoundaryPackage G_{ℚ₂}` (manuscript Prop 3.14 `prop:compatiblemarking` for `Γ = G_{ℚ₂}`; plan Turn 4 §6), the `G_{ℚ₂}`-side instance of the uniform Stage-C boundary datum. * `tameMap`/`tame_surj`/`tame_nu` — the local tame quotient `G_{ℚ₂} ↠ T_A` with unramified marking `ν_loc`, from the axiom `gq2_tame_quotient` (Prop 3.2 + the local half of Prop `compatiblemarking`); * `pro2Map`/`pro2_surj`/`pro2_nu` — the local maximal pro-`2` quotient `G_{ℚ₂} ↠ Π` with the *same* unramified marking `ν_loc`, proved from the fully marked Labute comparison `labute_GQ2_maxPro2_marked` (`pro2Map_loc`, `pro2Map_loc_surjective`, `pro2Map_loc_nu`); * `nu := ν_loc` — the common unramified character through which both factor.=Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`. We use `a = b` as notation for `Eq a b`. A fundamental property of equality is that it is an equivalence relation. ``` variable (α : Type) (a b c d : α) variable (hab : a = b) (hcb : c = b) (hcd : c = d) example : a = d := Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd ``` Equality is much more than an equivalence relation, however. It has the important property that every assertion respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value. That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`. Example: ``` example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := Eq.subst h1 h2 example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := h1 ▸ h2 ``` The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`. For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality) Conventions for notations in identifiers: * The recommended spelling of `=` in identifiers is `eq`.∑ JQ2Presentation.Induction.phaseCoverStrata chief K zeta hz1 hz2 hzc, Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number. If `α` is infinite, `Nat.card α = 0`.(Q2Presentation.boundaryFramedSurjQ2Presentation.boundaryFramedSurj {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (Yt : Q2Presentation.BoundaryFramedTarget) (F : Q2Presentation.BoundaryFrame Yt) : TypeThe **boundary-framed surjections** `e_Γ^β(𝒴)` (manuscript `eq:eGamma`): the continuous surjections `f : Γ ↠ Y` whose induced map to `H × E` is the prescribed `β ∘ b_Γ`, i.e. `q_Y ∘ f = β ∘ b_Γ`. This is the subtype counted in Theorem 4.2; its cardinality is `e_Γ^β(𝒴)`.Q2Presentation.boundaryPackage_GQ2Q2Presentation.boundaryPackage_GQ2 : Q2Presentation.BoundaryPackage Q2Presentation.GQ2Profinite**The local boundary package** `boundaryPackage_GQ2 : BoundaryPackage G_{ℚ₂}` (manuscript Prop 3.14 `prop:compatiblemarking` for `Γ = G_{ℚ₂}`; plan Turn 4 §6), the `G_{ℚ₂}`-side instance of the uniform Stage-C boundary datum. * `tameMap`/`tame_surj`/`tame_nu` — the local tame quotient `G_{ℚ₂} ↠ T_A` with unramified marking `ν_loc`, from the axiom `gq2_tame_quotient` (Prop 3.2 + the local half of Prop `compatiblemarking`); * `pro2Map`/`pro2_surj`/`pro2_nu` — the local maximal pro-`2` quotient `G_{ℚ₂} ↠ Π` with the *same* unramified marking `ν_loc`, proved from the fully marked Labute comparison `labute_GQ2_maxPro2_marked` (`pro2Map_loc`, `pro2Map_loc_surjective`, `pro2Map_loc_nu`); * `nu := ν_loc` — the common unramified character through which both factor.(Q2Presentation.Induction.phaseStratumPairQ2Presentation.Induction.phaseStratumPair {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (zeta : (Q2Presentation.Induction.cChild chief K).fst.Y → (Q2Presentation.Induction.cChild chief K).fst.Y → ZMod 2) (hz1 : ∀ (y : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta 1 y = 0) (hz2 : ∀ (y : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta y 1 = 0) (hzc : ∀ (a b c : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta a b + zeta (a * b) c = zeta b c + zeta a (b * c)) (J : Q2Presentation.Induction.phaseCoverStrata chief K zeta hz1 hz2 hzc) : Q2Presentation.Induction.FramedPairThe stratum framed pair `(J̃, J̃ ∩ L̃, π̃|_J̃, θ̃|_J̃; same frame)` — an ordinary exact-image object in the same global boundary-framed category (l.3841–3843; mirror of `scalarCoverStratumPair`).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactorzeta(Q2Presentation.Induction.cChild chief K).fst.Y → (Q2Presentation.Induction.cChild chief K).fst.Y → ZMod 2hz1∀ (y : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta 1 y = 0hz2∀ (y : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta y 1 = 0hzc∀ (a b c : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta a b + zeta (a * b) c = zeta b c + zeta a (b * c)JQ2Presentation.Induction.phaseCoverStrata chief K zeta hz1 hz2 hzc).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.(Q2Presentation.Induction.phaseStratumPairQ2Presentation.Induction.phaseStratumPair {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (zeta : (Q2Presentation.Induction.cChild chief K).fst.Y → (Q2Presentation.Induction.cChild chief K).fst.Y → ZMod 2) (hz1 : ∀ (y : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta 1 y = 0) (hz2 : ∀ (y : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta y 1 = 0) (hzc : ∀ (a b c : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta a b + zeta (a * b) c = zeta b c + zeta a (b * c)) (J : Q2Presentation.Induction.phaseCoverStrata chief K zeta hz1 hz2 hzc) : Q2Presentation.Induction.FramedPairThe stratum framed pair `(J̃, J̃ ∩ L̃, π̃|_J̃, θ̃|_J̃; same frame)` — an ordinary exact-image object in the same global boundary-framed category (l.3841–3843; mirror of `scalarCoverStratumPair`).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactorzeta(Q2Presentation.Induction.cChild chief K).fst.Y → (Q2Presentation.Induction.cChild chief K).fst.Y → ZMod 2hz1∀ (y : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta 1 y = 0hz2∀ (y : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta y 1 = 0hzc∀ (a b c : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta a b + zeta (a * b) c = zeta b c + zeta a (b * c)JQ2Presentation.Induction.phaseCoverStrata chief K zeta hz1 hz2 hzc).sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.)theorem Q2Presentation.Induction.sec7_phaseCoverPartition_gq2 {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) (zeta(Q2Presentation.Induction.cChild chief K).fst.Y → (Q2Presentation.Induction.cChild chief K).fst.Y → ZMod 2: (Q2Presentation.Induction.cChildQ2Presentation.Induction.cChild {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPair**The C-child framed pair** (the carrier of `X_Γ(C)`; manuscript `C = Y/K` via `B/M' ≅ C`, `mChildCollapse`).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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`.→ (Q2Presentation.Induction.cChildQ2Presentation.Induction.cChild {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPair**The C-child framed pair** (the carrier of `X_Γ(C)`; manuscript `C = Y/K` via `B/M' ≅ C`, `mChildCollapse`).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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`.→ ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.2) (hz1∀ (y : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta 1 y = 0: ∀ (y(Q2Presentation.Induction.cChild chief K).fst.Y: (Q2Presentation.Induction.cChildQ2Presentation.Induction.cChild {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPair**The C-child framed pair** (the carrier of `X_Γ(C)`; manuscript `C = Y/K` via `B/M' ≅ C`, `mChildCollapse`).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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`.), zeta(Q2Presentation.Induction.cChild chief K).fst.Y → (Q2Presentation.Induction.cChild chief K).fst.Y → ZMod 21 y(Q2Presentation.Induction.cChild chief K).fst.Y=Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`. We use `a = b` as notation for `Eq a b`. A fundamental property of equality is that it is an equivalence relation. ``` variable (α : Type) (a b c d : α) variable (hab : a = b) (hcb : c = b) (hcd : c = d) example : a = d := Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd ``` Equality is much more than an equivalence relation, however. It has the important property that every assertion respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value. That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`. Example: ``` example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := Eq.subst h1 h2 example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := h1 ▸ h2 ``` The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`. For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality) Conventions for notations in identifiers: * The recommended spelling of `=` in identifiers is `eq`.0) (hz2∀ (y : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta y 1 = 0: ∀ (y(Q2Presentation.Induction.cChild chief K).fst.Y: (Q2Presentation.Induction.cChildQ2Presentation.Induction.cChild {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPair**The C-child framed pair** (the carrier of `X_Γ(C)`; manuscript `C = Y/K` via `B/M' ≅ C`, `mChildCollapse`).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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`.), zeta(Q2Presentation.Induction.cChild chief K).fst.Y → (Q2Presentation.Induction.cChild chief K).fst.Y → ZMod 2y(Q2Presentation.Induction.cChild 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`.0) (hzc∀ (a b c : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta a b + zeta (a * b) c = zeta b c + zeta a (b * c): ∀ (a(Q2Presentation.Induction.cChild chief K).fst.Yb(Q2Presentation.Induction.cChild chief K).fst.Yc(Q2Presentation.Induction.cChild chief K).fst.Y: (Q2Presentation.Induction.cChildQ2Presentation.Induction.cChild {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPair**The C-child framed pair** (the carrier of `X_Γ(C)`; manuscript `C = Y/K` via `B/M' ≅ C`, `mChildCollapse`).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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`.), zeta(Q2Presentation.Induction.cChild chief K).fst.Y → (Q2Presentation.Induction.cChild chief K).fst.Y → ZMod 2a(Q2Presentation.Induction.cChild chief K).fst.Yb(Q2Presentation.Induction.cChild chief K).fst.Y+HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `+` in identifiers is `add`.zeta(Q2Presentation.Induction.cChild chief K).fst.Y → (Q2Presentation.Induction.cChild chief K).fst.Y → ZMod 2(HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.a(Q2Presentation.Induction.cChild chief K).fst.Y*HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.b(Q2Presentation.Induction.cChild chief K).fst.Y)HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.c(Q2Presentation.Induction.cChild chief K).fst.Y=Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`. We use `a = b` as notation for `Eq a b`. A fundamental property of equality is that it is an equivalence relation. ``` variable (α : Type) (a b c d : α) variable (hab : a = b) (hcb : c = b) (hcd : c = d) example : a = d := Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd ``` Equality is much more than an equivalence relation, however. It has the important property that every assertion respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value. That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`. Example: ``` example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := Eq.subst h1 h2 example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := h1 ▸ h2 ``` The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`. For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality) Conventions for notations in identifiers: * The recommended spelling of `=` in identifiers is `eq`.zeta(Q2Presentation.Induction.cChild chief K).fst.Y → (Q2Presentation.Induction.cChild chief K).fst.Y → ZMod 2b(Q2Presentation.Induction.cChild chief K).fst.Yc(Q2Presentation.Induction.cChild chief K).fst.Y+HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `+` in identifiers is `add`.zeta(Q2Presentation.Induction.cChild chief K).fst.Y → (Q2Presentation.Induction.cChild chief K).fst.Y → ZMod 2a(Q2Presentation.Induction.cChild chief K).fst.Y(HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.b(Q2Presentation.Induction.cChild chief K).fst.Y*HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.c(Q2Presentation.Induction.cChild chief K).fst.Y)HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.) : 8 *HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.Q2Presentation.Induction.phaseCountQ2Presentation.Induction.phaseCount {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (zeta : (Q2Presentation.Induction.cChild chief K).fst.Y → (Q2Presentation.Induction.cChild chief K).fst.Y → ZMod 2) (hz1 : ∀ (y : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta 1 y = 0) (hz2 : ∀ (y : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta y 1 = 0) (hzc : ∀ (a b c : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta a b + zeta (a * b) c = zeta b c + zeta a (b * c)) {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) : ℕ**`n_{Γ,0}(ζ)`** (l.4377–4379): the number of lower exact-image maps `ρ ∈ X_Γ(C)` for which the phase cover is unobstructed, i.e. which admit a weak (no image condition) framed lift through `p_ζ`. The child transport of P3-§4.7's `phaseChildTransport` slot is W7a's `cocycleChildEquiv`, absorbed into `cocycleCoverLiftHom`.chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactorzeta(Q2Presentation.Induction.cChild chief K).fst.Y → (Q2Presentation.Induction.cChild chief K).fst.Y → ZMod 2hz1∀ (y : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta 1 y = 0hz2∀ (y : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta y 1 = 0hzc∀ (a b c : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta a b + zeta (a * b) c = zeta b c + zeta a (b * c)Q2Presentation.boundaryPackage_GQ2Q2Presentation.boundaryPackage_GQ2 : Q2Presentation.BoundaryPackage Q2Presentation.GQ2Profinite**The local boundary package** `boundaryPackage_GQ2 : BoundaryPackage G_{ℚ₂}` (manuscript Prop 3.14 `prop:compatiblemarking` for `Γ = G_{ℚ₂}`; plan Turn 4 §6), the `G_{ℚ₂}`-side instance of the uniform Stage-C boundary datum. * `tameMap`/`tame_surj`/`tame_nu` — the local tame quotient `G_{ℚ₂} ↠ T_A` with unramified marking `ν_loc`, from the axiom `gq2_tame_quotient` (Prop 3.2 + the local half of Prop `compatiblemarking`); * `pro2Map`/`pro2_surj`/`pro2_nu` — the local maximal pro-`2` quotient `G_{ℚ₂} ↠ Π` with the *same* unramified marking `ν_loc`, proved from the fully marked Labute comparison `labute_GQ2_maxPro2_marked` (`pro2Map_loc`, `pro2Map_loc_surjective`, `pro2Map_loc_nu`); * `nu := ν_loc` — the common unramified character through which both factor.=Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`. We use `a = b` as notation for `Eq a b`. A fundamental property of equality is that it is an equivalence relation. ``` variable (α : Type) (a b c d : α) variable (hab : a = b) (hcb : c = b) (hcd : c = d) example : a = d := Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd ``` Equality is much more than an equivalence relation, however. It has the important property that every assertion respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value. That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`. Example: ``` example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := Eq.subst h1 h2 example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := h1 ▸ h2 ``` The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`. For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality) Conventions for notations in identifiers: * The recommended spelling of `=` in identifiers is `eq`.∑ JQ2Presentation.Induction.phaseCoverStrata chief K zeta hz1 hz2 hzc, Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number. If `α` is infinite, `Nat.card α = 0`.(Q2Presentation.boundaryFramedSurjQ2Presentation.boundaryFramedSurj {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (Yt : Q2Presentation.BoundaryFramedTarget) (F : Q2Presentation.BoundaryFrame Yt) : TypeThe **boundary-framed surjections** `e_Γ^β(𝒴)` (manuscript `eq:eGamma`): the continuous surjections `f : Γ ↠ Y` whose induced map to `H × E` is the prescribed `β ∘ b_Γ`, i.e. `q_Y ∘ f = β ∘ b_Γ`. This is the subtype counted in Theorem 4.2; its cardinality is `e_Γ^β(𝒴)`.Q2Presentation.boundaryPackage_GQ2Q2Presentation.boundaryPackage_GQ2 : Q2Presentation.BoundaryPackage Q2Presentation.GQ2Profinite**The local boundary package** `boundaryPackage_GQ2 : BoundaryPackage G_{ℚ₂}` (manuscript Prop 3.14 `prop:compatiblemarking` for `Γ = G_{ℚ₂}`; plan Turn 4 §6), the `G_{ℚ₂}`-side instance of the uniform Stage-C boundary datum. * `tameMap`/`tame_surj`/`tame_nu` — the local tame quotient `G_{ℚ₂} ↠ T_A` with unramified marking `ν_loc`, from the axiom `gq2_tame_quotient` (Prop 3.2 + the local half of Prop `compatiblemarking`); * `pro2Map`/`pro2_surj`/`pro2_nu` — the local maximal pro-`2` quotient `G_{ℚ₂} ↠ Π` with the *same* unramified marking `ν_loc`, proved from the fully marked Labute comparison `labute_GQ2_maxPro2_marked` (`pro2Map_loc`, `pro2Map_loc_surjective`, `pro2Map_loc_nu`); * `nu := ν_loc` — the common unramified character through which both factor.(Q2Presentation.Induction.phaseStratumPairQ2Presentation.Induction.phaseStratumPair {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (zeta : (Q2Presentation.Induction.cChild chief K).fst.Y → (Q2Presentation.Induction.cChild chief K).fst.Y → ZMod 2) (hz1 : ∀ (y : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta 1 y = 0) (hz2 : ∀ (y : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta y 1 = 0) (hzc : ∀ (a b c : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta a b + zeta (a * b) c = zeta b c + zeta a (b * c)) (J : Q2Presentation.Induction.phaseCoverStrata chief K zeta hz1 hz2 hzc) : Q2Presentation.Induction.FramedPairThe stratum framed pair `(J̃, J̃ ∩ L̃, π̃|_J̃, θ̃|_J̃; same frame)` — an ordinary exact-image object in the same global boundary-framed category (l.3841–3843; mirror of `scalarCoverStratumPair`).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactorzeta(Q2Presentation.Induction.cChild chief K).fst.Y → (Q2Presentation.Induction.cChild chief K).fst.Y → ZMod 2hz1∀ (y : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta 1 y = 0hz2∀ (y : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta y 1 = 0hzc∀ (a b c : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta a b + zeta (a * b) c = zeta b c + zeta a (b * c)JQ2Presentation.Induction.phaseCoverStrata chief K zeta hz1 hz2 hzc).fstSigma.fst.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : αThe first component of a dependent pair.(Q2Presentation.Induction.phaseStratumPairQ2Presentation.Induction.phaseStratumPair {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (zeta : (Q2Presentation.Induction.cChild chief K).fst.Y → (Q2Presentation.Induction.cChild chief K).fst.Y → ZMod 2) (hz1 : ∀ (y : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta 1 y = 0) (hz2 : ∀ (y : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta y 1 = 0) (hzc : ∀ (a b c : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta a b + zeta (a * b) c = zeta b c + zeta a (b * c)) (J : Q2Presentation.Induction.phaseCoverStrata chief K zeta hz1 hz2 hzc) : Q2Presentation.Induction.FramedPairThe stratum framed pair `(J̃, J̃ ∩ L̃, π̃|_J̃, θ̃|_J̃; same frame)` — an ordinary exact-image object in the same global boundary-framed category (l.3841–3843; mirror of `scalarCoverStratumPair`).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactorzeta(Q2Presentation.Induction.cChild chief K).fst.Y → (Q2Presentation.Induction.cChild chief K).fst.Y → ZMod 2hz1∀ (y : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta 1 y = 0hz2∀ (y : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta y 1 = 0hzc∀ (a b c : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta a b + zeta (a * b) c = zeta b c + zeta a (b * c)JQ2Presentation.Induction.phaseCoverStrata chief K zeta hz1 hz2 hzc).sndSigma.snd.{u, v} {α : Type u} {β : α → Type v} (self : Sigma β) : β self.fstThe second component of a dependent pair. Its type depends on the first component.)**`lem:phasecover` `eq:phasecovertransform` (l.4384–4390), local source**: mirror of `sec7_phaseCoverPartition_gammaA` for `G_{ℚ₂}`; the uniform 8 is `cover_Z1_card_gq2`, derived from the EXISTING citable `q2_localduality_general` count clause (NSW VII.2–3 Euler–Poincaré — provenance note of `CoverEightLocal`); no keep is touched. -
defdefined in Q2Presentation/Induction/ZeroEdgeIndicator.leancomplete
def Q2Presentation.Induction.pullCochain (Yt
Q2Presentation.BoundaryFramedTarget: Q2Presentation.BoundaryFramedTargetQ2Presentation.BoundaryFramedTarget : Type 1A **boundary-framed marked target** `𝒴 = (Y, L_Y, π_Y, θ_Y)` (manuscript Definition 4.1, `def:framed`): a finite group `Y` with a normal finite `2`-subgroup `L_Y`, a surjection `π_Y : Y ↠ H` onto a finite *tame* quotient with kernel exactly `L_Y`, and an *elementary decoration* `θ_Y : Y → Multiplicative E` into the multiplicative image of a finite `𝔽₂`-vector space `E`. The pair `q_Y = (π_Y, θ_Y)` fixes both the tame quotient `Y / L_Y ≅ H` and the decoration.) (zetaYt.Y → Yt.Y → ZMod 2: YtQ2Presentation.BoundaryFramedTarget.YQ2Presentation.BoundaryFramedTarget.Y (self : Q2Presentation.BoundaryFramedTarget) : TypeThe finite target group `Y`.→ YtQ2Presentation.BoundaryFramedTarget.YQ2Presentation.BoundaryFramedTarget.Y (self : Q2Presentation.BoundaryFramedTarget) : TypeThe finite target group `Y`.→ ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.2) {ΓProfiniteGrp.{0}: ProfiniteGrp.{0}ProfiniteGrp.{u_1} : Type (u_1 + 1)The category of profinite groups. A term of this type consists of a profinite set with a topological group structure.} (BQ2Presentation.BoundaryPackage Γ: Q2Presentation.BoundaryPackageQ2Presentation.BoundaryPackage (Γ : ProfiniteGrp.{0}) : TypeA **boundary package** on a profinite group `Γ`: the uniform Stage-C data of a tame quotient, a maximal pro-`2` quotient, and a common unramified character `ℤ₂` through which both factor (manuscript Prop 3.14, `prop:compatiblemarking`; plan Turn 4 §6). The compatibility `tameMap ≫ ν_t = ν = pro2Map ≫ ν_2` records that the two markings agree on the full unramified coordinate, not merely modulo `2`.ΓProfiniteGrp.{0}) (FQ2Presentation.BoundaryFrame Yt: Q2Presentation.BoundaryFrameQ2Presentation.BoundaryFrame (Yt : Q2Presentation.BoundaryFramedTarget) : TypeA **boundary frame** on a boundary-framed target `𝒴` (manuscript `eq:beta`): the fixed compatible data `α : 𝕋_tame ↠ H`, `ψ : Π → Multiplicative E`, and the induced `β : ∂_bd → H × Multiplicative E`. Surjectivity of `α` records that `H` really is a tame quotient (manuscript: "Fix a finite tame quotient `H`, an epimorphism `α : 𝕋_A ↠ H`").YtQ2Presentation.BoundaryFramedTarget) (gQ2Presentation.boundaryFramedSurj B Yt F: Q2Presentation.boundaryFramedSurjQ2Presentation.boundaryFramedSurj {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (Yt : Q2Presentation.BoundaryFramedTarget) (F : Q2Presentation.BoundaryFrame Yt) : TypeThe **boundary-framed surjections** `e_Γ^β(𝒴)` (manuscript `eq:eGamma`): the continuous surjections `f : Γ ↠ Y` whose induced map to `H × E` is the prescribed `β ∘ b_Γ`, i.e. `q_Y ∘ f = β ∘ b_Γ`. This is the subtype counted in Theorem 4.2; its cardinality is `e_Γ^β(𝒴)`.BQ2Presentation.BoundaryPackage ΓYtQ2Presentation.BoundaryFramedTargetFQ2Presentation.BoundaryFrame Yt) : ↑ΓProfiniteGrp.{0}.toProfiniteProfiniteGrp.toProfinite.{u_1} (self : ProfiniteGrp.{u_1}) : ProfiniteThe underlying profinite topological space..toTopCompHausLike.toTop.{u} {P : TopCat → Prop} (self : CompHausLike P) : TopCatThe underlying topological space of an object of `CompHausLike P`.→ ↑ΓProfiniteGrp.{0}.toProfiniteProfiniteGrp.toProfinite.{u_1} (self : ProfiniteGrp.{u_1}) : ProfiniteThe underlying profinite topological space..toTopCompHausLike.toTop.{u} {P : TopCat → Prop} (self : CompHausLike P) : TopCatThe underlying topological space of an object of `CompHausLike P`.→ ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.2def Q2Presentation.Induction.pullCochain (Yt
Q2Presentation.BoundaryFramedTarget: Q2Presentation.BoundaryFramedTargetQ2Presentation.BoundaryFramedTarget : Type 1A **boundary-framed marked target** `𝒴 = (Y, L_Y, π_Y, θ_Y)` (manuscript Definition 4.1, `def:framed`): a finite group `Y` with a normal finite `2`-subgroup `L_Y`, a surjection `π_Y : Y ↠ H` onto a finite *tame* quotient with kernel exactly `L_Y`, and an *elementary decoration* `θ_Y : Y → Multiplicative E` into the multiplicative image of a finite `𝔽₂`-vector space `E`. The pair `q_Y = (π_Y, θ_Y)` fixes both the tame quotient `Y / L_Y ≅ H` and the decoration.) (zetaYt.Y → Yt.Y → ZMod 2: YtQ2Presentation.BoundaryFramedTarget.YQ2Presentation.BoundaryFramedTarget.Y (self : Q2Presentation.BoundaryFramedTarget) : TypeThe finite target group `Y`.→ YtQ2Presentation.BoundaryFramedTarget.YQ2Presentation.BoundaryFramedTarget.Y (self : Q2Presentation.BoundaryFramedTarget) : TypeThe finite target group `Y`.→ ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.2) {ΓProfiniteGrp.{0}: ProfiniteGrp.{0}ProfiniteGrp.{u_1} : Type (u_1 + 1)The category of profinite groups. A term of this type consists of a profinite set with a topological group structure.} (BQ2Presentation.BoundaryPackage Γ: Q2Presentation.BoundaryPackageQ2Presentation.BoundaryPackage (Γ : ProfiniteGrp.{0}) : TypeA **boundary package** on a profinite group `Γ`: the uniform Stage-C data of a tame quotient, a maximal pro-`2` quotient, and a common unramified character `ℤ₂` through which both factor (manuscript Prop 3.14, `prop:compatiblemarking`; plan Turn 4 §6). The compatibility `tameMap ≫ ν_t = ν = pro2Map ≫ ν_2` records that the two markings agree on the full unramified coordinate, not merely modulo `2`.ΓProfiniteGrp.{0}) (FQ2Presentation.BoundaryFrame Yt: Q2Presentation.BoundaryFrameQ2Presentation.BoundaryFrame (Yt : Q2Presentation.BoundaryFramedTarget) : TypeA **boundary frame** on a boundary-framed target `𝒴` (manuscript `eq:beta`): the fixed compatible data `α : 𝕋_tame ↠ H`, `ψ : Π → Multiplicative E`, and the induced `β : ∂_bd → H × Multiplicative E`. Surjectivity of `α` records that `H` really is a tame quotient (manuscript: "Fix a finite tame quotient `H`, an epimorphism `α : 𝕋_A ↠ H`").YtQ2Presentation.BoundaryFramedTarget) (gQ2Presentation.boundaryFramedSurj B Yt F: Q2Presentation.boundaryFramedSurjQ2Presentation.boundaryFramedSurj {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (Yt : Q2Presentation.BoundaryFramedTarget) (F : Q2Presentation.BoundaryFrame Yt) : TypeThe **boundary-framed surjections** `e_Γ^β(𝒴)` (manuscript `eq:eGamma`): the continuous surjections `f : Γ ↠ Y` whose induced map to `H × E` is the prescribed `β ∘ b_Γ`, i.e. `q_Y ∘ f = β ∘ b_Γ`. This is the subtype counted in Theorem 4.2; its cardinality is `e_Γ^β(𝒴)`.BQ2Presentation.BoundaryPackage ΓYtQ2Presentation.BoundaryFramedTargetFQ2Presentation.BoundaryFrame Yt) : ↑ΓProfiniteGrp.{0}.toProfiniteProfiniteGrp.toProfinite.{u_1} (self : ProfiniteGrp.{u_1}) : ProfiniteThe underlying profinite topological space..toTopCompHausLike.toTop.{u} {P : TopCat → Prop} (self : CompHausLike P) : TopCatThe underlying topological space of an object of `CompHausLike P`.→ ↑ΓProfiniteGrp.{0}.toProfiniteProfiniteGrp.toProfinite.{u_1} (self : ProfiniteGrp.{u_1}) : ProfiniteThe underlying profinite topological space..toTopCompHausLike.toTop.{u} {P : TopCat → Prop} (self : CompHausLike P) : TopCatThe underlying topological space of an object of `CompHausLike P`.→ ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.2**The pulled-back 2-cochain `g*ζ`** of a boundary-framed surjection `g : Γ ↠ Y` — the source-side equation whose solvability the ζ-cover lift indicator reads (`lem:phasecover` l.4377–4379).
-
abbrevdefined in Q2Presentation/Lifting/CocycleCover.leancomplete
abbrev Q2Presentation.Lifting.cocycleCoverLiftHom (Yt
Q2Presentation.BoundaryFramedTarget: Q2Presentation.BoundaryFramedTargetQ2Presentation.BoundaryFramedTarget : Type 1A **boundary-framed marked target** `𝒴 = (Y, L_Y, π_Y, θ_Y)` (manuscript Definition 4.1, `def:framed`): a finite group `Y` with a normal finite `2`-subgroup `L_Y`, a surjection `π_Y : Y ↠ H` onto a finite *tame* quotient with kernel exactly `L_Y`, and an *elementary decoration* `θ_Y : Y → Multiplicative E` into the multiplicative image of a finite `𝔽₂`-vector space `E`. The pair `q_Y = (π_Y, θ_Y)` fixes both the tame quotient `Y / L_Y ≅ H` and the decoration.) (zetaYt.Y → Yt.Y → ZMod 2: YtQ2Presentation.BoundaryFramedTarget.YQ2Presentation.BoundaryFramedTarget.Y (self : Q2Presentation.BoundaryFramedTarget) : TypeThe finite target group `Y`.→ YtQ2Presentation.BoundaryFramedTarget.YQ2Presentation.BoundaryFramedTarget.Y (self : Q2Presentation.BoundaryFramedTarget) : TypeThe finite target group `Y`.→ ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.2) (hz1∀ (y : Yt.Y), zeta 1 y = 0: ∀ (yYt.Y: YtQ2Presentation.BoundaryFramedTarget.YQ2Presentation.BoundaryFramedTarget.Y (self : Q2Presentation.BoundaryFramedTarget) : TypeThe finite target group `Y`.), zetaYt.Y → Yt.Y → ZMod 21 yYt.Y=Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`. We use `a = b` as notation for `Eq a b`. A fundamental property of equality is that it is an equivalence relation. ``` variable (α : Type) (a b c d : α) variable (hab : a = b) (hcb : c = b) (hcd : c = d) example : a = d := Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd ``` Equality is much more than an equivalence relation, however. It has the important property that every assertion respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value. That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`. Example: ``` example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := Eq.subst h1 h2 example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := h1 ▸ h2 ``` The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`. For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality) Conventions for notations in identifiers: * The recommended spelling of `=` in identifiers is `eq`.0) (hz2∀ (y : Yt.Y), zeta y 1 = 0: ∀ (yYt.Y: YtQ2Presentation.BoundaryFramedTarget.YQ2Presentation.BoundaryFramedTarget.Y (self : Q2Presentation.BoundaryFramedTarget) : TypeThe finite target group `Y`.), zetaYt.Y → Yt.Y → ZMod 2yYt.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`.0) (hzc∀ (a b c : Yt.Y), zeta a b + zeta (a * b) c = zeta b c + zeta a (b * c): ∀ (aYt.YbYt.YcYt.Y: YtQ2Presentation.BoundaryFramedTarget.YQ2Presentation.BoundaryFramedTarget.Y (self : Q2Presentation.BoundaryFramedTarget) : TypeThe finite target group `Y`.), zetaYt.Y → Yt.Y → ZMod 2aYt.YbYt.Y+HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `+` in identifiers is `add`.zetaYt.Y → Yt.Y → ZMod 2(HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.aYt.Y*HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.bYt.Y)HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.cYt.Y=Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`. We use `a = b` as notation for `Eq a b`. A fundamental property of equality is that it is an equivalence relation. ``` variable (α : Type) (a b c d : α) variable (hab : a = b) (hcb : c = b) (hcd : c = d) example : a = d := Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd ``` Equality is much more than an equivalence relation, however. It has the important property that every assertion respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value. That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`. Example: ``` example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := Eq.subst h1 h2 example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := h1 ▸ h2 ``` The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`. For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality) Conventions for notations in identifiers: * The recommended spelling of `=` in identifiers is `eq`.zetaYt.Y → Yt.Y → ZMod 2bYt.YcYt.Y+HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `+` in identifiers is `add`.zetaYt.Y → Yt.Y → ZMod 2aYt.Y(HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.bYt.Y*HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.cYt.Y)HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.) {ΓProfiniteGrp.{0}: ProfiniteGrp.{0}ProfiniteGrp.{u_1} : Type (u_1 + 1)The category of profinite groups. A term of this type consists of a profinite set with a topological group structure.} (BQ2Presentation.BoundaryPackage Γ: Q2Presentation.BoundaryPackageQ2Presentation.BoundaryPackage (Γ : ProfiniteGrp.{0}) : TypeA **boundary package** on a profinite group `Γ`: the uniform Stage-C data of a tame quotient, a maximal pro-`2` quotient, and a common unramified character `ℤ₂` through which both factor (manuscript Prop 3.14, `prop:compatiblemarking`; plan Turn 4 §6). The compatibility `tameMap ≫ ν_t = ν = pro2Map ≫ ν_2` records that the two markings agree on the full unramified coordinate, not merely modulo `2`.ΓProfiniteGrp.{0}) (FQ2Presentation.BoundaryFrame Yt: Q2Presentation.BoundaryFrameQ2Presentation.BoundaryFrame (Yt : Q2Presentation.BoundaryFramedTarget) : TypeA **boundary frame** on a boundary-framed target `𝒴` (manuscript `eq:beta`): the fixed compatible data `α : 𝕋_tame ↠ H`, `ψ : Π → Multiplicative E`, and the induced `β : ∂_bd → H × Multiplicative E`. Surjectivity of `α` records that `H` really is a tame quotient (manuscript: "Fix a finite tame quotient `H`, an epimorphism `α : 𝕋_A ↠ H`").YtQ2Presentation.BoundaryFramedTarget) (gQ2Presentation.boundaryFramedSurj B Yt F: Q2Presentation.boundaryFramedSurjQ2Presentation.boundaryFramedSurj {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (Yt : Q2Presentation.BoundaryFramedTarget) (F : Q2Presentation.BoundaryFrame Yt) : TypeThe **boundary-framed surjections** `e_Γ^β(𝒴)` (manuscript `eq:eGamma`): the continuous surjections `f : Γ ↠ Y` whose induced map to `H × E` is the prescribed `β ∘ b_Γ`, i.e. `q_Y ∘ f = β ∘ b_Γ`. This is the subtype counted in Theorem 4.2; its cardinality is `e_Γ^β(𝒴)`.BQ2Presentation.BoundaryPackage ΓYtQ2Presentation.BoundaryFramedTargetFQ2Presentation.BoundaryFrame Yt) : TypeA type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`.abbrev Q2Presentation.Lifting.cocycleCoverLiftHom (Yt
Q2Presentation.BoundaryFramedTarget: Q2Presentation.BoundaryFramedTargetQ2Presentation.BoundaryFramedTarget : Type 1A **boundary-framed marked target** `𝒴 = (Y, L_Y, π_Y, θ_Y)` (manuscript Definition 4.1, `def:framed`): a finite group `Y` with a normal finite `2`-subgroup `L_Y`, a surjection `π_Y : Y ↠ H` onto a finite *tame* quotient with kernel exactly `L_Y`, and an *elementary decoration* `θ_Y : Y → Multiplicative E` into the multiplicative image of a finite `𝔽₂`-vector space `E`. The pair `q_Y = (π_Y, θ_Y)` fixes both the tame quotient `Y / L_Y ≅ H` and the decoration.) (zetaYt.Y → Yt.Y → ZMod 2: YtQ2Presentation.BoundaryFramedTarget.YQ2Presentation.BoundaryFramedTarget.Y (self : Q2Presentation.BoundaryFramedTarget) : TypeThe finite target group `Y`.→ YtQ2Presentation.BoundaryFramedTarget.YQ2Presentation.BoundaryFramedTarget.Y (self : Q2Presentation.BoundaryFramedTarget) : TypeThe finite target group `Y`.→ ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.2) (hz1∀ (y : Yt.Y), zeta 1 y = 0: ∀ (yYt.Y: YtQ2Presentation.BoundaryFramedTarget.YQ2Presentation.BoundaryFramedTarget.Y (self : Q2Presentation.BoundaryFramedTarget) : TypeThe finite target group `Y`.), zetaYt.Y → Yt.Y → ZMod 21 yYt.Y=Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`. We use `a = b` as notation for `Eq a b`. A fundamental property of equality is that it is an equivalence relation. ``` variable (α : Type) (a b c d : α) variable (hab : a = b) (hcb : c = b) (hcd : c = d) example : a = d := Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd ``` Equality is much more than an equivalence relation, however. It has the important property that every assertion respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value. That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`. Example: ``` example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := Eq.subst h1 h2 example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := h1 ▸ h2 ``` The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`. For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality) Conventions for notations in identifiers: * The recommended spelling of `=` in identifiers is `eq`.0) (hz2∀ (y : Yt.Y), zeta y 1 = 0: ∀ (yYt.Y: YtQ2Presentation.BoundaryFramedTarget.YQ2Presentation.BoundaryFramedTarget.Y (self : Q2Presentation.BoundaryFramedTarget) : TypeThe finite target group `Y`.), zetaYt.Y → Yt.Y → ZMod 2yYt.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`.0) (hzc∀ (a b c : Yt.Y), zeta a b + zeta (a * b) c = zeta b c + zeta a (b * c): ∀ (aYt.YbYt.YcYt.Y: YtQ2Presentation.BoundaryFramedTarget.YQ2Presentation.BoundaryFramedTarget.Y (self : Q2Presentation.BoundaryFramedTarget) : TypeThe finite target group `Y`.), zetaYt.Y → Yt.Y → ZMod 2aYt.YbYt.Y+HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `+` in identifiers is `add`.zetaYt.Y → Yt.Y → ZMod 2(HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.aYt.Y*HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.bYt.Y)HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.cYt.Y=Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`. We use `a = b` as notation for `Eq a b`. A fundamental property of equality is that it is an equivalence relation. ``` variable (α : Type) (a b c d : α) variable (hab : a = b) (hcb : c = b) (hcd : c = d) example : a = d := Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd ``` Equality is much more than an equivalence relation, however. It has the important property that every assertion respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value. That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`. Example: ``` example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := Eq.subst h1 h2 example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := h1 ▸ h2 ``` The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`. For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality) Conventions for notations in identifiers: * The recommended spelling of `=` in identifiers is `eq`.zetaYt.Y → Yt.Y → ZMod 2bYt.YcYt.Y+HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `+` in identifiers is `add`.zetaYt.Y → Yt.Y → ZMod 2aYt.Y(HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.bYt.Y*HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.cYt.Y)HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.) {ΓProfiniteGrp.{0}: ProfiniteGrp.{0}ProfiniteGrp.{u_1} : Type (u_1 + 1)The category of profinite groups. A term of this type consists of a profinite set with a topological group structure.} (BQ2Presentation.BoundaryPackage Γ: Q2Presentation.BoundaryPackageQ2Presentation.BoundaryPackage (Γ : ProfiniteGrp.{0}) : TypeA **boundary package** on a profinite group `Γ`: the uniform Stage-C data of a tame quotient, a maximal pro-`2` quotient, and a common unramified character `ℤ₂` through which both factor (manuscript Prop 3.14, `prop:compatiblemarking`; plan Turn 4 §6). The compatibility `tameMap ≫ ν_t = ν = pro2Map ≫ ν_2` records that the two markings agree on the full unramified coordinate, not merely modulo `2`.ΓProfiniteGrp.{0}) (FQ2Presentation.BoundaryFrame Yt: Q2Presentation.BoundaryFrameQ2Presentation.BoundaryFrame (Yt : Q2Presentation.BoundaryFramedTarget) : TypeA **boundary frame** on a boundary-framed target `𝒴` (manuscript `eq:beta`): the fixed compatible data `α : 𝕋_tame ↠ H`, `ψ : Π → Multiplicative E`, and the induced `β : ∂_bd → H × Multiplicative E`. Surjectivity of `α` records that `H` really is a tame quotient (manuscript: "Fix a finite tame quotient `H`, an epimorphism `α : 𝕋_A ↠ H`").YtQ2Presentation.BoundaryFramedTarget) (gQ2Presentation.boundaryFramedSurj B Yt F: Q2Presentation.boundaryFramedSurjQ2Presentation.boundaryFramedSurj {Γ : ProfiniteGrp.{0}} (B : Q2Presentation.BoundaryPackage Γ) (Yt : Q2Presentation.BoundaryFramedTarget) (F : Q2Presentation.BoundaryFrame Yt) : TypeThe **boundary-framed surjections** `e_Γ^β(𝒴)` (manuscript `eq:eGamma`): the continuous surjections `f : Γ ↠ Y` whose induced map to `H × E` is the prescribed `β ∘ b_Γ`, i.e. `q_Y ∘ f = β ∘ b_Γ`. This is the subtype counted in Theorem 4.2; its cardinality is `e_Γ^β(𝒴)`.BQ2Presentation.BoundaryPackage ΓYtQ2Presentation.BoundaryFramedTargetFQ2Presentation.BoundaryFrame Yt) : TypeA type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`.**The weak cover-lift set** of a base framed surjection — the splitting-indicator carrier of `lem:phasecover`: `Nonempty` ⟺ `ρ*ζ` is unobstructed (l.4377–4379). Surjectivity onto `C_ζ` is NOT imposed (weak lifts, the P1 §5.1-vetted reading).
Proved in §8 of the paper. Ingredients: Lemma 8.3.
Lemma 8.16 of the paper (Strict decrease of recursive targets).
Every target occurring on the right sides of
(137), (140), (141), and
(146) has marked 2-kernel strictly smaller than |L_Y|.
More precisely,
|L_C|=\frac{|L_Y|}{|K|}<|L_Y|,
2|J\cap L_B|\le |L_B|<|L_Y|
for a proper scalar-cover stratum, and
|L_{C_\zeta}|=2|L_C| =\frac{2|L_Y|}{|K|}<|L_Y|.
The proper-image bound in the elementary stage is (138).
Lean code for Lemma8.16●3 declarations
Associated Lean declarations
-
theoremdefined in Q2Presentation/Induction/PhaseCoverTransform.leancomplete
theorem Q2Presentation.Induction.phaseStratumPair_measure_lt {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) (zeta(Q2Presentation.Induction.cChild chief K).fst.Y → (Q2Presentation.Induction.cChild chief K).fst.Y → ZMod 2: (Q2Presentation.Induction.cChildQ2Presentation.Induction.cChild {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPair**The C-child framed pair** (the carrier of `X_Γ(C)`; manuscript `C = Y/K` via `B/M' ≅ C`, `mChildCollapse`).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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`.→ (Q2Presentation.Induction.cChildQ2Presentation.Induction.cChild {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPair**The C-child framed pair** (the carrier of `X_Γ(C)`; manuscript `C = Y/K` via `B/M' ≅ C`, `mChildCollapse`).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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`.→ ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.2) (hz1∀ (y : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta 1 y = 0: ∀ (y(Q2Presentation.Induction.cChild chief K).fst.Y: (Q2Presentation.Induction.cChildQ2Presentation.Induction.cChild {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPair**The C-child framed pair** (the carrier of `X_Γ(C)`; manuscript `C = Y/K` via `B/M' ≅ C`, `mChildCollapse`).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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`.), zeta(Q2Presentation.Induction.cChild chief K).fst.Y → (Q2Presentation.Induction.cChild chief K).fst.Y → ZMod 21 y(Q2Presentation.Induction.cChild chief K).fst.Y=Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`. We use `a = b` as notation for `Eq a b`. A fundamental property of equality is that it is an equivalence relation. ``` variable (α : Type) (a b c d : α) variable (hab : a = b) (hcb : c = b) (hcd : c = d) example : a = d := Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd ``` Equality is much more than an equivalence relation, however. It has the important property that every assertion respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value. That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`. Example: ``` example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := Eq.subst h1 h2 example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := h1 ▸ h2 ``` The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`. For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality) Conventions for notations in identifiers: * The recommended spelling of `=` in identifiers is `eq`.0) (hz2∀ (y : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta y 1 = 0: ∀ (y(Q2Presentation.Induction.cChild chief K).fst.Y: (Q2Presentation.Induction.cChildQ2Presentation.Induction.cChild {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPair**The C-child framed pair** (the carrier of `X_Γ(C)`; manuscript `C = Y/K` via `B/M' ≅ C`, `mChildCollapse`).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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`.), zeta(Q2Presentation.Induction.cChild chief K).fst.Y → (Q2Presentation.Induction.cChild chief K).fst.Y → ZMod 2y(Q2Presentation.Induction.cChild 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`.0) (hzc∀ (a b c : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta a b + zeta (a * b) c = zeta b c + zeta a (b * c): ∀ (a(Q2Presentation.Induction.cChild chief K).fst.Yb(Q2Presentation.Induction.cChild chief K).fst.Yc(Q2Presentation.Induction.cChild chief K).fst.Y: (Q2Presentation.Induction.cChildQ2Presentation.Induction.cChild {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPair**The C-child framed pair** (the carrier of `X_Γ(C)`; manuscript `C = Y/K` via `B/M' ≅ C`, `mChildCollapse`).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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`.), zeta(Q2Presentation.Induction.cChild chief K).fst.Y → (Q2Presentation.Induction.cChild chief K).fst.Y → ZMod 2a(Q2Presentation.Induction.cChild chief K).fst.Yb(Q2Presentation.Induction.cChild chief K).fst.Y+HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `+` in identifiers is `add`.zeta(Q2Presentation.Induction.cChild chief K).fst.Y → (Q2Presentation.Induction.cChild chief K).fst.Y → ZMod 2(HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.a(Q2Presentation.Induction.cChild chief K).fst.Y*HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.b(Q2Presentation.Induction.cChild chief K).fst.Y)HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.c(Q2Presentation.Induction.cChild chief K).fst.Y=Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`. We use `a = b` as notation for `Eq a b`. A fundamental property of equality is that it is an equivalence relation. ``` variable (α : Type) (a b c d : α) variable (hab : a = b) (hcb : c = b) (hcd : c = d) example : a = d := Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd ``` Equality is much more than an equivalence relation, however. It has the important property that every assertion respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value. That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`. Example: ``` example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := Eq.subst h1 h2 example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := h1 ▸ h2 ``` The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`. For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality) Conventions for notations in identifiers: * The recommended spelling of `=` in identifiers is `eq`.zeta(Q2Presentation.Induction.cChild chief K).fst.Y → (Q2Presentation.Induction.cChild chief K).fst.Y → ZMod 2b(Q2Presentation.Induction.cChild chief K).fst.Yc(Q2Presentation.Induction.cChild chief K).fst.Y+HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `+` in identifiers is `add`.zeta(Q2Presentation.Induction.cChild chief K).fst.Y → (Q2Presentation.Induction.cChild chief K).fst.Y → ZMod 2a(Q2Presentation.Induction.cChild chief K).fst.Y(HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.b(Q2Presentation.Induction.cChild chief K).fst.Y*HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.c(Q2Presentation.Induction.cChild chief K).fst.Y)HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.) (hR1 < Nat.card ↥(Q2Presentation.Induction.kernelFrattini K): 1 <LT.lt.{u} {α : Type u} [self : LT α] : α → α → PropThe less-than relation: `x < y` Conventions for notations in identifiers: * The recommended spelling of `<` in identifiers is `lt`.Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number. If `α` is infinite, `Nat.card α = 0`.↥(Q2Presentation.Induction.kernelFrattiniQ2Presentation.Induction.kernelFrattini {p : Q2Presentation.Induction.FramedPair} {chief : Q2Presentation.Induction.NonScalarChiefFactor p} (K : Q2Presentation.Induction.KernelMinimal chief) : Subgroup p.fst.YThe literal Frattini subgroup `R = Φ(K)` of the kernel, as a subgroup of `Y` (the manuscript's `R`, l.3626).KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)) (JQ2Presentation.Induction.phaseCoverStrata chief K zeta hz1 hz2 hzc: Q2Presentation.Induction.phaseCoverStrataQ2Presentation.Induction.phaseCoverStrata {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (zeta : (Q2Presentation.Induction.cChild chief K).fst.Y → (Q2Presentation.Induction.cChild chief K).fst.Y → ZMod 2) (hz1 : ∀ (y : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta 1 y = 0) (hz2 : ∀ (y : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta y 1 = 0) (hzc : ∀ (a b c : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta a b + zeta (a * b) c = zeta b c + zeta a (b * c)) : TypeThe exact-image strata of the phase cover — the manuscript sum index `{J̃ ≤ C_ζ : p_ζ(J̃) = C}` (l.4386–4389), as P2's generic `coverStrata` (the top stratum `J̃ = ⊤` included, manuscript-faithfully).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactorzeta(Q2Presentation.Induction.cChild chief K).fst.Y → (Q2Presentation.Induction.cChild chief K).fst.Y → ZMod 2hz1∀ (y : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta 1 y = 0hz2∀ (y : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta y 1 = 0hzc∀ (a b c : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta a b + zeta (a * b) c = zeta b c + zeta a (b * c)) : Q2Presentation.Induction.framedMeasureQ2Presentation.Induction.framedMeasure (p : Q2Presentation.Induction.FramedPair) : ℕThe induction measure `|L_Y|`: the order of the marked `2`-kernel of the framed target (manuscript: the strong induction of `thm:fixedframe` is on `|L_Y|`).(Q2Presentation.Induction.phaseStratumPairQ2Presentation.Induction.phaseStratumPair {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (zeta : (Q2Presentation.Induction.cChild chief K).fst.Y → (Q2Presentation.Induction.cChild chief K).fst.Y → ZMod 2) (hz1 : ∀ (y : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta 1 y = 0) (hz2 : ∀ (y : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta y 1 = 0) (hzc : ∀ (a b c : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta a b + zeta (a * b) c = zeta b c + zeta a (b * c)) (J : Q2Presentation.Induction.phaseCoverStrata chief K zeta hz1 hz2 hzc) : Q2Presentation.Induction.FramedPairThe stratum framed pair `(J̃, J̃ ∩ L̃, π̃|_J̃, θ̃|_J̃; same frame)` — an ordinary exact-image object in the same global boundary-framed category (l.3841–3843; mirror of `scalarCoverStratumPair`).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactorzeta(Q2Presentation.Induction.cChild chief K).fst.Y → (Q2Presentation.Induction.cChild chief K).fst.Y → ZMod 2hz1∀ (y : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta 1 y = 0hz2∀ (y : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta y 1 = 0hzc∀ (a b c : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta a b + zeta (a * b) c = zeta b c + zeta a (b * c)JQ2Presentation.Induction.phaseCoverStrata chief K zeta hz1 hz2 hzc) <LT.lt.{u} {α : Type u} [self : LT α] : α → α → PropThe less-than relation: `x < y` Conventions for notations in identifiers: * The recommended spelling of `<` in identifiers is `lt`.Q2Presentation.Induction.framedMeasureQ2Presentation.Induction.framedMeasure (p : Q2Presentation.Induction.FramedPair) : ℕThe induction measure `|L_Y|`: the order of the marked `2`-kernel of the framed target (manuscript: the strong induction of `thm:fixedframe` is on `|L_Y|`).pQ2Presentation.Induction.FramedPairtheorem Q2Presentation.Induction.phaseStratumPair_measure_lt {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) (zeta(Q2Presentation.Induction.cChild chief K).fst.Y → (Q2Presentation.Induction.cChild chief K).fst.Y → ZMod 2: (Q2Presentation.Induction.cChildQ2Presentation.Induction.cChild {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPair**The C-child framed pair** (the carrier of `X_Γ(C)`; manuscript `C = Y/K` via `B/M' ≅ C`, `mChildCollapse`).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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`.→ (Q2Presentation.Induction.cChildQ2Presentation.Induction.cChild {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPair**The C-child framed pair** (the carrier of `X_Γ(C)`; manuscript `C = Y/K` via `B/M' ≅ C`, `mChildCollapse`).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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`.→ ZModZMod : ℕ → TypeThe integers modulo `n : ℕ`.2) (hz1∀ (y : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta 1 y = 0: ∀ (y(Q2Presentation.Induction.cChild chief K).fst.Y: (Q2Presentation.Induction.cChildQ2Presentation.Induction.cChild {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPair**The C-child framed pair** (the carrier of `X_Γ(C)`; manuscript `C = Y/K` via `B/M' ≅ C`, `mChildCollapse`).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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`.), zeta(Q2Presentation.Induction.cChild chief K).fst.Y → (Q2Presentation.Induction.cChild chief K).fst.Y → ZMod 21 y(Q2Presentation.Induction.cChild chief K).fst.Y=Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`. We use `a = b` as notation for `Eq a b`. A fundamental property of equality is that it is an equivalence relation. ``` variable (α : Type) (a b c d : α) variable (hab : a = b) (hcb : c = b) (hcd : c = d) example : a = d := Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd ``` Equality is much more than an equivalence relation, however. It has the important property that every assertion respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value. That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`. Example: ``` example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := Eq.subst h1 h2 example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := h1 ▸ h2 ``` The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`. For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality) Conventions for notations in identifiers: * The recommended spelling of `=` in identifiers is `eq`.0) (hz2∀ (y : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta y 1 = 0: ∀ (y(Q2Presentation.Induction.cChild chief K).fst.Y: (Q2Presentation.Induction.cChildQ2Presentation.Induction.cChild {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPair**The C-child framed pair** (the carrier of `X_Γ(C)`; manuscript `C = Y/K` via `B/M' ≅ C`, `mChildCollapse`).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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`.), zeta(Q2Presentation.Induction.cChild chief K).fst.Y → (Q2Presentation.Induction.cChild chief K).fst.Y → ZMod 2y(Q2Presentation.Induction.cChild 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`.0) (hzc∀ (a b c : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta a b + zeta (a * b) c = zeta b c + zeta a (b * c): ∀ (a(Q2Presentation.Induction.cChild chief K).fst.Yb(Q2Presentation.Induction.cChild chief K).fst.Yc(Q2Presentation.Induction.cChild chief K).fst.Y: (Q2Presentation.Induction.cChildQ2Presentation.Induction.cChild {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) : Q2Presentation.Induction.FramedPair**The C-child framed pair** (the carrier of `X_Γ(C)`; manuscript `C = Y/K` via `B/M' ≅ C`, `mChildCollapse`).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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`.), zeta(Q2Presentation.Induction.cChild chief K).fst.Y → (Q2Presentation.Induction.cChild chief K).fst.Y → ZMod 2a(Q2Presentation.Induction.cChild chief K).fst.Yb(Q2Presentation.Induction.cChild chief K).fst.Y+HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `+` in identifiers is `add`.zeta(Q2Presentation.Induction.cChild chief K).fst.Y → (Q2Presentation.Induction.cChild chief K).fst.Y → ZMod 2(HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.a(Q2Presentation.Induction.cChild chief K).fst.Y*HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.b(Q2Presentation.Induction.cChild chief K).fst.Y)HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.c(Q2Presentation.Induction.cChild chief K).fst.Y=Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`. We use `a = b` as notation for `Eq a b`. A fundamental property of equality is that it is an equivalence relation. ``` variable (α : Type) (a b c d : α) variable (hab : a = b) (hcb : c = b) (hcd : c = d) example : a = d := Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd ``` Equality is much more than an equivalence relation, however. It has the important property that every assertion respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value. That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`. Example: ``` example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := Eq.subst h1 h2 example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := h1 ▸ h2 ``` The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`. For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality) Conventions for notations in identifiers: * The recommended spelling of `=` in identifiers is `eq`.zeta(Q2Presentation.Induction.cChild chief K).fst.Y → (Q2Presentation.Induction.cChild chief K).fst.Y → ZMod 2b(Q2Presentation.Induction.cChild chief K).fst.Yc(Q2Presentation.Induction.cChild chief K).fst.Y+HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `+` in identifiers is `add`.zeta(Q2Presentation.Induction.cChild chief K).fst.Y → (Q2Presentation.Induction.cChild chief K).fst.Y → ZMod 2a(Q2Presentation.Induction.cChild chief K).fst.Y(HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.b(Q2Presentation.Induction.cChild chief K).fst.Y*HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.c(Q2Presentation.Induction.cChild chief K).fst.Y)HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.) (hR1 < Nat.card ↥(Q2Presentation.Induction.kernelFrattini K): 1 <LT.lt.{u} {α : Type u} [self : LT α] : α → α → PropThe less-than relation: `x < y` Conventions for notations in identifiers: * The recommended spelling of `<` in identifiers is `lt`.Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number. If `α` is infinite, `Nat.card α = 0`.↥(Q2Presentation.Induction.kernelFrattiniQ2Presentation.Induction.kernelFrattini {p : Q2Presentation.Induction.FramedPair} {chief : Q2Presentation.Induction.NonScalarChiefFactor p} (K : Q2Presentation.Induction.KernelMinimal chief) : Subgroup p.fst.YThe literal Frattini subgroup `R = Φ(K)` of the kernel, as a subgroup of `Y` (the manuscript's `R`, l.3626).KQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor)) (JQ2Presentation.Induction.phaseCoverStrata chief K zeta hz1 hz2 hzc: Q2Presentation.Induction.phaseCoverStrataQ2Presentation.Induction.phaseCoverStrata {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (zeta : (Q2Presentation.Induction.cChild chief K).fst.Y → (Q2Presentation.Induction.cChild chief K).fst.Y → ZMod 2) (hz1 : ∀ (y : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta 1 y = 0) (hz2 : ∀ (y : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta y 1 = 0) (hzc : ∀ (a b c : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta a b + zeta (a * b) c = zeta b c + zeta a (b * c)) : TypeThe exact-image strata of the phase cover — the manuscript sum index `{J̃ ≤ C_ζ : p_ζ(J̃) = C}` (l.4386–4389), as P2's generic `coverStrata` (the top stratum `J̃ = ⊤` included, manuscript-faithfully).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactorzeta(Q2Presentation.Induction.cChild chief K).fst.Y → (Q2Presentation.Induction.cChild chief K).fst.Y → ZMod 2hz1∀ (y : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta 1 y = 0hz2∀ (y : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta y 1 = 0hzc∀ (a b c : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta a b + zeta (a * b) c = zeta b c + zeta a (b * c)) : Q2Presentation.Induction.framedMeasureQ2Presentation.Induction.framedMeasure (p : Q2Presentation.Induction.FramedPair) : ℕThe induction measure `|L_Y|`: the order of the marked `2`-kernel of the framed target (manuscript: the strong induction of `thm:fixedframe` is on `|L_Y|`).(Q2Presentation.Induction.phaseStratumPairQ2Presentation.Induction.phaseStratumPair {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (zeta : (Q2Presentation.Induction.cChild chief K).fst.Y → (Q2Presentation.Induction.cChild chief K).fst.Y → ZMod 2) (hz1 : ∀ (y : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta 1 y = 0) (hz2 : ∀ (y : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta y 1 = 0) (hzc : ∀ (a b c : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta a b + zeta (a * b) c = zeta b c + zeta a (b * c)) (J : Q2Presentation.Induction.phaseCoverStrata chief K zeta hz1 hz2 hzc) : Q2Presentation.Induction.FramedPairThe stratum framed pair `(J̃, J̃ ∩ L̃, π̃|_J̃, θ̃|_J̃; same frame)` — an ordinary exact-image object in the same global boundary-framed category (l.3841–3843; mirror of `scalarCoverStratumPair`).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor pKQ2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactorzeta(Q2Presentation.Induction.cChild chief K).fst.Y → (Q2Presentation.Induction.cChild chief K).fst.Y → ZMod 2hz1∀ (y : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta 1 y = 0hz2∀ (y : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta y 1 = 0hzc∀ (a b c : (Q2Presentation.Induction.cChild chief K).fst.Y), zeta a b + zeta (a * b) c = zeta b c + zeta a (b * c)JQ2Presentation.Induction.phaseCoverStrata chief K zeta hz1 hz2 hzc) <LT.lt.{u} {α : Type u} [self : LT α] : α → α → PropThe less-than relation: `x < y` Conventions for notations in identifiers: * The recommended spelling of `<` in identifiers is `lt`.Q2Presentation.Induction.framedMeasureQ2Presentation.Induction.framedMeasure (p : Q2Presentation.Induction.FramedPair) : ℕThe induction measure `|L_Y|`: the order of the marked `2`-kernel of the framed target (manuscript: the strong induction of `thm:fixedframe` is on `|L_Y|`).pQ2Presentation.Induction.FramedPair**Strict decrease below the PARENT** (`lem:strictdecrease` `eq:phasecoverdescent` l.4411–4414 + l.4422–4424, in-tree chain `≤ 2·m_C ≤ |M'|·m_C = m_B < P`): every phase-cover stratum — including the top stratum `J̃ = ⊤` — is a strictly smaller induction target. `hR` (implied by P8's `hcard`) enters only here.
-
defdefined in Q2Presentation/Induction/ScalarCoverPartition.leancomplete
def Q2Presentation.Induction.scalarCoverStratumPair {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)) (JQ2Presentation.Induction.scalarCoverStrata chief K lam hinv: Q2Presentation.Induction.scalarCoverStrataQ2Presentation.Induction.scalarCoverStrata {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) : Type**The exact-image strata of the scalar cover**: subgroups of `B_λ` mapping onto the child (`J̃ ≤ p_λ⁻¹(B)` with `p_λ(J̃) = B` — the manuscript sum index of `eq:covertransform` at the full lower target).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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.FramedPairQ2Presentation.Induction.FramedPair : Type 1A **framed pair** `(𝒴, F)`: a boundary-framed marked target together with a boundary frame for it (manuscript Definition 4.1 + `eq:beta`). This is the index of Theorem 4.2: the boundary-framed surjection count `e_Γ^β` is a function of the pair. The induction of `sec:induction` ranges over *all* such pairs simultaneously ("the induction is stated globally", l.1213), ordered by `|L_Y|`.def Q2Presentation.Induction.scalarCoverStratumPair {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)) (JQ2Presentation.Induction.scalarCoverStrata chief K lam hinv: Q2Presentation.Induction.scalarCoverStrataQ2Presentation.Induction.scalarCoverStrata {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.FirstNonScalarChiefFactor p) (K : Q2Presentation.Induction.KernelMinimal chief.toNonScalarChiefFactor) (lam : Module.Dual (ZMod 2) (Q2Presentation.Lifting.NAdd (Q2Presentation.Induction.xrKernel chief K))) (hinv : lam ∈ Q2Presentation.Lifting.conjInvDuals (Q2Presentation.Induction.xrKernel chief K)) : Type**The exact-image strata of the scalar cover**: subgroups of `B_λ` mapping onto the child (`J̃ ≤ p_λ⁻¹(B)` with `p_λ(J̃) = B` — the manuscript sum index of `eq:covertransform` at the full lower target).chiefQ2Presentation.Induction.FirstNonScalarChiefFactor 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.FramedPairQ2Presentation.Induction.FramedPair : Type 1A **framed pair** `(𝒴, F)`: a boundary-framed marked target together with a boundary frame for it (manuscript Definition 4.1 + `eq:beta`). This is the index of Theorem 4.2: the boundary-framed surjection count `e_Γ^β` is a function of the pair. The induction of `sec:induction` ranges over *all* such pairs simultaneously ("the induction is stated globally", l.1213), ordered by `|L_Y|`.**The stratum framed pair** `(J̃, J̃ ∩ L̃, π̃|_J̃, θ̃|_J̃; same frame)` — an ordinary exact-image object in the same global boundary-framed category (same `H`, same `E`, `p.2`'s frame verbatim), ready for the engine's children lists. Its measure is `|J̃ ∩ L̃|`, `lem:strictdecrease`'s quantity.
-
theoremdefined in Q2Presentation/Lifting/CoverLiftPartition.leancomplete
theorem Q2Presentation.TorsorProgram.coverStrata_LY_card_le (Yt
Q2Presentation.BoundaryFramedTarget: Q2Presentation.BoundaryFramedTargetQ2Presentation.BoundaryFramedTarget : Type 1A **boundary-framed marked target** `𝒴 = (Y, L_Y, π_Y, θ_Y)` (manuscript Definition 4.1, `def:framed`): a finite group `Y` with a normal finite `2`-subgroup `L_Y`, a surjection `π_Y : Y ↠ H` onto a finite *tame* quotient with kernel exactly `L_Y`, and an *elementary decoration* `θ_Y : Y → Multiplicative E` into the multiplicative image of a finite `𝔽₂`-vector space `E`. The pair `q_Y = (π_Y, θ_Y)` fixes both the tame quotient `Y / L_Y ≅ H` and the decoration.) (NSubgroup Yt.Y: SubgroupSubgroup.{u_3} (G : Type u_3) [Group G] : Type u_3A subgroup of a group `G` is a subset containing 1, closed under multiplication and closed under multiplicative inverse.YtQ2Presentation.BoundaryFramedTarget.YQ2Presentation.BoundaryFramedTarget.Y (self : Q2Presentation.BoundaryFramedTarget) : TypeThe finite target group `Y`.) [hNnN.Normal: NSubgroup Yt.Y.NormalSubgroup.Normal.{u_1} {G : Type u_1} [Group G] (H : Subgroup G) : PropA subgroup `H` is normal if whenever `n ∈ H`, then `g * n * g⁻¹ ∈ H` for every `g : G`] (hNLYN ≤ Yt.LY: NSubgroup Yt.Y≤LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` Conventions for notations in identifiers: * The recommended spelling of `≤` in identifiers is `le`. * The recommended spelling of `<=` in identifiers is `le` (prefer `≤` over `<=`).YtQ2Presentation.BoundaryFramedTarget.LYQ2Presentation.BoundaryFramedTarget.LY (self : Q2Presentation.BoundaryFramedTarget) : Subgroup self.YThe marked normal `2`-subgroup `L_Y ◁ Y` (the wild part).) (hNθ∀ n ∈ N, Yt.thetaY n = 1: ∀ nYt.Y∈ NSubgroup Yt.Y, YtQ2Presentation.BoundaryFramedTarget.thetaYQ2Presentation.BoundaryFramedTarget.thetaY (self : Q2Presentation.BoundaryFramedTarget) : self.Y →* Multiplicative self.EThe elementary decoration `θ_Y : Y → Multiplicative E`.nYt.Y=Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`. We use `a = b` as notation for `Eq a b`. A fundamental property of equality is that it is an equivalence relation. ``` variable (α : Type) (a b c d : α) variable (hab : a = b) (hcb : c = b) (hcd : c = d) example : a = d := Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd ``` Equality is much more than an equivalence relation, however. It has the important property that every assertion respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value. That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`. Example: ``` example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := Eq.subst h1 h2 example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := h1 ▸ h2 ``` The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`. For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality) Conventions for notations in identifiers: * The recommended spelling of `=` in identifiers is `eq`.1) (JQ2Presentation.TorsorProgram.coverStrata Yt N: Q2Presentation.TorsorProgram.coverStrataQ2Presentation.TorsorProgram.coverStrata (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y) [hNn : N.Normal] : Type**The exact-image strata index**: subgroups of the ambient target mapping ONTO the child (`J̃ ≤ p⁻¹(J)` with `p(J̃) = J` at `J` = the full child; manuscript sum index of `eq:covertransform`).YtQ2Presentation.BoundaryFramedTargetNSubgroup Yt.Y) : Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number. If `α` is infinite, `Nat.card α = 0`.↥(YtQ2Presentation.BoundaryFramedTarget.exactImageTargetQ2Presentation.BoundaryFramedTarget.exactImageTarget (Yt : Q2Presentation.BoundaryFramedTarget) (J : Subgroup Yt.Y) (hJ : Function.Surjective ⇑(Yt.piY.comp J.subtype)) : Q2Presentation.BoundaryFramedTarget**The exact-image stratum** `𝒥 = (J, J ∩ L_Y, π_Y|_J, θ_Y|_J)` (manuscript Definition 4.1, exact-image paragraph), as a genuine `BoundaryFramedTarget`. The hypothesis `hJ` says `J` *projects onto* `H` (`π_Y|_J` surjective), which is the manuscript's "`J ≤ Y` projects onto `H`". All four boundary-framed axioms are inherited: * `J ∩ L_Y` is normal in `J` (`Normal.subgroupOf`); * `J ∩ L_Y` is a `2`-group (`subgroupOf_LY_isTwoGroup`); * `π_Y|_J : J ↠ H` is surjective (the hypothesis `hJ`) with kernel `J ∩ L_Y` (`ker_piY_comp_subtype`). The tame quotient `H` and the elementary decoration `E` are preserved on the nose. This *is* the inheritance lemma: it being well-typed is the content.↑JQ2Presentation.TorsorProgram.coverStrata Yt N⋯).LYQ2Presentation.BoundaryFramedTarget.LY (self : Q2Presentation.BoundaryFramedTarget) : Subgroup self.YThe marked normal `2`-subgroup `L_Y ◁ Y` (the wild part).≤LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` Conventions for notations in identifiers: * The recommended spelling of `≤` in identifiers is `le`. * The recommended spelling of `<=` in identifiers is `le` (prefer `≤` over `<=`).Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number. If `α` is infinite, `Nat.card α = 0`.↥NSubgroup Yt.Y*HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number. If `α` is infinite, `Nat.card α = 0`.↥(Q2Presentation.TorsorProgram.quotientFramedTargetQ2Presentation.TorsorProgram.quotientFramedTarget (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y) [hNn : N.Normal] (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) : Q2Presentation.BoundaryFramedTarget**The quotient framed target** `Y/N` (same `H`, same `E`, image wild kernel).YtQ2Presentation.BoundaryFramedTargetNSubgroup Yt.YhNLYN ≤ Yt.LYhNθ∀ n ∈ N, Yt.thetaY n = 1).LYQ2Presentation.BoundaryFramedTarget.LY (self : Q2Presentation.BoundaryFramedTarget) : Subgroup self.YThe marked normal `2`-subgroup `L_Y ◁ Y` (the wild part).theorem Q2Presentation.TorsorProgram.coverStrata_LY_card_le (Yt
Q2Presentation.BoundaryFramedTarget: Q2Presentation.BoundaryFramedTargetQ2Presentation.BoundaryFramedTarget : Type 1A **boundary-framed marked target** `𝒴 = (Y, L_Y, π_Y, θ_Y)` (manuscript Definition 4.1, `def:framed`): a finite group `Y` with a normal finite `2`-subgroup `L_Y`, a surjection `π_Y : Y ↠ H` onto a finite *tame* quotient with kernel exactly `L_Y`, and an *elementary decoration* `θ_Y : Y → Multiplicative E` into the multiplicative image of a finite `𝔽₂`-vector space `E`. The pair `q_Y = (π_Y, θ_Y)` fixes both the tame quotient `Y / L_Y ≅ H` and the decoration.) (NSubgroup Yt.Y: SubgroupSubgroup.{u_3} (G : Type u_3) [Group G] : Type u_3A subgroup of a group `G` is a subset containing 1, closed under multiplication and closed under multiplicative inverse.YtQ2Presentation.BoundaryFramedTarget.YQ2Presentation.BoundaryFramedTarget.Y (self : Q2Presentation.BoundaryFramedTarget) : TypeThe finite target group `Y`.) [hNnN.Normal: NSubgroup Yt.Y.NormalSubgroup.Normal.{u_1} {G : Type u_1} [Group G] (H : Subgroup G) : PropA subgroup `H` is normal if whenever `n ∈ H`, then `g * n * g⁻¹ ∈ H` for every `g : G`] (hNLYN ≤ Yt.LY: NSubgroup Yt.Y≤LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` Conventions for notations in identifiers: * The recommended spelling of `≤` in identifiers is `le`. * The recommended spelling of `<=` in identifiers is `le` (prefer `≤` over `<=`).YtQ2Presentation.BoundaryFramedTarget.LYQ2Presentation.BoundaryFramedTarget.LY (self : Q2Presentation.BoundaryFramedTarget) : Subgroup self.YThe marked normal `2`-subgroup `L_Y ◁ Y` (the wild part).) (hNθ∀ n ∈ N, Yt.thetaY n = 1: ∀ nYt.Y∈ NSubgroup Yt.Y, YtQ2Presentation.BoundaryFramedTarget.thetaYQ2Presentation.BoundaryFramedTarget.thetaY (self : Q2Presentation.BoundaryFramedTarget) : self.Y →* Multiplicative self.EThe elementary decoration `θ_Y : Y → Multiplicative E`.nYt.Y=Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`. We use `a = b` as notation for `Eq a b`. A fundamental property of equality is that it is an equivalence relation. ``` variable (α : Type) (a b c d : α) variable (hab : a = b) (hcb : c = b) (hcd : c = d) example : a = d := Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd ``` Equality is much more than an equivalence relation, however. It has the important property that every assertion respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value. That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`. Example: ``` example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := Eq.subst h1 h2 example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := h1 ▸ h2 ``` The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`. For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality) Conventions for notations in identifiers: * The recommended spelling of `=` in identifiers is `eq`.1) (JQ2Presentation.TorsorProgram.coverStrata Yt N: Q2Presentation.TorsorProgram.coverStrataQ2Presentation.TorsorProgram.coverStrata (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y) [hNn : N.Normal] : Type**The exact-image strata index**: subgroups of the ambient target mapping ONTO the child (`J̃ ≤ p⁻¹(J)` with `p(J̃) = J` at `J` = the full child; manuscript sum index of `eq:covertransform`).YtQ2Presentation.BoundaryFramedTargetNSubgroup Yt.Y) : Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number. If `α` is infinite, `Nat.card α = 0`.↥(YtQ2Presentation.BoundaryFramedTarget.exactImageTargetQ2Presentation.BoundaryFramedTarget.exactImageTarget (Yt : Q2Presentation.BoundaryFramedTarget) (J : Subgroup Yt.Y) (hJ : Function.Surjective ⇑(Yt.piY.comp J.subtype)) : Q2Presentation.BoundaryFramedTarget**The exact-image stratum** `𝒥 = (J, J ∩ L_Y, π_Y|_J, θ_Y|_J)` (manuscript Definition 4.1, exact-image paragraph), as a genuine `BoundaryFramedTarget`. The hypothesis `hJ` says `J` *projects onto* `H` (`π_Y|_J` surjective), which is the manuscript's "`J ≤ Y` projects onto `H`". All four boundary-framed axioms are inherited: * `J ∩ L_Y` is normal in `J` (`Normal.subgroupOf`); * `J ∩ L_Y` is a `2`-group (`subgroupOf_LY_isTwoGroup`); * `π_Y|_J : J ↠ H` is surjective (the hypothesis `hJ`) with kernel `J ∩ L_Y` (`ker_piY_comp_subtype`). The tame quotient `H` and the elementary decoration `E` are preserved on the nose. This *is* the inheritance lemma: it being well-typed is the content.↑JQ2Presentation.TorsorProgram.coverStrata Yt N⋯).LYQ2Presentation.BoundaryFramedTarget.LY (self : Q2Presentation.BoundaryFramedTarget) : Subgroup self.YThe marked normal `2`-subgroup `L_Y ◁ Y` (the wild part).≤LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` Conventions for notations in identifiers: * The recommended spelling of `≤` in identifiers is `le`. * The recommended spelling of `<=` in identifiers is `le` (prefer `≤` over `<=`).Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number. If `α` is infinite, `Nat.card α = 0`.↥NSubgroup Yt.Y*HMul.hMul.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HMul α β γ] : α → β → γ`a * b` computes the product of `a` and `b`. The meaning of this notation is type-dependent. Conventions for notations in identifiers: * The recommended spelling of `*` in identifiers is `mul`.Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number. If `α` is infinite, `Nat.card α = 0`.↥(Q2Presentation.TorsorProgram.quotientFramedTargetQ2Presentation.TorsorProgram.quotientFramedTarget (Yt : Q2Presentation.BoundaryFramedTarget) (N : Subgroup Yt.Y) [hNn : N.Normal] (hNLY : N ≤ Yt.LY) (hNθ : ∀ n ∈ N, Yt.thetaY n = 1) : Q2Presentation.BoundaryFramedTarget**The quotient framed target** `Y/N` (same `H`, same `E`, image wild kernel).YtQ2Presentation.BoundaryFramedTargetNSubgroup Yt.YhNLYN ≤ Yt.LYhNθ∀ n ∈ N, Yt.thetaY n = 1).LYQ2Presentation.BoundaryFramedTarget.LY (self : Q2Presentation.BoundaryFramedTarget) : Subgroup self.YThe marked normal `2`-subgroup `L_Y ◁ Y` (the wild part).**Generic stratum measure bound** (`lem:strictdecrease` `eq:properweighteddescent` engine, l.4407): a stratum's marked kernel `J̃ ∩ L̃` is at most `|N|` times the child's marked kernel — the exact-sequence count `|J̃ ∩ L̃| = |ker| · |image|` with the kernel side inside `N` and the image side inside the child `L`.
Theorem 8.17 of the paper (Closed exact-image recursion).
Suppose L_Y has a non-scalar simple head. The exact-image count
e_\Gamma(Y) is obtained from (137) and, when R\ne1, from
(139)–(146). Every exact-image count on
the right-hand sides belongs to a boundary-framed target with strictly smaller
marked 2-kernel. Hence the count is determined by the source interface of
Corollary 6.6 and the exact-image counts for smaller targets.
Lean code for Theorem8.17●4 theorems
Associated Lean declarations
-
theoremdefined in Q2Presentation/Induction/MinimalBlock.leancomplete
theorem Q2Presentation.Induction.nonempty_minimalBlock_iff (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|`.) : NonemptyNonempty.{u} (α : Sort u) : Prop`Nonempty α` is a typeclass that says that `α` is not an empty type, that is, there exists an element in the type. It differs from `Inhabited α` in that `Nonempty α` is a `Prop`, which means that it does not actually carry an element of `α`, only a proof that *there exists* such an element. Given `Nonempty α`, you can construct an element of `α` *nonconstructively* using `Classical.choice`.(Q2Presentation.Induction.MinimalBlockQ2Presentation.Induction.MinimalBlock (p : Q2Presentation.Induction.FramedPair) : Type 1**The §7 minimal non-scalar block.** Source-uniform module-level data of the manuscript tower (`eq:targettower`), with the deep group/representation inputs of `lem:simplehead`/`lem:collapse`/`prop:simpleheaddet` isolated as documented fields.pQ2Presentation.Induction.FramedPair) ↔Iff (a b : Prop) : PropIf and only if, or logical bi-implication. `a ↔ b` means that `a` implies `b` and vice versa. By `propext`, this implies that `a` and `b` are equal and hence any expression involving `a` is equivalent to the corresponding expression with `b` instead. Conventions for notations in identifiers: * The recommended spelling of `↔` in identifiers is `iff`. * The recommended spelling of `<->` in identifiers is `iff` (prefer `↔` over `<->`).¬Not (a : Prop) : Prop`Not p`, or `¬p`, is the negation of `p`. It is defined to be `p → False`, so if your goal is `¬p` you can use `intro h` to turn the goal into `h : p ⊢ False`, and if you have `hn : ¬p` and `h : p` then `hn h : False` and `(hn h).elim` will prove anything. For more information: [Propositional Logic](https://lean-lang.org/theorem_proving_in_lean4/propositions_and_proofs.html#propositional-logic) Conventions for notations in identifiers: * The recommended spelling of `¬` in identifiers is `not`.Q2Presentation.Induction.ScalarTerminalQ2Presentation.Induction.ScalarTerminal (p : Q2Presentation.Induction.FramedPair) : Prop**Scalar-terminal framed pair.**pQ2Presentation.Induction.FramedPairtheorem Q2Presentation.Induction.nonempty_minimalBlock_iff (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|`.) : NonemptyNonempty.{u} (α : Sort u) : Prop`Nonempty α` is a typeclass that says that `α` is not an empty type, that is, there exists an element in the type. It differs from `Inhabited α` in that `Nonempty α` is a `Prop`, which means that it does not actually carry an element of `α`, only a proof that *there exists* such an element. Given `Nonempty α`, you can construct an element of `α` *nonconstructively* using `Classical.choice`.(Q2Presentation.Induction.MinimalBlockQ2Presentation.Induction.MinimalBlock (p : Q2Presentation.Induction.FramedPair) : Type 1**The §7 minimal non-scalar block.** Source-uniform module-level data of the manuscript tower (`eq:targettower`), with the deep group/representation inputs of `lem:simplehead`/`lem:collapse`/`prop:simpleheaddet` isolated as documented fields.pQ2Presentation.Induction.FramedPair) ↔Iff (a b : Prop) : PropIf and only if, or logical bi-implication. `a ↔ b` means that `a` implies `b` and vice versa. By `propext`, this implies that `a` and `b` are equal and hence any expression involving `a` is equivalent to the corresponding expression with `b` instead. Conventions for notations in identifiers: * The recommended spelling of `↔` in identifiers is `iff`. * The recommended spelling of `<->` in identifiers is `iff` (prefer `↔` over `<->`).¬Not (a : Prop) : Prop`Not p`, or `¬p`, is the negation of `p`. It is defined to be `p → False`, so if your goal is `¬p` you can use `intro h` to turn the goal into `h : p ⊢ False`, and if you have `hn : ¬p` and `h : p` then `hn h : False` and `(hn h).elim` will prove anything. For more information: [Propositional Logic](https://lean-lang.org/theorem_proving_in_lean4/propositions_and_proofs.html#propositional-logic) Conventions for notations in identifiers: * The recommended spelling of `¬` in identifiers is `not`.Q2Presentation.Induction.ScalarTerminalQ2Presentation.Induction.ScalarTerminal (p : Q2Presentation.Induction.FramedPair) : Prop**Scalar-terminal framed pair.**pQ2Presentation.Induction.FramedPair**Non-scalarity is exactly block-existence** (`sec:block` entry/exit): combining the tightness projection with the §7 bridge axiom, a target admits a minimal non-scalar block iff it is not scalar-terminal. This pins the bridge axiom to the manuscript dichotomy (`thm:closedrecursion` ∨ `lem:scalarterminal`) and rules out a vacuous block.
-
theoremdefined in Q2Presentation/Induction/Section7ChiefKernelFoundation.leancomplete
theorem Q2Presentation.Induction.frattini_case_split {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.NonScalarChiefFactor p: Q2Presentation.Induction.NonScalarChiefFactorQ2Presentation.Induction.NonScalarChiefFactor (p : Q2Presentation.Induction.FramedPair) : TypeA concrete non-scalar chief factor in the marked wild kernel `L_Y`. This is the Lean form of the Section 7 entry point: choose `S triangleleft P <= L_Y` with `P/S` the first non-scalar simple factor. Here the existing project predicate `ChiefFactorInLY` supplies the chief-factor condition, and `not ChiefFactorTrivial` records non-scalarity.pQ2Presentation.Induction.FramedPair} (KQ2Presentation.Induction.KernelMinimal chief: Q2Presentation.Induction.KernelMinimalQ2Presentation.Induction.KernelMinimal {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.NonScalarChiefFactor p) : TypeThe manuscript's kernel choice (l.3623): `K ◁ Y`, `K ≤ P`, `KS = P`, and `K` is **⊆-minimal** with these properties — stated as: any `Y`-normal `K' ≤ K` still joining with `S` to `P` equals `K`. (This, not leastness among all candidates, is what `lem:simplehead` and `lem:collapse` use: both apply it to subgroups of `K`.)chiefQ2Presentation.Induction.NonScalarChiefFactor p) : Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number. If `α` is infinite, `Nat.card α = 0`.↥(Q2Presentation.Induction.kernelFrattiniQ2Presentation.Induction.kernelFrattini {p : Q2Presentation.Induction.FramedPair} {chief : Q2Presentation.Induction.NonScalarChiefFactor p} (K : Q2Presentation.Induction.KernelMinimal chief) : Subgroup p.fst.YThe literal Frattini subgroup `R = Φ(K)` of the kernel, as a subgroup of `Y` (the manuscript's `R`, l.3626).KQ2Presentation.Induction.KernelMinimal chief) =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`. We use `a = b` as notation for `Eq a b`. A fundamental property of equality is that it is an equivalence relation. ``` variable (α : Type) (a b c d : α) variable (hab : a = b) (hcb : c = b) (hcd : c = d) example : a = d := Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd ``` Equality is much more than an equivalence relation, however. It has the important property that every assertion respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value. That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`. Example: ``` example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := Eq.subst h1 h2 example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := h1 ▸ h2 ``` The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`. For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality) Conventions for notations in identifiers: * The recommended spelling of `=` in identifiers is `eq`.1 ∨Or (a b : Prop) : Prop`Or a b`, or `a ∨ b`, is the disjunction of propositions. There are two constructors for `Or`, called `Or.inl : a → a ∨ b` and `Or.inr : b → a ∨ b`, and you can use `match` or `cases` to destruct an `Or` assumption into the two cases. Conventions for notations in identifiers: * The recommended spelling of `∨` in identifiers is `or`. * The recommended spelling of `\/` in identifiers is `or` (prefer `∨` over `\/`).1 <LT.lt.{u} {α : Type u} [self : LT α] : α → α → PropThe less-than relation: `x < y` Conventions for notations in identifiers: * The recommended spelling of `<` in identifiers is `lt`.Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number. If `α` is infinite, `Nat.card α = 0`.↥(Q2Presentation.Induction.kernelFrattiniQ2Presentation.Induction.kernelFrattini {p : Q2Presentation.Induction.FramedPair} {chief : Q2Presentation.Induction.NonScalarChiefFactor p} (K : Q2Presentation.Induction.KernelMinimal chief) : Subgroup p.fst.YThe literal Frattini subgroup `R = Φ(K)` of the kernel, as a subgroup of `Y` (the manuscript's `R`, l.3626).KQ2Presentation.Induction.KernelMinimal chief)theorem Q2Presentation.Induction.frattini_case_split {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.NonScalarChiefFactor p: Q2Presentation.Induction.NonScalarChiefFactorQ2Presentation.Induction.NonScalarChiefFactor (p : Q2Presentation.Induction.FramedPair) : TypeA concrete non-scalar chief factor in the marked wild kernel `L_Y`. This is the Lean form of the Section 7 entry point: choose `S triangleleft P <= L_Y` with `P/S` the first non-scalar simple factor. Here the existing project predicate `ChiefFactorInLY` supplies the chief-factor condition, and `not ChiefFactorTrivial` records non-scalarity.pQ2Presentation.Induction.FramedPair} (KQ2Presentation.Induction.KernelMinimal chief: Q2Presentation.Induction.KernelMinimalQ2Presentation.Induction.KernelMinimal {p : Q2Presentation.Induction.FramedPair} (chief : Q2Presentation.Induction.NonScalarChiefFactor p) : TypeThe manuscript's kernel choice (l.3623): `K ◁ Y`, `K ≤ P`, `KS = P`, and `K` is **⊆-minimal** with these properties — stated as: any `Y`-normal `K' ≤ K` still joining with `S` to `P` equals `K`. (This, not leastness among all candidates, is what `lem:simplehead` and `lem:collapse` use: both apply it to subgroups of `K`.)chiefQ2Presentation.Induction.NonScalarChiefFactor p) : Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number. If `α` is infinite, `Nat.card α = 0`.↥(Q2Presentation.Induction.kernelFrattiniQ2Presentation.Induction.kernelFrattini {p : Q2Presentation.Induction.FramedPair} {chief : Q2Presentation.Induction.NonScalarChiefFactor p} (K : Q2Presentation.Induction.KernelMinimal chief) : Subgroup p.fst.YThe literal Frattini subgroup `R = Φ(K)` of the kernel, as a subgroup of `Y` (the manuscript's `R`, l.3626).KQ2Presentation.Induction.KernelMinimal chief) =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`. We use `a = b` as notation for `Eq a b`. A fundamental property of equality is that it is an equivalence relation. ``` variable (α : Type) (a b c d : α) variable (hab : a = b) (hcb : c = b) (hcd : c = d) example : a = d := Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd ``` Equality is much more than an equivalence relation, however. It has the important property that every assertion respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value. That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`. Example: ``` example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := Eq.subst h1 h2 example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := h1 ▸ h2 ``` The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`. For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality) Conventions for notations in identifiers: * The recommended spelling of `=` in identifiers is `eq`.1 ∨Or (a b : Prop) : Prop`Or a b`, or `a ∨ b`, is the disjunction of propositions. There are two constructors for `Or`, called `Or.inl : a → a ∨ b` and `Or.inr : b → a ∨ b`, and you can use `match` or `cases` to destruct an `Or` assumption into the two cases. Conventions for notations in identifiers: * The recommended spelling of `∨` in identifiers is `or`. * The recommended spelling of `\/` in identifiers is `or` (prefer `∨` over `\/`).1 <LT.lt.{u} {α : Type u} [self : LT α] : α → α → PropThe less-than relation: `x < y` Conventions for notations in identifiers: * The recommended spelling of `<` in identifiers is `lt`.Nat.cardNat.card.{u_3} (α : Type u_3) : ℕ`Nat.card α` is the cardinality of `α` as a natural number. If `α` is infinite, `Nat.card α = 0`.↥(Q2Presentation.Induction.kernelFrattiniQ2Presentation.Induction.kernelFrattini {p : Q2Presentation.Induction.FramedPair} {chief : Q2Presentation.Induction.NonScalarChiefFactor p} (K : Q2Presentation.Induction.KernelMinimal chief) : Subgroup p.fst.YThe literal Frattini subgroup `R = Φ(K)` of the kernel, as a subgroup of `Y` (the manuscript's `R`, l.3626).KQ2Presentation.Induction.KernelMinimal chief)**The `R = 1` / `R ≠ 1` dichotomy** of `thm:closedrecursion` (l.4429/4437): either the Frattini layer is trivial — "`B = Y` and the induction closes at the elementary stage" — or it is a genuine strict layer and the `R`-obstruction stages apply.
-
theoremdefined in Q2Presentation/Induction/Section7CorrectedBranch.leancomplete
theorem Q2Presentation.Induction.boundaryFramed_nonterminal_fourier_branch_corrected (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|`.) (h¬Q2Presentation.Induction.ScalarTerminal p: ¬Not (a : Prop) : Prop`Not p`, or `¬p`, is the negation of `p`. It is defined to be `p → False`, so if your goal is `¬p` you can use `intro h` to turn the goal into `h : p ⊢ False`, and if you have `hn : ¬p` and `h : p` then `hn h : False` and `(hn h).elim` will prove anything. For more information: [Propositional Logic](https://lean-lang.org/theorem_proving_in_lean4/propositions_and_proofs.html#propositional-logic) Conventions for notations in identifiers: * The recommended spelling of `¬` in identifiers is `not`.Q2Presentation.Induction.ScalarTerminalQ2Presentation.Induction.ScalarTerminal (p : Q2Presentation.Induction.FramedPair) : Prop**Scalar-terminal framed pair.**pQ2Presentation.Induction.FramedPair) : NonemptyNonempty.{u} (α : Sort u) : Prop`Nonempty α` is a typeclass that says that `α` is not an empty type, that is, there exists an element in the type. It differs from `Inhabited α` in that `Nonempty α` is a `Prop`, which means that it does not actually carry an element of `α`, only a proof that *there exists* such an element. Given `Nonempty α`, you can construct an element of `α` *nonconstructively* using `Classical.choice`.(Q2Presentation.Induction.FourierBranchDataQ2Presentation.Induction.FourierBranchData (p : Q2Presentation.Induction.FramedPair) : Type 1**Nonterminal Fourier-recursion packet.** Source-uniform data: the finite `𝔽₂` obstruction space `W = O_R`, the lift-torsor exponent/size `dimExp`/`zR` (`prop:finalfourier`), the strictly-smaller `children`, and the *single* partial-count recipe `partialN` (`eq:recursionR2`–`eq:phasecovertransform`). Per-source data: the finite lift index `X_Γ`, the `R`-obstruction `o_Γ : X_Γ → O_R`, the lift-torsor identity `realize_Γ` (`e_Γ(Y) = z_R·#{o_Γ = 0}`), and the partial-count identity `partial_Γ`. The two recursion equations are **not** fields: they are derived from `fourier_recursion_step`.pQ2Presentation.Induction.FramedPair)theorem Q2Presentation.Induction.boundaryFramed_nonterminal_fourier_branch_corrected (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|`.) (h¬Q2Presentation.Induction.ScalarTerminal p: ¬Not (a : Prop) : Prop`Not p`, or `¬p`, is the negation of `p`. It is defined to be `p → False`, so if your goal is `¬p` you can use `intro h` to turn the goal into `h : p ⊢ False`, and if you have `hn : ¬p` and `h : p` then `hn h : False` and `(hn h).elim` will prove anything. For more information: [Propositional Logic](https://lean-lang.org/theorem_proving_in_lean4/propositions_and_proofs.html#propositional-logic) Conventions for notations in identifiers: * The recommended spelling of `¬` in identifiers is `not`.Q2Presentation.Induction.ScalarTerminalQ2Presentation.Induction.ScalarTerminal (p : Q2Presentation.Induction.FramedPair) : Prop**Scalar-terminal framed pair.**pQ2Presentation.Induction.FramedPair) : NonemptyNonempty.{u} (α : Sort u) : Prop`Nonempty α` is a typeclass that says that `α` is not an empty type, that is, there exists an element in the type. It differs from `Inhabited α` in that `Nonempty α` is a `Prop`, which means that it does not actually carry an element of `α`, only a proof that *there exists* such an element. Given `Nonempty α`, you can construct an element of `α` *nonconstructively* using `Classical.choice`.(Q2Presentation.Induction.FourierBranchDataQ2Presentation.Induction.FourierBranchData (p : Q2Presentation.Induction.FramedPair) : Type 1**Nonterminal Fourier-recursion packet.** Source-uniform data: the finite `𝔽₂` obstruction space `W = O_R`, the lift-torsor exponent/size `dimExp`/`zR` (`prop:finalfourier`), the strictly-smaller `children`, and the *single* partial-count recipe `partialN` (`eq:recursionR2`–`eq:phasecovertransform`). Per-source data: the finite lift index `X_Γ`, the `R`-obstruction `o_Γ : X_Γ → O_R`, the lift-torsor identity `realize_Γ` (`e_Γ(Y) = z_R·#{o_Γ = 0}`), and the partial-count identity `partial_Γ`. The two recursion equations are **not** fields: they are derived from `fourier_recursion_step`.pQ2Presentation.Induction.FramedPair)**The corrected nonterminal Fourier branch.** From non-scalar-terminality alone: choose a *first* non-scalar chief factor (proven), a ⊆-*minimal* kernel (proven), and split on the `R = Φ(K)` dichotomy (proven) — exactly the shape of `thm:closedrecursion`. No unconditional `|Φ(K)| > 1`, no least-form kernel, no `𝒳_R ≠ 0`.
-
theoremdefined in Q2Presentation/PresentationCorrect.leancomplete
theorem Q2Presentation.surj_counts_equal (G
Type: TypeA type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`.) [GroupGroup.{u} (G : Type u) : Type uA `Group` is a `Monoid` with an operation `⁻¹` satisfying `a⁻¹ * a = 1`. There is also a division operation `/` such that `a / b = a * b⁻¹`, with a default so that `a / b = a * b⁻¹` holds by definition. Use `Group.ofLeftAxioms` or `Group.ofRightAxioms` to define a group structure on a type with the minimum proof obligations.GType] [FiniteFinite.{u_3} (α : Sort u_3) : PropA type is `Finite` if it is in bijective correspondence to some `Fin n`. This is similar to `Fintype`, but `Finite` is a proposition rather than data. A particular benefit to this is that `Finite` instances are definitionally equal to one another (due to proof irrelevance) rather than being merely propositionally equal, and, furthermore, `Finite` instances generally avoid the need for `Decidable` instances. One other notable difference is that `Finite` allows there to be `Finite p` instances for all `p : Prop`, which is not allowed by `Fintype` due to universe constraints. An application of this is that `Finite (x ∈ s → β x)` follows from the general instance for pi types, assuming `[∀ x, Finite (β x)]`. Implementation note: this is a reason `Finite α` is not defined as `Nonempty (Fintype α)`. Every `Fintype` instance provides a `Finite` instance via `Finite.of_fintype`. Conversely, one can noncomputably create a `Fintype` instance from a `Finite` instance via `Fintype.ofFinite`. In a proof one might write ```lean have := Fintype.ofFinite α ``` to obtain such an instance. Do not write noncomputable `Fintype` instances; instead write `Finite` instances and use this `Fintype.ofFinite` interface. The `Fintype` instances should be relied upon to be computable for evaluation purposes. Theorems should use `Finite` instead of `Fintype`, unless definitions in the theorem statement require `Fintype`. Definitions should prefer `Finite` as well, unless it is important that the definitions are meant to be computable in the reduction or `#eval` sense.GType] : Cardinal.mkCardinal.mk.{u} : Type u → Cardinal.{u}The cardinal number of a type(Q2Presentation.Profinite.SurjContHomQ2Presentation.Profinite.SurjContHom.{u} (P Q : ProfiniteGrp.{u}) : Type uA surjective continuous homomorphism of profinite groups (a profinite "epimorphism", recorded as data: the morphism together with surjectivity of the underlying map).Q2Presentation.GammaAQ2Presentation.GammaA : ProfiniteGrp.{0}The candidate profinite group `Γ_A`, the cofiltered inverse limit (in `ProfiniteGrp`) of all admissible finite marked quotients (manuscript eq. `candidateinverse`).(ProfiniteGrp.ofFiniteGrpProfiniteGrp.ofFiniteGrp.{u_1} (G : FiniteGrp.{u_1}) : ProfiniteGrp.{u_1}A `FiniteGrp` when given the discrete topology can be considered as a profinite group.(FiniteGrp.ofFiniteGrp.of.{u} (G : Type u) [Group G] [Finite G] : FiniteGrp.{u}Construct a term of `FiniteGrp` from a type endowed with the structure of a finite group.GType))) =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`. We use `a = b` as notation for `Eq a b`. A fundamental property of equality is that it is an equivalence relation. ``` variable (α : Type) (a b c d : α) variable (hab : a = b) (hcb : c = b) (hcd : c = d) example : a = d := Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd ``` Equality is much more than an equivalence relation, however. It has the important property that every assertion respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value. That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`. Example: ``` example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := Eq.subst h1 h2 example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := h1 ▸ h2 ``` The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`. For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality) Conventions for notations in identifiers: * The recommended spelling of `=` in identifiers is `eq`.Cardinal.mkCardinal.mk.{u} : Type u → Cardinal.{u}The cardinal number of a type(Q2Presentation.Profinite.SurjContHomQ2Presentation.Profinite.SurjContHom.{u} (P Q : ProfiniteGrp.{u}) : Type uA surjective continuous homomorphism of profinite groups (a profinite "epimorphism", recorded as data: the morphism together with surjectivity of the underlying map).Q2Presentation.GQ2ProfiniteQ2Presentation.GQ2Profinite : ProfiniteGrp.{0}The absolute Galois group `G_{ℚ₂} = Gal(Q̄₂/ℚ₂)` of the `2`-adic field `ℚ₂ = ℚ_[2]`, as a profinite group. Concretely it is `Gal(SeparableClosure ℚ_[2] / ℚ_[2])`, packaged as an object of `ProfiniteGrp` by `InfiniteGalois.profiniteGalGrp`. Since `ℚ_[2]` has characteristic `0` its separable closure is an algebraic closure, so this is the absolute Galois group in the usual sense, matching the manuscript's `G_{ℚ₂}`.(ProfiniteGrp.ofFiniteGrpProfiniteGrp.ofFiniteGrp.{u_1} (G : FiniteGrp.{u_1}) : ProfiniteGrp.{u_1}A `FiniteGrp` when given the discrete topology can be considered as a profinite group.(FiniteGrp.ofFiniteGrp.of.{u} (G : Type u) [Group G] [Finite G] : FiniteGrp.{u}Construct a term of `FiniteGrp` from a type endowed with the structure of a finite group.GType)))theorem Q2Presentation.surj_counts_equal (G
Type: TypeA type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`.) [GroupGroup.{u} (G : Type u) : Type uA `Group` is a `Monoid` with an operation `⁻¹` satisfying `a⁻¹ * a = 1`. There is also a division operation `/` such that `a / b = a * b⁻¹`, with a default so that `a / b = a * b⁻¹` holds by definition. Use `Group.ofLeftAxioms` or `Group.ofRightAxioms` to define a group structure on a type with the minimum proof obligations.GType] [FiniteFinite.{u_3} (α : Sort u_3) : PropA type is `Finite` if it is in bijective correspondence to some `Fin n`. This is similar to `Fintype`, but `Finite` is a proposition rather than data. A particular benefit to this is that `Finite` instances are definitionally equal to one another (due to proof irrelevance) rather than being merely propositionally equal, and, furthermore, `Finite` instances generally avoid the need for `Decidable` instances. One other notable difference is that `Finite` allows there to be `Finite p` instances for all `p : Prop`, which is not allowed by `Fintype` due to universe constraints. An application of this is that `Finite (x ∈ s → β x)` follows from the general instance for pi types, assuming `[∀ x, Finite (β x)]`. Implementation note: this is a reason `Finite α` is not defined as `Nonempty (Fintype α)`. Every `Fintype` instance provides a `Finite` instance via `Finite.of_fintype`. Conversely, one can noncomputably create a `Fintype` instance from a `Finite` instance via `Fintype.ofFinite`. In a proof one might write ```lean have := Fintype.ofFinite α ``` to obtain such an instance. Do not write noncomputable `Fintype` instances; instead write `Finite` instances and use this `Fintype.ofFinite` interface. The `Fintype` instances should be relied upon to be computable for evaluation purposes. Theorems should use `Finite` instead of `Fintype`, unless definitions in the theorem statement require `Fintype`. Definitions should prefer `Finite` as well, unless it is important that the definitions are meant to be computable in the reduction or `#eval` sense.GType] : Cardinal.mkCardinal.mk.{u} : Type u → Cardinal.{u}The cardinal number of a type(Q2Presentation.Profinite.SurjContHomQ2Presentation.Profinite.SurjContHom.{u} (P Q : ProfiniteGrp.{u}) : Type uA surjective continuous homomorphism of profinite groups (a profinite "epimorphism", recorded as data: the morphism together with surjectivity of the underlying map).Q2Presentation.GammaAQ2Presentation.GammaA : ProfiniteGrp.{0}The candidate profinite group `Γ_A`, the cofiltered inverse limit (in `ProfiniteGrp`) of all admissible finite marked quotients (manuscript eq. `candidateinverse`).(ProfiniteGrp.ofFiniteGrpProfiniteGrp.ofFiniteGrp.{u_1} (G : FiniteGrp.{u_1}) : ProfiniteGrp.{u_1}A `FiniteGrp` when given the discrete topology can be considered as a profinite group.(FiniteGrp.ofFiniteGrp.of.{u} (G : Type u) [Group G] [Finite G] : FiniteGrp.{u}Construct a term of `FiniteGrp` from a type endowed with the structure of a finite group.GType))) =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`. We use `a = b` as notation for `Eq a b`. A fundamental property of equality is that it is an equivalence relation. ``` variable (α : Type) (a b c d : α) variable (hab : a = b) (hcb : c = b) (hcd : c = d) example : a = d := Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd ``` Equality is much more than an equivalence relation, however. It has the important property that every assertion respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value. That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`. Example: ``` example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := Eq.subst h1 h2 example (α : Type) (a b : α) (p : α → Prop) (h1 : a = b) (h2 : p a) : p b := h1 ▸ h2 ``` The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`. For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality) Conventions for notations in identifiers: * The recommended spelling of `=` in identifiers is `eq`.Cardinal.mkCardinal.mk.{u} : Type u → Cardinal.{u}The cardinal number of a type(Q2Presentation.Profinite.SurjContHomQ2Presentation.Profinite.SurjContHom.{u} (P Q : ProfiniteGrp.{u}) : Type uA surjective continuous homomorphism of profinite groups (a profinite "epimorphism", recorded as data: the morphism together with surjectivity of the underlying map).Q2Presentation.GQ2ProfiniteQ2Presentation.GQ2Profinite : ProfiniteGrp.{0}The absolute Galois group `G_{ℚ₂} = Gal(Q̄₂/ℚ₂)` of the `2`-adic field `ℚ₂ = ℚ_[2]`, as a profinite group. Concretely it is `Gal(SeparableClosure ℚ_[2] / ℚ_[2])`, packaged as an object of `ProfiniteGrp` by `InfiniteGalois.profiniteGalGrp`. Since `ℚ_[2]` has characteristic `0` its separable closure is an algebraic closure, so this is the absolute Galois group in the usual sense, matching the manuscript's `G_{ℚ₂}`.(ProfiniteGrp.ofFiniteGrpProfiniteGrp.ofFiniteGrp.{u_1} (G : FiniteGrp.{u_1}) : ProfiniteGrp.{u_1}A `FiniteGrp` when given the discrete topology can be considered as a profinite group.(FiniteGrp.ofFiniteGrp.of.{u} (G : Type u) [Group G] [Finite G] : FiniteGrp.{u}Construct a term of `FiniteGrp` from a type endowed with the structure of a finite group.GType)))**Equal finite surjection counts, packaged for the reconstruction lemma.** This is `finite_surjection_counts_equal_corrected` — the manuscript-faithful §7 route (first non-scalar chief factor + ⊆-minimal kernel + the `R = Φ(K)` dichotomy of `thm:closedrecursion`; see `Induction/Section7ChiefKernelFoundation.lean` and PROGRESS.md "SOUNDNESS FINDINGS") — with its redundant `[Nonempty G]` discharged: every group is nonempty via its identity `⟨1⟩`. The shape now matches the hypothesis `h` of `profinite_reconstruction_of_surj_counts`, which quantifies over all finite groups without a nonemptiness assumption.
Proved in §8 of the paper. Ingredients: Lemma 8.9 Lemma 8.10 Lemma 8.15 Lemma 8.12 Lemma 8.16 Theorem 8.11 Theorem 8.13 Theorem 8.14.