Self-contained continuation guide (Opus, 2026-07-07). The front-half is VERIFIED (compiles); this doc carries it verbatim so the next session drops it in and only builds the reducer.
- f2a (
OrbitVanish.Q0loc_datum_indep), f2b (regular_isometric_embedding_orbit), f2c1 (ShapiroRead.hcoh_{square,free,involution}+shapiroCoord_mem_deepClasses), f2c2/c2c (ShapiroDeepness.hvanish_involution_of_deepClass,hunramdischarged) — ALL LANDED. - f2d wiring bricks (
GQ2/VanishClose.lean, sorry-free):reindexHom_sumDatum,isEquivariantFactorSet_reindexHom,eOfSurj,eOfSurj_rho. - f2d front-half — VERIFIED THIS SESSION (compiles with one trailing
sorryat the reducer): the wholelemma_6_17_vanish→Q0loc D datWC ρ (ι∗x) = 0reduction, code in §2 below. - Remaining: the reducer application (per-orbit
hcoh+hvanish) — §3 — and the SectionSix statement-move — §4.
The P-15f handoff §2 warned the global trivial AbsGalQ2-action on ZMod 2 lifts pointwise over
RegMod C Nr and beats letI. This does NOT apply to W = Fin K → RegRep (ker ρ): RegRep
is an opaque def (OrbitData.lean:97), so DistribMulAction AbsGalQ2 (RegRep N) and
… (Fin K → RegRep N) fail to synthesize by default (verified: #synth errors). Hence the
intended mk'-pullback action letIs cleanly — no RegMod-style wrapper is needed. The
W-instance block in §2 is the reference pattern.
GQ2/VanishClose.lean, open ContCoh QuadraticFp2 SectionSix DimAssembly ShapiroRead LocalKummer,
variable {C} [Group C] [TopologicalSpace C] [DiscreteTopology C] [Finite C],
variable {V} [AddCommGroup V] [TopologicalSpace V] [DiscreteTopology V] [Finite V]
[DistribMulAction AbsGalQ2 V] [ContinuousSMul AbsGalQ2 V] [DistribMulAction C V].
theorem lemma_6_17_vanish_of_deepData (D : TateDuality 2) (B : BoundaryMaps)
(c : ContinuousMonoidHom Ttame C) (hc : Function.Surjective ⇑c)
(ρ : ContinuousMonoidHom AbsGalQ2 C) (hfac : ∀ g, ρ g = c (B.tameF g))
(hρ : ∀ (g : AbsGalQ2) (v : V), g • v = ρ g • v)
(hV2 : ∀ v : V, v + v = 0)
(hfaith : ∀ h : C, (∀ v : V, h • v = v) → h = 1)
(hsimple : ∀ W : AddSubgroup V, (∀ (h : C), ∀ w ∈ W, h • w ∈ W) → W = ⊥ ∨ W = ⊤)
(hram : ∃ v : V, c tameTau • v ≠ v)
(q : V → ZMod 2) (hq : IsQuadraticFp2 q) (hinv : IsInvariant C q)
(dat : FactorSet C V) (hdat : IsEquivariantFactorSet q dat)
(hcup : ∀ a b : Z1 ↥(ρ.toMonoidHom.ker : Subgroup AbsGalQ2) (ZMod 2),
H1ofFun _ a.1 ∈ deepClasses (ρ.toMonoidHom.ker : Subgroup AbsGalQ2) →
H1ofFun _ b.1 ∈ deepClasses (ρ.toMonoidHom.ker : Subgroup AbsGalQ2) →
H2ofFun ↥(ρ.toMonoidHom.ker : Subgroup AbsGalQ2)
(cup11Fun AddMonoidHom.mul a.1 b.1) = 0)
(x : H1 AbsGalQ2 V) (hx : x ∈ deepPart (V := V) ρ) :
Q0loc D dat ρ x = 0 := by
classical
have hρsurj : Function.Surjective ⇑ρ := rho_surjective B c hc ρ hfac
have hgen : Subgroup.closure {c tameSigma, c tameTau} = ⊤ := gen_of_surjective c hc
set N : Subgroup AbsGalQ2 := ρ.toMonoidHom.ker with hN
have hNopen : IsOpen (N : Set AbsGalQ2) := by
have hset : (N : Set AbsGalQ2) = ρ ⁻¹' {1} := by
ext g; simp only [hN, SetLike.mem_coe, MonoidHom.mem_ker, Set.mem_preimage,
Set.mem_singleton_iff]; rfl
rw [hset]; exact (isOpen_discrete {1}).preimage ρ.continuous_toFun
haveI : Finite (AbsGalQ2 ⧸ N) :=
Finite.of_injective _ (QuotientGroup.quotientKerEquivRange ρ.toMonoidHom).injective
haveI : Fintype (AbsGalQ2 ⧸ N) := Fintype.ofFinite _
set e : C ≃* AbsGalQ2 ⧸ N := eOfSurj ρ hρsurj with he_def
obtain ⟨K, ι, r, hEqfs, hIso, hιe, hri⟩ :=
regular_isometric_embedding_orbit (G := AbsGalQ2) N e c hgen q hq hinv hV2
hfaith hsimple hram
-- W-instances: RegRep's opacity blocks the global trivial action (see §1), so these are clean
haveI : Finite (RegRep N) := inferInstanceAs (Finite ((AbsGalQ2 ⧸ N) → ZMod 2))
haveI : Finite (Fin K → RegRep N) := inferInstance
letI : TopologicalSpace (Fin K → RegRep N) := ⊥
haveI : DiscreteTopology (Fin K → RegRep N) := ⟨rfl⟩
haveI : IsTopologicalAddGroup (Fin K → RegRep N) :=
{ continuous_add := continuous_of_discreteTopology
continuous_neg := continuous_of_discreteTopology }
haveI hdq : DiscreteTopology (AbsGalQ2 ⧸ N) := discreteTopology_quotient_of_isOpen N hNopen
letI actAbs : DistribMulAction AbsGalQ2 (Fin K → RegRep N) :=
DistribMulAction.compHom _ (QuotientGroup.mk' N)
letI actC : DistribMulAction C (Fin K → RegRep N) :=
DistribMulAction.compHom _ e.toMonoidHom
haveI : ContinuousSMul AbsGalQ2 (Fin K → RegRep N) := by
refine ⟨?_⟩
have h1 : Continuous fun p : AbsGalQ2 × (Fin K → RegRep N) =>
((QuotientGroup.mk' N p.1, p.2) : (AbsGalQ2 ⧸ N) × (Fin K → RegRep N)) :=
(continuous_quotient_mk'.comp continuous_fst).prodMk continuous_snd
exact (continuous_of_discreteTopology
(f := fun p : (AbsGalQ2 ⧸ N) × (Fin K → RegRep N) => p.1 • p.2)).comp h1
have hmk : ∀ (g : AbsGalQ2) (y : Fin K → RegRep N), g • y = QuotientGroup.mk' N g • y :=
fun _ _ => rfl
have hρW : ∀ (g : AbsGalQ2) (w : Fin K → RegRep N), g • w = ρ g • w := by
intro g w
show QuotientGroup.mk' N g • w = e (ρ g) • w
rw [QuotientGroup.mk'_apply, ← eOfSurj_rho ρ hρsurj g, he_def]
set qW : (Fin K → RegRep N) → ZMod 2 := fun F => q (r F) with hqW_def
set datW : FactorSet (AbsGalQ2 ⧸ N) (Fin K → RegRep N) :=
sumDatum (orbitIndexSet N qW) (orbitDatum N) with hdatW_def
set datWC : FactorSet C (Fin K → RegRep N) := datW.reindexHom e.toMonoidHom with hdatWC_def
have hEqfsC : IsEquivariantFactorSet qW datWC :=
isEquivariantFactorSet_reindexHom hEqfs e.toMonoidHom (fun _ _ => rfl)
have hqeq : (fun v => qW (ι v)) = q := funext hIso
have hcomap : IsEquivariantFactorSet q (datWC.comap ι) := by
have := datum_comap hEqfsC ι (fun cc v => hιe cc v)
rwa [hqeq] at this
have hodd : Odd (Nat.card (Subgroup.zpowers (c tameTau))) := by
rw [Nat.card_zpowers]; exact odd_orderOf_tameInertia c
have hVI : ∀ v : V, (∀ i ∈ Subgroup.zpowers (c tameTau), i • v = v) → v = 0 :=
fixedByNormal_eq_bot (Subgroup.zpowers (c tameTau)) (tameInertia_normal c hgen) hsimple
(by obtain ⟨v, hv⟩ := hram; exact ⟨c tameTau, Subgroup.mem_zpowers _, v, hv⟩)
have hstep1 : Q0loc D dat ρ x = Q0loc D (datWC.comap ι) ρ x :=
OrbitVanish.Q0loc_datum_indep D dat (datWC.comap ι) hdat hcomap ρ hρ hV2
(Subgroup.zpowers (c tameTau)) (tameInertia_normal c hgen) hodd hVI x
have hic : Continuous (ι : V → Fin K → RegRep N) := continuous_of_discreteTopology
have hicompat : ∀ (g : AbsGalQ2) (v : V), ι (g • v) = g • ι v := by
intro g v
rw [hρ g v, hιe (ρ g) v, hmk g (ι v), QuotientGroup.mk'_apply,
← eOfSurj_rho ρ hρsurj g, he_def]
have hstep2 : Q0loc D (datWC.comap ι) ρ x
= Q0loc D datWC ρ (mapCoeff1 ι hic hicompat x) :=
RepIndependence.lemma_6_14 D datWC ρ ι hic hicompat hEqfsC (fun cc v => hιe cc v) hρW x
rw [hstep1, hstep2]
have hxW : mapCoeff1 ι hic hicompat x ∈ deepPart (V := Fin K → RegRep N) ρ :=
ShapiroDeepness.deepPart_mapCoeff1 hρ hρW ι hic hicompat hx
-- GOAL HERE: `Q0loc D datWC ρ (mapCoeff1 ι hic hicompat x) = 0` ← the reducer, §3
sorryNeeds import GQ2.DimAssembly and import GQ2.ShapiroRead (added).
Apply OrbitVanish.Q0loc_vanish_of_datum_decomp D datWC ρ hρW xW (xW := mapCoeff1 ι … x) with:
s := orbitIndexSet N qW,datf := fun o => (orbitDatum N o).reindexHom e.toMonoidHom,qf := orbitSquareMap N.hdat_eq:datWC = sumDatum s datf—rw [hdatWC_def, hdatW_def]; exact reindexHom_sumDatum ….hdatf o ho:isEquivariantFactorSet_reindexHom (isEqFS_orbitDatum N qW o ho) e.toMonoidHom (fun _ _ => rfl).U/innerby cases ono : OrbitIx K (AbsGalQ2 ⧸ N)(Fin K ⊕ (Fin K × ·) ⊕ (Fin K × Fin K × ·)), matching f2c1'shcoh_*RHS verbatim.b := (Quotient.out xW).1:Sum.inl j(square):U = N,inner = fun p => shapiroCoord N (fun g => b g j) p.1 * … p.2.Sum.inr (Sum.inr (j,k,u))(free):U = N,inner = fun p => shapiroCoord N (b·j) p.1 * shapiroCoord N (b·k) ⟨ĝ⁻¹ p.2 ĝ, …⟩withĝa lift ofu.Sum.inr (Sum.inl (j,u))(involution):ĝ := Quotient.out u(mk' ĝ = ubyQuotientGroup.out_eq';ĝ ∉ Nsinceu ≠ 1;ĝ² ∈ Nsinceu² = 1),U₀ = N ⊔ zpowers ĝ,inner = evensNormFun (N.subgroupOf U₀) ⟨ĝ,_⟩ (fun u => shapiroCoord N (b·j) ⟨u.1.1,u.2⟩).
hcoh o ho(mechanical):graphPullback (datf o) ρ b=[graphPullback_reindexHom (orbitDatum N o) e (fun _ _ => rfl) ρ b]graphPullback (orbitDatum N o) (⇑e ∘ ⇑ρ) b. Then⇑e ∘ ⇑ρ = ⇑(QuotientGroup.mk' N)(funext g; simp [eOfSurj_rho, QuotientGroup.mk'_apply]), so it isgraphPullback (orbitDatum N o) (mk' N) b, andorbitDatum N (inl j) = squareBlockDatum N j(etc., definitional) feedshcoh_square N hmk j hNopen (Quotient.out xW)(resp. free/involution).hvanish o ho:- square:
hcup ⟨α_j,_⟩ ⟨α_j,_⟩ hdeep hdeepwhereα_j := shapiroCoord N (b·j),hdeep := shapiroCoord_mem_deepClasses ρ j hxW(f2c1) — theZ1-membership_isshapiroCoord_mem_Z1. - free:
hcup ⟨α_j,_⟩ ⟨conj α_k,_⟩ hdeep_j hdeep_k'—conj α_k's class is deep viaAdmissibleCount.conjAct_deepClasses(banked); check its cocycle shape matches f2c1's free RHS. - involution: THE OPEN PIECE — see §3a.
- square:
The feared Evens-norm cohomology-invariance bridge is UNNECESSARY — with trivial
coefficients B¹ = 0 (B1_eq_bot_of_trivial), so cohomologous scalar cocycles are equal as
functions: InvolutionSplice.eq_of_H1ofFun_eq extracts, from the deep-class witness of
[α_j], a square root β with kummerCocycleFun β = α_j on the nose on ker ρ. The two
candidate inner cochains coincide; no degree-2 coboundary analysis exists or is needed.
The deliverable — InvolutionSplice.hvanish_involution_ker (std-3 + {B9, B11a, B11b, B13}
exactly; census 15; lake build green 8665):
(R : LocalReciprocity) (B) (c) (hc) (ρ) (hfac) (horient : TameUnitOrientation R B.tameF)
(α : ↥(ker ρ) → 𝔽₂) (hαZ1 : α ∈ Z1) (hdeep : H1ofFun _ α ∈ deepClasses (ker ρ))
(ĝ) (hĝN : ĝ ∉ ker ρ) (hĝ2 : ĝ*ĝ ∈ ker ρ) (U₀) (hU₀ : U₀ = ker ρ ⊔ zpowers ĝ) (hmem) :
H2ofFun ↥U₀ (evensNormFun ((ker ρ).subgroupOf U₀) ⟨ĝ, hmem⟩ (fun w => α ⟨w.1.1, w.2⟩)) = 0
— the reducer's involution hvanish verbatim at α := shapiroCoord N (fun g => b g j)
(f2c1's hαZ1 = shapiroCoord_mem_Z1, hdeep = shapiroCoord_mem_deepClasses).
(R, horient) are threaded per the c2c4 consumer note — the assembly (and eventually the
moved statement, P-20 flag) carries them; horient discharges at boundaryMapsWitness
(B10′), R := localReciprocity (B5) — neither enters this trace (parameters).
Internals (all std-3, reusable): eq_of_H1ofFun_eq (trivial-coefficient rigidity),
mem_or_mul_mem_of_mem_sup + index_eq_two_of_decomp (the index-2 bricks),
toGalElem/toGal/toGal_isOpen_of_ker_le (the kerGal idiom for overgroups),
H2ofFun_eq_zero_comp (B²-witness pullback along a continuous hom),
evensNormFun_comp (Evens functoriality — evensAux/bS are Quotient.out-free, so the
↥U₀ ↔ ↥k.fixingSubgroup carrier splice is pointwise). The tower is
k := fixedField (toGal U₀) ≤ L := ResidueLift.splitField ρ with
fixingSubgroup_fixedField recovering both ends; hunram from c2c4's hunram_involution,
the Kummer package from c2a's kummer_presentation_of_index_two, the vanishing from c2b's
hvanish_involution (= Lemma 6.16).
The sole consumer DeepPart.prop_6_18_ramified (DeepPart.lean:1428) calls BOTH sorries
SectionSix.lemma_6_17_dim (873) and lemma_6_17_vanish (894) and sits UPSTREAM of both downstream
proofs. The dim proof ResidueLift.lemma_6_17_dim_final is LANDED (P-15f8, std-3 + §6.3 budget).
Once the vanish proof lands downstream, do the JOINT move: relocate prop_6_18_ramified to a new leaf
importing ResidueLift (dim) + this file (vanish), cite both _final proofs, delete the two
SectionSix sorried statements (comment-pointers à la lemma_6_14/P-15d), drop SectionSix.lean from the
dim/vanish SORRY_ALLOWLIST entries. prop_6_18_ramified has no code consumers → low blast radius.
hvanish_cup (ShapiroDeepness.lean:50) is over k.fixingSubgroup. For hcup over ker ρ, set
k := ResidueLift.splitField ρ (P-15f8), hker := ResidueLift.hker_splitField ρ
(ker ρ = k.fixingSubgroup pointwise), htriv := ResidueLift.htriv_zmod2. Transport the two deep
Z1s and the deepClasses membership along DeepCount.h1KerFixEquiv / the pointwise hker
(the DeepCount §KerTransport pattern) — same infra the f7 lane already built.