4747 intros [f g]. exact (ab_biprod_rec f g).
4848Defined .
4949
50- Proposition ab_biprod_rec_beta' {A B Y : AbGroup}
50+ Proposition ab_biprod_rec_eta {A B Y : AbGroup}
5151 (u : ab_biprod A B $-> Y)
5252 : ab_biprod_rec (u $o ab_biprod_inl) (u $o ab_biprod_inr) == u.
5353Proof .
@@ -58,29 +58,19 @@ Proof.
5858 - exact (left_identity b).
5959Defined .
6060
61- Proposition ab_biprod_rec_beta `{Funext} {A B Y : AbGroup}
62- (u : ab_biprod A B $-> Y)
63- : ab_biprod_rec (u $o ab_biprod_inl) (u $o ab_biprod_inr) = u.
64- Proof .
65- apply equiv_path_grouphomomorphism.
66- exact (ab_biprod_rec_beta' u).
67- Defined .
68-
69- Proposition ab_biprod_rec_inl_beta `{Funext} {A B Y : AbGroup}
61+ Proposition ab_biprod_rec_inl_beta {A B Y : AbGroup}
7062 (a : A $-> Y) (b : B $-> Y)
71- : (ab_biprod_rec a b) $o ab_biprod_inl = a.
63+ : (ab_biprod_rec a b) $o ab_biprod_inl == a.
7264Proof .
73- apply equiv_path_grouphomomorphism.
7465 intro x; simpl.
7566 rewrite (grp_homo_unit b).
7667 exact (right_identity (a x)).
7768Defined .
7869
79- Proposition ab_biprod_rec_inr_beta `{Funext} {A B Y : AbGroup}
70+ Proposition ab_biprod_rec_inr_beta {A B Y : AbGroup}
8071 (a : A $-> Y) (b : B $-> Y)
81- : (ab_biprod_rec a b) $o ab_biprod_inr = b.
72+ : (ab_biprod_rec a b) $o ab_biprod_inr == b.
8273Proof .
83- apply equiv_path_grouphomomorphism.
8474 intro y; simpl.
8575 rewrite (grp_homo_unit a).
8676 exact (left_identity (b y)).
@@ -93,19 +83,22 @@ Proof.
9383 - intro phi.
9484 exact (phi $o ab_biprod_inl, phi $o ab_biprod_inr).
9585 - intro phi.
96- exact (ab_biprod_rec_beta phi).
86+ apply equiv_path_grouphomomorphism.
87+ exact (ab_biprod_rec_eta phi).
9788 - intros [a b].
9889 apply path_prod.
99- + apply ab_biprod_rec_inl_beta.
100- + apply ab_biprod_rec_inr_beta.
90+ + apply equiv_path_grouphomomorphism.
91+ apply ab_biprod_rec_inl_beta.
92+ + apply equiv_path_grouphomomorphism.
93+ apply ab_biprod_rec_inr_beta.
10194Defined .
10295
10396(** Corecursion principle, inherited from Groups/Group.v. *)
10497Definition ab_biprod_corec {A B X : AbGroup} (f : X $-> A) (g : X $-> B)
10598 : X $-> ab_biprod A B
10699 := grp_prod_corec f g.
107100
108- Definition ab_corec_beta {X Y A B : AbGroup} (f : X $-> Y) (g0 : Y $-> A) (g1 : Y $-> B)
101+ Definition ab_corec_eta {X Y A B : AbGroup} (f : X $-> Y) (g0 : Y $-> A) (g1 : Y $-> B)
109102 : ab_biprod_corec g0 g1 $o f $== ab_biprod_corec (g0 $o f) (g1 $o f)
110103 := fun _ => idpath.
111104
@@ -190,17 +183,26 @@ Proof.
190183 - exact (left_identity _)^.
191184Defined .
192185
186+ Lemma ab_biprod_corec_eta' {A B X : AbGroup} (f g : ab_biprod A B $-> X)
187+ : (f $o ab_biprod_inl $== g $o ab_biprod_inl)
188+ -> (f $o ab_biprod_inr $== g $o ab_biprod_inr)
189+ -> f $== g.
190+ Proof .
191+ intros h k.
192+ intros [a b].
193+ refine (ap f (ab_biprod_decompose _ _) @ _ @ ap g (ab_biprod_decompose _ _)^).
194+ refine (grp_homo_op _ _ _ @ _ @ (grp_homo_op _ _ _)^).
195+ exact (ap011 (+) (h a) (k b)).
196+ Defined .
197+
193198(* Maps out of biproducts are determined on the two inclusions. *)
194199Lemma equiv_path_biprod_corec `{Funext} {A B X : AbGroup} (phi psi : ab_biprod A B $-> X)
195200 : ((phi $o ab_biprod_inl == psi $o ab_biprod_inl) * (phi $o ab_biprod_inr == psi $o ab_biprod_inr))
196201 <~> phi == psi.
197202Proof .
198203 apply equiv_iff_hprop.
199204 - intros [h k].
200- intros [a b].
201- refine (ap phi (ab_biprod_decompose _ _) @ _ @ ap psi (ab_biprod_decompose _ _)^).
202- refine (grp_homo_op _ _ _ @ _ @ (grp_homo_op _ _ _)^).
203- exact (ap011 (+) (h a) (k b)).
205+ apply ab_biprod_corec_eta'; assumption.
204206 - intro h.
205207 exact (fun a => h _, fun b => h _).
206208Defined .
0 commit comments