Theorem: CategoryTheory.Localization.SmallHom.equiv_comp
File: Mathlib/CategoryTheory/Localization/SmallHom.lean

Proof steps:
state_before: C : Type u₁
inst✝⁶ : Category.{v₁, u₁} C
W : MorphismProperty C
D : Type u₂
inst✝⁵ : Category.{v₂, u₂} D
D' : Type u₃
inst✝⁴ : Category.{v₃, u₃} D'
L : C ⥤ D
inst✝³ : L.IsLocalization W
X Y Z : C
inst✝² : HasSmallLocalizedHom W X Y
inst✝¹ : HasSmallLocalizedHom W Y Z
inst✝ : HasSmallLocalizedHom W X Z
α : SmallHom W X Y
β : SmallHom W Y Z
⊢ (equiv W L) (α.comp β) = (equiv W L) α ≫ (equiv W L) β
state_after: C : Type u₁
inst✝⁶ : Category.{v₁, u₁} C
W : MorphismProperty C
D : Type u₂
inst✝⁵ : Category.{v₂, u₂} D
D' : Type u₃
inst✝⁴ : Category.{v₃, u₃} D'
L : C ⥤ D
inst✝³ : L.IsLocalization W
X Y Z : C
inst✝² : HasSmallLocalizedHom W X Y
inst✝¹ : HasSmallLocalizedHom W Y Z
inst✝ : HasSmallLocalizedHom W X Z
α : SmallHom W X Y
β : SmallHom W Y Z
this : Small.{w, max u₁ v₁} (W.Q.obj X ⟶ W.Q.obj Y) := small_of_hasSmallLocalizedHom W W.Q X Y
⊢ (equiv W L) (α.comp β) = (equiv W L) α ≫ (equiv W L) β
tactic: letI := small_of_hasSmallLocalizedHom.{w} W W.Q X Y
state_before: C : Type u₁
inst✝⁶ : Category.{v₁, u₁} C
W : MorphismProperty C
D : Type u₂
inst✝⁵ : Category.{v₂, u₂} D
D' : Type u₃
inst✝⁴ : Category.{v₃, u₃} D'
L : C ⥤ D
inst✝³ : L.IsLocalization W
X Y Z : C
inst✝² : HasSmallLocalizedHom W X Y
inst✝¹ : HasSmallLocalizedHom W Y Z
inst✝ : HasSmallLocalizedHom W X Z
α : SmallHom W X Y
β : SmallHom W Y Z
this : Small.{w, max u₁ v₁} (W.Q.obj X ⟶ W.Q.obj Y) := small_of_hasSmallLocalizedHom W W.Q X Y
⊢ (equiv W L) (α.comp β) = (equiv W L) α ≫ (equiv W L) β
state_after: C : Type u₁
inst✝⁶ : Category.{v₁, u₁} C
W : MorphismProperty C
D : Type u₂
inst✝⁵ : Category.{v₂, u₂} D
D' : Type u₃
inst✝⁴ : Category.{v₃, u₃} D'
L : C ⥤ D
inst✝³ : L.IsLocalization W
X Y Z : C
inst✝² : HasSmallLocalizedHom W X Y
inst✝¹ : HasSmallLocalizedHom W Y Z
inst✝ : HasSmallLocalizedHom W X Z
α : SmallHom W X Y
β : SmallHom W Y Z
this✝ : Small.{w, max u₁ v₁} (W.Q.obj X ⟶ W.Q.obj Y) := small_of_hasSmallLocalizedHom W W.Q X Y
this : Small.{w, max u₁ v₁} (W.Q.obj Y ⟶ W.Q.obj Z) := small_of_hasSmallLocalizedHom W W.Q Y Z
⊢ (equiv W L) (α.comp β) = (equiv W L) α ≫ (equiv W L) β
tactic: letI := small_of_hasSmallLocalizedHom.{w} W W.Q Y Z
state_before: C : Type u₁
inst✝⁶ : Category.{v₁, u₁} C
W : MorphismProperty C
D : Type u₂
inst✝⁵ : Category.{v₂, u₂} D
D' : Type u₃
inst✝⁴ : Category.{v₃, u₃} D'
L : C ⥤ D
inst✝³ : L.IsLocalization W
X Y Z : C
inst✝² : HasSmallLocalizedHom W X Y
inst✝¹ : HasSmallLocalizedHom W Y Z
inst✝ : HasSmallLocalizedHom W X Z
α : SmallHom W X Y
β : SmallHom W Y Z
this✝ : Small.{w, max u₁ v₁} (W.Q.obj X ⟶ W.Q.obj Y) := small_of_hasSmallLocalizedHom W W.Q X Y
this : Small.{w, max u₁ v₁} (W.Q.obj Y ⟶ W.Q.obj Z) := small_of_hasSmallLocalizedHom W W.Q Y Z
⊢ (equiv W L) (α.comp β) = (equiv W L) α ≫ (equiv W L) β
state_after: case intro
C : Type u₁
inst✝⁶ : Category.{v₁, u₁} C
W : MorphismProperty C
D : Type u₂
inst✝⁵ : Category.{v₂, u₂} D
D' : Type u₃
inst✝⁴ : Category.{v₃, u₃} D'
L : C ⥤ D
inst✝³ : L.IsLocalization W
X Y Z : C
inst✝² : HasSmallLocalizedHom W X Y
inst✝¹ : HasSmallLocalizedHom W Y Z
inst✝ : HasSmallLocalizedHom W X Z
β : SmallHom W Y Z
this✝ : Small.{w, max u₁ v₁} (W.Q.obj X ⟶ W.Q.obj Y) := small_of_hasSmallLocalizedHom W W.Q X Y
this : Small.{w, max u₁ v₁} (W.Q.obj Y ⟶ W.Q.obj Z) := small_of_hasSmallLocalizedHom W W.Q Y Z
α : W.Q.obj X ⟶ W.Q.obj Y
⊢ (equiv W L) (comp ((equivShrink (W.Q.obj X ⟶ W.Q.obj Y)) α) β) =
    (equiv W L) ((equivShrink (W.Q.obj X ⟶ W.Q.obj Y)) α) ≫ (equiv W L) β
