Zulip Chat Archive

Stream: Is there code for X?

Topic: Characterization of primitive elements in field extensions


Xavier Roblot (Nov 20 2023 at 14:13):

I could not find the following characterisations of primitive elements in finite extension of fields:

import Mathlib.FieldTheory.PrimitiveElement

open FiniteDimensional IntermediateField

variable {F E : Type*} [Field F] [Field E] [Algebra F E] [FiniteDimensional F E]

theorem aux1 (α : E) : Fα =   (minpoly F α).natDegree = finrank F E := by
  refine fun h => ?_, fun h => ?_
  · rw [ adjoin.finrank (isIntegral_of_finite F α), h,  finrank_top F E]
    rfl
  · refine IntermediateField.eq_of_le_of_finrank_eq le_top ?_
    rw [adjoin.finrank (isIntegral_of_finite F α), h,  finrank_top]
    rfl

variable [IsSeparable F E] {A : Type*} [Field A] [IsAlgClosed A] [Algebra F A]

theorem aux2 (α : E) : Fα =    φ ψ : E →ₐ[F] A, φ α = ψ α  φ = ψ := by
  classical
  rw [aux1,  Polynomial.card_rootSet_eq_natDegree (K := A) (IsSeparable.separable F α)
    (IsAlgClosed.splits_codomain (minpoly F α)),  AlgHom.card F E A,  Set.toFinset_card]
  simp_rw [ Algebra.IsAlgebraic.range_eval_eq_rootSet_minpoly A
    (Algebra.isAlgebraic_of_finite F E) α]
  rw [Fintype.card, Set.toFinset_range (fun f : E →ₐ[F] A  f α), Finset.card_image_iff,
    Finset.coe_univ,  Set.injective_iff_injOn_univ]
  rfl

Anne Baanen (Nov 21 2023 at 09:34):

I think the forward direction of both exists for docs#PowerBasis, up to heavy rephrasing, and aux1 might exist in both directions. In any case, there would be sufficient work to connect this to existing machinery that I see the value in adding this to Mathlib.

Riccardo Brasca (Nov 21 2023 at 12:18):

We have docs#IntermediateField.powerBasisAux that looks close

Riccardo Brasca (Nov 21 2023 at 12:19):

I thought we had something with the explicit assumption that the degree of the minpoly is the dimension, but I don't find it. Anyway it seems a good addition.

Xavier Roblot (Nov 24 2023 at 12:36):

#8609


Last updated: Dec 20 2023 at 11:08 UTC