@@ -17,7 +17,7 @@ Set Implicit Arguments.
17
17
Class isBiproduct
18
18
(C : Cat) {A B : Ob C}
19
19
(P : Ob C) (outl : Hom P A) (outr : Hom P B) (finl : Hom A P) (finr : Hom B P)
20
- (fpair : forall {X : Ob C} (f : Hom X A) (g : Hom X B), Hom X P)
20
+ (fpair : forall {X : Ob C} (f : Hom X A) (g : Hom X B), Hom X P)
21
21
(copair : forall {X : Ob C} (f : Hom A X) (g : Hom B X), Hom P X)
22
22
: Prop :=
23
23
{
@@ -56,17 +56,36 @@ Class HasBiproducts' (C : Cat) : Type :=
56
56
binl : forall {A B : Ob C}, Hom A (biproduct A B);
57
57
binr : forall {A B : Ob C}, Hom B (biproduct A B);
58
58
bicopair : forall {A B : Ob C} {P : Ob C} (f : Hom A P) (g : Hom B P), Hom (biproduct A B) P;
59
-
60
59
isCoproduct_HasBiproducts :>
61
60
forall {A B : Ob C}, isCoproduct C (@biproduct A B) binl binr (@bicopair A B);
62
61
62
+ binl_bioutl :
63
+ forall {A B : Ob C},
64
+ @binl A B .> bioutl == id A;
65
+ binr_bioutr :
66
+ forall {A B : Ob C},
67
+ @binr A B .> bioutr == id B;
68
+
63
69
HasBiproducts'_ok :
64
70
forall {A B : Ob C},
65
71
@bioutl A B .> @binl A B .> @bioutr A B .> @binr A B
66
72
==
67
73
bioutr .> binr .> bioutl .> binl;
68
74
}.
69
-
75
+
76
+ Definition zero {C : Cat} {hb : HasBiproducts' C} {A B : Ob C} : Hom A B :=
77
+ @binl _ _ A B .> bioutr.
78
+
79
+ Definition bidiag {C : Cat} {hp : HasBiproducts' C} {A : Ob C} : Hom A (biproduct A A) :=
80
+ bipair (id A) (id A).
81
+
82
+ Definition bicodiag {C : Cat} {hp : HasBiproducts' C} {A : Ob C} : Hom (biproduct A A) A :=
83
+ bicopair (id A) (id A).
84
+
85
+ Definition biadd
86
+ {C : Cat} {hb : HasBiproducts' C}
87
+ {A B : Ob C} (f g : Hom A B) : Hom A B :=
88
+ bipair f g .> bicodiag.
70
89
71
90
Section BiproductIdentities.
72
91
@@ -75,20 +94,16 @@ Context
75
94
(hb : HasBiproducts' C)
76
95
(A B : Ob C).
77
96
78
- Lemma binl_bioutl :
79
- @binl _ _ A B .> bioutl == id A.
80
- Proof .
81
- Admitted .
82
-
83
- Lemma binr_bioutr :
84
- @binr _ _ A B .> bioutr == id B.
85
- Proof .
86
- Admitted .
87
-
88
97
Lemma binl_bioutr :
89
98
forall {X : Ob C} (f : Hom B X),
90
99
@binl _ _ A B .> bioutr .> f == @binl _ _ A X .> bioutr.
91
100
Proof .
101
+ intros.
102
+ (* assert (
103
+ bioutr .> binr .> bioutl .> @binl _ _ A B .> bioutr .> f
104
+ ==
105
+ bioutr .> binr .> bioutl .> @binl _ _ A X .> bioutr).
106
+ ). *)
92
107
Admitted .
93
108
94
109
Lemma binl_bioutr' :
@@ -107,10 +122,63 @@ Lemma binr_bioutl' :
107
122
forall {X : Ob C} (f : Hom X B),
108
123
f .> @binr _ _ A B .> bioutl == @binr _ _ A X .> bioutl.
109
124
Proof .
125
+ intros.
126
+ assert (H1 : isConstant (@binr _ _ A B .> bioutl)) by admit.
127
+ assert (H2 : isCoconstant (@binr _ _ A B .> bioutl)) by admit.
128
+ unfold isConstant, isCoconstant in H1, H2.
110
129
Admitted .
111
130
112
131
End BiproductIdentities.
113
132
133
+ Section MoreBiproductIdentities.
134
+
135
+ Context
136
+ (C : Cat)
137
+ (hb : HasBiproducts' C)
138
+ (A B : Ob C).
139
+
140
+ Lemma binl_bipair :
141
+ forall {A' B' : Ob C} (f : Hom A A') (g : Hom B B'),
142
+ binl .> bipair (bioutl .> f) (bioutr .> g) == f .> binl.
143
+ Proof .
144
+ intros.
145
+ rewrite equiv_product', !comp_assoc, fpair_outl, fpair_outr.
146
+ rewrite binl_bioutl, <- !comp_assoc, binl_bioutl, comp_id_l, comp_id_r.
147
+ now rewrite binl_bioutr, binl_bioutr'.
148
+ Qed .
149
+
150
+ Lemma binr_bipair :
151
+ forall {A' B' : Ob C} (f : Hom A A') (g : Hom B B'),
152
+ binr .> bipair (bioutl .> f) (bioutr .> g) == g .> binr.
153
+ Proof .
154
+ intros.
155
+ rewrite equiv_product', !comp_assoc, fpair_outl, fpair_outr.
156
+ rewrite binr_bioutr, <- !comp_assoc, binr_bioutr, comp_id_l, comp_id_r.
157
+ now rewrite binr_bioutl, binr_bioutl'.
158
+ Qed .
159
+
160
+ Lemma bicopair_bioutl :
161
+ forall {A' B' : Ob C} (f : Hom A A') (g : Hom B B'),
162
+ bicopair (f .> binl) (g .> binr) .> bioutl == bioutl .> f.
163
+ Proof .
164
+ intros.
165
+ rewrite equiv_coproduct', <- !comp_assoc, finl_copair, finr_copair.
166
+ rewrite binr_bioutl, binr_bioutl'.
167
+ now rewrite binl_bioutl, comp_assoc, binl_bioutl, comp_id_l, comp_id_r.
168
+ Defined .
169
+
170
+ Lemma bicopair_bioutr :
171
+ forall {A' B' : Ob C} (f : Hom A A') (g : Hom B B'),
172
+ bicopair (f .> binl) (g .> binr) .> bioutr == bioutr .> g.
173
+ Proof .
174
+ intros.
175
+ rewrite equiv_coproduct', <- !comp_assoc, finl_copair, finr_copair.
176
+ rewrite binl_bioutr, binl_bioutr'.
177
+ now rewrite binr_bioutr, comp_assoc, binr_bioutr, comp_id_l, comp_id_r.
178
+ Defined .
179
+
180
+ End MoreBiproductIdentities.
181
+
114
182
#[refine]
115
183
#[export]
116
184
Instance BiproductBifunctor' {C : Cat} {hp : HasBiproducts' C} : Bifunctor C C C :=
0 commit comments