ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
-- CategoryTheory.Limits.Concrete.Pi.map_ext
lemma Pi.map_ext (x y : F.obj (∏ᶜ f : C))
    (h : ∀ i, F.map (Pi.π f i) x = F.map (Pi.π f i) y) : x = y 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] {J : Type w} (f : J → C) [CategoryTheory.Limits.HasProduct f] {D : Type t} [CategoryTheory.Category.{r, t} D] [CategoryTheory.ConcreteCategory D] (F : CategoryTheory.Functor C D) [CategoryTheory.Limits.PreservesLimit (CategoryTheory.Discrete.functor f) F] [CategoryTheory.Limits.HasProduct fun j => F.obj (f j)] [CategoryTheory.Limits.PreservesLimitsOfShape CategoryTheory.Limits.WalkingCospan (CategoryTheory.forget D)] [CategoryTheory.Limits.PreservesLimit (CategoryTheory.Discrete.functor fun b => F.obj (f b)) (CategoryTheory.forget D)] (x y : (CategoryTheory.forget D).obj (F.obj (∏ᶜ f))) (h : ∀ (i : J), (F.map (CategoryTheory.Limits.Pi.π f i)) x = (F.map (CategoryTheory.Limits.Pi.π f i)) y)
Goal: x = y
-- CategoryTheory.Limits.Concrete.empty_of_initial_of_preserves
lemma empty_of_initial_of_preserves [PreservesColimit (Functor.empty.{0} C) (forget C)] (X : C)
    (h : Nonempty (IsInitial X)) : IsEmpty ((forget C).obj X) 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.ConcreteCategory C] [CategoryTheory.Limits.PreservesColimit (CategoryTheory.Functor.empty C) (CategoryTheory.forget C)] (X : C) (h : Nonempty (CategoryTheory.Limits.IsInitial X))
Goal: IsEmpty ((CategoryTheory.forget C).obj X)
-- CategoryTheory.Limits.Concrete.initial_of_empty_of_reflects
lemma initial_of_empty_of_reflects [ReflectsColimit (Functor.empty.{0} C) (forget C)] (X : C)
    (h : IsEmpty ((forget C).obj X)) : Nonempty (IsInitial X) 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.ConcreteCategory C] [CategoryTheory.Limits.ReflectsColimit (CategoryTheory.Functor.empty C) (CategoryTheory.forget C)] (X : C) (h : IsEmpty ((CategoryTheory.forget C).obj X))
Goal: Nonempty (CategoryTheory.Limits.IsInitial X)
-- CategoryTheory.Limits.Concrete.initial_iff_empty_of_preserves_of_reflects
lemma initial_iff_empty_of_preserves_of_reflects [PreservesColimit (Functor.empty.{0} C) (forget C)]
    [ReflectsColimit (Functor.empty.{0} C) (forget C)] (X : C) :
    Nonempty (IsInitial X) ↔ IsEmpty ((forget C).obj X) 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.ConcreteCategory C] [CategoryTheory.Limits.PreservesColimit (CategoryTheory.Functor.empty C) (CategoryTheory.forget C)] [CategoryTheory.Limits.ReflectsColimit (CategoryTheory.Functor.empty C) (CategoryTheory.forget C)] (X : C)
Goal: Nonempty (CategoryTheory.Limits.IsInitial X) ↔ IsEmpty ((CategoryTheory.forget C).obj X)
-- CategoryTheory.Limits.Concrete.prodEquiv_apply_fst
@[simp]
lemma prodEquiv_apply_fst (x : (forget C).obj (X₁ ⨯ X₂)) :
    (prodEquiv X₁ X₂ x).fst = (Limits.prod.fst : X₁ ⨯ X₂ ⟶ X₁) x 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.ConcreteCategory C] (X₁ X₂ : C) [CategoryTheory.Limits.HasBinaryProduct X₁ X₂] [CategoryTheory.Limits.PreservesLimit (CategoryTheory.Limits.pair X₁ X₂) (CategoryTheory.forget C)] (x : (CategoryTheory.forget C).obj (X₁ ⨯ X₂))
