Proposition preserves_equalizer_from_pullback_terminal_map_unique : isaprop (∑ φ, φ · # F (EqualizerArrow (eqC x y f g)) = h). Proof. use invproofirrelevance. intros φ₁ φ₂. use subtypePath. { intro. apply homset_property. } use (MorphismsIntoPullbackEqual (isPullback_Pullback FP)). - cbn. enough (pr1 φ₁ · # F (PullbackPr1 P) · #F Δ = pr1 φ₂ · # F (PullbackPr1 P) · #F Δ) as help_mono. { pose (maponpaths (λ z, z · BinProductPr1 D Fyy) help_mono) as lem. cbn in lem. rewrite !assoc' in lem. rewrite <- !functor_comp in lem. rewrite !PullbackArrow_PullbackPr1 in lem. rewrite !id_right in lem. exact lem. } rewrite !assoc'. rewrite <- !functor_comp. rewrite (PullbackSqrCommutes P). rewrite !functor_comp. rewrite !assoc. apply maponpaths_2. exact (pr2 φ₁ @ !(pr2 φ₂)). - exact (pr2 φ₁ @ !(pr2 φ₂)). Qed.
Require Import UniMath.Foundations.All. Require Import UniMath.MoreFoundations.All. Require Import UniMath.CategoryTheory.Core.Categories. Require Import UniMath.CategoryTheory.Core.Functors. Require Import UniMath.CategoryTheory.Core.NaturalTransformations. Require Import UniMath.CategoryTheory.Core.Isos. Require Import UniMath.CategoryTheory.Limits.Terminal. Require Import UniMath.CategoryTheory.Limits.BinProducts. Require Import UniMath.CategoryTheory.Limits.Equalizers. Require Import UniMath.CategoryTheory.Limits.Pullbacks. Require Import UniMath.CategoryTheory.Limits.Initial. Require Import UniMath.CategoryTheory.Limits.BinCoproducts. Require Import UniMath.CategoryTheory.Limits.PullbackConstructions. Require Import UniMath.CategoryTheory.Limits.Preservation. Require Import UniMath.CategoryTheory.Limits.EquivalencePreservation. Require Import UniMath.CategoryTheory.Limits.LimitIso. Require Import UniMath.CategoryTheory.Adjunctions.Core. Require Import UniMath.CategoryTheory.Equivalences.Core. Require Import UniMath.CategoryTheory.Equivalences.CompositesAndInverses. Require Import UniMath.CategoryTheory.whiskering. Let prodC : BinProducts C := BinProductsFromPullbacks PBC TC.