Theorem: CategoryTheory.Localization.Construction.morphismProperty_is_top
File: Mathlib/CategoryTheory/Localization/Construction.lean

tactic: funext X Y f
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
P : MorphismProperty W.Localization
inst✝ : P.IsStableUnderComposition
hP₁ : ∀ ⦃X Y : C⦄ (f : X ⟶ Y), P (W.Q.map f)
hP₂ : ∀ ⦃X Y : C⦄ (w : X ⟶ Y) (hw : W w), P (winv w hw)
⊢ P = ⊤
state_after: case h.h.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
P : MorphismProperty W.Localization
inst✝ : P.IsStableUnderComposition
hP₁ : ∀ ⦃X Y : C⦄ (f : X ⟶ Y), P (W.Q.map f)
hP₂ : ∀ ⦃X Y : C⦄ (w : X ⟶ Y) (hw : W w), P (winv w hw)
X Y : W.Localization
f : X ⟶ Y
⊢ P f = ⊤ f

tactic: ext
state_before: case h.h.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
P : MorphismProperty W.Localization
inst✝ : P.IsStableUnderComposition
hP₁ : ∀ ⦃X Y : C⦄ (f : X ⟶ Y), P (W.Q.map f)
hP₂ : ∀ ⦃X Y : C⦄ (w : X ⟶ Y) (hw : W w), P (winv w hw)
X Y : W.Localization
f : X ⟶ Y
⊢ P f = ⊤ f
state_after: case h.h.h.a
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
P : MorphismProperty W.Localization
inst✝ : P.IsStableUnderComposition
hP₁ : ∀ ⦃X Y : C⦄ (f : X ⟶ Y), P (W.Q.map f)
hP₂ : ∀ ⦃X Y : C⦄ (w : X ⟶ Y) (hw : W w), P (winv w hw)
X Y : W.Localization
f : X ⟶ Y
⊢ P f ↔ ⊤ f

tactic: constructor
state_before: case h.h.h.a
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
P : MorphismProperty W.Localization
inst✝ : P.IsStableUnderComposition
hP₁ : ∀ ⦃X Y : C⦄ (f : X ⟶ Y), P (W.Q.map f)
hP₂ : ∀ ⦃X Y : C⦄ (w : X ⟶ Y) (hw : W w), P (winv w hw)
X Y : W.Localization
f : X ⟶ Y
⊢ P f ↔ ⊤ f
state_after: case h.h.h.a.mp
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
P : MorphismProperty W.Localization
inst✝ : P.IsStableUnderComposition
hP₁ : ∀ ⦃X Y : C⦄ (f : X ⟶ Y), P (W.Q.map f)
hP₂ : ∀ ⦃X Y : C⦄ (w : X ⟶ Y) (hw : W w), P (winv w hw)
X Y : W.Localization
f : X ⟶ Y
⊢ P f → ⊤ f

case h.h.h.a.mpr
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
P : MorphismProperty W.Localization
inst✝ : P.IsStableUnderComposition
hP₁ : ∀ ⦃X Y : C⦄ (f : X ⟶ Y), P (W.Q.map f)
hP₂ : ∀ ⦃X Y : C⦄ (w : X ⟶ Y) (hw : W w), P (winv w hw)
X Y : W.Localization
f : X ⟶ Y
⊢ ⊤ f → P f

tactic: intro
state_before: case h.h.h.a.mp
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
P : MorphismProperty W.Localization
inst✝ : P.IsStableUnderComposition
hP₁ : ∀ ⦃X Y : C⦄ (f : X ⟶ Y), P (W.Q.map f)
hP₂ : ∀ ⦃X Y : C⦄ (w : X ⟶ Y) (hw : W w), P (winv w hw)
X Y : W.Localization
f : X ⟶ Y
⊢ P f → ⊤ f
state_after: case h.h.h.a.mp
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
P : MorphismProperty W.Localization
inst✝ : P.IsStableUnderComposition
hP₁ : ∀ ⦃X Y : C⦄ (f : X ⟶ Y), P (W.Q.map f)
hP₂ : ∀ ⦃X Y : C⦄ (w : X ⟶ Y) (hw : W w), P (winv w hw)
X Y : W.Localization
f : X ⟶ Y
a✝ : P f
⊢ ⊤ f

