Documentation

Mathlib.CategoryTheory.MorphismProperty.Factorization

The factorization axiom #

In this file, we introduce a type-class HasFactorization W₁ W₂, which, given two classes of morphisms W₁ and W₂ in a category C, asserts that any morphism in C can be factored as a morphism in W₁ followed by a morphism in W₂. The data of such factorizations can be packaged in the type FactorizationData W₁ W₂.

This shall be used in the formalization of model categories for which the CM5 axiom asserts that any morphism can be factored as a cofibration followed by a trivial fibration (or a trivial cofibration followed by a fibration).

We also provide a structure FunctorialFactorizationData W₁ W₂ which contains the data of a functorial factorization as above. With this design, when we formalize certain constructions (e.g. cylinder objects in model categories), we may first construct them using using data : FactorizationData W₁ W₂. Without duplication of code, it shall be possible to show these cylinders are functorial when a term data : FunctorialFactorizationData W₁ W₂ is available, the existence of which is asserted in the type-class HasFunctorialFactorization W₁ W₂.

We also introduce the class W₁.comp W₂ of morphisms of the form ip with W₁ i and W₂ p and show that W₁.comp W₂ = ⊤ iff HasFactorization W₁ W₂ holds (this is MorphismProperty.comp_eq_top_iff).

structure CategoryTheory.MorphismProperty.MapFactorizationData {C : Type u_1} [Category.{u_2, u_1} C] (W₁ W₂ : MorphismProperty C) {X Y : C} (f : X Y) :
Type (max u_1 u_2)

Given two classes of morphisms W₁ and W₂ on a category C, this is the data of the factorization of a morphism f : X ⟶ Y as ip with W₁ i and W₂ p.

  • Z : C

    the intermediate object in the factorization

  • i : X self.Z

    the first morphism in the factorization

  • p : self.Z Y

    the second morphism in the factorization

  • fac : CategoryStruct.comp self.i self.p = f
  • hi : W₁ self.i
  • hp : W₂ self.p
Instances For
    @[simp]
    theorem CategoryTheory.MorphismProperty.MapFactorizationData.fac_assoc {C : Type u_1} [Category.{u_2, u_1} C] {W₁ W₂ : MorphismProperty C} {X Y : C} {f : X Y} (self : W₁.MapFactorizationData W₂ f) {Z : C} (h : Y Z) :
    @[reducible, inline]

    The data of a term in MapFactorizationData W₁ W₂ f for any morphism f.

    Equations
    Instances For

      The factorization axiom for two classes of morphisms W₁ and W₂ in a category C. It asserts that any morphism can be factored as a morphism in W₁ followed by a morphism in W₂.

      Instances

        A chosen term in FactorizationData W₁ W₂ when HasFactorization W₁ W₂ holds.

        Equations
        Instances For

          The class of morphisms that are of the form ip with W₁ i and W₂ p.

          Equations
          Instances For

            The data of a functorial factorization of any morphism in C as a morphism in W₁ followed by a morphism in W₂.

            Instances For
              def CategoryTheory.MorphismProperty.FunctorialFactorizationData.ofLE {C : Type u_1} [Category.{u_2, u_1} C] {W₁ W₂ : MorphismProperty C} (data : W₁.FunctorialFactorizationData W₂) {W₁' W₂' : MorphismProperty C} (le₁ : W₁ W₁') (le₂ : W₂ W₂') :

              If W₁ ≤ W₁' and W₂ ≤ W₂', then a functorial factorization for W₁ and W₂ induces a functorial factorization for W₁' and W₂'.

              Equations
              • data.ofLE le₁ le₂ = { Z := data.Z, i := data.i, p := data.p, fac := , hi := , hp := }
              Instances For

                The term in FactorizationData W₁ W₂ that is deduced from a functorial factorization.

                Equations
                Instances For
                  def CategoryTheory.MorphismProperty.FunctorialFactorizationData.mapZ {C : Type u_1} [Category.{u_2, u_1} C] {W₁ W₂ : MorphismProperty C} (data : W₁.FunctorialFactorizationData W₂) {X Y X' Y' : C} {f : X Y} {g : X' Y'} (φ : Arrow.mk f Arrow.mk g) :

                  When data : FunctorialFactorizationData W₁ W₂, this is the morphism (data.factorizationData f).Z ⟶ (data.factorizationData g).Z expressing the functoriality of the intermediate objects of the factorizations for φ : Arrow.mk f ⟶ Arrow.mk g.

                  Equations
                  Instances For
                    @[simp]
                    @[simp]
                    theorem CategoryTheory.MorphismProperty.FunctorialFactorizationData.mapZ_comp {C : Type u_1} [Category.{u_2, u_1} C] {W₁ W₂ : MorphismProperty C} (data : W₁.FunctorialFactorizationData W₂) {X Y X' Y' : C} {f : X Y} {g : X' Y'} (φ : Arrow.mk f Arrow.mk g) {X'' Y'' : C} {h : X'' Y''} (ψ : Arrow.mk g Arrow.mk h) :
                    data.mapZ (CategoryStruct.comp φ ψ) = CategoryStruct.comp (data.mapZ φ) (data.mapZ ψ)
                    theorem CategoryTheory.MorphismProperty.FunctorialFactorizationData.mapZ_comp_assoc {C : Type u_1} [Category.{u_2, u_1} C] {W₁ W₂ : MorphismProperty C} (data : W₁.FunctorialFactorizationData W₂) {X Y X' Y' : C} {f : X Y} {g : X' Y'} (φ : Arrow.mk f Arrow.mk g) {X'' Y'' : C} {h : X'' Y''} (ψ : Arrow.mk g Arrow.mk h) {Z : C} (h✝ : (data.factorizationData h).Z Z) :

                    Auxiliary definition for FunctorialFactorizationData.functorCategory.

                    Equations
                    • One or more equations did not get rendered due to their size.
                    Instances For
                      @[simp]
                      theorem CategoryTheory.MorphismProperty.FunctorialFactorizationData.functorCategory.Z_map_app {C : Type u_1} [Category.{u_3, u_1} C] {W₁ W₂ : MorphismProperty C} (data : W₁.FunctorialFactorizationData W₂) (J : Type u_2) [Category.{u_4, u_2} J] {X✝ Y✝ : Arrow (Functor J C)} (τ : X✝ Y✝) (j : J) :
                      ((Z data J).map τ).app j = data.mapZ { left := τ.left.app j, right := τ.right.app j, w := }
                      @[simp]
                      theorem CategoryTheory.MorphismProperty.FunctorialFactorizationData.functorCategory.Z_obj_map {C : Type u_1} [Category.{u_3, u_1} C] {W₁ W₂ : MorphismProperty C} (data : W₁.FunctorialFactorizationData W₂) (J : Type u_2) [Category.{u_4, u_2} J] (f : Arrow (Functor J C)) {X✝ Y✝ : J} (φ : X✝ Y✝) :
                      ((Z data J).obj f).map φ = data.mapZ { left := f.left.map φ, right := f.right.map φ, w := }

                      A functorial factorization in the category C extends to the functor category J ⥤ C.

                      Equations
                      • One or more equations did not get rendered due to their size.
                      Instances For

                        The functorial factorization axiom for two classes of morphisms W₁ and W₂ in a category C. It asserts that any morphism can be factored in a functorial manner as a morphism in W₁ followed by a morphism in W₂.

                        Instances

                          A chosen term in FunctorialFactorizationData W₁ W₂ when the functorial factorization axiom HasFunctorialFactorization W₁ W₂ holds.

                          Equations
                          Instances For