proposition: Lemma is_left_adjoint_slicecat_to_cat (BPC : BinProducts C) : is_left_adjoint slicecat_to_cat.
proof: Proof. exists (cat_to_slicecat BPC). use make_are_adjoints. + use make_nat_trans. * simpl; intros F. exists (BinProductArrow _ _ (pr2 F) (identity _)); simpl. abstract (rewrite BinProductPr1Commutes; apply idpath). * intros Y Z F; apply eq_mor_slicecat; simpl. rewrite postcompWithBinProductArrow. apply BinProductArrowUnique. - rewrite <- assoc, BinProductPr1Commutes, id_right, (pr2 F); apply idpath. - rewrite <- assoc, BinProductPr2Commutes, id_left, id_right; apply idpath. + use make_nat_trans. * intros Y. apply BinProductPr2. * abstract ( intros Y Z f; apply BinProductOfArrowsPr2 ). + split. * intros Y; cbn. rewrite BinProductPr2Commutes; apply idpath. * intros Y; apply eq_mor_slicecat; cbn. rewrite postcompWithBinProductArrow. apply pathsinv0, BinProductArrowUnique; trivial. rewrite id_right, id_left; apply idpath. Defined.
imports: UniMath.Foundations.PartD UniMath.Foundations.Propositions UniMath.Foundations.Sets UniMath.MoreFoundations.Tactics UniMath.MoreFoundations.Univalence UniMath.CategoryTheory.Core.Categories UniMath.CategoryTheory.Core.Isos UniMath.CategoryTheory.Core.NaturalTransformations UniMath.CategoryTheory.Core.Univalence UniMath.CategoryTheory.FunctorCategory UniMath.CategoryTheory.Core.Functors UniMath.CategoryTheory.Limits.Graphs.Limits UniMath.CategoryTheory.Limits.Graphs.Colimits UniMath.CategoryTheory.Limits.Pullbacks UniMath.CategoryTheory.Limits.BinProducts UniMath.CategoryTheory.Limits.BinCoproducts UniMath.CategoryTheory.Limits.Coproducts UniMath.CategoryTheory.Limits.Initial UniMath.CategoryTheory.Limits.Terminal UniMath.CategoryTheory.Adjunctions.Core UniMath.CategoryTheory.exponentials UniMath.CategoryTheory.Monics UniMath.CategoryTheory.Epis