tactic: apply MorphismProperty.top_apply
state_before: case h.h.h.a.mp
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
P : MorphismProperty W.Localization
inst✝ : P.IsStableUnderComposition
hP₁ : ∀ ⦃X Y : C⦄ (f : X ⟶ Y), P (W.Q.map f)
hP₂ : ∀ ⦃X Y : C⦄ (w : X ⟶ Y) (hw : W w), P (winv w hw)
X Y : W.Localization
f : X ⟶ Y
a✝ : P f
⊢ ⊤ f
state_after: no goals

tactic: intro
state_before: case h.h.h.a.mpr
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
P : MorphismProperty W.Localization
inst✝ : P.IsStableUnderComposition
hP₁ : ∀ ⦃X Y : C⦄ (f : X ⟶ Y), P (W.Q.map f)
hP₂ : ∀ ⦃X Y : C⦄ (w : X ⟶ Y) (hw : W w), P (winv w hw)
X Y : W.Localization
f : X ⟶ Y
⊢ ⊤ f → P f
state_after: case h.h.h.a.mpr
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
P : MorphismProperty W.Localization
inst✝ : P.IsStableUnderComposition
hP₁ : ∀ ⦃X Y : C⦄ (f : X ⟶ Y), P (W.Q.map f)
hP₂ : ∀ ⦃X Y : C⦄ (w : X ⟶ Y) (hw : W w), P (winv w hw)
X Y : W.Localization
f : X ⟶ Y
a✝ : ⊤ f
⊢ P f

tactic: let G : _ ⥤ W.Localization := Quotient.functor _
state_before: case h.h.h.a.mpr
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
P : MorphismProperty W.Localization
inst✝ : P.IsStableUnderComposition
hP₁ : ∀ ⦃X Y : C⦄ (f : X ⟶ Y), P (W.Q.map f)
hP₂ : ∀ ⦃X Y : C⦄ (w : X ⟶ Y) (hw : W w), P (winv w hw)
X Y : W.Localization
f : X ⟶ Y
a✝ : ⊤ f
⊢ P f
state_after: case h.h.h.a.mpr
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✝
P : MorphismProperty W.Localization
inst✝ : P.IsStableUnderComposition
hP₁ : ∀ ⦃X Y : C⦄ (f : X ⟶ Y), P (W.Q.map f)
hP₂ : ∀ ⦃X Y : C⦄ (w : X ⟶ Y) (hw : W w), P (winv w hw)
X Y : W.Localization
f : X ⟶ Y
a✝ : ⊤ f
G : Paths (LocQuiver W) ⥤ W.Localization := Quotient.functor (relations W)
⊢ P f

tactic: haveI : G.Full := Quotient.full_functor _
state_before: case h.h.h.a.mpr
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✝
P : MorphismProperty W.Localization
inst✝ : P.IsStableUnderComposition
hP₁ : ∀ ⦃X Y : C⦄ (f : X ⟶ Y), P (W.Q.map f)
hP₂ : ∀ ⦃X Y : C⦄ (w : X ⟶ Y) (hw : W w), P (winv w hw)
X Y : W.Localization
f : X ⟶ Y
a✝ : ⊤ f
G : Paths (LocQuiver W) ⥤ W.Localization := Quotient.functor (relations W)
⊢ P f
state_after: case h.h.h.a.mpr
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✝
P : MorphismProperty W.Localization
inst✝ : P.IsStableUnderComposition
hP₁ : ∀ ⦃X Y : C⦄ (f : X ⟶ Y), P (W.Q.map f)
hP₂ : ∀ ⦃X Y : C⦄ (w : X ⟶ Y) (hw : W w), P (winv w hw)
X Y : W.Localization
f : X ⟶ Y
a✝ : ⊤ f
G : Paths (LocQuiver W) ⥤ W.Localization := Quotient.functor (relations W)
this : G.Full
⊢ P f

tactic: suffices ∀ (X₁ X₂ : Paths (LocQuiver W)) (f : X₁ ⟶ X₂), P (G.map f) by
  rcases X with ⟨⟨X⟩⟩
  rcases Y with ⟨⟨Y⟩⟩
  simpa only [Functor.map_preimage] using this _ _ (G.preimage f)
