proposition: Lemma PEq_isEpi {c d : ob A} (f : c --> d) : isEpi f <-> (∏ (b : PseudoElem d), PFiber f b).
proof: Proof. split. - intros isE b. set (E := make_Epi _ _ isE). set (Pb := Abelian.Pullbacks A _ _ _ E b). set (isEpi1 := AbelianPullbackEpi2 E b Pb). set (E2 := make_Epi A _ isEpi1). use (make_PFiber _ _ (make_PseudoElem (PullbackPr1 Pb))). use make_PEq. + exact Pb. + exact E2. + use identity_Epi. + cbn. rewrite id_left. exact (! PullbackSqrCommutes Pb). - intros H. set (fib := H (make_PseudoElem (identity _))). set (P1 := PFiber_Elem fib). set (e := PEqEq (PFiber_Eq fib)). use isEpi_precomp. + exact (PEqOb (PFiber_Eq fib)). + exact (PEqEpi2 (PFiber_Eq fib) · P1). + cbn in e. rewrite id_right in e. rewrite assoc in e. use (isEpi_path A _ _ e). apply EpiisEpi. Qed.
imports: UniMath.Foundations.PartD UniMath.Foundations.Propositions UniMath.Foundations.Sets UniMath.Algebra.BinaryOperations UniMath.Algebra.Monoids UniMath.CategoryTheory.Limits.Zero UniMath.CategoryTheory.Limits.Pushouts UniMath.CategoryTheory.Limits.Pullbacks UniMath.CategoryTheory.Limits.Equalizers UniMath.CategoryTheory.Limits.Coequalizers UniMath.CategoryTheory.Limits.Opp UniMath.CategoryTheory.Core.Categories UniMath.CategoryTheory.Core.Isos UniMath.CategoryTheory.opp_precat UniMath.CategoryTheory.Morphisms UniMath.CategoryTheory.CategoriesWithBinOps UniMath.CategoryTheory.PrecategoriesWithAbgrops UniMath.CategoryTheory.PreAdditive UniMath.CategoryTheory.Additive UniMath.CategoryTheory.Abelian UniMath.CategoryTheory.AbelianToAdditive UniMath.CategoryTheory.AbelianPushoutPullback UniMath.CategoryTheory.ShortExactSequences UniMath.CategoryTheory.Monics UniMath.CategoryTheory.Epis UniMath.CategoryTheory.Limits.Kernels UniMath.CategoryTheory.Limits.Cokernels UniMath.CategoryTheory.Limits.BinDirectSums