Theorem: CategoryTheory.Localization.LeftBousfield.W_iff_isIso_map
File: Mathlib/CategoryTheory/Localization/Bousfield.lean

tactic: rw [← MorphismProperty.postcomp_iff _ _ _ (W_adj_unit_app adj Y)]
state_before: C : Type u_1
D : Type u_2
inst✝³ : Category.{u_4, u_1} C
inst✝² : Category.{u_3, u_2} D
F : C ⥤ D
G : D ⥤ C
adj : G ⊣ F
inst✝¹ : F.Full
inst✝ : F.Faithful
X Y : D
f : X ⟶ Y
⊢ W (fun x => x ∈ Set.range F.obj) f ↔ IsIso (G.map f)
state_after: C : Type u_1
D : Type u_2
inst✝³ : Category.{u_4, u_1} C
inst✝² : Category.{u_3, u_2} D
F : C ⥤ D
G : D ⥤ C
adj : G ⊣ F
inst✝¹ : F.Full
inst✝ : F.Faithful
X Y : D
f : X ⟶ Y
⊢ W (fun x => x ∈ Set.range F.obj) (f ≫ adj.unit.app Y) ↔ IsIso (G.map f)

tactic: erw [adj.unit.naturality f]
state_before: C : Type u_1
D : Type u_2
inst✝³ : Category.{u_4, u_1} C
inst✝² : Category.{u_3, u_2} D
F : C ⥤ D
G : D ⥤ C
adj : G ⊣ F
inst✝¹ : F.Full
inst✝ : F.Faithful
X Y : D
f : X ⟶ Y
⊢ W (fun x => x ∈ Set.range F.obj) (f ≫ adj.unit.app Y) ↔ IsIso (G.map f)
state_after: C : Type u_1
D : Type u_2
inst✝³ : Category.{u_4, u_1} C
inst✝² : Category.{u_3, u_2} D
F : C ⥤ D
G : D ⥤ C
adj : G ⊣ F
inst✝¹ : F.Full
inst✝ : F.Faithful
X Y : D
f : X ⟶ Y
⊢ W (fun x => x ∈ Set.range F.obj) (adj.unit.app X ≫ (G ⋙ F).map f) ↔ IsIso (G.map f)

tactic: rw [MorphismProperty.precomp_iff _ _ _ (W_adj_unit_app adj X),
  W_iff_isIso _ _ ⟨_, rfl⟩ ⟨_, rfl⟩]
state_before: C : Type u_1
D : Type u_2
inst✝³ : Category.{u_4, u_1} C
inst✝² : Category.{u_3, u_2} D
F : C ⥤ D
G : D ⥤ C
adj : G ⊣ F
inst✝¹ : F.Full
inst✝ : F.Faithful
X Y : D
f : X ⟶ Y
⊢ W (fun x => x ∈ Set.range F.obj) (adj.unit.app X ≫ (G ⋙ F).map f) ↔ IsIso (G.map f)
state_after: C : Type u_1
D : Type u_2
inst✝³ : Category.{u_4, u_1} C
inst✝² : Category.{u_3, u_2} D
F : C ⥤ D
G : D ⥤ C
adj : G ⊣ F
inst✝¹ : F.Full
inst✝ : F.Faithful
X Y : D
f : X ⟶ Y
⊢ IsIso ((G ⋙ F).map f) ↔ IsIso (G.map f)

tactic: constructor
state_before: C : Type u_1
D : Type u_2
inst✝³ : Category.{u_4, u_1} C
inst✝² : Category.{u_3, u_2} D
F : C ⥤ D
G : D ⥤ C
adj : G ⊣ F
inst✝¹ : F.Full
inst✝ : F.Faithful
X Y : D
f : X ⟶ Y
⊢ IsIso ((G ⋙ F).map f) ↔ IsIso (G.map f)
state_after: case mp
C : Type u_1
D : Type u_2
inst✝³ : Category.{u_4, u_1} C
inst✝² : Category.{u_3, u_2} D
F : C ⥤ D
G : D ⥤ C
adj : G ⊣ F
inst✝¹ : F.Full
inst✝ : F.Faithful
X Y : D
f : X ⟶ Y
⊢ IsIso ((G ⋙ F).map f) → IsIso (G.map f)

case mpr
C : Type u_1
D : Type u_2
inst✝³ : Category.{u_4, u_1} C
inst✝² : Category.{u_3, u_2} D
F : C ⥤ D
G : D ⥤ C
adj : G ⊣ F
inst✝¹ : F.Full
inst✝ : F.Faithful
X Y : D
f : X ⟶ Y
⊢ IsIso (G.map f) → IsIso ((G ⋙ F).map f)