state_before: case h.h.h.a.mpr
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✝
P : MorphismProperty W.Localization
inst✝ : P.IsStableUnderComposition
hP₁ : ∀ ⦃X Y : C⦄ (f : X ⟶ Y), P (W.Q.map f)
hP₂ : ∀ ⦃X Y : C⦄ (w : X ⟶ Y) (hw : W w), P (winv w hw)
X Y : W.Localization
f : X ⟶ Y
a✝ : ⊤ f
G : Paths (LocQuiver W) ⥤ W.Localization := Quotient.functor (relations W)
this : G.Full
⊢ P f
state_after: case h.h.h.a.mpr
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✝
P : MorphismProperty W.Localization
inst✝ : P.IsStableUnderComposition
hP₁ : ∀ ⦃X Y : C⦄ (f : X ⟶ Y), P (W.Q.map f)
hP₂ : ∀ ⦃X Y : C⦄ (w : X ⟶ Y) (hw : W w), P (winv w hw)
X Y : W.Localization
f : X ⟶ Y
a✝ : ⊤ f
G : Paths (LocQuiver W) ⥤ W.Localization := Quotient.functor (relations W)
this : G.Full
⊢ ∀ (X₁ X₂ : Paths (LocQuiver W)) (f : X₁ ⟶ X₂), P (G.map f)

tactic: intros X₁ X₂ p
state_before: case h.h.h.a.mpr
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✝
P : MorphismProperty W.Localization
inst✝ : P.IsStableUnderComposition
hP₁ : ∀ ⦃X Y : C⦄ (f : X ⟶ Y), P (W.Q.map f)
hP₂ : ∀ ⦃X Y : C⦄ (w : X ⟶ Y) (hw : W w), P (winv w hw)
X Y : W.Localization
f : X ⟶ Y
a✝ : ⊤ f
G : Paths (LocQuiver W) ⥤ W.Localization := Quotient.functor (relations W)
this : G.Full
⊢ ∀ (X₁ X₂ : Paths (LocQuiver W)) (f : X₁ ⟶ X₂), P (G.map f)
state_after: case h.h.h.a.mpr
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✝
P : MorphismProperty W.Localization
inst✝ : P.IsStableUnderComposition
hP₁ : ∀ ⦃X Y : C⦄ (f : X ⟶ Y), P (W.Q.map f)
hP₂ : ∀ ⦃X Y : C⦄ (w : X ⟶ Y) (hw : W w), P (winv w hw)
X Y : W.Localization
f : X ⟶ Y
a✝ : ⊤ f
G : Paths (LocQuiver W) ⥤ W.Localization := Quotient.functor (relations W)
this : G.Full
X₁ X₂ : Paths (LocQuiver W)
p : X₁ ⟶ X₂
⊢ P (G.map p)

tactic: induction' p with X₂ X₃ p g hp
state_before: case h.h.h.a.mpr
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✝
P : MorphismProperty W.Localization
inst✝ : P.IsStableUnderComposition
hP₁ : ∀ ⦃X Y : C⦄ (f : X ⟶ Y), P (W.Q.map f)
hP₂ : ∀ ⦃X Y : C⦄ (w : X ⟶ Y) (hw : W w), P (winv w hw)
X Y : W.Localization
f : X ⟶ Y
a✝ : ⊤ f
G : Paths (LocQuiver W) ⥤ W.Localization := Quotient.functor (relations W)
this : G.Full
X₁ X₂ : Paths (LocQuiver W)
p : X₁ ⟶ X₂
⊢ P (G.map p)
state_after: case h.h.h.a.mpr.nil
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✝
P : MorphismProperty W.Localization
inst✝ : P.IsStableUnderComposition
hP₁ : ∀ ⦃X Y : C⦄ (f : X ⟶ Y), P (W.Q.map f)
hP₂ : ∀ ⦃X Y : C⦄ (w : X ⟶ Y) (hw : W w), P (winv w hw)
X Y : W.Localization
f : X ⟶ Y
a✝ : ⊤ f
G : Paths (LocQuiver W) ⥤ W.Localization := Quotient.functor (relations W)
this : G.Full
X₁ X₂ : Paths (LocQuiver W)
⊢ P (G.map Quiver.Path.nil)

