Theorem: CategoryTheory.Localization.hasSmallLocalizedShiftedHom_iff
File: Mathlib/CategoryTheory/Localization/SmallShiftedHom.lean

Proof steps:
state_before: C : Type u₁
inst✝⁷ : Category.{v₁, u₁} C
D : Type u₂
inst✝⁶ : Category.{v₂, u₂} D
W : MorphismProperty C
M : Type w'
inst✝⁵ : AddMonoid M
inst✝⁴ : HasShift C M
inst✝³ : HasShift D M
inst✝² : W.IsCompatibleWithShift M
X✝ Y✝ : C
L : C ⥤ D
inst✝¹ : L.IsLocalization W
inst✝ : L.CommShift M
X Y : C
⊢ HasSmallLocalizedShiftedHom W M X Y ↔
    ∀ (a b : M), Small.{w, v₂} ((shiftFunctor D a).obj (L.obj X) ⟶ (shiftFunctor D b).obj (L.obj Y))
state_after: C : Type u₁
inst✝⁷ : Category.{v₁, u₁} C
D : Type u₂
inst✝⁶ : Category.{v₂, u₂} D
W : MorphismProperty C
M : Type w'
inst✝⁵ : AddMonoid M
inst✝⁴ : HasShift C M
inst✝³ : HasShift D M
inst✝² : W.IsCompatibleWithShift M
X✝ Y✝ : C
L : C ⥤ D
inst✝¹ : L.IsLocalization W
inst✝ : L.CommShift M
X Y : C
⊢ (∀ (a b : M), HasSmallLocalizedHom W ((shiftFunctor C a).obj X) ((shiftFunctor C b).obj Y)) ↔
    ∀ (a b : M), Small.{w, v₂} ((shiftFunctor D a).obj (L.obj X) ⟶ (shiftFunctor D b).obj (L.obj Y))
tactic: dsimp [HasSmallLocalizedShiftedHom]
state_before: C : Type u₁
inst✝⁷ : Category.{v₁, u₁} C
D : Type u₂
inst✝⁶ : Category.{v₂, u₂} D
W : MorphismProperty C
M : Type w'
inst✝⁵ : AddMonoid M
inst✝⁴ : HasShift C M
inst✝³ : HasShift D M
inst✝² : W.IsCompatibleWithShift M
X✝ Y✝ : C
L : C ⥤ D
inst✝¹ : L.IsLocalization W
inst✝ : L.CommShift M
X Y : C
⊢ (∀ (a b : M), HasSmallLocalizedHom W ((shiftFunctor C a).obj X) ((shiftFunctor C b).obj Y)) ↔
    ∀ (a b : M), Small.{w, v₂} ((shiftFunctor D a).obj (L.obj X) ⟶ (shiftFunctor D b).obj (L.obj Y))
state_after: C : Type u₁
inst✝⁷ : Category.{v₁, u₁} C
D : Type u₂
inst✝⁶ : Category.{v₂, u₂} D
W : MorphismProperty C
M : Type w'
inst✝⁵ : AddMonoid M
inst✝⁴ : HasShift C M
inst✝³ : HasShift D M
inst✝² : W.IsCompatibleWithShift M
X✝ Y✝ : C
L : C ⥤ D
inst✝¹ : L.IsLocalization W
inst✝ : L.CommShift M
X Y : C
eq :
  ∀ (a b : M),
    Small.{w, v₂} ((shiftFunctor C a ⋙ L).obj X ⟶ (shiftFunctor C b ⋙ L).obj Y) ↔
      Small.{w, v₂} ((L ⋙ shiftFunctor D a).obj X ⟶ (L ⋙ shiftFunctor D b).obj Y)
⊢ (∀ (a b : M), HasSmallLocalizedHom W ((shiftFunctor C a).obj X) ((shiftFunctor C b).obj Y)) ↔
    ∀ (a b : M), Small.{w, v₂} ((shiftFunctor D a).obj (L.obj X) ⟶ (shiftFunctor D b).obj (L.obj Y))
