Lemma PullbackArrowUnique {a b c d : C} (f : b --> a) (g : c --> a) (p1 : d --> b) (p2 : d --> c) (H : p1 · f = p2 · g) (P : isPullback f g p1 p2 H) e (h : e --> b) (k : e --> c) (Hcomm : h · f = k · g) (w : e --> d) (H1 : w · p1 = h) (H2 : w · p2 = k) : w = (pr1 (pr1 (P e h k Hcomm))). Proof. set (T := tpair (fun hk : e --> d => dirprod (hk · p1 = h)(hk · p2 = k)) w (make_dirprod H1 H2)). set (T' := pr2 (P e h k Hcomm) T). exact (base_paths _ _ T'). Qed.
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.