Theorem: CategoryTheory.FintypeCat.Action.isConnected_of_transitive
File: Mathlib/CategoryTheory/Galois/Examples.lean

tactic: obtain ⟨(y : Y.V)⟩ := (not_initial_iff_fiber_nonempty (Action.forget _ _) Y).mp hni
state_before: G : Type u
inst✝² : Group G
X : FintypeCat
inst✝¹ : MulAction G ↑X
inst✝ : MulAction.IsPretransitive G ↑X
h : Nonempty ↑X
Y : Action FintypeCat (MonCat.of G)
i : Y ⟶ Action.FintypeCat.ofMulAction G X
hm : Mono i
hni : IsInitial Y → False
⊢ IsIso i
state_after: case intro
G : Type u
inst✝² : Group G
X : FintypeCat
inst✝¹ : MulAction G ↑X
inst✝ : MulAction.IsPretransitive G ↑X
h : Nonempty ↑X
Y : Action FintypeCat (MonCat.of G)
i : Y ⟶ Action.FintypeCat.ofMulAction G X
hm : Mono i
hni : IsInitial Y → False
y : ↑Y.V
⊢ IsIso i

tactic: apply isIso_of_reflects_iso i (Action.forget _ _)
state_before: case intro
G : Type u
inst✝² : Group G
X : FintypeCat
inst✝¹ : MulAction G ↑X
inst✝ : MulAction.IsPretransitive G ↑X
h : Nonempty ↑X
Y : Action FintypeCat (MonCat.of G)
i : Y ⟶ Action.FintypeCat.ofMulAction G X
hm : Mono i
hni : IsInitial Y → False
y : ↑Y.V
this : IsIso i.hom
⊢ IsIso i
state_after: no goals

tactic: refine (ConcreteCategory.isIso_iff_bijective i.hom).mpr ⟨?_, fun x' ↦ ?_⟩
state_before: G : Type u
inst✝² : Group G
X : FintypeCat
inst✝¹ : MulAction G ↑X
inst✝ : MulAction.IsPretransitive G ↑X
h : Nonempty ↑X
Y : Action FintypeCat (MonCat.of G)
i : Y ⟶ Action.FintypeCat.ofMulAction G X
hm : Mono i
hni : IsInitial Y → False
y : ↑Y.V
⊢ IsIso i.hom
state_after: case refine_1
G : Type u
inst✝² : Group G
X : FintypeCat
inst✝¹ : MulAction G ↑X
inst✝ : MulAction.IsPretransitive G ↑X
h : Nonempty ↑X
Y : Action FintypeCat (MonCat.of G)
i : Y ⟶ Action.FintypeCat.ofMulAction G X
hm : Mono i
hni : IsInitial Y → False
y : ↑Y.V
⊢ Function.Injective ((forget FintypeCat).map i.hom)

case refine_2
G : Type u
inst✝² : Group G
X : FintypeCat
inst✝¹ : MulAction G ↑X
inst✝ : MulAction.IsPretransitive G ↑X
h : Nonempty ↑X
Y : Action FintypeCat (MonCat.of G)
i : Y ⟶ Action.FintypeCat.ofMulAction G X
hm : Mono i
hni : IsInitial Y → False
y : ↑Y.V
x' : (forget FintypeCat).obj (Action.FintypeCat.ofMulAction G X).V
⊢ ∃ a, (forget FintypeCat).map i.hom a = x'

tactic: haveI : Mono i.hom := map_mono (forget₂ _ _) i
state_before: case refine_1
G : Type u
inst✝² : Group G
X : FintypeCat
inst✝¹ : MulAction G ↑X
inst✝ : MulAction.IsPretransitive G ↑X
h : Nonempty ↑X
Y : Action FintypeCat (MonCat.of G)
i : Y ⟶ Action.FintypeCat.ofMulAction G X
hm : Mono i
hni : IsInitial Y → False
y : ↑Y.V
⊢ Function.Injective ((forget FintypeCat).map i.hom)
state_after: case refine_1
G : Type u
inst✝² : Group G
X : FintypeCat
inst✝¹ : MulAction G ↑X
inst✝ : MulAction.IsPretransitive G ↑X
h : Nonempty ↑X
Y : Action FintypeCat (MonCat.of G)
i : Y ⟶ Action.FintypeCat.ofMulAction G X
hm : Mono i
hni : IsInitial Y → False
y : ↑Y.V
this : Mono i.hom
⊢ Function.Injective ((forget FintypeCat).map i.hom)

