Theorem PowerObject_functor_isfunctor : is_functor PowerObject_functor_data. Proof. split. + intro b. use pathsinv0. use path_to_ctr. apply idpath. + unfold functor_compax. intros c b a h h'. cbn in c, b, a, h, h'. cbn. use pathsinv0. use path_to_ctr. cbn. unfold construction. rewrite <-BinProductOfArrows_idxcomp, <-(BinProductOfArrows_compxid), assoc'. fold (construction h). rewrite (PowerObject_transpose_tri (construction h)), assoc. rewrite BinProductOfArrows_comp, (id_right h'), <-(id_left h'), (id_left (PowerObject_transpose _)), <-(id_right (PowerObject_transpose _)), <-BinProductOfArrows_comp, !assoc', id_left, id_right. fold (construction h'). rewrite (PowerObject_transpose_tri (construction h')), !assoc. rewrite <-(PowerObject_transpose_tri (construction h')), <-(PowerObject_transpose_tri (construction h)). apply idpath. Qed.
Require Import UniMath.Foundations.PartA. Require Import UniMath.Foundations.PartD. 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.Limits.Terminal. Require Import UniMath.CategoryTheory.Limits.BinProducts. Require Import UniMath.CategoryTheory.SubobjectClassifier.SubobjectClassifier. Require Import UniMath.CategoryTheory.opp_precat. Require Import UniMath.CategoryTheory.whiskering. Require Import UniMath.CategoryTheory.PrecategoryBinProduct. Require Import UniMath.CategoryTheory.OppositeCategory.Core. Require Import UniMath.CategoryTheory.Categories.HSET.Core. Require Import UniMath.CategoryTheory.exponentials. Require Import UniMath.CategoryTheory.Adjunctions.Core.