# mathlibdocumentation

field_theory.primitive_element

# Primitive Element Theorem

In this file we prove the primitive element theorem.

## Main results

• exists_primitive_element: a finite separable extension E / F has a primitive element, i.e. there is an α : E such that F⟮α⟯ = (⊤ : subalgebra F E).

## Implementation notes

In declaration names, primitive_element abbreviates adjoin_simple_eq_top: it stands for the statement F⟮α⟯ = (⊤ : subalgebra F E). We did not add an extra declaration is_primitive_element F α := F⟮α⟯ = (⊤ : subalgebra F E) because this requires more unfolding without much obvious benefit.

## Tags

### Primitive element theorem for finite fields

theorem field.exists_primitive_element_of_fintype_top (F : Type u_1) [field F] (E : Type u_2) [field E] [ E] [fintype E] :
∃ (α : E), Fα =

Primitive element theorem assuming E is finite.

theorem field.exists_primitive_element_of_fintype_bot (F : Type u_1) [field F] (E : Type u_2) [field E] [ E] [fintype F] [ E] :
∃ (α : E), Fα =

Primitive element theorem for finite dimensional extension of a finite field.

### Primitive element theorem for infinite fields

theorem field.primitive_element_inf_aux_exists_c {F : Type u_1} [field F] [infinite F] {E : Type u_2} [field E] (ϕ : F →+* E) (α β : E) (f g : polynomial F) :
∃ (c : F), ∀ (α' : E), α' f).roots∀ (β' : E), β' g).roots-(α' - α) / (β' - β) ϕ c

theorem field.primitive_element_inf_aux {F : Type u_1} [field F] [infinite F] {E : Type u_2} [field E] (α β : E) [ E] (F_sep : E) :
∃ (γ : E), Fα, β = Fγ

theorem field.exists_primitive_element {F : Type u_1} [field F] {E : Type u_2} [field E] [ E] [ E] (F_sep : E) :
∃ (α : E), Fα =

Primitive element theorem: a finite separable field extension E of F has a primitive element, i.e. there is an α ∈ E such that F⟮α⟯ = (⊤ : subalgebra F E).