Theorem: Sylow.exists_subgroup_card_pow_succ
File: Mathlib/GroupTheory/Sylow.lean

Proof steps:
state_before: G : Type u
α : Type v
β : Type w
inst✝¹ : Group G
inst✝ : Finite G
p n : ℕ
hp : Fact (Nat.Prime p)
hdvd : p ^ (n + 1) ∣ Nat.card G
H : Subgroup G
hH : Nat.card ↥H = p ^ n
s : ℕ
hs : Nat.card G = s * p ^ (n + 1)
⊢ Nat.card (G ⧸ H) * Nat.card ↥H = s * p * Nat.card ↥H
state_after: no goals
tactic: rw [← card_eq_card_quotient_mul_card_subgroup H, hH, hs, pow_succ', mul_assoc, mul_comm p]
state_before: G : Type u
α : Type v
β : Type w
inst✝¹ : Group G
inst✝ : Finite G
p n : ℕ
hp : Fact (Nat.Prime p)
hdvd : p ^ (n + 1) ∣ Nat.card G
H : Subgroup G
hH : Nat.card ↥H = p ^ n
s : ℕ
hs : Nat.card G = s * p ^ (n + 1)
hcard : Nat.card (G ⧸ H) = s * p
hm : s * p % p = Nat.card (↥H.normalizer ⧸ H.subgroupOf H.normalizer) % p
⊢ Nat.card (↥H.normalizer ⧸ H.subgroupOf H.normalizer) % p = 0
state_after: no goals
tactic: rwa [Nat.mod_eq_zero_of_dvd (dvd_mul_left _ _), eq_comm] at hm
state_before: G : Type u
α : Type v
β : Type w
inst✝¹ : Group G
inst✝ : Finite G
p n : ℕ
hp : Fact (Nat.Prime p)
hdvd : p ^ (n + 1) ∣ Nat.card G
H : Subgroup G
hH : Nat.card ↥H = p ^ n
s : ℕ
hs : Nat.card G = s * p ^ (n + 1)
hcard : Nat.card (G ⧸ H) = s * p
hm : s * p % p = Nat.card (↥H.normalizer ⧸ H.subgroupOf H.normalizer) % p
hm' : p ∣ Nat.card (↥H.normalizer ⧸ H.subgroupOf H.normalizer)
x : ↥H.normalizer ⧸ H.subgroupOf H.normalizer
hx : orderOf x = p
hequiv : ↥H ≃ ↥(H.subgroupOf H.normalizer)
⊢ Nat.card ↥(Subgroup.map H.normalizer.subtype (comap (mk' (H.subgroupOf H.normalizer)) (zpowers x))) = p ^ (n + 1)
state_after: G : Type u
α : Type v
β : Type w
inst✝¹ : Group G
inst✝ : Finite G
p n : ℕ
hp : Fact (Nat.Prime p)
hdvd : p ^ (n + 1) ∣ Nat.card G
H : Subgroup G
hH : Nat.card ↥H = p ^ n
s : ℕ
hs : Nat.card G = s * p ^ (n + 1)
hcard : Nat.card (G ⧸ H) = s * p
hm : s * p % p = Nat.card (↥H.normalizer ⧸ H.subgroupOf H.normalizer) % p
hm' : p ∣ Nat.card (↥H.normalizer ⧸ H.subgroupOf H.normalizer)
x : ↥H.normalizer ⧸ H.subgroupOf H.normalizer
hx : orderOf x = p
hequiv : ↥H ≃ ↥(H.subgroupOf H.normalizer)
⊢ Nat.card ↑(Subtype.val '' ↑(comap (mk' (H.subgroupOf H.normalizer)) (zpowers x))) = p ^ (n + 1)
tactic: suffices Nat.card (Subtype.val ''
              (Subgroup.comap (mk' (H.subgroupOf H.normalizer)) (zpowers x) : Set H.normalizer)) =
        p ^ (n + 1)
      by convert this using 2
state_before: G : Type u
α : Type v
β : Type w
inst✝¹ : Group G
inst✝ : Finite G
p n : ℕ
hp : Fact (Nat.Prime p)
hdvd : p ^ (n + 1) ∣ Nat.card G
H : Subgroup G
hH : Nat.card ↥H = p ^ n
s : ℕ
hs : Nat.card G = s * p ^ (n + 1)
hcard : Nat.card (G ⧸ H) = s * p
hm : s * p % p = Nat.card (↥H.normalizer ⧸ H.subgroupOf H.normalizer) % p
hm' : p ∣ Nat.card (↥H.normalizer ⧸ H.subgroupOf H.normalizer)
x : ↥H.normalizer ⧸ H.subgroupOf H.normalizer
hx : orderOf x = p
hequiv : ↥H ≃ ↥(H.subgroupOf H.normalizer)
⊢ Nat.card ↑(Subtype.val '' ↑(comap (mk' (H.subgroupOf H.normalizer)) (zpowers x))) = p ^ (n + 1)
state_after: G : Type u
α : Type v
β : Type w
inst✝¹ : Group G
inst✝ : Finite G
p n : ℕ
hp : Fact (Nat.Prime p)
hdvd : p ^ (n + 1) ∣ Nat.card G
H : Subgroup G
hH : Nat.card ↥H = p ^ n
s : ℕ
hs : Nat.card G = s * p ^ (n + 1)
hcard : Nat.card (G ⧸ H) = s * p
hm : s * p % p = Nat.card (↥H.normalizer ⧸ H.subgroupOf H.normalizer) % p
hm' : p ∣ Nat.card (↥H.normalizer ⧸ H.subgroupOf H.normalizer)
x : ↥H.normalizer ⧸ H.subgroupOf H.normalizer
hx : orderOf x = p
hequiv : ↥H ≃ ↥(H.subgroupOf H.normalizer)
⊢ Nat.card ↑↑(comap (mk' (H.subgroupOf H.normalizer)) (zpowers x)) =
    Nat.card (↥(H.subgroupOf H.normalizer) × ↥(zpowers x))
tactic: rw [Nat.card_image_of_injective Subtype.val_injective
        (Subgroup.comap (mk' (H.subgroupOf H.normalizer)) (zpowers x) : Set H.normalizer),
      pow_succ, ← hH, Nat.card_congr hequiv, ← hx, ← Nat.card_zpowers, ←
      Nat.card_prod]
state_before: G : Type u
α : Type v
β : Type w
inst✝¹ : Group G
inst✝ : Finite G
p n : ℕ
hp : Fact (Nat.Prime p)
hdvd : p ^ (n + 1) ∣ Nat.card G
H : Subgroup G
hH : Nat.card ↥H = p ^ n
s : ℕ
hs : Nat.card G = s * p ^ (n + 1)
hcard : Nat.card (G ⧸ H) = s * p
hm : s * p % p = Nat.card (↥H.normalizer ⧸ H.subgroupOf H.normalizer) % p
hm' : p ∣ Nat.card (↥H.normalizer ⧸ H.subgroupOf H.normalizer)
x : ↥H.normalizer ⧸ H.subgroupOf H.normalizer
hx : orderOf x = p
hequiv : ↥H ≃ ↥(H.subgroupOf H.normalizer)
⊢ Nat.card ↑↑(comap (mk' (H.subgroupOf H.normalizer)) (zpowers x)) =
    Nat.card (↥(H.subgroupOf H.normalizer) × ↥(zpowers x))
state_after: no goals
tactic: exact Nat.card_congr
      (preimageMkEquivSubgroupProdSet (H.subgroupOf H.normalizer) (zpowers x))
state_before: G : Type u
α : Type v
β : Type w
inst✝¹ : Group G
inst✝ : Finite G
p n : ℕ
hp : Fact (Nat.Prime p)
hdvd : p ^ (n + 1) ∣ Nat.card G
H : Subgroup G
hH : Nat.card ↥H = p ^ n
s : ℕ
hs : Nat.card G = s * p ^ (n + 1)
hcard : Nat.card (G ⧸ H) = s * p
hm : s * p % p = Nat.card (↥H.normalizer ⧸ H.subgroupOf H.normalizer) % p
hm' : p ∣ Nat.card (↥H.normalizer ⧸ H.subgroupOf H.normalizer)
x : ↥H.normalizer ⧸ H.subgroupOf H.normalizer
hx : orderOf x = p
hequiv : ↥H ≃ ↥(H.subgroupOf H.normalizer)
⊢ H ≤ Subgroup.map H.normalizer.subtype (comap (mk' (H.subgroupOf H.normalizer)) (zpowers x))
state_after: G : Type u
α : Type v
β : Type w
inst✝¹ : Group G
inst✝ : Finite G
p n : ℕ
hp : Fact (Nat.Prime p)
hdvd : p ^ (n + 1) ∣ Nat.card G
H : Subgroup G
hH : Nat.card ↥H = p ^ n
s : ℕ
hs : Nat.card G = s * p ^ (n + 1)
hcard : Nat.card (G ⧸ H) = s * p
hm : s * p % p = Nat.card (↥H.normalizer ⧸ H.subgroupOf H.normalizer) % p
hm' : p ∣ Nat.card (↥H.normalizer ⧸ H.subgroupOf H.normalizer)
x : ↥H.normalizer ⧸ H.subgroupOf H.normalizer
hx : orderOf x = p
hequiv : ↥H ≃ ↥(H.subgroupOf H.normalizer)
y : G
hy : y ∈ H
⊢ y ∈ Subgroup.map H.normalizer.subtype (comap (mk' (H.subgroupOf H.normalizer)) (zpowers x))
tactic: intro y hy
state_before: G : Type u
α : Type v
β : Type w
inst✝¹ : Group G
inst✝ : Finite G
p n : ℕ
hp : Fact (Nat.Prime p)
hdvd : p ^ (n + 1) ∣ Nat.card G
H : Subgroup G
hH : Nat.card ↥H = p ^ n
s : ℕ
hs : Nat.card G = s * p ^ (n + 1)
hcard : Nat.card (G ⧸ H) = s * p
hm : s * p % p = Nat.card (↥H.normalizer ⧸ H.subgroupOf H.normalizer) % p
hm' : p ∣ Nat.card (↥H.normalizer ⧸ H.subgroupOf H.normalizer)
x : ↥H.normalizer ⧸ H.subgroupOf H.normalizer
hx : orderOf x = p
hequiv : ↥H ≃ ↥(H.subgroupOf H.normalizer)
y : G
hy : y ∈ H
⊢ y ∈ Subgroup.map H.normalizer.subtype (comap (mk' (H.subgroupOf H.normalizer)) (zpowers x))
state_after: G : Type u
α : Type v
β : Type w
inst✝¹ : Group G
inst✝ : Finite G
p n : ℕ
hp : Fact (Nat.Prime p)
hdvd : p ^ (n + 1) ∣ Nat.card G
H : Subgroup G
hH : Nat.card ↥H = p ^ n
s : ℕ
hs : Nat.card G = s * p ^ (n + 1)
hcard : Nat.card (G ⧸ H) = s * p
hm : s * p % p = Nat.card (↥H.normalizer ⧸ H.subgroupOf H.normalizer) % p
hm' : p ∣ Nat.card (↥H.normalizer ⧸ H.subgroupOf H.normalizer)
x : ↥H.normalizer ⧸ H.subgroupOf H.normalizer
hx : orderOf x = p
hequiv : ↥H ≃ ↥(H.subgroupOf H.normalizer)
y : G
hy : y ∈ H
⊢ ∃ x_1, ↑x_1 ∈ zpowers x ∧ ↑x_1 = y
tactic: simp only [exists_prop, Subgroup.coeSubtype, mk'_apply, Subgroup.mem_map, Subgroup.mem_comap]
state_before: G : Type u
α : Type v
β : Type w
inst✝¹ : Group G
inst✝ : Finite G
p n : ℕ
hp : Fact (Nat.Prime p)
hdvd : p ^ (n + 1) ∣ Nat.card G
H : Subgroup G
hH : Nat.card ↥H = p ^ n
s : ℕ
hs : Nat.card G = s * p ^ (n + 1)
hcard : Nat.card (G ⧸ H) = s * p
hm : s * p % p = Nat.card (↥H.normalizer ⧸ H.subgroupOf H.normalizer) % p
hm' : p ∣ Nat.card (↥H.normalizer ⧸ H.subgroupOf H.normalizer)
x : ↥H.normalizer ⧸ H.subgroupOf H.normalizer
hx : orderOf x = p
hequiv : ↥H ≃ ↥(H.subgroupOf H.normalizer)
y : G
hy : y ∈ H
⊢ ∃ x_1, ↑x_1 ∈ zpowers x ∧ ↑x_1 = y
state_after: G : Type u
α : Type v
β : Type w
inst✝¹ : Group G
inst✝ : Finite G
p n : ℕ
hp : Fact (Nat.Prime p)
hdvd : p ^ (n + 1) ∣ Nat.card G
H : Subgroup G
hH : Nat.card ↥H = p ^ n
s : ℕ
hs : Nat.card G = s * p ^ (n + 1)
hcard : Nat.card (G ⧸ H) = s * p
hm : s * p % p = Nat.card (↥H.normalizer ⧸ H.subgroupOf H.normalizer) % p
hm' : p ∣ Nat.card (↥H.normalizer ⧸ H.subgroupOf H.normalizer)
x : ↥H.normalizer ⧸ H.subgroupOf H.normalizer
hx : orderOf x = p
hequiv : ↥H ≃ ↥(H.subgroupOf H.normalizer)
y : G
hy : y ∈ H
⊢ (fun x_1 => x ^ x_1) 0 = ↑⟨y, ⋯⟩
tactic: refine ⟨⟨y, le_normalizer hy⟩, ⟨0, ?_⟩, rfl⟩
state_before: G : Type u
α : Type v
β : Type w
inst✝¹ : Group G
inst✝ : Finite G
p n : ℕ
hp : Fact (Nat.Prime p)
hdvd : p ^ (n + 1) ∣ Nat.card G
H : Subgroup G
hH : Nat.card ↥H = p ^ n
s : ℕ
hs : Nat.card G = s * p ^ (n + 1)
hcard : Nat.card (G ⧸ H) = s * p
hm : s * p % p = Nat.card (↥H.normalizer ⧸ H.subgroupOf H.normalizer) % p
hm' : p ∣ Nat.card (↥H.normalizer ⧸ H.subgroupOf H.normalizer)
x : ↥H.normalizer ⧸ H.subgroupOf H.normalizer
hx : orderOf x = p
hequiv : ↥H ≃ ↥(H.subgroupOf H.normalizer)
y : G
hy : y ∈ H
⊢ (fun x_1 => x ^ x_1) 0 = ↑⟨y, ⋯⟩
state_after: G : Type u
α : Type v
β : Type w
inst✝¹ : Group G
inst✝ : Finite G
p n : ℕ
hp : Fact (Nat.Prime p)
hdvd : p ^ (n + 1) ∣ Nat.card G
H : Subgroup G
hH : Nat.card ↥H = p ^ n
s : ℕ
hs : Nat.card G = s * p ^ (n + 1)
hcard : Nat.card (G ⧸ H) = s * p
hm : s * p % p = Nat.card (↥H.normalizer ⧸ H.subgroupOf H.normalizer) % p
hm' : p ∣ Nat.card (↥H.normalizer ⧸ H.subgroupOf H.normalizer)
x : ↥H.normalizer ⧸ H.subgroupOf H.normalizer
hx : orderOf x = p
hequiv : ↥H ≃ ↥(H.subgroupOf H.normalizer)
y : G
hy : y ∈ H
⊢ x ^ 0 = ↑⟨y, ⋯⟩
tactic: dsimp only
state_before: G : Type u
α : Type v
β : Type w
inst✝¹ : Group G
inst✝ : Finite G
p n : ℕ
hp : Fact (Nat.Prime p)
hdvd : p ^ (n + 1) ∣ Nat.card G
H : Subgroup G
hH : Nat.card ↥H = p ^ n
s : ℕ
hs : Nat.card G = s * p ^ (n + 1)
hcard : Nat.card (G ⧸ H) = s * p
hm : s * p % p = Nat.card (↥H.normalizer ⧸ H.subgroupOf H.normalizer) % p
hm' : p ∣ Nat.card (↥H.normalizer ⧸ H.subgroupOf H.normalizer)
x : ↥H.normalizer ⧸ H.subgroupOf H.normalizer
hx : orderOf x = p
hequiv : ↥H ≃ ↥(H.subgroupOf H.normalizer)
y : G
hy : y ∈ H
⊢ x ^ 0 = ↑⟨y, ⋯⟩
state_after: G : Type u
α : Type v
β : Type w
inst✝¹ : Group G
inst✝ : Finite G
p n : ℕ
hp : Fact (Nat.Prime p)
hdvd : p ^ (n + 1) ∣ Nat.card G
H : Subgroup G
hH : Nat.card ↥H = p ^ n
s : ℕ
hs : Nat.card G = s * p ^ (n + 1)
hcard : Nat.card (G ⧸ H) = s * p
hm : s * p % p = Nat.card (↥H.normalizer ⧸ H.subgroupOf H.normalizer) % p
hm' : p ∣ Nat.card (↥H.normalizer ⧸ H.subgroupOf H.normalizer)
x : ↥H.normalizer ⧸ H.subgroupOf H.normalizer
hx : orderOf x = p
hequiv : ↥H ≃ ↥(H.subgroupOf H.normalizer)
y : G
hy : y ∈ H
⊢ ⟨y, ⋯⟩ ∈ H.subgroupOf H.normalizer
tactic: rw [zpow_zero, eq_comm, QuotientGroup.eq_one_iff]
state_before: G : Type u
α : Type v
β : Type w
inst✝¹ : Group G
inst✝ : Finite G
p n : ℕ
hp : Fact (Nat.Prime p)
hdvd : p ^ (n + 1) ∣ Nat.card G
H : Subgroup G
hH : Nat.card ↥H = p ^ n
s : ℕ
hs : Nat.card G = s * p ^ (n + 1)
hcard : Nat.card (G ⧸ H) = s * p
hm : s * p % p = Nat.card (↥H.normalizer ⧸ H.subgroupOf H.normalizer) % p
hm' : p ∣ Nat.card (↥H.normalizer ⧸ H.subgroupOf H.normalizer)
x : ↥H.normalizer ⧸ H.subgroupOf H.normalizer
hx : orderOf x = p
hequiv : ↥H ≃ ↥(H.subgroupOf H.normalizer)
y : G
hy : y ∈ H
⊢ ⟨y, ⋯⟩ ∈ H.subgroupOf H.normalizer
state_after: no goals
tactic: simpa using hy