Theorem: not_dvd_index_sylow'
File: Mathlib/GroupTheory/Sylow.lean

tactic: intro h
state_before: p : ℕ
G : Type u_1
inst✝¹ : Group G
hp : Fact (Nat.Prime p)
P : Sylow p G
inst✝ : Normal ↑P
fP : FiniteIndex ↑P
⊢ ¬p ∣ index ↑P

tactic: letI : Fintype (G ⧸ (P : Subgroup G)) := (P : Subgroup G).fintypeQuotientOfFiniteIndex
state_before: p : ℕ
G : Type u_1
inst✝¹ : Group G
hp : Fact (Nat.Prime p)
P : Sylow p G
inst✝ : Normal ↑P
fP : FiniteIndex ↑P
h : p ∣ index ↑P
⊢ False

tactic: rw [index_eq_card (P : Subgroup G)] at h
state_before: p : ℕ
G : Type u_1
inst✝¹ : Group G
hp : Fact (Nat.Prime p)
P : Sylow p G
inst✝ : Normal ↑P
fP : FiniteIndex ↑P
h : p ∣ index ↑P
this : Fintype (G ⧸ ↑P) := fintypeQuotientOfFiniteIndex ↑P
⊢ False

tactic: obtain ⟨x, hx⟩ := exists_prime_orderOf_dvd_card (G := G ⧸ (P : Subgroup G)) p h
state_before: p : ℕ
G : Type u_1
inst✝¹ : Group G
hp : Fact (Nat.Prime p)
P : Sylow p G
inst✝ : Normal ↑P
fP : FiniteIndex ↑P
this : Fintype (G ⧸ ↑P) := fintypeQuotientOfFiniteIndex ↑P
h : p ∣ card (G ⧸ ↑P)
⊢ False

tactic: have h := IsPGroup.of_card ((orderOf_eq_card_zpowers.symm.trans hx).trans (pow_one p).symm)
state_before: case intro
p : ℕ
G : Type u_1
inst✝¹ : Group G
hp : Fact (Nat.Prime p)
P : Sylow p G
inst✝ : Normal ↑P
fP : FiniteIndex ↑P
this : Fintype (G ⧸ ↑P) := fintypeQuotientOfFiniteIndex ↑P
h : p ∣ card (G ⧸ ↑P)
x : G ⧸ ↑P
hx : orderOf x = p
⊢ False