Goal: ((CategoryTheory.Limits.Concrete.prodEquiv X₁ X₂) x).1 = CategoryTheory.Limits.prod.fst x
-- CategoryTheory.Limits.Concrete.prodEquiv_apply_snd
@[simp]
lemma prodEquiv_apply_snd (x : (forget C).obj (X₁ ⨯ X₂)) :
    (prodEquiv X₁ X₂ x).snd = (Limits.prod.snd : X₁ ⨯ X₂ ⟶ X₂) x 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.ConcreteCategory C] (X₁ X₂ : C) [CategoryTheory.Limits.HasBinaryProduct X₁ X₂] [CategoryTheory.Limits.PreservesLimit (CategoryTheory.Limits.pair X₁ X₂) (CategoryTheory.forget C)] (x : (CategoryTheory.forget C).obj (X₁ ⨯ X₂))
Goal: ((CategoryTheory.Limits.Concrete.prodEquiv X₁ X₂) x).2 = CategoryTheory.Limits.prod.snd x
-- CategoryTheory.Limits.Concrete.prodEquiv_symm_apply_fst
@[simp]
lemma prodEquiv_symm_apply_fst (x : X₁ × X₂) :
    (Limits.prod.fst : X₁ ⨯ X₂ ⟶ X₁) ((prodEquiv X₁ X₂).symm x) = x.1 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.ConcreteCategory C] (X₁ X₂ : C) [CategoryTheory.Limits.HasBinaryProduct X₁ X₂] [CategoryTheory.Limits.PreservesLimit (CategoryTheory.Limits.pair X₁ X₂) (CategoryTheory.forget C)] (x : (CategoryTheory.forget C).obj X₁ × (CategoryTheory.forget C).obj X₂)
Goal: CategoryTheory.Limits.prod.fst ((CategoryTheory.Limits.Concrete.prodEquiv X₁ X₂).symm x) = x.1
-- CategoryTheory.Limits.Concrete.prodEquiv_symm_apply_snd
@[simp]
lemma prodEquiv_symm_apply_snd (x : X₁ × X₂) :
    (Limits.prod.snd : X₁ ⨯ X₂ ⟶ X₂) ((prodEquiv X₁ X₂).symm x) = x.2 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.ConcreteCategory C] (X₁ X₂ : C) [CategoryTheory.Limits.HasBinaryProduct X₁ X₂] [CategoryTheory.Limits.PreservesLimit (CategoryTheory.Limits.pair X₁ X₂) (CategoryTheory.forget C)] (x : (CategoryTheory.forget C).obj X₁ × (CategoryTheory.forget C).obj X₂)
Goal: CategoryTheory.Limits.prod.snd ((CategoryTheory.Limits.Concrete.prodEquiv X₁ X₂).symm x) = x.2
-- CategoryTheory.Limits.Concrete.pullbackMk_surjective
lemma pullbackMk_surjective (x : (forget C).obj (pullback f₁ f₂)) :
    ∃ (x₁ : X₁) (x₂ : X₂) (h : f₁ x₁ = f₂ x₂), x = pullbackMk f₁ f₂ x₁ x₂ h 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.ConcreteCategory C] {X₁ X₂ S : C} (f₁ : X₁ ⟶ S) (f₂ : X₂ ⟶ S) [CategoryTheory.Limits.HasPullback f₁ f₂] [CategoryTheory.Limits.PreservesLimit (CategoryTheory.Limits.cospan f₁ f₂) (CategoryTheory.forget C)] (x : (CategoryTheory.forget C).obj (CategoryTheory.Limits.pullback f₁ f₂))
Goal: ∃ x₁ x₂, ∃ (h : f₁ x₁ = f₂ x₂), x = CategoryTheory.Limits.Concrete.pullbackMk f₁ f₂ x₁ x₂ h
-- CategoryTheory.Limits.Concrete.pullbackMk_fst
@[simp]
lemma pullbackMk_fst (x₁ : X₁) (x₂ : X₂) (h : f₁ x₁ = f₂ x₂) :
    pullback.fst f₁ f₂ (pullbackMk f₁ f₂ x₁ x₂ h) = x₁ 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.ConcreteCategory C] {X₁ X₂ S : C} (f₁ : X₁ ⟶ S) (f₂ : X₂ ⟶ S) [CategoryTheory.Limits.HasPullback f₁ f₂] [CategoryTheory.Limits.PreservesLimit (CategoryTheory.Limits.cospan f₁ f₂) (CategoryTheory.forget C)] (x₁ : (CategoryTheory.forget C).obj X₁) (x₂ : (CategoryTheory.forget C).obj X₂) (h : f₁ x₁ = f₂ x₂)
