Cochain-level singular cup product (Alexander–Whitney formula) #
This file builds a genuine, formalized cochain-level singular cup product
from the Alexander–Whitney front/back faces of AlexanderWhitney.lean. There are
What is and is not here #
Pinned Mathlib (v4.28.0, commit
8f9d9cff6bd728b17a24e163c9402775d9e6a365) has no cup product. The genuine
topological input — the Alexander–Whitney front/back faces — is supplied by
AlexanderWhitney.lean. Using the definitional facts
- a singular chain group in degree
nis the coproductC_n(X) = ∐_{σ : n-simplex} R(rfl), so anR-linear map out of it is determined by its values on the generators (cochain_ext); - a singular cochain in degree
pis exactly a morphismC_p(X) ⟶ R(rfl); - the pullback of a cochain is precomposition with the singular chain map (
rfl),
we define the cochain cup product by the classical Alexander–Whitney formula
(φ ⌣ ψ)(σ) = φ(front_p σ) · ψ(back_q σ) (σ a (p+q)-simplex)
with coefficients in the ring R itself (M = R, which covers the downstream
R = ZMod 2 case). The operation is genuine, R-bilinear, natural in the space,
strictly unital on the right, and assembled into degree-n powers of a
degree-one cochain.
What is NOT here (the exact required input). The descent to cohomology
(H^p × H^q → H^{p+q}) requires the Leibniz / coboundary identity
δ(φ ⌣ ψ) = (δφ) ⌣ ψ + (-1)^p φ ⌣ (δψ),
equivalently that the assembled cochain map C^•(X) ⊗ C^•(X) → C^•(X) is a
morphism of cochain complexes. That identity is the standard telescoping argument
over the front/back simplicial identities
(frontFace_last_eq_backFace_zero, frontFace_succ, backFace_succ_square); it
is not proved here, so no cohomology-level cup is introduced (per the
project's no-unsupported-declarations policy). See the module footer and
Coefficients #
Everything is stated for a general CommRing R, with coefficients in R itself
(ModuleCat.of R R). The ZMod 2 specializations (cochainCupZMod2, …) are thin
abbreviations; over ZMod 2 the Koszul sign in the Leibniz rule is trivial.
0. Singular simplices and cochains as concrete objects #
The set of singular n-simplices of a space Z (an element of the singular
simplicial set in degree n).
Equations
- SphereOddDegree.singularSimplices Z n = (TopCat.toSSet.obj Z).obj (Opposite.op { len := n })
Instances For
A singular p-cochain of Z with coefficients in the ring R: an R-linear
map from the singular chain group C_p(Z) = ∐_{σ} R to R. This is
definitionally the degree-p object of the singular cochain complex with
coefficients in ModuleCat.of R R.
Equations
- SphereOddDegree.singularCochainGroup R Z p = ((((AlgebraicTopology.singularChainComplexFunctor (ModuleCat R)).obj ↧R).obj Z).X p ⟶ ↧R)
Instances For
1. Evaluation of a cochain on a simplex #
Evaluate a singular p-cochain φ on a singular p-simplex τ, i.e. on the
basis chain τ (the image of 1 ∈ R under the coproduct inclusion at τ).
Equations
- SphereOddDegree.cochainEval p φ τ = (ModuleCat.Hom.hom φ) ((ModuleCat.Hom.hom (CategoryTheory.Limits.Sigma.ι (fun (x : SphereOddDegree.singularSimplices Z p) => ↧R) τ)) 1)
Instances For
Cochain extensionality. Two p-cochains are equal iff they agree on every
singular p-simplex. (The chain group is a coproduct of copies of R, so a map
out of it is determined by its values on the generators.)
2. The cochain cup product #
The cochain-level cup product ⌣ : C^p(Z; R) → C^q(Z; R) → C^{p+q}(Z; R),
defined by the Alexander–Whitney formula (φ ⌣ ψ)(σ) = φ(front_p σ)·ψ(back_q σ).
Built degree-wise out of the singular-chain coproduct via Limits.Sigma.desc.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Defining formula of the cup product. The value of φ ⌣ ψ on a singular
(p+q)-simplex σ is φ(front_p σ) · ψ(back_q σ).
Bilinearity #
The cup product is additive in its left argument.
The cup product is additive in its right argument.
The cup product is R-linear in its left argument.
The cup product is R-linear in its right argument.
3. Pullback of cochains and naturality of the cup product #
The pullback f^* of a singular p-cochain along a continuous map
f : X ⟶ Y, i.e. precomposition with the induced singular chain map.
Equations
- SphereOddDegree.cochainPullback f p φ = (ModuleCat.Hom.hom (((SphereOddDegree.singularCochainComplexFunctor R ↧R).map f.op).f p)) φ
Instances For
The singular chain map sends the generator at a simplex τ to the generator at
its pushforward f ∘ τ.
Pullback evaluation. (f^* φ)(τ) = φ(f ∘ τ).
Naturality of the cup product (cochain level).
f^*(φ ⌣ ψ) = (f^* φ) ⌣ (f^* ψ). This is the cochain-level substrate for the
eventual cohomology-level f^*(a ⌣ b) = f^* a ⌣ f^* b.
4. The unit cochain and right unitality #
The unit cochain 1 ∈ C^0(Z; R): the augmentation cochain taking the
value 1 on every singular 0-simplex.
Equations
- SphereOddDegree.cochainOne = CategoryTheory.Limits.Sigma.desc fun (x : (TopCat.toSSet.obj Z).obj (Opposite.op { len := 0 })) => CategoryTheory.CategoryStruct.id ↧R
Instances For
The front p-face inclusion with empty back part is the identity, so the front
p-face of a p-simplex is the simplex itself.
5. Powers of a degree-one cochain #
The n-th cup power φ^{⌣ n} ∈ C^n(Z; R) of a degree-one cochain
φ ∈ C^1(Z; R), defined by φ^0 = 1 and φ^{n+1} = φ^n ⌣ φ. This is the
cochain-level scaffolding for the powers αⁿ of a degree-one cohomology class.
Equations
Instances For
Naturality of powers (cochain level). f^*(φ^n) = (f^* φ)^n.
6. ZMod 2 specializations #
The downstream RPⁿ cohomology computation uses ZMod 2 coefficients. These are
thin abbreviations of the general definitions.
The cochain cup product with ZMod 2 coefficients.
Equations
- SphereOddDegree.cochainCupZMod2 p q φ ψ = SphereOddDegree.cochainCup p q φ ψ
Instances For
The unit cochain with ZMod 2 coefficients.
Instances For
Cup powers of a degree-one cochain with ZMod 2 coefficients.
Equations
Instances For
Naturality of the ZMod 2 cochain cup product.
Cohomology-level descent #
This file supplies the Alexander--Whitney cochain product, bilinearity, naturality, unit, and
powers. The Leibniz identity and the induced cohomology product are implemented in
CohomologyCupProduct.lean, which exports cupZMod2, its naturality, and cup powers.