tactic: obtain ⟨α, rfl⟩ := (equivShrink _).surjective α
state_before: case intro
C : Type u₁
inst✝⁶ : Category.{v₁, u₁} C
W : MorphismProperty C
D : Type u₂
inst✝⁵ : Category.{v₂, u₂} D
D' : Type u₃
inst✝⁴ : Category.{v₃, u₃} D'
L : C ⥤ D
inst✝³ : L.IsLocalization W
X Y Z : C
inst✝² : HasSmallLocalizedHom W X Y
inst✝¹ : HasSmallLocalizedHom W Y Z
inst✝ : HasSmallLocalizedHom W X Z
β : SmallHom W Y Z
this✝ : Small.{w, max u₁ v₁} (W.Q.obj X ⟶ W.Q.obj Y) := small_of_hasSmallLocalizedHom W W.Q X Y
this : Small.{w, max u₁ v₁} (W.Q.obj Y ⟶ W.Q.obj Z) := small_of_hasSmallLocalizedHom W W.Q Y Z
α : W.Q.obj X ⟶ W.Q.obj Y
⊢ (equiv W L) (comp ((equivShrink (W.Q.obj X ⟶ W.Q.obj Y)) α) β) =
    (equiv W L) ((equivShrink (W.Q.obj X ⟶ W.Q.obj Y)) α) ≫ (equiv W L) β
state_after: case intro.intro
C : Type u₁
inst✝⁶ : Category.{v₁, u₁} C
W : MorphismProperty C
D : Type u₂
inst✝⁵ : Category.{v₂, u₂} D
D' : Type u₃
inst✝⁴ : Category.{v₃, u₃} D'
L : C ⥤ D
inst✝³ : L.IsLocalization W
X Y Z : C
inst✝² : HasSmallLocalizedHom W X Y
inst✝¹ : HasSmallLocalizedHom W Y Z
inst✝ : HasSmallLocalizedHom W X Z
this✝ : Small.{w, max u₁ v₁} (W.Q.obj X ⟶ W.Q.obj Y) := small_of_hasSmallLocalizedHom W W.Q X Y
this : Small.{w, max u₁ v₁} (W.Q.obj Y ⟶ W.Q.obj Z) := small_of_hasSmallLocalizedHom W W.Q Y Z
α : W.Q.obj X ⟶ W.Q.obj Y
β : W.Q.obj Y ⟶ W.Q.obj Z
⊢ (equiv W L) (comp ((equivShrink (W.Q.obj X ⟶ W.Q.obj Y)) α) ((equivShrink (W.Q.obj Y ⟶ W.Q.obj Z)) β)) =
    (equiv W L) ((equivShrink (W.Q.obj X ⟶ W.Q.obj Y)) α) ≫ (equiv W L) ((equivShrink (W.Q.obj Y ⟶ W.Q.obj Z)) β)
