Theorem: CategoryTheory.Functor.IsLocalization.of_equivalence_target
File: Mathlib/CategoryTheory/Localization/Predicate.lean

tactic: have h : W.IsInvertedBy L' := by
  rw [← MorphismProperty.IsInvertedBy.iff_of_iso W e]
  exact MorphismProperty.IsInvertedBy.of_comp W L (Localization.inverts L W) eq.functor
state_before: C : Type u_1
D : Type u_2
inst✝⁴ : Category.{u_6, u_1} C
inst✝³ : Category.{u_7, u_2} D
L : C ⥤ D
W : MorphismProperty C
E✝ : Type u_3
inst✝² : Category.{?u.60259, u_3} E✝
E : Type u_4
inst✝¹ : Category.{u_5, u_4} E
L' : C ⥤ E
eq : D ≌ E
inst✝ : L.IsLocalization W
e : L ⋙ eq.functor ≅ L'
⊢ L'.IsLocalization W
state_after: C : Type u_1
D : Type u_2
inst✝⁴ : Category.{u_6, u_1} C
inst✝³ : Category.{u_7, u_2} D
L : C ⥤ D
W : MorphismProperty C
E✝ : Type u_3
inst✝² : Category.{?u.60259, u_3} E✝
E : Type u_4
inst✝¹ : Category.{u_5, u_4} E
L' : C ⥤ E
eq : D ≌ E
inst✝ : L.IsLocalization W
e : L ⋙ eq.functor ≅ L'
h : W.IsInvertedBy L'
⊢ L'.IsLocalization W

tactic: let F₁ := Localization.Construction.lift L (Localization.inverts L W)
state_before: C : Type u_1
D : Type u_2
inst✝⁴ : Category.{u_6, u_1} C
inst✝³ : Category.{u_7, u_2} D
L : C ⥤ D
W : MorphismProperty C
E✝ : Type u_3
inst✝² : Category.{?u.60259, u_3} E✝
E : Type u_4
inst✝¹ : Category.{u_5, u_4} E
L' : C ⥤ E
eq : D ≌ E
inst✝ : L.IsLocalization W
e : L ⋙ eq.functor ≅ L'
h : W.IsInvertedBy L'
⊢ L'.IsLocalization W
state_after: C : Type u_1
D : Type u_2
inst✝⁴ : Category.{u_6, u_1} C
inst✝³ : Category.{u_7, u_2} D
L : C ⥤ D
W : MorphismProperty C
E✝ : Type u_3
inst✝² : Category.{?u.60259, u_3} E✝
E : Type u_4
inst✝¹ : Category.{u_5, u_4} E
L' : C ⥤ E
eq : D ≌ E
inst✝ : L.IsLocalization W
e : L ⋙ eq.functor ≅ L'
h : W.IsInvertedBy L'
F₁ : W.Localization ⥤ D := Construction.lift L ⋯
⊢ L'.IsLocalization W

tactic: let F₂ := Localization.Construction.lift L' h
state_before: C : Type u_1
D : Type u_2
inst✝⁴ : Category.{u_6, u_1} C
inst✝³ : Category.{u_7, u_2} D
L : C ⥤ D
W : MorphismProperty C
E✝ : Type u_3
inst✝² : Category.{?u.60259, u_3} E✝
E : Type u_4
inst✝¹ : Category.{u_5, u_4} E
L' : C ⥤ E
eq : D ≌ E
inst✝ : L.IsLocalization W
e : L ⋙ eq.functor ≅ L'
h : W.IsInvertedBy L'
F₁ : W.Localization ⥤ D := Construction.lift L ⋯
⊢ L'.IsLocalization W
state_after: C : Type u_1
D : Type u_2
inst✝⁴ : Category.{u_6, u_1} C
inst✝³ : Category.{u_7, u_2} D
L : C ⥤ D
W : MorphismProperty C
E✝ : Type u_3
inst✝² : Category.{?u.60259, u_3} E✝
E : Type u_4
inst✝¹ : Category.{u_5, u_4} E
L' : C ⥤ E
eq : D ≌ E
inst✝ : L.IsLocalization W
e : L ⋙ eq.functor ≅ L'
h : W.IsInvertedBy L'
F₁ : W.Localization ⥤ D := Construction.lift L ⋯
F₂ : W.Localization ⥤ E := Construction.lift L' h
⊢ L'.IsLocalization W

