Lemma is_symmetric_isPullback : isPullback H -> isPullback (!H). Proof. intro isPb. use make_isPullback. intros e x y Hxy. set (Pb := make_Pullback _ isPb). use tpair. - use tpair. + use (PullbackArrow Pb). * assumption. * assumption. * abstract (apply (!Hxy)). + abstract (split; [apply (PullbackArrow_PullbackPr2 Pb) | apply (PullbackArrow_PullbackPr1 Pb)]). - abstract (intro t; apply subtypePath; [intro; apply isapropdirprod; apply C | destruct t as [t Ht]; cbn; apply PullbackArrowUnique; [apply (pr2 Ht) | apply (pr1 Ht)]]). 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.