Theorem: CategoryTheory.IsFiltered.iff_nonempty_limit
File: Mathlib/CategoryTheory/Limits/Filtered.lean

tactic: rw [IsFiltered.iff_cocone_nonempty.{v}]
state_before: C : Type u
inst✝ : Category.{v, u} C
⊢ IsFiltered C ↔
    ∀ {J : Type v} [inst : SmallCategory J] [inst_1 : FinCategory J] (F : J ⥤ C),
      ∃ X, Nonempty (limit (F.op ⋙ yoneda.obj X))
state_after: C : Type u
inst✝ : Category.{v, u} C
⊢ (∀ {J : Type v} [inst : SmallCategory J] [inst_1 : FinCategory J] (F : J ⥤ C), Nonempty (Cocone F)) ↔
    ∀ {J : Type v} [inst : SmallCategory J] [inst_1 : FinCategory J] (F : J ⥤ C),
      ∃ X, Nonempty (limit (F.op ⋙ yoneda.obj X))

tactic: refine ⟨fun h J _ _ F => ?_, fun h J _ _ F => ?_⟩
state_before: C : Type u
inst✝ : Category.{v, u} C
⊢ (∀ {J : Type v} [inst : SmallCategory J] [inst_1 : FinCategory J] (F : J ⥤ C), Nonempty (Cocone F)) ↔
    ∀ {J : Type v} [inst : SmallCategory J] [inst_1 : FinCategory J] (F : J ⥤ C),
      ∃ X, Nonempty (limit (F.op ⋙ yoneda.obj X))
state_after: case refine_1
C : Type u
inst✝ : Category.{v, u} C
h : ∀ {J : Type v} [inst : SmallCategory J] [inst_1 : FinCategory J] (F : J ⥤ C), Nonempty (Cocone F)
J : Type v
x✝¹ : SmallCategory J
x✝ : FinCategory J
F : J ⥤ C
⊢ ∃ X, Nonempty (limit (F.op ⋙ yoneda.obj X))

case refine_2
C : Type u
inst✝ : Category.{v, u} C
h :
  ∀ {J : Type v} [inst : SmallCategory J] [inst_1 : FinCategory J] (F : J ⥤ C),
    ∃ X, Nonempty (limit (F.op ⋙ yoneda.obj X))
J : Type v
x✝¹ : SmallCategory J
x✝ : FinCategory J
F : J ⥤ C
⊢ Nonempty (Cocone F)

tactic: obtain ⟨c⟩ := h F
state_before: case refine_1
C : Type u
inst✝ : Category.{v, u} C
h : ∀ {J : Type v} [inst : SmallCategory J] [inst_1 : FinCategory J] (F : J ⥤ C), Nonempty (Cocone F)
J : Type v
x✝¹ : SmallCategory J
x✝ : FinCategory J
F : J ⥤ C
⊢ ∃ X, Nonempty (limit (F.op ⋙ yoneda.obj X))
state_after: case refine_1.intro
C : Type u
inst✝ : Category.{v, u} C
h : ∀ {J : Type v} [inst : SmallCategory J] [inst_1 : FinCategory J] (F : J ⥤ C), Nonempty (Cocone F)
J : Type v
x✝¹ : SmallCategory J
x✝ : FinCategory J
F : J ⥤ C
c : Cocone F
⊢ ∃ X, Nonempty (limit (F.op ⋙ yoneda.obj X))

tactic: exact ⟨c.pt, ⟨(limitCompYonedaIsoCocone F c.pt).inv c.ι⟩⟩
state_before: case refine_1.intro
C : Type u
inst✝ : Category.{v, u} C
h : ∀ {J : Type v} [inst : SmallCategory J] [inst_1 : FinCategory J] (F : J ⥤ C), Nonempty (Cocone F)
J : Type v
x✝¹ : SmallCategory J
x✝ : FinCategory J
F : J ⥤ C
c : Cocone F
⊢ ∃ X, Nonempty (limit (F.op ⋙ yoneda.obj X))
state_after: no goals

tactic: obtain ⟨pt, ⟨ι⟩⟩ := h F
state_before: case refine_2
C : Type u
inst✝ : Category.{v, u} C
h :
  ∀ {J : Type v} [inst : SmallCategory J] [inst_1 : FinCategory J] (F : J ⥤ C),
    ∃ X, Nonempty (limit (F.op ⋙ yoneda.obj X))
J : Type v
x✝¹ : SmallCategory J
x✝ : FinCategory J
F : J ⥤ C
⊢ Nonempty (Cocone F)
state_after: case refine_2.intro.intro
C : Type u
inst✝ : Category.{v, u} C
h :
  ∀ {J : Type v} [inst : SmallCategory J] [inst_1 : FinCategory J] (F : J ⥤ C),
    ∃ X, Nonempty (limit (F.op ⋙ yoneda.obj X))
J : Type v
x✝¹ : SmallCategory J
x✝ : FinCategory J
F : J ⥤ C
pt : C
ι : limit (F.op ⋙ yoneda.obj pt)
⊢ Nonempty (Cocone F)

tactic: exact ⟨⟨pt, (limitCompYonedaIsoCocone F pt).hom ι⟩⟩
state_before: case refine_2.intro.intro
C : Type u
inst✝ : Category.{v, u} C
h :
  ∀ {J : Type v} [inst : SmallCategory J] [inst_1 : FinCategory J] (F : J ⥤ C),
    ∃ X, Nonempty (limit (F.op ⋙ yoneda.obj X))
J : Type v
x✝¹ : SmallCategory J
x✝ : FinCategory J
F : J ⥤ C
pt : C
ι : limit (F.op ⋙ yoneda.obj pt)
⊢ Nonempty (Cocone F)
state_after: no goals