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

Proof steps:
state_before: C : Type u₁
inst✝² : Category.{u₂, u₁} C
inst✝¹ : GaloisCategory C
F : C ⥤ FintypeCat
inst✝ : FiberFunctor F
X : C
⊢ ∃ A a, IsGalois A ∧ Function.Bijective fun f => F.map f a
state_after: case intro.intro.intro.intro.intro
C : Type u₁
inst✝² : Category.{u₂, u₁} C
inst✝¹ : GaloisCategory C
F : C ⥤ FintypeCat
inst✝ : FiberFunctor F
X A : C
u : A ⟶ CategoryTheory.PreGaloisCategory.selfProd F X
a : ↑(F.obj A)
h1 : F.map u a = CategoryTheory.PreGaloisCategory.mkSelfProdFib F X
h2 : IsConnected A
h3 : Mono u
⊢ ∃ A a, IsGalois A ∧ Function.Bijective fun f => F.map f a
tactic: obtain ⟨A, u, a, h1, h2, h3⟩ := fiber_in_connected_component F (selfProd F X)
    (mkSelfProdFib F X)
state_before: case intro.intro.intro.intro.intro
C : Type u₁
inst✝² : Category.{u₂, u₁} C
inst✝¹ : GaloisCategory C
F : C ⥤ FintypeCat
inst✝ : FiberFunctor F
X A : C
u : A ⟶ CategoryTheory.PreGaloisCategory.selfProd F X
a : ↑(F.obj A)
h1 : F.map u a = CategoryTheory.PreGaloisCategory.mkSelfProdFib F X
h2 : IsConnected A
h3 : Mono u
⊢ ∃ A a, IsGalois A ∧ Function.Bijective fun f => F.map f 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
u : A ⟶ CategoryTheory.PreGaloisCategory.selfProd F X
a : ↑(F.obj A)
h1 : F.map u a = CategoryTheory.PreGaloisCategory.mkSelfProdFib F X
h2 : IsConnected A
h3 : Mono u
⊢ ∃ a, IsGalois A ∧ Function.Bijective fun f => F.map f a
tactic: use A
state_before: case h
C : Type u₁
inst✝² : Category.{u₂, u₁} C
inst✝¹ : GaloisCategory C
F : C ⥤ FintypeCat
inst✝ : FiberFunctor F
X A : C
u : A ⟶ CategoryTheory.PreGaloisCategory.selfProd F X
a : ↑(F.obj A)
h1 : F.map u a = CategoryTheory.PreGaloisCategory.mkSelfProdFib F X
h2 : IsConnected A
h3 : Mono u
⊢ ∃ a, IsGalois A ∧ Function.Bijective fun f => F.map f 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
u : A ⟶ CategoryTheory.PreGaloisCategory.selfProd F X
a : ↑(F.obj A)
h1 : F.map u a = CategoryTheory.PreGaloisCategory.mkSelfProdFib F X
h2 : IsConnected A
h3 : Mono u
⊢ IsGalois A ∧ Function.Bijective fun f => F.map f a
tactic: use a
state_before: case h
C : Type u₁
inst✝² : Category.{u₂, u₁} C
inst✝¹ : GaloisCategory C
F : C ⥤ FintypeCat
inst✝ : FiberFunctor F
X A : C
u : A ⟶ CategoryTheory.PreGaloisCategory.selfProd F X
a : ↑(F.obj A)
h1 : F.map u a = CategoryTheory.PreGaloisCategory.mkSelfProdFib F X
h2 : IsConnected A
h3 : Mono u
⊢ IsGalois A ∧ Function.Bijective fun f => F.map f a
state_after: case h.left
C : Type u₁
inst✝² : Category.{u₂, u₁} C
inst✝¹ : GaloisCategory C
F : C ⥤ FintypeCat
inst✝ : FiberFunctor F
X A : C
u : A ⟶ CategoryTheory.PreGaloisCategory.selfProd F X
a : ↑(F.obj A)
h1 : F.map u a = CategoryTheory.PreGaloisCategory.mkSelfProdFib F X
h2 : IsConnected A
h3 : Mono u
⊢ IsGalois A

case h.right
C : Type u₁
inst✝² : Category.{u₂, u₁} C
inst✝¹ : GaloisCategory C
F : C ⥤ FintypeCat
inst✝ : FiberFunctor F
X A : C
u : A ⟶ CategoryTheory.PreGaloisCategory.selfProd F X
a : ↑(F.obj A)
h1 : F.map u a = CategoryTheory.PreGaloisCategory.mkSelfProdFib F X
h2 : IsConnected A
h3 : Mono u
⊢ Function.Bijective fun f => F.map f a
tactic: constructor