tactic: exact ConcreteCategory.injective_of_mono_of_preservesPullback i.hom
state_before: case refine_1
G : Type u
inst✝² : Group G
X : FintypeCat
inst✝¹ : MulAction G ↑X
inst✝ : MulAction.IsPretransitive G ↑X
h : Nonempty ↑X
Y : Action FintypeCat (MonCat.of G)
i : Y ⟶ Action.FintypeCat.ofMulAction G X
hm : Mono i
hni : IsInitial Y → False
y : ↑Y.V
this : Mono i.hom
⊢ Function.Injective ((forget FintypeCat).map i.hom)
state_after: no goals

tactic: letI x : X := i.hom y
state_before: case refine_2
G : Type u
inst✝² : Group G
X : FintypeCat
inst✝¹ : MulAction G ↑X
inst✝ : MulAction.IsPretransitive G ↑X
h : Nonempty ↑X
Y : Action FintypeCat (MonCat.of G)
i : Y ⟶ Action.FintypeCat.ofMulAction G X
hm : Mono i
hni : IsInitial Y → False
y : ↑Y.V
x' : (forget FintypeCat).obj (Action.FintypeCat.ofMulAction G X).V
⊢ ∃ a, (forget FintypeCat).map i.hom a = x'
state_after: case refine_2
G : Type u
inst✝² : Group G
X : FintypeCat
inst✝¹ : MulAction G ↑X
inst✝ : MulAction.IsPretransitive G ↑X
h : Nonempty ↑X
Y : Action FintypeCat (MonCat.of G)
i : Y ⟶ Action.FintypeCat.ofMulAction G X
hm : Mono i
hni : IsInitial Y → False
y : ↑Y.V
x' : (forget FintypeCat).obj (Action.FintypeCat.ofMulAction G X).V
x : ↑X := i.hom y
⊢ ∃ a, (forget FintypeCat).map i.hom a = x'

tactic: obtain ⟨σ, hσ⟩ := MulAction.exists_smul_eq G x x'
state_before: case refine_2
G : Type u
inst✝² : Group G
X : FintypeCat
inst✝¹ : MulAction G ↑X
inst✝ : MulAction.IsPretransitive G ↑X
h : Nonempty ↑X
Y : Action FintypeCat (MonCat.of G)
i : Y ⟶ Action.FintypeCat.ofMulAction G X
hm : Mono i
hni : IsInitial Y → False
y : ↑Y.V
x' : (forget FintypeCat).obj (Action.FintypeCat.ofMulAction G X).V
x : ↑X := i.hom y
⊢ ∃ a, (forget FintypeCat).map i.hom a = x'
state_after: case refine_2.intro
G : Type u
inst✝² : Group G
X : FintypeCat
inst✝¹ : MulAction G ↑X
inst✝ : MulAction.IsPretransitive G ↑X
h : Nonempty ↑X
Y : Action FintypeCat (MonCat.of G)
i : Y ⟶ Action.FintypeCat.ofMulAction G X
hm : Mono i
hni : IsInitial Y → False
y : ↑Y.V
x' : (forget FintypeCat).obj (Action.FintypeCat.ofMulAction G X).V
x : ↑X := i.hom y
σ : G
hσ : σ • x = x'
⊢ ∃ a, (forget FintypeCat).map i.hom a = x'

