Theorem: CategoryTheory.PreGaloisCategory.selfProdTermIncl_fib_eq
File: Mathlib/CategoryTheory/Galois/Decomposition.lean

tactic: apply Concrete.Pi.map_ext _ F
state_before: C : Type u₁
inst✝⁴ : Category.{u₂, u₁} C
inst✝³ : GaloisCategory C
F : C ⥤ FintypeCat
inst✝² : FiberFunctor F
X A : C
inst✝¹ : IsConnected A
u : A ⟶ CategoryTheory.PreGaloisCategory.selfProd F X
inst✝ : Mono u
a : ↑(F.obj A)
h : F.map u a = CategoryTheory.PreGaloisCategory.mkSelfProdFib F X
b : ↑(F.obj A)
⊢ F.map u b = F.map (CategoryTheory.PreGaloisCategory.selfProdPermIncl h b) a
state_after: case h
C : Type u₁
inst✝⁴ : Category.{u₂, u₁} C
inst✝³ : GaloisCategory C
F : C ⥤ FintypeCat
inst✝² : FiberFunctor F
X A : C
inst✝¹ : IsConnected A
u : A ⟶ CategoryTheory.PreGaloisCategory.selfProd F X
inst✝ : Mono u
a : ↑(F.obj A)
h : F.map u a = CategoryTheory.PreGaloisCategory.mkSelfProdFib F X
b : ↑(F.obj A)
⊢ ∀ (i : ↑(F.obj X)),
    (F.map (Pi.π (fun x => X) i)) (F.map u b) =
      (F.map (Pi.π (fun x => X) i)) (F.map (CategoryTheory.PreGaloisCategory.selfProdPermIncl h b) a)

tactic: intro (t : F.obj X)
state_before: case h
C : Type u₁
inst✝⁴ : Category.{u₂, u₁} C
inst✝³ : GaloisCategory C
F : C ⥤ FintypeCat
inst✝² : FiberFunctor F
X A : C
inst✝¹ : IsConnected A
u : A ⟶ CategoryTheory.PreGaloisCategory.selfProd F X
inst✝ : Mono u
a : ↑(F.obj A)
h : F.map u a = CategoryTheory.PreGaloisCategory.mkSelfProdFib F X
b : ↑(F.obj A)
⊢ ∀ (i : ↑(F.obj X)),
    (F.map (Pi.π (fun x => X) i)) (F.map u b) =
      (F.map (Pi.π (fun x => X) i)) (F.map (CategoryTheory.PreGaloisCategory.selfProdPermIncl h b) a)
state_after: case h
C : Type u₁
inst✝⁴ : Category.{u₂, u₁} C
inst✝³ : GaloisCategory C
F : C ⥤ FintypeCat
inst✝² : FiberFunctor F
X A : C
inst✝¹ : IsConnected A
u : A ⟶ CategoryTheory.PreGaloisCategory.selfProd F X
inst✝ : Mono u
a : ↑(F.obj A)
h : F.map u a = CategoryTheory.PreGaloisCategory.mkSelfProdFib F X
b : ↑(F.obj A)
t : ↑(F.obj X)
⊢ (F.map (Pi.π (fun x => X) t)) (F.map u b) =
    (F.map (Pi.π (fun x => X) t)) (F.map (CategoryTheory.PreGaloisCategory.selfProdPermIncl h b) a)

tactic: convert_to F.map (selfProdProj u t) b = _
state_before: case h
C : Type u₁
inst✝⁴ : Category.{u₂, u₁} C
inst✝³ : GaloisCategory C
F : C ⥤ FintypeCat
inst✝² : FiberFunctor F
X A : C
inst✝¹ : IsConnected A
u : A ⟶ CategoryTheory.PreGaloisCategory.selfProd F X
inst✝ : Mono u
a : ↑(F.obj A)
h : F.map u a = CategoryTheory.PreGaloisCategory.mkSelfProdFib F X
b : ↑(F.obj A)
t : ↑(F.obj X)
⊢ (F.map (Pi.π (fun x => X) t)) (F.map u b) =
    (F.map (Pi.π (fun x => X) t)) (F.map (CategoryTheory.PreGaloisCategory.selfProdPermIncl h b) a)