tactic: obtain ⟨β, rfl⟩ := (equivShrink _).surjective β
state_before: case intro.intro
C : Type u₁
inst✝⁶ : Category.{v₁, u₁} C
W : MorphismProperty C
D : Type u₂
inst✝⁵ : Category.{v₂, u₂} D
D' : Type u₃
inst✝⁴ : Category.{v₃, u₃} D'
L : C ⥤ D
inst✝³ : L.IsLocalization W
X Y Z : C
inst✝² : HasSmallLocalizedHom W X Y
inst✝¹ : HasSmallLocalizedHom W Y Z
inst✝ : HasSmallLocalizedHom W X Z
this✝ : Small.{w, max u₁ v₁} (W.Q.obj X ⟶ W.Q.obj Y) := small_of_hasSmallLocalizedHom W W.Q X Y
this : Small.{w, max u₁ v₁} (W.Q.obj Y ⟶ W.Q.obj Z) := small_of_hasSmallLocalizedHom W W.Q Y Z
α : W.Q.obj X ⟶ W.Q.obj Y
β : W.Q.obj Y ⟶ W.Q.obj Z
⊢ (equiv W L) (comp ((equivShrink (W.Q.obj X ⟶ W.Q.obj Y)) α) ((equivShrink (W.Q.obj Y ⟶ W.Q.obj Z)) β)) =
    (equiv W L) ((equivShrink (W.Q.obj X ⟶ W.Q.obj Y)) α) ≫ (equiv W L) ((equivShrink (W.Q.obj Y ⟶ W.Q.obj Z)) β)
state_after: case intro.intro
C : Type u₁
inst✝⁶ : Category.{v₁, u₁} C
W : MorphismProperty C
D : Type u₂
inst✝⁵ : Category.{v₂, u₂} D
D' : Type u₃
inst✝⁴ : Category.{v₃, u₃} D'
L : C ⥤ D
inst✝³ : L.IsLocalization W
X Y Z : C
inst✝² : HasSmallLocalizedHom W X Y
inst✝¹ : HasSmallLocalizedHom W Y Z
inst✝ : HasSmallLocalizedHom W X Z
this✝ : Small.{w, max u₁ v₁} (W.Q.obj X ⟶ W.Q.obj Y) := small_of_hasSmallLocalizedHom W W.Q X Y
this : Small.{w, max u₁ v₁} (W.Q.obj Y ⟶ W.Q.obj Z) := small_of_hasSmallLocalizedHom W W.Q Y Z
α : W.Q.obj X ⟶ W.Q.obj Y
β : W.Q.obj Y ⟶ W.Q.obj Z
⊢ (homEquiv W W.Q L)
      ((equivShrink (W.Q.obj X ⟶ W.Q.obj Z)).symm
        ((equivShrink (W.Q.obj X ⟶ W.Q.obj Z))
          ((homEquiv W W.Q W.Q)
            ((homEquiv W W.Q W.Q)
                ((equivShrink (W.Q.obj X ⟶ W.Q.obj Y)).symm ((equivShrink (W.Q.obj X ⟶ W.Q.obj Y)) α)) ≫
              (homEquiv W W.Q W.Q)
                ((equivShrink (W.Q.obj Y ⟶ W.Q.obj Z)).symm ((equivShrink (W.Q.obj Y ⟶ W.Q.obj Z)) β)))))) =
    (homEquiv W W.Q L) ((equivShrink (W.Q.obj X ⟶ W.Q.obj Y)).symm ((equivShrink (W.Q.obj X ⟶ W.Q.obj Y)) α)) ≫
      (homEquiv W W.Q L) ((equivShrink (W.Q.obj Y ⟶ W.Q.obj Z)).symm ((equivShrink (W.Q.obj Y ⟶ W.Q.obj Z)) β))
