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✝ : (↑P).Normal
fP : (↑P).FiniteIndex
⊢ ¬p ∣ (↑P).index
state_after: p : ℕ
G : Type u_1
inst✝¹ : Group G
hp : Fact (Nat.Prime p)
P : Sylow p G
inst✝ : (↑P).Normal
fP : (↑P).FiniteIndex
h : p ∣ (↑P).index
⊢ False

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✝ : (↑P).Normal
fP : (↑P).FiniteIndex
h : p ∣ (↑P).index
⊢ False
state_after: p : ℕ
G : Type u_1
inst✝¹ : Group G
hp : Fact (Nat.Prime p)
P : Sylow p G
inst✝ : (↑P).Normal
fP : (↑P).FiniteIndex
h : p ∣ (↑P).index
this : Fintype (G ⧸ ↑P) := (↑P).fintypeQuotientOfFiniteIndex
⊢ 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✝ : (↑P).Normal
fP : (↑P).FiniteIndex
h : p ∣ (↑P).index
this : Fintype (G ⧸ ↑P) := (↑P).fintypeQuotientOfFiniteIndex
⊢ False
state_after: p : ℕ
G : Type u_1
inst✝¹ : Group G
hp : Fact (Nat.Prime p)
P : Sylow p G
inst✝ : (↑P).Normal
fP : (↑P).FiniteIndex
this : Fintype (G ⧸ ↑P) := (↑P).fintypeQuotientOfFiniteIndex
h : p ∣ card (G ⧸ ↑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✝ : (↑P).Normal
fP : (↑P).FiniteIndex
this : Fintype (G ⧸ ↑P) := (↑P).fintypeQuotientOfFiniteIndex
h : p ∣ card (G ⧸ ↑P)
⊢ False
state_after: case intro
p : ℕ
G : Type u_1
inst✝¹ : Group G
hp : Fact (Nat.Prime p)
P : Sylow p G
inst✝ : (↑P).Normal
fP : (↑P).FiniteIndex
this : Fintype (G ⧸ ↑P) := (↑P).fintypeQuotientOfFiniteIndex
h : p ∣ card (G ⧸ ↑P)
x : G ⧸ ↑P
hx : orderOf x = p
⊢ False

tactic: have h := IsPGroup.of_card ((Fintype.card_zpowers.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✝ : (↑P).Normal
fP : (↑P).FiniteIndex
this : Fintype (G ⧸ ↑P) := (↑P).fintypeQuotientOfFiniteIndex
h : p ∣ card (G ⧸ ↑P)
x : G ⧸ ↑P
hx : orderOf x = p
⊢ False
state_after: case intro
p : ℕ
G : Type u_1
inst✝¹ : Group G
hp : Fact (Nat.Prime p)
P : Sylow p G
inst✝ : (↑P).Normal
fP : (↑P).FiniteIndex
this : Fintype (G ⧸ ↑P) := (↑P).fintypeQuotientOfFiniteIndex
h✝ : p ∣ card (G ⧸ ↑P)
x : G ⧸ ↑P
hx : orderOf x = p
h : IsPGroup p ↥(zpowers x)
⊢ 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✝ : (↑P).Normal
fP : (↑P).FiniteIndex
this : Fintype (G ⧸ ↑P) := (↑P).fintypeQuotientOfFiniteIndex
h✝ : p ∣ card (G ⧸ ↑P)
x : G ⧸ ↑P
hx : orderOf x = p
h : IsPGroup p ↥(zpowers x)
⊢ False
state_after: case intro
p : ℕ
G : Type u_1
inst✝¹ : Group G
hp : Fact (Nat.Prime p)
P : Sylow p G
inst✝ : (↑P).Normal
fP : (↑P).FiniteIndex
this : Fintype (G ⧸ ↑P) := (↑P).fintypeQuotientOfFiniteIndex
h✝ : p ∣ card (G ⧸ ↑P)
x : G ⧸ ↑P
hx : orderOf x = p
h : IsPGroup p ↥(zpowers x)
Q : Subgroup G := comap (QuotientGroup.mk' ↑P) (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✝ : (↑P).Normal
fP : (↑P).FiniteIndex
this : Fintype (G ⧸ ↑P) := (↑P).fintypeQuotientOfFiniteIndex
h✝ : p ∣ card (G ⧸ ↑P)
x : G ⧸ ↑P
hx : orderOf x = p
h : IsPGroup p ↥(zpowers x)
Q : Subgroup G := comap (QuotientGroup.mk' ↑P) (zpowers x)
⊢ False
state_after: case intro
p : ℕ
G : Type u_1
inst✝¹ : Group G
hp : Fact (Nat.Prime p)
P : Sylow p G
inst✝ : (↑P).Normal
fP : (↑P).FiniteIndex
this : Fintype (G ⧸ ↑P) := (↑P).fintypeQuotientOfFiniteIndex
h✝ : p ∣ card (G ⧸ ↑P)
x : G ⧸ ↑P
hx : orderOf x = p
h : IsPGroup p ↥(zpowers x)
Q : Subgroup G := comap (QuotientGroup.mk' ↑P) (zpowers x)
hQ : IsPGroup p ↥Q
⊢ 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✝ : (↑P).Normal
fP : (↑P).FiniteIndex
this : Fintype (G ⧸ ↑P) := (↑P).fintypeQuotientOfFiniteIndex
h✝ : p ∣ card (G ⧸ ↑P)
x : G ⧸ ↑P
hx : orderOf x = p
h : IsPGroup p ↥(zpowers x)
Q : Subgroup G := comap (QuotientGroup.mk' ↑P) (zpowers x)
hQ : IsPGroup p ↥Q
⊢ False
state_after: case intro
p : ℕ
G : Type u_1
inst✝¹ : Group G
P : Sylow p G
inst✝ : (↑P).Normal
fP : (↑P).FiniteIndex
this : Fintype (G ⧸ ↑P) := (↑P).fintypeQuotientOfFiniteIndex
h✝ : p ∣ card (G ⧸ ↑P)
x : G ⧸ ↑P
hx : orderOf x = p
h : IsPGroup p ↥(zpowers x)
Q : Subgroup G := comap (QuotientGroup.mk' ↑P) (zpowers x)
hQ : IsPGroup p ↥Q
hp : ¬x = 1
⊢ 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✝ : (↑P).Normal
fP : (↑P).FiniteIndex
this : Fintype (G ⧸ ↑P) := (↑P).fintypeQuotientOfFiniteIndex
h✝ : p ∣ card (G ⧸ ↑P)
x : G ⧸ ↑P
hx : orderOf x = p
h : IsPGroup p ↥(zpowers x)
Q : Subgroup G := comap (QuotientGroup.mk' ↑P) (zpowers x)
hQ : IsPGroup p ↥Q
hp : ¬x = 1
⊢ False
state_after: case intro
p : ℕ
G : Type u_1
inst✝¹ : Group G
P : Sylow p G
inst✝ : (↑P).Normal
fP : (↑P).FiniteIndex
this : Fintype (G ⧸ ↑P) := (↑P).fintypeQuotientOfFiniteIndex
h✝ : p ∣ card (G ⧸ ↑P)
x : G ⧸ ↑P
hx : orderOf x = p
h : IsPGroup p ↥(zpowers x)
Q : Subgroup G := comap (QuotientGroup.mk' ↑P) (zpowers x)
hQ : IsPGroup p ↥Q
hp : ↑P < comap (QuotientGroup.mk' ↑P) (zpowers x)
⊢ 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✝ : (↑P).Normal
fP : (↑P).FiniteIndex
this : Fintype (G ⧸ ↑P) := (↑P).fintypeQuotientOfFiniteIndex
h✝ : p ∣ card (G ⧸ ↑P)
x : G ⧸ ↑P
hx : orderOf x = p
h : IsPGroup p ↥(zpowers x)
Q : Subgroup G := comap (QuotientGroup.mk' ↑P) (zpowers x)
hQ : IsPGroup p ↥Q
hp : ↑P < comap (QuotientGroup.mk' ↑P) (zpowers x)
⊢ False
state_after: no goals

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✝ : (↑P).Normal
fP : (↑P).FiniteIndex
this : Fintype (G ⧸ ↑P) := (↑P).fintypeQuotientOfFiniteIndex
h✝ : p ∣ card (G ⧸ ↑P)
x : G ⧸ ↑P
hx : orderOf x = p
h : IsPGroup p ↥(zpowers x)
Q : Subgroup G := comap (QuotientGroup.mk' ↑P) (zpowers x)
⊢ IsPGroup p ↥Q
state_after: case hϕ
p : ℕ
G : Type u_1
inst✝¹ : Group G
hp : Fact (Nat.Prime p)
P : Sylow p G
inst✝ : (↑P).Normal
fP : (↑P).FiniteIndex
this : Fintype (G ⧸ ↑P) := (↑P).fintypeQuotientOfFiniteIndex
h✝ : p ∣ card (G ⧸ ↑P)
x : G ⧸ ↑P
hx : orderOf x = p
h : IsPGroup p ↥(zpowers x)
Q : Subgroup G := comap (QuotientGroup.mk' ↑P) (zpowers x)
⊢ IsPGroup p ↥(QuotientGroup.mk' ↑P).ker

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✝ : (↑P).Normal
fP : (↑P).FiniteIndex
this : Fintype (G ⧸ ↑P) := (↑P).fintypeQuotientOfFiniteIndex
h✝ : p ∣ card (G ⧸ ↑P)
x : G ⧸ ↑P
hx : orderOf x = p
h : IsPGroup p ↥(zpowers x)
Q : Subgroup G := comap (QuotientGroup.mk' ↑P) (zpowers x)
⊢ IsPGroup p ↥(QuotientGroup.mk' ↑P).ker
state_after: case hϕ
p : ℕ
G : Type u_1
inst✝¹ : Group G
hp : Fact (Nat.Prime p)
P : Sylow p G
inst✝ : (↑P).Normal
fP : (↑P).FiniteIndex
this : Fintype (G ⧸ ↑P) := (↑P).fintypeQuotientOfFiniteIndex
h✝ : p ∣ card (G ⧸ ↑P)
x : G ⧸ ↑P
hx : orderOf x = p
h : IsPGroup p ↥(zpowers x)
Q : Subgroup G := comap (QuotientGroup.mk' ↑P) (zpowers x)
⊢ IsPGroup p ↥↑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✝ : (↑P).Normal
fP : (↑P).FiniteIndex
this : Fintype (G ⧸ ↑P) := (↑P).fintypeQuotientOfFiniteIndex
h✝ : p ∣ card (G ⧸ ↑P)
x : G ⧸ ↑P
hx : orderOf x = p
h : IsPGroup p ↥(zpowers x)
Q : Subgroup G := comap (QuotientGroup.mk' ↑P) (zpowers x)
⊢ IsPGroup p ↥↑P
state_after: no goals