tactic: let Q := (zpowers x).comap (QuotientGroup.mk' (P : Subgroup G))
state_before: case intro
p : ℕ
G : Type u_1
inst✝¹ : Group G
hp : Fact (Nat.Prime p)
P : Sylow p G
inst✝ : Normal ↑P
fP : FiniteIndex ↑P
this : Fintype (G ⧸ ↑P) := fintypeQuotientOfFiniteIndex ↑P
h✝ : p ∣ card (G ⧸ ↑P)
x : G ⧸ ↑P
hx : orderOf x = p
h : IsPGroup p { x_1 // x_1 ∈ zpowers x }
⊢ False

tactic: have hQ : IsPGroup p Q := by
  apply h.comap_of_ker_isPGroup
  rw [QuotientGroup.ker_mk']
  exact P.2
state_before: case intro
p : ℕ
G : Type u_1
inst✝¹ : Group G
hp : Fact (Nat.Prime p)
P : Sylow p G
inst✝ : Normal ↑P
fP : FiniteIndex ↑P
this : Fintype (G ⧸ ↑P) := fintypeQuotientOfFiniteIndex ↑P
h✝ : p ∣ card (G ⧸ ↑P)
x : G ⧸ ↑P
hx : orderOf x = p
h : IsPGroup p { x_1 // x_1 ∈ zpowers x }
Q : Subgroup G := comap (QuotientGroup.mk' ↑P) (zpowers x)
⊢ False

tactic: replace hp := mt orderOf_eq_one_iff.mpr (ne_of_eq_of_ne hx hp.1.ne_one)
state_before: case intro
p : ℕ
G : Type u_1
inst✝¹ : Group G
hp : Fact (Nat.Prime p)
P : Sylow p G
inst✝ : Normal ↑P
fP : FiniteIndex ↑P
this : Fintype (G ⧸ ↑P) := fintypeQuotientOfFiniteIndex ↑P
h✝ : p ∣ card (G ⧸ ↑P)
x : G ⧸ ↑P
hx : orderOf x = p
h : IsPGroup p { x_1 // x_1 ∈ zpowers x }
Q : Subgroup G := comap (QuotientGroup.mk' ↑P) (zpowers x)
hQ : IsPGroup p { x // x ∈ Q }
⊢ False

tactic: rw [← zpowers_eq_bot, ← Ne, ← bot_lt_iff_ne_bot, ←
  comap_lt_comap_of_surjective (QuotientGroup.mk'_surjective _), MonoidHom.comap_bot,
  QuotientGroup.ker_mk'] at hp
state_before: case intro
p : ℕ
G : Type u_1
inst✝¹ : Group G
P : Sylow p G
inst✝ : Normal ↑P
fP : FiniteIndex ↑P
this : Fintype (G ⧸ ↑P) := fintypeQuotientOfFiniteIndex ↑P
h✝ : p ∣ card (G ⧸ ↑P)
x : G ⧸ ↑P
hx : orderOf x = p
h : IsPGroup p { x_1 // x_1 ∈ zpowers x }
Q : Subgroup G := comap (QuotientGroup.mk' ↑P) (zpowers x)
hQ : IsPGroup p { x // x ∈ Q }
hp : ¬x = 1
⊢ False

tactic: exact hp.ne' (P.3 hQ hp.le)
state_before: case intro
p : ℕ
G : Type u_1
inst✝¹ : Group G
P : Sylow p G
inst✝ : Normal ↑P
fP : FiniteIndex ↑P
this : Fintype (G ⧸ ↑P) := fintypeQuotientOfFiniteIndex ↑P
h✝ : p ∣ card (G ⧸ ↑P)
x : G ⧸ ↑P
hx : orderOf x = p
h : IsPGroup p { x_1 // x_1 ∈ zpowers x }
Q : Subgroup G := comap (QuotientGroup.mk' ↑P) (zpowers x)
hQ : IsPGroup p { x // x ∈ Q }
hp : ↑P < comap (QuotientGroup.mk' ↑P) (zpowers x)
⊢ False

tactic: apply h.comap_of_ker_isPGroup
state_before: p : ℕ
G : Type u_1
inst✝¹ : Group G
hp : Fact (Nat.Prime p)
P : Sylow p G
inst✝ : Normal ↑P
fP : FiniteIndex ↑P
this : Fintype (G ⧸ ↑P) := fintypeQuotientOfFiniteIndex ↑P
h✝ : p ∣ card (G ⧸ ↑P)
x : G ⧸ ↑P
hx : orderOf x = p
h : IsPGroup p { x_1 // x_1 ∈ zpowers x }
Q : Subgroup G := comap (QuotientGroup.mk' ↑P) (zpowers x)
⊢ IsPGroup p { x // x ∈ Q }

tactic: rw [QuotientGroup.ker_mk']
state_before: case hϕ
p : ℕ
G : Type u_1
inst✝¹ : Group G
hp : Fact (Nat.Prime p)
P : Sylow p G
inst✝ : Normal ↑P
fP : FiniteIndex ↑P
this : Fintype (G ⧸ ↑P) := fintypeQuotientOfFiniteIndex ↑P
h✝ : p ∣ card (G ⧸ ↑P)
x : G ⧸ ↑P
hx : orderOf x = p
h : IsPGroup p { x_1 // x_1 ∈ zpowers x }
Q : Subgroup G := comap (QuotientGroup.mk' ↑P) (zpowers x)
⊢ IsPGroup p { x // x ∈ MonoidHom.ker (QuotientGroup.mk' ↑P) }

tactic: exact P.2
state_before: case hϕ
p : ℕ
G : Type u_1
inst✝¹ : Group G
hp : Fact (Nat.Prime p)
P : Sylow p G
inst✝ : Normal ↑P
fP : FiniteIndex ↑P
this : Fintype (G ⧸ ↑P) := fintypeQuotientOfFiniteIndex ↑P
h✝ : p ∣ card (G ⧸ ↑P)
x : G ⧸ ↑P
hx : orderOf x = p
h : IsPGroup p { x_1 // x_1 ∈ zpowers x }
Q : Subgroup G := comap (QuotientGroup.mk' ↑P) (zpowers x)
⊢ IsPGroup p { x // x ∈ ↑P }