1+ Require Import Basics Types Pointed WildCat.Core WildCat.Equiv.
2+ Require Import Truncations.Core.
3+ Require Import Homotopy.EMSpace.
4+ Require Import Homotopy.HSpace.Core Homotopy.HSpace.Pointwise Homotopy.HSpace.HGroup Homotopy.HSpace.Coherent.
5+ Require Import Algebra.AbGroups.AbelianGroup.
6+ Require Import Homotopy.Suspension.
7+ Require Import Spheres HomotopyGroup.
8+
9+ Local Open Scope pointed_scope.
10+
11+ (** * Cohomology groups *)
12+
13+ (** Reduced cohomology groups are defined as the homotopy classes of pointed maps from the space to an Eilenberg-MacLane space. The group structure comes from the H-space structure on [K(G, n)]. *)
14+ Definition Cohomology `{Univalence} (n : nat) (X : pType) (G : AbGroup) : AbGroup.
15+ Proof .
16+ snrapply Build_AbGroup'.
17+ 1: exact (Tr 0 (X ->** K(G, n))).
18+ 1-3: shelve.
19+ nrapply isabgroup_ishabgroup_tr.
20+ nrapply ishabgroup_hspace_pmap.
21+ apply iscohhabgroup_em.
22+ Defined .
23+
24+ (** ** Cohomology of suspension *)
25+
26+ (** The (n+1)th cohomology of a suspension is the nth cohomology of the original space. *)
27+ (* TODO: show this preserves the operation somehow and is therefore a group iso *)
28+ Definition cohomology_susp `{Univalence} n (X : pType) G
29+ : Cohomology n.+1 (psusp X) G <~> Cohomology n X G.
30+ Proof .
31+ apply Trunc_functor_equiv.
32+ nrefine (_ oE (loop_susp_adjoint _ _)).
33+ rapply pequiv_pequiv_postcompose.
34+ symmetry.
35+ apply pequiv_loops_em_em.
36+ Defined .
37+
38+ (** ** Cohomology of spheres *)
39+
40+ (* TODO: improve this to a group isomorphism once cohomology can be easily checked to be op preserving. *)
41+ Definition cohomology_sn `{Univalence} (n : nat) (G : AbGroup)
42+ : Cohomology n.+1 (psphere n.+1) G <~> G.
43+ Proof .
44+ nrefine (_ oE (equiv_tr 0 _)^-1).
45+ 1: refine ?[goal1].
46+ 2: { rapply istrunc_equiv_istrunc. symmetry. apply ?goal1. }
47+ nrefine (_ oE pmap_from_psphere_iterated_loops _ _).
48+ symmetry.
49+ rapply pequiv_loops_em_g.
50+ Defined .
51+
0 commit comments