case h.h.h.a.mpr.cons
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✝
P : MorphismProperty W.Localization
inst✝ : P.IsStableUnderComposition
hP₁ : ∀ ⦃X Y : C⦄ (f : X ⟶ Y), P (W.Q.map f)
hP₂ : ∀ ⦃X Y : C⦄ (w : X ⟶ Y) (hw : W w), P (winv w hw)
X Y : W.Localization
f : X ⟶ Y
a✝ : ⊤ f
G : Paths (LocQuiver W) ⥤ W.Localization := Quotient.functor (relations W)
this : G.Full
X₁ X₂✝ X₂ X₃ : Paths (LocQuiver W)
p : Quiver.Path X₁ X₂
g : X₂ ⟶ X₃
hp : P (G.map p)
⊢ P (G.map (p.cons g))

tactic: rcases X with ⟨⟨X⟩⟩
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✝
P : MorphismProperty W.Localization
inst✝ : P.IsStableUnderComposition
hP₁ : ∀ ⦃X Y : C⦄ (f : X ⟶ Y), P (W.Q.map f)
hP₂ : ∀ ⦃X Y : C⦄ (w : X ⟶ Y) (hw : W w), P (winv w hw)
X Y : W.Localization
f : X ⟶ Y
a✝ : ⊤ f
G : Paths (LocQuiver W) ⥤ W.Localization := Quotient.functor (relations W)
this✝ : G.Full
this : ∀ (X₁ X₂ : Paths (LocQuiver W)) (f : X₁ ⟶ X₂), P (G.map f)
⊢ P f
state_after: case mk.mk
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✝
P : MorphismProperty W.Localization
inst✝ : P.IsStableUnderComposition
hP₁ : ∀ ⦃X Y : C⦄ (f : X ⟶ Y), P (W.Q.map f)
hP₂ : ∀ ⦃X Y : C⦄ (w : X ⟶ Y) (hw : W w), P (winv w hw)
Y : W.Localization
G : Paths (LocQuiver W) ⥤ W.Localization := Quotient.functor (relations W)
this✝ : G.Full
this : ∀ (X₁ X₂ : Paths (LocQuiver W)) (f : X₁ ⟶ X₂), P (G.map f)
X : C
f : { as := { obj := X } } ⟶ Y
a✝ : ⊤ f
⊢ P f

tactic: rcases Y with ⟨⟨Y⟩⟩
state_before: case mk.mk
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✝
P : MorphismProperty W.Localization
inst✝ : P.IsStableUnderComposition
hP₁ : ∀ ⦃X Y : C⦄ (f : X ⟶ Y), P (W.Q.map f)
hP₂ : ∀ ⦃X Y : C⦄ (w : X ⟶ Y) (hw : W w), P (winv w hw)
Y : W.Localization
G : Paths (LocQuiver W) ⥤ W.Localization := Quotient.functor (relations W)
this✝ : G.Full
this : ∀ (X₁ X₂ : Paths (LocQuiver W)) (f : X₁ ⟶ X₂), P (G.map f)
X : C
f : { as := { obj := X } } ⟶ Y
a✝ : ⊤ f
⊢ P f
state_after: case mk.mk.mk.mk
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✝
P : MorphismProperty W.Localization
inst✝ : P.IsStableUnderComposition
hP₁ : ∀ ⦃X Y : C⦄ (f : X ⟶ Y), P (W.Q.map f)
hP₂ : ∀ ⦃X Y : C⦄ (w : X ⟶ Y) (hw : W w), P (winv w hw)
G : Paths (LocQuiver W) ⥤ W.Localization := Quotient.functor (relations W)
this✝ : G.Full
this : ∀ (X₁ X₂ : Paths (LocQuiver W)) (f : X₁ ⟶ X₂), P (G.map f)
X Y : C
f : { as := { obj := X } } ⟶ { as := { obj := Y } }
a✝ : ⊤ f
⊢ P f

