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

Proof steps:
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: 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
⊢ (↑((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: 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
⊢ (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) (Opposite.op A)).app A.obj (𝟙 A.obj))) =
    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
⊢ (((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) (Opposite.op 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) (Opposite.op A) ≫
            (colimit.isoColimitCocone { cocone := cocone F, isColimit := isColimit F }).hom).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.ι ((incl F).op ⋙ coyoneda) (Opposite.op 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: 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 A.pt = f.app A.obj A.pt
state_after: no goals
tactic: rfl