Goal: (CategoryTheory.Limits.pullback.fst f₁ f₂) (CategoryTheory.Limits.Concrete.pullbackMk f₁ f₂ x₁ x₂ h) = x₁
-- CategoryTheory.Limits.Concrete.pullbackMk_snd
@[simp]
lemma pullbackMk_snd (x₁ : X₁) (x₂ : X₂) (h : f₁ x₁ = f₂ x₂) :
    pullback.snd f₁ f₂ (pullbackMk f₁ f₂ x₁ x₂ h) = x₂ 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.ConcreteCategory C] {X₁ X₂ S : C} (f₁ : X₁ ⟶ S) (f₂ : X₂ ⟶ S) [CategoryTheory.Limits.HasPullback f₁ f₂] [CategoryTheory.Limits.PreservesLimit (CategoryTheory.Limits.cospan f₁ f₂) (CategoryTheory.forget C)] (x₁ : (CategoryTheory.forget C).obj X₁) (x₂ : (CategoryTheory.forget C).obj X₂) (h : f₁ x₁ = f₂ x₂)
Goal: (CategoryTheory.Limits.pullback.snd f₁ f₂) (CategoryTheory.Limits.Concrete.pullbackMk f₁ f₂ x₁ x₂ h) = x₂
-- CategoryTheory.Limits.Concrete.widePullback_ext
theorem widePullback_ext {B : C} {ι : Type w} {X : ι → C} (f : ∀ j : ι, X j ⟶ B)
    [HasWidePullback B X f] [PreservesLimit (wideCospan B X f) (forget C)]
    (x y : ↑(widePullback B X f)) (h₀ : base f x = base f y) (h : ∀ j, π f j x = π f j y) :
    x = y 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.ConcreteCategory C] {B : C} {ι : Type w} {X : ι → C} (f : (j : ι) → X j ⟶ B) [CategoryTheory.Limits.HasWidePullback B X f] [CategoryTheory.Limits.PreservesLimit (CategoryTheory.Limits.WidePullbackShape.wideCospan B X f)
    (CategoryTheory.forget C)] (x y : (CategoryTheory.forget C).obj (CategoryTheory.Limits.widePullback B X f)) (h₀ : (CategoryTheory.Limits.WidePullback.base f) x = (CategoryTheory.Limits.WidePullback.base f) y) (h : ∀ (j : ι), (CategoryTheory.Limits.WidePullback.π f j) x = (CategoryTheory.Limits.WidePullback.π f j) y)
Goal: x = y
-- CategoryTheory.Limits.Concrete.widePullback_ext'
theorem widePullback_ext' {B : C} {ι : Type w} [Nonempty ι] {X : ι → C}
    (f : ∀ j : ι, X j ⟶ B) [HasWidePullback.{w} B X f]
    [PreservesLimit (wideCospan B X f) (forget C)] (x y : ↑(widePullback B X f))
    (h : ∀ j, π f j x = π f j y) : x = y 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.ConcreteCategory C] {B : C} {ι : Type w} [Nonempty ι] {X : ι → C} (f : (j : ι) → X j ⟶ B) [CategoryTheory.Limits.HasWidePullback B X f] [CategoryTheory.Limits.PreservesLimit (CategoryTheory.Limits.WidePullbackShape.wideCospan B X f)
    (CategoryTheory.forget C)] (x y : (CategoryTheory.forget C).obj (CategoryTheory.Limits.widePullback B X f)) (h : ∀ (j : ι), (CategoryTheory.Limits.WidePullback.π f j) x = (CategoryTheory.Limits.WidePullback.π f j) y)
