Theorem: CategoryTheory.PreGaloisCategory.initial_iff_fiber_empty
File: Mathlib/CategoryTheory/Galois/Basic.lean

tactic: rw [(IsInitial.isInitialIffObj F X).nonempty_congr]
state_before: C : Type u₁
inst✝² : Category.{u₂, u₁} C
inst✝¹ : PreGaloisCategory C
F : C ⥤ FintypeCat
inst✝ : FiberFunctor F
X : C
⊢ Nonempty (IsInitial X) ↔ IsEmpty ↑(F.obj X)
state_after: C : Type u₁
inst✝² : Category.{u₂, u₁} C
inst✝¹ : PreGaloisCategory C
F : C ⥤ FintypeCat
inst✝ : FiberFunctor F
X : C
⊢ Nonempty (IsInitial (F.obj X)) ↔ IsEmpty ↑(F.obj X)

tactic: haveI : PreservesFiniteColimits (forget FintypeCat) := by
  show PreservesFiniteColimits FintypeCat.incl
  infer_instance
state_before: C : Type u₁
inst✝² : Category.{u₂, u₁} C
inst✝¹ : PreGaloisCategory C
F : C ⥤ FintypeCat
inst✝ : FiberFunctor F
X : C
⊢ Nonempty (IsInitial (F.obj X)) ↔ IsEmpty ↑(F.obj X)
state_after: C : Type u₁
inst✝² : Category.{u₂, u₁} C
inst✝¹ : PreGaloisCategory C
F : C ⥤ FintypeCat
inst✝ : FiberFunctor F
X : C
this : PreservesFiniteColimits (forget FintypeCat)
⊢ Nonempty (IsInitial (F.obj X)) ↔ IsEmpty ↑(F.obj X)

tactic: haveI : ReflectsColimit (Functor.empty.{0} _) (forget FintypeCat) := by
  show ReflectsColimit (Functor.empty.{0} _) FintypeCat.incl
  infer_instance
state_before: C : Type u₁
inst✝² : Category.{u₂, u₁} C
inst✝¹ : PreGaloisCategory C
F : C ⥤ FintypeCat
inst✝ : FiberFunctor F
X : C
this : PreservesFiniteColimits (forget FintypeCat)
⊢ Nonempty (IsInitial (F.obj X)) ↔ IsEmpty ↑(F.obj X)
state_after: C : Type u₁
inst✝² : Category.{u₂, u₁} C
inst✝¹ : PreGaloisCategory C
F : C ⥤ FintypeCat
inst✝ : FiberFunctor F
X : C
this✝ : PreservesFiniteColimits (forget FintypeCat)
this : ReflectsColimit (empty FintypeCat) (forget FintypeCat)
⊢ Nonempty (IsInitial (F.obj X)) ↔ IsEmpty ↑(F.obj X)

tactic: exact Concrete.initial_iff_empty_of_preserves_of_reflects (F.obj X)
state_before: C : Type u₁
inst✝² : Category.{u₂, u₁} C
inst✝¹ : PreGaloisCategory C
F : C ⥤ FintypeCat
inst✝ : FiberFunctor F
X : C
this✝ : PreservesFiniteColimits (forget FintypeCat)
this : ReflectsColimit (empty FintypeCat) (forget FintypeCat)
⊢ Nonempty (IsInitial (F.obj X)) ↔ IsEmpty ↑(F.obj X)
state_after: no goals

tactic: show PreservesFiniteColimits FintypeCat.incl
state_before: C : Type u₁
inst✝² : Category.{u₂, u₁} C
inst✝¹ : PreGaloisCategory C
F : C ⥤ FintypeCat
inst✝ : FiberFunctor F
X : C
⊢ PreservesFiniteColimits (forget FintypeCat)
state_after: C : Type u₁
inst✝² : Category.{u₂, u₁} C
inst✝¹ : PreGaloisCategory C
F : C ⥤ FintypeCat
inst✝ : FiberFunctor F
X : C
⊢ PreservesFiniteColimits FintypeCat.incl

tactic: infer_instance
state_before: C : Type u₁
inst✝² : Category.{u₂, u₁} C
inst✝¹ : PreGaloisCategory C
F : C ⥤ FintypeCat
inst✝ : FiberFunctor F
X : C
⊢ PreservesFiniteColimits FintypeCat.incl
state_after: no goals

tactic: show ReflectsColimit (Functor.empty.{0} _) FintypeCat.incl
state_before: C : Type u₁
inst✝² : Category.{u₂, u₁} C
inst✝¹ : PreGaloisCategory C
F : C ⥤ FintypeCat
inst✝ : FiberFunctor F
X : C
this : PreservesFiniteColimits (forget FintypeCat)
⊢ ReflectsColimit (empty FintypeCat) (forget FintypeCat)
state_after: C : Type u₁
inst✝² : Category.{u₂, u₁} C
inst✝¹ : PreGaloisCategory C
F : C ⥤ FintypeCat
inst✝ : FiberFunctor F
X : C
this : PreservesFiniteColimits (forget FintypeCat)
⊢ ReflectsColimit (empty FintypeCat) FintypeCat.incl

tactic: infer_instance
state_before: C : Type u₁
inst✝² : Category.{u₂, u₁} C
inst✝¹ : PreGaloisCategory C
F : C ⥤ FintypeCat
inst✝ : FiberFunctor F
X : C
this : PreservesFiniteColimits (forget FintypeCat)
⊢ ReflectsColimit (empty FintypeCat) FintypeCat.incl
state_after: no goals