Theorem: CategoryTheory.PreGaloisCategory.endEquivSectionsFibers_π
File: Mathlib/CategoryTheory/Galois/Prorepresentability.lean

tactic: dsimp [endEquivSectionsFibers, Types.sectionsEquiv]
state_before: C : Type u₁
inst✝² : Category.{u₂, u₁} C
inst✝¹ : GaloisCategory C
F : C ⥤ FintypeCat
inst✝ : FiberFunctor F
f : End F
A : PointedGaloisObject F
⊢ ↑((endEquivSectionsFibers F) f) A = f.app A.obj A.pt
state_after: C : Type u₁
inst✝² : Category.{u₂, u₁} C
inst✝¹ : GaloisCategory C
F : C ⥤ FintypeCat
inst✝ : FiberFunctor F
f : End F
A : PointedGaloisObject F
⊢ (↑((Types.limitEquivSections (incl F ⋙ (F ⋙ FintypeCat.incl) ⋙ uliftFunctor.{u₁, u₂}))
            ((colimitCoyonedaHomIsoLimit' (incl F) (F ⋙ FintypeCat.incl)).hom
              ((colimit.isoColimitCocone { cocone := cocone F, isColimit := isColimit F }).hom ≫
                ((FullyFaithful.ofFullyFaithful FintypeCat.incl).whiskeringRight C).homEquiv f)))
        A).down =
    f.app A.obj A.pt

tactic: erw [Types.limitEquivSections_apply]
state_before: C : Type u₁
inst✝² : Category.{u₂, u₁} C
inst✝¹ : GaloisCategory C
F : C ⥤ FintypeCat
inst✝ : FiberFunctor F
f : End F
A : PointedGaloisObject F
⊢ (↑((Types.limitEquivSections (incl F ⋙ (F ⋙ FintypeCat.incl) ⋙ uliftFunctor.{u₁, u₂}))
            ((colimitCoyonedaHomIsoLimit' (incl F) (F ⋙ FintypeCat.incl)).hom
              ((colimit.isoColimitCocone { cocone := cocone F, isColimit := isColimit F }).hom ≫
                ((FullyFaithful.ofFullyFaithful FintypeCat.incl).whiskeringRight C).homEquiv f)))
        A).down =
    f.app A.obj A.pt
state_after: C : Type u₁
inst✝² : Category.{u₂, u₁} C
inst✝¹ : GaloisCategory C
F : C ⥤ FintypeCat
inst✝ : FiberFunctor F
f : End F
A : PointedGaloisObject F
⊢ (limit.π (incl F ⋙ (F ⋙ FintypeCat.incl) ⋙ uliftFunctor.{u₁, u₂}) A
        ((colimitCoyonedaHomIsoLimit' (incl F) (F ⋙ FintypeCat.incl)).hom
          ((colimit.isoColimitCocone { cocone := cocone F, isColimit := isColimit F }).hom ≫
            ((FullyFaithful.ofFullyFaithful FintypeCat.incl).whiskeringRight C).homEquiv f))).down =
    f.app A.obj A.pt

tactic: simp only [colimitCoyonedaHomIsoLimit'_π_apply, incl_obj, comp_obj, FintypeCat.incl_obj, op_obj,
  FunctorToTypes.comp]
state_before: C : Type u₁
inst✝² : Category.{u₂, u₁} C
inst✝¹ : GaloisCategory C
F : C ⥤ FintypeCat
inst✝ : FiberFunctor F
f : End F
A : PointedGaloisObject F
⊢ (limit.π (incl F ⋙ (F ⋙ FintypeCat.incl) ⋙ uliftFunctor.{u₁, u₂}) A
        ((colimitCoyonedaHomIsoLimit' (incl F) (F ⋙ FintypeCat.incl)).hom
          ((colimit.isoColimitCocone { cocone := cocone F, isColimit := isColimit F }).hom ≫
            ((FullyFaithful.ofFullyFaithful FintypeCat.incl).whiskeringRight C).homEquiv f))).down =
    f.app A.obj A.pt
state_after: C : Type u₁
inst✝² : Category.{u₂, u₁} C
inst✝¹ : GaloisCategory C
F : C ⥤ FintypeCat
inst✝ : FiberFunctor F
f : End F
A : PointedGaloisObject F
⊢ (((FullyFaithful.ofFullyFaithful FintypeCat.incl).whiskeringRight C).homEquiv f).app A.obj
      ((colimit.isoColimitCocone { cocone := cocone F, isColimit := isColimit F }).hom.app A.obj
        ((colimit.ι ((incl F).op ⋙ coyoneda) { unop := A }).app A.obj (𝟙 A.obj))) =
    f.app A.obj A.pt

tactic: change (((FullyFaithful.whiskeringRight (FullyFaithful.ofFullyFaithful
    FintypeCat.incl) C).homEquiv) f).app A
  (((colimit.ι _ _) ≫ (colimit.isoColimitCocone ⟨cocone F, isColimit F⟩).hom).app
    A _) = f.app A A.pt
state_before: C : Type u₁
inst✝² : Category.{u₂, u₁} C
inst✝¹ : GaloisCategory C
F : C ⥤ FintypeCat
inst✝ : FiberFunctor F
f : End F
A : PointedGaloisObject F
⊢ (((FullyFaithful.ofFullyFaithful FintypeCat.incl).whiskeringRight C).homEquiv f).app A.obj
      ((colimit.isoColimitCocone { cocone := cocone F, isColimit := isColimit F }).hom.app A.obj
        ((colimit.ι ((incl F).op ⋙ coyoneda) { unop := A }).app A.obj (𝟙 A.obj))) =
    f.app A.obj A.pt
state_after: C : Type u₁
inst✝² : Category.{u₂, u₁} C
inst✝¹ : GaloisCategory C
F : C ⥤ FintypeCat
inst✝ : FiberFunctor F
f : End F
A : PointedGaloisObject F
⊢ (((FullyFaithful.ofFullyFaithful FintypeCat.incl).whiskeringRight C).homEquiv f).app A.obj
      ((colimit.ι ((incl F).op ⋙ coyoneda) { unop := A } ≫
            (colimit.isoColimitCocone { cocone := cocone F, isColimit := isColimit F }).hom).app
        A.obj (𝟙 A.obj)) =
    f.app A.obj A.pt

tactic: simp
state_before: C : Type u₁
inst✝² : Category.{u₂, u₁} C
inst✝¹ : GaloisCategory C
F : C ⥤ FintypeCat
inst✝ : FiberFunctor F
f : End F
A : PointedGaloisObject F
⊢ (((FullyFaithful.ofFullyFaithful FintypeCat.incl).whiskeringRight C).homEquiv f).app A.obj
      ((colimit.ι ((incl F).op ⋙ coyoneda) { unop := A } ≫
            (colimit.isoColimitCocone { cocone := cocone F, isColimit := isColimit F }).hom).app
        A.obj (𝟙 A.obj)) =
    f.app A.obj A.pt
state_after: C : Type u₁
inst✝² : Category.{u₂, u₁} C
inst✝¹ : GaloisCategory C
F : C ⥤ FintypeCat
inst✝ : FiberFunctor F
f : End F
A : PointedGaloisObject F
⊢ (((FullyFaithful.ofFullyFaithful FintypeCat.incl).whiskeringRight C).homEquiv f).app A.obj A.pt = f.app A.obj A.pt

tactic: rfl
state_before: C : Type u₁
inst✝² : Category.{u₂, u₁} C
inst✝¹ : GaloisCategory C
F : C ⥤ FintypeCat
inst✝ : FiberFunctor F
f : End F
A : PointedGaloisObject F
⊢ (((FullyFaithful.ofFullyFaithful FintypeCat.incl).whiskeringRight C).homEquiv f).app A.obj A.pt = f.app A.obj A.pt
state_after: no goals