Goal: x = y
-- CategoryTheory.Limits.Concrete.multiequalizer_ext
theorem multiequalizer_ext {I : MulticospanIndex.{w} C} [HasMultiequalizer I]
    [PreservesLimit I.multicospan (forget C)] (x y : ↑(multiequalizer I))
    (h : ∀ t : I.L, Multiequalizer.ι I t x = Multiequalizer.ι I t y) : x = y 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.ConcreteCategory C] {I : CategoryTheory.Limits.MulticospanIndex C} [CategoryTheory.Limits.HasMultiequalizer I] [CategoryTheory.Limits.PreservesLimit I.multicospan (CategoryTheory.forget C)] (x y : (CategoryTheory.forget C).obj (CategoryTheory.Limits.multiequalizer I)) (h : ∀ (t : I.L), (CategoryTheory.Limits.Multiequalizer.ι I t) x = (CategoryTheory.Limits.Multiequalizer.ι I t) y)
Goal: x = y
-- CategoryTheory.Limits.Concrete.multiequalizerEquiv_apply
@[simp]
theorem multiequalizerEquiv_apply (I : MulticospanIndex.{w} C) [HasMultiequalizer I]
    [PreservesLimit I.multicospan (forget C)] (x : ↑(multiequalizer I)) (i : I.L) :
    ((Concrete.multiequalizerEquiv I) x : ∀ i : I.L, I.left i) i = Multiequalizer.ι I i x 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.ConcreteCategory C] (I : CategoryTheory.Limits.MulticospanIndex C) [CategoryTheory.Limits.HasMultiequalizer I] [CategoryTheory.Limits.PreservesLimit I.multicospan (CategoryTheory.forget C)] (x : (CategoryTheory.forget C).obj (CategoryTheory.Limits.multiequalizer I)) (i : I.L)
Goal: ↑((CategoryTheory.Limits.Concrete.multiequalizerEquiv I) x) i = (CategoryTheory.Limits.Multiequalizer.ι I i) x
-- CategoryTheory.Limits.Concrete.widePushout_exists_rep
theorem widePushout_exists_rep {B : C} {α : Type _} {X : α → C} (f : ∀ j : α, B ⟶ X j)
    [HasWidePushout.{v} B X f] [PreservesColimit (wideSpan B X f) (forget C)]
    (x : ↑(widePushout B X f)) : (∃ y : B, head f y = x) ∨ ∃ (i : α) (y : X i), ι f i y = x 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.ConcreteCategory C] {B : C} {α : Type v} {X : α → C} (f : (j : α) → B ⟶ X j) [CategoryTheory.Limits.HasWidePushout B X f] [CategoryTheory.Limits.PreservesColimit (CategoryTheory.Limits.WidePushoutShape.wideSpan B X f)
    (CategoryTheory.forget C)] (x : (CategoryTheory.forget C).obj (CategoryTheory.Limits.widePushout B X f))
Goal: (∃ y, (CategoryTheory.Limits.WidePushout.head f) y = x) ∨ ∃ i y, (CategoryTheory.Limits.WidePushout.ι f i) y = x
-- CategoryTheory.Limits.Concrete.widePushout_exists_rep'
theorem widePushout_exists_rep' {B : C} {α : Type _} [Nonempty α] {X : α → C}
    (f : ∀ j : α, B ⟶ X j) [HasWidePushout.{v} B X f] [PreservesColimit (wideSpan B X f) (forget C)]
    (x : ↑(widePushout B X f)) : ∃ (i : α) (y : X i), ι f i y = x 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.ConcreteCategory C] {B : C} {α : Type v} [Nonempty α] {X : α → C} (f : (j : α) → B ⟶ X j) [CategoryTheory.Limits.HasWidePushout B X f] [CategoryTheory.Limits.PreservesColimit (CategoryTheory.Limits.WidePushoutShape.wideSpan B X f)
    (CategoryTheory.forget C)] (x : (CategoryTheory.forget C).obj (CategoryTheory.Limits.widePushout B X f))