tactic: dsimp [equiv, comp]
state_before: case intro.intro
C : Type u₁
inst✝⁶ : Category.{v₁, u₁} C
W : MorphismProperty C
D : Type u₂
inst✝⁵ : Category.{v₂, u₂} D
D' : Type u₃
inst✝⁴ : Category.{v₃, u₃} D'
L : C ⥤ D
inst✝³ : L.IsLocalization W
X Y Z : C
inst✝² : HasSmallLocalizedHom W X Y
inst✝¹ : HasSmallLocalizedHom W Y Z
inst✝ : HasSmallLocalizedHom W X Z
this✝ : Small.{w, max u₁ v₁} (W.Q.obj X ⟶ W.Q.obj Y) := small_of_hasSmallLocalizedHom W W.Q X Y
this : Small.{w, max u₁ v₁} (W.Q.obj Y ⟶ W.Q.obj Z) := small_of_hasSmallLocalizedHom W W.Q Y Z
α : W.Q.obj X ⟶ W.Q.obj Y
β : W.Q.obj Y ⟶ W.Q.obj Z
⊢ (homEquiv W W.Q L)
      ((equivShrink (W.Q.obj X ⟶ W.Q.obj Z)).symm
        ((equivShrink (W.Q.obj X ⟶ W.Q.obj Z))
          ((homEquiv W W.Q W.Q)
            ((homEquiv W W.Q W.Q)
                ((equivShrink (W.Q.obj X ⟶ W.Q.obj Y)).symm ((equivShrink (W.Q.obj X ⟶ W.Q.obj Y)) α)) ≫
              (homEquiv W W.Q W.Q)
                ((equivShrink (W.Q.obj Y ⟶ W.Q.obj Z)).symm ((equivShrink (W.Q.obj Y ⟶ W.Q.obj Z)) β)))))) =
    (homEquiv W W.Q L) ((equivShrink (W.Q.obj X ⟶ W.Q.obj Y)).symm ((equivShrink (W.Q.obj X ⟶ W.Q.obj Y)) α)) ≫
      (homEquiv W W.Q L) ((equivShrink (W.Q.obj Y ⟶ W.Q.obj Z)).symm ((equivShrink (W.Q.obj Y ⟶ W.Q.obj Z)) β))
state_after: case intro.intro
C : Type u₁
inst✝⁶ : Category.{v₁, u₁} C
W : MorphismProperty C
D : Type u₂
inst✝⁵ : Category.{v₂, u₂} D
D' : Type u₃
inst✝⁴ : Category.{v₃, u₃} D'
L : C ⥤ D
inst✝³ : L.IsLocalization W
X Y Z : C
inst✝² : HasSmallLocalizedHom W X Y
inst✝¹ : HasSmallLocalizedHom W Y Z
inst✝ : HasSmallLocalizedHom W X Z
this✝ : Small.{w, max u₁ v₁} (W.Q.obj X ⟶ W.Q.obj Y) := small_of_hasSmallLocalizedHom W W.Q X Y
this : Small.{w, max u₁ v₁} (W.Q.obj Y ⟶ W.Q.obj Z) := small_of_hasSmallLocalizedHom W W.Q Y Z
α : W.Q.obj X ⟶ W.Q.obj Y
β : W.Q.obj Y ⟶ W.Q.obj Z
⊢ (homEquiv W W.Q L)
      ((homEquiv W W.Q W.Q)
        ((homEquiv W W.Q W.Q) ((equivShrink (W.Q.obj X ⟶ W.Q.obj Y)).symm ((equivShrink (W.Q.obj X ⟶ W.Q.obj Y)) α)) ≫
          (homEquiv W W.Q W.Q)
            ((equivShrink (W.Q.obj Y ⟶ W.Q.obj Z)).symm ((equivShrink (W.Q.obj Y ⟶ W.Q.obj Z)) β)))) =
    (homEquiv W W.Q L) ((equivShrink (W.Q.obj X ⟶ W.Q.obj Y)).symm ((equivShrink (W.Q.obj X ⟶ W.Q.obj Y)) α)) ≫
      (homEquiv W W.Q L) ((equivShrink (W.Q.obj Y ⟶ W.Q.obj Z)).symm ((equivShrink (W.Q.obj Y ⟶ W.Q.obj Z)) β))
