The Γ_A degree-2 presentation comparison — foundation #
Building on the degree-≤1 bridge GQ2/WordCohBridge.lean (z1Equiv/h1Equiv), this file develops
the degree-2 half: an injection H²(Γ_A, 𝔽₂) ↪ 𝔽₂² ⧸ im d1_triv = H2w(t_triv) (evaluation of the
two relator words on a central extension), whose target has cardinality 2 (card_H2w_trivial),
giving #H²(Γ_A, 𝔽₂) ≤ 2 — the source-side cohomological input lemma_8_6_gammaA (the Γ_A half-torsor proof) needs.
This file, so far — the central-extension foundation. A ZMod 2-valued 2-cocycle κ on a
group L (normalized at (1,1)) is packaged as TwoCocycle L, and CentExt c is the central
extension L ×_κ ZMod 2: carrier L × ZMod 2, product (l,z)·(l',z') = (l·l', z + z' + κ l l').
The kernel {(1, z)} ≅ ZMod 2 is central; the base projection is CentExt c →* L. When L is
finite discrete so is CentExt c — the codomain for a Marking whose relator values read off the
cocycle's obstruction.
The remaining θ construction (factor a continuous cocycle through a finite admissible level, mark
the extension by (ḡᵢ, 0), read the tame/wild relator z-values, quotient by im d1_triv, prove
additivity, vanishing on coboundaries, and injectivity via Marking.descend) is the next work; see
the tail comment.
A ZMod 2-valued 2-cocycle on L, normalized at (1,1) — the datum of a central extension of
L by ZMod 2 (trivial action). The single cocycle identity κ(a,b) + κ(ab,c) = κ(a,bc) + κ(b,c)
forces κ(1,·) = κ(·,1) = κ(1,1); the norm field pins that constant to 0.
- κ : L → L → ZMod 2
The underlying 2-cochain.
- norm : self.κ 1 1 = 0
Normalization at the identity.
The 2-cocycle identity (trivial coefficients).
Instances For
κ vanishes on the left axis (κ(1,l) = 0).
κ vanishes on the right axis (κ(l,1) = 0).
Symmetry of κ on inverse pairs (κ(l,l⁻¹) = κ(l⁻¹,l)) — the fact underlying the inverse law
of the central extension.
The central extension L ×_κ ZMod 2 of L by ZMod 2 attached to a 2-cocycle κ: carrier
L × ZMod 2, product (l,z)·(l',z') = (l·l', z + z' + κ l l').
Equations
- GQ2.WordCoh2.CentExt _c = (L × ZMod 2)
Instances For
Equations
- One or more equations did not get rendered due to their size.
The base projection L ×_κ ZMod 2 →* L, a group homomorphism.
Equations
- GQ2.WordCoh2.CentExt.proj c = { toFun := GQ2.WordCoh2.CentExt.base, map_one' := ⋯, map_mul' := ⋯ }
Instances For
The central inclusion ZMod 2 → L ×_κ ZMod 2, z ↦ (1, z).
Equations
- GQ2.WordCoh2.CentExt.incl c z = (1, z)
Instances For
An element of the extension lies over the base identity iff it is in the central ZMod 2.
incl 0 is the identity of the extension.
Equations
Lifting a level marking and reading the relator obstruction #
Lift a marking of the base group L to the central extension by placing each generator over it
with zero fibre coordinate. Its base projection is the original marking.
Equations
Instances For
The tame relator value of the lifted marking projects to that of the base marking.
The wild relator value of the lifted marking projects to that of the base marking (needs L
finite: Marking.map_wildValue's ω₂-naturality is finite-only, and CentExt c is finite).
The relator-z pair of c relative to a base marking t: the fibre coordinates of the
tame and wild relator values of the lifted marking — the degree-2 obstruction of c, pre-quotient
by im d1_triv.
Equations
- GQ2.WordCoh2.relZPair t c = ((GQ2.WordCoh2.liftMark t c).tameValue.fib, (GQ2.WordCoh2.liftMark t c).wildValue.fib)
Instances For
When the base marking satisfies the tame relation, the lifted tame relator value is exactly the
central element (1, tameZ) — the relator "dies into the fibre".
When the base marking satisfies the wild relation, the lifted wild relator value is exactly the
central element (1, wildZ).
The shifted lift and its wild Pro2Core #
For the injectivity of θ we adjust the fibre coordinates of the lifted marking by a : Fin 4 → 𝔽₂
(so the relators can be made to die exactly), then run the NA_le_ker machinery of c1. The
Pro2Core clause of admissibility is the hard sub-step; it holds by the same argument as c1
(isPGroup_liftMarking_wildCore): the wild core lands in proj⁻¹(base wild core), a 2-group as
an extension of the base wild core by the central 𝔽₂.
The lifted marking with the four fibre coordinates shifted by a.
Equations
Instances For
The base projection's kernel {(1, z)} ≅ 𝔽₂ is elementary-2.
The Pro2Core crux for the extension. If the base marking's wild core is a 2-group, so
is the shifted lift's — an extension of it by the central 𝔽₂ (IsPGroup.comap_of_injective route,
exactly as c1's isPGroup_liftMarking_wildCore).
The shifted lift's tame relator value projects to the base's.
The shifted lift's wild relator value projects to the base's (needs L finite).
Tame relator dies exactly. When the base marking satisfies the tame relation and the
shifted tame z-value is 0, the shifted lift's tame relator value is the identity of the
extension.
Wild relator dies exactly. When the base marking satisfies the wild relation and the
shifted wild z-value is 0, the shifted lift's wild relator value is the identity of the
extension.
The splitting section: N_A ≤ ker (classify (shifted lift)) #
The injectivity crux, an exact mirror of c1's WordCohBridge.NA_le_ker_classify: over a finite
admissible level L = F₄ ⧸ U (N_A ≤ U), if the shifted lift's relators die exactly, the
classified F₄ → CentExt c hom kills N_A — ker is an admissible open (Generates automatic,
relators die, Pro2Core from isPGroup_shiftLift_wildCore transferred along kerLift).
N_A ≤ ker for the shifted lift. ([Finite (F₄ ⧸ U)] is needed at statement level for
CentExt c to be finite — it is not a global instance; callers supply it via
Subgroup.quotient_finite_of_isOpen _ U.isOpen'.)
The splitting section Γ_A → CentExt c produced by NA_le_ker_shiftLift: the descended
classify of the (relator-killing) shifted lift.
Equations
- GQ2.WordCoh2.sectionHom U hU c a htame0 hwild0 = GQ2.quotientLift GQ2.NA (GQ2.WordCoh2.shiftLiftMark (GQ2.Marking.map (QuotientGroup.mk' ↑U.toOpenSubgroup) GQ2.univMarking) a c).classify ⋯
Instances For
The section splits the base projection: proj ∘ s is the level projection Γ_A ↠ F₄ ⧸ U
(pointwise, proj (s (mk_{N_A} g)) = mk_U g). Proof by Marking.toHom_hom_univMarking_map
uniqueness: both projC ∘ classify(shifted lift) and quotientMk U push univMarking to t_L.
Coboundary extraction — the θ-injectivity payoff #
Once the shifted lift's relators die, the level cocycle pulled back to Γ_A (as the base-coordinate
pairing of the section) is dOne of the continuous 1-cochain λ = fib ∘ s, hence a continuous
2-coboundary. This is the concrete "extension splits ⇒ cocycle is a coboundary" step.
Coboundary extraction. With 𝔽₂ a trivial Γ_A-module, the 2-cocycle
(x,y) ↦ c.κ ((s x).base) ((s y).base) — the level cocycle pulled back through the splitting
section s — is a continuous 2-coboundary dOne (fib ∘ s). (dOne λ (x,y) = λ(y) − λ(xy) + λ(x)
at trivial action; the section's fibre law λ(xy) = λ(x) + λ(y) + c.κ((s x).base,(s y).base) makes
this equal to the pairing, an 8-case 𝔽₂ identity.)
The shift laws — how a generator shift moves the fibre obstruction #
shiftLiftMark t a c is liftMark t c with generator i left-multiplied by the central
incl (a i). Evaluating the tame/wild relator words, each fibre obstruction shifts by exactly
a 1 (the τ-coordinate): the tame and wild relators both have odd τ-content and even content in
σ, x₀, x₁ (mod 2) — the same content computation as the trivial-module differential
d¹ = (a₁, a₁) of FoxH.d1Fun_of_trivial. We transport that computation through the comparison
hom WordLift (ZMod 2) (CentExt c) →* CentExt c, ⟨z, g⟩ ↦ incl z · g, which realizes
shiftLiftMark t a c as (liftMarking (liftMark t c) a).map _. (Note both fibres move by the
same a 1, so the shift always stays in the diagonal Δ = im d¹_triv — exactly what makes θ
land in 𝔽₂²/Δ and its kernel adjustable by a shift.)
The extension acts trivially on the coefficient ZMod 2.
Equations
- GQ2.WordCoh2.trivAction = { smul := fun (x : GQ2.WordCoh2.CentExt c) (z : ZMod 2) => z, mul_smul := ⋯, one_smul := ⋯, smul_zero := ⋯, smul_add := ⋯ }
Instances For
The comparison hom ⟨z, g⟩ ↦ incl z · g, WordLift (ZMod 2) (CentExt c) →* CentExt c.
Equations
- GQ2.WordCoh2.shiftCompare = { toFun := fun (p : GQ2.FoxH.WordLift (ZMod 2) (GQ2.WordCoh2.CentExt c)) => GQ2.WordCoh2.CentExt.incl c p.u * p.g, map_one' := ⋯, map_mul' := ⋯ }
Instances For
The base projection ⟨z, g⟩ ↦ g, WordLift (ZMod 2) (CentExt c) →* CentExt c.
Equations
- GQ2.WordCoh2.wlBase = { toFun := GQ2.FoxH.WordLift.g, map_one' := ⋯, map_mul' := ⋯ }
Instances For
shiftCompare ⟨z, (g, 0)⟩ = (g, z) — the central shift applied to a zero-fibre lift.
liftMarking (liftMark t c) a projects (via wlBase) back to liftMark t c.
liftMarking (liftMark t c) a maps (via shiftCompare) to shiftLiftMark t a c.
The tame relator value's base coordinate of the lift recovers that of liftMark t c.
The wild relator value's base coordinate of the lift recovers that of liftMark t c.
The tame fibre shift of the lift is a 1 (trivial action, char 2 — relation-free).
The wild fibre shift of the lift is a 1 (liftMarking_wildValue_u at trivial action,
char 2).
Tame shift law: shifting the lift by a changes the tame fibre obstruction by a 1.
Wild shift law: shifting the lift by a changes the wild fibre obstruction by a 1.
The d¹-adjustment. When the tame and wild fibre obstructions of liftMark t c agree
(i.e. relZPair ∈ Δ = im d¹_triv), the constant shift a ≡ (liftMark t c).tameValue.fib makes
both shifted relator fibres vanish — the hypothesis feeding NA_le_ker_shiftLift.
Level change: pulling a cocycle back along a group hom #
For the well-definedness of θ across refinements, we record that the relator obstruction
relZPair is natural: pulling a cocycle c back along φ : L' →* L and pushing the base marking
forward by φ give the same obstruction. The comparison hom is projExt : CentExt (c.comap φ) →* CentExt c, (l, z) ↦ (φ l, z).
Pull back a 2-cocycle along a group hom φ : L' →* L.
Instances For
The base hom φ lifts to a hom of central extensions CentExt (c.comap φ) →* CentExt c.
Equations
- GQ2.WordCoh2.projExt c φ = { toFun := fun (p : GQ2.WordCoh2.CentExt (c.comap φ)) => (φ p.base, p.fib), map_one' := ⋯, map_mul' := ⋯ }
Instances For
liftMark t' (c.comap φ) maps to liftMark (t'.map φ) c under projExt.
Level-independence of the relator obstruction. Pulling c back along φ and pushing the
base marking forward by φ give the same relZPair.
Additivity of the relator obstruction (the Baer sum) #
relZPair t (c₁ + c₂) = relZPair t c₁ + relZPair t c₂. The comparison object is the fiber
product FiberProd c₁ c₂ = L ×_κ 𝔽₂², the central extension of L by 𝔽₂ × 𝔽₂ with the pair
cocycle (κ₁, κ₂). Its three coefficient homs pr₁, pr₂, prSum (first fibre, second fibre, fibre
sum) carry the fiber-product lift onto liftMark t c₁, liftMark t c₂, liftMark t (c₁ + c₂); the
relator values then add by Marking.map_{tame,wild}Value (exactly the d1Fun_add pattern). Note
prSum : FiberProd →* CentExt (c₁ + c₂) is a hom precisely because the summed fibre matches
κ₁ + κ₂; the naive CentExt (c₁ + c₂) →* CentExt c₁ × CentExt c₂ is not a homomorphism.
Pointwise sum of 2-cocycles.
Equations
- GQ2.WordCoh2.instAddTwoCocycle = { add := fun (c₁ c₂ : GQ2.WordCoh2.TwoCocycle L) => { κ := fun (a b : L) => c₁.κ a b + c₂.κ a b, norm := ⋯, cocyc := ⋯ } }
The fiber product CentExt c₁ ×_L CentExt c₂: a central extension of L by 𝔽₂ × 𝔽₂.
Equations
- GQ2.WordCoh2.FiberProd _c₁ _c₂ = (L × ZMod 2 × ZMod 2)
Instances For
Base coordinate.
Equations
- p.base = p.1
Instances For
First fibre coordinate.
Equations
- p.fibA = p.2.1
Instances For
Second fibre coordinate.
Equations
- p.fibB = p.2.2
Instances For
Equations
- One or more equations did not get rendered due to their size.
Projection to the first central extension.
Equations
- GQ2.WordCoh2.FiberProd.pr1 = { toFun := fun (p : GQ2.WordCoh2.FiberProd c₁ c₂) => (p.base, p.fibA), map_one' := ⋯, map_mul' := ⋯ }
Instances For
Projection to the second central extension.
Equations
- GQ2.WordCoh2.FiberProd.pr2 = { toFun := fun (p : GQ2.WordCoh2.FiberProd c₁ c₂) => (p.base, p.fibB), map_one' := ⋯, map_mul' := ⋯ }
Instances For
The fibre-sum hom to the sum extension — a homomorphism because fibA + fibB tracks
κ₁ + κ₂.
Equations
- GQ2.WordCoh2.FiberProd.prSum = { toFun := fun (p : GQ2.WordCoh2.FiberProd c₁ c₂) => (p.base, p.fibA + p.fibB), map_one' := ⋯, map_mul' := ⋯ }
Instances For
The fiber-product lift of a base marking (both fibres zero).
Equations
Instances For
Additivity of the relator obstruction.
Vanishing on coboundaries: obs kills B² (upgrading #H² ≤ 2 to H² ↪ 𝔽₂) #
The obstruction obs (the sum of the tame and wild relator fibre values) vanishes on continuous
2-coboundaries. The mechanism: a finite-level coboundary κ = δ¹λ gives a central extension
CentExt (δ¹λ) that is trivialised by Ψ_λ : (l, z) ↦ (l, z + λ l) onto the split extension
CentExt 0. Under Ψ_λ, the lifted marking becomes the λ-shifted split marking, whose relator
fibres are a 1 (the shift laws) plus λ of the (dying) relator base — so both relator fibres pick
up the same value and their sum is 0. Combined with obs_ker_le, this makes obs descend to
an injection H²(Γ_A, 𝔽₂) ↪ 𝔽₂ — the degree-2 presentation-comparison, reusable Thm-4.2-ward.
The trivial (split) 2-cocycle κ ≡ 0: CentExt zeroCocycle = L × 𝔽₂ is the direct
product.
Equations
- GQ2.WordCoh2.zeroCocycle = { κ := fun (x x_1 : L) => 0, norm := GQ2.WordCoh2.zeroCocycle._proof_1, cocyc := ⋯ }
Instances For
The fibre projection CentExt zeroCocycle →* Multiplicative 𝔽₂ — a homomorphism because the
split extension is the direct product (κ ≡ 0).
Equations
- GQ2.WordCoh2.fibHom0 = { toFun := fun (p : GQ2.WordCoh2.CentExt GQ2.WordCoh2.zeroCocycle) => Multiplicative.ofAdd p.fib, map_one' := ⋯, map_mul' := ⋯ }
Instances For
The split extension has balanced (zero) relator obstruction: both relator fibres vanish, as
they are the image of the trivial marking ⟨1, 1, 1, 1⟩ under fibHom0.
The coboundary 2-cocycle δ¹λ: κ (a, b) = λ a + λ b + λ (a b) (trivial action, char 2).
Requires the normalization λ 1 = 0.
Equations
- GQ2.WordCoh2.coboundaryCocycle lam hlam1 = { κ := fun (a b : L) => lam a + lam b + lam (a * b), norm := ⋯, cocyc := ⋯ }
Instances For
The trivialization hom Ψ_λ : (l, z) ↦ (l, z + λ l), an iso CentExt (δ¹λ) ≃* CentExt 0
of the coboundary extension with the split extension.
Equations
- GQ2.WordCoh2.Psi lam hlam1 = { toFun := fun (p : GQ2.WordCoh2.CentExt (GQ2.WordCoh2.coboundaryCocycle lam hlam1)) => (p.base, p.fib + lam p.base), map_one' := ⋯, map_mul' := ⋯ }
Instances For
Ψ_λ carries the lifted marking of the coboundary extension onto the λ-shifted split
marking.
The obstruction of a finite-level coboundary is λ (tame relator) + λ (wild relator).
At an admissible level both relators die, so this is 0 — the vanishing of obs on B².
The injectivity keystone: a balanced inflated cocycle is a coboundary #
Assembling the shift laws (exists_shift_of_relZ_eq) with cocycle_mem_B2: if a finite-level
2-cocycle c has balanced relator obstruction (tame.fib = wild.fib, i.e. relZPair ∈ Δ = im d¹_triv), then the 2-cocycle it inflates to on Γ_A — (x, y) ↦ c.κ (level x) (level y) — is a
continuous 2-coboundary. This is the algebraic half of θ-injectivity: a class killed by θ
(balanced obstruction) is trivial after factoring the continuous cocycle through a finite level.
The finite-level factorization is supplied at the topological consumer.
The level projection Γ_A = F₄ ⧸ N_A ↠ F₄ ⧸ U for N_A ≤ U.
Equations
- GQ2.WordCoh2.levelProj U hU = GQ2.quotientLift GQ2.NA (GQ2.quotientMk ↑U.toOpenSubgroup) ⋯
Instances For
Injectivity keystone. A finite-level cocycle with balanced relator obstruction inflates to
a continuous 2-coboundary on Γ_A. ([Finite (F₄ ⧸ U)] at statement level, as for
NA_le_ker_shiftLift.)
Factoring a continuous cocycle through a finite level (the topological input) #
The remaining input to θ: a continuous 2-cochain on the profinite Γ_A is uniformly locally
constant, hence factors through a finite quotient F₄ ⧸ U (N_A ≤ U). The core is a compactness
argument (exists_openNormalSubgroup_factor_two): a continuous f : G × G → M to a discrete space
is invariant under right-translation of both arguments by a single open normal subgroup. Applied to
a normalized continuous 2-cocycle κ on Γ_A and transported to F₄ ⧸ U := comap N_A V, it yields
a genuine TwoCocycle (F₄ ⧸ U) inflating to κ — the hypothesis that inflated_cocycle_mem_B2
consumes.
Uniform local constancy (2-variable form): a continuous map f : G × G → M from a profinite
group to a discrete space is invariant under right-translation of both arguments by a single open
normal subgroup V — equivalently, f factors through (G ⧸ V) × (G ⧸ V). Proof: each point
has a basic clopen box on which f is constant (isOpen_prod_iff +
exist_openNormalSubgroup_sub_open_nhds_of_one); compactness extracts a finite subcover; V is
the (finite) intersection of the boxes' subgroups.
Factoring a normalized continuous 2-cocycle. A continuous κ : Γ_A × Γ_A → 𝔽₂ that is
normalized (κ (1,1) = 0) and satisfies the 2-cocycle identity descends to a genuine
TwoCocycle (F₄ ⧸ U) at some finite level N_A ≤ U, inflating back to κ through levelProj.
Factoring a continuous 1-cochain. A continuous ψ : Γ_A → 𝔽₂ descends to a function on a
finite admissible level N_A ≤ U (via the same compactness lemma applied to ψ ∘ fst).
Injectivity, assembled: a balanced continuous cocycle is a coboundary #
Combining the factoring (exists_twoCocycle_factor) with the injectivity keystone
(inflated_cocycle_mem_B2): a continuous 2-cocycle κ on Γ_A that factors through a finite level
c with balanced relator obstruction is a continuous 2-coboundary. This is the kernel-side of
θ-injectivity in its consumable form.
Injectivity, consumable form. If a continuous cochain κ factors through a finite level
c (κ = c.κ ∘ (levelProj × levelProj)) whose relator obstruction is balanced
(tame.fib = wild.fib), then κ is a continuous 2-coboundary.
The obstruction map and the cardinality bound #H²(Γ_A, 𝔽₂) ≤ 2 #
Assembling everything. The obstruction obs : Z²_cont(Γ_A, 𝔽₂) →+ 𝔽₂ sends a continuous
2-cocycle to the sum of its tame and wild relator obstructions, computed after normalizing at
(1,1) and factoring through a finite admissible level. The value is level-independent
(relZPair_comap) and additive (relZPair_add), and its kernel lands in B²
(mem_B2_of_factor_balanced). Hence H² = Z²/B² is a quotient of Z²/ker obs ↪ 𝔽₂, giving
#H²(Γ_A, 𝔽₂) ≤ #𝔽₂ = 2.
Two TwoCocycles with equal cochain are equal (the norm/cocyc fields are propositions).
An open normal subgroup of the compact free profinite group has finite quotient.
A factorization of a Γ_A-cochain κ through a finite admissible level:
κ (x, y) = c.κ (levelProj x) (levelProj y).
- U : OpenNormalSubgroup ↑(FreeProfiniteGroup (Fin 4)).toProfinite.toTop
The finite admissible level
F₄ ⧸ U. - c : TwoCocycle (↑(FreeProfiniteGroup (Fin 4)).toProfinite.toTop ⧸ ↑self.U.toOpenSubgroup)
The finite-level 2-cocycle whose inflation is
κ.
Instances For
The relator obstruction of a factorization: the sum of the tame and wild relator fibre-z
values of the finite-level cocycle.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Level-independence. F.obs may be computed at any finer level W (via a projection
proj : F₄ ⧸ W → F₄ ⧸ F.U with proj ∘ mk_W = mk_{F.U}) through the pulled-back cocycle
F.c.comap proj — this is relZPair_comap.
Well-definedness. F.obs depends only on κ, not on the chosen factorization: two
factorizations agree at their common refinement F₁.U ⊓ F₂.U, where both finite-level cocycles pull
back to the same cocycle (both inflate to κ).
The two projections F₄ ⧸ W → F₄ ⧸ U (for N_A ≤ W ≤ U, via proj) and the level maps
Γ_A → F₄ ⧸ W → F₄ ⧸ U compose to the level map Γ_A → F₄ ⧸ U.
Normalize a 2-cochain at (1,1) by subtracting the (coboundary) constant κ (1,1).
Equations
- One or more equations did not get rendered due to their size.
Instances For
Under the trivial action, a constant 2-cochain is a continuous coboundary (= δ¹ of a constant
1-cochain).
The normalization of a continuous 2-cocycle factors through a finite admissible level.
The per-cocycle obstruction: the relator obstruction of any factorization of the normalization.
Equations
- GQ2.WordCoh2.obsFun htriv φ = ⋯.some.obs
Instances For
obsFun may be computed at any factorization of the normalization (well-definedness).
Additivity of the obstruction. Both φ and ψ factor through a common refinement
W = U_φ ⊓ U_ψ, where their finite-level cocycles pull back and add (relZPair_add).
The obstruction homomorphism Z²_cont(Γ_A, 𝔽₂) →+ 𝔽₂.
Equations
- GQ2.WordCoh2.obs htriv = AddMonoidHom.mk' (GQ2.WordCoh2.obsFun htriv) ⋯
Instances For
The kernel of the obstruction lands in the 2-coboundaries: an obs-trivial cocycle is balanced,
hence a coboundary (mem_B2_of_factor_balanced), after adding back the normalization constant.
obs kills B² (the vanishing on coboundaries). A continuous coboundary κ = δ¹ψ
normalizes to δ¹ψ' (ψ' 1 = 0), which factors through a finite admissible level as
coboundaryCocycle λ; its obstruction is λ(tameValue) + λ(wildValue) = λ 1 + λ 1 = 0 since both
relators die at that level. Combined with obs_ker_le, this makes obs descend to an injection
H²(Γ_A, 𝔽₂) ↪ 𝔽₂ — the degree-2 presentation-comparison.
ker obs = B² (the Γ_A half-torsor proof, lemma A). The obstruction is trivial on coboundaries and nowhere
else, so it descends to an injection H²(Γ_A, 𝔽₂) ↪ 𝔽₂ — the reusable degree-2
presentation-comparison. (obs_ker_le ⊆, obs_B2_eq_zero ⊇.)
The descended obstruction H²(Γ_A, 𝔽₂) →+ 𝔽₂, and its injectivity: a continuous 2-cocycle
whose obstruction is nonzero is not a coboundary.
Equations
- One or more equations did not get rendered due to their size.