@@ -10,11 +10,17 @@ open import Cubical.Foundations.Isomorphism
1010open import Cubical.Foundations.Function
1111
1212open import Cubical.Data.Nat
13+ open import Cubical.Data.Nat.Order.Inductive
14+ open import Cubical.Data.Int renaming (_+_ to _+ℤ_ ; _·_ to _·ℤ_)
15+ open import Cubical.Data.Bool
16+ open import Cubical.Data.Empty renaming (rec to emptyrec)
1317open import Cubical.Data.Fin.Inductive.Base
1418open import Cubical.Data.Fin.Inductive.Properties
1519open import Cubical.Data.Sigma
1620
21+ open import Cubical.HITs.S1
1722open import Cubical.HITs.Sn
23+ open import Cubical.HITs.Sn.Degree renaming (degreeConst to degree-const)
1824open import Cubical.HITs.Pushout
1925open import Cubical.HITs.Susp
2026open import Cubical.HITs.SphereBouquet
@@ -23,6 +29,7 @@ open import Cubical.HITs.SphereBouquet.Degree
2329open import Cubical.Algebra.Group.Base
2430open import Cubical.Algebra.Group.MorphismProperties
2531open import Cubical.Algebra.AbGroup
32+ open import Cubical.Algebra.AbGroup.Instances.FreeAbGroup
2633open import Cubical.Algebra.ChainComplex
2734
2835
@@ -63,6 +70,9 @@ module _ {ℓ} (C : CWskel ℓ) where
6370 isoCofBouquet : cofibCW n C → SphereBouquet n (Fin An)
6471 isoCofBouquet = Iso.fun (BouquetIso-gen n An αn (snd C .snd .snd .snd n))
6572
73+ isoCofBouquetInv : SphereBouquet n (Fin An) → cofibCW n C
74+ isoCofBouquetInv = Iso.inv (BouquetIso-gen n An αn (snd C .snd .snd .snd n))
75+
6676 isoCofBouquetInv↑ : SphereBouquet (suc n) (Fin An+1) → cofibCW (suc n) C
6777 isoCofBouquetInv↑ = Iso.inv (BouquetIso-gen (suc n) An+1 αn+1 (snd C .snd .snd .snd (suc n)))
6878
@@ -179,14 +189,90 @@ module _ {ℓ} (C : CWskel ℓ) where
179189 ∂≡∂↑ : ∂ n ≡ ∂↑
180190 ∂≡∂↑ = bouquetDegreeSusp (pre∂ n)
181191
192+ -- alternative description of the boundary for 1-dimensional cells
193+ module ∂₀ where
194+ src₀ : Fin (C .snd .fst 1 ) → Fin (C .snd .fst 0 )
195+ src₀ x = CW₁-discrete C .fst (C .snd .snd .fst 1 (x , true))
182196
183- open ChainComplex
197+ dest₀ : Fin (C .snd .fst 1 ) → Fin (C .snd .fst 0 )
198+ dest₀ x = CW₁-discrete C .fst (C .snd .snd .fst 1 (x , false))
199+
200+ src : AbGroupHom (ℤ[A 1 ]) (ℤ[A 0 ])
201+ src = ℤFinFunct src₀
202+
203+ dest : AbGroupHom (ℤ[A 1 ]) (ℤ[A 0 ])
204+ dest = ℤFinFunct dest₀
205+
206+ ∂₀ : AbGroupHom (ℤ[A 1 ]) (ℤ[A 0 ])
207+ ∂₀ = subtrGroupHom (ℤ[A 1 ]) (ℤ[A 0 ]) dest src
208+
209+ -- ∂₀-alt : ∂ 0 ≡ ∂₀
210+ -- ∂₀-alt = agreeOnℤFinGenerator→≡ λ x → funExt λ a → {!!}
211+
212+ -- augmentation map, in order to define reduced homology
213+ module augmentation where
214+ ε : Susp (cofibCW 0 C) → SphereBouquet 1 (Fin 1 )
215+ ε north = inl tt
216+ ε south = inl tt
217+ ε (merid (inl tt) i) = inl tt
218+ ε (merid (inr x) i) = (push fzero ∙∙ (λ i → inr (fzero , loop i)) ∙∙ (λ i → push fzero (~ i))) i
219+ ε (merid (push x i₁) i) with (C .snd .snd .snd .fst x)
220+ ε (merid (push x i₁) i) | ()
221+
222+ εδ : ∀ (x : cofibCW 1 C) → (ε ∘ (suspFun (to_cofibCW 0 C)) ∘ (δ 1 C)) x ≡ inl tt
223+ εδ (inl tt) = refl
224+ εδ (inr x) i = (push fzero ∙∙ (λ i → inr (fzero , loop i)) ∙∙ (λ i → push fzero (~ i))) (~ i)
225+ εδ (push a i) j = (push fzero ∙∙ (λ i → inr (fzero , loop i)) ∙∙ (λ i → push fzero (~ i))) (i ∧ (~ j))
184226
185- CW-ChainComplex : ChainComplex ℓ-zero
186- chain CW-ChainComplex n = ℤ[A n ]
187- bdry CW-ChainComplex n = ∂ n
188- bdry²=0 CW-ChainComplex n = ∂∂≡0 n
227+ preϵ : SphereBouquet 1 (Fin (preboundary.An 0 )) → SphereBouquet 1 (Fin 1 )
228+ preϵ = ε ∘ (suspFun isoCofBouquetInv) ∘ isoSuspBouquetInv
229+ where
230+ open preboundary 0
231+
232+ opaque
233+ preϵpre∂≡0 : ∀ (x : SphereBouquet 1 (Fin (preboundary.An+1 0 ))) → (preϵ ∘ preboundary.pre∂ 0 ) x ≡ inl tt
234+ preϵpre∂≡0 x = cong (ε ∘ (suspFun isoCofBouquetInv))
235+ (Iso.leftInv sphereBouquetSuspIso
236+ (((suspFun isoCofBouquet) ∘ (suspFun (to_cofibCW 0 C)) ∘ (δ 1 C) ∘ isoCofBouquetInv↑) x))
237+ ∙ cong ε (aux (((suspFun (to_cofibCW 0 C)) ∘ (δ 1 C) ∘ isoCofBouquetInv↑) x))
238+ ∙ εδ (isoCofBouquetInv↑ x)
239+ where
240+ open preboundary 0
241+ aux : ∀ (x : Susp (cofibCW 0 C)) → (suspFun (isoCofBouquetInv) ∘ (suspFun isoCofBouquet)) x ≡ x
242+ aux north = refl
243+ aux south = refl
244+ aux (merid a i) j = merid (Iso.leftInv (BouquetIso-gen 0 An αn (snd C .snd .snd .snd 0 )) a j) i
245+
246+ ϵ : AbGroupHom (ℤ[A 0 ]) (ℤ[Fin 1 ])
247+ ϵ = bouquetDegree preϵ
248+
249+ ϵ-alt : ϵ ≡ sumCoefficients _
250+ ϵ-alt = GroupHom≡ (funExt λ (x : ℤ[A 0 ] .fst) → funExt λ y → cong sumFinℤ (funExt (lem1 x y)))
251+ where
252+ An = snd C .fst 0
253+
254+ lem0 : (y : Fin 1 ) (a : Fin An) → (degree _ (pickPetal {k = 1 } y ∘ preϵ ∘ inr ∘ (a ,_))) ≡ pos 1
255+ lem0 (zero , y₁) a = refl
256+
257+ lem1 : (x : ℤ[A 0 ] .fst) (y : Fin 1 ) (a : Fin An) → x a ·ℤ (degree _ (pickPetal {k = 1 } y ∘ preϵ ∘ inr ∘ (a ,_))) ≡ x a
258+ lem1 x y a = cong (x a ·ℤ_) (lem0 y a) ∙ ·IdR (x a)
259+
260+ opaque
261+ ϵ∂≡0 : compGroupHom (∂ 0 ) ϵ ≡ trivGroupHom
262+ ϵ∂≡0 = sym (bouquetDegreeComp (preϵ) (preboundary.pre∂ 0 ))
263+ ∙ cong bouquetDegree (funExt preϵpre∂≡0)
264+ ∙ bouquetDegreeConst _ _ _
265+
266+ open ChainComplex
189267
190- -- Cellular homology
191- Hˢᵏᵉˡ : (n : ℕ) → Group₀
192- Hˢᵏᵉˡ n = homology n CW-ChainComplex
268+ CW-AugChainComplex : ChainComplex ℓ-zero
269+ chain CW-AugChainComplex (zero) = ℤ[Fin 1 ]
270+ chain CW-AugChainComplex (suc n) = ℤ[A n ]
271+ bdry CW-AugChainComplex (zero) = augmentation.ϵ
272+ bdry CW-AugChainComplex (suc n) = ∂ n
273+ bdry²=0 CW-AugChainComplex (zero) = augmentation.ϵ∂≡0
274+ bdry²=0 CW-AugChainComplex (suc n) = ∂∂≡0 n
275+
276+ -- Reduced cellular homology
277+ H̃ˢᵏᵉˡ : (n : ℕ) → Group₀
278+ H̃ˢᵏᵉˡ n = homology n CW-AugChainComplex
0 commit comments