Theorem: Fintype.isPrimePow_card_of_field
File: Mathlib/FieldTheory/Cardinality.lean

Proof steps:
state_before: α : Type u_1
inst✝¹ : Fintype α
inst✝ : Field α
⊢ IsPrimePow ‖α‖
state_after: case intro
α : Type u_1
inst✝¹ : Fintype α
inst✝ : Field α
p : ℕ
h✝ : CharP α p
⊢ IsPrimePow ‖α‖
tactic: cases' CharP.exists α with p _
state_before: case intro
α : Type u_1
inst✝¹ : Fintype α
inst✝ : Field α
p : ℕ
h✝ : CharP α p
⊢ IsPrimePow ‖α‖
state_after: case intro
α : Type u_1
inst✝¹ : Fintype α
inst✝ : Field α
p : ℕ
h✝ : CharP α p
hp : Fact (Nat.Prime p)
⊢ IsPrimePow ‖α‖
tactic: haveI hp := Fact.mk (CharP.char_is_prime α p)
state_before: case intro
α : Type u_1
inst✝¹ : Fintype α
inst✝ : Field α
p : ℕ
h✝ : CharP α p
hp : Fact (Nat.Prime p)
⊢ IsPrimePow ‖α‖
state_after: case intro
α : Type u_1
inst✝¹ : Fintype α
inst✝ : Field α
p : ℕ
h✝ : CharP α p
hp : Fact (Nat.Prime p)
this : Algebra (ZMod p) α := ZMod.algebra α p
⊢ IsPrimePow ‖α‖
tactic: letI : Algebra (ZMod p) α := ZMod.algebra _ _
state_before: case intro
α : Type u_1
inst✝¹ : Fintype α
inst✝ : Field α
p : ℕ
h✝ : CharP α p
hp : Fact (Nat.Prime p)
this : Algebra (ZMod p) α := ZMod.algebra α p
⊢ IsPrimePow ‖α‖
state_after: case intro
α : Type u_1
inst✝¹ : Fintype α
inst✝ : Field α
p : ℕ
h✝ : CharP α p
hp : Fact (Nat.Prime p)
this : Algebra (ZMod p) α := ZMod.algebra α p
b : Basis { x // x ∈ IsNoetherian.finsetBasisIndex (ZMod p) α } (ZMod p) α := IsNoetherian.finsetBasis (ZMod p) α
⊢ IsPrimePow ‖α‖
tactic: let b := IsNoetherian.finsetBasis (ZMod p) α
state_before: case intro
α : Type u_1
inst✝¹ : Fintype α
inst✝ : Field α
p : ℕ
h✝ : CharP α p
hp : Fact (Nat.Prime p)
this : Algebra (ZMod p) α := ZMod.algebra α p
b : Basis { x // x ∈ IsNoetherian.finsetBasisIndex (ZMod p) α } (ZMod p) α := IsNoetherian.finsetBasis (ZMod p) α
⊢ IsPrimePow ‖α‖
state_after: case intro
α : Type u_1
inst✝¹ : Fintype α
inst✝ : Field α
p : ℕ
h✝ : CharP α p
hp : Fact (Nat.Prime p)
this : Algebra (ZMod p) α := ZMod.algebra α p
b : Basis { x // x ∈ IsNoetherian.finsetBasisIndex (ZMod p) α } (ZMod p) α := IsNoetherian.finsetBasis (ZMod p) α
⊢ IsPrimePow p

case intro
α : Type u_1
inst✝¹ : Fintype α
inst✝ : Field α
p : ℕ
h✝ : CharP α p
hp : Fact (Nat.Prime p)
this : Algebra (ZMod p) α := ZMod.algebra α p
b : Basis { x // x ∈ IsNoetherian.finsetBasisIndex (ZMod p) α } (ZMod p) α := IsNoetherian.finsetBasis (ZMod p) α
⊢ ‖{ x // x ∈ IsNoetherian.finsetBasisIndex (ZMod p) α }‖ ≠ 0
tactic: rw [Module.card_fintype b, ZMod.card, isPrimePow_pow_iff]
state_before: case intro
α : Type u_1
inst✝¹ : Fintype α
inst✝ : Field α
p : ℕ
h✝ : CharP α p
hp : Fact (Nat.Prime p)
this : Algebra (ZMod p) α := ZMod.algebra α p
b : Basis { x // x ∈ IsNoetherian.finsetBasisIndex (ZMod p) α } (ZMod p) α := IsNoetherian.finsetBasis (ZMod p) α
⊢ ‖{ x // x ∈ IsNoetherian.finsetBasisIndex (ZMod p) α }‖ ≠ 0
state_after: case intro
α : Type u_1
inst✝¹ : Fintype α
inst✝ : Field α
p : ℕ
h✝ : CharP α p
hp : Fact (Nat.Prime p)
this : Algebra (ZMod p) α := ZMod.algebra α p
b : Basis { x // x ∈ IsNoetherian.finsetBasisIndex (ZMod p) α } (ZMod p) α := IsNoetherian.finsetBasis (ZMod p) α
⊢ FiniteDimensional.finrank (ZMod p) α ≠ 0
tactic: rw [← FiniteDimensional.finrank_eq_card_basis b]
state_before: case intro
α : Type u_1
inst✝¹ : Fintype α
inst✝ : Field α
p : ℕ
h✝ : CharP α p
hp : Fact (Nat.Prime p)
this : Algebra (ZMod p) α := ZMod.algebra α p
b : Basis { x // x ∈ IsNoetherian.finsetBasisIndex (ZMod p) α } (ZMod p) α := IsNoetherian.finsetBasis (ZMod p) α
⊢ FiniteDimensional.finrank (ZMod p) α ≠ 0
state_after: no goals
tactic: exact FiniteDimensional.finrank_pos.ne'