tactic: let e' : F₁ ⋙ eq.functor ≅ F₂ := liftNatIso W.Q W (L ⋙ eq.functor) L' _ _ e
state_before: C : Type u_1
D : Type u_2
inst✝⁴ : Category.{u_6, u_1} C
inst✝³ : Category.{u_7, u_2} D
L : C ⥤ D
W : MorphismProperty C
E✝ : Type u_3
inst✝² : Category.{?u.60259, u_3} E✝
E : Type u_4
inst✝¹ : Category.{u_5, u_4} E
L' : C ⥤ E
eq : D ≌ E
inst✝ : L.IsLocalization W
e : L ⋙ eq.functor ≅ L'
h : W.IsInvertedBy L'
F₁ : W.Localization ⥤ D := Construction.lift L ⋯
F₂ : W.Localization ⥤ E := Construction.lift L' h
⊢ L'.IsLocalization W
state_after: C : Type u_1
D : Type u_2
inst✝⁴ : Category.{u_6, u_1} C
inst✝³ : Category.{u_7, u_2} D
L : C ⥤ D
W : MorphismProperty C
E✝ : Type u_3
inst✝² : Category.{?u.60259, u_3} E✝
E : Type u_4
inst✝¹ : Category.{u_5, u_4} E
L' : C ⥤ E
eq : D ≌ E
inst✝ : L.IsLocalization W
e : L ⋙ eq.functor ≅ L'
h : W.IsInvertedBy L'
F₁ : W.Localization ⥤ D := Construction.lift L ⋯
F₂ : W.Localization ⥤ E := Construction.lift L' h
e' : F₁ ⋙ eq.functor ≅ F₂ := liftNatIso W.Q W (L ⋙ eq.functor) L' (F₁ ⋙ eq.functor) F₂ e
⊢ L'.IsLocalization W

tactic: exact
  { inverts := h
    isEquivalence := Functor.isEquivalence_of_iso e' }
state_before: C : Type u_1
D : Type u_2
inst✝⁴ : Category.{u_6, u_1} C
inst✝³ : Category.{u_7, u_2} D
L : C ⥤ D
W : MorphismProperty C
E✝ : Type u_3
inst✝² : Category.{?u.60259, u_3} E✝
E : Type u_4
inst✝¹ : Category.{u_5, u_4} E
L' : C ⥤ E
eq : D ≌ E
inst✝ : L.IsLocalization W
e : L ⋙ eq.functor ≅ L'
h : W.IsInvertedBy L'
F₁ : W.Localization ⥤ D := Construction.lift L ⋯
F₂ : W.Localization ⥤ E := Construction.lift L' h
e' : F₁ ⋙ eq.functor ≅ F₂ := liftNatIso W.Q W (L ⋙ eq.functor) L' (F₁ ⋙ eq.functor) F₂ e
⊢ L'.IsLocalization W
state_after: no goals

tactic: rw [← MorphismProperty.IsInvertedBy.iff_of_iso W e]
state_before: C : Type u_1
D : Type u_2
inst✝⁴ : Category.{u_6, u_1} C
inst✝³ : Category.{u_7, u_2} D
L : C ⥤ D
W : MorphismProperty C
E✝ : Type u_3
inst✝² : Category.{?u.60259, u_3} E✝
E : Type u_4
inst✝¹ : Category.{u_5, u_4} E
L' : C ⥤ E
eq : D ≌ E
inst✝ : L.IsLocalization W
e : L ⋙ eq.functor ≅ L'
⊢ W.IsInvertedBy L'
state_after: C : Type u_1
D : Type u_2
inst✝⁴ : Category.{u_6, u_1} C
inst✝³ : Category.{u_7, u_2} D
L : C ⥤ D
W : MorphismProperty C
E✝ : Type u_3
inst✝² : Category.{?u.60259, u_3} E✝
E : Type u_4
inst✝¹ : Category.{u_5, u_4} E
L' : C ⥤ E
eq : D ≌ E
inst✝ : L.IsLocalization W
e : L ⋙ eq.functor ≅ L'
⊢ W.IsInvertedBy (L ⋙ eq.functor)

tactic: exact MorphismProperty.IsInvertedBy.of_comp W L (Localization.inverts L W) eq.functor
state_before: C : Type u_1
D : Type u_2
inst✝⁴ : Category.{u_6, u_1} C
inst✝³ : Category.{u_7, u_2} D
L : C ⥤ D
W : MorphismProperty C
E✝ : Type u_3
inst✝² : Category.{?u.60259, u_3} E✝
E : Type u_4
inst✝¹ : Category.{u_5, u_4} E
L' : C ⥤ E
eq : D ≌ E
inst✝ : L.IsLocalization W
e : L ⋙ eq.functor ≅ L'
⊢ W.IsInvertedBy (L ⋙ eq.functor)
state_after: no goals