Loogle!
Result
Found 956 declarations mentioning CategoryTheory.Limits.pullback. Of these, only the first 200 are shown.
- CategoryTheory.Limits.pullback 📋 Mathlib.CategoryTheory.Limits.Shapes.Pullback.HasPullback
{C : Type u} [CategoryTheory.Category.{v, u} C] {X Y Z : C} (f : X ⟶ Z) (g : Y ⟶ Z) [CategoryTheory.Limits.HasPullback f g] : C - CategoryTheory.Limits.pullback.fst 📋 Mathlib.CategoryTheory.Limits.Shapes.Pullback.HasPullback
{C : Type u} [CategoryTheory.Category.{v, u} C] {X Y Z : C} (f : X ⟶ Z) (g : Y ⟶ Z) [CategoryTheory.Limits.HasPullback f g] : CategoryTheory.Limits.pullback f g ⟶ X - CategoryTheory.Limits.pullback.snd 📋 Mathlib.CategoryTheory.Limits.Shapes.Pullback.HasPullback
{C : Type u} [CategoryTheory.Category.{v, u} C] {X Y Z : C} (f : X ⟶ Z) (g : Y ⟶ Z) [CategoryTheory.Limits.HasPullback f g] : CategoryTheory.Limits.pullback f g ⟶ Y - CategoryTheory.Limits.pullbackSymmetry 📋 Mathlib.CategoryTheory.Limits.Shapes.Pullback.HasPullback
{C : Type u} [CategoryTheory.Category.{v, u} C] {X Y Z : C} (f : X ⟶ Z) (g : Y ⟶ Z) [CategoryTheory.Limits.HasPullback f g] : CategoryTheory.Limits.pullback f g ≅ CategoryTheory.Limits.pullback g f - CategoryTheory.Limits.pullbackProdFstIsoProd 📋 Mathlib.CategoryTheory.Limits.Shapes.Pullback.HasPullback
{C : Type u} [CategoryTheory.Category.{v, u} C] {X Y : C} (f : X ⟶ Y) (Z : C) [CategoryTheory.Limits.HasBinaryProduct Y Z] [CategoryTheory.Limits.HasBinaryProduct X Z] [CategoryTheory.Limits.HasPullback f CategoryTheory.Limits.prod.fst] : CategoryTheory.Limits.pullback f CategoryTheory.Limits.prod.fst ≅ X ⨯ Z - CategoryTheory.Limits.pullbackProdSndIsoProd 📋 Mathlib.CategoryTheory.Limits.Shapes.Pullback.HasPullback
{C : Type u} [CategoryTheory.Category.{v, u} C] {X Y : C} (f : X ⟶ Y) (Z : C) [CategoryTheory.Limits.HasBinaryProduct Z Y] [CategoryTheory.Limits.HasBinaryProduct Z X] [CategoryTheory.Limits.HasPullback CategoryTheory.Limits.prod.snd f] : CategoryTheory.Limits.pullback CategoryTheory.Limits.prod.snd f ≅ Z ⨯ X - CategoryTheory.Limits.pullbackIsPullback 📋 Mathlib.CategoryTheory.Limits.Shapes.Pullback.HasPullback
{C : Type u} [CategoryTheory.Category.{v, u} C] {X Y Z : C} (f : X ⟶ Z) (g : Y ⟶ Z) [CategoryTheory.Limits.HasPullback f g] : CategoryTheory.Limits.IsLimit (CategoryTheory.Limits.PullbackCone.mk (CategoryTheory.Limits.pullback.fst f g) (CategoryTheory.Limits.pullback.snd f g) ⋯) - CategoryTheory.Limits.pullback.lift 📋 Mathlib.CategoryTheory.Limits.Shapes.Pullback.HasPullback
{C : Type u} [CategoryTheory.Category.{v, u} C] {W X Y Z : C} {f : X ⟶ Z} {g : Y ⟶ Z} [CategoryTheory.Limits.HasPullback f g] (h : W ⟶ X) (k : W ⟶ Y) (w : CategoryTheory.CategoryStruct.comp h f = CategoryTheory.CategoryStruct.comp k g := by cat_disch) : W ⟶ CategoryTheory.Limits.pullback f g - CategoryTheory.Limits.pullback.condition 📋 Mathlib.CategoryTheory.Limits.Shapes.Pullback.HasPullback
{C : Type u} [CategoryTheory.Category.{v, u} C] {X Y Z : C} {f : X ⟶ Z} {g : Y ⟶ Z} [CategoryTheory.Limits.HasPullback f g] : CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pullback.fst f g) f = CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pullback.snd f g) g - CategoryTheory.Limits.pullback.congrHom 📋 Mathlib.CategoryTheory.Limits.Shapes.Pullback.HasPullback
{C : Type u} [CategoryTheory.Category.{v, u} C] {X Y Z : C} {f₁ f₂ : X ⟶ Z} {g₁ g₂ : Y ⟶ Z} (h₁ : f₁ = f₂) (h₂ : g₁ = g₂) [CategoryTheory.Limits.HasPullback f₁ g₁] [CategoryTheory.Limits.HasPullback f₂ g₂] : CategoryTheory.Limits.pullback f₁ g₁ ≅ CategoryTheory.Limits.pullback f₂ g₂ - CategoryTheory.Limits.pullback.mapDesc 📋 Mathlib.CategoryTheory.Limits.Shapes.Pullback.HasPullback
{C : Type u} [CategoryTheory.Category.{v, u} C] {X Y S T : C} (f : X ⟶ S) (g : Y ⟶ S) (i : S ⟶ T) [CategoryTheory.Limits.HasPullback f g] [CategoryTheory.Limits.HasPullback (CategoryTheory.CategoryStruct.comp f i) (CategoryTheory.CategoryStruct.comp g i)] : CategoryTheory.Limits.pullback f g ⟶ CategoryTheory.Limits.pullback (CategoryTheory.CategoryStruct.comp f i) (CategoryTheory.CategoryStruct.comp g i) - CategoryTheory.Limits.pullback.lift_fst_snd 📋 Mathlib.CategoryTheory.Limits.Shapes.Pullback.HasPullback
{C : Type u} [CategoryTheory.Category.{v, u} C] {X Y Z : C} (f : X ⟶ Z) (g : Y ⟶ Z) [CategoryTheory.Limits.HasPullback f g] : CategoryTheory.Limits.pullback.lift (CategoryTheory.Limits.pullback.fst f g) (CategoryTheory.Limits.pullback.snd f g) ⋯ = CategoryTheory.CategoryStruct.id (CategoryTheory.Limits.pullback f g) - CategoryTheory.Limits.pullback.map_id 📋 Mathlib.CategoryTheory.Limits.Shapes.Pullback.HasPullback
{C : Type u} [CategoryTheory.Category.{v, u} C] {X Y Z : C} {f : X ⟶ Z} {g : Y ⟶ Z} [CategoryTheory.Limits.HasPullback f g] : CategoryTheory.Limits.pullback.map f g f g (CategoryTheory.CategoryStruct.id X) (CategoryTheory.CategoryStruct.id Y) (CategoryTheory.CategoryStruct.id Z) ⋯ ⋯ = CategoryTheory.CategoryStruct.id (CategoryTheory.Limits.pullback f g) - CategoryTheory.Limits.pullback.condition_assoc 📋 Mathlib.CategoryTheory.Limits.Shapes.Pullback.HasPullback
{C : Type u} [CategoryTheory.Category.{v, u} C] {X Y Z : C} {f : X ⟶ Z} {g : Y ⟶ Z} [CategoryTheory.Limits.HasPullback f g] {Z✝ : C} (h : Z ⟶ Z✝) : CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pullback.fst f g) (CategoryTheory.CategoryStruct.comp f h) = CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pullback.snd f g) (CategoryTheory.CategoryStruct.comp g h) - CategoryTheory.Limits.pullback.lift_fst 📋 Mathlib.CategoryTheory.Limits.Shapes.Pullback.HasPullback
{C : Type u} [CategoryTheory.Category.{v, u} C] {W X Y Z : C} {f : X ⟶ Z} {g : Y ⟶ Z} [CategoryTheory.Limits.HasPullback f g] (h : W ⟶ X) (k : W ⟶ Y) (w : CategoryTheory.CategoryStruct.comp h f = CategoryTheory.CategoryStruct.comp k g) : CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pullback.lift h k w) (CategoryTheory.Limits.pullback.fst f g) = h - CategoryTheory.Limits.pullback.lift_snd 📋 Mathlib.CategoryTheory.Limits.Shapes.Pullback.HasPullback
{C : Type u} [CategoryTheory.Category.{v, u} C] {W X Y Z : C} {f : X ⟶ Z} {g : Y ⟶ Z} [CategoryTheory.Limits.HasPullback f g] (h : W ⟶ X) (k : W ⟶ Y) (w : CategoryTheory.CategoryStruct.comp h f = CategoryTheory.CategoryStruct.comp k g) : CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pullback.lift h k w) (CategoryTheory.Limits.pullback.snd f g) = k - CategoryTheory.Limits.pullbackSymmetry_hom_comp_fst 📋 Mathlib.CategoryTheory.Limits.Shapes.Pullback.HasPullback
{C : Type u} [CategoryTheory.Category.{v, u} C] {X Y Z : C} (f : X ⟶ Z) (g : Y ⟶ Z) [CategoryTheory.Limits.HasPullback f g] : CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pullbackSymmetry f g).hom (CategoryTheory.Limits.pullback.fst g f) = CategoryTheory.Limits.pullback.snd f g - CategoryTheory.Limits.pullbackSymmetry_hom_comp_snd 📋 Mathlib.CategoryTheory.Limits.Shapes.Pullback.HasPullback
{C : Type u} [CategoryTheory.Category.{v, u} C] {X Y Z : C} (f : X ⟶ Z) (g : Y ⟶ Z) [CategoryTheory.Limits.HasPullback f g] : CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pullbackSymmetry f g).hom (CategoryTheory.Limits.pullback.snd g f) = CategoryTheory.Limits.pullback.fst f g - CategoryTheory.Limits.pullbackComparison 📋 Mathlib.CategoryTheory.Limits.Shapes.Pullback.HasPullback
{C : Type u} [CategoryTheory.Category.{v, u} C] {X Y Z : C} {D : Type u₂} [CategoryTheory.Category.{v₂, u₂} D] (G : CategoryTheory.Functor C D) (f : X ⟶ Z) (g : Y ⟶ Z) [CategoryTheory.Limits.HasPullback f g] [CategoryTheory.Limits.HasPullback (G.map f) (G.map g)] : G.obj (CategoryTheory.Limits.pullback f g) ⟶ CategoryTheory.Limits.pullback (G.map f) (G.map g) - CategoryTheory.Limits.pullbackProdFstIsoProd_inv_fst 📋 Mathlib.CategoryTheory.Limits.Shapes.Pullback.HasPullback
{C : Type u} [CategoryTheory.Category.{v, u} C] {X Y : C} (f : X ⟶ Y) (Z : C) [CategoryTheory.Limits.HasBinaryProduct Y Z] [CategoryTheory.Limits.HasBinaryProduct X Z] [CategoryTheory.Limits.HasPullback f CategoryTheory.Limits.prod.fst] : CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pullbackProdFstIsoProd f Z).inv (CategoryTheory.Limits.pullback.fst f CategoryTheory.Limits.prod.fst) = CategoryTheory.Limits.prod.fst - CategoryTheory.Limits.pullbackProdSndIsoProd_inv_snd 📋 Mathlib.CategoryTheory.Limits.Shapes.Pullback.HasPullback
{C : Type u} [CategoryTheory.Category.{v, u} C] {X Y : C} (f : X ⟶ Y) (Z : C) [CategoryTheory.Limits.HasBinaryProduct Z Y] [CategoryTheory.Limits.HasBinaryProduct Z X] [CategoryTheory.Limits.HasPullback CategoryTheory.Limits.prod.snd f] : CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pullbackProdSndIsoProd f Z).inv (CategoryTheory.Limits.pullback.snd CategoryTheory.Limits.prod.snd f) = CategoryTheory.Limits.prod.snd - CategoryTheory.Limits.pullbackSymmetry_inv_comp_fst 📋 Mathlib.CategoryTheory.Limits.Shapes.Pullback.HasPullback
{C : Type u} [CategoryTheory.Category.{v, u} C] {X Y Z : C} (f : X ⟶ Z) (g : Y ⟶ Z) [CategoryTheory.Limits.HasPullback f g] : CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pullbackSymmetry f g).inv (CategoryTheory.Limits.pullback.fst f g) = CategoryTheory.Limits.pullback.snd g f - CategoryTheory.Limits.pullbackSymmetry_inv_comp_snd 📋 Mathlib.CategoryTheory.Limits.Shapes.Pullback.HasPullback
{C : Type u} [CategoryTheory.Category.{v, u} C] {X Y Z : C} (f : X ⟶ Z) (g : Y ⟶ Z) [CategoryTheory.Limits.HasPullback f g] : CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pullbackSymmetry f g).inv (CategoryTheory.Limits.pullback.snd f g) = CategoryTheory.Limits.pullback.fst g f - CategoryTheory.Limits.pullbackProdFstIsoProd_hom_fst 📋 Mathlib.CategoryTheory.Limits.Shapes.Pullback.HasPullback
{C : Type u} [CategoryTheory.Category.{v, u} C] {X Y : C} (f : X ⟶ Y) (Z : C) [CategoryTheory.Limits.HasBinaryProduct Y Z] [CategoryTheory.Limits.HasBinaryProduct X Z] [CategoryTheory.Limits.HasPullback f CategoryTheory.Limits.prod.fst] : CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pullbackProdFstIsoProd f Z).hom CategoryTheory.Limits.prod.fst = CategoryTheory.Limits.pullback.fst f CategoryTheory.Limits.prod.fst - CategoryTheory.Limits.pullbackProdSndIsoProd_hom_snd 📋 Mathlib.CategoryTheory.Limits.Shapes.Pullback.HasPullback
{C : Type u} [CategoryTheory.Category.{v, u} C] {X Y : C} (f : X ⟶ Y) (Z : C) [CategoryTheory.Limits.HasBinaryProduct Z Y] [CategoryTheory.Limits.HasBinaryProduct Z X] [CategoryTheory.Limits.HasPullback CategoryTheory.Limits.prod.snd f] : CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pullbackProdSndIsoProd f Z).hom CategoryTheory.Limits.prod.snd = CategoryTheory.Limits.pullback.snd CategoryTheory.Limits.prod.snd f - CategoryTheory.Limits.pullback.lift_fst_assoc 📋 Mathlib.CategoryTheory.Limits.Shapes.Pullback.HasPullback
{C : Type u} [CategoryTheory.Category.{v, u} C] {W X Y Z : C} {f : X ⟶ Z} {g : Y ⟶ Z} [CategoryTheory.Limits.HasPullback f g] (h : W ⟶ X) (k : W ⟶ Y) (w : CategoryTheory.CategoryStruct.comp h f = CategoryTheory.CategoryStruct.comp k g) {Z✝ : C} (h✝ : X ⟶ Z✝) : CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pullback.lift h k w) (CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pullback.fst f g) h✝) = CategoryTheory.CategoryStruct.comp h h✝ - CategoryTheory.Limits.pullback.lift_snd_assoc 📋 Mathlib.CategoryTheory.Limits.Shapes.Pullback.HasPullback
{C : Type u} [CategoryTheory.Category.{v, u} C] {W X Y Z : C} {f : X ⟶ Z} {g : Y ⟶ Z} [CategoryTheory.Limits.HasPullback f g] (h : W ⟶ X) (k : W ⟶ Y) (w : CategoryTheory.CategoryStruct.comp h f = CategoryTheory.CategoryStruct.comp k g) {Z✝ : C} (h✝ : Y ⟶ Z✝) : CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pullback.lift h k w) (CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pullback.snd f g) h✝) = CategoryTheory.CategoryStruct.comp k h✝ - CategoryTheory.Limits.pullback.map 📋 Mathlib.CategoryTheory.Limits.Shapes.Pullback.HasPullback
{C : Type u} [CategoryTheory.Category.{v, u} C] {W X Y Z S T : C} (f₁ : W ⟶ S) (f₂ : X ⟶ S) [CategoryTheory.Limits.HasPullback f₁ f₂] (g₁ : Y ⟶ T) (g₂ : Z ⟶ T) [CategoryTheory.Limits.HasPullback g₁ g₂] (i₁ : W ⟶ Y) (i₂ : X ⟶ Z) (i₃ : S ⟶ T) (eq₁ : CategoryTheory.CategoryStruct.comp f₁ i₃ = CategoryTheory.CategoryStruct.comp i₁ g₁) (eq₂ : CategoryTheory.CategoryStruct.comp f₂ i₃ = CategoryTheory.CategoryStruct.comp i₂ g₂) : CategoryTheory.Limits.pullback f₁ f₂ ⟶ CategoryTheory.Limits.pullback g₁ g₂ - CategoryTheory.Limits.pullbackProdFstIsoProd_inv_snd_snd 📋 Mathlib.CategoryTheory.Limits.Shapes.Pullback.HasPullback
{C : Type u} [CategoryTheory.Category.{v, u} C] {X Y : C} (f : X ⟶ Y) (Z : C) [CategoryTheory.Limits.HasBinaryProduct Y Z] [CategoryTheory.Limits.HasBinaryProduct X Z] [CategoryTheory.Limits.HasPullback f CategoryTheory.Limits.prod.fst] : CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pullbackProdFstIsoProd f Z).inv (CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pullback.snd f CategoryTheory.Limits.prod.fst) CategoryTheory.Limits.prod.snd) = CategoryTheory.Limits.prod.snd - CategoryTheory.Limits.pullbackProdSndIsoProd_inv_fst_fst 📋 Mathlib.CategoryTheory.Limits.Shapes.Pullback.HasPullback
{C : Type u} [CategoryTheory.Category.{v, u} C] {X Y : C} (f : X ⟶ Y) (Z : C) [CategoryTheory.Limits.HasBinaryProduct Z Y] [CategoryTheory.Limits.HasBinaryProduct Z X] [CategoryTheory.Limits.HasPullback CategoryTheory.Limits.prod.snd f] : CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pullbackProdSndIsoProd f Z).inv (CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pullback.fst CategoryTheory.Limits.prod.snd f) CategoryTheory.Limits.prod.fst) = CategoryTheory.Limits.prod.fst - CategoryTheory.Limits.pullback.lift' 📋 Mathlib.CategoryTheory.Limits.Shapes.Pullback.HasPullback
{C : Type u} [CategoryTheory.Category.{v, u} C] {W X Y Z : C} {f : X ⟶ Z} {g : Y ⟶ Z} [CategoryTheory.Limits.HasPullback f g] (h : W ⟶ X) (k : W ⟶ Y) (w : CategoryTheory.CategoryStruct.comp h f = CategoryTheory.CategoryStruct.comp k g) : { l // CategoryTheory.CategoryStruct.comp l (CategoryTheory.Limits.pullback.fst f g) = h ∧ CategoryTheory.CategoryStruct.comp l (CategoryTheory.Limits.pullback.snd f g) = k } - CategoryTheory.Limits.pullback.congrHom_hom 📋 Mathlib.CategoryTheory.Limits.Shapes.Pullback.HasPullback
{C : Type u} [CategoryTheory.Category.{v, u} C] {X Y Z : C} {f₁ f₂ : X ⟶ Z} {g₁ g₂ : Y ⟶ Z} (h₁ : f₁ = f₂) (h₂ : g₁ = g₂) [CategoryTheory.Limits.HasPullback f₁ g₁] [CategoryTheory.Limits.HasPullback f₂ g₂] : (CategoryTheory.Limits.pullback.congrHom h₁ h₂).hom = CategoryTheory.Limits.pullback.map f₁ g₁ f₂ g₂ (CategoryTheory.CategoryStruct.id X) (CategoryTheory.CategoryStruct.id Y) (CategoryTheory.CategoryStruct.id Z) ⋯ ⋯ - CategoryTheory.Limits.pullback.congrHom_inv 📋 Mathlib.CategoryTheory.Limits.Shapes.Pullback.HasPullback
{C : Type u} [CategoryTheory.Category.{v, u} C] {X Y Z : C} {f₁ f₂ : X ⟶ Z} {g₁ g₂ : Y ⟶ Z} (h₁ : f₁ = f₂) (h₂ : g₁ = g₂) [CategoryTheory.Limits.HasPullback f₁ g₁] [CategoryTheory.Limits.HasPullback f₂ g₂] : (CategoryTheory.Limits.pullback.congrHom h₁ h₂).inv = CategoryTheory.Limits.pullback.map f₂ g₂ f₁ g₁ (CategoryTheory.CategoryStruct.id X) (CategoryTheory.CategoryStruct.id Y) (CategoryTheory.CategoryStruct.id Z) ⋯ ⋯ - CategoryTheory.Limits.pullback.exists_lift 📋 Mathlib.CategoryTheory.Limits.Shapes.Pullback.HasPullback
{C : Type u} [CategoryTheory.Category.{v, u} C] {W X Y Z : C} (f : X ⟶ Z) (g : Y ⟶ Z) [CategoryTheory.Limits.HasPullback f g] (h : W ⟶ X) (k : W ⟶ Y) (w : CategoryTheory.CategoryStruct.comp h f = CategoryTheory.CategoryStruct.comp k g := by cat_disch) : ∃ l, CategoryTheory.CategoryStruct.comp l (CategoryTheory.Limits.pullback.fst f g) = h ∧ CategoryTheory.CategoryStruct.comp l (CategoryTheory.Limits.pullback.snd f g) = k - CategoryTheory.Limits.pullbackSymmetry_hom_comp_fst_assoc 📋 Mathlib.CategoryTheory.Limits.Shapes.Pullback.HasPullback
{C : Type u} [CategoryTheory.Category.{v, u} C] {X Y Z : C} (f : X ⟶ Z) (g : Y ⟶ Z) [CategoryTheory.Limits.HasPullback f g] {Z✝ : C} (h : Y ⟶ Z✝) : CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pullbackSymmetry f g).hom (CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pullback.fst g f) h) = CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pullback.snd f g) h - CategoryTheory.Limits.pullbackSymmetry_hom_comp_snd_assoc 📋 Mathlib.CategoryTheory.Limits.Shapes.Pullback.HasPullback
{C : Type u} [CategoryTheory.Category.{v, u} C] {X Y Z : C} (f : X ⟶ Z) (g : Y ⟶ Z) [CategoryTheory.Limits.HasPullback f g] {Z✝ : C} (h : X ⟶ Z✝) : CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pullbackSymmetry f g).hom (CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pullback.snd g f) h) = CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pullback.fst f g) h - CategoryTheory.Limits.pullbackProdFstIsoProd_hom_snd 📋 Mathlib.CategoryTheory.Limits.Shapes.Pullback.HasPullback
{C : Type u} [CategoryTheory.Category.{v, u} C] {X Y : C} (f : X ⟶ Y) (Z : C) [CategoryTheory.Limits.HasBinaryProduct Y Z] [CategoryTheory.Limits.HasBinaryProduct X Z] [CategoryTheory.Limits.HasPullback f CategoryTheory.Limits.prod.fst] : CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pullbackProdFstIsoProd f Z).hom CategoryTheory.Limits.prod.snd = CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pullback.snd f CategoryTheory.Limits.prod.fst) CategoryTheory.Limits.prod.snd - CategoryTheory.Limits.pullbackProdSndIsoProd_hom_fst 📋 Mathlib.CategoryTheory.Limits.Shapes.Pullback.HasPullback
{C : Type u} [CategoryTheory.Category.{v, u} C] {X Y : C} (f : X ⟶ Y) (Z : C) [CategoryTheory.Limits.HasBinaryProduct Z Y] [CategoryTheory.Limits.HasBinaryProduct Z X] [CategoryTheory.Limits.HasPullback CategoryTheory.Limits.prod.snd f] : CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pullbackProdSndIsoProd f Z).hom CategoryTheory.Limits.prod.fst = CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pullback.fst CategoryTheory.Limits.prod.snd f) CategoryTheory.Limits.prod.fst - CategoryTheory.Limits.pullbackProdFstIsoProd_inv_fst_assoc 📋 Mathlib.CategoryTheory.Limits.Shapes.Pullback.HasPullback
{C : Type u} [CategoryTheory.Category.{v, u} C] {X Y : C} (f : X ⟶ Y) (Z : C) [CategoryTheory.Limits.HasBinaryProduct Y Z] [CategoryTheory.Limits.HasBinaryProduct X Z] [CategoryTheory.Limits.HasPullback f CategoryTheory.Limits.prod.fst] {Z✝ : C} (h : X ⟶ Z✝) : CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pullbackProdFstIsoProd f Z).inv (CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pullback.fst f CategoryTheory.Limits.prod.fst) h) = CategoryTheory.CategoryStruct.comp CategoryTheory.Limits.prod.fst h - CategoryTheory.Limits.pullbackProdFstIsoProd_inv_snd_fst 📋 Mathlib.CategoryTheory.Limits.Shapes.Pullback.HasPullback
{C : Type u} [CategoryTheory.Category.{v, u} C] {X Y : C} (f : X ⟶ Y) (Z : C) [CategoryTheory.Limits.HasBinaryProduct Y Z] [CategoryTheory.Limits.HasBinaryProduct X Z] [CategoryTheory.Limits.HasPullback f CategoryTheory.Limits.prod.fst] : CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pullbackProdFstIsoProd f Z).inv (CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pullback.snd f CategoryTheory.Limits.prod.fst) CategoryTheory.Limits.prod.fst) = CategoryTheory.CategoryStruct.comp CategoryTheory.Limits.prod.fst f - CategoryTheory.Limits.pullbackProdSndIsoProd_inv_fst_snd 📋 Mathlib.CategoryTheory.Limits.Shapes.Pullback.HasPullback
{C : Type u} [CategoryTheory.Category.{v, u} C] {X Y : C} (f : X ⟶ Y) (Z : C) [CategoryTheory.Limits.HasBinaryProduct Z Y] [CategoryTheory.Limits.HasBinaryProduct Z X] [CategoryTheory.Limits.HasPullback CategoryTheory.Limits.prod.snd f] : CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pullbackProdSndIsoProd f Z).inv (CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pullback.fst CategoryTheory.Limits.prod.snd f) CategoryTheory.Limits.prod.snd) = CategoryTheory.CategoryStruct.comp CategoryTheory.Limits.prod.snd f - CategoryTheory.Limits.pullbackProdSndIsoProd_inv_snd_assoc 📋 Mathlib.CategoryTheory.Limits.Shapes.Pullback.HasPullback
{C : Type u} [CategoryTheory.Category.{v, u} C] {X Y : C} (f : X ⟶ Y) (Z : C) [CategoryTheory.Limits.HasBinaryProduct Z Y] [CategoryTheory.Limits.HasBinaryProduct Z X] [CategoryTheory.Limits.HasPullback CategoryTheory.Limits.prod.snd f] {Z✝ : C} (h : X ⟶ Z✝) : CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pullbackProdSndIsoProd f Z).inv (CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pullback.snd CategoryTheory.Limits.prod.snd f) h) = CategoryTheory.CategoryStruct.comp CategoryTheory.Limits.prod.snd h - CategoryTheory.Limits.pullbackSymmetry_inv_comp_fst_assoc 📋 Mathlib.CategoryTheory.Limits.Shapes.Pullback.HasPullback
{C : Type u} [CategoryTheory.Category.{v, u} C] {X Y Z : C} (f : X ⟶ Z) (g : Y ⟶ Z) [CategoryTheory.Limits.HasPullback f g] {Z✝ : C} (h : X ⟶ Z✝) : CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pullbackSymmetry f g).inv (CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pullback.fst f g) h) = CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pullback.snd g f) h - CategoryTheory.Limits.pullbackSymmetry_inv_comp_snd_assoc 📋 Mathlib.CategoryTheory.Limits.Shapes.Pullback.HasPullback
{C : Type u} [CategoryTheory.Category.{v, u} C] {X Y Z : C} (f : X ⟶ Z) (g : Y ⟶ Z) [CategoryTheory.Limits.HasPullback f g] {Z✝ : C} (h : Y ⟶ Z✝) : CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pullbackSymmetry f g).inv (CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pullback.snd f g) h) = CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pullback.fst g f) h - CategoryTheory.Limits.pullback.map_isIso 📋 Mathlib.CategoryTheory.Limits.Shapes.Pullback.HasPullback
{C : Type u} [CategoryTheory.Category.{v, u} C] {W X Y Z S T : C} (f₁ : W ⟶ S) (f₂ : X ⟶ S) [CategoryTheory.Limits.HasPullback f₁ f₂] (g₁ : Y ⟶ T) (g₂ : Z ⟶ T) [CategoryTheory.Limits.HasPullback g₁ g₂] (i₁ : W ⟶ Y) (i₂ : X ⟶ Z) (i₃ : S ⟶ T) (eq₁ : CategoryTheory.CategoryStruct.comp f₁ i₃ = CategoryTheory.CategoryStruct.comp i₁ g₁) (eq₂ : CategoryTheory.CategoryStruct.comp f₂ i₃ = CategoryTheory.CategoryStruct.comp i₂ g₂) [CategoryTheory.IsIso i₁] [CategoryTheory.IsIso i₂] [CategoryTheory.IsIso i₃] : CategoryTheory.IsIso (CategoryTheory.Limits.pullback.map f₁ f₂ g₁ g₂ i₁ i₂ i₃ eq₁ eq₂) - CategoryTheory.Limits.pullback.hom_ext 📋 Mathlib.CategoryTheory.Limits.Shapes.Pullback.HasPullback
{C : Type u} [CategoryTheory.Category.{v, u} C] {X Y Z : C} {f : X ⟶ Z} {g : Y ⟶ Z} [CategoryTheory.Limits.HasPullback f g] {W : C} {k l : W ⟶ CategoryTheory.Limits.pullback f g} (h₀ : CategoryTheory.CategoryStruct.comp k (CategoryTheory.Limits.pullback.fst f g) = CategoryTheory.CategoryStruct.comp l (CategoryTheory.Limits.pullback.fst f g)) (h₁ : CategoryTheory.CategoryStruct.comp k (CategoryTheory.Limits.pullback.snd f g) = CategoryTheory.CategoryStruct.comp l (CategoryTheory.Limits.pullback.snd f g)) : k = l - CategoryTheory.Limits.pullback.hom_ext_iff 📋 Mathlib.CategoryTheory.Limits.Shapes.Pullback.HasPullback
{C : Type u} [CategoryTheory.Category.{v, u} C] {X Y Z : C} {f : X ⟶ Z} {g : Y ⟶ Z} [CategoryTheory.Limits.HasPullback f g] {W : C} {k l : W ⟶ CategoryTheory.Limits.pullback f g} : k = l ↔ CategoryTheory.CategoryStruct.comp k (CategoryTheory.Limits.pullback.fst f g) = CategoryTheory.CategoryStruct.comp l (CategoryTheory.Limits.pullback.fst f g) ∧ CategoryTheory.CategoryStruct.comp k (CategoryTheory.Limits.pullback.snd f g) = CategoryTheory.CategoryStruct.comp l (CategoryTheory.Limits.pullback.snd f g) - CategoryTheory.Limits.pullbackProdFstIsoProd_hom_fst_assoc 📋 Mathlib.CategoryTheory.Limits.Shapes.Pullback.HasPullback
{C : Type u} [CategoryTheory.Category.{v, u} C] {X Y : C} (f : X ⟶ Y) (Z : C) [CategoryTheory.Limits.HasBinaryProduct Y Z] [CategoryTheory.Limits.HasBinaryProduct X Z] [CategoryTheory.Limits.HasPullback f CategoryTheory.Limits.prod.fst] {Z✝ : C} (h : X ⟶ Z✝) : CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pullbackProdFstIsoProd f Z).hom (CategoryTheory.CategoryStruct.comp CategoryTheory.Limits.prod.fst h) = CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pullback.fst f CategoryTheory.Limits.prod.fst) h - CategoryTheory.Limits.pullbackProdSndIsoProd_hom_snd_assoc 📋 Mathlib.CategoryTheory.Limits.Shapes.Pullback.HasPullback
{C : Type u} [CategoryTheory.Category.{v, u} C] {X Y : C} (f : X ⟶ Y) (Z : C) [CategoryTheory.Limits.HasBinaryProduct Z Y] [CategoryTheory.Limits.HasBinaryProduct Z X] [CategoryTheory.Limits.HasPullback CategoryTheory.Limits.prod.snd f] {Z✝ : C} (h : X ⟶ Z✝) : CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pullbackProdSndIsoProd f Z).hom (CategoryTheory.CategoryStruct.comp CategoryTheory.Limits.prod.snd h) = CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pullback.snd CategoryTheory.Limits.prod.snd f) h - CategoryTheory.Limits.pullbackProdFstIsoProd_inv_snd_snd_assoc 📋 Mathlib.CategoryTheory.Limits.Shapes.Pullback.HasPullback
{C : Type u} [CategoryTheory.Category.{v, u} C] {X Y : C} (f : X ⟶ Y) (Z : C) [CategoryTheory.Limits.HasBinaryProduct Y Z] [CategoryTheory.Limits.HasBinaryProduct X Z] [CategoryTheory.Limits.HasPullback f CategoryTheory.Limits.prod.fst] {Z✝ : C} (h : Z ⟶ Z✝) : CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pullbackProdFstIsoProd f Z).inv (CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pullback.snd f CategoryTheory.Limits.prod.fst) (CategoryTheory.CategoryStruct.comp CategoryTheory.Limits.prod.snd h)) = CategoryTheory.CategoryStruct.comp CategoryTheory.Limits.prod.snd h - CategoryTheory.Limits.pullbackProdSndIsoProd_inv_fst_fst_assoc 📋 Mathlib.CategoryTheory.Limits.Shapes.Pullback.HasPullback
{C : Type u} [CategoryTheory.Category.{v, u} C] {X Y : C} (f : X ⟶ Y) (Z : C) [CategoryTheory.Limits.HasBinaryProduct Z Y] [CategoryTheory.Limits.HasBinaryProduct Z X] [CategoryTheory.Limits.HasPullback CategoryTheory.Limits.prod.snd f] {Z✝ : C} (h : Z ⟶ Z✝) : CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pullbackProdSndIsoProd f Z).inv (CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pullback.fst CategoryTheory.Limits.prod.snd f) (CategoryTheory.CategoryStruct.comp CategoryTheory.Limits.prod.fst h)) = CategoryTheory.CategoryStruct.comp CategoryTheory.Limits.prod.fst h - CategoryTheory.Limits.pullbackProdFstIsoProd_inv_snd_fst_assoc 📋 Mathlib.CategoryTheory.Limits.Shapes.Pullback.HasPullback
{C : Type u} [CategoryTheory.Category.{v, u} C] {X Y : C} (f : X ⟶ Y) (Z : C) [CategoryTheory.Limits.HasBinaryProduct Y Z] [CategoryTheory.Limits.HasBinaryProduct X Z] [CategoryTheory.Limits.HasPullback f CategoryTheory.Limits.prod.fst] {Z✝ : C} (h : Y ⟶ Z✝) : CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pullbackProdFstIsoProd f Z).inv (CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pullback.snd f CategoryTheory.Limits.prod.fst) (CategoryTheory.CategoryStruct.comp CategoryTheory.Limits.prod.fst h)) = CategoryTheory.CategoryStruct.comp CategoryTheory.Limits.prod.fst (CategoryTheory.CategoryStruct.comp f h) - CategoryTheory.Limits.pullbackProdSndIsoProd_inv_fst_snd_assoc 📋 Mathlib.CategoryTheory.Limits.Shapes.Pullback.HasPullback
{C : Type u} [CategoryTheory.Category.{v, u} C] {X Y : C} (f : X ⟶ Y) (Z : C) [CategoryTheory.Limits.HasBinaryProduct Z Y] [CategoryTheory.Limits.HasBinaryProduct Z X] [CategoryTheory.Limits.HasPullback CategoryTheory.Limits.prod.snd f] {Z✝ : C} (h : Y ⟶ Z✝) : CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pullbackProdSndIsoProd f Z).inv (CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pullback.fst CategoryTheory.Limits.prod.snd f) (CategoryTheory.CategoryStruct.comp CategoryTheory.Limits.prod.snd h)) = CategoryTheory.CategoryStruct.comp CategoryTheory.Limits.prod.snd (CategoryTheory.CategoryStruct.comp f h) - CategoryTheory.Limits.pullbackProdFstIsoProd_hom_snd_assoc 📋 Mathlib.CategoryTheory.Limits.Shapes.Pullback.HasPullback
{C : Type u} [CategoryTheory.Category.{v, u} C] {X Y : C} (f : X ⟶ Y) (Z : C) [CategoryTheory.Limits.HasBinaryProduct Y Z] [CategoryTheory.Limits.HasBinaryProduct X Z] [CategoryTheory.Limits.HasPullback f CategoryTheory.Limits.prod.fst] {Z✝ : C} (h : Z ⟶ Z✝) : CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pullbackProdFstIsoProd f Z).hom (CategoryTheory.CategoryStruct.comp CategoryTheory.Limits.prod.snd h) = CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pullback.snd f CategoryTheory.Limits.prod.fst) (CategoryTheory.CategoryStruct.comp CategoryTheory.Limits.prod.snd h) - CategoryTheory.Limits.pullbackProdSndIsoProd_hom_fst_assoc 📋 Mathlib.CategoryTheory.Limits.Shapes.Pullback.HasPullback
{C : Type u} [CategoryTheory.Category.{v, u} C] {X Y : C} (f : X ⟶ Y) (Z : C) [CategoryTheory.Limits.HasBinaryProduct Z Y] [CategoryTheory.Limits.HasBinaryProduct Z X] [CategoryTheory.Limits.HasPullback CategoryTheory.Limits.prod.snd f] {Z✝ : C} (h : Z ⟶ Z✝) : CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pullbackProdSndIsoProd f Z).hom (CategoryTheory.CategoryStruct.comp CategoryTheory.Limits.prod.fst h) = CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pullback.fst CategoryTheory.Limits.prod.snd f) (CategoryTheory.CategoryStruct.comp CategoryTheory.Limits.prod.fst h) - CategoryTheory.Limits.pullbackComparison_comp_fst 📋 Mathlib.CategoryTheory.Limits.Shapes.Pullback.HasPullback
{C : Type u} [CategoryTheory.Category.{v, u} C] {X Y Z : C} {D : Type u₂} [CategoryTheory.Category.{v₂, u₂} D] (G : CategoryTheory.Functor C D) (f : X ⟶ Z) (g : Y ⟶ Z) [CategoryTheory.Limits.HasPullback f g] [CategoryTheory.Limits.HasPullback (G.map f) (G.map g)] : CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pullbackComparison G f g) (CategoryTheory.Limits.pullback.fst (G.map f) (G.map g)) = G.map (CategoryTheory.Limits.pullback.fst f g) - CategoryTheory.Limits.pullbackComparison_comp_snd 📋 Mathlib.CategoryTheory.Limits.Shapes.Pullback.HasPullback
{C : Type u} [CategoryTheory.Category.{v, u} C] {X Y Z : C} {D : Type u₂} [CategoryTheory.Category.{v₂, u₂} D] (G : CategoryTheory.Functor C D) (f : X ⟶ Z) (g : Y ⟶ Z) [CategoryTheory.Limits.HasPullback f g] [CategoryTheory.Limits.HasPullback (G.map f) (G.map g)] : CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pullbackComparison G f g) (CategoryTheory.Limits.pullback.snd (G.map f) (G.map g)) = G.map (CategoryTheory.Limits.pullback.snd f g) - CategoryTheory.Limits.pullbackComparison_comp_fst_assoc 📋 Mathlib.CategoryTheory.Limits.Shapes.Pullback.HasPullback
{C : Type u} [CategoryTheory.Category.{v, u} C] {X Y Z : C} {D : Type u₂} [CategoryTheory.Category.{v₂, u₂} D] (G : CategoryTheory.Functor C D) (f : X ⟶ Z) (g : Y ⟶ Z) [CategoryTheory.Limits.HasPullback f g] [CategoryTheory.Limits.HasPullback (G.map f) (G.map g)] {Z✝ : D} (h : G.obj X ⟶ Z✝) : CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pullbackComparison G f g) (CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pullback.fst (G.map f) (G.map g)) h) = CategoryTheory.CategoryStruct.comp (G.map (CategoryTheory.Limits.pullback.fst f g)) h - CategoryTheory.Limits.pullbackComparison_comp_snd_assoc 📋 Mathlib.CategoryTheory.Limits.Shapes.Pullback.HasPullback
{C : Type u} [CategoryTheory.Category.{v, u} C] {X Y Z : C} {D : Type u₂} [CategoryTheory.Category.{v₂, u₂} D] (G : CategoryTheory.Functor C D) (f : X ⟶ Z) (g : Y ⟶ Z) [CategoryTheory.Limits.HasPullback f g] [CategoryTheory.Limits.HasPullback (G.map f) (G.map g)] {Z✝ : D} (h : G.obj Y ⟶ Z✝) : CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pullbackComparison G f g) (CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pullback.snd (G.map f) (G.map g)) h) = CategoryTheory.CategoryStruct.comp (G.map (CategoryTheory.Limits.pullback.snd f g)) h - CategoryTheory.Limits.map_lift_pullbackComparison 📋 Mathlib.CategoryTheory.Limits.Shapes.Pullback.HasPullback
{C : Type u} [CategoryTheory.Category.{v, u} C] {X Y Z : C} {D : Type u₂} [CategoryTheory.Category.{v₂, u₂} D] (G : CategoryTheory.Functor C D) (f : X ⟶ Z) (g : Y ⟶ Z) [CategoryTheory.Limits.HasPullback f g] [CategoryTheory.Limits.HasPullback (G.map f) (G.map g)] {W : C} {h : W ⟶ X} {k : W ⟶ Y} (w : CategoryTheory.CategoryStruct.comp h f = CategoryTheory.CategoryStruct.comp k g) : CategoryTheory.CategoryStruct.comp (G.map (CategoryTheory.Limits.pullback.lift h k w)) (CategoryTheory.Limits.pullbackComparison G f g) = CategoryTheory.Limits.pullback.lift (G.map h) (G.map k) ⋯ - CategoryTheory.Limits.pullback.map_comp 📋 Mathlib.CategoryTheory.Limits.Shapes.Pullback.HasPullback
{C : Type u} [CategoryTheory.Category.{v, u} C] {X Y Z X' Y' Z' X'' Y'' Z'' : C} {f : X ⟶ Z} {g : Y ⟶ Z} {f' : X' ⟶ Z'} {g' : Y' ⟶ Z'} {f'' : X'' ⟶ Z''} {g'' : Y'' ⟶ Z''} (i₁ : X ⟶ X') (j₁ : X' ⟶ X'') (i₂ : Y ⟶ Y') (j₂ : Y' ⟶ Y'') (i₃ : Z ⟶ Z') (j₃ : Z' ⟶ Z'') [CategoryTheory.Limits.HasPullback f g] [CategoryTheory.Limits.HasPullback f' g'] [CategoryTheory.Limits.HasPullback f'' g''] (e₁ : CategoryTheory.CategoryStruct.comp f i₃ = CategoryTheory.CategoryStruct.comp i₁ f') (e₂ : CategoryTheory.CategoryStruct.comp g i₃ = CategoryTheory.CategoryStruct.comp i₂ g') (e₃ : CategoryTheory.CategoryStruct.comp f' j₃ = CategoryTheory.CategoryStruct.comp j₁ f'') (e₄ : CategoryTheory.CategoryStruct.comp g' j₃ = CategoryTheory.CategoryStruct.comp j₂ g'') : CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pullback.map f g f' g' i₁ i₂ i₃ e₁ e₂) (CategoryTheory.Limits.pullback.map f' g' f'' g'' j₁ j₂ j₃ e₃ e₄) = CategoryTheory.Limits.pullback.map f g f'' g'' (CategoryTheory.CategoryStruct.comp i₁ j₁) (CategoryTheory.CategoryStruct.comp i₂ j₂) (CategoryTheory.CategoryStruct.comp i₃ j₃) ⋯ ⋯ - CategoryTheory.Limits.map_lift_pullbackComparison_assoc 📋 Mathlib.CategoryTheory.Limits.Shapes.Pullback.HasPullback
{C : Type u} [CategoryTheory.Category.{v, u} C] {X Y Z : C} {D : Type u₂} [CategoryTheory.Category.{v₂, u₂} D] (G : CategoryTheory.Functor C D) (f : X ⟶ Z) (g : Y ⟶ Z) [CategoryTheory.Limits.HasPullback f g] [CategoryTheory.Limits.HasPullback (G.map f) (G.map g)] {W : C} {h : W ⟶ X} {k : W ⟶ Y} (w : CategoryTheory.CategoryStruct.comp h f = CategoryTheory.CategoryStruct.comp k g) {Z✝ : D} (h✝ : CategoryTheory.Limits.pullback (G.map f) (G.map g) ⟶ Z✝) : CategoryTheory.CategoryStruct.comp (G.map (CategoryTheory.Limits.pullback.lift h k w)) (CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pullbackComparison G f g) h✝) = CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pullback.lift (G.map h) (G.map k) ⋯) h✝ - CategoryTheory.Limits.pullback.map_comp_assoc 📋 Mathlib.CategoryTheory.Limits.Shapes.Pullback.HasPullback
{C : Type u} [CategoryTheory.Category.{v, u} C] {X Y Z X' Y' Z' X'' Y'' Z'' : C} {f : X ⟶ Z} {g : Y ⟶ Z} {f' : X' ⟶ Z'} {g' : Y' ⟶ Z'} {f'' : X'' ⟶ Z''} {g'' : Y'' ⟶ Z''} (i₁ : X ⟶ X') (j₁ : X' ⟶ X'') (i₂ : Y ⟶ Y') (j₂ : Y' ⟶ Y'') (i₃ : Z ⟶ Z') (j₃ : Z' ⟶ Z'') [CategoryTheory.Limits.HasPullback f g] [CategoryTheory.Limits.HasPullback f' g'] [CategoryTheory.Limits.HasPullback f'' g''] (e₁ : CategoryTheory.CategoryStruct.comp f i₃ = CategoryTheory.CategoryStruct.comp i₁ f') (e₂ : CategoryTheory.CategoryStruct.comp g i₃ = CategoryTheory.CategoryStruct.comp i₂ g') (e₃ : CategoryTheory.CategoryStruct.comp f' j₃ = CategoryTheory.CategoryStruct.comp j₁ f'') (e₄ : CategoryTheory.CategoryStruct.comp g' j₃ = CategoryTheory.CategoryStruct.comp j₂ g'') {Z✝ : C} (h : CategoryTheory.Limits.pullback f'' g'' ⟶ Z✝) : CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pullback.map f g f' g' i₁ i₂ i₃ e₁ e₂) (CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pullback.map f' g' f'' g'' j₁ j₂ j₃ e₃ e₄) h) = CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pullback.map f g f'' g'' (CategoryTheory.CategoryStruct.comp i₁ j₁) (CategoryTheory.CategoryStruct.comp i₂ j₂) (CategoryTheory.CategoryStruct.comp i₃ j₃) ⋯ ⋯) h - CategoryTheory.Limits.pullback.mapDesc_comp 📋 Mathlib.CategoryTheory.Limits.Shapes.Pullback.HasPullback
{C : Type u} [CategoryTheory.Category.{v, u} C] {X Y S T S' : C} (f : X ⟶ T) (g : Y ⟶ T) (i : T ⟶ S) (i' : S ⟶ S') [CategoryTheory.Limits.HasPullback f g] [CategoryTheory.Limits.HasPullback (CategoryTheory.CategoryStruct.comp f i) (CategoryTheory.CategoryStruct.comp g i)] [CategoryTheory.Limits.HasPullback (CategoryTheory.CategoryStruct.comp f (CategoryTheory.CategoryStruct.comp i i')) (CategoryTheory.CategoryStruct.comp g (CategoryTheory.CategoryStruct.comp i i'))] [CategoryTheory.Limits.HasPullback (CategoryTheory.CategoryStruct.comp (CategoryTheory.CategoryStruct.comp f i) i') (CategoryTheory.CategoryStruct.comp (CategoryTheory.CategoryStruct.comp g i) i')] : CategoryTheory.Limits.pullback.mapDesc f g (CategoryTheory.CategoryStruct.comp i i') = CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pullback.mapDesc f g i) (CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pullback.mapDesc (CategoryTheory.CategoryStruct.comp f i) (CategoryTheory.CategoryStruct.comp g i) i') (CategoryTheory.Limits.pullback.congrHom ⋯ ⋯).hom) - CategoryTheory.Limits.pullbackComparison_comp 📋 Mathlib.CategoryTheory.Limits.Shapes.Pullback.HasPullback
{C : Type u} [CategoryTheory.Category.{v, u} C] {D : Type u₂} [CategoryTheory.Category.{v₂, u₂} D] {E : Type u_1} [CategoryTheory.Category.{v_1, u_1} E] (F : CategoryTheory.Functor C D) (G : CategoryTheory.Functor D E) {X Y S : C} (f : X ⟶ S) (g : Y ⟶ S) [CategoryTheory.Limits.HasPullback f g] [CategoryTheory.Limits.HasPullback (F.map f) (F.map g)] [CategoryTheory.Limits.HasPullback (G.map (F.map f)) (G.map (F.map g))] [CategoryTheory.Limits.HasPullback ((F.comp G).map f) ((F.comp G).map g)] : CategoryTheory.Limits.pullbackComparison (F.comp G) f g = CategoryTheory.CategoryStruct.comp (G.map (CategoryTheory.Limits.pullbackComparison F f g)) (CategoryTheory.Limits.pullbackComparison G (F.map f) (F.map g)) - CategoryTheory.Limits.pullbackComparison_comp_assoc 📋 Mathlib.CategoryTheory.Limits.Shapes.Pullback.HasPullback
{C : Type u} [CategoryTheory.Category.{v, u} C] {D : Type u₂} [CategoryTheory.Category.{v₂, u₂} D] {E : Type u_1} [CategoryTheory.Category.{v_1, u_1} E] (F : CategoryTheory.Functor C D) (G : CategoryTheory.Functor D E) {X Y S : C} (f : X ⟶ S) (g : Y ⟶ S) [CategoryTheory.Limits.HasPullback f g] [CategoryTheory.Limits.HasPullback (F.map f) (F.map g)] [CategoryTheory.Limits.HasPullback (G.map (F.map f)) (G.map (F.map g))] [CategoryTheory.Limits.HasPullback ((F.comp G).map f) ((F.comp G).map g)] {Z : E} (h : CategoryTheory.Limits.pullback (G.map (F.map f)) (G.map (F.map g)) ⟶ Z) : CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pullbackComparison (F.comp G) f g) h = CategoryTheory.CategoryStruct.comp (G.map (CategoryTheory.Limits.pullbackComparison F f g)) (CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pullbackComparison G (F.map f) (F.map g)) h) - CategoryTheory.Limits.pullback_fst_iso_of_right_iso 📋 Mathlib.CategoryTheory.Limits.Shapes.Pullback.Iso
{C : Type u} [CategoryTheory.Category.{v, u} C] {X Y Z : C} (f : X ⟶ Z) (g : Y ⟶ Z) [CategoryTheory.IsIso g] : CategoryTheory.IsIso (CategoryTheory.Limits.pullback.fst f g) - CategoryTheory.Limits.pullback_snd_iso_of_left_iso 📋 Mathlib.CategoryTheory.Limits.Shapes.Pullback.Iso
{C : Type u} [CategoryTheory.Category.{v, u} C] {X Y Z : C} (f : X ⟶ Z) (g : Y ⟶ Z) [CategoryTheory.IsIso f] : CategoryTheory.IsIso (CategoryTheory.Limits.pullback.snd f g) - CategoryTheory.Limits.pullback_inv_fst_snd_of_right_isIso 📋 Mathlib.CategoryTheory.Limits.Shapes.Pullback.Iso
{C : Type u} [CategoryTheory.Category.{v, u} C] {X Y Z : C} (f : X ⟶ Z) (g : Y ⟶ Z) [CategoryTheory.IsIso g] : CategoryTheory.CategoryStruct.comp (CategoryTheory.inv (CategoryTheory.Limits.pullback.fst f g)) (CategoryTheory.Limits.pullback.snd f g) = CategoryTheory.CategoryStruct.comp f (CategoryTheory.inv g) - CategoryTheory.Limits.pullback_inv_snd_fst_of_left_isIso 📋 Mathlib.CategoryTheory.Limits.Shapes.Pullback.Iso
{C : Type u} [CategoryTheory.Category.{v, u} C] {X Y Z : C} (f : X ⟶ Z) (g : Y ⟶ Z) [CategoryTheory.IsIso f] : CategoryTheory.CategoryStruct.comp (CategoryTheory.inv (CategoryTheory.Limits.pullback.snd f g)) (CategoryTheory.Limits.pullback.fst f g) = CategoryTheory.CategoryStruct.comp g (CategoryTheory.inv f) - CategoryTheory.Limits.pullback_inv_fst_snd_of_right_isIso_assoc 📋 Mathlib.CategoryTheory.Limits.Shapes.Pullback.Iso
{C : Type u} [CategoryTheory.Category.{v, u} C] {X Y Z : C} (f : X ⟶ Z) (g : Y ⟶ Z) [CategoryTheory.IsIso g] {Z✝ : C} (h : Y ⟶ Z✝) : CategoryTheory.CategoryStruct.comp (CategoryTheory.inv (CategoryTheory.Limits.pullback.fst f g)) (CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pullback.snd f g) h) = CategoryTheory.CategoryStruct.comp f (CategoryTheory.CategoryStruct.comp (CategoryTheory.inv g) h) - CategoryTheory.Limits.pullback_inv_snd_fst_of_left_isIso_assoc 📋 Mathlib.CategoryTheory.Limits.Shapes.Pullback.Iso
{C : Type u} [CategoryTheory.Category.{v, u} C] {X Y Z : C} (f : X ⟶ Z) (g : Y ⟶ Z) [CategoryTheory.IsIso f] {Z✝ : C} (h : X ⟶ Z✝) : CategoryTheory.CategoryStruct.comp (CategoryTheory.inv (CategoryTheory.Limits.pullback.snd f g)) (CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pullback.fst f g) h) = CategoryTheory.CategoryStruct.comp g (CategoryTheory.CategoryStruct.comp (CategoryTheory.inv f) h) - CategoryTheory.Limits.isIso_fst_of_mono 📋 Mathlib.CategoryTheory.Limits.Shapes.Pullback.Mono
{C : Type u} [CategoryTheory.Category.{v, u} C] {X Y : C} (f : X ⟶ Y) [CategoryTheory.Mono f] : CategoryTheory.IsIso (CategoryTheory.Limits.pullback.fst f f) - CategoryTheory.Limits.isIso_snd_of_mono 📋 Mathlib.CategoryTheory.Limits.Shapes.Pullback.Mono
{C : Type u} [CategoryTheory.Category.{v, u} C] {X Y : C} (f : X ⟶ Y) [CategoryTheory.Mono f] : CategoryTheory.IsIso (CategoryTheory.Limits.pullback.snd f f) - CategoryTheory.Limits.pullback.fst_of_mono 📋 Mathlib.CategoryTheory.Limits.Shapes.Pullback.Mono
{C : Type u} [CategoryTheory.Category.{v, u} C] {X Y Z : C} {f : X ⟶ Z} {g : Y ⟶ Z} [CategoryTheory.Limits.HasPullback f g] [CategoryTheory.Mono g] : CategoryTheory.Mono (CategoryTheory.Limits.pullback.fst f g) - CategoryTheory.Limits.pullback.snd_of_mono 📋 Mathlib.CategoryTheory.Limits.Shapes.Pullback.Mono
{C : Type u} [CategoryTheory.Category.{v, u} C] {X Y Z : C} {f : X ⟶ Z} {g : Y ⟶ Z} [CategoryTheory.Limits.HasPullback f g] [CategoryTheory.Mono f] : CategoryTheory.Mono (CategoryTheory.Limits.pullback.snd f g) - CategoryTheory.Limits.fst_eq_snd_of_mono_eq 📋 Mathlib.CategoryTheory.Limits.Shapes.Pullback.Mono
{C : Type u} [CategoryTheory.Category.{v, u} C] {X Y : C} (f : X ⟶ Y) [CategoryTheory.Mono f] : CategoryTheory.Limits.pullback.fst f f = CategoryTheory.Limits.pullback.snd f f - CategoryTheory.Limits.pullback_snd_iso_of_left_factors_mono 📋 Mathlib.CategoryTheory.Limits.Shapes.Pullback.Mono
{C : Type u} [CategoryTheory.Category.{v, u} C] {W X Z : C} (f : X ⟶ Z) (i : Z ⟶ W) [CategoryTheory.Mono i] : CategoryTheory.IsIso (CategoryTheory.Limits.pullback.fst (CategoryTheory.CategoryStruct.comp f i) i) - CategoryTheory.Limits.pullback_snd_iso_of_right_factors_mono 📋 Mathlib.CategoryTheory.Limits.Shapes.Pullback.Mono
{C : Type u} [CategoryTheory.Category.{v, u} C] {W X Z : C} (f : X ⟶ Z) (i : Z ⟶ W) [CategoryTheory.Mono i] : CategoryTheory.IsIso (CategoryTheory.Limits.pullback.snd i (CategoryTheory.CategoryStruct.comp f i)) - CategoryTheory.Limits.mono_pullback_to_prod 📋 Mathlib.CategoryTheory.Limits.Shapes.Pullback.Mono
{C : Type u_1} [CategoryTheory.Category.{v_1, u_1} C] {X Y Z : C} (f : X ⟶ Z) (g : Y ⟶ Z) [CategoryTheory.Limits.HasPullback f g] [CategoryTheory.Limits.HasBinaryProduct X Y] : CategoryTheory.Mono (CategoryTheory.Limits.prod.lift (CategoryTheory.Limits.pullback.fst f g) (CategoryTheory.Limits.pullback.snd f g)) - CategoryTheory.Limits.pullbackSymmetry_hom_of_mono_eq 📋 Mathlib.CategoryTheory.Limits.Shapes.Pullback.Mono
{C : Type u} [CategoryTheory.Category.{v, u} C] {X Y : C} (f : X ⟶ Y) [CategoryTheory.Mono f] : (CategoryTheory.Limits.pullbackSymmetry f f).hom = CategoryTheory.CategoryStruct.id (CategoryTheory.Limits.pullback f f) - CategoryTheory.Limits.pullbackIsPullbackOfCompMono 📋 Mathlib.CategoryTheory.Limits.Shapes.Pullback.Mono
{C : Type u} [CategoryTheory.Category.{v, u} C] {W X Y Z : C} (f : X ⟶ W) (g : Y ⟶ W) (i : W ⟶ Z) [CategoryTheory.Mono i] [CategoryTheory.Limits.HasPullback f g] : CategoryTheory.Limits.IsLimit (CategoryTheory.Limits.PullbackCone.mk (CategoryTheory.Limits.pullback.fst f g) (CategoryTheory.Limits.pullback.snd f g) ⋯) - CategoryTheory.Limits.pullbackIsoUnopPushout 📋 Mathlib.CategoryTheory.Limits.Shapes.Opposites.Pullbacks
{C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] {X Y Z : C} (f : X ⟶ Z) (g : Y ⟶ Z) [h : CategoryTheory.Limits.HasPullback f g] : CategoryTheory.Limits.pullback f g ≅ Opposite.unop (CategoryTheory.Limits.pushout f.op g.op) - CategoryTheory.Limits.pushoutIsoUnopPullback 📋 Mathlib.CategoryTheory.Limits.Shapes.Opposites.Pullbacks
{C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] {X Y Z : C} (f : X ⟶ Z) (g : X ⟶ Y) [h : CategoryTheory.Limits.HasPushout f g] : CategoryTheory.Limits.pushout f g ≅ Opposite.unop (CategoryTheory.Limits.pullback f.op g.op) - CategoryTheory.Limits.pullbackIsoOpPushout 📋 Mathlib.CategoryTheory.Limits.Shapes.Opposites.Pullbacks
{C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] {X Y Z : Cᵒᵖ} (f : X ⟶ Z) (g : Y ⟶ Z) [h : CategoryTheory.Limits.HasPullback f g] : CategoryTheory.Limits.pullback f g ≅ Opposite.op (CategoryTheory.Limits.pushout f.unop g.unop) - CategoryTheory.Limits.pushoutIsoOpPullback 📋 Mathlib.CategoryTheory.Limits.Shapes.Opposites.Pullbacks
{C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] {X Y Z : Cᵒᵖ} (f : X ⟶ Z) (g : X ⟶ Y) [h : CategoryTheory.Limits.HasPushout f g] : CategoryTheory.Limits.pushout f g ≅ Opposite.op (CategoryTheory.Limits.pullback f.unop g.unop) - CategoryTheory.Limits.pullbackIsoUnopPushout_inv_fst 📋 Mathlib.CategoryTheory.Limits.Shapes.Opposites.Pullbacks
{C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] {X Y Z : C} (f : X ⟶ Z) (g : Y ⟶ Z) [CategoryTheory.Limits.HasPullback f g] : CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pullbackIsoUnopPushout f g).inv (CategoryTheory.Limits.pullback.fst f g) = (CategoryTheory.Limits.pushout.inl f.op g.op).unop - CategoryTheory.Limits.pullbackIsoUnopPushout_inv_snd 📋 Mathlib.CategoryTheory.Limits.Shapes.Opposites.Pullbacks
{C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] {X Y Z : C} (f : X ⟶ Z) (g : Y ⟶ Z) [CategoryTheory.Limits.HasPullback f g] : CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pullbackIsoUnopPushout f g).inv (CategoryTheory.Limits.pullback.snd f g) = (CategoryTheory.Limits.pushout.inr f.op g.op).unop - CategoryTheory.Limits.pushoutIsoUnopPullback_inl_hom 📋 Mathlib.CategoryTheory.Limits.Shapes.Opposites.Pullbacks
{C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] {X Y Z : C} (f : X ⟶ Z) (g : X ⟶ Y) [CategoryTheory.Limits.HasPushout f g] : CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pushout.inl f g) (CategoryTheory.Limits.pushoutIsoUnopPullback f g).hom = (CategoryTheory.Limits.pullback.fst f.op g.op).unop - CategoryTheory.Limits.pushoutIsoUnopPullback_inr_hom 📋 Mathlib.CategoryTheory.Limits.Shapes.Opposites.Pullbacks
{C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] {X Y Z : C} (f : X ⟶ Z) (g : X ⟶ Y) [CategoryTheory.Limits.HasPushout f g] : CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pushout.inr f g) (CategoryTheory.Limits.pushoutIsoUnopPullback f g).hom = (CategoryTheory.Limits.pullback.snd f.op g.op).unop - CategoryTheory.Limits.pullbackIsoUnopPushout_hom_inl 📋 Mathlib.CategoryTheory.Limits.Shapes.Opposites.Pullbacks
{C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] {X Y Z : C} (f : X ⟶ Z) (g : Y ⟶ Z) [CategoryTheory.Limits.HasPullback f g] : CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pushout.inl f.op g.op) (CategoryTheory.Limits.pullbackIsoUnopPushout f g).hom.op = (CategoryTheory.Limits.pullback.fst f g).op - CategoryTheory.Limits.pullbackIsoUnopPushout_hom_inr 📋 Mathlib.CategoryTheory.Limits.Shapes.Opposites.Pullbacks
{C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] {X Y Z : C} (f : X ⟶ Z) (g : Y ⟶ Z) [CategoryTheory.Limits.HasPullback f g] : CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pushout.inr f.op g.op) (CategoryTheory.Limits.pullbackIsoUnopPushout f g).hom.op = (CategoryTheory.Limits.pullback.snd f g).op - CategoryTheory.Limits.pushoutIsoUnopPullback_inv_fst 📋 Mathlib.CategoryTheory.Limits.Shapes.Opposites.Pullbacks
{C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] {X Y Z : C} (f : X ⟶ Z) (g : X ⟶ Y) [CategoryTheory.Limits.HasPushout f g] : CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pushoutIsoUnopPullback f g).inv.op (CategoryTheory.Limits.pullback.fst f.op g.op) = (CategoryTheory.Limits.pushout.inl f g).op - CategoryTheory.Limits.pushoutIsoUnopPullback_inv_snd 📋 Mathlib.CategoryTheory.Limits.Shapes.Opposites.Pullbacks
{C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] {X Y Z : C} (f : X ⟶ Z) (g : X ⟶ Y) [CategoryTheory.Limits.HasPushout f g] : CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pushoutIsoUnopPullback f g).inv.op (CategoryTheory.Limits.pullback.snd f.op g.op) = (CategoryTheory.Limits.pushout.inr f g).op - CategoryTheory.Limits.pullbackIsoOpPushout_hom_inl 📋 Mathlib.CategoryTheory.Limits.Shapes.Opposites.Pullbacks
{C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] {X Y Z : Cᵒᵖ} (f : X ⟶ Z) (g : Y ⟶ Z) [CategoryTheory.Limits.HasPullback f g] : CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pushout.inl f.unop g.unop) (CategoryTheory.Limits.pullbackIsoOpPushout f g).hom.unop = (CategoryTheory.Limits.pullback.fst f g).unop - CategoryTheory.Limits.pullbackIsoOpPushout_hom_inr 📋 Mathlib.CategoryTheory.Limits.Shapes.Opposites.Pullbacks
{C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] {X Y Z : Cᵒᵖ} (f : X ⟶ Z) (g : Y ⟶ Z) [CategoryTheory.Limits.HasPullback f g] : CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pushout.inr f.unop g.unop) (CategoryTheory.Limits.pullbackIsoOpPushout f g).hom.unop = (CategoryTheory.Limits.pullback.snd f g).unop - CategoryTheory.Limits.pullbackIsoOpPushout_inv_fst 📋 Mathlib.CategoryTheory.Limits.Shapes.Opposites.Pullbacks
{C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] {X Y Z : Cᵒᵖ} (f : X ⟶ Z) (g : Y ⟶ Z) [CategoryTheory.Limits.HasPullback f g] : CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pullbackIsoOpPushout f g).inv (CategoryTheory.Limits.pullback.fst f g) = (CategoryTheory.Limits.pushout.inl f.unop g.unop).op - CategoryTheory.Limits.pullbackIsoOpPushout_inv_snd 📋 Mathlib.CategoryTheory.Limits.Shapes.Opposites.Pullbacks
{C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] {X Y Z : Cᵒᵖ} (f : X ⟶ Z) (g : Y ⟶ Z) [CategoryTheory.Limits.HasPullback f g] : CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pullbackIsoOpPushout f g).inv (CategoryTheory.Limits.pullback.snd f g) = (CategoryTheory.Limits.pushout.inr f.unop g.unop).op - CategoryTheory.Limits.pushoutIsoOpPullback_inl_hom 📋 Mathlib.CategoryTheory.Limits.Shapes.Opposites.Pullbacks
{C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] {X Y Z : Cᵒᵖ} (f : X ⟶ Z) (g : X ⟶ Y) [CategoryTheory.Limits.HasPushout f g] : CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pushout.inl f g) (CategoryTheory.Limits.pushoutIsoOpPullback f g).hom = (CategoryTheory.Limits.pullback.fst f.unop g.unop).op - CategoryTheory.Limits.pushoutIsoOpPullback_inr_hom 📋 Mathlib.CategoryTheory.Limits.Shapes.Opposites.Pullbacks
{C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] {X Y Z : Cᵒᵖ} (f : X ⟶ Z) (g : X ⟶ Y) [CategoryTheory.Limits.HasPushout f g] : CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pushout.inr f g) (CategoryTheory.Limits.pushoutIsoOpPullback f g).hom = (CategoryTheory.Limits.pullback.snd f.unop g.unop).op - CategoryTheory.Limits.pushoutIsoOpPullback_inv_fst 📋 Mathlib.CategoryTheory.Limits.Shapes.Opposites.Pullbacks
{C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] {X Y Z : Cᵒᵖ} (f : X ⟶ Z) (g : X ⟶ Y) [CategoryTheory.Limits.HasPushout f g] : CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pushoutIsoOpPullback f g).inv.unop (CategoryTheory.Limits.pullback.fst f.unop g.unop) = (CategoryTheory.Limits.pushout.inl f g).unop - CategoryTheory.Limits.pushoutIsoOpPullback_inv_snd 📋 Mathlib.CategoryTheory.Limits.Shapes.Opposites.Pullbacks
{C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] {X Y Z : Cᵒᵖ} (f : X ⟶ Z) (g : X ⟶ Y) [CategoryTheory.Limits.HasPushout f g] : CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pushoutIsoOpPullback f g).inv.unop (CategoryTheory.Limits.pullback.snd f.unop g.unop) = (CategoryTheory.Limits.pushout.inr f g).unop - CategoryTheory.Limits.pullbackIsoUnopPushout_inv_fst_assoc 📋 Mathlib.CategoryTheory.Limits.Shapes.Opposites.Pullbacks
{C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] {X Y Z : C} (f : X ⟶ Z) (g : Y ⟶ Z) [CategoryTheory.Limits.HasPullback f g] {Z✝ : C} (h : X ⟶ Z✝) : CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pullbackIsoUnopPushout f g).inv (CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pullback.fst f g) h) = CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pushout.inl f.op g.op).unop h - CategoryTheory.Limits.pullbackIsoUnopPushout_inv_snd_assoc 📋 Mathlib.CategoryTheory.Limits.Shapes.Opposites.Pullbacks
{C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] {X Y Z : C} (f : X ⟶ Z) (g : Y ⟶ Z) [CategoryTheory.Limits.HasPullback f g] {Z✝ : C} (h : Y ⟶ Z✝) : CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pullbackIsoUnopPushout f g).inv (CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pullback.snd f g) h) = CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pushout.inr f.op g.op).unop h - CategoryTheory.Limits.pushoutIsoUnopPullback_inl_hom_assoc 📋 Mathlib.CategoryTheory.Limits.Shapes.Opposites.Pullbacks
{C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] {X Y Z : C} (f : X ⟶ Z) (g : X ⟶ Y) [CategoryTheory.Limits.HasPushout f g] {Z✝ : C} (h : Opposite.unop (CategoryTheory.Limits.pullback f.op g.op) ⟶ Z✝) : CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pushout.inl f g) (CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pushoutIsoUnopPullback f g).hom h) = CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pullback.fst f.op g.op).unop h - CategoryTheory.Limits.pushoutIsoUnopPullback_inr_hom_assoc 📋 Mathlib.CategoryTheory.Limits.Shapes.Opposites.Pullbacks
{C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] {X Y Z : C} (f : X ⟶ Z) (g : X ⟶ Y) [CategoryTheory.Limits.HasPushout f g] {Z✝ : C} (h : Opposite.unop (CategoryTheory.Limits.pullback f.op g.op) ⟶ Z✝) : CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pushout.inr f g) (CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pushoutIsoUnopPullback f g).hom h) = CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pullback.snd f.op g.op).unop h - CategoryTheory.Limits.pullbackIsoOpPushout_hom_inl_assoc 📋 Mathlib.CategoryTheory.Limits.Shapes.Opposites.Pullbacks
{C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] {X Y Z : Cᵒᵖ} (f : X ⟶ Z) (g : Y ⟶ Z) [CategoryTheory.Limits.HasPullback f g] {Z✝ : C} (h : Opposite.unop (CategoryTheory.Limits.pullback f g) ⟶ Z✝) : CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pushout.inl f.unop g.unop) (CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pullbackIsoOpPushout f g).hom.unop h) = CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pullback.fst f g).unop h - CategoryTheory.Limits.pullbackIsoOpPushout_hom_inr_assoc 📋 Mathlib.CategoryTheory.Limits.Shapes.Opposites.Pullbacks
{C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] {X Y Z : Cᵒᵖ} (f : X ⟶ Z) (g : Y ⟶ Z) [CategoryTheory.Limits.HasPullback f g] {Z✝ : C} (h : Opposite.unop (CategoryTheory.Limits.pullback f g) ⟶ Z✝) : CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pushout.inr f.unop g.unop) (CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pullbackIsoOpPushout f g).hom.unop h) = CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pullback.snd f g).unop h - CategoryTheory.Limits.pullbackIsoUnopPushout_hom_inl_assoc 📋 Mathlib.CategoryTheory.Limits.Shapes.Opposites.Pullbacks
{C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] {X Y Z : C} (f : X ⟶ Z) (g : Y ⟶ Z) [CategoryTheory.Limits.HasPullback f g] {Z✝ : Cᵒᵖ} (h : Opposite.op (CategoryTheory.Limits.pullback f g) ⟶ Z✝) : CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pushout.inl f.op g.op) (CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pullbackIsoUnopPushout f g).hom.op h) = CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pullback.fst f g).op h - CategoryTheory.Limits.pullbackIsoUnopPushout_hom_inr_assoc 📋 Mathlib.CategoryTheory.Limits.Shapes.Opposites.Pullbacks
{C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] {X Y Z : C} (f : X ⟶ Z) (g : Y ⟶ Z) [CategoryTheory.Limits.HasPullback f g] {Z✝ : Cᵒᵖ} (h : Opposite.op (CategoryTheory.Limits.pullback f g) ⟶ Z✝) : CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pushout.inr f.op g.op) (CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pullbackIsoUnopPushout f g).hom.op h) = CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pullback.snd f g).op h - CategoryTheory.Limits.pullbackIsoOpPushout_inv_fst_assoc 📋 Mathlib.CategoryTheory.Limits.Shapes.Opposites.Pullbacks
{C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] {X Y Z : Cᵒᵖ} (f : X ⟶ Z) (g : Y ⟶ Z) [CategoryTheory.Limits.HasPullback f g] {Z✝ : Cᵒᵖ} (h : X ⟶ Z✝) : CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pullbackIsoOpPushout f g).inv (CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pullback.fst f g) h) = CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pushout.inl f.unop g.unop).op h - CategoryTheory.Limits.pullbackIsoOpPushout_inv_snd_assoc 📋 Mathlib.CategoryTheory.Limits.Shapes.Opposites.Pullbacks
{C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] {X Y Z : Cᵒᵖ} (f : X ⟶ Z) (g : Y ⟶ Z) [CategoryTheory.Limits.HasPullback f g] {Z✝ : Cᵒᵖ} (h : Y ⟶ Z✝) : CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pullbackIsoOpPushout f g).inv (CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pullback.snd f g) h) = CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pushout.inr f.unop g.unop).op h - CategoryTheory.Limits.pushoutIsoOpPullback_inl_hom_assoc 📋 Mathlib.CategoryTheory.Limits.Shapes.Opposites.Pullbacks
{C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] {X Y Z : Cᵒᵖ} (f : X ⟶ Z) (g : X ⟶ Y) [CategoryTheory.Limits.HasPushout f g] {Z✝ : Cᵒᵖ} (h : Opposite.op (CategoryTheory.Limits.pullback f.unop g.unop) ⟶ Z✝) : CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pushout.inl f g) (CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pushoutIsoOpPullback f g).hom h) = CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pullback.fst f.unop g.unop).op h - CategoryTheory.Limits.pushoutIsoOpPullback_inr_hom_assoc 📋 Mathlib.CategoryTheory.Limits.Shapes.Opposites.Pullbacks
{C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] {X Y Z : Cᵒᵖ} (f : X ⟶ Z) (g : X ⟶ Y) [CategoryTheory.Limits.HasPushout f g] {Z✝ : Cᵒᵖ} (h : Opposite.op (CategoryTheory.Limits.pullback f.unop g.unop) ⟶ Z✝) : CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pushout.inr f g) (CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pushoutIsoOpPullback f g).hom h) = CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pullback.snd f.unop g.unop).op h - CategoryTheory.Limits.op_pullbackMap 📋 Mathlib.CategoryTheory.Limits.Shapes.Opposites.Pullbacks
{C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] {W X Y Z S T : C} (f₁ : W ⟶ S) (f₂ : X ⟶ S) [CategoryTheory.Limits.HasPullback f₁ f₂] (g₁ : Y ⟶ T) (g₂ : Z ⟶ T) [CategoryTheory.Limits.HasPullback g₁ g₂] (i₁ : W ⟶ Y) (i₂ : X ⟶ Z) (i₃ : S ⟶ T) (eq₁ : CategoryTheory.CategoryStruct.comp f₁ i₃ = CategoryTheory.CategoryStruct.comp i₁ g₁) (eq₂ : CategoryTheory.CategoryStruct.comp f₂ i₃ = CategoryTheory.CategoryStruct.comp i₂ g₂) : (CategoryTheory.Limits.pullback.map f₁ f₂ g₁ g₂ i₁ i₂ i₃ eq₁ eq₂).op = CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pushoutIsoOpPullback g₁.op g₂.op).inv (CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pushout.map g₁.op g₂.op f₁.op f₂.op i₁.op i₂.op i₃.op ⋯ ⋯) (CategoryTheory.Limits.pushoutIsoOpPullback f₁.op f₂.op).hom) - CategoryTheory.Limits.op_pushoutMap 📋 Mathlib.CategoryTheory.Limits.Shapes.Opposites.Pullbacks
{C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] {W X Y Z S T : C} (f₁ : S ⟶ W) (f₂ : S ⟶ X) [CategoryTheory.Limits.HasPushout f₁ f₂] (g₁ : T ⟶ Y) (g₂ : T ⟶ Z) [CategoryTheory.Limits.HasPushout g₁ g₂] (i₁ : W ⟶ Y) (i₂ : X ⟶ Z) (i₃ : S ⟶ T) (eq₁ : CategoryTheory.CategoryStruct.comp f₁ i₁ = CategoryTheory.CategoryStruct.comp i₃ g₁) (eq₂ : CategoryTheory.CategoryStruct.comp f₂ i₂ = CategoryTheory.CategoryStruct.comp i₃ g₂) : (CategoryTheory.Limits.pushout.map f₁ f₂ g₁ g₂ i₁ i₂ i₃ eq₁ eq₂).op = CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pullbackIsoOpPushout g₁.op g₂.op).inv (CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pullback.map g₁.op g₂.op f₁.op f₂.op i₁.op i₂.op i₃.op ⋯ ⋯) (CategoryTheory.Limits.pullbackIsoOpPushout f₁.op f₂.op).hom) - CategoryTheory.Limits.PreservesPullback.iso 📋 Mathlib.CategoryTheory.Limits.Preserves.Shapes.Pullbacks
{C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] {D : Type u₂} [CategoryTheory.Category.{v₂, u₂} D] (G : CategoryTheory.Functor C D) {X Y Z : C} (f : X ⟶ Z) (g : Y ⟶ Z) [CategoryTheory.Limits.PreservesLimit (CategoryTheory.Limits.cospan f g) G] [CategoryTheory.Limits.HasPullback f g] [CategoryTheory.Limits.HasPullback (G.map f) (G.map g)] : G.obj (CategoryTheory.Limits.pullback f g) ≅ CategoryTheory.Limits.pullback (G.map f) (G.map g) - CategoryTheory.Limits.instIsIsoPullbackComparison 📋 Mathlib.CategoryTheory.Limits.Preserves.Shapes.Pullbacks
{C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] {D : Type u₂} [CategoryTheory.Category.{v₂, u₂} D] (G : CategoryTheory.Functor C D) {X Y Z : C} {f : X ⟶ Z} {g : Y ⟶ Z} [CategoryTheory.Limits.HasPullback f g] [CategoryTheory.Limits.HasPullback (G.map f) (G.map g)] [CategoryTheory.Limits.PreservesLimit (CategoryTheory.Limits.cospan f g) G] : CategoryTheory.IsIso (CategoryTheory.Limits.pullbackComparison G f g) - CategoryTheory.Limits.PreservesPullback.of_iso_comparison 📋 Mathlib.CategoryTheory.Limits.Preserves.Shapes.Pullbacks
{C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] {D : Type u₂} [CategoryTheory.Category.{v₂, u₂} D] (G : CategoryTheory.Functor C D) {X Y Z : C} {f : X ⟶ Z} {g : Y ⟶ Z} [CategoryTheory.Limits.HasPullback f g] [CategoryTheory.Limits.HasPullback (G.map f) (G.map g)] [i : CategoryTheory.IsIso (CategoryTheory.Limits.pullbackComparison G f g)] : CategoryTheory.Limits.PreservesLimit (CategoryTheory.Limits.cospan f g) G - CategoryTheory.Limits.PreservesPullback.iso_hom 📋 Mathlib.CategoryTheory.Limits.Preserves.Shapes.Pullbacks
{C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] {D : Type u₂} [CategoryTheory.Category.{v₂, u₂} D] (G : CategoryTheory.Functor C D) {X Y Z : C} (f : X ⟶ Z) (g : Y ⟶ Z) [CategoryTheory.Limits.PreservesLimit (CategoryTheory.Limits.cospan f g) G] [CategoryTheory.Limits.HasPullback f g] [CategoryTheory.Limits.HasPullback (G.map f) (G.map g)] : (CategoryTheory.Limits.PreservesPullback.iso G f g).hom = CategoryTheory.Limits.pullbackComparison G f g - CategoryTheory.Limits.PreservesPullback.iso_hom_fst 📋 Mathlib.CategoryTheory.Limits.Preserves.Shapes.Pullbacks
{C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] {D : Type u₂} [CategoryTheory.Category.{v₂, u₂} D] (G : CategoryTheory.Functor C D) {X Y Z : C} (f : X ⟶ Z) (g : Y ⟶ Z) [CategoryTheory.Limits.PreservesLimit (CategoryTheory.Limits.cospan f g) G] [CategoryTheory.Limits.HasPullback f g] [CategoryTheory.Limits.HasPullback (G.map f) (G.map g)] : CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.PreservesPullback.iso G f g).hom (CategoryTheory.Limits.pullback.fst (G.map f) (G.map g)) = G.map (CategoryTheory.Limits.pullback.fst f g) - CategoryTheory.Limits.PreservesPullback.iso_hom_snd 📋 Mathlib.CategoryTheory.Limits.Preserves.Shapes.Pullbacks
{C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] {D : Type u₂} [CategoryTheory.Category.{v₂, u₂} D] (G : CategoryTheory.Functor C D) {X Y Z : C} (f : X ⟶ Z) (g : Y ⟶ Z) [CategoryTheory.Limits.PreservesLimit (CategoryTheory.Limits.cospan f g) G] [CategoryTheory.Limits.HasPullback f g] [CategoryTheory.Limits.HasPullback (G.map f) (G.map g)] : CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.PreservesPullback.iso G f g).hom (CategoryTheory.Limits.pullback.snd (G.map f) (G.map g)) = G.map (CategoryTheory.Limits.pullback.snd f g) - CategoryTheory.Limits.PreservesPullback.iso_inv_fst 📋 Mathlib.CategoryTheory.Limits.Preserves.Shapes.Pullbacks
{C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] {D : Type u₂} [CategoryTheory.Category.{v₂, u₂} D] (G : CategoryTheory.Functor C D) {X Y Z : C} (f : X ⟶ Z) (g : Y ⟶ Z) [CategoryTheory.Limits.PreservesLimit (CategoryTheory.Limits.cospan f g) G] [CategoryTheory.Limits.HasPullback f g] [CategoryTheory.Limits.HasPullback (G.map f) (G.map g)] : CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.PreservesPullback.iso G f g).inv (G.map (CategoryTheory.Limits.pullback.fst f g)) = CategoryTheory.Limits.pullback.fst (G.map f) (G.map g) - CategoryTheory.Limits.PreservesPullback.iso_inv_snd 📋 Mathlib.CategoryTheory.Limits.Preserves.Shapes.Pullbacks
{C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] {D : Type u₂} [CategoryTheory.Category.{v₂, u₂} D] (G : CategoryTheory.Functor C D) {X Y Z : C} (f : X ⟶ Z) (g : Y ⟶ Z) [CategoryTheory.Limits.PreservesLimit (CategoryTheory.Limits.cospan f g) G] [CategoryTheory.Limits.HasPullback f g] [CategoryTheory.Limits.HasPullback (G.map f) (G.map g)] : CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.PreservesPullback.iso G f g).inv (G.map (CategoryTheory.Limits.pullback.snd f g)) = CategoryTheory.Limits.pullback.snd (G.map f) (G.map g) - CategoryTheory.Limits.isLimitOfHasPullbackOfPreservesLimit 📋 Mathlib.CategoryTheory.Limits.Preserves.Shapes.Pullbacks
{C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] {D : Type u₂} [CategoryTheory.Category.{v₂, u₂} D] (G : CategoryTheory.Functor C D) {X Y Z : C} (f : X ⟶ Z) (g : Y ⟶ Z) [CategoryTheory.Limits.PreservesLimit (CategoryTheory.Limits.cospan f g) G] [CategoryTheory.Limits.HasPullback f g] : have this := ⋯; CategoryTheory.Limits.IsLimit (CategoryTheory.Limits.PullbackCone.mk (G.map (CategoryTheory.Limits.pullback.fst f g)) (G.map (CategoryTheory.Limits.pullback.snd f g)) this) - CategoryTheory.Limits.PreservesPullback.iso_hom_fst_assoc 📋 Mathlib.CategoryTheory.Limits.Preserves.Shapes.Pullbacks
{C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] {D : Type u₂} [CategoryTheory.Category.{v₂, u₂} D] (G : CategoryTheory.Functor C D) {X Y Z : C} (f : X ⟶ Z) (g : Y ⟶ Z) [CategoryTheory.Limits.PreservesLimit (CategoryTheory.Limits.cospan f g) G] [CategoryTheory.Limits.HasPullback f g] [CategoryTheory.Limits.HasPullback (G.map f) (G.map g)] {Z✝ : D} (h : G.obj X ⟶ Z✝) : CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.PreservesPullback.iso G f g).hom (CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pullback.fst (G.map f) (G.map g)) h) = CategoryTheory.CategoryStruct.comp (G.map (CategoryTheory.Limits.pullback.fst f g)) h - CategoryTheory.Limits.PreservesPullback.iso_hom_snd_assoc 📋 Mathlib.CategoryTheory.Limits.Preserves.Shapes.Pullbacks
{C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] {D : Type u₂} [CategoryTheory.Category.{v₂, u₂} D] (G : CategoryTheory.Functor C D) {X Y Z : C} (f : X ⟶ Z) (g : Y ⟶ Z) [CategoryTheory.Limits.PreservesLimit (CategoryTheory.Limits.cospan f g) G] [CategoryTheory.Limits.HasPullback f g] [CategoryTheory.Limits.HasPullback (G.map f) (G.map g)] {Z✝ : D} (h : G.obj Y ⟶ Z✝) : CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.PreservesPullback.iso G f g).hom (CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pullback.snd (G.map f) (G.map g)) h) = CategoryTheory.CategoryStruct.comp (G.map (CategoryTheory.Limits.pullback.snd f g)) h - CategoryTheory.Limits.PreservesPullback.iso_inv_fst_assoc 📋 Mathlib.CategoryTheory.Limits.Preserves.Shapes.Pullbacks
{C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] {D : Type u₂} [CategoryTheory.Category.{v₂, u₂} D] (G : CategoryTheory.Functor C D) {X Y Z : C} (f : X ⟶ Z) (g : Y ⟶ Z) [CategoryTheory.Limits.PreservesLimit (CategoryTheory.Limits.cospan f g) G] [CategoryTheory.Limits.HasPullback f g] [CategoryTheory.Limits.HasPullback (G.map f) (G.map g)] {Z✝ : D} (h : G.obj X ⟶ Z✝) : CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.PreservesPullback.iso G f g).inv (CategoryTheory.CategoryStruct.comp (G.map (CategoryTheory.Limits.pullback.fst f g)) h) = CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pullback.fst (G.map f) (G.map g)) h - CategoryTheory.Limits.PreservesPullback.iso_inv_snd_assoc 📋 Mathlib.CategoryTheory.Limits.Preserves.Shapes.Pullbacks
{C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] {D : Type u₂} [CategoryTheory.Category.{v₂, u₂} D] (G : CategoryTheory.Functor C D) {X Y Z : C} (f : X ⟶ Z) (g : Y ⟶ Z) [CategoryTheory.Limits.PreservesLimit (CategoryTheory.Limits.cospan f g) G] [CategoryTheory.Limits.HasPullback f g] [CategoryTheory.Limits.HasPullback (G.map f) (G.map g)] {Z✝ : D} (h : G.obj Y ⟶ Z✝) : CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.PreservesPullback.iso G f g).inv (CategoryTheory.CategoryStruct.comp (G.map (CategoryTheory.Limits.pullback.snd f g)) h) = CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pullback.snd (G.map f) (G.map g)) h - prodIsoPullback 📋 Mathlib.CategoryTheory.Limits.Constructions.BinaryProducts
{C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasTerminal C] [CategoryTheory.Limits.HasPullbacks C] (X Y : C) [CategoryTheory.Limits.HasBinaryProduct X Y] : X ⨯ Y ≅ CategoryTheory.Limits.pullback (CategoryTheory.Limits.terminal.from X) (CategoryTheory.Limits.terminal.from Y) - prodIsoPullback_hom_fst 📋 Mathlib.CategoryTheory.Limits.Constructions.BinaryProducts
{C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasTerminal C] [CategoryTheory.Limits.HasPullbacks C] (X Y : C) [CategoryTheory.Limits.HasBinaryProduct X Y] : CategoryTheory.CategoryStruct.comp (prodIsoPullback X Y).hom (CategoryTheory.Limits.pullback.fst (CategoryTheory.Limits.terminal.from X) (CategoryTheory.Limits.terminal.from Y)) = CategoryTheory.Limits.prod.fst - prodIsoPullback_hom_snd 📋 Mathlib.CategoryTheory.Limits.Constructions.BinaryProducts
{C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasTerminal C] [CategoryTheory.Limits.HasPullbacks C] (X Y : C) [CategoryTheory.Limits.HasBinaryProduct X Y] : CategoryTheory.CategoryStruct.comp (prodIsoPullback X Y).hom (CategoryTheory.Limits.pullback.snd (CategoryTheory.Limits.terminal.from X) (CategoryTheory.Limits.terminal.from Y)) = CategoryTheory.Limits.prod.snd - prodIsoPullback_inv_fst 📋 Mathlib.CategoryTheory.Limits.Constructions.BinaryProducts
{C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasTerminal C] [CategoryTheory.Limits.HasPullbacks C] (X Y : C) [CategoryTheory.Limits.HasBinaryProduct X Y] : CategoryTheory.CategoryStruct.comp (prodIsoPullback X Y).inv CategoryTheory.Limits.prod.fst = CategoryTheory.Limits.pullback.fst (CategoryTheory.Limits.terminal.from X) (CategoryTheory.Limits.terminal.from Y) - prodIsoPullback_inv_snd 📋 Mathlib.CategoryTheory.Limits.Constructions.BinaryProducts
{C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasTerminal C] [CategoryTheory.Limits.HasPullbacks C] (X Y : C) [CategoryTheory.Limits.HasBinaryProduct X Y] : CategoryTheory.CategoryStruct.comp (prodIsoPullback X Y).inv CategoryTheory.Limits.prod.snd = CategoryTheory.Limits.pullback.snd (CategoryTheory.Limits.terminal.from X) (CategoryTheory.Limits.terminal.from Y) - prodIsoPullback_hom_fst_assoc 📋 Mathlib.CategoryTheory.Limits.Constructions.BinaryProducts
{C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasTerminal C] [CategoryTheory.Limits.HasPullbacks C] (X Y : C) [CategoryTheory.Limits.HasBinaryProduct X Y] {Z : C} (h : X ⟶ Z) : CategoryTheory.CategoryStruct.comp (prodIsoPullback X Y).hom (CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pullback.fst (CategoryTheory.Limits.terminal.from X) (CategoryTheory.Limits.terminal.from Y)) h) = CategoryTheory.CategoryStruct.comp CategoryTheory.Limits.prod.fst h - prodIsoPullback_hom_snd_assoc 📋 Mathlib.CategoryTheory.Limits.Constructions.BinaryProducts
{C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasTerminal C] [CategoryTheory.Limits.HasPullbacks C] (X Y : C) [CategoryTheory.Limits.HasBinaryProduct X Y] {Z : C} (h : Y ⟶ Z) : CategoryTheory.CategoryStruct.comp (prodIsoPullback X Y).hom (CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pullback.snd (CategoryTheory.Limits.terminal.from X) (CategoryTheory.Limits.terminal.from Y)) h) = CategoryTheory.CategoryStruct.comp CategoryTheory.Limits.prod.snd h - prodIsoPullback_inv_fst_assoc 📋 Mathlib.CategoryTheory.Limits.Constructions.BinaryProducts
{C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasTerminal C] [CategoryTheory.Limits.HasPullbacks C] (X Y : C) [CategoryTheory.Limits.HasBinaryProduct X Y] {Z : C} (h : X ⟶ Z) : CategoryTheory.CategoryStruct.comp (prodIsoPullback X Y).inv (CategoryTheory.CategoryStruct.comp CategoryTheory.Limits.prod.fst h) = CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pullback.fst (CategoryTheory.Limits.terminal.from X) (CategoryTheory.Limits.terminal.from Y)) h - prodIsoPullback_inv_snd_assoc 📋 Mathlib.CategoryTheory.Limits.Constructions.BinaryProducts
{C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasTerminal C] [CategoryTheory.Limits.HasPullbacks C] (X Y : C) [CategoryTheory.Limits.HasBinaryProduct X Y] {Z : C} (h : Y ⟶ Z) : CategoryTheory.CategoryStruct.comp (prodIsoPullback X Y).inv (CategoryTheory.CategoryStruct.comp CategoryTheory.Limits.prod.snd h) = CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pullback.snd (CategoryTheory.Limits.terminal.from X) (CategoryTheory.Limits.terminal.from Y)) h - CategoryTheory.IsPullback.of_hasPullback 📋 Mathlib.CategoryTheory.Limits.Shapes.Pullback.IsPullback.Defs
{C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] {X Y Z : C} (f : X ⟶ Z) (g : Y ⟶ Z) [CategoryTheory.Limits.HasPullback f g] : CategoryTheory.IsPullback (CategoryTheory.Limits.pullback.fst f g) (CategoryTheory.Limits.pullback.snd f g) f g - CategoryTheory.IsPullback.isoPullback 📋 Mathlib.CategoryTheory.Limits.Shapes.Pullback.IsPullback.Defs
{C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] {P X Y Z : C} {fst : P ⟶ X} {snd : P ⟶ Y} {f : X ⟶ Z} {g : Y ⟶ Z} (h : CategoryTheory.IsPullback fst snd f g) [CategoryTheory.Limits.HasPullback f g] : P ≅ CategoryTheory.Limits.pullback f g - CategoryTheory.IsPullback.isoPullback_hom_fst 📋 Mathlib.CategoryTheory.Limits.Shapes.Pullback.IsPullback.Defs
{C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] {P X Y Z : C} {fst : P ⟶ X} {snd : P ⟶ Y} {f : X ⟶ Z} {g : Y ⟶ Z} (h : CategoryTheory.IsPullback fst snd f g) [CategoryTheory.Limits.HasPullback f g] : CategoryTheory.CategoryStruct.comp h.isoPullback.hom (CategoryTheory.Limits.pullback.fst f g) = fst - CategoryTheory.IsPullback.isoPullback_hom_snd 📋 Mathlib.CategoryTheory.Limits.Shapes.Pullback.IsPullback.Defs
{C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] {P X Y Z : C} {fst : P ⟶ X} {snd : P ⟶ Y} {f : X ⟶ Z} {g : Y ⟶ Z} (h : CategoryTheory.IsPullback fst snd f g) [CategoryTheory.Limits.HasPullback f g] : CategoryTheory.CategoryStruct.comp h.isoPullback.hom (CategoryTheory.Limits.pullback.snd f g) = snd - CategoryTheory.IsPullback.isoPullback_inv_fst 📋 Mathlib.CategoryTheory.Limits.Shapes.Pullback.IsPullback.Defs
{C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] {P X Y Z : C} {fst : P ⟶ X} {snd : P ⟶ Y} {f : X ⟶ Z} {g : Y ⟶ Z} (h : CategoryTheory.IsPullback fst snd f g) [CategoryTheory.Limits.HasPullback f g] : CategoryTheory.CategoryStruct.comp h.isoPullback.inv fst = CategoryTheory.Limits.pullback.fst f g - CategoryTheory.IsPullback.isoPullback_inv_snd 📋 Mathlib.CategoryTheory.Limits.Shapes.Pullback.IsPullback.Defs
{C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] {P X Y Z : C} {fst : P ⟶ X} {snd : P ⟶ Y} {f : X ⟶ Z} {g : Y ⟶ Z} (h : CategoryTheory.IsPullback fst snd f g) [CategoryTheory.Limits.HasPullback f g] : CategoryTheory.CategoryStruct.comp h.isoPullback.inv snd = CategoryTheory.Limits.pullback.snd f g - CategoryTheory.IsPullback.isoPullback_hom_fst_assoc 📋 Mathlib.CategoryTheory.Limits.Shapes.Pullback.IsPullback.Defs
{C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] {P X Y Z : C} {fst : P ⟶ X} {snd : P ⟶ Y} {f : X ⟶ Z} {g : Y ⟶ Z} (h : CategoryTheory.IsPullback fst snd f g) [CategoryTheory.Limits.HasPullback f g] {Z✝ : C} (h✝ : X ⟶ Z✝) : CategoryTheory.CategoryStruct.comp h.isoPullback.hom (CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pullback.fst f g) h✝) = CategoryTheory.CategoryStruct.comp fst h✝ - CategoryTheory.IsPullback.isoPullback_hom_snd_assoc 📋 Mathlib.CategoryTheory.Limits.Shapes.Pullback.IsPullback.Defs
{C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] {P X Y Z : C} {fst : P ⟶ X} {snd : P ⟶ Y} {f : X ⟶ Z} {g : Y ⟶ Z} (h : CategoryTheory.IsPullback fst snd f g) [CategoryTheory.Limits.HasPullback f g] {Z✝ : C} (h✝ : Y ⟶ Z✝) : CategoryTheory.CategoryStruct.comp h.isoPullback.hom (CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pullback.snd f g) h✝) = CategoryTheory.CategoryStruct.comp snd h✝ - CategoryTheory.IsPullback.isoPullback_inv_fst_assoc 📋 Mathlib.CategoryTheory.Limits.Shapes.Pullback.IsPullback.Defs
{C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] {P X Y Z : C} {fst : P ⟶ X} {snd : P ⟶ Y} {f : X ⟶ Z} {g : Y ⟶ Z} (h : CategoryTheory.IsPullback fst snd f g) [CategoryTheory.Limits.HasPullback f g] {Z✝ : C} (h✝ : X ⟶ Z✝) : CategoryTheory.CategoryStruct.comp h.isoPullback.inv (CategoryTheory.CategoryStruct.comp fst h✝) = CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pullback.fst f g) h✝ - CategoryTheory.IsPullback.isoPullback_inv_snd_assoc 📋 Mathlib.CategoryTheory.Limits.Shapes.Pullback.IsPullback.Defs
{C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] {P X Y Z : C} {fst : P ⟶ X} {snd : P ⟶ Y} {f : X ⟶ Z} {g : Y ⟶ Z} (h : CategoryTheory.IsPullback fst snd f g) [CategoryTheory.Limits.HasPullback f g] {Z✝ : C} (h✝ : Y ⟶ Z✝) : CategoryTheory.CategoryStruct.comp h.isoPullback.inv (CategoryTheory.CategoryStruct.comp snd h✝) = CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pullback.snd f g) h✝ - CategoryTheory.Limits.hasPullbackHorizPaste 📋 Mathlib.CategoryTheory.Limits.Shapes.Pullback.Pasting
{C : Type u} [CategoryTheory.Category.{v, u} C] {W X Y Z : C} (f : X ⟶ Z) (g : Y ⟶ Z) (f' : W ⟶ X) [CategoryTheory.Limits.HasPullback f g] [CategoryTheory.Limits.HasPullback f' (CategoryTheory.Limits.pullback.fst f g)] : CategoryTheory.Limits.HasPullback (CategoryTheory.CategoryStruct.comp f' f) g - CategoryTheory.Limits.hasPullbackVertPaste 📋 Mathlib.CategoryTheory.Limits.Shapes.Pullback.Pasting
{C : Type u} [CategoryTheory.Category.{v, u} C] {W X Y Z : C} (f : X ⟶ Z) (g : Y ⟶ Z) (g' : W ⟶ Y) [CategoryTheory.Limits.HasPullback f g] [CategoryTheory.Limits.HasPullback (CategoryTheory.Limits.pullback.snd f g) g'] : CategoryTheory.Limits.HasPullback f (CategoryTheory.CategoryStruct.comp g' g) - CategoryTheory.Limits.pullbackLeftPullbackSndIso 📋 Mathlib.CategoryTheory.Limits.Shapes.Pullback.Pasting
{C : Type u} [CategoryTheory.Category.{v, u} C] {W X Y Z : C} (f : X ⟶ Z) (g : Y ⟶ Z) (g' : W ⟶ Y) [CategoryTheory.Limits.HasPullback f g] [CategoryTheory.Limits.HasPullback (CategoryTheory.Limits.pullback.snd f g) g'] : CategoryTheory.Limits.pullback (CategoryTheory.Limits.pullback.snd f g) g' ≅ CategoryTheory.Limits.pullback f (CategoryTheory.CategoryStruct.comp g' g) - CategoryTheory.Limits.pullbackRightPullbackFstIso 📋 Mathlib.CategoryTheory.Limits.Shapes.Pullback.Pasting
{C : Type u} [CategoryTheory.Category.{v, u} C] {W X Y Z : C} (f : X ⟶ Z) (g : Y ⟶ Z) (f' : W ⟶ X) [CategoryTheory.Limits.HasPullback f g] [CategoryTheory.Limits.HasPullback f' (CategoryTheory.Limits.pullback.fst f g)] : CategoryTheory.Limits.pullback f' (CategoryTheory.Limits.pullback.fst f g) ≅ CategoryTheory.Limits.pullback (CategoryTheory.CategoryStruct.comp f' f) g - CategoryTheory.Limits.pullbackLeftPullbackSndIso_hom_snd 📋 Mathlib.CategoryTheory.Limits.Shapes.Pullback.Pasting
{C : Type u} [CategoryTheory.Category.{v, u} C] {W X Y Z : C} (f : X ⟶ Z) (g : Y ⟶ Z) (g' : W ⟶ Y) [CategoryTheory.Limits.HasPullback f g] [CategoryTheory.Limits.HasPullback (CategoryTheory.Limits.pullback.snd f g) g'] : CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pullbackLeftPullbackSndIso f g g').hom (CategoryTheory.Limits.pullback.snd f (CategoryTheory.CategoryStruct.comp g' g)) = CategoryTheory.Limits.pullback.snd (CategoryTheory.Limits.pullback.snd f g) g' - CategoryTheory.Limits.pullbackRightPullbackFstIso_hom_fst 📋 Mathlib.CategoryTheory.Limits.Shapes.Pullback.Pasting
{C : Type u} [CategoryTheory.Category.{v, u} C] {W X Y Z : C} (f : X ⟶ Z) (g : Y ⟶ Z) (f' : W ⟶ X) [CategoryTheory.Limits.HasPullback f g] [CategoryTheory.Limits.HasPullback f' (CategoryTheory.Limits.pullback.fst f g)] : CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pullbackRightPullbackFstIso f g f').hom (CategoryTheory.Limits.pullback.fst (CategoryTheory.CategoryStruct.comp f' f) g) = CategoryTheory.Limits.pullback.fst f' (CategoryTheory.Limits.pullback.fst f g) - CategoryTheory.Limits.pullbackLeftPullbackSndIso_inv_snd_snd 📋 Mathlib.CategoryTheory.Limits.Shapes.Pullback.Pasting
{C : Type u} [CategoryTheory.Category.{v, u} C] {W X Y Z : C} (f : X ⟶ Z) (g : Y ⟶ Z) (g' : W ⟶ Y) [CategoryTheory.Limits.HasPullback f g] [CategoryTheory.Limits.HasPullback (CategoryTheory.Limits.pullback.snd f g) g'] : CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pullbackLeftPullbackSndIso f g g').inv (CategoryTheory.Limits.pullback.snd (CategoryTheory.Limits.pullback.snd f g) g') = CategoryTheory.Limits.pullback.snd f (CategoryTheory.CategoryStruct.comp g' g) - CategoryTheory.Limits.pullbackRightPullbackFstIso_inv_fst 📋 Mathlib.CategoryTheory.Limits.Shapes.Pullback.Pasting
{C : Type u} [CategoryTheory.Category.{v, u} C] {W X Y Z : C} (f : X ⟶ Z) (g : Y ⟶ Z) (f' : W ⟶ X) [CategoryTheory.Limits.HasPullback f g] [CategoryTheory.Limits.HasPullback f' (CategoryTheory.Limits.pullback.fst f g)] : CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pullbackRightPullbackFstIso f g f').inv (CategoryTheory.Limits.pullback.fst f' (CategoryTheory.Limits.pullback.fst f g)) = CategoryTheory.Limits.pullback.fst (CategoryTheory.CategoryStruct.comp f' f) g - CategoryTheory.Limits.pullbackLeftPullbackSndIso_hom_fst 📋 Mathlib.CategoryTheory.Limits.Shapes.Pullback.Pasting
{C : Type u} [CategoryTheory.Category.{v, u} C] {W X Y Z : C} (f : X ⟶ Z) (g : Y ⟶ Z) (g' : W ⟶ Y) [CategoryTheory.Limits.HasPullback f g] [CategoryTheory.Limits.HasPullback (CategoryTheory.Limits.pullback.snd f g) g'] : CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pullbackLeftPullbackSndIso f g g').hom (CategoryTheory.Limits.pullback.fst f (CategoryTheory.CategoryStruct.comp g' g)) = CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pullback.fst (CategoryTheory.Limits.pullback.snd f g) g') (CategoryTheory.Limits.pullback.fst f g) - CategoryTheory.Limits.pullbackRightPullbackFstIso_hom_snd 📋 Mathlib.CategoryTheory.Limits.Shapes.Pullback.Pasting
{C : Type u} [CategoryTheory.Category.{v, u} C] {W X Y Z : C} (f : X ⟶ Z) (g : Y ⟶ Z) (f' : W ⟶ X) [CategoryTheory.Limits.HasPullback f g] [CategoryTheory.Limits.HasPullback f' (CategoryTheory.Limits.pullback.fst f g)] : CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pullbackRightPullbackFstIso f g f').hom (CategoryTheory.Limits.pullback.snd (CategoryTheory.CategoryStruct.comp f' f) g) = CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pullback.snd f' (CategoryTheory.Limits.pullback.fst f g)) (CategoryTheory.Limits.pullback.snd f g) - CategoryTheory.Limits.pullbackLeftPullbackSndIso_inv_fst 📋 Mathlib.CategoryTheory.Limits.Shapes.Pullback.Pasting
{C : Type u} [CategoryTheory.Category.{v, u} C] {W X Y Z : C} (f : X ⟶ Z) (g : Y ⟶ Z) (g' : W ⟶ Y) [CategoryTheory.Limits.HasPullback f g] [CategoryTheory.Limits.HasPullback (CategoryTheory.Limits.pullback.snd f g) g'] : CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pullbackLeftPullbackSndIso f g g').inv (CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pullback.fst (CategoryTheory.Limits.pullback.snd f g) g') (CategoryTheory.Limits.pullback.fst f g)) = CategoryTheory.Limits.pullback.fst f (CategoryTheory.CategoryStruct.comp g' g) - CategoryTheory.Limits.pullbackRightPullbackFstIso_inv_snd_snd 📋 Mathlib.CategoryTheory.Limits.Shapes.Pullback.Pasting
{C : Type u} [CategoryTheory.Category.{v, u} C] {W X Y Z : C} (f : X ⟶ Z) (g : Y ⟶ Z) (f' : W ⟶ X) [CategoryTheory.Limits.HasPullback f g] [CategoryTheory.Limits.HasPullback f' (CategoryTheory.Limits.pullback.fst f g)] : CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pullbackRightPullbackFstIso f g f').inv (CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pullback.snd f' (CategoryTheory.Limits.pullback.fst f g)) (CategoryTheory.Limits.pullback.snd f g)) = CategoryTheory.Limits.pullback.snd (CategoryTheory.CategoryStruct.comp f' f) g - CategoryTheory.Limits.pullbackLeftPullbackSndIso_hom_snd_assoc 📋 Mathlib.CategoryTheory.Limits.Shapes.Pullback.Pasting
{C : Type u} [CategoryTheory.Category.{v, u} C] {W X Y Z : C} (f : X ⟶ Z) (g : Y ⟶ Z) (g' : W ⟶ Y) [CategoryTheory.Limits.HasPullback f g] [CategoryTheory.Limits.HasPullback (CategoryTheory.Limits.pullback.snd f g) g'] {Z✝ : C} (h : W ⟶ Z✝) : CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pullbackLeftPullbackSndIso f g g').hom (CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pullback.snd f (CategoryTheory.CategoryStruct.comp g' g)) h) = CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pullback.snd (CategoryTheory.Limits.pullback.snd f g) g') h - CategoryTheory.Limits.pullbackRightPullbackFstIso_hom_fst_assoc 📋 Mathlib.CategoryTheory.Limits.Shapes.Pullback.Pasting
{C : Type u} [CategoryTheory.Category.{v, u} C] {W X Y Z : C} (f : X ⟶ Z) (g : Y ⟶ Z) (f' : W ⟶ X) [CategoryTheory.Limits.HasPullback f g] [CategoryTheory.Limits.HasPullback f' (CategoryTheory.Limits.pullback.fst f g)] {Z✝ : C} (h : W ⟶ Z✝) : CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pullbackRightPullbackFstIso f g f').hom (CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pullback.fst (CategoryTheory.CategoryStruct.comp f' f) g) h) = CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pullback.fst f' (CategoryTheory.Limits.pullback.fst f g)) h - CategoryTheory.Limits.pullbackLeftPullbackSndIso_inv_snd_snd_assoc 📋 Mathlib.CategoryTheory.Limits.Shapes.Pullback.Pasting
{C : Type u} [CategoryTheory.Category.{v, u} C] {W X Y Z : C} (f : X ⟶ Z) (g : Y ⟶ Z) (g' : W ⟶ Y) [CategoryTheory.Limits.HasPullback f g] [CategoryTheory.Limits.HasPullback (CategoryTheory.Limits.pullback.snd f g) g'] {Z✝ : C} (h : W ⟶ Z✝) : CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pullbackLeftPullbackSndIso f g g').inv (CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pullback.snd (CategoryTheory.Limits.pullback.snd f g) g') h) = CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pullback.snd f (CategoryTheory.CategoryStruct.comp g' g)) h - CategoryTheory.Limits.pullbackRightPullbackFstIso_inv_fst_assoc 📋 Mathlib.CategoryTheory.Limits.Shapes.Pullback.Pasting
{C : Type u} [CategoryTheory.Category.{v, u} C] {W X Y Z : C} (f : X ⟶ Z) (g : Y ⟶ Z) (f' : W ⟶ X) [CategoryTheory.Limits.HasPullback f g] [CategoryTheory.Limits.HasPullback f' (CategoryTheory.Limits.pullback.fst f g)] {Z✝ : C} (h : W ⟶ Z✝) : CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pullbackRightPullbackFstIso f g f').inv (CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pullback.fst f' (CategoryTheory.Limits.pullback.fst f g)) h) = CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pullback.fst (CategoryTheory.CategoryStruct.comp f' f) g) h - CategoryTheory.Limits.pullbackLeftPullbackSndIso_inv_fst_snd 📋 Mathlib.CategoryTheory.Limits.Shapes.Pullback.Pasting
{C : Type u} [CategoryTheory.Category.{v, u} C] {W X Y Z : C} (f : X ⟶ Z) (g : Y ⟶ Z) (g' : W ⟶ Y) [CategoryTheory.Limits.HasPullback f g] [CategoryTheory.Limits.HasPullback (CategoryTheory.Limits.pullback.snd f g) g'] : CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pullbackLeftPullbackSndIso f g g').inv (CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pullback.fst (CategoryTheory.Limits.pullback.snd f g) g') (CategoryTheory.Limits.pullback.snd f g)) = CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pullback.snd f (CategoryTheory.CategoryStruct.comp g' g)) g' - CategoryTheory.Limits.pullbackRightPullbackFstIso_inv_snd_fst 📋 Mathlib.CategoryTheory.Limits.Shapes.Pullback.Pasting
{C : Type u} [CategoryTheory.Category.{v, u} C] {W X Y Z : C} (f : X ⟶ Z) (g : Y ⟶ Z) (f' : W ⟶ X) [CategoryTheory.Limits.HasPullback f g] [CategoryTheory.Limits.HasPullback f' (CategoryTheory.Limits.pullback.fst f g)] : CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pullbackRightPullbackFstIso f g f').inv (CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pullback.snd f' (CategoryTheory.Limits.pullback.fst f g)) (CategoryTheory.Limits.pullback.fst f g)) = CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pullback.fst (CategoryTheory.CategoryStruct.comp f' f) g) f' - CategoryTheory.Limits.pullbackLeftPullbackSndIso_hom_fst_assoc 📋 Mathlib.CategoryTheory.Limits.Shapes.Pullback.Pasting
{C : Type u} [CategoryTheory.Category.{v, u} C] {W X Y Z : C} (f : X ⟶ Z) (g : Y ⟶ Z) (g' : W ⟶ Y) [CategoryTheory.Limits.HasPullback f g] [CategoryTheory.Limits.HasPullback (CategoryTheory.Limits.pullback.snd f g) g'] {Z✝ : C} (h : X ⟶ Z✝) : CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pullbackLeftPullbackSndIso f g g').hom (CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pullback.fst f (CategoryTheory.CategoryStruct.comp g' g)) h) = CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pullback.fst (CategoryTheory.Limits.pullback.snd f g) g') (CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pullback.fst f g) h) - CategoryTheory.Limits.pullbackRightPullbackFstIso_hom_snd_assoc 📋 Mathlib.CategoryTheory.Limits.Shapes.Pullback.Pasting
{C : Type u} [CategoryTheory.Category.{v, u} C] {W X Y Z : C} (f : X ⟶ Z) (g : Y ⟶ Z) (f' : W ⟶ X) [CategoryTheory.Limits.HasPullback f g] [CategoryTheory.Limits.HasPullback f' (CategoryTheory.Limits.pullback.fst f g)] {Z✝ : C} (h : Y ⟶ Z✝) : CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pullbackRightPullbackFstIso f g f').hom (CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pullback.snd (CategoryTheory.CategoryStruct.comp f' f) g) h) = CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pullback.snd f' (CategoryTheory.Limits.pullback.fst f g)) (CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pullback.snd f g) h) - CategoryTheory.Limits.pullbackLeftPullbackSndIso_inv_fst_assoc 📋 Mathlib.CategoryTheory.Limits.Shapes.Pullback.Pasting
{C : Type u} [CategoryTheory.Category.{v, u} C] {W X Y Z : C} (f : X ⟶ Z) (g : Y ⟶ Z) (g' : W ⟶ Y) [CategoryTheory.Limits.HasPullback f g] [CategoryTheory.Limits.HasPullback (CategoryTheory.Limits.pullback.snd f g) g'] {Z✝ : C} (h : X ⟶ Z✝) : CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pullbackLeftPullbackSndIso f g g').inv (CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pullback.fst (CategoryTheory.Limits.pullback.snd f g) g') (CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pullback.fst f g) h)) = CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pullback.fst f (CategoryTheory.CategoryStruct.comp g' g)) h - CategoryTheory.Limits.pullbackRightPullbackFstIso_inv_snd_snd_assoc 📋 Mathlib.CategoryTheory.Limits.Shapes.Pullback.Pasting
{C : Type u} [CategoryTheory.Category.{v, u} C] {W X Y Z : C} (f : X ⟶ Z) (g : Y ⟶ Z) (f' : W ⟶ X) [CategoryTheory.Limits.HasPullback f g] [CategoryTheory.Limits.HasPullback f' (CategoryTheory.Limits.pullback.fst f g)] {Z✝ : C} (h : Y ⟶ Z✝) : CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pullbackRightPullbackFstIso f g f').inv (CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pullback.snd f' (CategoryTheory.Limits.pullback.fst f g)) (CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pullback.snd f g) h)) = CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pullback.snd (CategoryTheory.CategoryStruct.comp f' f) g) h - CategoryTheory.Limits.pullbackLeftPullbackSndIso_inv_fst_snd_assoc 📋 Mathlib.CategoryTheory.Limits.Shapes.Pullback.Pasting
{C : Type u} [CategoryTheory.Category.{v, u} C] {W X Y Z : C} (f : X ⟶ Z) (g : Y ⟶ Z) (g' : W ⟶ Y) [CategoryTheory.Limits.HasPullback f g] [CategoryTheory.Limits.HasPullback (CategoryTheory.Limits.pullback.snd f g) g'] {Z✝ : C} (h : Y ⟶ Z✝) : CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pullbackLeftPullbackSndIso f g g').inv (CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pullback.fst (CategoryTheory.Limits.pullback.snd f g) g') (CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pullback.snd f g) h)) = CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pullback.snd f (CategoryTheory.CategoryStruct.comp g' g)) (CategoryTheory.CategoryStruct.comp g' h) - CategoryTheory.Limits.pullbackRightPullbackFstIso_inv_snd_fst_assoc 📋 Mathlib.CategoryTheory.Limits.Shapes.Pullback.Pasting
{C : Type u} [CategoryTheory.Category.{v, u} C] {W X Y Z : C} (f : X ⟶ Z) (g : Y ⟶ Z) (f' : W ⟶ X) [CategoryTheory.Limits.HasPullback f g] [CategoryTheory.Limits.HasPullback f' (CategoryTheory.Limits.pullback.fst f g)] {Z✝ : C} (h : X ⟶ Z✝) : CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pullbackRightPullbackFstIso f g f').inv (CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pullback.snd f' (CategoryTheory.Limits.pullback.fst f g)) (CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pullback.fst f g) h)) = CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pullback.fst (CategoryTheory.CategoryStruct.comp f' f) g) (CategoryTheory.CategoryStruct.comp f' h) - CategoryTheory.IsPullback.instHasPullbackFst 📋 Mathlib.CategoryTheory.Limits.Shapes.Pullback.IsPullback.Basic
{C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] {P X Y Z : C} {f : X ⟶ Z} {g : Y ⟶ Z} [CategoryTheory.Limits.HasPullbacksAlong f] (h : P ⟶ Y) : CategoryTheory.Limits.HasPullback h (CategoryTheory.Limits.pullback.fst g f) - CategoryTheory.IsPullback.isoOverPullback 📋 Mathlib.CategoryTheory.Limits.Shapes.Pullback.IsPullback.Basic
{C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] {X Y Z : C} {f : X ⟶ Z} {g : Y ⟶ Z} [CategoryTheory.Limits.HasPullbacksAlong g] {P : C} {fst : P ⟶ X} {snd : P ⟶ Y} (h : CategoryTheory.IsPullback fst snd f g) : CategoryTheory.Over.mk fst ≅ CategoryTheory.Over.mk (CategoryTheory.Limits.pullback.fst f g) - CategoryTheory.IsPullback.of_iso_pullback 📋 Mathlib.CategoryTheory.Limits.Shapes.Pullback.IsPullback.Basic
{C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] {P X Y Z : C} {fst : P ⟶ X} {snd : P ⟶ Y} {f : X ⟶ Z} {g : Y ⟶ Z} (h : CategoryTheory.CommSq fst snd f g) [CategoryTheory.Limits.HasPullback f g] (i : P ≅ CategoryTheory.Limits.pullback f g) (w₁ : CategoryTheory.CategoryStruct.comp i.hom (CategoryTheory.Limits.pullback.fst f g) = fst) (w₂ : CategoryTheory.CategoryStruct.comp i.hom (CategoryTheory.Limits.pullback.snd f g) = snd) : CategoryTheory.IsPullback fst snd f g - CategoryTheory.IsPullback.isoOverPullback_hom_left_comp_snd 📋 Mathlib.CategoryTheory.Limits.Shapes.Pullback.IsPullback.Basic
{C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] {X Y Z : C} {f : X ⟶ Z} {g : Y ⟶ Z} [CategoryTheory.Limits.HasPullbacksAlong g] {P : C} {fst : P ⟶ X} {snd : P ⟶ Y} (h : CategoryTheory.IsPullback fst snd f g) : CategoryTheory.CategoryStruct.comp (CategoryTheory.Over.Hom.left h.isoOverPullback.hom) (CategoryTheory.Limits.pullback.snd f g) = snd - CategoryTheory.IsPullback.of_over_iso 📋 Mathlib.CategoryTheory.Limits.Shapes.Pullback.IsPullback.Basic
{C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] {X Y Z : C} {f : X ⟶ Z} {g : Y ⟶ Z} [CategoryTheory.Limits.HasPullbacksAlong g] {P : C} {p : P ⟶ X} (e : CategoryTheory.Over.mk p ≅ CategoryTheory.Over.mk (CategoryTheory.Limits.pullback.fst f g)) : CategoryTheory.IsPullback p (CategoryTheory.CategoryStruct.comp (CategoryTheory.Over.Hom.left e.hom) (CategoryTheory.Limits.pullback.snd f g)) f g - CategoryTheory.IsPullback.isoOverPullback_hom_left_comp_snd_assoc 📋 Mathlib.CategoryTheory.Limits.Shapes.Pullback.IsPullback.Basic
{C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] {X Y Z : C} {f : X ⟶ Z} {g : Y ⟶ Z} [CategoryTheory.Limits.HasPullbacksAlong g] {P : C} {fst : P ⟶ X} {snd : P ⟶ Y} (h : CategoryTheory.IsPullback fst snd f g) {Z✝ : C} (h✝ : Y ⟶ Z✝) : CategoryTheory.CategoryStruct.comp (CategoryTheory.Over.Hom.left h.isoOverPullback.hom) (CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pullback.snd f g) h✝) = CategoryTheory.CategoryStruct.comp snd h✝ - CategoryTheory.IsPullback.iff_exists_over_iso 📋 Mathlib.CategoryTheory.Limits.Shapes.Pullback.IsPullback.Basic
{C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] {X Y Z : C} {f : X ⟶ Z} {g : Y ⟶ Z} [CategoryTheory.Limits.HasPullbacksAlong g] {P : C} {p : P ⟶ X} {q : P ⟶ Y} : CategoryTheory.IsPullback p q f g ↔ ∃ e, q = CategoryTheory.CategoryStruct.comp (CategoryTheory.Over.Hom.left e.hom) (CategoryTheory.Limits.pullback.snd f g) - CategoryTheory.IsPullback.map_fst_comp_fst_snd_comp_fst 📋 Mathlib.CategoryTheory.Limits.Shapes.Pullback.IsPullback.Basic
{C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] {X Y Z U S : C} (f : X ⟶ S) (g : Y ⟶ S) (i : Z ⟶ S) [CategoryTheory.Limits.HasPullback i g] (h : U ⟶ CategoryTheory.Limits.pullback i g) [CategoryTheory.Limits.HasPullback f g] [CategoryTheory.Limits.HasPullback (CategoryTheory.Limits.pullback.snd f g) (CategoryTheory.CategoryStruct.comp h (CategoryTheory.Limits.pullback.snd i g))] [CategoryTheory.Limits.HasPullback f i] : CategoryTheory.IsPullback (CategoryTheory.Limits.pullback.map (CategoryTheory.Limits.pullback.snd f g) (CategoryTheory.CategoryStruct.comp h (CategoryTheory.Limits.pullback.snd i g)) f i (CategoryTheory.Limits.pullback.fst f g) (CategoryTheory.CategoryStruct.comp h (CategoryTheory.Limits.pullback.fst i g)) g ⋯ ⋯) (CategoryTheory.Limits.pullback.snd (CategoryTheory.Limits.pullback.snd f g) (CategoryTheory.CategoryStruct.comp h (CategoryTheory.Limits.pullback.snd i g))) (CategoryTheory.Limits.pullback.snd f i) (CategoryTheory.CategoryStruct.comp h (CategoryTheory.Limits.pullback.fst i g)) - CommRingCat.pullback_isLocalRing 📋 Mathlib.Algebra.Category.Ring.Constructions
{A B C : CommRingCat} (f : A ⟶ C) (g : B ⟶ C) [IsLocalHom (CommRingCat.Hom.hom g)] [IsLocalRing ↑A] : IsLocalRing ↑(CategoryTheory.Limits.pullback f g) - CommRingCat.pullbackFst_isLocalHom 📋 Mathlib.Algebra.Category.Ring.Constructions
{A B C : CommRingCat} (f : A ⟶ C) (g : B ⟶ C) [IsLocalHom (CommRingCat.Hom.hom g)] : IsLocalHom (CommRingCat.Hom.hom (CategoryTheory.Limits.pullback.fst f g)) - CategoryTheory.Over.faithful_pullback 📋 Mathlib.CategoryTheory.Comma.Over.Pullback
{C : Type u} [CategoryTheory.Category.{v, u} C] {X Y : C} (f : X ⟶ Y) [CategoryTheory.Limits.HasPullbacksAlong f] [∀ (Z : C) (g : Z ⟶ Y), CategoryTheory.Epi (CategoryTheory.Limits.pullback.fst g f)] : (CategoryTheory.Over.pullback f).Faithful - CategoryTheory.Over.pullback_obj_left 📋 Mathlib.CategoryTheory.Comma.Over.Pullback
{C : Type u} [CategoryTheory.Category.{v, u} C] {X Y : C} (f : X ⟶ Y) [CategoryTheory.Limits.HasPullbacksAlong f] (g : CategoryTheory.Over Y) : ((CategoryTheory.Over.pullback f).obj g).left = CategoryTheory.Limits.pullback g.hom f - CategoryTheory.Over.pullback_obj_hom 📋 Mathlib.CategoryTheory.Comma.Over.Pullback
{C : Type u} [CategoryTheory.Category.{v, u} C] {X Y : C} (f : X ⟶ Y) [CategoryTheory.Limits.HasPullbacksAlong f] (g : CategoryTheory.Over Y) : ((CategoryTheory.Over.pullback f).obj g).hom = CategoryTheory.Limits.pullback.snd g.hom f - CategoryTheory.Over.pullbackComp 📋 Mathlib.CategoryTheory.Comma.Over.Pullback
{C : Type u} [CategoryTheory.Category.{v, u} C] {X Y Z : C} (f : X ⟶ Y) (g : Y ⟶ Z) [CategoryTheory.Limits.HasPullbacksAlong f] [CategoryTheory.Limits.HasPullbacksAlong g] : CategoryTheory.Over.pullback (CategoryTheory.CategoryStruct.comp f g) ≅ (CategoryTheory.Over.pullback g).comp (CategoryTheory.Over.pullback f) - CategoryTheory.Over.pullback_map_left 📋 Mathlib.CategoryTheory.Comma.Over.Pullback
{C : Type u} [CategoryTheory.Category.{v, u} C] {X Y : C} (f : X ⟶ Y) [CategoryTheory.Limits.HasPullbacksAlong f] (g : CategoryTheory.Over Y) {h : CategoryTheory.Over Y} {k : g ⟶ h} : ((CategoryTheory.Over.pullback f).map k).left = CategoryTheory.Limits.pullback.lift (CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pullback.fst g.hom f) (CategoryTheory.Over.Hom.left k)) (CategoryTheory.Limits.pullback.snd g.hom f) ⋯ - CategoryTheory.Over.mapPullbackAdj_counit_app 📋 Mathlib.CategoryTheory.Comma.Over.Pullback
{C : Type u} [CategoryTheory.Category.{v, u} C] {X Y : C} (f : X ⟶ Y) [CategoryTheory.Limits.HasPullbacksAlong f] (Y✝ : CategoryTheory.Over Y) : (CategoryTheory.Over.mapPullbackAdj f).counit.app Y✝ = CategoryTheory.Over.homMk (CategoryTheory.Limits.pullback.fst Y✝.hom f) ⋯ - CategoryTheory.Over.starPullbackIsoStar_hom_app_left 📋 Mathlib.CategoryTheory.Comma.Over.Pullback
{C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasBinaryProducts C] [CategoryTheory.Limits.HasPullbacks C] {X Y : C} (f : X ⟶ Y) (X✝ : C) : ((CategoryTheory.Over.starPullbackIsoStar f).hom.app X✝).left = CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pullback.map (CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.prod.lift CategoryTheory.Limits.prod.fst (CategoryTheory.CategoryStruct.id (Y ⨯ X✝))) CategoryTheory.Limits.prod.fst) f CategoryTheory.Limits.prod.fst f (CategoryTheory.CategoryStruct.id (Y ⨯ X✝)) (CategoryTheory.CategoryStruct.id X) (CategoryTheory.CategoryStruct.id Y) ⋯ ⋯) (CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pullbackSymmetry CategoryTheory.Limits.prod.fst f).hom (CategoryTheory.Limits.pullbackProdFstIsoProd f X✝).hom) - CategoryTheory.Over.starPullbackIsoStar_inv_app_left 📋 Mathlib.CategoryTheory.Comma.Over.Pullback
{C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasBinaryProducts C] [CategoryTheory.Limits.HasPullbacks C] {X Y : C} (f : X ⟶ Y) (X✝ : C) : ((CategoryTheory.Over.starPullbackIsoStar f).inv.app X✝).left = CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pullbackProdFstIsoProd f X✝).inv (CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pullbackSymmetry CategoryTheory.Limits.prod.fst f).inv (CategoryTheory.Limits.pullback.map CategoryTheory.Limits.prod.fst f (CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.prod.lift CategoryTheory.Limits.prod.fst (CategoryTheory.CategoryStruct.id (Y ⨯ X✝))) CategoryTheory.Limits.prod.fst) f (CategoryTheory.CategoryStruct.id (Y ⨯ X✝)) (CategoryTheory.CategoryStruct.id X) (CategoryTheory.CategoryStruct.id Y) ⋯ ⋯)) - CategoryTheory.Over.postAdjunctionLeft_counit_app_left 📋 Mathlib.CategoryTheory.Comma.Over.Pullback
{C : Type u} [CategoryTheory.Category.{v, u} C] {D : Type u₂} [CategoryTheory.Category.{v₂, u₂} D] [CategoryTheory.Limits.HasPullbacks C] {X : C} {F : CategoryTheory.Functor C D} {G : CategoryTheory.Functor D C} (a : F ⊣ G) (X✝ : CategoryTheory.Over ((CategoryTheory.Functor.id D).obj (F.obj X))) : ((CategoryTheory.Over.postAdjunctionLeft a).counit.app X✝).left = CategoryTheory.CategoryStruct.comp ((CategoryTheory.NatIso.ofComponents (fun Y => CategoryTheory.Over.isoMk (CategoryTheory.Iso.refl (F.obj Y.left)) ⋯) ⋯).inv.app ((CategoryTheory.Over.pullback (a.unit.app X)).obj (CategoryTheory.Over.mk (G.map X✝.hom)))).left (CategoryTheory.CategoryStruct.comp (F.map (CategoryTheory.Limits.pullback.fst (G.map X✝.hom) (a.unit.app X))) (CategoryTheory.Over.Hom.left (CategoryTheory.Over.homMk (a.counit.app X✝.left) ⋯))) - CategoryTheory.Over.postAdjunctionLeft_unit_app_left 📋 Mathlib.CategoryTheory.Comma.Over.Pullback
{C : Type u} [CategoryTheory.Category.{v, u} C] {D : Type u₂} [CategoryTheory.Category.{v₂, u₂} D] [CategoryTheory.Limits.HasPullbacks C] {X : C} {F : CategoryTheory.Functor C D} {G : CategoryTheory.Functor D C} (a : F ⊣ G) (X✝ : CategoryTheory.Over ((CategoryTheory.Functor.id C).obj X)) : ((CategoryTheory.Over.postAdjunctionLeft a).unit.app X✝).left = CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pullback.lift (CategoryTheory.CategoryStruct.id X✝.left) X✝.hom ⋯) (CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pullback.lift (CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pullback.fst (CategoryTheory.CategoryStruct.comp X✝.hom (a.unit.app X)) (a.unit.app X)) (a.unit.app X✝.left)) (CategoryTheory.Limits.pullback.snd (CategoryTheory.CategoryStruct.comp X✝.hom (a.unit.app X)) (a.unit.app X)) ⋯) (((CategoryTheory.Over.post G).comp (CategoryTheory.Over.pullback (a.unit.app X))).map ((CategoryTheory.NatIso.ofComponents (fun Y => CategoryTheory.Over.isoMk (CategoryTheory.Iso.refl (F.obj Y.left)) ⋯) ⋯).hom.app X✝)).left) - CategoryTheory.Limits.Cofork.isColimitCoforkPushoutEquivIsColimitForkOpPullback 📋 Mathlib.CategoryTheory.Limits.Shapes.Opposites.Equalizers
{C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] {X Y : C} {f : X ⟶ Y} [CategoryTheory.Limits.HasPullback f f] : CategoryTheory.Limits.IsColimit (CategoryTheory.Limits.Cofork.ofπ f ⋯) ≃ CategoryTheory.Limits.IsLimit (CategoryTheory.Limits.Fork.ofι f.op ⋯) - CategoryTheory.Limits.Fork.isLimitForkPushoutEquivIsColimitForkOpPullback 📋 Mathlib.CategoryTheory.Limits.Shapes.Opposites.Equalizers
{C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] {X Y : C} {f : X ⟶ Y} [CategoryTheory.Limits.HasPushout f f] : CategoryTheory.Limits.IsLimit (CategoryTheory.Limits.Fork.ofι f ⋯) ≃ CategoryTheory.Limits.IsColimit (CategoryTheory.Limits.Cofork.ofπ f.op ⋯) - CategoryTheory.Limits.Cofork.isColimitCoforkPushoutEquivIsColimitForkUnopPullback 📋 Mathlib.CategoryTheory.Limits.Shapes.Opposites.Equalizers
{C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] {X Y : Cᵒᵖ} {f : X ⟶ Y} [CategoryTheory.Limits.HasPullback f f] : CategoryTheory.Limits.IsColimit (CategoryTheory.Limits.Cofork.ofπ f ⋯) ≃ CategoryTheory.Limits.IsLimit (CategoryTheory.Limits.Fork.ofι f.unop ⋯) - CategoryTheory.Limits.Fork.isLimitForkPushoutEquivIsColimitForkUnopPullback 📋 Mathlib.CategoryTheory.Limits.Shapes.Opposites.Equalizers
{C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] {X Y : Cᵒᵖ} {f : X ⟶ Y} [CategoryTheory.Limits.HasPushout f f] : CategoryTheory.Limits.IsLimit (CategoryTheory.Limits.Fork.ofι f ⋯) ≃ CategoryTheory.Limits.IsColimit (CategoryTheory.Limits.Cofork.ofπ f.unop ⋯) - CategoryTheory.effectiveEpi_of_kernelPair 📋 Mathlib.CategoryTheory.Limits.Shapes.RegularMono
{C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] {B X : C} (f : X ⟶ B) [CategoryTheory.Limits.HasPullback f f] (hc : CategoryTheory.Limits.IsColimit (CategoryTheory.Limits.Cofork.ofπ f ⋯)) : CategoryTheory.EffectiveEpi f - CategoryTheory.regularEpiOfKernelPair 📋 Mathlib.CategoryTheory.Limits.Shapes.RegularMono
{C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] {B X : C} (f : X ⟶ B) [CategoryTheory.Limits.HasPullback f f] (hc : CategoryTheory.Limits.IsColimit (CategoryTheory.Limits.Cofork.ofπ f ⋯)) : CategoryTheory.RegularEpi f - CategoryTheory.IsRegularEpi.of_epi_of_exists 📋 Mathlib.CategoryTheory.Limits.Shapes.RegularMono
{C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] {X B : C} {f : X ⟶ B} [CategoryTheory.Limits.HasPullback f f] [CategoryTheory.Epi f] (h : ∀ ⦃Z : C⦄ ⦃g : X ⟶ Z⦄, CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pullback.fst f f) g = CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.pullback.snd f f) g → ∃ u, CategoryTheory.CategoryStruct.comp f u = g) : CategoryTheory.IsRegularEpi f - CategoryTheory.IsKernelPair.of_hasPullback 📋 Mathlib.CategoryTheory.Limits.Shapes.KernelPair
{C : Type u} [CategoryTheory.Category.{v, u} C] {X Y : C} (f : X ⟶ Y) [CategoryTheory.Limits.HasPullback f f] : CategoryTheory.IsKernelPair f (CategoryTheory.Limits.pullback.fst f f) (CategoryTheory.Limits.pullback.snd f f)
About
Loogle searches Lean and Mathlib definitions and theorems.
You can use Loogle from within the Lean4 VSCode language extension
using the Loogle command from the command palette. You can also try the
#loogle command from LeanSearchClient,
the CLI version, the Loogle
VS Code extension, the lean.nvim
integration or the Zulip bot.
Usage
Loogle finds definitions and lemmas in various ways:
By constant:
🔍Real.sin
finds all lemmas whose statement somehow mentions the sine function.By lemma name substring:
🔍"differ"
finds all lemmas that have"differ"somewhere in their lemma name.By subexpression:
🔍_ * (_ ^ _)
finds all lemmas whose statements somewhere include a product where the second argument is raised to some power.The pattern can also be non-linear, as in
🔍Real.sqrt ?a * Real.sqrt ?aIf the pattern has parameters, they are matched in any order. Both of these will find
List.map:
🔍(?a -> ?b) -> List ?a -> List ?b
🔍List ?a -> (?a -> ?b) -> List ?bBy main conclusion:
🔍|- tsum _ = _ * tsum _
finds all lemmas where the conclusion (the subexpression to the right of all→and∀) has the given shape.As before, if the pattern has parameters, they are matched against the hypotheses of the lemma in any order; for example,
🔍|- _ < _ → tsum _ < tsum _
will findtsum_lt_tsumeven though the hypothesisf i < g iis not the last.You can filter for definitions vs theorems: Using
⊢ (_ : Type _)finds all definitions which provide data while⊢ (_ : Prop)finds all theorems (and definitions of proofs).
If you pass more than one such search filter, separated by commas
Loogle will return lemmas which match all of them. The
search
🔍 Real.sin, "two", tsum, _ * _, _ ^ _, |- _ < _ → _
would find all lemmas which mention the constants Real.sin
and tsum, have "two" as a substring of the
lemma name, include a product and a power somewhere in the type,
and have a hypothesis of the form _ < _ (if
there were any such lemmas). Metavariables (?a) are
assigned independently in each filter.
The #lucky button will directly send you to the
documentation of the first hit.
Source code
You can find the source code for this service at https://github.com/nomeata/loogle. The https://loogle.lean-lang.org/ service is provided by the Lean FRO. Please review the Lean FRO Terms of Use and Privacy Policy.
This is Loogle revision 9f11169 serving mathlib revision 69fae59