state_after: case h.e'_2.h
C : Type u₁
inst✝⁴ : Category.{u₂, u₁} C
inst✝³ : GaloisCategory C
F : C ⥤ FintypeCat
inst✝² : FiberFunctor F
X A : C
inst✝¹ : IsConnected A
u : A ⟶ CategoryTheory.PreGaloisCategory.selfProd F X
inst✝ : Mono u
a : ↑(F.obj A)
h : F.map u a = CategoryTheory.PreGaloisCategory.mkSelfProdFib F X
b : ↑(F.obj A)
t : ↑(F.obj X)
e_1✝ : (forget FintypeCat).obj (F.obj X) = ↑(F.obj X)
⊢ (F.map (Pi.π (fun x => X) t)) (F.map u b) = F.map (CategoryTheory.PreGaloisCategory.selfProdProj u t) b

case h.convert_2
C : Type u₁
inst✝⁴ : Category.{u₂, u₁} C
inst✝³ : GaloisCategory C
F : C ⥤ FintypeCat
inst✝² : FiberFunctor F
X A : C
inst✝¹ : IsConnected A
u : A ⟶ CategoryTheory.PreGaloisCategory.selfProd F X
inst✝ : Mono u
a : ↑(F.obj A)
h : F.map u a = CategoryTheory.PreGaloisCategory.mkSelfProdFib F X
b : ↑(F.obj A)
t : ↑(F.obj X)
⊢ F.map (CategoryTheory.PreGaloisCategory.selfProdProj u t) b =
    (F.map (Pi.π (fun x => X) t)) (F.map (CategoryTheory.PreGaloisCategory.selfProdPermIncl h b) a)

tactic: simp only [selfProdProj, map_comp, FintypeCat.comp_apply]
state_before: case h.e'_2.h
C : Type u₁
inst✝⁴ : Category.{u₂, u₁} C
inst✝³ : GaloisCategory C
F : C ⥤ FintypeCat
inst✝² : FiberFunctor F
X A : C
inst✝¹ : IsConnected A
u : A ⟶ CategoryTheory.PreGaloisCategory.selfProd F X
inst✝ : Mono u
a : ↑(F.obj A)
h : F.map u a = CategoryTheory.PreGaloisCategory.mkSelfProdFib F X
b : ↑(F.obj A)
t : ↑(F.obj X)
e_1✝ : (forget FintypeCat).obj (F.obj X) = ↑(F.obj X)
⊢ (F.map (Pi.π (fun x => X) t)) (F.map u b) = F.map (CategoryTheory.PreGaloisCategory.selfProdProj u t) b
state_after: case h.e'_2.h
C : Type u₁
inst✝⁴ : Category.{u₂, u₁} C
inst✝³ : GaloisCategory C
F : C ⥤ FintypeCat
inst✝² : FiberFunctor F
X A : C
inst✝¹ : IsConnected A
u : A ⟶ CategoryTheory.PreGaloisCategory.selfProd F X
inst✝ : Mono u
a : ↑(F.obj A)
h : F.map u a = CategoryTheory.PreGaloisCategory.mkSelfProdFib F X
b : ↑(F.obj A)
t : ↑(F.obj X)
e_1✝ : (forget FintypeCat).obj (F.obj X) = ↑(F.obj X)
⊢ (F.map (Pi.π (fun x => X) t)) (F.map u b) = F.map (Pi.π (fun x => X) t) (F.map u b)

tactic: rfl
state_before: case h.e'_2.h
C : Type u₁
inst✝⁴ : Category.{u₂, u₁} C
inst✝³ : GaloisCategory C
F : C ⥤ FintypeCat
inst✝² : FiberFunctor F
X A : C
inst✝¹ : IsConnected A
u : A ⟶ CategoryTheory.PreGaloisCategory.selfProd F X
inst✝ : Mono u
a : ↑(F.obj A)
h : F.map u a = CategoryTheory.PreGaloisCategory.mkSelfProdFib F X
b : ↑(F.obj A)
t : ↑(F.obj X)
e_1✝ : (forget FintypeCat).obj (F.obj X) = ↑(F.obj X)
⊢ (F.map (Pi.π (fun x => X) t)) (F.map u b) = F.map (Pi.π (fun x => X) t) (F.map u b)
state_after: no goals

