proposition: Theorem PowerObject_functor_isfunctor : is_functor PowerObject_functor_data.
proof: 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.
imports: UniMath.Foundations.PartA UniMath.Foundations.PartD UniMath.CategoryTheory.Core.Categories UniMath.CategoryTheory.Core.Functors UniMath.CategoryTheory.Core.Isos UniMath.CategoryTheory.Core.NaturalTransformations UniMath.CategoryTheory.Limits.Terminal UniMath.CategoryTheory.Limits.BinProducts UniMath.CategoryTheory.SubobjectClassifier UniMath.CategoryTheory.opp_precat UniMath.CategoryTheory.whiskering UniMath.CategoryTheory.PrecategoryBinProduct UniMath.CategoryTheory.OppositeCategory.Core UniMath.CategoryTheory.Categories.HSET.Core UniMath.CategoryTheory.exponentials UniMath.CategoryTheory.Adjunctions.Core