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

tactic: simp only [← Nat.card_eq_fintype_card] at hs hH ⊢
state_before: G : Type u
α : Type v
β : Type w
inst✝¹ : Group G
inst✝ : Fintype G
p n : ℕ
hp : Fact (Nat.Prime p)
hdvd : p ^ (n + 1) ∣ Fintype.card G
H : Subgroup G
hH : Fintype.card ↥H = p ^ n
s : ℕ
hs : Fintype.card G = s * p ^ (n + 1)
⊢ Fintype.card (G ⧸ H) * Fintype.card ↥H = s * p * Fintype.card ↥H
state_after: G : Type u
α : Type v
β : Type w
inst✝¹ : Group G
inst✝ : Fintype G
p n : ℕ
hp : Fact (Nat.Prime p)
hdvd : p ^ (n + 1) ∣ Fintype.card G
H : Subgroup G
s : ℕ
hs : Nat.card G = s * p ^ (n + 1)
hH : Nat.card ↥H = p ^ n
⊢ Nat.card (G ⧸ H) * Nat.card ↥H = s * p * Nat.card ↥H

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✝ : Fintype G
p n : ℕ
hp : Fact (Nat.Prime p)
hdvd : p ^ (n + 1) ∣ Fintype.card G
H : Subgroup G
s : ℕ
hs : Nat.card G = s * p ^ (n + 1)
hH : Nat.card ↥H = p ^ n
⊢ Nat.card (G ⧸ H) * Nat.card ↥H = s * p * Nat.card ↥H
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✝ : Fintype G
p n : ℕ
hp : Fact (Nat.Prime p)
hdvd : p ^ (n + 1) ∣ Fintype.card G
H : Subgroup G
hH : Fintype.card ↥H = p ^ n
s : ℕ
hs : Fintype.card G = s * p ^ (n + 1)
hcard : Fintype.card (G ⧸ H) = s * p
hm : s * p % p = Fintype.card (↥H.normalizer ⧸ H.subgroupOf H.normalizer) % p
⊢ Fintype.card (↥H.normalizer ⧸ H.subgroupOf H.normalizer) % p = 0
state_after: no goals

