Documentation

Mathlib.CategoryTheory.Limits.Shapes.SequentialProduct

ℕ-indexed products as sequential limits #

Given sequences M N : ℕ → C of objects with morphisms f n : M n ⟶ N n for all n, this file exhibits ∏ M as the limit of the tower

⋯ → ∏_{n < m + 1} M n × ∏_{n ≥ m + 1} N n → ∏_{n < m} M n × ∏_{n ≥ m} N n → ⋯ → ∏ N

Further, we prove that the transition maps in this tower are epimorphisms, in the case when each f n is an epimorphism and C has finite biproducts.

theorem CategoryTheory.Limits.SequentialProduct.functorObj_eq_pos {C : Type u_1} {M N : C} {n m : } (h : m < n) :
(fun (i : ) => if x : i < n then M i else N i) m = M m
theorem CategoryTheory.Limits.SequentialProduct.functorObj_eq_neg {C : Type u_1} {M N : C} {n m : } (h : ¬m < n) :
(fun (i : ) => if x : i < n then M i else N i) m = N m

The product of the m first objects of M and the rest of the rest of N

Equations
    Instances For
      noncomputable def CategoryTheory.Limits.SequentialProduct.functorObjProj_pos {C : Type u_1} {M N : C} [Category.{u_2, u_1} C] [HasProductsOfShape C] (n m : ) (h : m < n) :
      functorObj M N n M m

      The projection map from functorObj M N n to M m, when m < n

      Equations
        Instances For
          noncomputable def CategoryTheory.Limits.SequentialProduct.functorObjProj_neg {C : Type u_1} {M N : C} [Category.{u_2, u_1} C] [HasProductsOfShape C] (n m : ) (h : ¬m < n) :
          functorObj M N n N m

          The projection map from functorObj M N n to N m, when m ≥ n

          Equations
            Instances For
              noncomputable def CategoryTheory.Limits.SequentialProduct.functorMap {C : Type u_1} {M N : C} [Category.{u_2, u_1} C] (f : (n : ) → M n N n) [HasProductsOfShape C] (n : ) :
              functorObj M N (n + 1) functorObj M N n

              The transition maps in the sequential limit of products

              Equations
                Instances For
                  theorem CategoryTheory.Limits.SequentialProduct.functorMap_commSq_succ {C : Type u_1} {M N : C} [Category.{u_2, u_1} C] (f : (n : ) → M n N n) [HasProductsOfShape C] (n : ) :
                  CategoryStruct.comp ((Functor.ofOpSequence (functorMap f)).map (homOfLE ).op) (CategoryStruct.comp (Pi.π (fun (m : ) => if x : m < Opposite.unop (Opposite.op n) then M m else N m) n) (eqToHom )) = CategoryStruct.comp (Pi.π (fun (i : ) => if x : i < n + 1 then M i else N i) n) (CategoryStruct.comp (eqToHom ) (f n))
                  theorem CategoryTheory.Limits.SequentialProduct.functorMap_commSq_aux {C : Type u_1} {M N : C} [Category.{u_2, u_1} C] (f : (n : ) → M n N n) [HasProductsOfShape C] {n m k : } (h : n m) (hh : ¬k < m) :
                  CategoryStruct.comp ((Functor.ofOpSequence (functorMap f)).map (homOfLE h).op) (CategoryStruct.comp (Pi.π (fun (m : ) => if x : m < Opposite.unop (Opposite.op n) then M m else N m) k) (eqToHom )) = CategoryStruct.comp (Pi.π (fun (i : ) => if x : i < m then M i else N i) k) (eqToHom )
                  theorem CategoryTheory.Limits.SequentialProduct.functorMap_commSq {C : Type u_1} {M N : C} [Category.{u_2, u_1} C] (f : (n : ) → M n N n) [HasProductsOfShape C] {n m : } (h : ¬m < n) :
                  CategoryStruct.comp ((Functor.ofOpSequence (functorMap f)).map (homOfLE ).op) (CategoryStruct.comp (Pi.π (fun (m : ) => if x : m < Opposite.unop (Opposite.op n) then M m else N m) m) (eqToHom )) = CategoryStruct.comp (Pi.π (fun (i : ) => if x : i < m + 1 then M i else N i) m) (CategoryStruct.comp (eqToHom ) (f m))
                  noncomputable def CategoryTheory.Limits.SequentialProduct.cone {C : Type u_1} {M N : C} [Category.{u_2, u_1} C] (f : (n : ) → M n N n) [HasProductsOfShape C] :

                  The cone over the tower

                  ⋯ → ∏_{n < m} M n × ∏_{n ≥ m} N n → ⋯ → ∏ N
                  

                  with cone point ∏ M. This is a limit cone, see CategoryTheory.Limits.SequentialProduct.isLimit.

                  Equations
                    Instances For
                      theorem CategoryTheory.Limits.SequentialProduct.cone_π_app {C : Type u_1} {M N : C} [Category.{u_2, u_1} C] (f : (n : ) → M n N n) [HasProductsOfShape C] (n : ) :
                      (cone f).π.app (Opposite.op n) = Pi.map fun (m : ) => if h : m < n then eqToHom else CategoryStruct.comp (f m) (eqToHom )
                      theorem CategoryTheory.Limits.SequentialProduct.cone_π_app_comp_Pi_π_pos {C : Type u_1} {M N : C} [Category.{u_2, u_1} C] (f : (n : ) → M n N n) [HasProductsOfShape C] (m n : ) (h : n < m) :
                      CategoryStruct.comp ((cone f).π.app (Opposite.op m)) (Pi.π (fun (i : ) => if x : i < m then M i else N i) n) = CategoryStruct.comp (Pi.π M n) (eqToHom )
                      theorem CategoryTheory.Limits.SequentialProduct.cone_π_app_comp_Pi_π_pos_assoc {C : Type u_1} {M N : C} [Category.{u_2, u_1} C] (f : (n : ) → M n N n) [HasProductsOfShape C] (m n : ) (h : n < m) {Z : C} (h✝ : (if x : n < m then M n else N n) Z) :
                      CategoryStruct.comp ((cone f).π.app (Opposite.op m)) (CategoryStruct.comp (Pi.π (fun (i : ) => if x : i < m then M i else N i) n) h✝) = CategoryStruct.comp (Pi.π M n) (CategoryStruct.comp (eqToHom ) h✝)
                      theorem CategoryTheory.Limits.SequentialProduct.cone_π_app_comp_Pi_π_neg {C : Type u_1} {M N : C} [Category.{u_2, u_1} C] (f : (n : ) → M n N n) [HasProductsOfShape C] (m n : ) (h : ¬n < m) :
                      CategoryStruct.comp ((cone f).π.app (Opposite.op m)) (Pi.π (fun (m_1 : ) => if x : m_1 < Opposite.unop (Opposite.op m) then M m_1 else N m_1) n) = CategoryStruct.comp (Pi.π M n) (CategoryStruct.comp (f n) (eqToHom ))
                      theorem CategoryTheory.Limits.SequentialProduct.cone_π_app_comp_Pi_π_neg_assoc {C : Type u_1} {M N : C} [Category.{u_2, u_1} C] (f : (n : ) → M n N n) [HasProductsOfShape C] (m n : ) (h : ¬n < m) {Z : C} (h✝ : (if x : n < m then M n else N n) Z) :
                      CategoryStruct.comp ((cone f).π.app (Opposite.op m)) (CategoryStruct.comp (Pi.π (fun (m_1 : ) => if x : m_1 < m then M m_1 else N m_1) n) h✝) = CategoryStruct.comp (Pi.π M n) (CategoryStruct.comp (f n) (CategoryStruct.comp (eqToHom ) h✝))
                      noncomputable def CategoryTheory.Limits.SequentialProduct.isLimit {C : Type u_1} {M N : C} [Category.{u_2, u_1} C] (f : (n : ) → M n N n) [HasProductsOfShape C] :

                      The cone over the tower

                      ⋯ → ∏_{n < m} M n × ∏_{n ≥ m} N n → ⋯ → ∏ N
                      

                      with cone point ∏ M is indeed a limit cone.

                      Equations
                        Instances For