Goal: ∃ i y, (CategoryTheory.Limits.WidePushout.ι f i) y = x
-- CategoryTheory.Limits.Concrete.cokernel_funext
theorem cokernel_funext {C : Type*} [Category C] [HasZeroMorphisms C] [ConcreteCategory C]
    {M N K : C} {f : M ⟶ N} [HasCokernel f] {g h : cokernel f ⟶ K}
    (w : ∀ n : N, g (cokernel.π f n) = h (cokernel.π f n)) : g = h 
Arguments: {C : Type u_1} [CategoryTheory.Category.{u_2, u_1} C] [CategoryTheory.Limits.HasZeroMorphisms C] [CategoryTheory.ConcreteCategory C] {M N K : C} {f : M ⟶ N} [CategoryTheory.Limits.HasCokernel f] {g h : CategoryTheory.Limits.cokernel f ⟶ K} (w :
  ∀ (n : (CategoryTheory.forget C).obj N),
    g ((CategoryTheory.Limits.cokernel.π f) n) = h ((CategoryTheory.Limits.cokernel.π f) n))
Goal: g = h
-- CategoryTheory.Square.isPullback_iff
lemma isPullback_iff :
    sq.IsPullback ↔ Nonempty (IsLimit sq.pullbackCone) 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] (sq : CategoryTheory.Square C)
Goal: sq.IsPullback ↔ Nonempty (CategoryTheory.Limits.IsLimit sq.pullbackCone)
-- CategoryTheory.Square.isPushout_iff
lemma isPushout_iff :
    sq.IsPushout ↔ Nonempty (IsColimit sq.pushoutCocone) 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] (sq : CategoryTheory.Square C)
Goal: sq.IsPushout ↔ Nonempty (CategoryTheory.Limits.IsColimit sq.pushoutCocone)
-- CategoryTheory.Square.IsPullback.mk
lemma IsPullback.mk (h : IsLimit sq.pullbackCone) : sq.IsPullback 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] (sq : CategoryTheory.Square C) (h : CategoryTheory.Limits.IsLimit sq.pullbackCone)
Goal: sq.IsPullback
-- CategoryTheory.Square.IsPushout.mk
lemma IsPushout.mk (h : IsColimit sq.pushoutCocone) : sq.IsPushout 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] (sq : CategoryTheory.Square C) (h : CategoryTheory.Limits.IsColimit sq.pushoutCocone)
Goal: sq.IsPushout
-- CategoryTheory.Square.IsPullback.of_iso
lemma IsPullback.of_iso {sq₁ sq₂ : Square C} (h : sq₁.IsPullback)
    (e : sq₁ ≅ sq₂) : sq₂.IsPullback 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] {sq₁ sq₂ : CategoryTheory.Square C} (h : sq₁.IsPullback) (e : sq₁ ≅ sq₂)
Goal: sq₂.IsPullback
-- CategoryTheory.Square.IsPullback.iff_of_iso
lemma IsPullback.iff_of_iso {sq₁ sq₂ : Square C} (e : sq₁ ≅ sq₂) :
    sq₁.IsPullback ↔ sq₂.IsPullback 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] {sq₁ sq₂ : CategoryTheory.Square C} (e : sq₁ ≅ sq₂)
Goal: sq₁.IsPullback ↔ sq₂.IsPullback
-- CategoryTheory.Square.IsPushout.of_iso
lemma IsPushout.of_iso {sq₁ sq₂ : Square C} (h : sq₁.IsPushout)
    (e : sq₁ ≅ sq₂) : sq₂.IsPushout 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] {sq₁ sq₂ : CategoryTheory.Square C} (h : sq₁.IsPushout) (e : sq₁ ≅ sq₂)
Goal: sq₂.IsPushout
-- CategoryTheory.Square.IsPushout.iff_of_iso
lemma IsPushout.iff_of_iso {sq₁ sq₂ : Square C} (e : sq₁ ≅ sq₂) :
    sq₁.IsPushout ↔ sq₂.IsPushout 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] {sq₁ sq₂ : CategoryTheory.Square C} (e : sq₁ ≅ sq₂)
