Lemma pb_if_pointwise_pb : (∏ x, isPullback (Hcommx x)) -> isPullback Hcomm. Proof. intro T. use make_isPullback; intros E h k Hhk. use unique_exists. - use tpair. + intro x; apply (g T E h k Hhk). + apply is_nat_trans_g. - abstract (split; apply (nat_trans_eq D); intro x; [ apply (PullbackArrow_PullbackPr1 (make_Pullback (T x))) | apply (PullbackArrow_PullbackPr2 (make_Pullback (T x))) ]). - abstract (intro; apply isapropdirprod; apply functor_category_has_homsets). - abstract (intros t [h1 h2]; destruct h as [h Hh]; apply (nat_trans_eq D); intro x; apply PullbackArrowUnique; [ apply (nat_trans_eq_pointwise h1) | apply (nat_trans_eq_pointwise h2) ]). Defined.
Require Import UniMath.Foundations.All. Require Import UniMath.MoreFoundations.All. Require Import UniMath.CategoryTheory.Core.Categories. Require Import UniMath.CategoryTheory.Core.Isos. Require Import UniMath.CategoryTheory.Core.NaturalTransformations. Require Import UniMath.CategoryTheory.Core.TransportMorphisms. Require Import UniMath.CategoryTheory.Core.Univalence. Require Import UniMath.CategoryTheory.Core.Functors. Require Import UniMath.CategoryTheory.Limits.Terminal. Require Import UniMath.CategoryTheory.Limits.BinProducts. Require Import UniMath.CategoryTheory.Limits.Equalizers. Require Import UniMath.CategoryTheory.FunctorCategory. Require Import UniMath.CategoryTheory.Monics. Definition UnivProductFromPullback (c d a : C) (f : a --> c) (g : a --> d): exists (UnivProductFromPullback c d a f g). Definition BinProductsFromPullbacks : BinProducts C := BinProduct_Pullback.