Show that a functor F : C ⥤ D preserves binary products if and only if
⟨Fπ₁, Fπ₂⟩ : F (A ⨯ B) ⟶ F A ⨯ F B (that is, prod_comparison) is an isomorphism for all A, B.
@[simp]
    
theorem
category_theory.limits.alternative_cone_π
    {C : Type u₁}
    [category_theory.category C]
    {D : Type u₂}
    [category_theory.category D]
    [category_theory.limits.has_binary_products D]
    (F : C ⥤ D)
    (A B : C) :
(category_theory.limits.alternative_cone F A B).π = category_theory.discrete.nat_trans (λ (j : category_theory.discrete category_theory.limits.walking_pair), category_theory.limits.walking_pair.cases_on j category_theory.limits.prod.fst category_theory.limits.prod.snd)
    
def
category_theory.limits.alternative_cone
    {C : Type u₁}
    [category_theory.category C]
    {D : Type u₂}
    [category_theory.category D]
    [category_theory.limits.has_binary_products D]
    (F : C ⥤ D)
    (A B : C) :
(Implementation). Construct a cone for pair A B ⋙ F which we will show is limiting.
Equations
- category_theory.limits.alternative_cone F A B = {X := F.obj A ⨯ F.obj B, π := category_theory.discrete.nat_trans (λ (j : category_theory.discrete category_theory.limits.walking_pair), category_theory.limits.walking_pair.cases_on j category_theory.limits.prod.fst category_theory.limits.prod.snd)}
 
@[simp]
    
theorem
category_theory.limits.alternative_cone_X
    {C : Type u₁}
    [category_theory.category C]
    {D : Type u₂}
    [category_theory.category D]
    [category_theory.limits.has_binary_products D]
    (F : C ⥤ D)
    (A B : C) :
    
def
category_theory.limits.alternative_cone_is_limit
    {C : Type u₁}
    [category_theory.category C]
    {D : Type u₂}
    [category_theory.category D]
    [category_theory.limits.has_binary_products D]
    (F : C ⥤ D)
    (A B : C) :
(Implementation). Show that we have a limit for the shape pair A B ⋙ F.
Equations
- category_theory.limits.alternative_cone_is_limit F A B = {lift := λ (s : category_theory.limits.cone (category_theory.limits.pair A B ⋙ F)), category_theory.limits.prod.lift (s.π.app category_theory.limits.walking_pair.left) (s.π.app category_theory.limits.walking_pair.right), fac' := _, uniq' := _}
 
    
def
category_theory.limits.preserves_binary_prod_of_prod_comparison_iso
    {C : Type u₁}
    [category_theory.category C]
    {D : Type u₂}
    [category_theory.category D]
    [category_theory.limits.has_binary_products D]
    (F : C ⥤ D)
    [category_theory.limits.has_binary_products C]
    (A B : C)
    [category_theory.is_iso (category_theory.limits.prod_comparison F A B)] :
If prod_comparison F A B is an iso, then F preserves the limit A ⨯ B.
Equations
- category_theory.limits.preserves_binary_prod_of_prod_comparison_iso F A B = category_theory.limits.preserves_limit_of_preserves_limit_cone (category_theory.limits.limit.is_limit (category_theory.limits.pair A B)) ((category_theory.limits.alternative_cone_is_limit F A B).of_iso_limit (category_theory.limits.cones.ext (category_theory.as_iso (category_theory.limits.prod_comparison F A B)).symm _))
 
@[instance]
    
def
category_theory.limits.preserves_binary_prods_of_prod_comparison_iso
    {C : Type u₁}
    [category_theory.category C]
    {D : Type u₂}
    [category_theory.category D]
    [category_theory.limits.has_binary_products D]
    (F : C ⥤ D)
    [category_theory.limits.has_binary_products C]
    [Π (A B : C), category_theory.is_iso (category_theory.limits.prod_comparison F A B)] :
If prod_comparison F A B is an iso for all A, B , then F preserves binary products.
@[instance]
    
def
category_theory.limits.prod_comparison_iso_of_preserves_binary_prods
    {C : Type u₁}
    [category_theory.category C]
    {D : Type u₂}
    [category_theory.category D]
    [category_theory.limits.has_binary_products D]
    (F : C ⥤ D)
    [category_theory.limits.has_binary_products C]
    [category_theory.limits.preserves_limits_of_shape (category_theory.discrete category_theory.limits.walking_pair) F]
    (A B : C) :
The product comparison isomorphism. Technically a special case of preserves_limit_iso, but
this version is convenient to have.
Equations
- category_theory.limits.prod_comparison_iso_of_preserves_binary_prods F A B = let t : category_theory.limits.is_limit (F.map_cone (category_theory.limits.limit.cone (category_theory.limits.pair A B))) := category_theory.limits.preserves_limit.preserves (category_theory.limits.limit.is_limit (category_theory.limits.pair A B)) in {inv := t.lift (category_theory.limits.alternative_cone F A B), hom_inv_id' := _, inv_hom_id' := _}