tactic: dsimp only [selfProdPermIncl, Pi.whiskerEquiv]
state_before: case h.convert_2
C : Type u₁
inst✝⁴ : Category.{u₂, u₁} C
inst✝³ : GaloisCategory C
F : C ⥤ FintypeCat
inst✝² : FiberFunctor F
X A : C
inst✝¹ : IsConnected A
u : A ⟶ CategoryTheory.PreGaloisCategory.selfProd F X
inst✝ : Mono u
a : ↑(F.obj A)
h : F.map u a = CategoryTheory.PreGaloisCategory.mkSelfProdFib F X
b : ↑(F.obj A)
t : ↑(F.obj X)
⊢ F.map (CategoryTheory.PreGaloisCategory.selfProdProj u t) b =
    (F.map (Pi.π (fun x => X) t)) (F.map (CategoryTheory.PreGaloisCategory.selfProdPermIncl h b) a)
state_after: case h.convert_2
C : Type u₁
inst✝⁴ : Category.{u₂, u₁} C
inst✝³ : GaloisCategory C
F : C ⥤ FintypeCat
inst✝² : FiberFunctor F
X A : C
inst✝¹ : IsConnected A
u : A ⟶ CategoryTheory.PreGaloisCategory.selfProd F X
inst✝ : Mono u
a : ↑(F.obj A)
h : F.map u a = CategoryTheory.PreGaloisCategory.mkSelfProdFib F X
b : ↑(F.obj A)
t : ↑(F.obj X)
⊢ F.map (CategoryTheory.PreGaloisCategory.selfProdProj u t) b =
    (F.map (Pi.π (fun x => X) t))
      (F.map (u ≫ Pi.map' ⇑(CategoryTheory.PreGaloisCategory.fiberPerm h b) fun j => (Iso.refl X).hom) a)

tactic: rw [map_comp, FintypeCat.comp_apply, h]
state_before: case h.convert_2
C : Type u₁
inst✝⁴ : Category.{u₂, u₁} C
inst✝³ : GaloisCategory C
F : C ⥤ FintypeCat
inst✝² : FiberFunctor F
X A : C
inst✝¹ : IsConnected A
u : A ⟶ CategoryTheory.PreGaloisCategory.selfProd F X
inst✝ : Mono u
a : ↑(F.obj A)
h : F.map u a = CategoryTheory.PreGaloisCategory.mkSelfProdFib F X
b : ↑(F.obj A)
t : ↑(F.obj X)
⊢ F.map (CategoryTheory.PreGaloisCategory.selfProdProj u t) b =
    (F.map (Pi.π (fun x => X) t))
      (F.map (u ≫ Pi.map' ⇑(CategoryTheory.PreGaloisCategory.fiberPerm h b) fun j => (Iso.refl X).hom) a)
state_after: case h.convert_2
C : Type u₁
inst✝⁴ : Category.{u₂, u₁} C
inst✝³ : GaloisCategory C
F : C ⥤ FintypeCat
inst✝² : FiberFunctor F
X A : C
inst✝¹ : IsConnected A
u : A ⟶ CategoryTheory.PreGaloisCategory.selfProd F X
inst✝ : Mono u
a : ↑(F.obj A)
h : F.map u a = CategoryTheory.PreGaloisCategory.mkSelfProdFib F X
b : ↑(F.obj A)
t : ↑(F.obj X)
⊢ F.map (CategoryTheory.PreGaloisCategory.selfProdProj u t) b =
    (F.map (Pi.π (fun x => X) t))
      (F.map (Pi.map' ⇑(CategoryTheory.PreGaloisCategory.fiberPerm h b) fun j => (Iso.refl X).hom)
        (CategoryTheory.PreGaloisCategory.mkSelfProdFib F X))

tactic: convert_to F.map (selfProdProj u t) b =
  (F.map (Pi.map' (fiberPerm h b) fun _ ↦ 𝟙 X) ≫
  F.map (Pi.π (fun _ ↦ X) t)) (mkSelfProdFib F X)
state_before: case h.convert_2
C : Type u₁
inst✝⁴ : Category.{u₂, u₁} C
inst✝³ : GaloisCategory C
F : C ⥤ FintypeCat
inst✝² : FiberFunctor F
X A : C
inst✝¹ : IsConnected A
u : A ⟶ CategoryTheory.PreGaloisCategory.selfProd F X
inst✝ : Mono u
a : ↑(F.obj A)
h : F.map u a = CategoryTheory.PreGaloisCategory.mkSelfProdFib F X
b : ↑(F.obj A)
t : ↑(F.obj X)
⊢ F.map (CategoryTheory.PreGaloisCategory.selfProdProj u t) b =
    (F.map (Pi.π (fun x => X) t))
      (F.map (Pi.map' ⇑(CategoryTheory.PreGaloisCategory.fiberPerm h b) fun j => (Iso.refl X).hom)
        (CategoryTheory.PreGaloisCategory.mkSelfProdFib F X))
state_after: case h.convert_2
C : Type u₁
inst✝⁴ : Category.{u₂, u₁} C
inst✝³ : GaloisCategory C
F : C ⥤ FintypeCat
inst✝² : FiberFunctor F
X A : C
inst✝¹ : IsConnected A
u : A ⟶ CategoryTheory.PreGaloisCategory.selfProd F X
inst✝ : Mono u
a : ↑(F.obj A)
h : F.map u a = CategoryTheory.PreGaloisCategory.mkSelfProdFib F X
b : ↑(F.obj A)
t : ↑(F.obj X)
⊢ F.map (CategoryTheory.PreGaloisCategory.selfProdProj u t) b =
    (F.map (Pi.map' ⇑(CategoryTheory.PreGaloisCategory.fiberPerm h b) fun x => 𝟙 X) ≫ F.map (Pi.π (fun x => X) t))
      (CategoryTheory.PreGaloisCategory.mkSelfProdFib F X)

tactic: rw [← map_comp, Pi.map'_comp_π, Category.comp_id, mkSelfProdFib_map_π F X (fiberPerm h b t)]
state_before: case h.convert_2
C : Type u₁
inst✝⁴ : Category.{u₂, u₁} C
inst✝³ : GaloisCategory C
F : C ⥤ FintypeCat
inst✝² : FiberFunctor F
X A : C
inst✝¹ : IsConnected A
u : A ⟶ CategoryTheory.PreGaloisCategory.selfProd F X
inst✝ : Mono u
a : ↑(F.obj A)
h : F.map u a = CategoryTheory.PreGaloisCategory.mkSelfProdFib F X
b : ↑(F.obj A)
t : ↑(F.obj X)
⊢ F.map (CategoryTheory.PreGaloisCategory.selfProdProj u t) b =
    (F.map (Pi.map' ⇑(CategoryTheory.PreGaloisCategory.fiberPerm h b) fun x => 𝟙 X) ≫ F.map (Pi.π (fun x => X) t))
      (CategoryTheory.PreGaloisCategory.mkSelfProdFib F X)
state_after: case h.convert_2
C : Type u₁
inst✝⁴ : Category.{u₂, u₁} C
inst✝³ : GaloisCategory C
F : C ⥤ FintypeCat
inst✝² : FiberFunctor F
X A : C
inst✝¹ : IsConnected A
u : A ⟶ CategoryTheory.PreGaloisCategory.selfProd F X
inst✝ : Mono u
a : ↑(F.obj A)
h : F.map u a = CategoryTheory.PreGaloisCategory.mkSelfProdFib F X
b : ↑(F.obj A)
t : ↑(F.obj X)
⊢ F.map (CategoryTheory.PreGaloisCategory.selfProdProj u t) b = (CategoryTheory.PreGaloisCategory.fiberPerm h b) t

tactic: rfl
state_before: case h.convert_2
C : Type u₁
inst✝⁴ : Category.{u₂, u₁} C
inst✝³ : GaloisCategory C
F : C ⥤ FintypeCat
inst✝² : FiberFunctor F
X A : C
inst✝¹ : IsConnected A
u : A ⟶ CategoryTheory.PreGaloisCategory.selfProd F X
inst✝ : Mono u
a : ↑(F.obj A)
h : F.map u a = CategoryTheory.PreGaloisCategory.mkSelfProdFib F X
b : ↑(F.obj A)
t : ↑(F.obj X)
⊢ F.map (CategoryTheory.PreGaloisCategory.selfProdProj u t) b = (CategoryTheory.PreGaloisCategory.fiberPerm h b) t
state_after: no goals