Γ_R source-data supply: topological finite generation and the scalar character count #
The two Γ_R source obligations that are independent of the R30 pro-2 coordinate, i.e. rows
ii.1 and ii.2 of the SourceData recon memo (docs/orchestration/roe-r30-recon.md). Each is an
exact byte-for-byte clone of its Γ_A original, with the same carrier spelling, so that the R30
SourceData structure and R32's main_presentation instantiation can plug Γ_R into the A-slot:
(recon row ii.1)
GQ2.gammaR_topologicallyFinitelyGenerated— the clone ofGQ2.gammaA_topologicallyFinitelyGenerated(GQ2/FinitelyGenerated.lean). Same∃ s : Finset (GammaR : Type), (Subgroup.closure ↑s).topologicalClosure = ⊤shape (thehfgA/prop_8_9_auxhfgargument of the lanes). The four free generators ofF₄survive the quotientF₄ ↠ F₄ ⧸ N_R = Γ_R, soΓ_Ris topologically finitely generated byGQ2.IsTopologicallyFinGen.of_surjectiveat the quotient projection — verbatim theΓ_Aargument withN_Areplaced byN_R(GQ2.NR, R3GQ2/Roe/GammaR.lean).(recon row ii.2)
GQ2.lemma_8_2_R— the clone ofGQ2.SectionEight.lemma_8_2_gammaA(GQ2/SectionEight/ScalarCount.lean):Nat.card (ContinuousMonoidHom Γ_R 𝔽₂) = 8, fed toprop_8_9_aux'shscalar,prop_8_9_of, andrStage_phase. Route mirrored end-to-end: characters ofΓ_RareF₄-generator values killingN_R(GQ2.SectionEight.charEquiv/cmhEquivFun, reused), and killingN_Ris exactly killingτ(ker_char_NR_le_iff, the port ofGQ2.SectionEight.ker_char_NA_le_iff). The only Roe-specific ingredient is the backward step: in an exponent-2 abelian quotient the Roe wild relationr_Rdegenerates — mod 2 the ledgerr_R = x₀⁻¹ · (x₀⁻³τ)^{ω₂} · x₁²(R1Marking.wildValueR_comm,GQ2/Roe/Words.lean) reads−4·χ(x₀) + χ(τ) ≡ χ(τ), vacuous onceχ(τ) = 0. This isMarking.wildRelR_of_comm2, the Roe counterpart ofGQ2.SectionEight.Marking.wildRel_of_comm2, and it letsGQ2.isAdmissibleUR_iff_NR_le(R3GQ2/Roe/AdmissibleLimit.lean) certifyker c ⊇ N_R. That leaves the free𝔽₂³ofσ, x₀, x₁-values:2³ = 8.
Both declarations become SourceData field values for R30/R32. No new axioms (#print axioms at
the standard three throughout); all counting scaffolding is reused, never re-proved.
Module-system note. Unlike its GQ2/Roe/* siblings this file is deliberately not a module
(plain import, no @[expose] public section): it depends on GQ2.SectionEight.ScalarCount, and
the whole GQ2/SectionEight/ chain is non-module, so a module header here fails to elaborate
with cannot import non-moduleGQ2.SectionEight.ScalarCount frommodule``. Same resolution as
the sibling GQ2/Roe/Prop23.lean, which reaches into the same non-module §2/§8 stack. Importing
the module files GQ2.Roe.AdmissibleLimit / GQ2.FinitelyGenerated from here is fine — the
restriction is one-directional. R30's GQ2/SourceData.lean will inherit the same constraint.
(recon row ii.1) Γ_R is topologically finitely generated #
Verbatim clone of GQ2.gammaA_isTopologicallyFinGen / GQ2.gammaA_topologicallyFinitelyGenerated
(GQ2/FinitelyGenerated.lean), routed through the Γ_R quotient projection F₄ ↠ Γ_R.
Γ_R is topologically finitely generated (the predicate form). Clone of
GQ2.gammaA_isTopologicallyFinGen: the free profinite group F₄ is topologically finitely
generated (isTopologicallyFinGen_freeProfiniteGroup), and this passes along the continuous
surjection F₄ ↠ F₄ ⧸ N_R = Γ_R (IsTopologicallyFinGen.of_surjective).
(recon row ii.1) Γ_R is topologically finitely generated, in exactly the
∃ s : Finset _, … shape consumed as the hfgA/hfg argument of the §8/§9 lanes and by R32's
main_presentation instantiation — the same statement shape and carrier spelling (GammaR : Type)
as its Γ_A original GQ2.gammaA_topologicallyFinitelyGenerated (GQ2/FinitelyGenerated.lean).
Stress test / cross-check: Γ_R and Γ_A are topologically finitely generated by the
same mechanism — the image of F₄'s four free generators — so the predicate holds for both
candidate groups (the wild relation is irrelevant to finite generation).
(recon row ii.2) The Γ_R scalar character count |Hom_cont(Γ_R, 𝔽₂)| = 8 #
Clone of GQ2.SectionEight.lemma_8_2_gammaA (GQ2/SectionEight/ScalarCount.lean), reusing the
generic counting scaffolding charEquiv / cmhEquivFun / vecEquiv and porting the single
source-specific lemma ker_char_NA_le_iff to ker_char_NR_le_iff.
The Roe wild relation follows from τ = 1 in an exponent-2 abelian group — the Roe
counterpart of GQ2.SectionEight.Marking.wildRel_of_comm2. The ω₂-ledger collapses:
powOmega2 = id on involutions, conjugations and commutators are trivial, so
r_R = (x₀^σ)⁻¹ · (x₀⁻³τ)^{ω₂} · x₁² · [x₁, y₁] reduces to x₀⁻¹ · (x₀⁻³τ) · x₁², and with
τ = 1, x₀² = x₁² = 1 this telescopes to 1 (mod 2 the ledger −4·χ(x₀) + χ(τ) is vacuous
once χ(τ) = 0; cf. R1 Marking.wildValueR_comm, GQ2/Roe/Words.lean). For scalar characters
the hypothesis τ = 1 is free — the tame relation already forces it
(GQ2.SectionEight.Marking.tameRel_iff_of_comm2).
The kills-N_R criterion: a character of F₄ kills N_R iff it kills τ. Port of
GQ2.SectionEight.ker_char_NA_le_iff, swapping the tame-relator membership tameRelator_mem_NR
(R3 GQ2/Roe/AdmissibleLimit.lean), IsAdmissibleUR, the Roe exponent-2 collapse
Marking.wildRelR_of_comm2, and the admissible-opens characterization
GQ2.isAdmissibleUR_iff_NR_le. Forward: N_R contains the tame relator, whose 𝔽₂-image is
c(τ). Backward: ker c is then R-admissible (generation automatic, tame is the τ-kill, and
in an exponent-2 abelian quotient both the Roe wild relation and the 2-core are unconditional), so
N_R ≤ ker c.
(recon row ii.2) Lemma 8.2, Roe source: |Hom_cont(Γ_R, 𝔽₂)| = 8. Byte-for-byte
clone of GQ2.SectionEight.lemma_8_2_gammaA (GQ2/SectionEight/ScalarCount.lean) with N_A
replaced by N_R: characters of Γ_R are F₄-generator values killing N_R
(GQ2.SectionEight.charEquiv / cmhEquivFun), and killing N_R is exactly killing τ
(ker_char_NR_le_iff — the tame relator forces it, and conversely c(τ) = 1 gives both relations
in exponent-2 abelian quotients). That leaves the free 𝔽₂³ of σ, x₀, x₁-values. Same carrier
spelling GammaR and statement shape as the Γ_A original, as required by R30/R32.
Stress test / cross-check: the Roe scalar character count equals the Γ_A count (both
2³ = 8) — the mod-2 abelian ledger sees no difference between the two wild relations.
Paper-tag ledger (Roe note paper/roe-presentation-verification.tex; hand-maintained) #
- eq. (1.1) = ⟦eq:defwords⟧
- eq. (1.2) = ⟦eq:relators⟧
- Definition 1.1 = ⟦def:GammaR⟧
- SourceData recon rows ii.1 (t.f.g.) / ii.2 (#Hom = 8):
docs/orchestration/roe-r30-recon.md