File: Mathlib/FieldTheory/Finite/GaloisField.lean

full_name: FiniteField.isSplittingField_sub
code: instance FiniteField.isSplittingField_sub (K F : Type*) [Field K] [Fintype K]
    [Field F] [Algebra F K] : IsSplittingField F K (X ^ Fintype.card K - X) 
goal: Polynomial.IsSplittingField F K (Polynomial.X ^ Fintype.card K - Polynomial.X)

full_name: galois_poly_separable
code: theorem galois_poly_separable {K : Type*} [Field K] (p q : ℕ) [CharP K p] (h : p ∣ q) :
    Separable (X ^ q - X : K[X]) 
goal: (Polynomial.X ^ q - Polynomial.X).Separable

full_name: GaloisField
code: /-- A finite field with `p ^ n` elements.
Every field with the same cardinality is (non-canonically)
isomorphic to this field. -/
def GaloisField 
goal: Type

full_name: instFieldGaloisField
code: instance : Field (GaloisField p n) 
goal: Field (GaloisField p n)

full_name: instInhabitedGaloisFieldOfNatNat
code: instance : Inhabited (@GaloisField 2 (Fact.mk Nat.prime_two) 1) 
goal: Inhabited (GaloisField 2 1)

full_name: GaloisField.instAlgebraZMod
code: instance : Algebra (ZMod p) (GaloisField p n) 
goal: Algebra (ZMod p) (GaloisField p n)

full_name: GaloisField.instIsSplittingFieldZModHSubPolynomialHPowNatX
code: instance : IsSplittingField (ZMod p) (GaloisField p n) (X ^ p ^ n - X) 
goal: Polynomial.IsSplittingField (ZMod p) (GaloisField p n) (Polynomial.X ^ p ^ n - Polynomial.X)

full_name: GaloisField.instCharP
code: instance : CharP (GaloisField p n) p 
goal: CharP (GaloisField p n) p

full_name: GaloisField.instFiniteDimensionalZMod
code: instance : FiniteDimensional (ZMod p) (GaloisField p n) 
goal: FiniteDimensional (ZMod p) (GaloisField p n)

full_name: GaloisField.instFintype
code: instance : Fintype (GaloisField p n) 
goal: Fintype (GaloisField p n)

full_name: GaloisField.finrank
code: theorem finrank {n} (h : n ≠ 0) : FiniteDimensional.finrank (ZMod p) (GaloisField p n) = n 
goal: FiniteDimensional.finrank (ZMod p) (GaloisField p n) = n

full_name: GaloisField.card
code: theorem card (h : n ≠ 0) : Fintype.card (GaloisField p n) = p ^ n 
goal: Fintype.card (GaloisField p n) = p ^ n

full_name: GaloisField.splits_zmod_X_pow_sub_X
code: theorem splits_zmod_X_pow_sub_X : Splits (RingHom.id (ZMod p)) (X ^ p - X) 
goal: Polynomial.Splits (RingHom.id (ZMod p)) (Polynomial.X ^ p - Polynomial.X)

full_name: GaloisField.equivZmodP
code: /-- A Galois field with exponent 1 is equivalent to `ZMod` -/
def equivZmodP : GaloisField p 1 ≃ₐ[ZMod p] ZMod p 
goal: GaloisField p 1 ≃ₐ[ZMod p] ZMod p

full_name: GaloisField.splits_X_pow_card_sub_X
code: theorem splits_X_pow_card_sub_X : Splits (algebraMap (ZMod p) K) (X ^ Fintype.card K - X) 
goal: Polynomial.Splits (algebraMap (ZMod p) K) (Polynomial.X ^ Fintype.card K - Polynomial.X)

full_name: GaloisField.isSplittingField_of_card_eq
code: theorem isSplittingField_of_card_eq (h : Fintype.card K = p ^ n) :
    IsSplittingField (ZMod p) K (X ^ p ^ n - X) 
goal: Polynomial.IsSplittingField (ZMod p) K (Polynomial.X ^ p ^ n - Polynomial.X)

full_name: GaloisField.instIsGaloisOfFinite
code: instance (priority := 100) {K K' : Type*} [Field K] [Field K'] [Finite K'] [Algebra K K'] :
    IsGalois K K' 
goal: IsGalois K K'

full_name: GaloisField.algEquivGaloisField
code: /-- Any finite field is (possibly non canonically) isomorphic to some Galois field. -/
def algEquivGaloisField (h : Fintype.card K = p ^ n) : K ≃ₐ[ZMod p] GaloisField p n 
goal: K ≃ₐ[ZMod p] GaloisField p n

full_name: FiniteField.algEquivOfCardEq
code: /-- Uniqueness of finite fields:
  Any two finite fields of the same cardinality are (possibly non canonically) isomorphic-/
def algEquivOfCardEq (p : ℕ) [h_prime : Fact p.Prime] [Algebra (ZMod p) K] [Algebra (ZMod p) K']
    (hKK' : Fintype.card K = Fintype.card K') : K ≃ₐ[ZMod p] K' 
goal: K ≃ₐ[ZMod p] K'

full_name: FiniteField.ringEquivOfCardEq
code: /-- Uniqueness of finite fields:
  Any two finite fields of the same cardinality are (possibly non canonically) isomorphic-/
def ringEquivOfCardEq (hKK' : Fintype.card K = Fintype.card K') : K ≃+* K' 
goal: K ≃+* K'