Goal: sq₁.IsPushout ↔ sq₂.IsPushout
-- CategoryTheory.Square.IsPushout.op
lemma IsPushout.op {sq : Square C} (h : sq.IsPushout) : sq.op.IsPullback 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] {sq : CategoryTheory.Square C} (h : sq.IsPushout)
Goal: sq.op.IsPullback
-- CategoryTheory.Square.IsPushout.unop
lemma IsPushout.unop {sq : Square Cᵒᵖ} (h : sq.IsPushout) : sq.unop.IsPullback 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] {sq : CategoryTheory.Square Cᵒᵖ} (h : sq.IsPushout)
Goal: sq.unop.IsPullback
-- CategoryTheory.Square.IsPullback.op
lemma IsPullback.op {sq : Square C} (h : sq.IsPullback) : sq.op.IsPushout 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] {sq : CategoryTheory.Square C} (h : sq.IsPullback)
Goal: sq.op.IsPushout
-- CategoryTheory.Square.IsPullback.unop
lemma IsPullback.unop {sq : Square Cᵒᵖ} (h : sq.IsPullback) : sq.unop.IsPushout 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] {sq : CategoryTheory.Square Cᵒᵖ} (h : sq.IsPullback)
Goal: sq.unop.IsPushout
-- CategoryTheory.Limits.pullbackConeOfLeftIso_x
@[simp]
theorem pullbackConeOfLeftIso_x : (pullbackConeOfLeftIso f g).pt = Y 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] {X Y Z : C} (f : X ⟶ Z) (g : Y ⟶ Z) [CategoryTheory.IsIso f]
Goal: (CategoryTheory.Limits.pullbackConeOfLeftIso f g).pt = Y
-- CategoryTheory.Limits.pullbackConeOfLeftIso_fst
@[simp]
theorem pullbackConeOfLeftIso_fst : (pullbackConeOfLeftIso f g).fst = g ≫ inv f 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] {X Y Z : C} (f : X ⟶ Z) (g : Y ⟶ Z) [CategoryTheory.IsIso f]
Goal: (CategoryTheory.Limits.pullbackConeOfLeftIso f g).fst = g ≫ CategoryTheory.inv f
-- CategoryTheory.Limits.pullbackConeOfLeftIso_snd
@[simp]
theorem pullbackConeOfLeftIso_snd : (pullbackConeOfLeftIso f g).snd = 𝟙 _ 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] {X Y Z : C} (f : X ⟶ Z) (g : Y ⟶ Z) [CategoryTheory.IsIso f]
Goal: (CategoryTheory.Limits.pullbackConeOfLeftIso f g).snd = 𝟙 (CategoryTheory.Limits.pullbackConeOfLeftIso f g).pt
-- CategoryTheory.Limits.pullbackConeOfLeftIso_π_app_none
theorem pullbackConeOfLeftIso_π_app_none : (pullbackConeOfLeftIso f g).π.app none = g 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] {X Y Z : C} (f : X ⟶ Z) (g : Y ⟶ Z) [CategoryTheory.IsIso f]
Goal: (CategoryTheory.Limits.pullbackConeOfLeftIso f g).π.app none = g
-- CategoryTheory.Limits.pullbackConeOfLeftIso_π_app_left
@[simp]
theorem pullbackConeOfLeftIso_π_app_left : (pullbackConeOfLeftIso f g).π.app left = g ≫ inv f 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] {X Y Z : C} (f : X ⟶ Z) (g : Y ⟶ Z) [CategoryTheory.IsIso f]
Goal: (CategoryTheory.Limits.pullbackConeOfLeftIso f g).π.app CategoryTheory.Limits.WalkingCospan.left =
  g ≫ CategoryTheory.inv f
-- CategoryTheory.Limits.pullbackConeOfLeftIso_π_app_right
@[simp]
theorem pullbackConeOfLeftIso_π_app_right : (pullbackConeOfLeftIso f g).π.app right = 𝟙 _ 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] {X Y Z : C} (f : X ⟶ Z) (g : Y ⟶ Z) [CategoryTheory.IsIso f]
Goal: (CategoryTheory.Limits.pullbackConeOfLeftIso f g).π.app CategoryTheory.Limits.WalkingCospan.right =
  𝟙
    (((CategoryTheory.Functor.const CategoryTheory.Limits.WalkingCospan).obj
          (CategoryTheory.Limits.pullbackConeOfLeftIso f g).pt).obj
      CategoryTheory.Limits.WalkingCospan.right)
