Documentation

LeanPool.NandakumarRamanaRao.NRR.OddSphereDegree.AlgebraicTopology.CohomologyCupProduct

Cohomology-level singular cup product over ZMod 2 #

This file descends the genuine cochain-level Alexander–Whitney cup product (cochainCup, CupProduct.lean) to a cohomology-level cup product on the singular cohomology with ZMod 2 coefficients constructed in SingularCohomology.lean:

cupZMod2 : H^p(X; F₂) → H^q(X; F₂) → H^{p+q}(X; F₂).

The descent uses the cochain Leibniz / coboundary identity of CochainCupLeibniz.lean (cup of cocycles is a cocycle; cup with a coboundary is a coboundary). The well-definedness on cohomology classes is cupZMod2_mk: the cup of the classes of two cocycles is the class of their cochain cup.

Construction outline #

The module exports the cohomology-level product and its functoriality laws.

@[reducible, inline]

The singular F₂-cochain complex of X.

Equations
Instances For
    @[reducible, inline]
    noncomputable abbrev SphereOddDegree.cohomologyZMod2 (X : TopCat) (n : ℕ) :

    The n-th singular cohomology H^n(X; F₂), definitionally (singularCohomologyZMod2 n).obj (op X).

    Equations
    Instances For

      cohomologyZMod2 is the constructed singular cohomology object.

      1. Cohomology class of a cocycle #

      noncomputable def SphereOddDegree.cocycleClass (X : TopCat) (n : ℕ) (φ : singularCochainGroup (ZMod 2) X n) (hφ : cochainCoboundary (ZMod 2) X n φ = 0) :

      The cohomology class of a cocycle φ (a p-cochain with δφ = 0): homologyπ applied to the cycle cyclesMk φ.

      Equations
      • One or more equations did not get rendered due to their size.
      Instances For
        theorem SphereOddDegree.cocycleClass_congr (X : TopCat) (n : ℕ) {φ φ' : singularCochainGroup (ZMod 2) X n} (h : φ = φ') (hφ : cochainCoboundary (ZMod 2) X n φ = 0) (hφ' : cochainCoboundary (ZMod 2) X n φ' = 0) :
        cocycleClass X n φ hφ = cocycleClass X n φ' hφ'

        The class only depends on the cochain, not on the cocycle proof.

        theorem SphereOddDegree.cocycleClass_surjective (X : TopCat) (n : ℕ) (a : ↑(cohomologyZMod2 X n)) :
        ∃ (φ : singularCochainGroup (ZMod 2) X n) (hφ : cochainCoboundary (ZMod 2) X n φ = 0), cocycleClass X n φ hφ = a

        Every cohomology class is the class of a cocycle.

        theorem SphereOddDegree.cocycleClass_zero (X : TopCat) (n : ℕ) (h0 : cochainCoboundary (ZMod 2) X n 0 = 0) :
        cocycleClass X n 0 h0 = 0

        The zero cochain has zero class.

        theorem SphereOddDegree.cocycleClass_coboundary_zero (X : TopCat) (m : ℕ) (η : singularCochainGroup (ZMod 2) X m) (hcoc : cochainCoboundary (ZMod 2) X (m + 1) (cochainCoboundary (ZMod 2) X m η) = 0) :
        cocycleClass X (m + 1) (cochainCoboundary (ZMod 2) X m η) hcoc = 0
        theorem SphereOddDegree.cocycleClass_cast (X : TopCat) {m m' : ℕ} (h : m = m') (φ : singularCochainGroup (ZMod 2) X m) (hφ : cochainCoboundary (ZMod 2) X m φ = 0) (hφ' : cochainCoboundary (ZMod 2) X m' (cochainCast h φ) = 0) :
        theorem SphereOddDegree.cocycleClass_cast_coboundary_zero (X : TopCat) (m m' : ℕ) (h : m + 1 = m') (η : singularCochainGroup (ZMod 2) X m) (hcoc : cochainCoboundary (ZMod 2) X m' (cochainCast h (cochainCoboundary (ZMod 2) X m η)) = 0) :
        cocycleClass X m' (cochainCast h (cochainCoboundary (ZMod 2) X m η)) hcoc = 0

        A degree-cast coboundary has zero cohomology class.

        2. Cup with a fixed cocycle on the left #

        noncomputable def SphereOddDegree.cupRightMor (X : TopCat) (p q : ℕ) (ψ : singularCochainGroup (ZMod 2) X q) :

        The cochain map φ ↦ φ ⌣ ψ as a ModuleCat morphism C^p ⟶ C^{p+q}.

        Equations
        • One or more equations did not get rendered due to their size.
        Instances For
          @[simp]
          theorem SphereOddDegree.cupRightMor_hom (X : TopCat) (p q : ℕ) (ψ : singularCochainGroup (ZMod 2) X q) (φ : ↑((cochainCxZMod2 X).X p)) :
          (ModuleCat.Hom.hom (cupRightMor X p q ψ)) φ = cochainCup p q φ ψ
          noncomputable def SphereOddDegree.cupLeftFixedMor (X : TopCat) (p q : ℕ) (φ : singularCochainGroup (ZMod 2) X p) :

          The cochain map ψ ↦ φ ⌣ ψ as a ModuleCat morphism C^q ⟶ C^{p+q}.

          Equations
          • One or more equations did not get rendered due to their size.
          Instances For
            @[simp]
            theorem SphereOddDegree.cupLeftFixedMor_hom (X : TopCat) (p q : ℕ) (φ : singularCochainGroup (ZMod 2) X p) (ψ : ↑((cochainCxZMod2 X).X q)) :
            (ModuleCat.Hom.hom (cupLeftFixedMor X p q φ)) ψ = cochainCup p q φ ψ

            The cup with a fixed cocycle on the left sends cycles to cocycles.

            The cup with a fixed cocycle on the right sends cycles to cocycles.

            noncomputable def SphereOddDegree.cupLeftMor (X : TopCat) (p q : ℕ) (ψ : singularCochainGroup (ZMod 2) X q) (hψ : cochainCoboundary (ZMod 2) X q ψ = 0) :

            Cup with a fixed left cocycle, as a map cycles p ⟶ H^{p+q}.

            Equations
            • One or more equations did not get rendered due to their size.
            Instances For
              noncomputable def SphereOddDegree.cupRightMor' (X : TopCat) (p q : ℕ) (φ : singularCochainGroup (ZMod 2) X p) (hφ : cochainCoboundary (ZMod 2) X p φ = 0) :

              Cup with a fixed right cocycle, as a map cycles q ⟶ H^{p+q}.

              Equations
              • One or more equations did not get rendered due to their size.
              Instances For
                theorem SphereOddDegree.cupLeftMor_cyclesMk (X : TopCat) (p q : ℕ) (ψ : singularCochainGroup (ZMod 2) X q) (hψ : cochainCoboundary (ZMod 2) X q ψ = 0) (φ : singularCochainGroup (ZMod 2) X p) (hφ : cochainCoboundary (ZMod 2) X p φ = 0) :
                (ModuleCat.Hom.hom (cupLeftMor X p q ψ hψ)) (HomologicalComplex.cyclesMk (cochainCxZMod2 X) φ (p + 1) ⋯ hφ) = cocycleClass X (p + q) (cochainCup p q φ ψ) ⋯
                theorem SphereOddDegree.cupRightMor'_cyclesMk (X : TopCat) (p q : ℕ) (φ : singularCochainGroup (ZMod 2) X p) (hφ : cochainCoboundary (ZMod 2) X p φ = 0) (ψ : singularCochainGroup (ZMod 2) X q) (hψ : cochainCoboundary (ZMod 2) X q ψ = 0) :
                (ModuleCat.Hom.hom (cupRightMor' X p q φ hφ)) (HomologicalComplex.cyclesMk (cochainCxZMod2 X) ψ (q + 1) ⋯ hψ) = cocycleClass X (p + q) (cochainCup p q φ ψ) ⋯

                cupLeftMor evaluated on a general cycle is the class of its iCycles cupped with ψ.

                cupRightMor' evaluated on a general cycle is the class of φ cupped with its iCycles.

                theorem SphereOddDegree.cocycleClass_eq_zero_of_eq (X : TopCat) (n : ℕ) {φ φ' : singularCochainGroup (ZMod 2) X n} (h : φ = φ') (hφ : cochainCoboundary (ZMod 2) X n φ = 0) (hφ' : cochainCoboundary (ZMod 2) X n φ' = 0) (h0 : cocycleClass X n φ' hφ' = 0) :
                cocycleClass X n φ hφ = 0

                If two cochains are equal and one has zero class, so does the other.

                theorem SphereOddDegree.cocycleClass_cup_coboundary_left_zero (X : TopCat) (m q : ℕ) (η : singularCochainGroup (ZMod 2) X m) (ψ : singularCochainGroup (ZMod 2) X q) (hψ : cochainCoboundary (ZMod 2) X q ψ = 0) (hcoc : cochainCoboundary (ZMod 2) X (m + 1 + q) (cochainCup (m + 1) q (cochainCoboundary (ZMod 2) X m η) ψ) = 0) :
                cocycleClass X (m + 1 + q) (cochainCup (m + 1) q (cochainCoboundary (ZMod 2) X m η) ψ) hcoc = 0

                The cup of a coboundary δη (left factor) with a cocycle ψ has zero class.

                theorem SphereOddDegree.cocycleClass_cup_coboundary_right_zero (X : TopCat) (p m : ℕ) (φ : singularCochainGroup (ZMod 2) X p) (hφ : cochainCoboundary (ZMod 2) X p φ = 0) (η : singularCochainGroup (ZMod 2) X m) (hcoc : cochainCoboundary (ZMod 2) X (p + (m + 1)) (cochainCup p (m + 1) φ (cochainCoboundary (ZMod 2) X m η)) = 0) :
                cocycleClass X (p + (m + 1)) (cochainCup p (m + 1) φ (cochainCoboundary (ZMod 2) X m η)) hcoc = 0

                The cup of a cocycle φ with a coboundary δη (right factor) has zero class.

                theorem SphereOddDegree.cocycleClass_cup_d_left_zero (X : TopCat) (q i p : ℕ) (η : ↑((cochainCxZMod2 X).X i)) (ψ : singularCochainGroup (ZMod 2) X q) (hψ : cochainCoboundary (ZMod 2) X q ψ = 0) (hcoc : cochainCoboundary (ZMod 2) X (p + q) (cochainCup p q ((ModuleCat.Hom.hom ((cochainCxZMod2 X).d i p)) η) ψ) = 0) :
                cocycleClass X (p + q) (cochainCup p q ((ModuleCat.Hom.hom ((cochainCxZMod2 X).d i p)) η) ψ) hcoc = 0

                The cup of (d_i p).hom η (left factor, in the image of a differential into degree p) with a cocycle ψ has zero class, for any source index i.

                theorem SphereOddDegree.cocycleClass_cup_d_right_zero (X : TopCat) (p i q : ℕ) (φ : singularCochainGroup (ZMod 2) X p) (hφ : cochainCoboundary (ZMod 2) X p φ = 0) (η : ↑((cochainCxZMod2 X).X i)) (hcoc : cochainCoboundary (ZMod 2) X (p + q) (cochainCup p q φ ((ModuleCat.Hom.hom ((cochainCxZMod2 X).d i q)) η)) = 0) :
                cocycleClass X (p + q) (cochainCup p q φ ((ModuleCat.Hom.hom ((cochainCxZMod2 X).d i q)) η)) hcoc = 0

                The cup of a cocycle φ with (d_i q).hom η (right factor) has zero class.

                The cup-with-left-cocycle map kills coboundaries (cokernel condition).

                The cup-with-right-cocycle map kills coboundaries (cokernel condition).

                3. Descent to homology in each variable #

                noncomputable def SphereOddDegree.cupHomologyLeft (X : TopCat) (p q : ℕ) (ψ : singularCochainGroup (ZMod 2) X q) (hψ : cochainCoboundary (ZMod 2) X q ψ = 0) :

                Cup with a fixed left cocycle, descended to H^p ⟶ H^{p+q}.

                Equations
                • One or more equations did not get rendered due to their size.
                Instances For
                  noncomputable def SphereOddDegree.cupHomologyRight (X : TopCat) (p q : ℕ) (φ : singularCochainGroup (ZMod 2) X p) (hφ : cochainCoboundary (ZMod 2) X p φ = 0) :

                  Cup with a fixed right cocycle, descended to H^q ⟶ H^{p+q}.

                  Equations
                  • One or more equations did not get rendered due to their size.
                  Instances For
                    theorem SphereOddDegree.cupHomologyLeft_apply (X : TopCat) (p q : ℕ) (ψ : singularCochainGroup (ZMod 2) X q) (hψ : cochainCoboundary (ZMod 2) X q ψ = 0) (φ : singularCochainGroup (ZMod 2) X p) (hφ : cochainCoboundary (ZMod 2) X p φ = 0) :
                    (ModuleCat.Hom.hom (cupHomologyLeft X p q ψ hψ)) (cocycleClass X p φ hφ) = cocycleClass X (p + q) (cochainCup p q φ ψ) ⋯

                    cupHomologyLeft on the class of φ is the class of φ ⌣ ψ.

                    theorem SphereOddDegree.cupHomologyRight_apply (X : TopCat) (p q : ℕ) (φ : singularCochainGroup (ZMod 2) X p) (hφ : cochainCoboundary (ZMod 2) X p φ = 0) (ψ : singularCochainGroup (ZMod 2) X q) (hψ : cochainCoboundary (ZMod 2) X q ψ = 0) :
                    (ModuleCat.Hom.hom (cupHomologyRight X p q φ hφ)) (cocycleClass X q ψ hψ) = cocycleClass X (p + q) (cochainCup p q φ ψ) ⋯

                    cupHomologyRight on the class of ψ is the class of φ ⌣ ψ.

                    4. The cohomology cup product #

                    noncomputable def SphereOddDegree.classCycleRepr (X : TopCat) (n : ℕ) (a : ↑(cohomologyZMod2 X n)) :

                    The chosen cycle representative of a cohomology class.

                    Equations
                    Instances For
                      noncomputable def SphereOddDegree.classRepr (X : TopCat) (n : ℕ) (a : ↑(cohomologyZMod2 X n)) :

                      A chosen cocycle representative of a cohomology class.

                      Equations
                      Instances For
                        theorem SphereOddDegree.cocycleClass_classRepr (X : TopCat) (n : ℕ) (a : ↑(cohomologyZMod2 X n)) :
                        cocycleClass X n (classRepr X n a) ⋯ = a
                        noncomputable def SphereOddDegree.cupZMod2 {X : TopCat} {p q : ℕ} (a : ↑(cohomologyZMod2 X p)) (b : ↑(cohomologyZMod2 X q)) :
                        ↑(cohomologyZMod2 X (p + q))

                        The cohomology-level cup product H^p(X; F₂) → H^q(X; F₂) → H^{p+q}(X; F₂).

                        Equations
                        Instances For
                          theorem SphereOddDegree.cupZMod2_mk {X : TopCat} {p q : ℕ} (φ : singularCochainGroup (ZMod 2) X p) (hφ : cochainCoboundary (ZMod 2) X p φ = 0) (ψ : singularCochainGroup (ZMod 2) X q) (hψ : cochainCoboundary (ZMod 2) X q ψ = 0) :
                          cupZMod2 (cocycleClass X p φ hφ) (cocycleClass X q ψ hψ) = cocycleClass X (p + q) (cochainCup p q φ ψ) ⋯

                          Well-definedness / computation rule. The cup of the classes of two cocycles is the class of their cochain cup.

                          5. Naturality of the cohomology cup product #

                          noncomputable def SphereOddDegree.cohPullback {X Y : TopCat} (f : X ⟶ Y) (n : ℕ) :

                          The pullback f^* : H^n(Y; F₂) ⟶ H^n(X; F₂) of a continuous map f : X ⟶ Y, as the action of the singular cohomology functor.

                          Equations
                          Instances For

                            The cochain pullback commutes with the coboundary (it is a cochain map).

                            theorem SphereOddDegree.cochainPullback_cocycle {X Y : TopCat} (f : X ⟶ Y) (n : ℕ) (φ : singularCochainGroup (ZMod 2) Y n) (hφ : cochainCoboundary (ZMod 2) Y n φ = 0) :

                            The cochain pullback of a cocycle is a cocycle.

                            theorem SphereOddDegree.cohPullback_cocycleClass {X Y : TopCat} (f : X ⟶ Y) (n : ℕ) (φ : singularCochainGroup (ZMod 2) Y n) (hφ : cochainCoboundary (ZMod 2) Y n φ = 0) :
                            theorem SphereOddDegree.cohPullback_cupZMod2 {X Y : TopCat} (f : X ⟶ Y) (p q : ℕ) (a : ↑(cohomologyZMod2 Y p)) (b : ↑(cohomologyZMod2 Y q)) :

                            Naturality of the cohomology cup product. f^*(a ⌣ b) = f^* a ⌣ f^* b.

                            6. Powers of a degree-one class #

                            noncomputable def SphereOddDegree.oneZMod2 (X : TopCat) :

                            The unit class 1 ∈ H^0(X; F₂).

                            Equations
                            Instances For
                              def SphereOddDegree.cupPowZMod2 {X : TopCat} (a : ↑(cohomologyZMod2 X 1)) (n : ℕ) :

                              The n-th cup power a^n ∈ H^n(X; F₂) of a degree-one class a ∈ H^1(X; F₂).

                              Equations
                              Instances For
                                @[simp]
                                theorem SphereOddDegree.cupPowZMod2_succ {X : TopCat} (a : ↑(cohomologyZMod2 X 1)) (n : ℕ) :
                                theorem SphereOddDegree.cochainPow_cocycle (X : TopCat) (φ : singularCochainGroup (ZMod 2) X 1) (hφ : cochainCoboundary (ZMod 2) X 1 φ = 0) (n : ℕ) :

                                Each cup power of a degree-one cocycle is a cocycle.

                                theorem SphereOddDegree.cupPowZMod2_mk {X : TopCat} (φ : singularCochainGroup (ZMod 2) X 1) (hφ : cochainCoboundary (ZMod 2) X 1 φ = 0) (n : ℕ) :
                                cupPowZMod2 (cocycleClass X 1 φ hφ) n = cocycleClass X n (cochainPow φ n) ⋯

                                The cup power of the class of a degree-one cochain is the class of its cochain power.

                                Naturality of cup powers. f^*(a^n) = (f^* a)^n.

                                Fixed-point cup powers. If f^* a = a (a degree-one class fixed by the pullback of a self-map), then f^*(a^n) = a^n for all n.