tactic: simpa only [Functor.map_preimage] using this _ _ (G.preimage f)
state_before: case mk.mk.mk.mk
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✝
P : MorphismProperty W.Localization
inst✝ : P.IsStableUnderComposition
hP₁ : ∀ ⦃X Y : C⦄ (f : X ⟶ Y), P (W.Q.map f)
hP₂ : ∀ ⦃X Y : C⦄ (w : X ⟶ Y) (hw : W w), P (winv w hw)
G : Paths (LocQuiver W) ⥤ W.Localization := Quotient.functor (relations W)
this✝ : G.Full
this : ∀ (X₁ X₂ : Paths (LocQuiver W)) (f : X₁ ⟶ X₂), P (G.map f)
X Y : C
f : { as := { obj := X } } ⟶ { as := { obj := Y } }
a✝ : ⊤ f
⊢ P f
state_after: no goals

tactic: simpa only [Functor.map_id] using hP₁ (𝟙 X₁.obj)
state_before: case h.h.h.a.mpr.nil
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✝
P : MorphismProperty W.Localization
inst✝ : P.IsStableUnderComposition
hP₁ : ∀ ⦃X Y : C⦄ (f : X ⟶ Y), P (W.Q.map f)
hP₂ : ∀ ⦃X Y : C⦄ (w : X ⟶ Y) (hw : W w), P (winv w hw)
X Y : W.Localization
f : X ⟶ Y
a✝ : ⊤ f
G : Paths (LocQuiver W) ⥤ W.Localization := Quotient.functor (relations W)
this : G.Full
X₁ X₂ : Paths (LocQuiver W)
⊢ P (G.map Quiver.Path.nil)
state_after: no goals

tactic: let p' : X₁ ⟶X₂ := p
state_before: case h.h.h.a.mpr.cons
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✝
P : MorphismProperty W.Localization
inst✝ : P.IsStableUnderComposition
hP₁ : ∀ ⦃X Y : C⦄ (f : X ⟶ Y), P (W.Q.map f)
hP₂ : ∀ ⦃X Y : C⦄ (w : X ⟶ Y) (hw : W w), P (winv w hw)
X Y : W.Localization
f : X ⟶ Y
a✝ : ⊤ f
G : Paths (LocQuiver W) ⥤ W.Localization := Quotient.functor (relations W)
this : G.Full
X₁ X₂✝ X₂ X₃ : Paths (LocQuiver W)
p : Quiver.Path X₁ X₂
g : X₂ ⟶ X₃
hp : P (G.map p)
⊢ P (G.map (p.cons g))
state_after: case h.h.h.a.mpr.cons
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✝
P : MorphismProperty W.Localization
inst✝ : P.IsStableUnderComposition
hP₁ : ∀ ⦃X Y : C⦄ (f : X ⟶ Y), P (W.Q.map f)
hP₂ : ∀ ⦃X Y : C⦄ (w : X ⟶ Y) (hw : W w), P (winv w hw)
X Y : W.Localization
f : X ⟶ Y
a✝ : ⊤ f
G : Paths (LocQuiver W) ⥤ W.Localization := Quotient.functor (relations W)
this : G.Full
X₁ X₂✝ X₂ X₃ : Paths (LocQuiver W)
p : Quiver.Path X₁ X₂
g : X₂ ⟶ X₃
hp : P (G.map p)
p' : X₁ ⟶ X₂ := p
⊢ P (G.map (p.cons g))

