Generalizable All Variables.
-Require Import Preamble.
-Require Import General.
+Require Import Notations.
Require Import Categories_ch1_3.
Require Import Functors_ch1_4.
Defined.
(* the composition of two isomorphisms is an isomorphism *)
-Definition id_comp `{C:Category}{a b c:C}(i1:Isomorphic a b)(i2:Isomorphic b c) : Isomorphic a c.
+Definition iso_comp `{C:Category}{a b c:C}(i1:Isomorphic a b)(i2:Isomorphic b c) : Isomorphic a c.
intros; apply (@Build_Isomorphic _ _ C a c (#i1 >>> #i2) (#i2⁻¹ >>> #i1⁻¹));
setoid_rewrite juggle3;
[ setoid_rewrite (iso_comp1 i2) | setoid_rewrite (iso_comp2 i1) ];
symmetry.
apply right_identity.
Qed.
+
+Lemma isos_forward_equal_then_backward_equal `{C:Category}{a}{b}(i1 i2:a ≅ b) : #i1 ~~ #i2 -> #i1⁻¹ ~~ #i2⁻¹.
+ intro H.
+ setoid_rewrite <- left_identity at 1.
+ setoid_rewrite <- (iso_comp2 i2).
+ setoid_rewrite associativity.
+ setoid_rewrite <- H.
+ setoid_rewrite iso_comp1.
+ setoid_rewrite right_identity.
+ reflexivity.
+ Qed.
+
+Lemma iso_inv_inv `{C:Category}{a}{b}(i:a ≅ b) : #(i⁻¹)⁻¹ ~~ #i.
+ unfold iso_inv; simpl.
+ reflexivity.
+ Qed.