tactic: intro h
state_before: case mp
C : Type u_1
D : Type u_2
inst✝³ : Category.{u_4, u_1} C
inst✝² : Category.{u_3, u_2} D
F : C ⥤ D
G : D ⥤ C
adj : G ⊣ F
inst✝¹ : F.Full
inst✝ : F.Faithful
X Y : D
f : X ⟶ Y
⊢ IsIso ((G ⋙ F).map f) → IsIso (G.map f)
state_after: case mp
C : Type u_1
D : Type u_2
inst✝³ : Category.{u_4, u_1} C
inst✝² : Category.{u_3, u_2} D
F : C ⥤ D
G : D ⥤ C
adj : G ⊣ F
inst✝¹ : F.Full
inst✝ : F.Faithful
X Y : D
f : X ⟶ Y
h : IsIso ((G ⋙ F).map f)
⊢ IsIso (G.map f)

tactic: dsimp at h
state_before: case mp
C : Type u_1
D : Type u_2
inst✝³ : Category.{u_4, u_1} C
inst✝² : Category.{u_3, u_2} D
F : C ⥤ D
G : D ⥤ C
adj : G ⊣ F
inst✝¹ : F.Full
inst✝ : F.Faithful
X Y : D
f : X ⟶ Y
h : IsIso ((G ⋙ F).map f)
⊢ IsIso (G.map f)
state_after: case mp
C : Type u_1
D : Type u_2
inst✝³ : Category.{u_4, u_1} C
inst✝² : Category.{u_3, u_2} D
F : C ⥤ D
G : D ⥤ C
adj : G ⊣ F
inst✝¹ : F.Full
inst✝ : F.Faithful
X Y : D
f : X ⟶ Y
h : IsIso (F.map (G.map f))
⊢ IsIso (G.map f)

tactic: exact isIso_of_fully_faithful F (G.map f)
state_before: case mp
C : Type u_1
D : Type u_2
inst✝³ : Category.{u_4, u_1} C
inst✝² : Category.{u_3, u_2} D
F : C ⥤ D
G : D ⥤ C
adj : G ⊣ F
inst✝¹ : F.Full
inst✝ : F.Faithful
X Y : D
f : X ⟶ Y
h : IsIso (F.map (G.map f))
⊢ IsIso (G.map f)
state_after: no goals

tactic: intro
state_before: case mpr
C : Type u_1
D : Type u_2
inst✝³ : Category.{u_4, u_1} C
inst✝² : Category.{u_3, u_2} D
F : C ⥤ D
G : D ⥤ C
adj : G ⊣ F
inst✝¹ : F.Full
inst✝ : F.Faithful
X Y : D
f : X ⟶ Y
⊢ IsIso (G.map f) → IsIso ((G ⋙ F).map f)
state_after: case mpr
C : Type u_1
D : Type u_2
inst✝³ : Category.{u_4, u_1} C
inst✝² : Category.{u_3, u_2} D
F : C ⥤ D
G : D ⥤ C
adj : G ⊣ F
inst✝¹ : F.Full
inst✝ : F.Faithful
X Y : D
f : X ⟶ Y
a✝ : IsIso (G.map f)
⊢ IsIso ((G ⋙ F).map f)

tactic: rw [Functor.comp_map]
state_before: case mpr
C : Type u_1
D : Type u_2
inst✝³ : Category.{u_4, u_1} C
inst✝² : Category.{u_3, u_2} D
F : C ⥤ D
G : D ⥤ C
adj : G ⊣ F
inst✝¹ : F.Full
inst✝ : F.Faithful
X Y : D
f : X ⟶ Y
a✝ : IsIso (G.map f)
⊢ IsIso ((G ⋙ F).map f)
state_after: case mpr
C : Type u_1
D : Type u_2
inst✝³ : Category.{u_4, u_1} C
inst✝² : Category.{u_3, u_2} D
F : C ⥤ D
G : D ⥤ C
adj : G ⊣ F
inst✝¹ : F.Full
inst✝ : F.Faithful
X Y : D
f : X ⟶ Y
a✝ : IsIso (G.map f)
⊢ IsIso (F.map (G.map f))

tactic: infer_instance
state_before: case mpr
C : Type u_1
D : Type u_2
inst✝³ : Category.{u_4, u_1} C
inst✝² : Category.{u_3, u_2} D
F : C ⥤ D
G : D ⥤ C
adj : G ⊣ F
inst✝¹ : F.Full
inst✝ : F.Faithful
X Y : D
f : X ⟶ Y
a✝ : IsIso (G.map f)
⊢ IsIso (F.map (G.map f))
state_after: no goals