tactic: suffices Fintype.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✝ : Fintype G
p n : ℕ
hp : Fact (Nat.Prime p)
hdvd : p ^ (n + 1) ∣ Fintype.card G
H : Subgroup G
hH : Fintype.card ↥H = p ^ n
s : ℕ
hs : Fintype.card G = s * p ^ (n + 1)
hcard : Fintype.card (G ⧸ H) = s * p
hm : s * p % p = Fintype.card (↥H.normalizer ⧸ H.subgroupOf H.normalizer) % p
hm' : p ∣ Fintype.card (↥H.normalizer ⧸ H.subgroupOf H.normalizer)
x : ↥H.normalizer ⧸ H.subgroupOf H.normalizer
hx : orderOf x = p
hequiv : ↥H ≃ ↥(H.subgroupOf H.normalizer)
⊢ Fintype.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✝ : Fintype G
p n : ℕ
hp : Fact (Nat.Prime p)
hdvd : p ^ (n + 1) ∣ Fintype.card G
H : Subgroup G
hH : Fintype.card ↥H = p ^ n
s : ℕ
hs : Fintype.card G = s * p ^ (n + 1)
hcard : Fintype.card (G ⧸ H) = s * p
hm : s * p % p = Fintype.card (↥H.normalizer ⧸ H.subgroupOf H.normalizer) % p
hm' : p ∣ Fintype.card (↥H.normalizer ⧸ H.subgroupOf H.normalizer)
x : ↥H.normalizer ⧸ H.subgroupOf H.normalizer
hx : orderOf x = p
hequiv : ↥H ≃ ↥(H.subgroupOf H.normalizer)
⊢ Fintype.card ↑(Subtype.val '' ↑(comap (mk' (H.subgroupOf H.normalizer)) (zpowers x))) = p ^ (n + 1)

tactic: rw [Set.card_image_of_injective
    (Subgroup.comap (mk' (H.subgroupOf H.normalizer)) (zpowers x) : Set H.normalizer)
    Subtype.val_injective,
  pow_succ, ← hH, Fintype.card_congr hequiv, ← hx, ← Fintype.card_zpowers, ←
  Fintype.card_prod]
state_before: G : Type u
α : Type v
β : Type w
inst✝¹ : Group G
inst✝ : Fintype G
p n : ℕ
hp : Fact (Nat.Prime p)
hdvd : p ^ (n + 1) ∣ Fintype.card G
H : Subgroup G
hH : Fintype.card ↥H = p ^ n
s : ℕ
hs : Fintype.card G = s * p ^ (n + 1)
hcard : Fintype.card (G ⧸ H) = s * p
hm : s * p % p = Fintype.card (↥H.normalizer ⧸ H.subgroupOf H.normalizer) % p
hm' : p ∣ Fintype.card (↥H.normalizer ⧸ H.subgroupOf H.normalizer)
x : ↥H.normalizer ⧸ H.subgroupOf H.normalizer
hx : orderOf x = p
hequiv : ↥H ≃ ↥(H.subgroupOf H.normalizer)
⊢ Fintype.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✝ : Fintype G
p n : ℕ
hp : Fact (Nat.Prime p)
hdvd : p ^ (n + 1) ∣ Fintype.card G
H : Subgroup G
hH : Fintype.card ↥H = p ^ n
s : ℕ
hs : Fintype.card G = s * p ^ (n + 1)
hcard : Fintype.card (G ⧸ H) = s * p
hm : s * p % p = Fintype.card (↥H.normalizer ⧸ H.subgroupOf H.normalizer) % p
hm' : p ∣ Fintype.card (↥H.normalizer ⧸ H.subgroupOf H.normalizer)
x : ↥H.normalizer ⧸ H.subgroupOf H.normalizer
hx : orderOf x = p
hequiv : ↥H ≃ ↥(H.subgroupOf H.normalizer)
⊢ Fintype.card ↑↑(comap (mk' (H.subgroupOf H.normalizer)) (zpowers x)) =
    Fintype.card (↥(H.subgroupOf H.normalizer) × ↥(zpowers x))

tactic: exact @Fintype.card_congr _ _ (_) (_)
  (preimageMkEquivSubgroupProdSet (H.subgroupOf H.normalizer) (zpowers x))
state_before: G : Type u
α : Type v
β : Type w
inst✝¹ : Group G
inst✝ : Fintype G
p n : ℕ
hp : Fact (Nat.Prime p)
hdvd : p ^ (n + 1) ∣ Fintype.card G
H : Subgroup G
hH : Fintype.card ↥H = p ^ n
s : ℕ
hs : Fintype.card G = s * p ^ (n + 1)
hcard : Fintype.card (G ⧸ H) = s * p
hm : s * p % p = Fintype.card (↥H.normalizer ⧸ H.subgroupOf H.normalizer) % p
hm' : p ∣ Fintype.card (↥H.normalizer ⧸ H.subgroupOf H.normalizer)
x : ↥H.normalizer ⧸ H.subgroupOf H.normalizer
hx : orderOf x = p
hequiv : ↥H ≃ ↥(H.subgroupOf H.normalizer)
⊢ Fintype.card ↑↑(comap (mk' (H.subgroupOf H.normalizer)) (zpowers x)) =
    Fintype.card (↥(H.subgroupOf H.normalizer) × ↥(zpowers x))
state_after: no goals

tactic: convert this using 2
state_before: G : Type u
α : Type v
β : Type w
inst✝¹ : Group G
inst✝ : Fintype G
p n : ℕ
hp : Fact (Nat.Prime p)
hdvd : p ^ (n + 1) ∣ Fintype.card G
H : Subgroup G
hH : Fintype.card ↥H = p ^ n
s : ℕ
hs : Fintype.card G = s * p ^ (n + 1)
hcard : Fintype.card (G ⧸ H) = s * p
hm : s * p % p = Fintype.card (↥H.normalizer ⧸ H.subgroupOf H.normalizer) % p
hm' : p ∣ Fintype.card (↥H.normalizer ⧸ H.subgroupOf H.normalizer)
x : ↥H.normalizer ⧸ H.subgroupOf H.normalizer
hx : orderOf x = p
hequiv : ↥H ≃ ↥(H.subgroupOf H.normalizer)
this : Fintype.card ↑(Subtype.val '' ↑(comap (mk' (H.subgroupOf H.normalizer)) (zpowers x))) = p ^ (n + 1)
⊢ Fintype.card ↥(Subgroup.map H.normalizer.subtype (comap (mk' (H.subgroupOf H.normalizer)) (zpowers x))) = p ^ (n + 1)
state_after: no goals

tactic: intro y hy
state_before: G : Type u
α : Type v
β : Type w
inst✝¹ : Group G
inst✝ : Fintype G
p n : ℕ
hp : Fact (Nat.Prime p)
hdvd : p ^ (n + 1) ∣ Fintype.card G
H : Subgroup G
hH : Fintype.card ↥H = p ^ n
s : ℕ
hs : Fintype.card G = s * p ^ (n + 1)
hcard : Fintype.card (G ⧸ H) = s * p
hm : s * p % p = Fintype.card (↥H.normalizer ⧸ H.subgroupOf H.normalizer) % p
hm' : p ∣ Fintype.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✝ : Fintype G
p n : ℕ
hp : Fact (Nat.Prime p)
hdvd : p ^ (n + 1) ∣ Fintype.card G
H : Subgroup G
hH : Fintype.card ↥H = p ^ n
s : ℕ
hs : Fintype.card G = s * p ^ (n + 1)
hcard : Fintype.card (G ⧸ H) = s * p
hm : s * p % p = Fintype.card (↥H.normalizer ⧸ H.subgroupOf H.normalizer) % p
hm' : p ∣ Fintype.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: 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✝ : Fintype G
p n : ℕ
hp : Fact (Nat.Prime p)
hdvd : p ^ (n + 1) ∣ Fintype.card G
H : Subgroup G
hH : Fintype.card ↥H = p ^ n
s : ℕ
hs : Fintype.card G = s * p ^ (n + 1)
hcard : Fintype.card (G ⧸ H) = s * p
hm : s * p % p = Fintype.card (↥H.normalizer ⧸ H.subgroupOf H.normalizer) % p
hm' : p ∣ Fintype.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✝ : Fintype G
p n : ℕ
hp : Fact (Nat.Prime p)
hdvd : p ^ (n + 1) ∣ Fintype.card G
H : Subgroup G
hH : Fintype.card ↥H = p ^ n
s : ℕ
hs : Fintype.card G = s * p ^ (n + 1)
hcard : Fintype.card (G ⧸ H) = s * p
hm : s * p % p = Fintype.card (↥H.normalizer ⧸ H.subgroupOf H.normalizer) % p
hm' : p ∣ Fintype.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: refine ⟨⟨y, le_normalizer hy⟩, ⟨0, ?_⟩, rfl⟩
state_before: G : Type u
α : Type v
β : Type w
inst✝¹ : Group G
inst✝ : Fintype G
p n : ℕ
hp : Fact (Nat.Prime p)
hdvd : p ^ (n + 1) ∣ Fintype.card G
H : Subgroup G
hH : Fintype.card ↥H = p ^ n
s : ℕ
hs : Fintype.card G = s * p ^ (n + 1)
hcard : Fintype.card (G ⧸ H) = s * p
hm : s * p % p = Fintype.card (↥H.normalizer ⧸ H.subgroupOf H.normalizer) % p
hm' : p ∣ Fintype.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✝ : Fintype G
p n : ℕ
hp : Fact (Nat.Prime p)
hdvd : p ^ (n + 1) ∣ Fintype.card G
H : Subgroup G
hH : Fintype.card ↥H = p ^ n
s : ℕ
hs : Fintype.card G = s * p ^ (n + 1)
hcard : Fintype.card (G ⧸ H) = s * p
hm : s * p % p = Fintype.card (↥H.normalizer ⧸ H.subgroupOf H.normalizer) % p
hm' : p ∣ Fintype.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: dsimp only
state_before: G : Type u
α : Type v
β : Type w
inst✝¹ : Group G
inst✝ : Fintype G
p n : ℕ
hp : Fact (Nat.Prime p)
hdvd : p ^ (n + 1) ∣ Fintype.card G
H : Subgroup G
hH : Fintype.card ↥H = p ^ n
s : ℕ
hs : Fintype.card G = s * p ^ (n + 1)
hcard : Fintype.card (G ⧸ H) = s * p
hm : s * p % p = Fintype.card (↥H.normalizer ⧸ H.subgroupOf H.normalizer) % p
hm' : p ∣ Fintype.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✝ : Fintype G
p n : ℕ
hp : Fact (Nat.Prime p)
hdvd : p ^ (n + 1) ∣ Fintype.card G
H : Subgroup G
hH : Fintype.card ↥H = p ^ n
s : ℕ
hs : Fintype.card G = s * p ^ (n + 1)
hcard : Fintype.card (G ⧸ H) = s * p
hm : s * p % p = Fintype.card (↥H.normalizer ⧸ H.subgroupOf H.normalizer) % p
hm' : p ∣ Fintype.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: rw [zpow_zero, eq_comm, QuotientGroup.eq_one_iff]
state_before: G : Type u
α : Type v
β : Type w
inst✝¹ : Group G
inst✝ : Fintype G
p n : ℕ
hp : Fact (Nat.Prime p)
hdvd : p ^ (n + 1) ∣ Fintype.card G
H : Subgroup G
hH : Fintype.card ↥H = p ^ n
s : ℕ
hs : Fintype.card G = s * p ^ (n + 1)
hcard : Fintype.card (G ⧸ H) = s * p
hm : s * p % p = Fintype.card (↥H.normalizer ⧸ H.subgroupOf H.normalizer) % p
hm' : p ∣ Fintype.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✝ : Fintype G
p n : ℕ
hp : Fact (Nat.Prime p)
hdvd : p ^ (n + 1) ∣ Fintype.card G
H : Subgroup G
hH : Fintype.card ↥H = p ^ n
s : ℕ
hs : Fintype.card G = s * p ^ (n + 1)
hcard : Fintype.card (G ⧸ H) = s * p
hm : s * p % p = Fintype.card (↥H.normalizer ⧸ H.subgroupOf H.normalizer) % p
hm' : p ∣ Fintype.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: simpa using hy
state_before: G : Type u
α : Type v
β : Type w
inst✝¹ : Group G
inst✝ : Fintype G
p n : ℕ
hp : Fact (Nat.Prime p)
hdvd : p ^ (n + 1) ∣ Fintype.card G
H : Subgroup G
hH : Fintype.card ↥H = p ^ n
s : ℕ
hs : Fintype.card G = s * p ^ (n + 1)
hcard : Fintype.card (G ⧸ H) = s * p
hm : s * p % p = Fintype.card (↥H.normalizer ⧸ H.subgroupOf H.normalizer) % p
hm' : p ∣ Fintype.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