-- CategoryTheory.Limits.hasPullback_of_left_iso
theorem hasPullback_of_left_iso : HasPullback f g 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] {X Y Z : C} (f : X ⟶ Z) (g : Y ⟶ Z) [CategoryTheory.IsIso f]
Goal: CategoryTheory.Limits.HasPullback f g
-- CategoryTheory.Limits.pullback_inv_snd_fst_of_left_isIso
@[reassoc (attr := simp)]
lemma pullback_inv_snd_fst_of_left_isIso :
    inv (pullback.snd f g) ≫ pullback.fst f g = g ≫ inv f 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] {X Y Z : C} (f : X ⟶ Z) (g : Y ⟶ Z) [CategoryTheory.IsIso f]
Goal: CategoryTheory.inv (CategoryTheory.Limits.pullback.snd f g) ≫ CategoryTheory.Limits.pullback.fst f g =
  g ≫ CategoryTheory.inv f
-- CategoryTheory.Limits.pullbackConeOfRightIso_x
@[simp]
theorem pullbackConeOfRightIso_x : (pullbackConeOfRightIso f g).pt = X 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] {X Y Z : C} (f : X ⟶ Z) (g : Y ⟶ Z) [CategoryTheory.IsIso g]
Goal: (CategoryTheory.Limits.pullbackConeOfRightIso f g).pt = X
-- CategoryTheory.Limits.pullbackConeOfRightIso_fst
@[simp]
theorem pullbackConeOfRightIso_fst : (pullbackConeOfRightIso f g).fst = 𝟙 _ 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] {X Y Z : C} (f : X ⟶ Z) (g : Y ⟶ Z) [CategoryTheory.IsIso g]
Goal: (CategoryTheory.Limits.pullbackConeOfRightIso f g).fst = 𝟙 (CategoryTheory.Limits.pullbackConeOfRightIso f g).pt
-- CategoryTheory.Limits.pullbackConeOfRightIso_snd
@[simp]
theorem pullbackConeOfRightIso_snd : (pullbackConeOfRightIso f g).snd = f ≫ inv g 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] {X Y Z : C} (f : X ⟶ Z) (g : Y ⟶ Z) [CategoryTheory.IsIso g]
Goal: (CategoryTheory.Limits.pullbackConeOfRightIso f g).snd = f ≫ CategoryTheory.inv g
-- CategoryTheory.Limits.pullbackConeOfRightIso_π_app_none
theorem pullbackConeOfRightIso_π_app_none : (pullbackConeOfRightIso f g).π.app none = f 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] {X Y Z : C} (f : X ⟶ Z) (g : Y ⟶ Z) [CategoryTheory.IsIso g]
Goal: (CategoryTheory.Limits.pullbackConeOfRightIso f g).π.app none = f
-- CategoryTheory.Limits.pullbackConeOfRightIso_π_app_left
@[simp]
theorem pullbackConeOfRightIso_π_app_left : (pullbackConeOfRightIso f g).π.app left = 𝟙 _ 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] {X Y Z : C} (f : X ⟶ Z) (g : Y ⟶ Z) [CategoryTheory.IsIso g]
Goal: (CategoryTheory.Limits.pullbackConeOfRightIso f g).π.app CategoryTheory.Limits.WalkingCospan.left =
  𝟙
    (((CategoryTheory.Functor.const CategoryTheory.Limits.WalkingCospan).obj
          (CategoryTheory.Limits.pullbackConeOfRightIso f g).pt).obj
      CategoryTheory.Limits.WalkingCospan.left)
-- CategoryTheory.Limits.pullbackConeOfRightIso_π_app_right
@[simp]
theorem pullbackConeOfRightIso_π_app_right : (pullbackConeOfRightIso f g).π.app right = f ≫ inv g 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] {X Y Z : C} (f : X ⟶ Z) (g : Y ⟶ Z) [CategoryTheory.IsIso g]
Goal: (CategoryTheory.Limits.pullbackConeOfRightIso f g).π.app CategoryTheory.Limits.WalkingCospan.right =
  f ≫ CategoryTheory.inv g
