Skip to content

Commit ebbd453

Browse files
committed
explicit description of the augmentation map
1 parent c990ea3 commit ebbd453

File tree

4 files changed

+103
-28
lines changed

4 files changed

+103
-28
lines changed

Cubical/Algebra/AbGroup/Instances/FreeAbGroup.agda

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ open import Cubical.HITs.FreeAbGroup
1919
open import Cubical.Algebra.AbGroup
2020
open import Cubical.Algebra.AbGroup.Instances.Pi
2121
open import Cubical.Algebra.AbGroup.Instances.Int
22+
open import Cubical.Algebra.AbGroup.Instances.DirectProduct
2223
open import Cubical.Algebra.Group
2324
open import Cubical.Algebra.Group.Morphisms
2425
open import Cubical.Algebra.Group.MorphismProperties
@@ -413,3 +414,49 @@ agreeOnℤFinGenerator→≡ {n} {m} {ϕ} {ψ} idr =
413414
λ f p IsGroupHom.presinv (snd ϕ) f
414415
∙∙ (λ i x -ℤ (p i x))
415416
∙∙ sym (IsGroupHom.presinv (snd ψ) f)))
417+
418+
--
419+
sumCoefficients : (n : ℕ) AbGroupHom (ℤ[Fin n ]) (ℤ[Fin 1 ])
420+
fst (sumCoefficients n) v = λ _ sumFinℤ v
421+
snd (sumCoefficients n) = makeIsGroupHom (λ x y funExt λ _ sumFinℤHom x y)
422+
423+
ℤFinProductIso : (n m : ℕ) Iso (ℤ[Fin (n +ℕ m) ] .fst) ((AbDirProd ℤ[Fin n ] ℤ[Fin m ]) .fst)
424+
ℤFinProductIso n m = iso sum→product product→sum product→sum→product sum→product→sum
425+
where
426+
sum→product : (ℤ[Fin (n +ℕ m) ] .fst) ((AbDirProd ℤ[Fin n ] ℤ[Fin m ]) .fst)
427+
sum→product x = ((λ (a , Ha) x (a , <→<ᵗ (≤-trans (<ᵗ→< Ha) (≤SumLeft {n}{m}))))
428+
, λ (a , Ha) x (n +ℕ a , <→<ᵗ (<-k+ {a}{m}{n} (<ᵗ→< Ha))))
429+
430+
product→sum : ((AbDirProd ℤ[Fin n ] ℤ[Fin m ]) .fst) (ℤ[Fin (n +ℕ m) ] .fst)
431+
product→sum (x , y) (a , Ha) with (a ≟ᵗ n)
432+
... | lt H = x (a , H)
433+
... | eq H = y (a ∸ n , <→<ᵗ (subst (a ∸ n <_) (∸+ m n) (<-∸-< a (n +ℕ m) n (<ᵗ→< Ha) (subst (λ a a < n +ℕ m) H (<ᵗ→< Ha)))))
434+
... | gt H = y (a ∸ n , <→<ᵗ (subst (a ∸ n <_) (∸+ m n) (<-∸-< a (n +ℕ m) n (<ᵗ→< Ha) (<ᵗ→< (<ᵗ-trans {n}{a}{n +ℕ m} H Ha)))))
435+
436+
product→sum→product : x sum→product (product→sum x) ≡ x
437+
product→sum→product (x , y) = ≡-× (funExt (λ (a , Ha) lemx a Ha)) (funExt (λ (a , Ha) lemy a Ha))
438+
where
439+
lemx : (a : ℕ) (Ha : a <ᵗ n) fst (sum→product (product→sum (x , y))) (a , Ha) ≡ x (a , Ha)
440+
lemx a Ha with (a ≟ᵗ n)
441+
... | lt H = cong x (Fin≡ (a , H) (a , Ha) refl)
442+
... | eq H = rec (¬m<ᵗm (subst (λ a a <ᵗ n) H Ha))
443+
... | gt H = rec (¬m<ᵗm (<ᵗ-trans Ha H))
444+
445+
lemy : (a : ℕ) (Ha : a <ᵗ m) snd (sum→product (product→sum (x , y))) (a , Ha) ≡ y (a , Ha)
446+
lemy a Ha with ((n +ℕ a) ≟ᵗ n)
447+
... | lt H = rec (¬m<m (≤<-trans (≤SumLeft {n}{a}) (<ᵗ→< H)))
448+
... | eq H = cong y (Fin≡ _ _ (∸+ a n))
449+
... | gt H = cong y (Fin≡ _ _ (∸+ a n))
450+
451+
sum→product→sum : x product→sum (sum→product x) ≡ x
452+
sum→product→sum x = funExt (λ (a , Ha) lem a Ha)
453+
where
454+
lem : (a : ℕ) (Ha : a <ᵗ (n +ℕ m)) product→sum (sum→product x) (a , Ha) ≡ x (a , Ha)
455+
lem a Ha with (a ≟ᵗ n)
456+
... | lt H = cong x (Fin≡ _ _ refl)
457+
... | eq H = cong x (Fin≡ _ _ ((+-comm n (a ∸ n)) ∙ ≤-∸-+-cancel (subst (n ≤_) (sym H) ≤-refl)))
458+
... | gt H = cong x (Fin≡ _ _ ((+-comm n (a ∸ n)) ∙ ≤-∸-+-cancel (<-weaken (<ᵗ→< H))))
459+
460+
ℤFinProduct : (n m : ℕ) AbGroupIso ℤ[Fin (n +ℕ m) ] (AbDirProd ℤ[Fin n ] ℤ[Fin m ])
461+
fst (ℤFinProduct n m) = ℤFinProductIso n m
462+
snd (ℤFinProduct n m) = makeIsGroupHom (λ x y refl)

