Lemma is_right_adjoint_post_composition_functor : is_right_adjoint (post_composition_functor C D E F). Proof. exists (post_composition_functor _ _ _ G). use tpair. - split. + use make_nat_trans. * simpl; intros F'. simpl in F'. apply (nat_trans_comp _ _ _ (nat_trans_comp _ _ _ (nat_trans_functor_id_right_inv F') (pre_whisker F' η)) (nat_trans_functor_assoc_inv _ _ _)). * abstract (intros F1 F2 α; apply (nat_trans_eq E); intro c; simpl in *; now rewrite !id_right, !id_left; apply (nat_trans_ax η (F1 c) _ (α c))). + use make_nat_trans. * simpl; intros F'. simpl in F'. apply (nat_trans_comp _ _ _ (nat_trans_functor_assoc _ _ _) (nat_trans_comp _ _ _ (pre_whisker F' ε) (nat_trans_functor_id_left _))). * abstract (intros F1 F2 α; apply (nat_trans_eq D); intro c; simpl in *; now rewrite !id_right, !id_left; apply (nat_trans_ax ε _ _ (α c))). - abstract (split; simpl; intro F'; [ apply (nat_trans_eq D); simpl; intro c; now rewrite !id_right, !id_left; apply H2 | apply (nat_trans_eq E); simpl; intro c; now rewrite !id_left, !id_right; apply H1]). Defined.
Require Import UniMath.Foundations.All. Require Import UniMath.MoreFoundations.All. Require Import UniMath.CategoryTheory.Core.Categories. Require Import UniMath.CategoryTheory.Core.Functors. Require Import UniMath.CategoryTheory.Core.Isos. Require Import UniMath.CategoryTheory.Core.NaturalTransformations. Require Import UniMath.CategoryTheory.Epis. Require Import UniMath.CategoryTheory.Epis. Require Import UniMath.CategoryTheory.SplitMonicsAndEpis. Require Import UniMath.CategoryTheory.Monics. Require Import UniMath.CategoryTheory.FunctorCategory. Require Import UniMath.CategoryTheory.whiskering. Section HomSetIsoRightFromPartial. End HomSetIsoRightFromPartial. Section HomSetIsoLeftFromPartial. End HomSetIsoLeftFromPartial.