tactic: rw [Equiv.symm_apply_apply]
state_before: case intro.intro
C : Type u₁
inst✝⁶ : Category.{v₁, u₁} C
W : MorphismProperty C
D : Type u₂
inst✝⁵ : Category.{v₂, u₂} D
D' : Type u₃
inst✝⁴ : Category.{v₃, u₃} D'
L : C ⥤ D
inst✝³ : L.IsLocalization W
X Y Z : C
inst✝² : HasSmallLocalizedHom W X Y
inst✝¹ : HasSmallLocalizedHom W Y Z
inst✝ : HasSmallLocalizedHom W X Z
this✝ : Small.{w, max u₁ v₁} (W.Q.obj X ⟶ W.Q.obj Y) := small_of_hasSmallLocalizedHom W W.Q X Y
this : Small.{w, max u₁ v₁} (W.Q.obj Y ⟶ W.Q.obj Z) := small_of_hasSmallLocalizedHom W W.Q Y Z
α : W.Q.obj X ⟶ W.Q.obj Y
β : W.Q.obj Y ⟶ W.Q.obj Z
⊢ (homEquiv W W.Q L)
      ((homEquiv W W.Q W.Q)
        ((homEquiv W W.Q W.Q) ((equivShrink (W.Q.obj X ⟶ W.Q.obj Y)).symm ((equivShrink (W.Q.obj X ⟶ W.Q.obj Y)) α)) ≫
          (homEquiv W W.Q W.Q)
            ((equivShrink (W.Q.obj Y ⟶ W.Q.obj Z)).symm ((equivShrink (W.Q.obj Y ⟶ W.Q.obj Z)) β)))) =
    (homEquiv W W.Q L) ((equivShrink (W.Q.obj X ⟶ W.Q.obj Y)).symm ((equivShrink (W.Q.obj X ⟶ W.Q.obj Y)) α)) ≫
      (homEquiv W W.Q L) ((equivShrink (W.Q.obj Y ⟶ W.Q.obj Z)).symm ((equivShrink (W.Q.obj Y ⟶ W.Q.obj Z)) β))
state_after: case intro.intro
C : Type u₁
inst✝⁶ : Category.{v₁, u₁} C
W : MorphismProperty C
D : Type u₂
inst✝⁵ : Category.{v₂, u₂} D
D' : Type u₃
inst✝⁴ : Category.{v₃, u₃} D'
L : C ⥤ D
inst✝³ : L.IsLocalization W
X Y Z : C
inst✝² : HasSmallLocalizedHom W X Y
inst✝¹ : HasSmallLocalizedHom W Y Z
inst✝ : HasSmallLocalizedHom W X Z
this✝ : Small.{w, max u₁ v₁} (W.Q.obj X ⟶ W.Q.obj Y) := small_of_hasSmallLocalizedHom W W.Q X Y
this : Small.{w, max u₁ v₁} (W.Q.obj Y ⟶ W.Q.obj Z) := small_of_hasSmallLocalizedHom W W.Q Y Z
α : W.Q.obj X ⟶ W.Q.obj Y
β : W.Q.obj Y ⟶ W.Q.obj Z
⊢ (homEquiv W W.Q L) ((homEquiv W W.Q W.Q) ((homEquiv W W.Q W.Q) α ≫ (homEquiv W W.Q W.Q) β)) =
    (homEquiv W W.Q L) α ≫ (homEquiv W W.Q L) β
tactic: erw [(equivShrink _).symm_apply_apply, (equivShrink _).symm_apply_apply]
state_before: case intro.intro
C : Type u₁
inst✝⁶ : Category.{v₁, u₁} C
W : MorphismProperty C
D : Type u₂
inst✝⁵ : Category.{v₂, u₂} D
D' : Type u₃
inst✝⁴ : Category.{v₃, u₃} D'
L : C ⥤ D
inst✝³ : L.IsLocalization W
X Y Z : C
inst✝² : HasSmallLocalizedHom W X Y
inst✝¹ : HasSmallLocalizedHom W Y Z
inst✝ : HasSmallLocalizedHom W X Z
this✝ : Small.{w, max u₁ v₁} (W.Q.obj X ⟶ W.Q.obj Y) := small_of_hasSmallLocalizedHom W W.Q X Y
this : Small.{w, max u₁ v₁} (W.Q.obj Y ⟶ W.Q.obj Z) := small_of_hasSmallLocalizedHom W W.Q Y Z
α : W.Q.obj X ⟶ W.Q.obj Y
β : W.Q.obj Y ⟶ W.Q.obj Z
⊢ (homEquiv W W.Q L) ((homEquiv W W.Q W.Q) ((homEquiv W W.Q W.Q) α ≫ (homEquiv W W.Q W.Q) β)) =
    (homEquiv W W.Q L) α ≫ (homEquiv W W.Q L) β
state_after: no goals
tactic: simp only [homEquiv_refl, homEquiv_comp]