Cubical/Algebra/ChainComplex/Homology.agda

Lines changed: 15 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -35,42 +35,30 @@ open ChainComplex
3535
open finChainComplexMap
3636
open IsGroupHom
3737

38-
-- Definition of homology
39-
homology : (n : ℕ) ChainComplex ℓ Group ℓ
40-
homology n C = ker∂n / img∂+1⊂ker∂n
41-
where
42-
Cn+2 = AbGroup→Group (chain C (suc (suc n)))
43-
∂n = bdry C n
44-
∂n+1 = bdry C (suc n)
45-
ker∂n = kerGroup ∂n
46-
47-
-- Restrict ∂n+1 to ker∂n
48-
∂'-fun : Cn+2 .fst ker∂n .fst
49-
fst (∂'-fun x) = ∂n+1 .fst x
50-
snd (∂'-fun x) = t
51-
where
52-
opaque
53-
t : ⟨ fst (kerSubgroup ∂n) (∂n+1 .fst x) ⟩
54-
t = funExt⁻ (cong fst (bdry²=0 C n)) x
38+
module _ (n : ℕ) (C : ChainComplex ℓ) where
39+
ker∂n = kerGroup (bdry C n)
5540

56-
∂' : GroupHom Cn+2 ker∂n
57-
fst ∂' = ∂'-fun
58-
snd ∂' = isHom
41+
∂ker : GroupHom (AbGroup→Group (chain C (suc (suc n)))) ker∂n
42+
∂ker .fst x = (bdry C (suc n) .fst x) , t
5943
where
6044
opaque
61-
isHom : IsGroupHom (Cn+2 .snd) ∂'-fun (ker∂n .snd)
62-
isHom = makeIsGroupHom λ x y
63-
kerGroup≡ ∂n (∂n+1 .snd .pres· x y)
45+
t : ⟨ fst (kerSubgroup (bdry C n)) (bdry C (suc n) .fst x) ⟩
46+
t = funExt⁻ (cong fst (bdry²=0 C n)) x
47+
∂ker .snd = makeIsGroupHom (λ x y kerGroup≡ (bdry C n) ((bdry C (suc n) .snd .pres· x y)))
6448

6549
img∂+1⊂ker∂n : NormalSubgroup ker∂n
66-
fst img∂+1⊂ker∂n = imSubgroup ∂'
50+
fst img∂+1⊂ker∂n = imSubgroup ∂ker
6751
snd img∂+1⊂ker∂n = isNormalImSubGroup
6852
where
6953
opaque
7054
module C1 = AbGroupStr (chain C (suc n) .snd)
71-
isNormalImSubGroup : isNormal (imSubgroup ∂')
72-
isNormalImSubGroup = isNormalIm ∂'
73-
(λ x y kerGroup≡ ∂n (C1.+Comm (fst x) (fst y)))
55+
isNormalImSubGroup : isNormal (imSubgroup ∂ker)
56+
isNormalImSubGroup = isNormalIm ∂ker
57+
(λ x y kerGroup≡ (bdry C n) (C1.+Comm (fst x) (fst y)))
58+
59+
-- Definition of homology
60+
homology : (n : ℕ) ChainComplex ℓ Group ℓ
61+
homology n C = (ker∂n n C) / (img∂+1⊂ker∂n n C)
7462

7563
-- Induced maps on cohomology by finite chain complex maps/homotopies
7664
module _ where

Cubical/CW/ChainComplex.agda

Lines changed: 35 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,14 +10,17 @@ open import Cubical.Foundations.Isomorphism
1010
open import Cubical.Foundations.Function
1111

1212
open import Cubical.Data.Nat
13-
open import Cubical.Data.Int
13+
open import Cubical.Data.Nat.Order.Inductive
14+
open import Cubical.Data.Int renaming (_+_ to _+ℤ_ ; _·_ to _·ℤ_)
1415
open import Cubical.Data.Bool
16+
open import Cubical.Data.Empty renaming (rec to emptyrec)
1517
open import Cubical.Data.Fin.Inductive.Base
1618
open import Cubical.Data.Fin.Inductive.Properties
1719
open import Cubical.Data.Sigma
1820

1921
open import Cubical.HITs.S1
2022
open import Cubical.HITs.Sn
23+
open import Cubical.HITs.Sn.Degree renaming (degreeConst to degree-const)
2124
open import Cubical.HITs.Pushout
2225
open import Cubical.HITs.Susp
2326
open import Cubical.HITs.SphereBouquet
@@ -186,6 +189,26 @@ module _ {ℓ} (C : CWskel ℓ) where
186189
∂≡∂↑ : ∂ n ≡ ∂↑
187190
∂≡∂↑ = bouquetDegreeSusp (pre∂ n)
188191

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))
196+
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+
189212
-- augmentation map, in order to define reduced homology
190213
module augmentation where
191214
ε : Susp (cofibCW 0 C) SphereBouquet 1 (Fin 1)
@@ -223,6 +246,17 @@ module _ {ℓ} (C : CWskel ℓ) where
223246
ϵ : AbGroupHom (ℤ[A 0 ]) (ℤ[Fin 1 ])
224247
ϵ = bouquetDegree preϵ
225248

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+
226260
opaque
227261
ϵ∂≡0 : compGroupHom (∂ 0) ϵ ≡ trivGroupHom
228262
ϵ∂≡0 = sym (bouquetDegreeComp (preϵ) (preboundary.pre∂ 0))

Cubical/Data/Fin/Inductive/Properties.agda

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,12 @@ open import Cubical.Relation.Nullary
2525

2626
open import Cubical.Algebra.AbGroup.Base using (move4)
2727

28+
Fin≡ : {m : ℕ} (a b : Fin m) fst a ≡ fst b a ≡ b
29+
Fin≡ {m} (a , Ha) (b , Hb) H i =
30+
(H i , hcomp (λ j λ { (i = i0) Ha
31+
; (i = i1) isProp<ᵗ {b}{m} (transp (λ j H j <ᵗ m) i0 Ha) Hb j })
32+
(transp (λ j H (i ∧ j) <ᵗ m) (~ i) Ha))
33+
2834
fsuc-injectSuc : {m : ℕ} (n : Fin m)
2935
injectSuc {n = suc m} (fsuc {n = m} n) ≡ fsuc (injectSuc n)
3036
fsuc-injectSuc {m = suc m} (x , p) = refl

0 commit comments

Comments
 (0)