a polynomial splits
iff it is zero or all of its irreducible factors have degree
1
Equations
- polynomial.splits i f = (f = 0 ∨ ∀ {g : polynomial β}, irreducible g → g ∣ polynomial.map i f → g.degree = 1)
Pick a root of a polynomial that splits.
Equations
- polynomial.root_of_splits i hf hfd = classical.some _
If p
is the minimal polynomial of a
over F
then F[a] ≃ₐ[F] F[x]/(p)
Equations
- alg_equiv.adjoin_singleton_equiv_adjoin_root_minimal_polynomial F x hx = (alg_equiv.of_bijective ((adjoin_root.alg_hom (minimal_polynomial hx) x _).cod_restrict (algebra.adjoin F {x}) _) _).symm
If K
and L
are field extensions of F
and we have s : finset K
such that
the minimal polynomial of each x ∈ s
splits in L
then algebra.adjoin F s
embeds in L
.
Non-computably choose an irreducible factor from a polynomial.
Equations
- f.factor = dite (∃ (g : polynomial α), irreducible g ∧ g ∣ f) (λ (H : ∃ (g : polynomial α), irreducible g ∧ g ∣ f), classical.some H) (λ (H : ¬∃ (g : polynomial α), irreducible g ∧ g ∣ f), polynomial.X)
Equations
- _ = _
Divide a polynomial f by X - C r where r is a root of f in a bigger field extension.
Equations
Auxiliary construction to a splitting field of a polynomial. Uses induction on the degree.
Equations
- polynomial.splitting_field_aux n = n.rec_on (λ (α : Type u) (_x : field α) (_x_1 : polynomial α) (_x : _x_1.nat_degree = 0), α) (λ (n : ℕ) (ih : Π {α : Type u} [_inst_4 : field α] (f : polynomial α), f.nat_degree = n → Type u) (α : Type u) (_x : field α) (f : polynomial α) (hf : f.nat_degree = n.succ), ih f.remove_factor _)
Equations
- polynomial.splitting_field_aux.field n = n.rec_on (λ (α : Type u) (_x : field α) (_x_1 : polynomial α) (_x_1 : _x_1.nat_degree = 0), _x) (λ (n : ℕ) (ih : Π {α : Type u} [_inst_4 : field α] {f : polynomial α} (hfn : f.nat_degree = n), field (polynomial.splitting_field_aux n f hfn)) (α : Type u) (_x : field α) (f : polynomial α) (hf : f.nat_degree = n.succ), ih _)
Equations
- polynomial.splitting_field_aux.inhabited hfn = {default := 37}
Equations
- polynomial.splitting_field_aux.algebra n = n.rec_on (λ (α : Type u) (_x : field α) (_x_1 : polynomial α) (_x_1 : _x_1.nat_degree = 0), algebra.id α) (λ (n : ℕ) (ih : Π {α : Type u} [_inst_4 : field α] {f : polynomial α} (hfn : f.nat_degree = n), algebra α (polynomial.splitting_field_aux n f hfn)) (α : Type u) (_x : field α) (f : polynomial α) (hfn : f.nat_degree = n.succ), algebra.comap.algebra α (adjoin_root f.factor) (polynomial.splitting_field_aux n f.remove_factor _))
Equations
Equations
Equations
Equations
- _ = _
Equations
- _ = _
A splitting field of a polynomial.
Equations
Equations
Embeds the splitting field into any other field that splits the polynomial.
- splits : polynomial.splits (algebra_map α β) f
- adjoin_roots : algebra.adjoin α ↑((polynomial.map (algebra_map α β) f).roots) = ⊤
Typeclass characterising splitting fields.
Equations
- _ = _
Equations
- _ = _
Splitting field of f
embeds into any field that splits f
.
Equations
- polynomial.is_splitting_field.lift β f hf = dite (f = 0) (λ (hf0 : f = 0), (algebra.of_id α γ).comp (↑(algebra.bot_equiv α β).comp (_.mpr algebra.to_top))) (λ (hf0 : ¬f = 0), (_.mpr (classical.choice _)).comp algebra.to_top)
Any splitting field is isomorphic to splitting_field f
.