tactic: have eq := fun (a b : M) ↦ small_congr.{w}
    (Iso.homCongr ((L.commShiftIso a).app X) ((L.commShiftIso b).app Y))
state_before: C : Type u₁
inst✝⁷ : Category.{v₁, u₁} C
D : Type u₂
inst✝⁶ : Category.{v₂, u₂} D
W : MorphismProperty C
M : Type w'
inst✝⁵ : AddMonoid M
inst✝⁴ : HasShift C M
inst✝³ : HasShift D M
inst✝² : W.IsCompatibleWithShift M
X✝ Y✝ : C
L : C ⥤ D
inst✝¹ : L.IsLocalization W
inst✝ : L.CommShift M
X Y : C
eq :
  ∀ (a b : M),
    Small.{w, v₂} ((shiftFunctor C a ⋙ L).obj X ⟶ (shiftFunctor C b ⋙ L).obj Y) ↔
      Small.{w, v₂} ((L ⋙ shiftFunctor D a).obj X ⟶ (L ⋙ shiftFunctor D b).obj Y)
⊢ (∀ (a b : M), HasSmallLocalizedHom W ((shiftFunctor C a).obj X) ((shiftFunctor C b).obj Y)) ↔
    ∀ (a b : M), Small.{w, v₂} ((shiftFunctor D a).obj (L.obj X) ⟶ (shiftFunctor D b).obj (L.obj Y))
state_after: C : Type u₁
inst✝⁷ : Category.{v₁, u₁} C
D : Type u₂
inst✝⁶ : Category.{v₂, u₂} D
W : MorphismProperty C
M : Type w'
inst✝⁵ : AddMonoid M
inst✝⁴ : HasShift C M
inst✝³ : HasShift D M
inst✝² : W.IsCompatibleWithShift M
X✝ Y✝ : C
L : C ⥤ D
inst✝¹ : L.IsLocalization W
inst✝ : L.CommShift M
X Y : C
eq :
  ∀ (a b : M),
    Small.{w, v₂} (L.obj ((shiftFunctor C a).obj X) ⟶ L.obj ((shiftFunctor C b).obj Y)) ↔
      Small.{w, v₂} ((shiftFunctor D a).obj (L.obj X) ⟶ (shiftFunctor D b).obj (L.obj Y))
⊢ (∀ (a b : M), HasSmallLocalizedHom W ((shiftFunctor C a).obj X) ((shiftFunctor C b).obj Y)) ↔
    ∀ (a b : M), Small.{w, v₂} ((shiftFunctor D a).obj (L.obj X) ⟶ (shiftFunctor D b).obj (L.obj Y))
tactic: dsimp at eq
state_before: C : Type u₁
inst✝⁷ : Category.{v₁, u₁} C
D : Type u₂
inst✝⁶ : Category.{v₂, u₂} D
W : MorphismProperty C
M : Type w'
inst✝⁵ : AddMonoid M
inst✝⁴ : HasShift C M
inst✝³ : HasShift D M
inst✝² : W.IsCompatibleWithShift M
X✝ Y✝ : C
L : C ⥤ D
inst✝¹ : L.IsLocalization W
inst✝ : L.CommShift M
X Y : C
eq :
  ∀ (a b : M),
    Small.{w, v₂} (L.obj ((shiftFunctor C a).obj X) ⟶ L.obj ((shiftFunctor C b).obj Y)) ↔
      Small.{w, v₂} ((shiftFunctor D a).obj (L.obj X) ⟶ (shiftFunctor D b).obj (L.obj Y))
⊢ (∀ (a b : M), HasSmallLocalizedHom W ((shiftFunctor C a).obj X) ((shiftFunctor C b).obj Y)) ↔
    ∀ (a b : M), Small.{w, v₂} ((shiftFunctor D a).obj (L.obj X) ⟶ (shiftFunctor D b).obj (L.obj Y))
state_after: no goals
tactic: simp only [hasSmallLocalizedHom_iff _ L, eq]