@@ -91,22 +91,32 @@ Section BiproductSwap.
9191
9292 (** Swapping components of a biproduct morphism. *)
9393 Lemma biproduct_prod_swap (A B : object C) (f g : morphism C A B)
94- : biproduct_prod_mor (semiadditive_biproduct B B) A g f
94+ : biproduct_prod_mor (semiadditive_biproduct B B) A g f
9595 = (biproduct_swap B o biproduct_prod_mor (semiadditive_biproduct B B) A f g)%morphism.
9696 Proof .
97- symmetry; rapply biproduct_prod_unique; rewrite <- Category.Core.associativity; unfold biproduct_swap;
98- [rewrite biproduct_prod_beta_l; rapply biproduct_prod_beta_r | rewrite biproduct_prod_beta_r; rapply biproduct_prod_beta_l].
97+ symmetry.
98+ rapply biproduct_prod_unique.
99+ - rewrite <- Category.Core.associativity.
100+ unfold biproduct_swap.
101+ rewrite biproduct_prod_beta_l.
102+ rapply biproduct_prod_beta_r.
103+ - rewrite <- Category.Core.associativity.
104+ unfold biproduct_swap.
105+ rewrite biproduct_prod_beta_r.
106+ rapply biproduct_prod_beta_l.
99107 Qed .
100108
101109 (** Swap composed with left injection gives right injection. *)
102110 Lemma swap_inl (Y : object C)
103111 : (biproduct_swap Y o Biproducts.inl (biproduct_data (semiadditive_biproduct Y Y)))%morphism
104112 = Biproducts.inr (biproduct_data (semiadditive_biproduct Y Y)).
105113 Proof .
106- unfold biproduct_swap; rewrite biproduct_prod_comp;
107- rewrite (beta_l (biproduct_is (semiadditive_biproduct Y Y))),
108- (mixed_r (biproduct_is (semiadditive_biproduct Y Y))),
109- biproduct_prod_zero_l, Category.Core.right_identity;
114+ unfold biproduct_swap.
115+ rewrite biproduct_prod_comp.
116+ rewrite (beta_l (biproduct_is (semiadditive_biproduct Y Y))).
117+ rewrite (mixed_r (biproduct_is (semiadditive_biproduct Y Y))).
118+ rewrite biproduct_prod_zero_l.
119+ rewrite Category.Core.right_identity.
110120 reflexivity.
111121 Qed .
112122
@@ -115,31 +125,42 @@ Section BiproductSwap.
115125 : (biproduct_swap Y o Biproducts.inr (biproduct_data (semiadditive_biproduct Y Y)))%morphism
116126 = Biproducts.inl (biproduct_data (semiadditive_biproduct Y Y)).
117127 Proof .
118- unfold biproduct_swap; rewrite biproduct_prod_comp;
119- rewrite (mixed_l (biproduct_is (semiadditive_biproduct Y Y))),
120- (beta_r (biproduct_is (semiadditive_biproduct Y Y))),
121- biproduct_prod_zero_r, Category.Core.right_identity;
128+ unfold biproduct_swap.
129+ rewrite biproduct_prod_comp.
130+ rewrite (mixed_l (biproduct_is (semiadditive_biproduct Y Y))).
131+ rewrite (beta_r (biproduct_is (semiadditive_biproduct Y Y))).
132+ rewrite biproduct_prod_zero_r.
133+ rewrite Category.Core.right_identity.
122134 reflexivity.
123135 Qed .
124136
125137 (** The codiagonal is invariant under swapping. *)
126138 Lemma codiagonal_swap_invariant (Y : object C)
127- : (biproduct_coprod_mor (semiadditive_biproduct Y Y) Y 1%morphism 1%morphism o biproduct_swap Y)%morphism
139+ : (biproduct_coprod_mor (semiadditive_biproduct Y Y) Y 1%morphism 1%morphism o biproduct_swap Y)%morphism
128140 = biproduct_coprod_mor (semiadditive_biproduct Y Y) Y 1%morphism 1%morphism.
129141 Proof .
130- rapply (biproduct_coprod_unique (semiadditive_biproduct Y Y)); rewrite Category.Core.associativity;
131- [rewrite swap_inl; rapply biproduct_coprod_beta_r | rewrite swap_inr; rapply biproduct_coprod_beta_l].
142+ rapply (biproduct_coprod_unique (semiadditive_biproduct Y Y)).
143+ - rewrite Category.Core.associativity.
144+ rewrite swap_inl.
145+ rapply biproduct_coprod_beta_r.
146+ - rewrite Category.Core.associativity.
147+ rewrite swap_inr.
148+ rapply biproduct_coprod_beta_l.
132149 Qed .
133150
134151End BiproductSwap.
135152
136153(** ** Commutativity of morphism addition *)
137154
138- Theorem morphism_addition_commutative (C : SemiAdditiveCategory)
139- (X Y : object C) : Commutative (@sgop_morphism C X Y).
155+ Theorem morphism_addition_commutative (C : SemiAdditiveCategory)
156+ (X Y : object C)
157+ : Commutative (@sgop_morphism C X Y).
140158 Proof .
141- intros f g; unfold sgop_morphism;
142- rewrite (biproduct_prod_swap C X Y f g), <- Category.Core.associativity, codiagonal_swap_invariant;
159+ intros f g.
160+ unfold sgop_morphism.
161+ rewrite (biproduct_prod_swap C X Y f g).
162+ rewrite <- Category.Core.associativity.
163+ rewrite codiagonal_swap_invariant.
143164 reflexivity.
144165 Qed .
145166
@@ -149,13 +170,17 @@ Section Associativity.
149170 Context (C : SemiAdditiveCategory).
150171
151172 Lemma codiagonal_postcompose_any (Y Y' : object C) (a : morphism C Y Y')
152- : (a o biproduct_coprod_mor (semiadditive_biproduct Y Y) Y
173+ : (a o biproduct_coprod_mor (semiadditive_biproduct Y Y) Y
153174 1%morphism 1%morphism)%morphism
154175 = biproduct_coprod_mor (semiadditive_biproduct Y Y) Y' a a.
155176 Proof .
156- rapply (biproduct_coprod_unique (semiadditive_biproduct Y Y) Y' a a);
157- rewrite Category.Core.associativity;
158- [rewrite biproduct_coprod_beta_l | rewrite biproduct_coprod_beta_r]; rapply Category.Core.right_identity.
177+ rapply (biproduct_coprod_unique (semiadditive_biproduct Y Y) Y' a a).
178+ - rewrite Category.Core.associativity.
179+ rewrite biproduct_coprod_beta_l.
180+ rapply Category.Core.right_identity.
181+ - rewrite Category.Core.associativity.
182+ rewrite biproduct_coprod_beta_r.
183+ rapply Category.Core.right_identity.
159184 Qed .
160185
161186 Lemma addition_precompose
@@ -177,10 +202,18 @@ Section Associativity.
177202 (a o outr (biproduct_data (semiadditive_biproduct Y Y)))
178203 o biproduct_prod_mor (semiadditive_biproduct Y Y) X f g)%morphism.
179204 Proof .
180- symmetry; rapply biproduct_prod_unique;
181- (rewrite <- Category.Core.associativity, biproduct_prod_beta_l, Category.Core.associativity, biproduct_prod_beta_l
182- || rewrite <- Category.Core.associativity, biproduct_prod_beta_r, Category.Core.associativity, biproduct_prod_beta_r);
183- reflexivity.
205+ symmetry.
206+ rapply biproduct_prod_unique.
207+ - rewrite <- Category.Core.associativity.
208+ rewrite biproduct_prod_beta_l.
209+ rewrite Category.Core.associativity.
210+ rewrite biproduct_prod_beta_l.
211+ reflexivity.
212+ - rewrite <- Category.Core.associativity.
213+ rewrite biproduct_prod_beta_r.
214+ rewrite Category.Core.associativity.
215+ rewrite biproduct_prod_beta_r.
216+ reflexivity.
184217 Qed .
185218
186219 Lemma codiagonal_pair_inl (Y Y' : object C) (a b : morphism C Y Y')
@@ -191,9 +224,14 @@ Section Associativity.
191224 o Biproducts.inl (biproduct_data (semiadditive_biproduct Y Y))))%morphism
192225 = a.
193226 Proof .
194- rewrite <- Category.Core.associativity, addition_precompose.
195- rewrite Category.Core.associativity, (beta_l (biproduct_is (semiadditive_biproduct Y Y))), Category.Core.right_identity.
196- rewrite Category.Core.associativity, (mixed_r (biproduct_is (semiadditive_biproduct Y Y))), zero_morphism_right.
227+ rewrite <- Category.Core.associativity.
228+ rewrite addition_precompose.
229+ rewrite Category.Core.associativity.
230+ rewrite (beta_l (biproduct_is (semiadditive_biproduct Y Y))).
231+ rewrite Category.Core.right_identity.
232+ rewrite Category.Core.associativity.
233+ rewrite (mixed_r (biproduct_is (semiadditive_biproduct Y Y))).
234+ rewrite zero_morphism_right.
197235 apply zero_right_identity.
198236 Qed .
199237
@@ -205,9 +243,14 @@ Section Associativity.
205243 o Biproducts.inr (biproduct_data (semiadditive_biproduct Y Y))))%morphism
206244 = b.
207245 Proof .
208- rewrite <- Category.Core.associativity, addition_precompose.
209- rewrite Category.Core.associativity, (mixed_l (biproduct_is (semiadditive_biproduct Y Y))), zero_morphism_right.
210- rewrite Category.Core.associativity, (beta_r (biproduct_is (semiadditive_biproduct Y Y))), Category.Core.right_identity.
246+ rewrite <- Category.Core.associativity.
247+ rewrite addition_precompose.
248+ rewrite Category.Core.associativity.
249+ rewrite (mixed_l (biproduct_is (semiadditive_biproduct Y Y))).
250+ rewrite zero_morphism_right.
251+ rewrite Category.Core.associativity.
252+ rewrite (beta_r (biproduct_is (semiadditive_biproduct Y Y))).
253+ rewrite Category.Core.right_identity.
211254 apply zero_left_identity.
212255 Qed .
213256
@@ -218,9 +261,11 @@ Section Associativity.
218261 (b o outr (biproduct_data (semiadditive_biproduct Y Y))))%morphism
219262 = biproduct_coprod_mor (semiadditive_biproduct Y Y) Y' a b.
220263 Proof .
221- rapply (biproduct_coprod_unique (semiadditive_biproduct Y Y) Y' a b);
222- rewrite Category.Core.associativity;
223- [rapply codiagonal_pair_inl | rapply codiagonal_pair_inr].
264+ rapply (biproduct_coprod_unique (semiadditive_biproduct Y Y) Y' a b).
265+ - rewrite Category.Core.associativity.
266+ rapply codiagonal_pair_inl.
267+ - rewrite Category.Core.associativity.
268+ rapply codiagonal_pair_inr.
224269 Qed .
225270
226271 Lemma addition_postcompose
@@ -245,9 +290,15 @@ Section Associativity.
245290 (sgop_morphism C X Y f1 f2)
246291 (sgop_morphism C X Y g1 g2).
247292 Proof .
248- rapply biproduct_prod_unique;
249- rewrite ?addition_postcompose, ?biproduct_prod_beta_l, ?biproduct_prod_beta_r;
250- reflexivity.
293+ rapply biproduct_prod_unique.
294+ - rewrite addition_postcompose.
295+ rewrite biproduct_prod_beta_l.
296+ rewrite biproduct_prod_beta_l.
297+ reflexivity.
298+ - rewrite addition_postcompose.
299+ rewrite biproduct_prod_beta_r.
300+ rewrite biproduct_prod_beta_r.
301+ reflexivity.
251302 Qed .
252303
253304 Theorem morphism_addition_associative
0 commit comments