Galois fields #
If p is a prime number, and n a natural number,
then GaloisField p n is defined as the splitting field of X^(p^n) - X over ZMod p.
It is a finite field with p ^ n elements.
Main definition #
GaloisField p nis a field withp ^ nelements
Main Results #
GaloisField.algEquivGaloisField: Any finite field is isomorphic to some Galois fieldFiniteField.algEquivOfCardEq: Uniqueness of finite fields : algebra isomorphismFiniteField.ringEquivOfCardEq: Uniqueness of finite fields : ring isomorphismcard_algHom_of_finrank_dvd: if[K:F] ∣ [L:F]then#(K →ₐ[F] L) = [K:F]nonempty_algHom_iff_finrank_dvd:(K →ₐ[F] L)is nonempty iff[K:F] ∣ [L:F]. This and the above result helps to classify the category of finite fields.
theorem
galois_poly_separable
{K : Type u_1}
[CommRing K]
(p q : ℕ)
[CharP K p]
(h : p ∣ q)
:
(Polynomial.X ^ q - Polynomial.X).Separable
A finite field with p ^ n elements.
Every field with the same cardinality is (non-canonically)
isomorphic to this field.
Instances For
@[implicit_reducible]
noncomputable instance
instInhabitedGaloisField
(p : ℕ)
[Fact (Nat.Prime p)]
(n : ℕ)
:
Inhabited (GaloisField p n)
@[implicit_reducible]
noncomputable instance
instFieldGaloisField
(p : ℕ)
[Fact (Nat.Prime p)]
(n : ℕ)
:
Field (GaloisField p n)
@[implicit_reducible]
noncomputable instance
instCharPGaloisField
(p : ℕ)
[Fact (Nat.Prime p)]
(n : ℕ)
:
CharP (GaloisField p n) p
@[implicit_reducible]
noncomputable instance
instAlgebraZModGaloisField
(p : ℕ)
[Fact (Nat.Prime p)]
(n : ℕ)
:
Algebra (ZMod p) (GaloisField p n)
@[implicit_reducible]
noncomputable instance
instFiniteGaloisField
(p : ℕ)
[Fact (Nat.Prime p)]
(n : ℕ)
:
Finite (GaloisField p n)
@[implicit_reducible]
noncomputable instance
instFiniteDimensionalZModGaloisField
(p : ℕ)
[Fact (Nat.Prime p)]
(n : ℕ)
:
FiniteDimensional (ZMod p) (GaloisField p n)
@[implicit_reducible]
noncomputable instance
instIsSplittingFieldZModGaloisFieldHSubPolynomialHPowNatX
(p : ℕ)
[Fact (Nat.Prime p)]
(n : ℕ)
:
Polynomial.IsSplittingField (ZMod p) (GaloisField p n) (Polynomial.X ^ p ^ n - Polynomial.X)
theorem
GaloisField.finrank
(p : ℕ)
[h_prime : Fact (Nat.Prime p)]
{n : ℕ}
(h : n ≠ 0)
:
Module.finrank (ZMod p) (GaloisField p n) = n
theorem
GaloisField.card
(p : ℕ)
[h_prime : Fact (Nat.Prime p)]
(n : ℕ)
(h : n ≠ 0)
:
Nat.card (GaloisField p n) = p ^ n
theorem
GaloisField.splits_zmod_X_pow_sub_X
(p : ℕ)
[h_prime : Fact (Nat.Prime p)]
:
(Polynomial.X ^ p - Polynomial.X).Splits
A Galois field with exponent 1 is equivalent to ZMod
Instances For
theorem
FiniteField.splits_X_pow_card_sub_X
(p : ℕ)
[h_prime : Fact (Nat.Prime p)]
{K : Type u_1}
[Field K]
[Fintype K]
[Algebra (ZMod p) K]
:
(Polynomial.map (algebraMap (ZMod p) K) (Polynomial.X ^ Fintype.card K - Polynomial.X)).Splits
theorem
FiniteField.isSplittingField_of_card_eq
(p : ℕ)
[h_prime : Fact (Nat.Prime p)]
(n : ℕ)
{K : Type u_1}
[Field K]
[Fintype K]
[Algebra (ZMod p) K]
(h : Fintype.card K = p ^ n)
:
Polynomial.IsSplittingField (ZMod p) K (Polynomial.X ^ p ^ n - Polynomial.X)
noncomputable def
GaloisField.algEquivGaloisFieldOfFintype
(p : ℕ)
[h_prime : Fact (Nat.Prime p)]
(n : ℕ)
{K : Type u_1}
[Field K]
[Fintype K]
[Algebra (ZMod p) K]
(h : Fintype.card K = p ^ n)
:
Any finite field is (possibly noncanonically) isomorphic to some Galois field.
Instances For
theorem
FiniteField.splits_X_pow_nat_card_sub_X
(p : ℕ)
[h_prime : Fact (Nat.Prime p)]
{K : Type u_1}
[Field K]
[Algebra (ZMod p) K]
[Finite K]
:
(Polynomial.map (algebraMap (ZMod p) K) (Polynomial.X ^ Nat.card K - Polynomial.X)).Splits
theorem
FiniteField.isSplittingField_of_nat_card_eq
(p : ℕ)
[h_prime : Fact (Nat.Prime p)]
(n : ℕ)
{K : Type u_1}
[Field K]
[Algebra (ZMod p) K]
(h : Nat.card K = p ^ n)
:
Polynomial.IsSplittingField (ZMod p) K (Polynomial.X ^ p ^ n - Polynomial.X)
@[instance 100]
theorem
FiniteField.algebraMap_norm_eq_pow
{K : Type u_1}
{K' : Type u_2}
[Field K]
[Field K']
[Algebra K K']
[Finite K']
{x : K'}
:
(algebraMap K K') ((Algebra.norm K) x) = x ^ ((Nat.card K' - 1) / (Nat.card K - 1))
theorem
FiniteField.unitsMap_norm_surjective
(K : Type u_1)
(K' : Type u_2)
[Field K]
[Field K']
[Algebra K K']
[Finite K']
:
Function.Surjective ⇑(Units.map (Algebra.norm K))
theorem
FiniteField.norm_surjective
(K : Type u_1)
(K' : Type u_2)
[Field K]
[Field K']
[Algebra K K']
[Finite K']
:
Function.Surjective ⇑(Algebra.norm K)
noncomputable def
FiniteField.algEquivOfCardEq
{K : Type u_1}
{K' : Type u_2}
[Field K]
[Field K']
[Fintype K]
[Fintype K']
(p : ℕ)
[h_prime : Fact (Nat.Prime p)]
[Algebra (ZMod p) K]
[Algebra (ZMod p) K']
(hKK' : Fintype.card K = Fintype.card K')
:
Uniqueness of finite fields: Any two finite fields of the same cardinality are (possibly noncanonically) isomorphic
Instances For
noncomputable def
FiniteField.ringEquivOfCardEq
{K : Type u_1}
{K' : Type u_2}
[Field K]
[Field K']
[Fintype K]
[Fintype K']
(hKK' : Fintype.card K = Fintype.card K')
:
Uniqueness of finite fields: Any two finite fields of the same cardinality are (possibly noncanonically) isomorphic
Instances For
theorem
FiniteField.pow_finrank_eq_natCard
(p : ℕ)
[Fact (Nat.Prime p)]
(k : Type u_3)
[AddCommGroup k]
[Finite k]
[Module (ZMod p) k]
:
p ^ Module.finrank (ZMod p) k = Nat.card k
theorem
FiniteField.pow_finrank_eq_card
(p : ℕ)
[Fact (Nat.Prime p)]
(k : Type u_3)
[AddCommGroup k]
[Fintype k]
[Module (ZMod p) k]
:
p ^ Module.finrank (ZMod p) k = Fintype.card k
theorem
FiniteField.nonempty_algHom_of_finrank_dvd
{F : Type u_3}
{K : Type u_4}
{L : Type u_5}
[Field F]
[Field K]
[Algebra F K]
[Field L]
[Algebra F L]
[Finite L]
(h : Module.finrank F K ∣ Module.finrank F L)
:
theorem
FiniteField.natCard_algHom_of_finrank_dvd
{F : Type u_3}
{K : Type u_4}
{L : Type u_5}
[Field F]
[Field K]
[Algebra F K]
[Field L]
[Algebra F L]
[Finite L]
(h : Module.finrank F K ∣ Module.finrank F L)
:
Nat.card (K →ₐ[F] L) = Module.finrank F K
theorem
FiniteField.card_algHom_of_finrank_dvd
{F : Type u_3}
{K : Type u_4}
{L : Type u_5}
[Field F]
[Field K]
[Algebra F K]
[Field L]
[Algebra F L]
[Finite L]
[Finite K]
(h : Module.finrank F K ∣ Module.finrank F L)
:
Fintype.card (K →ₐ[F] L) = Module.finrank F K
theorem
FiniteField.nonempty_algHom_iff_finrank_dvd
{F : Type u_3}
{K : Type u_4}
{L : Type u_5}
[Field F]
[Field K]
[Algebra F K]
[Field L]
[Algebra F L]
[Finite L]
:
Nonempty (K →ₐ[F] L) ↔ Module.finrank F K ∣ Module.finrank F L