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
57open import Level
8+ open import Function using (_$_)
69
710open import Algebra.Structures
811open import Algebra.Bundles
912import Algebra.Properties.AbelianGroup as AbGroupₚ renaming (⁻¹-injective to -‿injective)
1013open 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
0 commit comments