proposition: Lemma inv_of_ff_inv_is_inv (C D : precategory) (F : functor C D) (FF : fully_faithful F) (a b : C) (f : z_iso (F a) (F b)) : is_inverse_in_precat ((FF ^-1) f) ((FF ^-1) (inv_from_z_iso f)).
proof: Proof. unfold fully_faithful_inv_hom; simpl. split. apply (invmaponpathsweq (weq_from_fully_faithful FF a a)). set (HFFab := homotweqinvweq (weq_from_fully_faithful FF a b)). set (HFFba := homotweqinvweq (weq_from_fully_faithful FF b a)). simpl in *. rewrite functor_comp. rewrite HFFab; clear HFFab. rewrite HFFba; clear HFFba. rewrite functor_id. apply z_iso_inv_after_z_iso. apply (invmaponpathsweq (weq_from_fully_faithful FF b b)). set (HFFab := homotweqinvweq (weq_from_fully_faithful FF a b)). set (HFFba := homotweqinvweq (weq_from_fully_faithful FF b a)). simpl in *. rewrite functor_comp. rewrite HFFab. rewrite HFFba. rewrite functor_id. apply z_iso_after_z_iso_inv. Qed.
imports: UniMath.Foundations.PartD UniMath.Foundations.Propositions UniMath.Foundations.Sets UniMath.MoreFoundations.PartA UniMath.MoreFoundations.Univalence UniMath.MoreFoundations.Tactics UniMath.CategoryTheory.Core.Categories UniMath.CategoryTheory.Core.Isos UniMath.CategoryTheory.Core.TransportMorphisms UniMath.CategoryTheory.Core.Univalence