-- CategoryTheory.Limits.hasPullback_of_right_iso
theorem hasPullback_of_right_iso : HasPullback f g 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] {X Y Z : C} (f : X ⟶ Z) (g : Y ⟶ Z) [CategoryTheory.IsIso g]
Goal: CategoryTheory.Limits.HasPullback f g
-- CategoryTheory.Limits.pullback_inv_fst_snd_of_right_isIso
@[reassoc (attr := simp)]
lemma pullback_inv_fst_snd_of_right_isIso :
    inv (pullback.fst f g) ≫ pullback.snd f g = f ≫ inv g 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] {X Y Z : C} (f : X ⟶ Z) (g : Y ⟶ Z) [CategoryTheory.IsIso g]
Goal: CategoryTheory.inv (CategoryTheory.Limits.pullback.fst f g) ≫ CategoryTheory.Limits.pullback.snd f g =
  f ≫ CategoryTheory.inv g
-- CategoryTheory.Limits.pushoutCoconeOfLeftIso_x
@[simp]
theorem pushoutCoconeOfLeftIso_x : (pushoutCoconeOfLeftIso f g).pt = Z 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] {X Y Z : C} (f : X ⟶ Y) (g : X ⟶ Z) [CategoryTheory.IsIso f]
Goal: (CategoryTheory.Limits.pushoutCoconeOfLeftIso f g).pt = Z
-- CategoryTheory.Limits.pushoutCoconeOfLeftIso_inl
@[simp]
theorem pushoutCoconeOfLeftIso_inl : (pushoutCoconeOfLeftIso f g).inl = inv f ≫ g 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] {X Y Z : C} (f : X ⟶ Y) (g : X ⟶ Z) [CategoryTheory.IsIso f]
Goal: (CategoryTheory.Limits.pushoutCoconeOfLeftIso f g).inl = CategoryTheory.inv f ≫ g
-- CategoryTheory.Limits.pushoutCoconeOfLeftIso_inr
@[simp]
theorem pushoutCoconeOfLeftIso_inr : (pushoutCoconeOfLeftIso f g).inr = 𝟙 _ 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] {X Y Z : C} (f : X ⟶ Y) (g : X ⟶ Z) [CategoryTheory.IsIso f]
Goal: (CategoryTheory.Limits.pushoutCoconeOfLeftIso f g).inr = 𝟙 Z
-- CategoryTheory.Limits.pushoutCoconeOfLeftIso_ι_app_none
theorem pushoutCoconeOfLeftIso_ι_app_none : (pushoutCoconeOfLeftIso f g).ι.app none = g 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] {X Y Z : C} (f : X ⟶ Y) (g : X ⟶ Z) [CategoryTheory.IsIso f]
Goal: (CategoryTheory.Limits.pushoutCoconeOfLeftIso f g).ι.app none = g
-- CategoryTheory.Limits.pushoutCoconeOfLeftIso_ι_app_left
@[simp]
theorem pushoutCoconeOfLeftIso_ι_app_left : (pushoutCoconeOfLeftIso f g).ι.app left = inv f ≫ g 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] {X Y Z : C} (f : X ⟶ Y) (g : X ⟶ Z) [CategoryTheory.IsIso f]
Goal: (CategoryTheory.Limits.pushoutCoconeOfLeftIso f g).ι.app CategoryTheory.Limits.WalkingSpan.left =
  CategoryTheory.inv f ≫ g
-- CategoryTheory.Limits.pushoutCoconeOfLeftIso_ι_app_right
@[simp]
theorem pushoutCoconeOfLeftIso_ι_app_right : (pushoutCoconeOfLeftIso f g).ι.app right = 𝟙 _ 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] {X Y Z : C} (f : X ⟶ Y) (g : X ⟶ Z) [CategoryTheory.IsIso f]
Goal: (CategoryTheory.Limits.pushoutCoconeOfLeftIso f g).ι.app CategoryTheory.Limits.WalkingSpan.right =
  𝟙 ((CategoryTheory.Limits.span f g).obj CategoryTheory.Limits.WalkingSpan.right)