tactic: use σ • y
state_before: case refine_2.intro
G : Type u
inst✝² : Group G
X : FintypeCat
inst✝¹ : MulAction G ↑X
inst✝ : MulAction.IsPretransitive G ↑X
h : Nonempty ↑X
Y : Action FintypeCat (MonCat.of G)
i : Y ⟶ Action.FintypeCat.ofMulAction G X
hm : Mono i
hni : IsInitial Y → False
y : ↑Y.V
x' : (forget FintypeCat).obj (Action.FintypeCat.ofMulAction G X).V
x : ↑X := i.hom y
σ : G
hσ : σ • x = x'
⊢ ∃ a, (forget FintypeCat).map i.hom a = x'
state_after: case h
G : Type u
inst✝² : Group G
X : FintypeCat
inst✝¹ : MulAction G ↑X
inst✝ : MulAction.IsPretransitive G ↑X
h : Nonempty ↑X
Y : Action FintypeCat (MonCat.of G)
i : Y ⟶ Action.FintypeCat.ofMulAction G X
hm : Mono i
hni : IsInitial Y → False
y : ↑Y.V
x' : (forget FintypeCat).obj (Action.FintypeCat.ofMulAction G X).V
x : ↑X := i.hom y
σ : G
hσ : σ • x = x'
⊢ (forget FintypeCat).map i.hom (σ • y) = x'

tactic: show (Y.ρ σ ≫ i.hom) y = x'
state_before: case h
G : Type u
inst✝² : Group G
X : FintypeCat
inst✝¹ : MulAction G ↑X
inst✝ : MulAction.IsPretransitive G ↑X
h : Nonempty ↑X
Y : Action FintypeCat (MonCat.of G)
i : Y ⟶ Action.FintypeCat.ofMulAction G X
hm : Mono i
hni : IsInitial Y → False
y : ↑Y.V
x' : (forget FintypeCat).obj (Action.FintypeCat.ofMulAction G X).V
x : ↑X := i.hom y
σ : G
hσ : σ • x = x'
⊢ (forget FintypeCat).map i.hom (σ • y) = x'
state_after: case h
G : Type u
inst✝² : Group G
X : FintypeCat
inst✝¹ : MulAction G ↑X
inst✝ : MulAction.IsPretransitive G ↑X
h : Nonempty ↑X
Y : Action FintypeCat (MonCat.of G)
i : Y ⟶ Action.FintypeCat.ofMulAction G X
hm : Mono i
hni : IsInitial Y → False
y : ↑Y.V
x' : (forget FintypeCat).obj (Action.FintypeCat.ofMulAction G X).V
x : ↑X := i.hom y
σ : G
hσ : σ • x = x'
⊢ (Y.ρ σ ≫ i.hom) y = x'

tactic: rw [i.comm, FintypeCat.comp_apply]
state_before: case h
G : Type u
inst✝² : Group G
X : FintypeCat
inst✝¹ : MulAction G ↑X
inst✝ : MulAction.IsPretransitive G ↑X
h : Nonempty ↑X
Y : Action FintypeCat (MonCat.of G)
i : Y ⟶ Action.FintypeCat.ofMulAction G X
hm : Mono i
hni : IsInitial Y → False
y : ↑Y.V
x' : (forget FintypeCat).obj (Action.FintypeCat.ofMulAction G X).V
x : ↑X := i.hom y
σ : G
hσ : σ • x = x'
⊢ (Y.ρ σ ≫ i.hom) y = x'
state_after: case h
G : Type u
inst✝² : Group G
X : FintypeCat
inst✝¹ : MulAction G ↑X
inst✝ : MulAction.IsPretransitive G ↑X
h : Nonempty ↑X
Y : Action FintypeCat (MonCat.of G)
i : Y ⟶ Action.FintypeCat.ofMulAction G X
hm : Mono i
hni : IsInitial Y → False
y : ↑Y.V
x' : (forget FintypeCat).obj (Action.FintypeCat.ofMulAction G X).V
x : ↑X := i.hom y
σ : G
hσ : σ • x = x'
⊢ (Action.FintypeCat.ofMulAction G X).ρ σ (i.hom y) = x'

tactic: exact hσ
state_before: case h
G : Type u
inst✝² : Group G
X : FintypeCat
inst✝¹ : MulAction G ↑X
inst✝ : MulAction.IsPretransitive G ↑X
h : Nonempty ↑X
Y : Action FintypeCat (MonCat.of G)
i : Y ⟶ Action.FintypeCat.ofMulAction G X
hm : Mono i
hni : IsInitial Y → False
y : ↑Y.V
x' : (forget FintypeCat).obj (Action.FintypeCat.ofMulAction G X).V
x : ↑X := i.hom y
σ : G
hσ : σ • x = x'
⊢ (Action.FintypeCat.ofMulAction G X).ρ σ (i.hom y) = x'
state_after: no goals