tactic: rw [show p'.cons g = p' ≫ Quiver.Hom.toPath g by rfl, G.map_comp]
state_before: case h.h.h.a.mpr.cons
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✝
P : MorphismProperty W.Localization
inst✝ : P.IsStableUnderComposition
hP₁ : ∀ ⦃X Y : C⦄ (f : X ⟶ Y), P (W.Q.map f)
hP₂ : ∀ ⦃X Y : C⦄ (w : X ⟶ Y) (hw : W w), P (winv w hw)
X Y : W.Localization
f : X ⟶ Y
a✝ : ⊤ f
G : Paths (LocQuiver W) ⥤ W.Localization := Quotient.functor (relations W)
this : G.Full
X₁ X₂✝ X₂ X₃ : Paths (LocQuiver W)
p : Quiver.Path X₁ X₂
g : X₂ ⟶ X₃
hp : P (G.map p)
p' : X₁ ⟶ X₂ := p
⊢ P (G.map (p.cons g))
state_after: case h.h.h.a.mpr.cons
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✝
P : MorphismProperty W.Localization
inst✝ : P.IsStableUnderComposition
hP₁ : ∀ ⦃X Y : C⦄ (f : X ⟶ Y), P (W.Q.map f)
hP₂ : ∀ ⦃X Y : C⦄ (w : X ⟶ Y) (hw : W w), P (winv w hw)
X Y : W.Localization
f : X ⟶ Y
a✝ : ⊤ f
G : Paths (LocQuiver W) ⥤ W.Localization := Quotient.functor (relations W)
this : G.Full
X₁ X₂✝ X₂ X₃ : Paths (LocQuiver W)
p : Quiver.Path X₁ X₂
g : X₂ ⟶ X₃
hp : P (G.map p)
p' : X₁ ⟶ X₂ := p
⊢ P (G.map p' ≫ G.map g.toPath)

tactic: refine P.comp_mem _ _ hp ?_
state_before: case h.h.h.a.mpr.cons
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✝
P : MorphismProperty W.Localization
inst✝ : P.IsStableUnderComposition
hP₁ : ∀ ⦃X Y : C⦄ (f : X ⟶ Y), P (W.Q.map f)
hP₂ : ∀ ⦃X Y : C⦄ (w : X ⟶ Y) (hw : W w), P (winv w hw)
X Y : W.Localization
f : X ⟶ Y
a✝ : ⊤ f
G : Paths (LocQuiver W) ⥤ W.Localization := Quotient.functor (relations W)
this : G.Full
X₁ X₂✝ X₂ X₃ : Paths (LocQuiver W)
p : Quiver.Path X₁ X₂
g : X₂ ⟶ X₃
hp : P (G.map p)
p' : X₁ ⟶ X₂ := p
⊢ P (G.map p' ≫ G.map g.toPath)
state_after: case h.h.h.a.mpr.cons
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✝
P : MorphismProperty W.Localization
inst✝ : P.IsStableUnderComposition
hP₁ : ∀ ⦃X Y : C⦄ (f : X ⟶ Y), P (W.Q.map f)
hP₂ : ∀ ⦃X Y : C⦄ (w : X ⟶ Y) (hw : W w), P (winv w hw)
X Y : W.Localization
f : X ⟶ Y
a✝ : ⊤ f
G : Paths (LocQuiver W) ⥤ W.Localization := Quotient.functor (relations W)
this : G.Full
X₁ X₂✝ X₂ X₃ : Paths (LocQuiver W)
p : Quiver.Path X₁ X₂
g : X₂ ⟶ X₃
hp : P (G.map p)
p' : X₁ ⟶ X₂ := p
⊢ P (G.map g.toPath)

tactic: rcases g with (g | ⟨g, hg⟩)
state_before: case h.h.h.a.mpr.cons
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✝
P : MorphismProperty W.Localization
inst✝ : P.IsStableUnderComposition
hP₁ : ∀ ⦃X Y : C⦄ (f : X ⟶ Y), P (W.Q.map f)
hP₂ : ∀ ⦃X Y : C⦄ (w : X ⟶ Y) (hw : W w), P (winv w hw)
X Y : W.Localization
f : X ⟶ Y
a✝ : ⊤ f
G : Paths (LocQuiver W) ⥤ W.Localization := Quotient.functor (relations W)
this : G.Full
X₁ X₂✝ X₂ X₃ : Paths (LocQuiver W)
p : Quiver.Path X₁ X₂
g : X₂ ⟶ X₃
hp : P (G.map p)
p' : X₁ ⟶ X₂ := p
⊢ P (G.map g.toPath)
state_after: case h.h.h.a.mpr.cons.inl
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✝
P : MorphismProperty W.Localization
inst✝ : P.IsStableUnderComposition
hP₁ : ∀ ⦃X Y : C⦄ (f : X ⟶ Y), P (W.Q.map f)
hP₂ : ∀ ⦃X Y : C⦄ (w : X ⟶ Y) (hw : W w), P (winv w hw)
X Y : W.Localization
f : X ⟶ Y
a✝ : ⊤ f
G : Paths (LocQuiver W) ⥤ W.Localization := Quotient.functor (relations W)
this : G.Full
X₁ X₂✝ X₂ X₃ : Paths (LocQuiver W)
p : Quiver.Path X₁ X₂
hp : P (G.map p)
p' : X₁ ⟶ X₂ := p
g : X₂.obj ⟶ X₃.obj
⊢ P (G.map (Quiver.Hom.toPath (Sum.inl g)))

case h.h.h.a.mpr.cons.inr.mk
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✝
P : MorphismProperty W.Localization
inst✝ : P.IsStableUnderComposition
hP₁ : ∀ ⦃X Y : C⦄ (f : X ⟶ Y), P (W.Q.map f)
hP₂ : ∀ ⦃X Y : C⦄ (w : X ⟶ Y) (hw : W w), P (winv w hw)
X Y : W.Localization
f : X ⟶ Y
a✝ : ⊤ f
G : Paths (LocQuiver W) ⥤ W.Localization := Quotient.functor (relations W)
this : G.Full
X₁ X₂✝ X₂ X₃ : Paths (LocQuiver W)
p : Quiver.Path X₁ X₂
hp : P (G.map p)
p' : X₁ ⟶ X₂ := p
g : X₃.obj ⟶ X₂.obj
hg : W g
⊢ P (G.map (Quiver.Hom.toPath (Sum.inr ⟨g, hg⟩)))

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✝
P : MorphismProperty W.Localization
inst✝ : P.IsStableUnderComposition
hP₁ : ∀ ⦃X Y : C⦄ (f : X ⟶ Y), P (W.Q.map f)
hP₂ : ∀ ⦃X Y : C⦄ (w : X ⟶ Y) (hw : W w), P (winv w hw)
X Y : W.Localization
f : X ⟶ Y
a✝ : ⊤ f
G : Paths (LocQuiver W) ⥤ W.Localization := Quotient.functor (relations W)
this : G.Full
X₁ X₂✝ X₂ X₃ : Paths (LocQuiver W)
p : Quiver.Path X₁ X₂
g : X₂ ⟶ X₃
hp : P (G.map p)
p' : X₁ ⟶ X₂ := p
⊢ Quiver.Path.cons p' g = p' ≫ g.toPath
state_after: no goals

tactic: apply hP₁
state_before: case h.h.h.a.mpr.cons.inl
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✝
P : MorphismProperty W.Localization
inst✝ : P.IsStableUnderComposition
hP₁ : ∀ ⦃X Y : C⦄ (f : X ⟶ Y), P (W.Q.map f)
hP₂ : ∀ ⦃X Y : C⦄ (w : X ⟶ Y) (hw : W w), P (winv w hw)
X Y : W.Localization
f : X ⟶ Y
a✝ : ⊤ f
G : Paths (LocQuiver W) ⥤ W.Localization := Quotient.functor (relations W)
this : G.Full
X₁ X₂✝ X₂ X₃ : Paths (LocQuiver W)
p : Quiver.Path X₁ X₂
hp : P (G.map p)
p' : X₁ ⟶ X₂ := p
g : X₂.obj ⟶ X₃.obj
⊢ P (G.map (Quiver.Hom.toPath (Sum.inl g)))
state_after: no goals

tactic: apply hP₂
state_before: case h.h.h.a.mpr.cons.inr.mk
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✝
P : MorphismProperty W.Localization
inst✝ : P.IsStableUnderComposition
hP₁ : ∀ ⦃X Y : C⦄ (f : X ⟶ Y), P (W.Q.map f)
hP₂ : ∀ ⦃X Y : C⦄ (w : X ⟶ Y) (hw : W w), P (winv w hw)
X Y : W.Localization
f : X ⟶ Y
a✝ : ⊤ f
G : Paths (LocQuiver W) ⥤ W.Localization := Quotient.functor (relations W)
this : G.Full
X₁ X₂✝ X₂ X₃ : Paths (LocQuiver W)
p : Quiver.Path X₁ X₂
hp : P (G.map p)
p' : X₁ ⟶ X₂ := p
g : X₃.obj ⟶ X₂.obj
hg : W g
⊢ P (G.map (Quiver.Hom.toPath (Sum.inr ⟨g, hg⟩)))
state_after: no goals