Theorem: CategoryTheory.PreGaloisCategory.endEquivAutGalois_mul
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 g : End F
⊢ (endEquivAutGalois F) (g ≫ f) = (endEquivAutGalois F) g * (endEquivAutGalois F) f
state_after: C : Type u₁
inst✝² : Category.{u₂, u₁} C
inst✝¹ : GaloisCategory C
F : C ⥤ FintypeCat
inst✝ : FiberFunctor F
f g : End F
A : PointedGaloisObject F
⊢ (fun f => F.map f.hom A.pt) ((AutGalois.π F A) ((endEquivAutGalois F) (g ≫ f))) =
    (fun f => F.map f.hom A.pt) ((AutGalois.π F A) ((endEquivAutGalois F) g * (endEquivAutGalois F) f))
tactic: refine AutGalois.ext F (fun A ↦ evaluation_aut_injective_of_isConnected F A A.pt ?_)
state_before: C : Type u₁
inst✝² : Category.{u₂, u₁} C
inst✝¹ : GaloisCategory C
F : C ⥤ FintypeCat
inst✝ : FiberFunctor F
f g : End F
A : PointedGaloisObject F
⊢ (fun f => F.map f.hom A.pt) ((AutGalois.π F A) ((endEquivAutGalois F) (g ≫ f))) =
    (fun f => F.map f.hom A.pt) ((AutGalois.π F A) ((endEquivAutGalois F) g * (endEquivAutGalois F) f))
state_after: C : Type u₁
inst✝² : Category.{u₂, u₁} C
inst✝¹ : GaloisCategory C
F : C ⥤ FintypeCat
inst✝ : FiberFunctor F
f g : End F
A : PointedGaloisObject F
⊢ (g.app A.obj ≫ f.app A.obj) A.pt =
    F.map (((AutGalois.π F A) ((endEquivAutGalois F) f)).hom ≫ ((AutGalois.π F A) ((endEquivAutGalois F) g)).hom) A.pt
tactic: simp only [map_mul, endEquivAutGalois_π, Aut.Aut_mul_def, NatTrans.comp_app, Iso.trans_hom]
state_before: C : Type u₁
inst✝² : Category.{u₂, u₁} C
inst✝¹ : GaloisCategory C
F : C ⥤ FintypeCat
inst✝ : FiberFunctor F
f g : End F
A : PointedGaloisObject F
⊢ (g.app A.obj ≫ f.app A.obj) A.pt =
    F.map (((AutGalois.π F A) ((endEquivAutGalois F) f)).hom ≫ ((AutGalois.π F A) ((endEquivAutGalois F) g)).hom) A.pt
state_after: C : Type u₁
inst✝² : Category.{u₂, u₁} C
inst✝¹ : GaloisCategory C
F : C ⥤ FintypeCat
inst✝ : FiberFunctor F
f g : End F
A : PointedGaloisObject F
⊢ f.app A.obj (g.app A.obj A.pt) = F.map ((AutGalois.π F A) ((endEquivAutGalois F) g)).hom (f.app A.obj A.pt)
tactic: simp only [map_comp, FintypeCat.comp_apply, endEquivAutGalois_π]
state_before: C : Type u₁
inst✝² : Category.{u₂, u₁} C
inst✝¹ : GaloisCategory C
F : C ⥤ FintypeCat
inst✝ : FiberFunctor F
f g : End F
A : PointedGaloisObject F
⊢ f.app A.obj (g.app A.obj A.pt) = F.map ((AutGalois.π F A) ((endEquivAutGalois F) g)).hom (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 g : End F
A : PointedGaloisObject F
⊢ f.app A.obj (g.app A.obj A.pt) = (f.app A.obj ≫ F.map ((AutGalois.π F A) ((endEquivAutGalois F) g)).hom) A.pt
tactic: change f.app A (g.app A A.pt) =
    (f.app A ≫ F.map ((AutGalois.π F A) ((endEquivAutGalois F) g)).hom) A.pt
state_before: C : Type u₁
inst✝² : Category.{u₂, u₁} C
inst✝¹ : GaloisCategory C
F : C ⥤ FintypeCat
inst✝ : FiberFunctor F
f g : End F
A : PointedGaloisObject F
⊢ f.app A.obj (g.app A.obj A.pt) = (f.app A.obj ≫ F.map ((AutGalois.π F A) ((endEquivAutGalois F) g)).hom) A.pt
state_after: no goals
tactic: rw [← f.naturality, FintypeCat.comp_apply, endEquivAutGalois_π]