Skip to content

Commit ad98503

Browse files
committed
More Preadditive Properties
1 parent 86de9ef commit ad98503

File tree

2 files changed

+92
-36
lines changed

2 files changed

+92
-36
lines changed

src/Categories/Category/Preadditive.agda

Lines changed: 86 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,44 +1,50 @@
11
{-# OPTIONS --without-K --safe #-}
22

3-
module Categories.Category.Preadditive where
3+
open import Categories.Category
4+
5+
module Categories.Category.Preadditive {o ℓ e} (𝒞 : Category o ℓ e) where
46

57
open import Level
8+
open import Function using (_$_)
69

710
open import Algebra.Structures
811
open import Algebra.Bundles
912
import Algebra.Properties.AbelianGroup as AbGroupₚ renaming (⁻¹-injective to -‿injective)
1013
open import Algebra.Core
1114

12-
open import Categories.Category
15+
open import Categories.Morphism.Reasoning 𝒞
1316

14-
import Categories.Morphism.Reasoning as MR
17+
open Category 𝒞
18+
open HomReasoning
1519

20+
private
21+
variable
22+
A B C D X : Obj
23+
f g h : A ⇒ B
1624

17-
record Preadditive {o ℓ e} (𝒞 : Category o ℓ e) : Set (o ⊔ ℓ ⊔ e) where
18-
open Category 𝒞
19-
open HomReasoning
20-
open MR 𝒞
25+
record Preadditive : Set (o ⊔ ℓ ⊔ e) where
2126

2227
infixl 7 _+_
2328
infixl 6 _-_
29+
infix 8 -_
2430

2531
field
2632
_+_ : {A B} Op₂ (A ⇒ B)
2733
0H : {A B} A ⇒ B
28-
neg : {A B} Op₁ (A ⇒ B)
29-
HomIsAbGroup : (A B : Obj) IsAbelianGroup (_≈_ {A} {B}) _+_ 0H neg
34+
-_ : {A B} Op₁ (A ⇒ B)
35+
HomIsAbGroup : (A B : Obj) IsAbelianGroup (_≈_ {A} {B}) _+_ 0H -_
3036
+-resp-∘ : {A B C D} {f g : B ⇒ C} {h : A ⇒ B} {k : C ⇒ D} k ∘ (f + g) ∘ h ≈ (k ∘ f ∘ h) + (k ∘ g ∘ h)
3137

3238
_-_ : {A B} Op₂ (A ⇒ B)
33-
f - g = f + neg g
39+
f - g = f + - g
3440

3541
HomAbGroup : (A B : Obj) AbelianGroup ℓ e
3642
HomAbGroup A B = record
3743
{ Carrier = A ⇒ B
3844
; _≈_ = _≈_
3945
; _∙_ = _+_
4046
; ε = 0H
41-
; _⁻¹ = neg
47+
; _⁻¹ = -_
4248
; isAbelianGroup = HomIsAbGroup A B
4349
}
4450

@@ -59,46 +65,100 @@ record Preadditive {o ℓ e} (𝒞 : Category o ℓ e) : Set (o ⊔ ℓ ⊔ e) w
5965
module HomAbGroupₚ {A B : Obj} = AbGroupₚ (HomAbGroup A B)
6066

6167
open HomAbGroup public
68+
open HomAbGroupₚ public
69+
70+
--------------------------------------------------------------------------------
71+
-- Reasoning Combinators
72+
73+
+-elimˡ : f ≈ 0H f + g ≈ g
74+
+-elimˡ {f = f} {g = g} eq = +-congʳ eq ○ +-identityˡ g
75+
76+
+-introˡ : f ≈ 0H g ≈ f + g
77+
+-introˡ eq = ⟺ (+-elimˡ eq)
6278

63-
+-resp-∘ˡ : {A B C} {f g : A ⇒ B} {h : B ⇒ C} h ∘ (f + g) ≈ (h ∘ f) + (h ∘ g)
79+
+-elimʳ : g ≈ 0H f + g ≈ f
80+
+-elimʳ {g = g} {f = f} eq = +-congˡ eq ○ +-identityʳ f
81+
82+
+-introʳ : g ≈ 0H f ≈ f + g
83+
+-introʳ eq = ⟺ (+-elimʳ eq)
84+
85+
--------------------------------------------------------------------------------
86+
-- Properties of _+_
87+
88+
+-resp-∘ˡ : {f g : A ⇒ B} {h : B ⇒ C} h ∘ (f + g) ≈ (h ∘ f) + (h ∘ g)
6489
+-resp-∘ˡ {f = f} {g = g} {h = h} = begin
6590
h ∘ (f + g) ≈˘⟨ ∘-resp-≈ʳ identityʳ ⟩
6691
h ∘ (f + g) ∘ id ≈⟨ +-resp-∘ ⟩
6792
h ∘ f ∘ id + h ∘ g ∘ id ≈⟨ +-cong (∘-resp-≈ʳ identityʳ) (∘-resp-≈ʳ identityʳ) ⟩
6893
h ∘ f + h ∘ g ∎
6994

70-
+-resp-∘ʳ : {A B C} {h : A ⇒ B} {f g : B ⇒ C} (f + g) ∘ h ≈ (f ∘ h) + (g ∘ h)
95+
+-resp-∘ʳ : {h : A ⇒ B} {f g : B ⇒ C} (f + g) ∘ h ≈ (f ∘ h) + (g ∘ h)
7196
+-resp-∘ʳ {h = h} {f = f} {g = g} = begin
7297
(f + g) ∘ h ≈˘⟨ identityˡ ⟩
7398
id ∘ (f + g) ∘ h ≈⟨ +-resp-∘ ⟩
7499
id ∘ f ∘ h + id ∘ g ∘ h ≈⟨ +-cong identityˡ identityˡ ⟩
75-
f ∘ h + g ∘ h ∎
100+
f ∘ h + g ∘ h
76101

77-
0-resp-∘ : {A B C D} {f : C ⇒ D} {g : A ⇒ B} f ∘ 0H {B} {C} ∘ g ≈ 0H
102+
--------------------------------------------------------------------------------
103+
-- Properties of 0
104+
105+
0-resp-∘ : {f : C ⇒ D} {g : A ⇒ B} f ∘ 0H {B} {C} ∘ g ≈ 0H
78106
0-resp-∘ {f = f} {g = g} = begin
79107
f ∘ 0H ∘ g ≈˘⟨ +-identityʳ (f ∘ 0H ∘ g) ⟩
80108
(f ∘ 0H ∘ g + 0H) ≈˘⟨ +-congˡ (-‿inverseʳ (f ∘ 0H ∘ g)) ⟩
81-
(f ∘ 0H ∘ g) + ((f ∘ 0H ∘ g) - (f ∘ 0H ∘ g)) ≈˘⟨ +-assoc (f ∘ 0H ∘ g) (f ∘ 0H ∘ g) (neg (f ∘ 0H ∘ g)) ⟩
109+
(f ∘ 0H ∘ g) + ((f ∘ 0H ∘ g) - (f ∘ 0H ∘ g)) ≈˘⟨ +-assoc (f ∘ 0H ∘ g) (f ∘ 0H ∘ g) (- (f ∘ 0H ∘ g)) ⟩
82110
(f ∘ 0H ∘ g) + (f ∘ 0H ∘ g) - (f ∘ 0H ∘ g) ≈˘⟨ +-congʳ +-resp-∘ ⟩
83111
(f ∘ (0H + 0H) ∘ g) - (f ∘ 0H ∘ g) ≈⟨ +-congʳ (refl⟩∘⟨ +-identityʳ 0H ⟩∘⟨refl) ⟩
84112
(f ∘ 0H ∘ g) - (f ∘ 0H ∘ g) ≈⟨ -‿inverseʳ (f ∘ 0H ∘ g) ⟩
85-
0H ∎
113+
0H
86114

87115
0-resp-∘ˡ : {A B C} {f : A ⇒ B} 0H ∘ f ≈ 0H {A} {C}
88116
0-resp-∘ˡ {f = f} = begin
89117
0H ∘ f ≈˘⟨ identityˡ ⟩
90118
id ∘ 0H ∘ f ≈⟨ 0-resp-∘ ⟩
91-
0H ∎
119+
0H
92120

93-
0-resp-∘ʳ : {A B C} {f : B ⇒ C} f ∘ 0H ≈ 0H {A} {C}
121+
0-resp-∘ʳ : f ∘ 0H ≈ 0H {A} {C}
94122
0-resp-∘ʳ {f = f} = begin
95123
f ∘ 0H ≈˘⟨ refl⟩∘⟨ identityʳ ⟩
96124
f ∘ 0H ∘ id ≈⟨ 0-resp-∘ ⟩
97-
0H ∎
98-
99-
-- Some helpful reasoning combinators
100-
+-elimˡ : {X Y} {f g : X ⇒ Y} f ≈ 0H f + g ≈ g
101-
+-elimˡ {f = f} {g = g} eq = +-congʳ eq ○ +-identityˡ g
125+
0H ∎
126+
127+
--------------------------------------------------------------------------------
128+
-- Properties of -_
129+
130+
-‿resp-∘ : f ∘ (- g) ∘ h ≈ - (f ∘ g ∘ h)
131+
-‿resp-∘ {f = f} {g = g} {h = h} = inverseˡ-unique (f ∘ (- g) ∘ h) (f ∘ g ∘ h) $ begin
132+
(f ∘ (- g) ∘ h) + (f ∘ g ∘ h) ≈˘⟨ +-resp-∘ ⟩
133+
f ∘ (- g + g) ∘ h ≈⟨ refl⟩∘⟨ -‿inverseˡ g ⟩∘⟨refl ⟩
134+
f ∘ 0H ∘ h ≈⟨ 0-resp-∘ ⟩
135+
0H ∎
136+
137+
-‿resp-∘ˡ : (- f) ∘ g ≈ - (f ∘ g)
138+
-‿resp-∘ˡ {f = f} {g = g} = begin
139+
(- f) ∘ g ≈˘⟨ identityˡ ⟩
140+
id ∘ (- f) ∘ g ≈⟨ -‿resp-∘ ⟩
141+
- (id ∘ f ∘ g) ≈⟨ -‿cong identityˡ ⟩
142+
- (f ∘ g) ∎
143+
144+
-‿resp-∘ʳ : f ∘ (- g) ≈ - (f ∘ g)
145+
-‿resp-∘ʳ {f = f} {g = g} = begin
146+
f ∘ (- g) ≈˘⟨ refl⟩∘⟨ identityʳ ⟩
147+
f ∘ (- g) ∘ id ≈⟨ -‿resp-∘ ⟩
148+
- (f ∘ g ∘ id) ≈⟨ -‿cong (refl⟩∘⟨ identityʳ) ⟩
149+
- (f ∘ g) ∎
150+
151+
-‿idˡ : (- id) ∘ f ≈ - f
152+
-‿idˡ {f = f} = begin
153+
(- id) ∘ f ≈˘⟨ identityˡ ⟩
154+
id ∘ (- id) ∘ f ≈⟨ -‿resp-∘ ⟩
155+
- (id ∘ id ∘ f) ≈⟨ -‿cong (identityˡ ○ identityˡ) ⟩
156+
- f ∎
157+
158+
neg-id-∘ʳ : f ∘ (- id) ≈ - f
159+
neg-id-∘ʳ {f = f} = begin
160+
f ∘ (- id) ≈˘⟨ refl⟩∘⟨ identityʳ ⟩
161+
f ∘ (- id) ∘ id ≈⟨ -‿resp-∘ ⟩
162+
- (f ∘ id ∘ id) ≈⟨ -‿cong (pullˡ identityʳ ○ identityʳ) ⟩
163+
- f ∎
102164

103-
+-elimʳ : {X Y} {f g : X ⇒ Y} g ≈ 0H f + g ≈ f
104-
+-elimʳ {f = f} {g = g} eq = +-congˡ eq ○ +-identityʳ f

src/Categories/Category/Preadditive/Properties.agda

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -84,10 +84,8 @@ module _ {o ℓ e} {𝒞 : Category o ℓ e} (preadditive : Preadditive 𝒞) wh
8484
; π₂∘i₂≈id = project₂
8585
; permute = begin
8686
⟨ id , 0H ⟩ ∘ π₁ ∘ ⟨ 0H , id ⟩ ∘ π₂ ≈⟨ pull-center project₁ ⟩
87-
⟨ id , 0H ⟩ ∘ 0H ∘ π₂ ≈⟨ pullˡ 0-resp-∘ʳ ⟩
88-
0H ∘ π₂ ≈⟨ 0-resp-∘ˡ ⟩
89-
0H ≈˘⟨ 0-resp-∘ˡ ⟩
90-
0H ∘ π₁ ≈⟨ pushˡ (⟺ 0-resp-∘ʳ) ⟩
87+
⟨ id , 0H ⟩ ∘ 0H ∘ π₂ ≈⟨ 0-resp-∘ ⟩
88+
0H ≈˘⟨ 0-resp-∘ ⟩
9189
⟨ 0H , id ⟩ ∘ 0H ∘ π₁ ≈⟨ push-center project₂ ⟩
9290
⟨ 0H , id ⟩ ∘ π₂ ∘ ⟨ id , 0H ⟩ ∘ π₁ ∎
9391
}
@@ -143,10 +141,8 @@ module _ {o ℓ e} {𝒞 : Category o ℓ e} (preadditive : Preadditive 𝒞) wh
143141
; π₂∘i₂≈id = inject₂
144142
; permute = begin
145143
i₁ ∘ [ id , 0H ] ∘ i₂ ∘ [ 0H , id ] ≈⟨ pull-center inject₂ ⟩
146-
i₁ ∘ 0H ∘ [ 0H , id ] ≈⟨ pullˡ 0-resp-∘ʳ ⟩
147-
0H ∘ [ 0H , id ] ≈⟨ 0-resp-∘ˡ ⟩
148-
0H ≈˘⟨ 0-resp-∘ˡ ⟩
149-
0H ∘ [ id , 0H ] ≈⟨ pushˡ (⟺ 0-resp-∘ʳ) ⟩
144+
i₁ ∘ 0H ∘ [ 0H , id ] ≈⟨ 0-resp-∘ ⟩
145+
0H ≈˘⟨ 0-resp-∘ ⟩
150146
i₂ ∘ 0H ∘ [ id , 0H ] ≈⟨ push-center inject₁ ⟩
151147
i₂ ∘ [ 0H , id ] ∘ i₁ ∘ [ id , 0H ] ∎
152148
}
@@ -231,7 +227,7 @@ module _ {o ℓ e} {𝒞 : Category o ℓ e} (preadditive : Preadditive 𝒞) wh
231227
p₁∘i₂≈0 = begin
232228
p₁ ∘ i₂ ≈˘⟨ +-identityʳ (p₁ ∘ i₂) ⟩
233229
p₁ ∘ i₂ + 0H ≈˘⟨ +-congˡ (-‿inverseʳ (p₁ ∘ i₂)) ⟩
234-
p₁ ∘ i₂ + (p₁ ∘ i₂ - p₁ ∘ i₂) ≈˘⟨ +-assoc (p₁ ∘ i₂) (p₁ ∘ i₂) (neg (p₁ ∘ i₂)) ⟩
230+
p₁ ∘ i₂ + (p₁ ∘ i₂ - p₁ ∘ i₂) ≈˘⟨ +-assoc (p₁ ∘ i₂) (p₁ ∘ i₂) (- (p₁ ∘ i₂)) ⟩
235231
(p₁ ∘ i₂) + (p₁ ∘ i₂) - p₁ ∘ i₂ ≈⟨ +-congʳ (+-cong (intro-first p₁∘i₁≈id) (intro-last p₂∘i₂≈id)) ⟩
236232
(p₁ ∘ (i₁ ∘ p₁) ∘ i₂) + (p₁ ∘ (i₂ ∘ p₂) ∘ i₂) - (p₁ ∘ i₂) ≈˘⟨ +-congʳ +-resp-∘ ⟩
237233
(p₁ ∘ (i₁ ∘ p₁ + i₂ ∘ p₂) ∘ i₂) - (p₁ ∘ i₂) ≈⟨ +-congʳ (elim-center +-eq) ⟩
@@ -242,7 +238,7 @@ module _ {o ℓ e} {𝒞 : Category o ℓ e} (preadditive : Preadditive 𝒞) wh
242238
p₂∘i₁≈0 = begin
243239
(p₂ ∘ i₁) ≈˘⟨ +-identityʳ (p₂ ∘ i₁) ⟩
244240
p₂ ∘ i₁ + 0H ≈˘⟨ +-congˡ (-‿inverseʳ (p₂ ∘ i₁)) ⟩
245-
(p₂ ∘ i₁) + (p₂ ∘ i₁ - p₂ ∘ i₁) ≈˘⟨ +-assoc (p₂ ∘ i₁) (p₂ ∘ i₁) (neg (p₂ ∘ i₁)) ⟩
241+
(p₂ ∘ i₁) + (p₂ ∘ i₁ - p₂ ∘ i₁) ≈˘⟨ +-assoc (p₂ ∘ i₁) (p₂ ∘ i₁) (- (p₂ ∘ i₁)) ⟩
246242
(p₂ ∘ i₁) + (p₂ ∘ i₁) - (p₂ ∘ i₁) ≈⟨ +-congʳ (+-cong (intro-last p₁∘i₁≈id) (intro-first p₂∘i₂≈id)) ⟩
247243
(p₂ ∘ (i₁ ∘ p₁) ∘ i₁) + (p₂ ∘ (i₂ ∘ p₂) ∘ i₁) - (p₂ ∘ i₁) ≈˘⟨ +-congʳ +-resp-∘ ⟩
248244
(p₂ ∘ (i₁ ∘ p₁ + i₂ ∘ p₂) ∘ i₁) - (p₂ ∘ i₁) ≈⟨ +-congʳ (elim-center +-eq) ⟩

0 commit comments

Comments
 (0)