Theorem: CategoryTheory.Localization.Construction.WhiskeringLeftEquivalence.inverse_obj_obj
File: Mathlib/CategoryTheory/Localization/Construction.lean

Proof steps:
state_before: C : Type uC
inst✝¹ : Category.{uC', uC} C
W : MorphismProperty C
D : Type uD
inst✝ : Category.{uD', uD} D
G : C ⥤ D
hG : W.IsInvertedBy G
X✝ Y✝ : W.FunctorsInverting D
τ : X✝ ⟶ Y✝
⊢ W.Q ⋙ (fun G => lift G.obj ⋯) X✝ = X✝.obj
state_after: no goals
tactic: rw [fac]
state_before: C : Type uC
inst✝¹ : Category.{uC', uC} C
W : MorphismProperty C
D : Type uD
inst✝ : Category.{uD', uD} D
G : C ⥤ D
hG : W.IsInvertedBy G
X✝ Y✝ : W.FunctorsInverting D
τ : X✝ ⟶ Y✝
⊢ Y✝.obj = W.Q ⋙ (fun G => lift G.obj ⋯) Y✝
state_after: no goals
tactic: rw [fac]
state_before: C : Type uC
inst✝¹ : Category.{uC', uC} C
W : MorphismProperty C
D : Type uD
inst✝ : Category.{uD', uD} D
G✝ : C ⥤ D
hG : W.IsInvertedBy G✝
G : W.FunctorsInverting D
⊢ 𝟙 W.Q ◫
      { obj := fun G => lift G.obj ⋯, map := fun {X Y} τ => natTransExtension (eqToHom ⋯ ≫ τ ≫ eqToHom ⋯) }.map (𝟙 G) =
    𝟙 W.Q ◫
      𝟙 ({ obj := fun G => lift G.obj ⋯, map := fun {X Y} τ => natTransExtension (eqToHom ⋯ ≫ τ ≫ eqToHom ⋯) }.obj G)
state_after: C : Type uC
inst✝¹ : Category.{uC', uC} C
W : MorphismProperty C
D : Type uD
inst✝ : Category.{uD', uD} D
G✝ : C ⥤ D
hG : W.IsInvertedBy G✝
G : W.FunctorsInverting D
⊢ eqToHom ⋯ ≫ 𝟙 G ≫ eqToHom ⋯ =
    𝟙 W.Q ◫
      𝟙 ({ obj := fun G => lift G.obj ⋯, map := fun {X Y} τ => natTransExtension (eqToHom ⋯ ≫ τ ≫ eqToHom ⋯) }.obj G)
tactic: rw [natTransExtension_hcomp]
state_before: C : Type uC
inst✝¹ : Category.{uC', uC} C
W : MorphismProperty C
D : Type uD
inst✝ : Category.{uD', uD} D
G✝ : C ⥤ D
hG : W.IsInvertedBy G✝
G : W.FunctorsInverting D
⊢ eqToHom ⋯ ≫ 𝟙 G ≫ eqToHom ⋯ =
    𝟙 W.Q ◫
      𝟙 ({ obj := fun G => lift G.obj ⋯, map := fun {X Y} τ => natTransExtension (eqToHom ⋯ ≫ τ ≫ eqToHom ⋯) }.obj G)
state_after: case w.h
C : Type uC
inst✝¹ : Category.{uC', uC} C
W : MorphismProperty C
D : Type uD
inst✝ : Category.{uD', uD} D
G✝ : C ⥤ D
hG : W.IsInvertedBy G✝
G : W.FunctorsInverting D
X : C
⊢ (eqToHom ⋯ ≫ 𝟙 G ≫ eqToHom ⋯).app X =
    (𝟙 W.Q ◫
          𝟙
            ({ obj := fun G => lift G.obj ⋯, map := fun {X Y} τ => natTransExtension (eqToHom ⋯ ≫ τ ≫ eqToHom ⋯) }.obj
              G)).app
      X
tactic: ext X
state_before: case w.h
C : Type uC
inst✝¹ : Category.{uC', uC} C
W : MorphismProperty C
D : Type uD
inst✝ : Category.{uD', uD} D
G✝ : C ⥤ D
hG : W.IsInvertedBy G✝
G : W.FunctorsInverting D
X : C
⊢ (eqToHom ⋯ ≫ 𝟙 G ≫ eqToHom ⋯).app X =
    (𝟙 W.Q ◫
          𝟙
            ({ obj := fun G => lift G.obj ⋯, map := fun {X Y} τ => natTransExtension (eqToHom ⋯ ≫ τ ≫ eqToHom ⋯) }.obj
              G)).app
      X
state_after: case w.h
C : Type uC
inst✝¹ : Category.{uC', uC} C
W : MorphismProperty C
D : Type uD
inst✝ : Category.{uD', uD} D
G✝ : C ⥤ D
hG : W.IsInvertedBy G✝
G : W.FunctorsInverting D
X : C
⊢ (𝟙 G).app X = 𝟙 ((lift G.obj ⋯).obj (W.Q.obj X))
tactic: simp only [NatTrans.comp_app, eqToHom_app, eqToHom_refl, comp_id, id_comp,
          NatTrans.hcomp_id_app, NatTrans.id_app, Functor.map_id]
state_before: case w.h
C : Type uC
inst✝¹ : Category.{uC', uC} C
W : MorphismProperty C
D : Type uD
inst✝ : Category.{uD', uD} D
G✝ : C ⥤ D
hG : W.IsInvertedBy G✝
G : W.FunctorsInverting D
X : C
⊢ (𝟙 G).app X = 𝟙 ((lift G.obj ⋯).obj (W.Q.obj X))
state_after: no goals
tactic: rfl
state_before: C : Type uC
inst✝¹ : Category.{uC', uC} C
W : MorphismProperty C
D : Type uD
inst✝ : Category.{uD', uD} D
G : C ⥤ D
hG : W.IsInvertedBy G
X✝ Y✝ Z✝ : W.FunctorsInverting D
τ₁ : X✝ ⟶ Y✝
τ₂ : Y✝ ⟶ Z✝
⊢ 𝟙 W.Q ◫
      { obj := fun G => lift G.obj ⋯, map := fun {X Y} τ => natTransExtension (eqToHom ⋯ ≫ τ ≫ eqToHom ⋯) }.map
        (τ₁ ≫ τ₂) =
    𝟙 W.Q ◫
      ({ obj := fun G => lift G.obj ⋯, map := fun {X Y} τ => natTransExtension (eqToHom ⋯ ≫ τ ≫ eqToHom ⋯) }.map τ₁ ≫
        { obj := fun G => lift G.obj ⋯, map := fun {X Y} τ => natTransExtension (eqToHom ⋯ ≫ τ ≫ eqToHom ⋯) }.map τ₂)
state_after: case w.h
C : Type uC
inst✝¹ : Category.{uC', uC} C
W : MorphismProperty C
D : Type uD
inst✝ : Category.{uD', uD} D
G : C ⥤ D
hG : W.IsInvertedBy G
X✝ Y✝ Z✝ : W.FunctorsInverting D
τ₁ : X✝ ⟶ Y✝
τ₂ : Y✝ ⟶ Z✝
X : C
⊢ (𝟙 W.Q ◫
          { obj := fun G => lift G.obj ⋯, map := fun {X Y} τ => natTransExtension (eqToHom ⋯ ≫ τ ≫ eqToHom ⋯) }.map
            (τ₁ ≫ τ₂)).app
      X =
    (𝟙 W.Q ◫
          ({ obj := fun G => lift G.obj ⋯, map := fun {X Y} τ => natTransExtension (eqToHom ⋯ ≫ τ ≫ eqToHom ⋯) }.map
              τ₁ ≫
            { obj := fun G => lift G.obj ⋯, map := fun {X Y} τ => natTransExtension (eqToHom ⋯ ≫ τ ≫ eqToHom ⋯) }.map
              τ₂)).app
      X
tactic: ext X
state_before: case w.h
C : Type uC
inst✝¹ : Category.{uC', uC} C
W : MorphismProperty C
D : Type uD
inst✝ : Category.{uD', uD} D
G : C ⥤ D
hG : W.IsInvertedBy G
X✝ Y✝ Z✝ : W.FunctorsInverting D
τ₁ : X✝ ⟶ Y✝
τ₂ : Y✝ ⟶ Z✝
X : C
⊢ (𝟙 W.Q ◫
          { obj := fun G => lift G.obj ⋯, map := fun {X Y} τ => natTransExtension (eqToHom ⋯ ≫ τ ≫ eqToHom ⋯) }.map
            (τ₁ ≫ τ₂)).app
      X =
    (𝟙 W.Q ◫
          ({ obj := fun G => lift G.obj ⋯, map := fun {X Y} τ => natTransExtension (eqToHom ⋯ ≫ τ ≫ eqToHom ⋯) }.map
              τ₁ ≫
            { obj := fun G => lift G.obj ⋯, map := fun {X Y} τ => natTransExtension (eqToHom ⋯ ≫ τ ≫ eqToHom ⋯) }.map
              τ₂)).app
      X
state_after: case w.h
C : Type uC
inst✝¹ : Category.{uC', uC} C
W : MorphismProperty C
D : Type uD
inst✝ : Category.{uD', uD} D
G : C ⥤ D
hG : W.IsInvertedBy G
X✝ Y✝ Z✝ : W.FunctorsInverting D
τ₁ : X✝ ⟶ Y✝
τ₂ : Y✝ ⟶ Z✝
X : C
⊢ (τ₁ ≫ τ₂).app X = τ₁.app X ≫ τ₂.app X
tactic: simp only [natTransExtension_hcomp, NatTrans.comp_app, eqToHom_app, eqToHom_refl,
          id_comp, comp_id, NatTrans.hcomp_app, NatTrans.id_app, Functor.map_id,
          natTransExtension_app, NatTransExtension.app_eq]
state_before: case w.h
C : Type uC
inst✝¹ : Category.{uC', uC} C
W : MorphismProperty C
D : Type uD
inst✝ : Category.{uD', uD} D
G : C ⥤ D
hG : W.IsInvertedBy G
X✝ Y✝ Z✝ : W.FunctorsInverting D
τ₁ : X✝ ⟶ Y✝
τ₂ : Y✝ ⟶ Z✝
X : C
⊢ (τ₁ ≫ τ₂).app X = τ₁.app X ≫ τ₂.app X
state_after: no goals
tactic: rfl