Loogle!
Result
Found 329 declarations mentioning Polynomial.Splits. Of these, only the first 200 are shown.
- Polynomial.Splits π Mathlib.Algebra.Polynomial.Factors
{R : Type u_1} [Semiring R] (f : Polynomial R) : Prop - Polynomial.Splits.X π Mathlib.Algebra.Polynomial.Factors
{R : Type u_1} [Semiring R] : Polynomial.X.Splits - Polynomial.Splits.one π Mathlib.Algebra.Polynomial.Factors
{R : Type u_1} [Semiring R] : Polynomial.Splits 1 - Polynomial.Splits.zero π Mathlib.Algebra.Polynomial.Factors
{R : Type u_1} [Semiring R] : Polynomial.Splits 0 - Polynomial.splits_of_natDegree_eq_zero π Mathlib.Algebra.Polynomial.Factors
{R : Type u_1} [Semiring R] {f : Polynomial R} (hf : f.natDegree = 0) : f.Splits - Polynomial.splits_of_natDegree_le_one_of_monic π Mathlib.Algebra.Polynomial.Factors
{R : Type u_1} [Semiring R] {f : Polynomial R} (hf : f.natDegree β€ 1) (h : f.Monic) : f.Splits - Polynomial.Splits.of_natDegree_eq_one π Mathlib.Algebra.Polynomial.Factors
{R : Type u_1} [DivisionSemiring R] {f : Polynomial R} (hf : f.natDegree = 1) : f.Splits - Polynomial.Splits.of_natDegree_le_one π Mathlib.Algebra.Polynomial.Factors
{R : Type u_1} [DivisionSemiring R] {f : Polynomial R} (hf : f.natDegree β€ 1) : f.Splits - Polynomial.Splits.neg π Mathlib.Algebra.Polynomial.Factors
{R : Type u_1} [Ring R] {f : Polynomial R} (hf : f.Splits) : (-f).Splits - Polynomial.splits_neg_iff π Mathlib.Algebra.Polynomial.Factors
{R : Type u_1} [Ring R] {f : Polynomial R} : (-f).Splits β f.Splits - Polynomial.Splits.map π Mathlib.Algebra.Polynomial.Factors
{R : Type u_1} [Semiring R] {f : Polynomial R} (hf : f.Splits) {S : Type u_2} [Semiring S] (i : R β+* S) : (Polynomial.map i f).Splits - Polynomial.Splits.of_degree_eq_one π Mathlib.Algebra.Polynomial.Factors
{R : Type u_1} [DivisionSemiring R] {f : Polynomial R} (hf : f.degree = 1) : f.Splits - Polynomial.splits_of_degree_le_zero π Mathlib.Algebra.Polynomial.Factors
{R : Type u_1} [Semiring R] {f : Polynomial R} (hf : f.degree β€ 0) : f.Splits - Polynomial.splits_of_degree_le_one_of_monic π Mathlib.Algebra.Polynomial.Factors
{R : Type u_1} [Semiring R] {f : Polynomial R} (hf : f.degree β€ 1) (h : f.Monic) : f.Splits - Polynomial.Splits.X_pow π Mathlib.Algebra.Polynomial.Factors
{R : Type u_1} [Semiring R] (n : β) : (Polynomial.X ^ n).Splits - Polynomial.Splits.comp_neg_X π Mathlib.Algebra.Polynomial.Factors
{R : Type u_1} [Ring R] {f : Polynomial R} (hf : f.Splits) : (f.comp (-Polynomial.X)).Splits - Polynomial.Splits.mul π Mathlib.Algebra.Polynomial.Factors
{R : Type u_1} [Semiring R] {f g : Polynomial R} (hf : f.Splits) (hg : g.Splits) : (f * g).Splits - Polynomial.Splits.of_degree_le_one π Mathlib.Algebra.Polynomial.Factors
{R : Type u_1} [DivisionSemiring R] {f : Polynomial R} (hf : f.degree β€ 1) : f.Splits - Polynomial.rootOfSplits π Mathlib.Algebra.Polynomial.Factors
{R : Type u_1} [CommRing R] {f : Polynomial R} (hf : f.Splits) (hfd : f.degree β 0) : R - Polynomial.Splits.listProd π Mathlib.Algebra.Polynomial.Factors
{R : Type u_1} [Semiring R] {l : List (Polynomial R)} (h : β f β l, f.Splits) : l.prod.Splits - Polynomial.Splits.natDegree_eq_card_roots π Mathlib.Algebra.Polynomial.Factors
{R : Type u_1} [CommRing R] {f : Polynomial R} [IsDomain R] (hf : f.Splits) : f.natDegree = f.roots.card - Polynomial.splits_iff_card_roots π Mathlib.Algebra.Polynomial.Factors
{R : Type u_1} [CommRing R] {f : Polynomial R} [IsDomain R] : f.Splits β f.roots.card = f.natDegree - Polynomial.Splits.pow π Mathlib.Algebra.Polynomial.Factors
{R : Type u_1} [Semiring R] {f : Polynomial R} (hf : f.Splits) (n : β) : (f ^ n).Splits - IsUnit.splits π Mathlib.Algebra.Polynomial.Factors
{R : Type u_1} [Semiring R] [NoZeroDivisors R] {f : Polynomial R} (hf : IsUnit f) : f.Splits - Polynomial.splits_of_isUnit π Mathlib.Algebra.Polynomial.Factors
{R : Type u_1} [Semiring R] [NoZeroDivisors R] {f : Polynomial R} (hf : IsUnit f) : f.Splits - Polynomial.splits_of_natDegree_le_one_of_invertible π Mathlib.Algebra.Polynomial.Factors
{R : Type u_1} [Semiring R] {f : Polynomial R} (hf : f.natDegree β€ 1) (h : Invertible f.leadingCoeff) : f.Splits - Polynomial.Splits.C π Mathlib.Algebra.Polynomial.Factors
{R : Type u_1} [Semiring R] (a : R) : (Polynomial.C a).Splits - Polynomial.Splits.comp_of_natDegree_le_one_of_monic π Mathlib.Algebra.Polynomial.Factors
{R : Type u_1} [CommSemiring R] {f g : Polynomial R} (hf : f.Splits) (hg : g.natDegree β€ 1) (h : g.Monic) : (f.comp g).Splits - Polynomial.Splits.natDegree_le_one_of_irreducible π Mathlib.Algebra.Polynomial.Factors
{R : Type u_1} [CommSemiring R] {f : Polynomial R} (hf : f.Splits) (h : Irreducible f) : f.natDegree β€ 1 - Polynomial.Splits.prod π Mathlib.Algebra.Polynomial.Factors
{R : Type u_1} [CommSemiring R] {ΞΉ : Type u_2} {f : ΞΉ β Polynomial R} {s : Finset ΞΉ} (h : β i β s, (f i).Splits) : (β i β s, f i).Splits - Polynomial.splits_of_degree_le_one_of_invertible π Mathlib.Algebra.Polynomial.Factors
{R : Type u_1} [Semiring R] {f : Polynomial R} (hf : f.degree β€ 1) (h : Invertible f.leadingCoeff) : f.Splits - Polynomial.Splits.roots_ne_zero π Mathlib.Algebra.Polynomial.Factors
{R : Type u_1} [CommRing R] {f : Polynomial R} [IsDomain R] (hf : f.Splits) (hf0 : f.natDegree β 0) : f.roots β 0 - Polynomial.Splits.multisetProd π Mathlib.Algebra.Polynomial.Factors
{R : Type u_1} [CommSemiring R] {m : Multiset (Polynomial R)} (hm : β f β m, f.Splits) : m.prod.Splits - Polynomial.Splits.comp_of_degree_le_one_of_monic π Mathlib.Algebra.Polynomial.Factors
{R : Type u_1} [CommSemiring R] {f g : Polynomial R} (hf : f.Splits) (hg : g.degree β€ 1) (h : g.Monic) : (f.comp g).Splits - Polynomial.Splits.degree_le_one_of_irreducible π Mathlib.Algebra.Polynomial.Factors
{R : Type u_1} [CommSemiring R] {f : Polynomial R} (hf : f.Splits) (h : Irreducible f) : f.degree β€ 1 - Polynomial.Splits.X_add_C π Mathlib.Algebra.Polynomial.Factors
{R : Type u_1} [Semiring R] (a : R) : (Polynomial.X + Polynomial.C a).Splits - Polynomial.Splits.of_algHom π Mathlib.Algebra.Polynomial.Factors
{R : Type u_1} [CommSemiring R] {f : Polynomial R} {A : Type u_2} {B : Type u_3} [Semiring A] [Semiring B] [Algebra R A] [Algebra R B] (hf : (Polynomial.map (algebraMap R A) f).Splits) (e : A ββ[R] B) : (Polynomial.map (algebraMap R B) f).Splits - Polynomial.splits_iff_comp_splits_of_natDegree_eq_one π Mathlib.Algebra.Polynomial.Factors
{R : Type u_1} [Field R] {f g : Polynomial R} (hg : g.natDegree = 1) : f.Splits β (f.comp g).Splits - Polynomial.Splits.comp_of_natDegree_le_one π Mathlib.Algebra.Polynomial.Factors
{R : Type u_1} [Field R] {f g : Polynomial R} (hf : f.Splits) (hg : g.natDegree β€ 1) : (f.comp g).Splits - Polynomial.Splits.C_mul π Mathlib.Algebra.Polynomial.Factors
{R : Type u_1} [Semiring R] {f : Polynomial R} (hf : f.Splits) (a : R) : (Polynomial.C a * f).Splits - Polynomial.Splits.exists_eval_eq_zero π Mathlib.Algebra.Polynomial.Factors
{R : Type u_1} [CommRing R] {f : Polynomial R} (hf : f.Splits) (hf0 : f.degree β 0) : β a, Polynomial.eval a f = 0 - Polynomial.eval_rootOfSplits π Mathlib.Algebra.Polynomial.Factors
{R : Type u_1} [CommRing R] {f : Polynomial R} (hf : f.Splits) (hfd : f.degree β 0) : Polynomial.eval (Polynomial.rootOfSplits hf hfd) f = 0 - Polynomial.splits_iff_comp_splits_of_degree_eq_one π Mathlib.Algebra.Polynomial.Factors
{R : Type u_1} [Field R] {f g : Polynomial R} (hg : g.degree = 1) : f.Splits β (f.comp g).Splits - Polynomial.Splits.comp_of_natDegree_le_one_of_invertible π Mathlib.Algebra.Polynomial.Factors
{R : Type u_1} [CommSemiring R] {f g : Polynomial R} (hf : f.Splits) (hg : g.natDegree β€ 1) (h : Invertible g.leadingCoeff) : (f.comp g).Splits - Polynomial.Splits.of_natDegree_eq_two π Mathlib.Algebra.Polynomial.Factors
{R : Type u_1} [Field R] {f : Polynomial R} {x : R} (hβ : f.natDegree = 2) (hβ : Polynomial.eval x f = 0) : f.Splits - Polynomial.Splits.eval_eq_prod_roots_of_monic π Mathlib.Algebra.Polynomial.Factors
{R : Type u_1} [CommRing R] {f : Polynomial R} [IsDomain R] (hf : f.Splits) (hm : f.Monic) (x : R) : Polynomial.eval x f = (Multiset.map (fun x_1 => x - x_1) f.roots).prod - Polynomial.Splits.nextCoeff_eq_neg_sum_roots_of_monic π Mathlib.Algebra.Polynomial.Factors
{R : Type u_1} [CommRing R] {f : Polynomial R} [IsDomain R] (hf : f.Splits) (hm : f.Monic) : f.nextCoeff = -f.roots.sum - Polynomial.Splits.natDegree_eq_one_of_irreducible π Mathlib.Algebra.Polynomial.Factors
{R : Type u_1} [Field R] {f : Polynomial R} (hf : f.Splits) (h : Irreducible f) : f.natDegree = 1 - Polynomial.Splits.comp_of_degree_le_one π Mathlib.Algebra.Polynomial.Factors
{R : Type u_1} [Field R] {f g : Polynomial R} (hf : f.Splits) (hg : g.degree β€ 1) : (f.comp g).Splits - Polynomial.Splits.degree_eq_card_roots π Mathlib.Algebra.Polynomial.Factors
{R : Type u_1} [CommRing R] {f : Polynomial R} [IsDomain R] (hf : f.Splits) (hf0 : f β 0) : f.degree = βf.roots.card - Polynomial.Splits.degree_eq_one_of_irreducible π Mathlib.Algebra.Polynomial.Factors
{R : Type u_1} [Field R] {f : Polynomial R} (hf : f.Splits) (h : Irreducible f) : f.degree = 1 - Polynomial.Splits.comp_of_degree_le_one_of_invertible π Mathlib.Algebra.Polynomial.Factors
{R : Type u_1} [CommSemiring R] {f g : Polynomial R} (hf : f.Splits) (hg : g.degree β€ 1) (h : Invertible g.leadingCoeff) : (f.comp g).Splits - Polynomial.Splits.of_isScalarTower π Mathlib.Algebra.Polynomial.Factors
{R : Type u_1} [CommSemiring R] {f : Polynomial R} {A : Type u_2} (B : Type u_3) [CommSemiring A] [Semiring B] [Algebra R A] [Algebra R B] [Algebra A B] [IsScalarTower R A B] (hf : (Polynomial.map (algebraMap R A) f).Splits) : (Polynomial.map (algebraMap R B) f).Splits - Polynomial.Splits.C_mul_X_pow π Mathlib.Algebra.Polynomial.Factors
{R : Type u_1} [Semiring R] (a : R) (n : β) : (Polynomial.C a * Polynomial.X ^ n).Splits - Polynomial.Splits.eval_eq_prod_roots π Mathlib.Algebra.Polynomial.Factors
{R : Type u_1} [CommRing R] {f : Polynomial R} [IsDomain R] (hf : f.Splits) (x : R) : Polynomial.eval x f = f.leadingCoeff * (Multiset.map (fun x_1 => x - x_1) f.roots).prod - Polynomial.Splits.nextCoeff_eq_neg_sum_roots_mul_leadingCoeff π Mathlib.Algebra.Polynomial.Factors
{R : Type u_1} [CommRing R] {f : Polynomial R} [IsDomain R] (hf : f.Splits) : f.nextCoeff = -f.leadingCoeff * f.roots.sum - Polynomial.Splits.of_degree_eq_two π Mathlib.Algebra.Polynomial.Factors
{R : Type u_1} [Field R] {f : Polynomial R} {x : R} (hβ : f.degree = 2) (hβ : Polynomial.eval x f = 0) : f.Splits - Polynomial.Splits.X_sub_C π Mathlib.Algebra.Polynomial.Factors
{R : Type u_1} [Ring R] (a : R) : (Polynomial.X - Polynomial.C a).Splits - Polynomial.map_sub_sprod_roots_eq_prod_map_eval π Mathlib.Algebra.Polynomial.Factors
{R : Type u_1} [CommRing R] [IsDomain R] (s : Multiset R) (g : Polynomial R) (hg : g.Monic) (hg' : g.Splits) : (Multiset.map (fun ij => ij.1 - ij.2) (s ΓΛ’ g.roots)).prod = (Multiset.map (fun x => Polynomial.eval x g) s).prod - Polynomial.Splits.monomial π Mathlib.Algebra.Polynomial.Factors
{R : Type u_1} [Semiring R] (n : β) (a : R) : ((Polynomial.monomial n) a).Splits - Polynomial.splits_prod_iff π Mathlib.Algebra.Polynomial.Factors
{R : Type u_1} [CommRing R] [IsDomain R] {ΞΉ : Type u_2} {f : ΞΉ β Polynomial R} {s : Finset ΞΉ} (hf : β i β s, f i β 0) : (β x β s, f x).Splits β β x β s, (f x).Splits - Polynomial.Splits.comp_X_add_C π Mathlib.Algebra.Polynomial.Factors
{R : Type u_1} [CommSemiring R] {f : Polynomial R} (hf : f.Splits) (a : R) : (f.comp (Polynomial.X + Polynomial.C a)).Splits - Polynomial.Splits.map_roots π Mathlib.Algebra.Polynomial.Factors
{R : Type u_1} [CommRing R] {f : Polynomial R} [IsDomain R] {S : Type u_2} [CommRing S] [IsDomain S] [IsSimpleRing R] (hf : f.Splits) (i : R β+* S) : (Polynomial.map i f).roots = Multiset.map (βi) f.roots - Polynomial.Splits.of_splits_map π Mathlib.Algebra.Polynomial.Factors
{R : Type u_1} [CommRing R] {f : Polynomial R} {S : Type u_2} [CommRing S] [IsDomain S] [IsSimpleRing R] (i : R β+* S) (hf : (Polynomial.map i f).Splits) (hi : β a β (Polynomial.map i f).roots, a β i.range) : f.Splits - Polynomial.Splits.coeff_zero_eq_prod_roots_of_monic π Mathlib.Algebra.Polynomial.Factors
{R : Type u_1} [CommRing R] {f : Polynomial R} [IsDomain R] (hf : f.Splits) (hm : f.Monic) : f.coeff 0 = (-1) ^ f.natDegree * f.roots.prod - Polynomial.Splits.of_dvd π Mathlib.Algebra.Polynomial.Factors
{R : Type u_1} [CommRing R] {f g : Polynomial R} [IsDomain R] (hg : g.Splits) (hgβ : g β 0) (hfg : f β£ g) : f.Splits - Polynomial.Splits.splits_of_dvd π Mathlib.Algebra.Polynomial.Factors
{R : Type u_1} [CommRing R] {f g : Polynomial R} [IsDomain R] (hg : g.Splits) (hgβ : g β 0) (hfg : f β£ g) : f.Splits - Polynomial.Splits.mem_range_of_isRoot π Mathlib.Algebra.Polynomial.Factors
{R : Type u_1} [CommRing R] {f : Polynomial R} [IsDomain R] {S : Type u_2} [CommRing S] [IsDomain S] [IsSimpleRing R] (hf : f.Splits) (hf0 : f β 0) {i : R β+* S} {x : S} (hx : (Polynomial.map i f).IsRoot x) : x β i.range - Polynomial.Splits.coeff_zero_eq_leadingCoeff_mul_prod_roots π Mathlib.Algebra.Polynomial.Factors
{R : Type u_1} [CommRing R] {f : Polynomial R} [IsDomain R] (hf : f.Splits) : f.coeff 0 = (-1) ^ f.natDegree * f.leadingCoeff * f.roots.prod - Polynomial.splits_mul_iff π Mathlib.Algebra.Polynomial.Factors
{R : Type u_1} [CommRing R] {f g : Polynomial R} [IsDomain R] (hfβ : f β 0) (hgβ : g β 0) : (f * g).Splits β f.Splits β§ g.Splits - Polynomial.Splits.comp_X_sub_C π Mathlib.Algebra.Polynomial.Factors
{R : Type u_1} [CommRing R] {f : Polynomial R} (hf : f.Splits) (a : R) : (f.comp (Polynomial.X - Polynomial.C a)).Splits - Polynomial.Splits.image_rootSet π Mathlib.Algebra.Polynomial.Factors
{R : Type u_1} [CommRing R] {f : Polynomial R} {A : Type u_2} {B : Type u_3} [CommRing A] [CommRing B] [IsDomain A] [IsDomain B] [IsSimpleRing A] [Algebra R A] [Algebra R B] (hf : (Polynomial.map (algebraMap R A) f).Splits) (g : A ββ[R] B) : βg '' f.rootSet A = f.rootSet B - Polynomial.Splits.splits π Mathlib.Algebra.Polynomial.Factors
{R : Type u_1} [CommRing R] {f : Polynomial R} [IsDomain R] (hf : f.Splits) : f = 0 β¨ β {g : Polynomial R}, Irreducible g β g β£ f β g.degree β€ 1 - Polynomial.Splits.dvd_of_roots_le_roots π Mathlib.Algebra.Polynomial.Factors
{R : Type u_1} [Field R] {f g : Polynomial R} (hp : f.Splits) (hp0 : f β 0) (hq : f.roots β€ g.roots) : f β£ g - Polynomial.Splits.mem_lift_of_roots_mem_range π Mathlib.Algebra.Polynomial.Factors
{R : Type u_1} [CommRing R] {f : Polynomial R} [IsDomain R] (hf : f.Splits) (hm : f.Monic) {S : Type u_2} [Ring S] (i : S β+* R) (hr : β a β f.roots, a β i.range) : f β Polynomial.lifts i - Polynomial.splits_X_sub_C_mul_iff π Mathlib.Algebra.Polynomial.Factors
{R : Type u_1} [CommRing R] {f : Polynomial R} [IsDomain R] {a : R} : ((Polynomial.X - Polynomial.C a) * f).Splits β f.Splits - Polynomial.map_sub_roots_sprod_eq_prod_map_eval π Mathlib.Algebra.Polynomial.Factors
{R : Type u_1} [CommRing R] [IsDomain R] (s : Multiset R) (g : Polynomial R) (hg : g.Monic) (hg' : g.Splits) : (Multiset.map (fun ij => ij.1 - ij.2) (g.roots ΓΛ’ s)).prod = (-1) ^ (s.card * g.roots.card) * (Multiset.map (fun x => Polynomial.eval x g) s).prod - Polynomial.Splits.eq_prod_roots_of_monic π Mathlib.Algebra.Polynomial.Factors
{R : Type u_1} [CommRing R] {f : Polynomial R} [IsDomain R] (hf : f.Splits) (hm : f.Monic) : f = (Multiset.map (fun x => Polynomial.X - Polynomial.C x) f.roots).prod - Polynomial.splits_iff_splits π Mathlib.Algebra.Polynomial.Factors
{R : Type u_1} [Field R] {f : Polynomial R} : f.Splits β f = 0 β¨ β {g : Polynomial R}, Irreducible g β g β£ f β g.degree = 1 - Polynomial.Splits.dvd_iff_roots_le_roots π Mathlib.Algebra.Polynomial.Factors
{R : Type u_1} [Field R] {f g : Polynomial R} (hf : f.Splits) (hf0 : f β 0) (hg0 : g β 0) : f β£ g β f.roots β€ g.roots - Polynomial.Splits.aeval_eq_prod_aroots_of_monic π Mathlib.Algebra.Polynomial.Factors
{R : Type u_1} [CommRing R] {f : Polynomial R} {A : Type u_2} [CommRing A] [IsDomain A] [IsSimpleRing R] [Algebra R A] (hf : (Polynomial.map (algebraMap R A) f).Splits) (hm : f.Monic) (x : A) : (Polynomial.aeval x) f = (Multiset.map (fun x_1 => x - x_1) (f.aroots A)).prod - Polynomial.splits_iff_exists_multiset' π Mathlib.Algebra.Polynomial.Factors
{R : Type u_1} [CommSemiring R] {f : Polynomial R} : f.Splits β β m, f = Polynomial.C f.leadingCoeff * (Multiset.map (fun x => Polynomial.X + Polynomial.C x) m).prod - Polynomial.Splits.eq_1 π Mathlib.Algebra.Polynomial.Factors
{R : Type u_1} [Semiring R] (f : Polynomial R) : f.Splits = (f β Submonoid.closure ({x | β a, Polynomial.C a = x} βͺ {x | β a, Polynomial.X + Polynomial.C a = x})) - Polynomial.Splits.taylor π Mathlib.Algebra.Polynomial.Factors
{R : Type u_1} [CommSemiring R] {p : Polynomial R} (hp : p.Splits) (r : R) : ((Polynomial.taylor r) p).Splits - Polynomial.Splits.eq_X_sub_C_of_single_root π Mathlib.Algebra.Polynomial.Factors
{R : Type u_1} [CommRing R] {f : Polynomial R} [IsDomain R] (hf : f.Splits) {x : R} (hr : f.roots = {x}) : f = Polynomial.C f.leadingCoeff * (Polynomial.X - Polynomial.C x) - Polynomial.Splits.aeval_eq_prod_aroots π Mathlib.Algebra.Polynomial.Factors
{R : Type u_1} [CommRing R] {f : Polynomial R} {A : Type u_2} [CommRing A] [IsDomain A] [IsSimpleRing R] [Algebra R A] (hf : (Polynomial.map (algebraMap R A) f).Splits) (x : A) : (Polynomial.aeval x) f = (algebraMap R A) f.leadingCoeff * (Multiset.map (fun x_1 => x - x_1) (f.aroots A)).prod - Polynomial.splits_iff_exists_multiset π Mathlib.Algebra.Polynomial.Factors
{R : Type u_1} [CommRing R] {f : Polynomial R} : f.Splits β β m, f = Polynomial.C f.leadingCoeff * (Multiset.map (fun x => Polynomial.X - Polynomial.C x) m).prod - Polynomial.Splits.eq_prod_roots π Mathlib.Algebra.Polynomial.Factors
{R : Type u_1} [CommRing R] {f : Polynomial R} [IsDomain R] (hf : f.Splits) : f = Polynomial.C f.leadingCoeff * (Multiset.map (fun x => Polynomial.X - Polynomial.C x) f.roots).prod - Polynomial.Splits.eval_root_derivative π Mathlib.Algebra.Polynomial.Factors
{R : Type u_1} [CommRing R] {f : Polynomial R} [IsDomain R] [DecidableEq R] (hf : f.Splits) (hm : f.Monic) {x : R} (hx : x β f.roots) : Polynomial.eval x (Polynomial.derivative f) = (Multiset.map (fun x_1 => x - x_1) (f.roots.erase x)).prod - Polynomial.Splits.adjoin_rootSet_eq_range π Mathlib.Algebra.Polynomial.Factors
{R : Type u_1} [CommRing R] {f : Polynomial R} {A : Type u_2} {B : Type u_3} [CommRing A] [CommRing B] [IsDomain A] [IsDomain B] [IsSimpleRing A] [Algebra R A] [Algebra R B] (hf : (Polynomial.map (algebraMap R A) f).Splits) (g : A ββ[R] B) : Algebra.adjoin R (f.rootSet B) = g.range β Algebra.adjoin R (f.rootSet A) = β€ - Polynomial.Splits.eval_derivative π Mathlib.Algebra.Polynomial.Factors
{R : Type u_1} [CommRing R] {f : Polynomial R} [IsDomain R] [DecidableEq R] (hf : f.Splits) (x : R) : Polynomial.eval x (Polynomial.derivative f) = f.leadingCoeff * (Multiset.map (fun a => (Multiset.map (fun x_1 => x - x_1) (f.roots.erase a)).prod) f.roots).sum - Polynomial.Splits.eval_derivative_div_eval_of_ne_zero π Mathlib.Algebra.Polynomial.Factors
{R : Type u_1} [Field R] {f : Polynomial R} (hf : f.Splits) {x : R} (hx : Polynomial.eval x f β 0) : Polynomial.eval x (Polynomial.derivative f) / Polynomial.eval x f = (Multiset.map (fun z => 1 / (x - z)) f.roots).sum - Polynomial.Splits.eval_derivative_eq_eval_mul_sum π Mathlib.Algebra.Polynomial.Factors
{R : Type u_1} [Field R] {f : Polynomial R} (hf : f.Splits) {x : R} (hx : Polynomial.eval x f β 0) : Polynomial.eval x (Polynomial.derivative f) = Polynomial.eval x f * (Multiset.map (fun z => 1 / (x - z)) f.roots).sum - Polynomial.Splits.mem_subfield_of_isRoot π Mathlib.Algebra.Polynomial.Factors
{R : Type u_1} [Field R] (F : Subfield R) {f : Polynomial β₯F} (hf : f.Splits) (hf0 : f β 0) {x : R} (hx : (Polynomial.map F.subtype f).IsRoot x) : x β F - Polynomial.Factors.scaleRoots π Mathlib.RingTheory.Polynomial.ScaleRoots
{R : Type u_1} [CommSemiring R] {p : Polynomial R} (hp : p.Splits) (r : R) : (p.scaleRoots r).Splits - Polynomial.Splits.scaleRoots π Mathlib.RingTheory.Polynomial.ScaleRoots
{R : Type u_1} [CommSemiring R] {p : Polynomial R} (hp : p.Splits) (r : R) : (p.scaleRoots r).Splits - Polynomial.splits_X π Mathlib.Algebra.Polynomial.Splits
{R : Type u_1} [Semiring R] : Polynomial.X.Splits - Polynomial.splits_one π Mathlib.Algebra.Polynomial.Splits
{R : Type u_1} [Semiring R] : Polynomial.Splits 1 - Polynomial.splits_zero π Mathlib.Algebra.Polynomial.Splits
{R : Type u_1} [Semiring R] : Polynomial.Splits 0 - Polynomial.splits_of_natDegree_eq_one π Mathlib.Algebra.Polynomial.Splits
{R : Type u_1} [DivisionSemiring R] {f : Polynomial R} (hf : f.natDegree = 1) : f.Splits - Polynomial.splits_of_natDegree_le_one π Mathlib.Algebra.Polynomial.Splits
{R : Type u_1} [DivisionSemiring R] {f : Polynomial R} (hf : f.natDegree β€ 1) : f.Splits - Polynomial.splits_comp_of_splits π Mathlib.Algebra.Polynomial.Splits
{R : Type u_1} [Semiring R] {f : Polynomial R} (hf : f.Splits) {S : Type u_2} [Semiring S] (i : R β+* S) : (Polynomial.map i f).Splits - Polynomial.splits_of_splits_id π Mathlib.Algebra.Polynomial.Splits
{R : Type u_1} [Semiring R] {f : Polynomial R} (hf : f.Splits) {S : Type u_2} [Semiring S] (i : R β+* S) : (Polynomial.map i f).Splits - Polynomial.splits_of_degree_eq_one π Mathlib.Algebra.Polynomial.Splits
{R : Type u_1} [DivisionSemiring R] {f : Polynomial R} (hf : f.degree = 1) : f.Splits - Polynomial.splits_of_map_degree_eq_one π Mathlib.Algebra.Polynomial.Splits
{R : Type u_1} [DivisionSemiring R] {f : Polynomial R} (hf : f.degree = 1) : f.Splits - Polynomial.splits_X_pow π Mathlib.Algebra.Polynomial.Splits
{R : Type u_1} [Semiring R] (n : β) : (Polynomial.X ^ n).Splits - Polynomial.splits_mul π Mathlib.Algebra.Polynomial.Splits
{R : Type u_1} [Semiring R] {f g : Polynomial R} (hf : f.Splits) (hg : g.Splits) : (f * g).Splits - Polynomial.splits_of_degree_le_one π Mathlib.Algebra.Polynomial.Splits
{R : Type u_1} [DivisionSemiring R] {f : Polynomial R} (hf : f.degree β€ 1) : f.Splits - Polynomial.natDegree_eq_card_roots π Mathlib.Algebra.Polynomial.Splits
{R : Type u_1} [CommRing R] {f : Polynomial R} [IsDomain R] (hf : f.Splits) : f.natDegree = f.roots.card - Polynomial.natDegree_eq_card_roots' π Mathlib.Algebra.Polynomial.Splits
{R : Type u_1} [CommRing R] {f : Polynomial R} [IsDomain R] (hf : f.Splits) : f.natDegree = f.roots.card - Polynomial.rootOfSplits' π Mathlib.Algebra.Polynomial.Splits
{R : Type u_1} [CommRing R] {f : Polynomial R} (hf : f.Splits) (hfd : f.degree β 0) : R - Polynomial.splits_pow π Mathlib.Algebra.Polynomial.Splits
{R : Type u_1} [Semiring R] {f : Polynomial R} (hf : f.Splits) (n : β) : (f ^ n).Splits - Polynomial.splits_C π Mathlib.Algebra.Polynomial.Splits
{R : Type u_1} [Semiring R] (a : R) : (Polynomial.C a).Splits - Polynomial.splits_prod π Mathlib.Algebra.Polynomial.Splits
{R : Type u_1} [CommSemiring R] {ΞΉ : Type u_2} {f : ΞΉ β Polynomial R} {s : Finset ΞΉ} (h : β i β s, (f i).Splits) : (β i β s, f i).Splits - Polynomial.roots_ne_zero_of_splits π Mathlib.Algebra.Polynomial.Splits
{R : Type u_1} [CommRing R] {f : Polynomial R} [IsDomain R] (hf : f.Splits) (hf0 : f.natDegree β 0) : f.roots β 0 - Polynomial.roots_ne_zero_of_splits' π Mathlib.Algebra.Polynomial.Splits
{R : Type u_1} [CommRing R] {f : Polynomial R} [IsDomain R] (hf : f.Splits) (hf0 : f.natDegree β 0) : f.roots β 0 - Polynomial.splits_of_algHom π Mathlib.Algebra.Polynomial.Splits
{R : Type u_1} [CommSemiring R] {f : Polynomial R} {A : Type u_2} {B : Type u_3} [Semiring A] [Semiring B] [Algebra R A] [Algebra R B] (hf : (Polynomial.map (algebraMap R A) f).Splits) (e : A ββ[R] B) : (Polynomial.map (algebraMap R B) f).Splits - Polynomial.exists_root_of_splits π Mathlib.Algebra.Polynomial.Splits
{R : Type u_1} [CommRing R] {f : Polynomial R} (hf : f.Splits) (hf0 : f.degree β 0) : β a, Polynomial.eval a f = 0 - Polynomial.exists_root_of_splits' π Mathlib.Algebra.Polynomial.Splits
{R : Type u_1} [CommRing R] {f : Polynomial R} (hf : f.Splits) (hf0 : f.degree β 0) : β a, Polynomial.eval a f = 0 - Polynomial.map_rootOfSplits π Mathlib.Algebra.Polynomial.Splits
{R : Type u_1} [CommRing R] {f : Polynomial R} (hf : f.Splits) (hfd : f.degree β 0) : Polynomial.eval (Polynomial.rootOfSplits hf hfd) f = 0 - Polynomial.map_rootOfSplits' π Mathlib.Algebra.Polynomial.Splits
{R : Type u_1} [CommRing R] {f : Polynomial R} (hf : f.Splits) (hfd : f.degree β 0) : Polynomial.eval (Polynomial.rootOfSplits hf hfd) f = 0 - Polynomial.splits_of_natDegree_eq_two π Mathlib.Algebra.Polynomial.Splits
{R : Type u_1} [Field R] {f : Polynomial R} {x : R} (hβ : f.natDegree = 2) (hβ : Polynomial.eval x f = 0) : f.Splits - Polynomial.eval_eq_prod_roots_sub_of_monic_of_splits_id π Mathlib.Algebra.Polynomial.Splits
{R : Type u_1} [CommRing R] {f : Polynomial R} [IsDomain R] (hf : f.Splits) (hm : f.Monic) (x : R) : Polynomial.eval x f = (Multiset.map (fun x_1 => x - x_1) f.roots).prod - Polynomial.nextCoeff_eq_neg_sum_roots_of_monic_of_splits π Mathlib.Algebra.Polynomial.Splits
{R : Type u_1} [CommRing R] {f : Polynomial R} [IsDomain R] (hf : f.Splits) (hm : f.Monic) : f.nextCoeff = -f.roots.sum - Polynomial.sum_roots_eq_nextCoeff_of_monic_of_split π Mathlib.Algebra.Polynomial.Splits
{R : Type u_1} [CommRing R] {f : Polynomial R} [IsDomain R] (hf : f.Splits) (hm : f.Monic) : f.nextCoeff = -f.roots.sum - Polynomial.Splits.comp_of_map_degree_le_one π Mathlib.Algebra.Polynomial.Splits
{R : Type u_1} [Field R] {f g : Polynomial R} (hf : f.Splits) (hg : g.degree β€ 1) : (f.comp g).Splits - Polynomial.degree_eq_card_roots π Mathlib.Algebra.Polynomial.Splits
{R : Type u_1} [CommRing R] {f : Polynomial R} [IsDomain R] (hf : f.Splits) (hf0 : f β 0) : f.degree = βf.roots.card - Polynomial.degree_eq_card_roots' π Mathlib.Algebra.Polynomial.Splits
{R : Type u_1} [CommRing R] {f : Polynomial R} [IsDomain R] (hf : f.Splits) (hf0 : f β 0) : f.degree = βf.roots.card - Polynomial.degree_eq_one_of_irreducible_of_splits π Mathlib.Algebra.Polynomial.Splits
{R : Type u_1} [Field R] {f : Polynomial R} (hf : f.Splits) (h : Irreducible f) : f.degree = 1 - Polynomial.splits_of_isScalarTower π Mathlib.Algebra.Polynomial.Splits
{R : Type u_1} [CommSemiring R] {f : Polynomial R} {A : Type u_2} (B : Type u_3) [CommSemiring A] [Semiring B] [Algebra R A] [Algebra R B] [Algebra A B] [IsScalarTower R A B] (hf : (Polynomial.map (algebraMap R A) f).Splits) : (Polynomial.map (algebraMap R B) f).Splits - Polynomial.eval_eq_prod_roots_sub_of_splits_id π Mathlib.Algebra.Polynomial.Splits
{R : Type u_1} [CommRing R] {f : Polynomial R} [IsDomain R] (hf : f.Splits) (x : R) : Polynomial.eval x f = f.leadingCoeff * (Multiset.map (fun x_1 => x - x_1) f.roots).prod - Polynomial.nextCoeff_eq_neg_sum_roots_mul_leadingCoeff_of_splits π Mathlib.Algebra.Polynomial.Splits
{R : Type u_1} [CommRing R] {f : Polynomial R} [IsDomain R] (hf : f.Splits) : f.nextCoeff = -f.leadingCoeff * f.roots.sum - Polynomial.splits_of_degree_eq_two π Mathlib.Algebra.Polynomial.Splits
{R : Type u_1} [Field R] {f : Polynomial R} {x : R} (hβ : f.degree = 2) (hβ : Polynomial.eval x f = 0) : f.Splits - Polynomial.splits_X_sub_C π Mathlib.Algebra.Polynomial.Splits
{R : Type u_1} [Ring R] (a : R) : (Polynomial.X - Polynomial.C a).Splits - Polynomial.splits_id_iff_splits π Mathlib.Algebra.Polynomial.Splits
{K : Type v} {L : Type w} [CommRing K] [Field L] (i : K β+* L) {f : Polynomial K} : (Polynomial.map (RingHom.id L) (Polynomial.map i f)).Splits β (Polynomial.map i f).Splits - Polynomial.splits_of_splits_gcd_left π Mathlib.Algebra.Polynomial.Splits
{K : Type v} [Field K] [DecidableEq K] {f g : Polynomial K} (hf0 : f β 0) (hf : f.Splits) : (EuclideanDomain.gcd f g).Splits - Polynomial.splits_of_splits_gcd_right π Mathlib.Algebra.Polynomial.Splits
{K : Type v} [Field K] [DecidableEq K] {f g : Polynomial K} (hg0 : g β 0) (hg : g.Splits) : (EuclideanDomain.gcd f g).Splits - Polynomial.roots_map π Mathlib.Algebra.Polynomial.Splits
{R : Type u_1} [CommRing R] {f : Polynomial R} [IsDomain R] {S : Type u_2} [CommRing S] [IsDomain S] [IsSimpleRing R] (hf : f.Splits) (i : R β+* S) : (Polynomial.map i f).roots = Multiset.map (βi) f.roots - Polynomial.splits_id_of_splits π Mathlib.Algebra.Polynomial.Splits
{R : Type u_1} [CommRing R] {f : Polynomial R} {S : Type u_2} [CommRing S] [IsDomain S] [IsSimpleRing R] (i : R β+* S) (hf : (Polynomial.map i f).Splits) (hi : β a β (Polynomial.map i f).roots, a β i.range) : f.Splits - Polynomial.splits_of_comp π Mathlib.Algebra.Polynomial.Splits
{R : Type u_1} [CommRing R] {f : Polynomial R} {S : Type u_2} [CommRing S] [IsDomain S] [IsSimpleRing R] (i : R β+* S) (hf : (Polynomial.map i f).Splits) (hi : β a β (Polynomial.map i f).roots, a β i.range) : f.Splits - Polynomial.coeff_zero_eq_prod_roots_of_monic_of_splits π Mathlib.Algebra.Polynomial.Splits
{R : Type u_1} [CommRing R] {f : Polynomial R} [IsDomain R] (hf : f.Splits) (hm : f.Monic) : f.coeff 0 = (-1) ^ f.natDegree * f.roots.prod - Polynomial.prod_roots_eq_coeff_zero_of_monic_of_splits π Mathlib.Algebra.Polynomial.Splits
{R : Type u_1} [CommRing R] {f : Polynomial R} [IsDomain R] (hf : f.Splits) (hm : f.Monic) : f.coeff 0 = (-1) ^ f.natDegree * f.roots.prod - Polynomial.splits_of_splits_of_dvd π Mathlib.Algebra.Polynomial.Splits
{R : Type u_1} [CommRing R] {f g : Polynomial R} [IsDomain R] (hg : g.Splits) (hgβ : g β 0) (hfg : f β£ g) : f.Splits - Polynomial.splits_map_iff π Mathlib.Algebra.Polynomial.Splits
{F : Type u} {K : Type v} [CommRing K] [Field F] {L : Type u_2} [CommRing L] (i : K β+* L) (j : L β+* F) {f : Polynomial K} : (Polynomial.map j (Polynomial.map i f)).Splits β (Polynomial.map (j.comp i) f).Splits - Polynomial.coeff_zero_eq_leadingCoeff_mul_prod_roots_of_splits π Mathlib.Algebra.Polynomial.Splits
{R : Type u_1} [CommRing R] {f : Polynomial R} [IsDomain R] (hf : f.Splits) : f.coeff 0 = (-1) ^ f.natDegree * f.leadingCoeff * f.roots.prod - Polynomial.splits_of_splits_mul π Mathlib.Algebra.Polynomial.Splits
{R : Type u_1} [CommRing R] {f g : Polynomial R} [IsDomain R] (hfβ : f β 0) (hgβ : g β 0) : (f * g).Splits β f.Splits β§ g.Splits - Polynomial.splits_of_splits_mul' π Mathlib.Algebra.Polynomial.Splits
{R : Type u_1} [CommRing R] {f g : Polynomial R} [IsDomain R] (hfβ : f β 0) (hgβ : g β 0) : (f * g).Splits β f.Splits β§ g.Splits - Polynomial.image_rootSet π Mathlib.Algebra.Polynomial.Splits
{R : Type u_1} [CommRing R] {f : Polynomial R} {A : Type u_2} {B : Type u_3} [CommRing A] [CommRing B] [IsDomain A] [IsDomain B] [IsSimpleRing A] [Algebra R A] [Algebra R B] (hf : (Polynomial.map (algebraMap R A) f).Splits) (g : A ββ[R] B) : βg '' f.rootSet A = f.rootSet B - Polynomial.splits_of_map_eq_C π Mathlib.Algebra.Polynomial.Splits
{K : Type v} {L : Type w} [CommRing K] [Field L] (i : K β+* L) {f : Polynomial K} {a : L} (h : Polynomial.map i f = Polynomial.C a) : (Polynomial.map i f).Splits - Polynomial.mem_lift_of_splits_of_roots_mem_range π Mathlib.Algebra.Polynomial.Splits
{R : Type u_1} [CommRing R] {f : Polynomial R} [IsDomain R] (hf : f.Splits) (hm : f.Monic) {S : Type u_2} [Ring S] (i : S β+* R) (hr : β a β f.roots, a β i.range) : f β Polynomial.lifts i - Polynomial.eq_prod_roots_of_monic_of_splits_id π Mathlib.Algebra.Polynomial.Splits
{R : Type u_1} [CommRing R] {f : Polynomial R} [IsDomain R] (hf : f.Splits) (hm : f.Monic) : f = (Multiset.map (fun x => Polynomial.X - Polynomial.C x) f.roots).prod - Polynomial.splits_iff π Mathlib.Algebra.Polynomial.Splits
{R : Type u_1} [Field R] {f : Polynomial R} : f.Splits β f = 0 β¨ β {g : Polynomial R}, Irreducible g β g β£ f β g.degree = 1 - Polynomial.Splits.def π Mathlib.Algebra.Polynomial.Splits
{R : Type u_1} [Field R] {f : Polynomial R} : f.Splits β f = 0 β¨ β {g : Polynomial R}, Irreducible g β g β£ f β g.degree = 1 - Polynomial.aeval_eq_prod_aroots_sub_of_monic_of_splits π Mathlib.Algebra.Polynomial.Splits
{R : Type u_1} [CommRing R] {f : Polynomial R} {A : Type u_2} [CommRing A] [IsDomain A] [IsSimpleRing R] [Algebra R A] (hf : (Polynomial.map (algebraMap R A) f).Splits) (hm : f.Monic) (x : A) : (Polynomial.aeval x) f = (Multiset.map (fun x_1 => x - x_1) (f.aroots A)).prod - Polynomial.eq_X_sub_C_of_splits_of_single_root π Mathlib.Algebra.Polynomial.Splits
{R : Type u_1} [CommRing R] {f : Polynomial R} [IsDomain R] (hf : f.Splits) {x : R} (hr : f.roots = {x}) : f = Polynomial.C f.leadingCoeff * (Polynomial.X - Polynomial.C x) - Polynomial.aeval_eq_prod_aroots_sub_of_splits π Mathlib.Algebra.Polynomial.Splits
{R : Type u_1} [CommRing R] {f : Polynomial R} {A : Type u_2} [CommRing A] [IsDomain A] [IsSimpleRing R] [Algebra R A] (hf : (Polynomial.map (algebraMap R A) f).Splits) (x : A) : (Polynomial.aeval x) f = (algebraMap R A) f.leadingCoeff * (Multiset.map (fun x_1 => x - x_1) (f.aroots A)).prod - Polynomial.splits_of_exists_multiset π Mathlib.Algebra.Polynomial.Splits
{R : Type u_1} [CommRing R] {f : Polynomial R} : f.Splits β β m, f = Polynomial.C f.leadingCoeff * (Multiset.map (fun x => Polynomial.X - Polynomial.C x) m).prod - Polynomial.eq_prod_roots_of_splits π Mathlib.Algebra.Polynomial.Splits
{R : Type u_1} [CommRing R] {f : Polynomial R} [IsDomain R] (hf : f.Splits) : f = Polynomial.C f.leadingCoeff * (Multiset.map (fun x => Polynomial.X - Polynomial.C x) f.roots).prod - Polynomial.eq_prod_roots_of_splits_id π Mathlib.Algebra.Polynomial.Splits
{R : Type u_1} [CommRing R] {f : Polynomial R} [IsDomain R] (hf : f.Splits) : f = Polynomial.C f.leadingCoeff * (Multiset.map (fun x => Polynomial.X - Polynomial.C x) f.roots).prod - Polynomial.aeval_root_derivative_of_splits π Mathlib.Algebra.Polynomial.Splits
{R : Type u_1} [CommRing R] {f : Polynomial R} [IsDomain R] [DecidableEq R] (hf : f.Splits) (hm : f.Monic) {x : R} (hx : x β f.roots) : Polynomial.eval x (Polynomial.derivative f) = (Multiset.map (fun x_1 => x - x_1) (f.roots.erase x)).prod - Polynomial.adjoin_rootSet_eq_range π Mathlib.Algebra.Polynomial.Splits
{R : Type u_1} [CommRing R] {f : Polynomial R} {A : Type u_2} {B : Type u_3} [CommRing A] [CommRing B] [IsDomain A] [IsDomain B] [IsSimpleRing A] [Algebra R A] [Algebra R B] (hf : (Polynomial.map (algebraMap R A) f).Splits) (g : A ββ[R] B) : Algebra.adjoin R (f.rootSet B) = g.range β Algebra.adjoin R (f.rootSet A) = β€ - Polynomial.aeval_derivative_of_splits π Mathlib.Algebra.Polynomial.Splits
{R : Type u_1} [CommRing R] {f : Polynomial R} [IsDomain R] [DecidableEq R] (hf : f.Splits) (x : R) : Polynomial.eval x (Polynomial.derivative f) = f.leadingCoeff * (Multiset.map (fun a => (Multiset.map (fun x_1 => x - x_1) (f.roots.erase a)).prod) f.roots).sum - Polynomial.eval_derivative_of_splits π Mathlib.Algebra.Polynomial.Splits
{R : Type u_1} [CommRing R] {f : Polynomial R} [IsDomain R] [DecidableEq R] (hf : f.Splits) (x : R) : Polynomial.eval x (Polynomial.derivative f) = f.leadingCoeff * (Multiset.map (fun a => (Multiset.map (fun x_1 => x - x_1) (f.roots.erase a)).prod) f.roots).sum - Polynomial.evalβ_derivative_of_splits π Mathlib.Algebra.Polynomial.Splits
{R : Type u_1} [CommRing R] {f : Polynomial R} [IsDomain R] [DecidableEq R] (hf : f.Splits) (x : R) : Polynomial.eval x (Polynomial.derivative f) = f.leadingCoeff * (Multiset.map (fun a => (Multiset.map (fun x_1 => x - x_1) (f.roots.erase a)).prod) f.roots).sum - Polynomial.rootOfSplits'_eq_rootOfSplits π Mathlib.Algebra.Polynomial.Splits
{K : Type v} {L : Type w} [Field K] [Field L] (i : K β+* L) {f : Polynomial K} (hf : (Polynomial.map i f).Splits) (hfd : (Polynomial.map i f).degree β 0) : Polynomial.rootOfSplits hf hfd = Polynomial.rootOfSplits hf β― - Polynomial.eval_derivative_div_eval_of_ne_zero_of_splits π Mathlib.Algebra.Polynomial.Splits
{R : Type u_1} [Field R] {f : Polynomial R} (hf : f.Splits) {x : R} (hx : Polynomial.eval x f β 0) : Polynomial.eval x (Polynomial.derivative f) / Polynomial.eval x f = (Multiset.map (fun z => 1 / (x - z)) f.roots).sum - Polynomial.eval_derivative_eq_eval_mul_sum_of_splits π Mathlib.Algebra.Polynomial.Splits
{R : Type u_1} [Field R] {f : Polynomial R} (hf : f.Splits) {x : R} (hx : Polynomial.eval x f β 0) : Polynomial.eval x (Polynomial.derivative f) = Polynomial.eval x f * (Multiset.map (fun z => 1 / (x - z)) f.roots).sum - Cubic.splits_iff_card_roots π Mathlib.Algebra.CubicDiscriminant
{F : Type u_3} {K : Type u_4} {P : Cubic F} [Field F] [Field K] {Ο : F β+* K} (ha : P.a β 0) : (Polynomial.map Ο P.toPoly).Splits β (Cubic.map Ο P).roots.card = 3 - Cubic.splits_iff_roots_eq_three π Mathlib.Algebra.CubicDiscriminant
{F : Type u_3} {K : Type u_4} {P : Cubic F} [Field F] [Field K] {Ο : F β+* K} (ha : P.a β 0) : (Polynomial.map Ο P.toPoly).Splits β β x y z, (Cubic.map Ο P).roots = {x, y, z} - Cubic.disc_ne_zero_iff_roots_nodup π Mathlib.Algebra.CubicDiscriminant
{F : Type u_3} {K : Type u_4} {P : Cubic F} [Field F] [Field K] {Ο : F β+* K} (ha : P.a β 0) (hP : (Polynomial.map Ο P.toPoly).Splits) : P.discr β 0 β (Cubic.map Ο P).roots.Nodup - Cubic.discr_ne_zero_iff_roots_nodup π Mathlib.Algebra.CubicDiscriminant
{F : Type u_3} {K : Type u_4} {P : Cubic F} [Field F] [Field K] {Ο : F β+* K} (ha : P.a β 0) (hP : (Polynomial.map Ο P.toPoly).Splits) : P.discr β 0 β (Cubic.map Ο P).roots.Nodup - Cubic.card_roots_of_disc_ne_zero π Mathlib.Algebra.CubicDiscriminant
{F : Type u_3} {K : Type u_4} {P : Cubic F} [Field F] [Field K] {Ο : F β+* K} [DecidableEq K] (ha : P.a β 0) (h3 : (Polynomial.map Ο P.toPoly).Splits) (hd : P.discr β 0) : (Cubic.map Ο P).roots.toFinset.card = 3 - Cubic.card_roots_of_discr_ne_zero π Mathlib.Algebra.CubicDiscriminant
{F : Type u_3} {K : Type u_4} {P : Cubic F} [Field F] [Field K] {Ο : F β+* K} [DecidableEq K] (ha : P.a β 0) (h3 : (Polynomial.map Ο P.toPoly).Splits) (hd : P.discr β 0) : (Cubic.map Ο P).roots.toFinset.card = 3 - Polynomial.nodup_roots_iff_of_splits π Mathlib.FieldTheory.Separable
{F : Type u} [Field F] {f : Polynomial F} (hf : f β 0) (h : f.Splits) : f.roots.Nodup β f.Separable - Polynomial.card_rootSet_eq_natDegree π Mathlib.FieldTheory.Separable
{F : Type u} [Field F] {K : Type v} [Field K] [Algebra F K] {p : Polynomial F} (hsep : p.Separable) (hsplit : (Polynomial.map (algebraMap F K) p).Splits) : Fintype.card β(p.rootSet K) = p.natDegree - Polynomial.nodup_aroots_iff_of_splits π Mathlib.FieldTheory.Separable
{F : Type u} [Field F] {K : Type v} [Field K] [Algebra F K] {f : Polynomial F} (hf : f β 0) (h : (Polynomial.map (algebraMap F K) f).Splits) : (f.aroots K).Nodup β f.Separable - Polynomial.card_rootSet_eq_natDegree_iff_of_splits π Mathlib.FieldTheory.Separable
{F : Type u} [Field F] {K : Type v} [Field K] [Algebra F K] {f : Polynomial F} (hf : f β 0) (h : (Polynomial.map (algebraMap F K) f).Splits) : Fintype.card β(f.rootSet K) = f.natDegree β f.Separable - AlgHom.natCard_of_powerBasis π Mathlib.FieldTheory.Separable
{S : Type u_2} [CommRing S] {K : Type u_4} {L : Type u_5} [Field K] [Field L] [Algebra K S] [Algebra K L] (pb : PowerBasis K S) (h_sep : IsSeparable K pb.gen) (h_splits : (Polynomial.map (algebraMap K L) (minpoly K pb.gen)).Splits) : Nat.card (S ββ[K] L) = pb.dim - AlgHom.card_of_powerBasis π Mathlib.FieldTheory.Separable
{S : Type u_2} [CommRing S] {K : Type u_4} {L : Type u_5} [Field K] [Field L] [Algebra K S] [Algebra K L] (pb : PowerBasis K S) (h_sep : IsSeparable K pb.gen) (h_splits : (Polynomial.map (algebraMap K L) (minpoly K pb.gen)).Splits) : Fintype.card (S ββ[K] L) = pb.dim - Polynomial.exists_finset_of_splits π Mathlib.FieldTheory.Separable
{F : Type u} [Field F] {K : Type v} [Field K] (i : F β+* K) {f : Polynomial F} (sep : f.Separable) (sp : (Polynomial.map i f).Splits) : β s, Polynomial.map i f = Polynomial.C (i f.leadingCoeff) * β a β s, (Polynomial.X - Polynomial.C a) - Polynomial.eq_X_sub_C_of_separable_of_root_eq π Mathlib.FieldTheory.Separable
{F : Type u} [Field F] {K : Type v} [Field K] {i : F β+* K} {x : F} {h : Polynomial F} (h_sep : h.Separable) (h_root : Polynomial.eval x h = 0) (h_splits : (Polynomial.map i h).Splits) (h_roots : β y β (Polynomial.map i h).roots, y = i x) : h = Polynomial.C h.leadingCoeff * (Polynomial.X - Polynomial.C x) - minpoly_neg_splits π Mathlib.RingTheory.Adjoin.Field
{K : Type u_2} {L : Type u_3} [Field K] [Field L] [Algebra K L] {x : L} (g : (Polynomial.map (algebraMap K L) (minpoly K x)).Splits) : (Polynomial.map (algebraMap K L) (minpoly K (-x))).Splits - IsIntegral.mem_range_algHom_of_minpoly_splits π Mathlib.RingTheory.Adjoin.Field
{R : Type u_1} {K : Type u_2} {L : Type u_3} [CommRing R] [Field K] [Field L] [Algebra R K] {x : L} [Algebra R L] (int : IsIntegral R x) (h : (Polynomial.map (algebraMap R K) (minpoly R x)).Splits) (f : K ββ[R] L) : x β f.range - IsIntegral.mem_range_algebraMap_of_minpoly_splits π Mathlib.RingTheory.Adjoin.Field
{R : Type u_1} {K : Type u_2} {L : Type u_3} [CommRing R] [Field K] [Field L] [Algebra R K] {x : L} [Algebra R L] [Algebra K L] [IsScalarTower R K L] (int : IsIntegral R x) (h : (Polynomial.map (algebraMap R K) (minpoly R x)).Splits) : x β (algebraMap K L).range - minpoly_algebraMap_sub_splits π Mathlib.RingTheory.Adjoin.Field
{K : Type u_2} {L : Type u_3} [Field K] [Field L] [Algebra K L] {x : L} (r : K) (g : (Polynomial.map (algebraMap K L) (minpoly K x)).Splits) : (Polynomial.map (algebraMap K L) (minpoly K ((algebraMap K L) r - x))).Splits - minpoly_sub_algebraMap_splits π Mathlib.RingTheory.Adjoin.Field
{K : Type u_2} {L : Type u_3} [Field K] [Field L] [Algebra K L] {x : L} (r : K) (g : (Polynomial.map (algebraMap K L) (minpoly K x)).Splits) : (Polynomial.map (algebraMap K L) (minpoly K (x - (algebraMap K L) r))).Splits - minpoly_add_algebraMap_splits π Mathlib.RingTheory.Adjoin.Field
{K : Type u_2} {L : Type u_3} [Field K] [Field L] [Algebra K L] {x : L} (r : K) (g : (Polynomial.map (algebraMap K L) (minpoly K x)).Splits) : (Polynomial.map (algebraMap K L) (minpoly K (x + (algebraMap K L) r))).Splits - minpoly_algebraMap_add_splits π Mathlib.RingTheory.Adjoin.Field
{K : Type u_2} {L : Type u_3} [Field K] [Field L] [Algebra K L] {x : L} (r : K) (g : (Polynomial.map (algebraMap K L) (minpoly K x)).Splits) : (Polynomial.map (algebraMap K L) (minpoly K ((algebraMap K L) r + x))).Splits - IsIntegral.minpoly_splits_tower_top' π Mathlib.RingTheory.Adjoin.Field
{R : Type u_1} {K : Type u_2} {L : Type u_3} {M : Type u_4} [CommRing R] [Field K] [Field L] [CommRing M] [Algebra R K] [Algebra R M] [Algebra K M] [IsScalarTower R K M] {x : M} (int : IsIntegral R x) {f : K β+* L} (h : (Polynomial.map (f.comp (algebraMap R K)) (minpoly R x)).Splits) : (Polynomial.map f (minpoly K x)).Splits - IsIntegral.minpoly_splits_tower_top π Mathlib.RingTheory.Adjoin.Field
{R : Type u_1} {K : Type u_2} {L : Type u_3} {M : Type u_4} [CommRing R] [Field K] [Field L] [CommRing M] [Algebra R K] [Algebra R M] [Algebra K M] [IsScalarTower R K M] {x : M} [Algebra K L] [Algebra R L] [IsScalarTower R K L] (int : IsIntegral R x) (h : (Polynomial.map (algebraMap R L) (minpoly R x)).Splits) : (Polynomial.map (algebraMap K L) (minpoly K x)).Splits - Polynomial.lift_of_splits π Mathlib.RingTheory.Adjoin.Field
{F : Type u_2} {K : Type u_3} {L : Type u_4} [Field F] [Field K] [Field L] [Algebra F K] [Algebra F L] (s : Finset K) : (β x β s, IsIntegral F x β§ (Polynomial.map (algebraMap F L) (minpoly F x)).Splits) β Nonempty (β₯(Algebra.adjoin F βs) ββ[F] L) - Polynomial.IsSplittingField.splits π Mathlib.FieldTheory.SplittingField.IsSplittingField
{K : Type v} (L : Type w) [Field K] [Field L] [Algebra K L] (f : Polynomial K) [Polynomial.IsSplittingField K L f] : (Polynomial.map (algebraMap K L) f).Splits - Polynomial.IsSplittingField.splits' π Mathlib.FieldTheory.SplittingField.IsSplittingField
{K : Type v} {L : Type w} {instβ : Field K} {instβΒΉ : Field L} {instβΒ² : Algebra K L} {f : Polynomial K} [self : Polynomial.IsSplittingField K L f] : (Polynomial.map (algebraMap K L) f).Splits - Polynomial.IsSplittingField.lift π Mathlib.FieldTheory.SplittingField.IsSplittingField
{F : Type u} {K : Type v} (L : Type w) [Field K] [Field L] [Field F] [Algebra K L] [Algebra K F] (f : Polynomial K) [Polynomial.IsSplittingField K L f] (hf : (Polynomial.map (algebraMap K F) f).Splits) : L ββ[K] F - isSplittingField_iff_intermediateField π Mathlib.FieldTheory.SplittingField.IsSplittingField
{K : Type v} {L : Type w} [Field K] [Field L] [Algebra K L] {p : Polynomial K} : Polynomial.IsSplittingField K L p β (Polynomial.map (algebraMap K L) p).Splits β§ IntermediateField.adjoin K (p.rootSet L) = β€ - IntermediateField.adjoin_rootSet_isSplittingField π Mathlib.FieldTheory.SplittingField.IsSplittingField
{K : Type v} {L : Type w} [Field K] [Field L] [Algebra K L] {p : Polynomial K} (hp : (Polynomial.map (algebraMap K L) p).Splits) : Polynomial.IsSplittingField K (β₯(IntermediateField.adjoin K (p.rootSet L))) p - Polynomial.IsSplittingField.mk π Mathlib.FieldTheory.SplittingField.IsSplittingField
{K : Type v} {L : Type w} [Field K] [Field L] [Algebra K L] {f : Polynomial K} (splits' : (Polynomial.map (algebraMap K L) f).Splits) (adjoin_rootSet' : Algebra.adjoin K (f.rootSet L) = β€) : Polynomial.IsSplittingField K L f - Polynomial.IsSplittingField.IsScalarTower.splits π Mathlib.FieldTheory.SplittingField.IsSplittingField
{F : Type u} {K : Type v} (L : Type w) [Field K] [Field L] [Field F] [Algebra K L] [Algebra F K] [Algebra F L] [IsScalarTower F K L] (f : Polynomial F) [Polynomial.IsSplittingField K L ((Polynomial.mapAlg F K) f)] : ((Polynomial.mapAlg F L) f).Splits - IsIntegral.mem_intermediateField_of_minpoly_splits π Mathlib.FieldTheory.SplittingField.IsSplittingField
{K : Type v} {L : Type w} [Field K] [Field L] [Algebra K L] {x : L} (int : IsIntegral K x) {F : IntermediateField K L} (h : (Polynomial.map (algebraMap K β₯F) (minpoly K x)).Splits) : x β F - IntermediateField.splits_of_splits π Mathlib.FieldTheory.SplittingField.IsSplittingField
{K : Type v} {L : Type w} [Field K] [Field L] [Algebra K L] {p : Polynomial K} {F : IntermediateField K L} (h : (Polynomial.map (algebraMap K L) p).Splits) (hF : β x β p.rootSet L, x β F) : (Polynomial.map (algebraMap K β₯F) p).Splits
About
Loogle searches Lean and Mathlib definitions and theorems.
You can use Loogle from within the Lean4 VSCode language extension
using (by default) Ctrl-K Ctrl-S. You can also try the
#loogle command from LeanSearchClient,
the CLI version, the Loogle
VS Code extension, the lean.nvim
integration or the Zulip bot.
Usage
Loogle finds definitions and lemmas in various ways:
By constant:
πReal.sin
finds all lemmas whose statement somehow mentions the sine function.By lemma name substring:
π"differ"
finds all lemmas that have"differ"somewhere in their lemma name.By subexpression:
π_ * (_ ^ _)
finds all lemmas whose statements somewhere include a product where the second argument is raised to some power.The pattern can also be non-linear, as in
πReal.sqrt ?a * Real.sqrt ?aIf the pattern has parameters, they are matched in any order. Both of these will find
List.map:
π(?a -> ?b) -> List ?a -> List ?b
πList ?a -> (?a -> ?b) -> List ?bBy main conclusion:
π|- tsum _ = _ * tsum _
finds all lemmas where the conclusion (the subexpression to the right of allβandβ) has the given shape.As before, if the pattern has parameters, they are matched against the hypotheses of the lemma in any order; for example,
π|- _ < _ β tsum _ < tsum _
will findtsum_lt_tsumeven though the hypothesisf i < g iis not the last.
If you pass more than one such search filter, separated by commas
Loogle will return lemmas which match all of them. The
search
π Real.sin, "two", tsum, _ * _, _ ^ _, |- _ < _ β _
would find all lemmas which mention the constants Real.sin
and tsum, have "two" as a substring of the
lemma name, include a product and a power somewhere in the type,
and have a hypothesis of the form _ < _ (if
there were any such lemmas). Metavariables (?a) are
assigned independently in each filter.
The #lucky button will directly send you to the
documentation of the first hit.
Source code
You can find the source code for this service at https://github.com/nomeata/loogle. The https://loogle.lean-lang.org/ service is provided by the Lean FRO.
This is Loogle revision 6ff4759 serving mathlib revision 519f454