Loogle!
Result
Found 193 declarations mentioning Polynomial.roots.
- Polynomial.roots π Mathlib.Algebra.Polynomial.Roots
{R : Type u} [CommRing R] [IsDomain R] (p : Polynomial R) : Multiset R - Polynomial.card_roots' π Mathlib.Algebra.Polynomial.Roots
{R : Type u} [CommRing R] [IsDomain R] (p : Polynomial R) : p.roots.card β€ p.natDegree - Polynomial.count_roots π Mathlib.Algebra.Polynomial.Roots
{R : Type u} {a : R} [CommRing R] [IsDomain R] [DecidableEq R] (p : Polynomial R) : Multiset.count a p.roots = Polynomial.rootMultiplicity a p - Polynomial.isRoot_of_mem_roots π Mathlib.Algebra.Polynomial.Roots
{R : Type u} {a : R} [CommRing R] [IsDomain R] {p : Polynomial R} (h : a β p.roots) : p.IsRoot a - Polynomial.roots_neg π Mathlib.Algebra.Polynomial.Roots
{R : Type u} [CommRing R] [IsDomain R] (p : Polynomial R) : (-p).roots = p.roots - Polynomial.roots_X π Mathlib.Algebra.Polynomial.Roots
{R : Type u} [CommRing R] [IsDomain R] : Polynomial.X.roots = {0} - Polynomial.card_le_degree_of_subset_roots π Mathlib.Algebra.Polynomial.Roots
{R : Type u} [CommRing R] [IsDomain R] {p : Polynomial R} {Z : Finset R} (h : Z.val β p.roots) : Z.card β€ p.natDegree - Polynomial.roots_one π Mathlib.Algebra.Polynomial.Roots
{R : Type u} [CommRing R] [IsDomain R] : Polynomial.roots 1 = β - Polynomial.roots_zero π Mathlib.Algebra.Polynomial.Roots
{R : Type u} [CommRing R] [IsDomain R] : Polynomial.roots 0 = 0 - Polynomial.card_roots_map_le_natDegree π Mathlib.Algebra.Polynomial.Roots
{A : Type u_3} {B : Type u_4} [Semiring A] [CommRing B] [IsDomain B] {f : A β+* B} (p : Polynomial A) : (Polynomial.map f p).roots.card β€ p.natDegree - Polynomial.card_roots_le_one_of_irreducible π Mathlib.Algebra.Polynomial.Roots
{R : Type u} [CommRing R] [IsDomain R] {p : Polynomial R} (hirr : Irreducible p) : p.roots.card β€ 1 - Associated.roots_eq π Mathlib.Algebra.Polynomial.Roots
{R : Type u} [CommRing R] [IsDomain R] {p q : Polynomial R} (h : Associated p q) : p.roots = q.roots - Polynomial.ne_zero_of_mem_roots π Mathlib.Algebra.Polynomial.Roots
{R : Type u} {a : R} [CommRing R] [IsDomain R] {p : Polynomial R} (h : a β p.roots) : p β 0 - Polynomial.aroots_def π Mathlib.Algebra.Polynomial.Roots
{T : Type w} [CommRing T] (p : Polynomial T) (S : Type u_1) [CommRing S] [IsDomain S] [Algebra T S] : p.aroots S = (Polynomial.map (algebraMap T S) p).roots - Polynomial.mem_roots π Mathlib.Algebra.Polynomial.Roots
{R : Type u} {a : R} [CommRing R] [IsDomain R] {p : Polynomial R} (hp : p β 0) : a β p.roots β p.IsRoot a - Polynomial.roots_eq_zero_of_irreducible_of_natDegree_ne_one π Mathlib.Algebra.Polynomial.Roots
{R : Type u} [CommRing R] [IsDomain R] {p : Polynomial R} (hirr : Irreducible p) (hdeg : p.natDegree β 1) : p.roots = 0 - Polynomial.mem_roots' π Mathlib.Algebra.Polynomial.Roots
{R : Type u} {a : R} [CommRing R] [IsDomain R] {p : Polynomial R} : a β p.roots β p β 0 β§ p.IsRoot a - Polynomial.roots_comp_neg_X π Mathlib.Algebra.Polynomial.Roots
{R : Type u} [CommRing R] [IsDomain R] (p : Polynomial R) : (p.comp (-Polynomial.X)).roots = Multiset.map (fun x => -x) p.roots - Polynomial.card_roots π Mathlib.Algebra.Polynomial.Roots
{R : Type u} [CommRing R] [IsDomain R] {p : Polynomial R} (hp0 : p β 0) : βp.roots.card β€ p.degree - Polynomial.card_roots_map_le_degree π Mathlib.Algebra.Polynomial.Roots
{A : Type u_3} {B : Type u_4} [Semiring A] [CommRing B] [IsDomain B] {f : A β+* B} (p : Polynomial A) (hp0 : p β 0) : β(Polynomial.map f p).roots.card β€ p.degree - Polynomial.roots_eq_of_degree_eq_card π Mathlib.Algebra.Polynomial.Roots
{R : Type u} [CommRing R] [IsDomain R] {p : Polynomial R} {S : Finset R} (hS : β x β S, Polynomial.eval x p = 0) (hcard : βS.card = p.degree) : p.roots = S.val - Polynomial.roots_eq_zero_iff_isRoot_eq_bot π Mathlib.Algebra.Polynomial.Roots
{R : Type u} [CommRing R] [IsDomain R] {p : Polynomial R} (hp0 : p β 0) : p.roots = 0 β p.IsRoot = β₯ - Polynomial.roots_eq_zero_iff_eq_zero_or_isRoot_eq_bot π Mathlib.Algebra.Polynomial.Roots
{R : Type u} [CommRing R] [IsDomain R] {p : Polynomial R} : p.roots = 0 β p = 0 β¨ p.IsRoot = β₯ - Polynomial.roots_ofMultiset π Mathlib.Algebra.Polynomial.Roots
{R : Type u} [CommRing R] [IsDomain R] (s : Multiset R) : (Polynomial.ofMultiset s).roots = s - Polynomial.rightInverse_ofMultiset_roots π Mathlib.Algebra.Polynomial.Roots
(R : Type u) [CommRing R] [IsDomain R] : Function.RightInverse (βPolynomial.ofMultiset) Polynomial.roots - Polynomial.roots_C π Mathlib.Algebra.Polynomial.Roots
{R : Type u} [CommRing R] [IsDomain R] (x : R) : (Polynomial.C x).roots = 0 - Polynomial.roots_multiset_prod π Mathlib.Algebra.Polynomial.Roots
{R : Type u} [CommRing R] [IsDomain R] (m : Multiset (Polynomial R)) : 0 β m β m.prod.roots = m.bind Polynomial.roots - Polynomial.roots_smul_nonzero π Mathlib.Algebra.Polynomial.Roots
{R : Type u} {a : R} [CommRing R] [IsDomain R] (p : Polynomial R) (ha : a β 0) : (a β’ p).roots = p.roots - Polynomial.roots_pow π Mathlib.Algebra.Polynomial.Roots
{R : Type u} [CommRing R] [IsDomain R] (p : Polynomial R) (n : β) : (p ^ n).roots = n β’ p.roots - Polynomial.roots_eq_of_natDegree_le_card_of_ne_zero π Mathlib.Algebra.Polynomial.Roots
{R : Type u} [CommRing R] [IsDomain R] {p : Polynomial R} {S : Finset R} (hS : β x β S, Polynomial.eval x p = 0) (hcard : p.natDegree β€ S.card) (hp : p β 0) : p.roots = S.val - Polynomial.card_roots_le_map_of_injective π Mathlib.Algebra.Polynomial.Roots
{A : Type u_1} {B : Type u_2} [CommRing A] [CommRing B] [IsDomain A] [IsDomain B] {p : Polynomial A} {f : A β+* B} (hf : Function.Injective βf) : p.roots.card β€ (Polynomial.map f p).roots.card - Polynomial.roots_prod π Mathlib.Algebra.Polynomial.Roots
{R : Type u} [CommRing R] [IsDomain R] {ΞΉ : Type u_1} (f : ΞΉ β Polynomial R) (s : Finset ΞΉ) : s.prod f β 0 β (s.prod f).roots = s.val.bind fun i => (f i).roots - Polynomial.roots_list_prod π Mathlib.Algebra.Polynomial.Roots
{R : Type u} [CommRing R] [IsDomain R] (L : List (Polynomial R)) : 0 β L β L.prod.roots = (βL).bind Polynomial.roots - Polynomial.card_roots_le_map π Mathlib.Algebra.Polynomial.Roots
{A : Type u_1} {B : Type u_2} [CommRing A] [CommRing B] [IsDomain A] [IsDomain B] {p : Polynomial A} {f : A β+* B} (h : Polynomial.map f p β 0) : p.roots.card β€ (Polynomial.map f p).roots.card - Polynomial.roots_X_pow π Mathlib.Algebra.Polynomial.Roots
{R : Type u} [CommRing R] [IsDomain R] (n : β) : (Polynomial.X ^ n).roots = n β’ {0} - Polynomial.roots_eq_of_degree_le_card_of_ne_zero π Mathlib.Algebra.Polynomial.Roots
{R : Type u} [CommRing R] [IsDomain R] {p : Polynomial R} {S : Finset R} (hS : β x β S, Polynomial.eval x p = 0) (hcard : p.degree β€ βS.card) (hp : p β 0) : p.roots = S.val - Polynomial.mem_roots_map_of_injective π Mathlib.Algebra.Polynomial.Roots
{R : Type u} {S : Type v} [CommRing R] [IsDomain R] [Semiring S] {p : Polynomial S} {f : S β+* R} (hf : Function.Injective βf) {x : R} (hp : p β 0) : x β (Polynomial.map f p).roots β Polynomial.evalβ f x p = 0 - Polynomial.Monic.roots_map_of_card_eq_natDegree π Mathlib.Algebra.Polynomial.Roots
{A : Type u_1} {B : Type u_2} [CommRing A] [CommRing B] [IsDomain A] [IsDomain B] {p : Polynomial A} (hm : p.Monic) (f : A β+* B) (hroots : p.roots.card = p.natDegree) : Multiset.map (βf) p.roots = (Polynomial.map f p).roots - Polynomial.roots.le_of_dvd π Mathlib.Algebra.Polynomial.Roots
{R : Type u} [CommRing R] [IsDomain R] {p q : Polynomial R} (h : q β 0) : p β£ q β p.roots β€ q.roots - Polynomial.roots_X_sub_C π Mathlib.Algebra.Polynomial.Roots
{R : Type u} [CommRing R] [IsDomain R] (r : R) : (Polynomial.X - Polynomial.C r).roots = {r} - Polynomial.bUnion_roots_finite π Mathlib.Algebra.Polynomial.Roots
{R : Type u_1} {S : Type u_2} [Semiring R] [CommRing S] [IsDomain S] [DecidableEq S] (m : R β+* S) (d : β) {U : Set R} (h : U.Finite) : (β f, β (_ : f.natDegree β€ d β§ β (i : β), f.coeff i β U), β(Polynomial.map m f).roots.toFinset).Finite - Polynomial.count_map_roots_of_injective π Mathlib.Algebra.Polynomial.Roots
{A : Type u_1} {B : Type u_2} [CommRing A] [CommRing B] [IsDomain A] [DecidableEq B] (p : Polynomial A) {f : A β+* B} (hf : Function.Injective βf) (b : B) : Multiset.count b (Multiset.map (βf) p.roots) β€ Polynomial.rootMultiplicity b (Polynomial.map f p) - Polynomial.count_map_roots π Mathlib.Algebra.Polynomial.Roots
{A : Type u_1} {B : Type u_2} [CommRing A] [CommRing B] [IsDomain A] [DecidableEq B] {p : Polynomial A} {f : A β+* B} (hmap : Polynomial.map f p β 0) (b : B) : Multiset.count b (Multiset.map (βf) p.roots) β€ Polynomial.rootMultiplicity b (Polynomial.map f p) - Polynomial.map_roots_le_of_injective π Mathlib.Algebra.Polynomial.Roots
{A : Type u_1} {B : Type u_2} [CommRing A] [CommRing B] [IsDomain A] [IsDomain B] (p : Polynomial A) {f : A β+* B} (hf : Function.Injective βf) : Multiset.map (βf) p.roots β€ (Polynomial.map f p).roots - Polynomial.roots_mul π Mathlib.Algebra.Polynomial.Roots
{R : Type u} [CommRing R] [IsDomain R] {p q : Polynomial R} (hpq : p * q β 0) : (p * q).roots = p.roots + q.roots - Polynomial.roots_C_mul π Mathlib.Algebra.Polynomial.Roots
{R : Type u} {a : R} [CommRing R] [IsDomain R] (p : Polynomial R) (ha : a β 0) : (Polynomial.C a * p).roots = p.roots - Polynomial.roots_X_add_C π Mathlib.Algebra.Polynomial.Roots
{R : Type u} [CommRing R] [IsDomain R] (r : R) : (Polynomial.X + Polynomial.C r).roots = {-r} - Polynomial.roots_prod_X_sub_C π Mathlib.Algebra.Polynomial.Roots
{R : Type u} [CommRing R] [IsDomain R] (s : Finset R) : (β a β s, (Polynomial.X - Polynomial.C a)).roots = s.val - Polynomial.map_roots_le π Mathlib.Algebra.Polynomial.Roots
{A : Type u_1} {B : Type u_2} [CommRing A] [CommRing B] [IsDomain A] [IsDomain B] {p : Polynomial A} {f : A β+* B} (h : Polynomial.map f p β 0) : Multiset.map (βf) p.roots β€ (Polynomial.map f p).roots - Polynomial.roots_map_of_injective_of_card_eq_natDegree π Mathlib.Algebra.Polynomial.Roots
{A : Type u_1} {B : Type u_2} [CommRing A] [CommRing B] [IsDomain A] [IsDomain B] {p : Polynomial A} {f : A β+* B} (hf : Function.Injective βf) (hroots : p.roots.card = p.natDegree) : Multiset.map (βf) p.roots = (Polynomial.map f p).roots - Polynomial.roots_multiset_prod_X_sub_C π Mathlib.Algebra.Polynomial.Roots
{R : Type u} [CommRing R] [IsDomain R] (s : Multiset R) : (Multiset.map (fun a => Polynomial.X - Polynomial.C a) s).prod.roots = s - Polynomial.roots_map_of_map_ne_zero_of_card_eq_natDegree π Mathlib.Algebra.Polynomial.Roots
{A : Type u_1} {B : Type u_2} [CommRing A] [CommRing B] [IsDomain A] [IsDomain B] {p : Polynomial A} (f : A β+* B) (h : Polynomial.map f p β 0) (hroots : p.roots.card = p.natDegree) : Multiset.map (βf) p.roots = (Polynomial.map f p).roots - Polynomial.card_roots_sub_C' π Mathlib.Algebra.Polynomial.Roots
{R : Type u} [CommRing R] [IsDomain R] {p : Polynomial R} {a : R} (hp0 : 0 < p.degree) : (p - Polynomial.C a).roots.card β€ p.natDegree - Polynomial.mem_roots_sub_C π Mathlib.Algebra.Polynomial.Roots
{R : Type u} [CommRing R] [IsDomain R] {p : Polynomial R} {a x : R} (hp0 : 0 < p.degree) : x β (p - Polynomial.C a).roots β Polynomial.eval x p = a - Polynomial.card_roots_sub_C π Mathlib.Algebra.Polynomial.Roots
{R : Type u} [CommRing R] [IsDomain R] {p : Polynomial R} {a : R} (hp0 : 0 < p.degree) : β(p - Polynomial.C a).roots.card β€ p.degree - Polynomial.mem_roots_iff_aeval_eq_zero π Mathlib.Algebra.Polynomial.Roots
{R : Type u} [CommRing R] [IsDomain R] {p : Polynomial R} {x : R} (w : p β 0) : x β p.roots β (Polynomial.aeval x) p = 0 - Polynomial.prod_multiset_X_sub_C_of_monic_of_roots_card_eq π Mathlib.Algebra.Polynomial.Roots
{R : Type u} [CommRing R] [IsDomain R] {p : Polynomial R} (hp : p.Monic) (hroots : p.roots.card = p.natDegree) : (Multiset.map (fun a => Polynomial.X - Polynomial.C a) p.roots).prod = p - Polynomial.card_roots_X_pow_sub_C π Mathlib.Algebra.Polynomial.Roots
{R : Type u} [CommRing R] [IsDomain R] {n : β} (hn : 0 < n) (a : R) : (Polynomial.X ^ n - Polynomial.C a).roots.card β€ n - Polynomial.roots_def π Mathlib.Algebra.Polynomial.Roots
{R : Type u} [CommRing R] [IsDomain R] [DecidableEq R] (p : Polynomial R) [Decidable (p = 0)] : p.roots = if h : p = 0 then β else Classical.choose β― - Polynomial.prod_multiset_X_sub_C_dvd π Mathlib.Algebra.Polynomial.Roots
{R : Type u} [CommRing R] [IsDomain R] (p : Polynomial R) : (Multiset.map (fun a => Polynomial.X - Polynomial.C a) p.roots).prod β£ p - Polynomial.filter_roots_map_range_eq_map_roots π Mathlib.Algebra.Polynomial.Roots
{A : Type u_1} {B : Type u_2} [CommRing A] [CommRing B] [IsDomain A] [IsDomain B] {f : A β+* B} [DecidablePred fun x => x β f.range] (hf : Function.Injective βf) (p : Polynomial A) : Multiset.filter (fun x => x β f.range) (Polynomial.map f p).roots = Multiset.map (βf) p.roots - Polynomial.mem_roots_sub_C' π Mathlib.Algebra.Polynomial.Roots
{R : Type u} [CommRing R] [IsDomain R] {p : Polynomial R} {a x : R} : x β (p - Polynomial.C a).roots β p β Polynomial.C a β§ Polynomial.eval x p = a - Polynomial.roots_monomial π Mathlib.Algebra.Polynomial.Roots
{R : Type u} {a : R} [CommRing R] [IsDomain R] (ha : a β 0) (n : β) : ((Polynomial.monomial n) a).roots = n β’ {0} - Polynomial.roots_C_mul_X_pow π Mathlib.Algebra.Polynomial.Roots
{R : Type u} {a : R} [CommRing R] [IsDomain R] (ha : a β 0) (n : β) : (Polynomial.C a * Polynomial.X ^ n).roots = n β’ {0} - Multiset.prod_X_sub_C_dvd_iff_le_roots π Mathlib.Algebra.Polynomial.Roots
{R : Type u} [CommRing R] [IsDomain R] {p : Polynomial R} (hp : p β 0) (s : Multiset R) : (Multiset.map (fun a => Polynomial.X - Polynomial.C a) s).prod β£ p β s β€ p.roots - Polynomial.exists_prod_multiset_X_sub_C_mul π Mathlib.Algebra.Polynomial.Roots
{R : Type u} [CommRing R] [IsDomain R] (p : Polynomial R) : β q, (Multiset.map (fun a => Polynomial.X - Polynomial.C a) p.roots).prod * q = p β§ p.roots.card + q.natDegree = p.natDegree β§ q.roots = 0 - Polynomial.C_leadingCoeff_mul_prod_multiset_X_sub_C π Mathlib.Algebra.Polynomial.Roots
{R : Type u} [CommRing R] [IsDomain R] {p : Polynomial R} (hroots : p.roots.card = p.natDegree) : Polynomial.C p.leadingCoeff * (Multiset.map (fun a => Polynomial.X - Polynomial.C a) p.roots).prod = p - Polynomial.roots_C_mul_X_sub_C_of_IsUnit π Mathlib.Algebra.Polynomial.Roots
{R : Type u} [CommRing R] [IsDomain R] (b : R) (a : RΛ£) : (Polynomial.C βa * Polynomial.X - Polynomial.C b).roots = {βaβ»ΒΉ * b} - Polynomial.map_roots_comp_C_mul_X_add_C π Mathlib.Algebra.Polynomial.Roots
{R : Type u} [CommRing R] [IsDomain R] (p : Polynomial R) (a b : R) (ha : IsUnit a) : Multiset.map (fun x => a * x + b) (p.comp (Polynomial.C a * Polynomial.X + Polynomial.C b)).roots = p.roots - Polynomial.roots_comp_C_mul_X_add_C π Mathlib.Algebra.Polynomial.Roots
{R : Type u} [CommRing R] [IsDomain R] (p : Polynomial R) (a b : R) (ha : IsUnit a) : (p.comp (Polynomial.C a * Polynomial.X + Polynomial.C b)).roots = Multiset.map (fun x => Ring.inverse a * (x - b)) p.roots - Polynomial.roots_C_mul_X_add_C_of_IsUnit π Mathlib.Algebra.Polynomial.Roots
{R : Type u} [CommRing R] [IsDomain R] (b : R) (a : RΛ£) : (Polynomial.C βa * Polynomial.X + Polynomial.C b).roots = {-(βaβ»ΒΉ * b)} - Polynomial.prod_multiset_root_eq_finset_root π Mathlib.Algebra.Polynomial.Roots
{R : Type u} [CommRing R] [IsDomain R] {p : Polynomial R} [DecidableEq R] : (Multiset.map (fun a => Polynomial.X - Polynomial.C a) p.roots).prod = β a β p.roots.toFinset, (Polynomial.X - Polynomial.C a) ^ Polynomial.rootMultiplicity a p - Polynomial.roots_normalize π Mathlib.Algebra.Polynomial.FieldDivision
{R : Type u_1} [CommRing R] [IsDomain R] [NormalizationMonoid R] {p : Polynomial R} : (normalize p).roots = p.roots - Polynomial.mem_roots_map π Mathlib.Algebra.Polynomial.FieldDivision
{R : Type u} {k : Type y} [Field R] {p : Polynomial R} [CommRing k] [IsDomain k] {f : R β+* k} {x : k} (hp : p β 0) : x β (Polynomial.map f p).roots β Polynomial.evalβ f x p = 0 - Polynomial.roots_degree_eq_one π Mathlib.Algebra.Polynomial.FieldDivision
{R : Type u} [Field R] {p : Polynomial R} (h : p.degree = 1) : p.roots = {-((p.coeff 1)β»ΒΉ * p.coeff 0)} - Polynomial.roots_C_mul_X_sub_C π Mathlib.Algebra.Polynomial.FieldDivision
{R : Type u} {a : R} [Field R] (b : R) (ha : a β 0) : (Polynomial.C a * Polynomial.X - Polynomial.C b).roots = {aβ»ΒΉ * b} - Polynomial.roots_C_mul_X_add_C π Mathlib.Algebra.Polynomial.FieldDivision
{R : Type u} {a : R} [Field R] (b : R) (ha : a β 0) : (Polynomial.C a * Polynomial.X + Polynomial.C b).roots = {-(aβ»ΒΉ * b)} - Polynomial.Splits.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.splits_iff_card_roots π Mathlib.Algebra.Polynomial.Splits
{R : Type u_1} [CommRing R] {f : Polynomial R} [IsDomain R] : f.Splits β f.roots.card = f.natDegree - Polynomial.Splits.roots_ne_zero π 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.nextCoeff_eq_neg_sum_roots_of_monic π 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.eval_eq_prod_roots_of_monic π 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.Splits.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.Splits.nextCoeff_eq_neg_sum_roots_mul_leadingCoeff π 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.eval_eq_prod_roots π 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.map_sub_sprod_roots_eq_prod_map_eval π Mathlib.Algebra.Polynomial.Splits
{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.roots_map π Mathlib.Algebra.Polynomial.Splits
{R : Type u_1} {S : Type u_2} [Field R] [CommRing S] [IsDomain S] {f : Polynomial 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.Splits
{R : Type u_1} {S : Type u_2} [Field R] [CommRing S] [IsDomain S] {f : Polynomial 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.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.roots_map_of_injective π Mathlib.Algebra.Polynomial.Splits
{R : Type u_1} [CommRing R] {f : Polynomial R} [IsDomain R] {S : Type u_4} [CommRing S] [IsDomain S] (hf : f.Splits) {i : R β+* S} (hi : Function.Injective βi) : (Polynomial.map i f).roots = Multiset.map (βi) f.roots - Polynomial.Splits.roots_map_of_ne_zero π Mathlib.Algebra.Polynomial.Splits
{R : Type u_1} [CommRing R] [IsDomain R] {S : Type u_4} [CommRing S] [IsDomain S] {f : Polynomial R} (hf : f.Splits) {Ο : R β+* S} (hΟ : Polynomial.map Ο f β 0) : (Polynomial.map Ο f).roots = Multiset.map (βΟ) f.roots - Polynomial.Splits.coeff_zero_eq_leadingCoeff_mul_prod_roots π 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_map_of_injective π Mathlib.Algebra.Polynomial.Splits
{R : Type u_1} [CommRing R] {f : Polynomial R} {S : Type u_4} [CommRing S] [IsDomain S] {i : R β+* S} (hi : Function.Injective βi) (hf : (Polynomial.map i f).Splits) : (β a β (Polynomial.map i f).roots, a β i.range) β f.Splits - Polynomial.Splits.dvd_of_roots_le_roots π Mathlib.Algebra.Polynomial.Splits
{R : Type u_1} [Field R] {f g : Polynomial R} (hp : f.Splits) (hp0 : f β 0) (hq : f.roots β€ g.roots) : f β£ g - Polynomial.map_sub_roots_sprod_eq_prod_map_eval π Mathlib.Algebra.Polynomial.Splits
{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.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.mem_lift_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_4} [Ring S] (i : S β+* R) (hr : β a β f.roots, a β i.range) : f β Polynomial.lifts i - Polynomial.Splits.dvd_iff_roots_le_roots π Mathlib.Algebra.Polynomial.Splits
{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.eq_X_sub_C_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.Splits.eq_prod_roots π 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.Splits.eval_root_derivative π 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.Splits.eval_derivative π 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.Splits.eval_derivative_div_eval_of_ne_zero π 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.Splits.eval_derivative_eq_eval_mul_sum π 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.roots_scaleRoots π Mathlib.RingTheory.Polynomial.ScaleRoots
{R : Type u_1} [CommRing R] [IsDomain R] (p : Polynomial R) {r : R} (hr : IsUnit r) : (p.scaleRoots r).roots = Multiset.map (fun x => r * x) p.roots - Cubic.map_roots π Mathlib.Algebra.CubicDiscriminant
{R : Type u_1} {S : Type u_2} {P : Cubic R} [CommRing R] [CommRing S] {Ο : R β+* S} [IsDomain S] : (Cubic.map Ο P).roots = (Polynomial.map Ο P.toPoly).roots - Polynomial.nodup_roots π Mathlib.FieldTheory.Separable
{R : Type u} [CommRing R] [IsDomain R] {p : Polynomial R} (hsep : p.Separable) : p.roots.Nodup - Polynomial.count_roots_le_one π Mathlib.FieldTheory.Separable
{R : Type u} [CommRing R] [IsDomain R] [DecidableEq R] {p : Polynomial R} (hsep : p.Separable) (x : R) : Multiset.count x p.roots β€ 1 - 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.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) - Polynomial.rootsExpandToRoots π Mathlib.FieldTheory.Perfect
{R : Type u_1} [CommRing R] [IsDomain R] (p : β) [ExpChar R p] (f : Polynomial R) [DecidableEq R] : β₯((Polynomial.expand R p) f).roots.toFinset βͺ β₯f.roots.toFinset - Polynomial.rootsExpandEquivRoots π Mathlib.FieldTheory.Perfect
{R : Type u_1} [CommRing R] [IsDomain R] (p : β) [ExpChar R p] (f : Polynomial R) [DecidableEq R] [PerfectRing R p] : β₯((Polynomial.expand R p) f).roots.toFinset β β₯f.roots.toFinset - Polynomial.rootsExpandPowToRoots π Mathlib.FieldTheory.Perfect
{R : Type u_1} [CommRing R] [IsDomain R] (p n : β) [ExpChar R p] (f : Polynomial R) [DecidableEq R] : β₯((Polynomial.expand R (p ^ n)) f).roots.toFinset βͺ β₯f.roots.toFinset - Polynomial.rootsExpandPowEquivRoots π Mathlib.FieldTheory.Perfect
{R : Type u_1} [CommRing R] [IsDomain R] (p : β) [ExpChar R p] (f : Polynomial R) [DecidableEq R] [PerfectRing R p] (n : β) : β₯((Polynomial.expand R (p ^ n)) f).roots.toFinset β β₯f.roots.toFinset - Polynomial.roots_expand_image_frobenius_subset π Mathlib.FieldTheory.Perfect
{R : Type u_1} [CommRing R] [IsDomain R] (p : β) [ExpChar R p] (f : Polynomial R) [DecidableEq R] : Finset.image (β(frobenius R p)) ((Polynomial.expand R p) f).roots.toFinset β f.roots.toFinset - Polynomial.roots_expand_image_frobenius π Mathlib.FieldTheory.Perfect
{R : Type u_1} [CommRing R] [IsDomain R] {p : β} [ExpChar R p] {f : Polynomial R} [PerfectRing R p] [DecidableEq R] : Finset.image (β(frobenius R p)) ((Polynomial.expand R p) f).roots.toFinset = f.roots.toFinset - Polynomial.roots_expand_pow_image_iterateFrobenius_subset π Mathlib.FieldTheory.Perfect
{R : Type u_1} [CommRing R] [IsDomain R] (p n : β) [ExpChar R p] (f : Polynomial R) [DecidableEq R] : Finset.image (β(iterateFrobenius R p n)) ((Polynomial.expand R (p ^ n)) f).roots.toFinset β f.roots.toFinset - Polynomial.roots_expand_map_frobenius_le π Mathlib.FieldTheory.Perfect
{R : Type u_1} [CommRing R] [IsDomain R] (p : β) [ExpChar R p] (f : Polynomial R) : Multiset.map (β(frobenius R p)) ((Polynomial.expand R p) f).roots β€ p β’ f.roots - Polynomial.roots_expand_image_iterateFrobenius π Mathlib.FieldTheory.Perfect
{R : Type u_1} [CommRing R] [IsDomain R] {p n : β} [ExpChar R p] {f : Polynomial R} [PerfectRing R p] [DecidableEq R] : Finset.image (β(iterateFrobenius R p n)) ((Polynomial.expand R (p ^ n)) f).roots.toFinset = f.roots.toFinset - Polynomial.roots_expand_map_frobenius π Mathlib.FieldTheory.Perfect
{R : Type u_1} [CommRing R] [IsDomain R] {p : β} [ExpChar R p] {f : Polynomial R} [PerfectRing R p] : Multiset.map (β(frobenius R p)) ((Polynomial.expand R p) f).roots = p β’ f.roots - Polynomial.roots_expand_pow_map_iterateFrobenius_le π Mathlib.FieldTheory.Perfect
{R : Type u_1} [CommRing R] [IsDomain R] (p n : β) [ExpChar R p] (f : Polynomial R) : Multiset.map (β(iterateFrobenius R p n)) ((Polynomial.expand R (p ^ n)) f).roots β€ p ^ n β’ f.roots - Polynomial.roots_expand_pow_map_iterateFrobenius π Mathlib.FieldTheory.Perfect
{R : Type u_1} [CommRing R] [IsDomain R] {p n : β} [ExpChar R p] {f : Polynomial R} [PerfectRing R p] : Multiset.map (β(iterateFrobenius R p n)) ((Polynomial.expand R (p ^ n)) f).roots = p ^ n β’ f.roots - Polynomial.roots_expand π Mathlib.FieldTheory.Perfect
{R : Type u_1} [CommRing R] [IsDomain R] {p : β} [ExpChar R p] {f : Polynomial R} [PerfectRing R p] : ((Polynomial.expand R p) f).roots = p β’ Multiset.map (β(frobeniusEquiv R p).symm) f.roots - Polynomial.roots_X_pow_char_sub_C π Mathlib.FieldTheory.Perfect
{R : Type u_1} [CommRing R] [IsDomain R] {p : β} [ExpChar R p] [PerfectRing R p] {y : R} : (Polynomial.X ^ p - Polynomial.C y).roots = p β’ {(frobeniusEquiv R p).symm y} - Polynomial.roots_expand_pow π Mathlib.FieldTheory.Perfect
{R : Type u_1} [CommRing R] [IsDomain R] {p n : β} [ExpChar R p] {f : Polynomial R} [PerfectRing R p] : ((Polynomial.expand R (p ^ n)) f).roots = p ^ n β’ Multiset.map (β(iterateFrobeniusEquiv R p n).symm) f.roots - Polynomial.roots_X_pow_char_pow_sub_C π Mathlib.FieldTheory.Perfect
{R : Type u_1} [CommRing R] [IsDomain R] {p n : β} [ExpChar R p] [PerfectRing R p] {y : R} : (Polynomial.X ^ p ^ n - Polynomial.C y).roots = p ^ n β’ {(iterateFrobeniusEquiv R p n).symm y} - Polynomial.roots_X_pow_char_sub_C_pow π Mathlib.FieldTheory.Perfect
{R : Type u_1} [CommRing R] [IsDomain R] {p : β} [ExpChar R p] [PerfectRing R p] {y : R} {m : β} : ((Polynomial.X ^ p - Polynomial.C y) ^ m).roots = (m * p) β’ {(frobeniusEquiv R p).symm y} - Polynomial.roots_X_pow_char_pow_sub_C_pow π Mathlib.FieldTheory.Perfect
{R : Type u_1} [CommRing R] [IsDomain R] {p n : β} [ExpChar R p] [PerfectRing R p] {y : R} {m : β} : ((Polynomial.X ^ p ^ n - Polynomial.C y) ^ m).roots = (m * p ^ n) β’ {(iterateFrobeniusEquiv R p n).symm y} - Polynomial.rootsExpandToRoots_apply π Mathlib.FieldTheory.Perfect
{R : Type u_1} [CommRing R] [IsDomain R] (p : β) [ExpChar R p] (f : Polynomial R) [DecidableEq R] (x : β₯((Polynomial.expand R p) f).roots.toFinset) : β((Polynomial.rootsExpandToRoots p f) x) = βx ^ p - Polynomial.rootsExpandPowToRoots_apply π Mathlib.FieldTheory.Perfect
{R : Type u_1} [CommRing R] [IsDomain R] (p n : β) [ExpChar R p] (f : Polynomial R) [DecidableEq R] (x : β₯((Polynomial.expand R (p ^ n)) f).roots.toFinset) : β((Polynomial.rootsExpandPowToRoots p n f) x) = βx ^ p ^ n - Polynomial.rootsExpandEquivRoots_apply π Mathlib.FieldTheory.Perfect
{R : Type u_1} [CommRing R] [IsDomain R] (p : β) [ExpChar R p] (f : Polynomial R) [DecidableEq R] [PerfectRing R p] (x : β₯((Polynomial.expand R p) f).roots.toFinset) : β((Polynomial.rootsExpandEquivRoots p f) x) = βx ^ p - Polynomial.rootsExpandPowEquivRoots_apply π Mathlib.FieldTheory.Perfect
{R : Type u_1} [CommRing R] [IsDomain R] (p : β) [ExpChar R p] (f : Polynomial R) [DecidableEq R] [PerfectRing R p] (n : β) (x : β₯((Polynomial.expand R (p ^ n)) f).roots.toFinset) : β((Polynomial.rootsExpandPowEquivRoots p f n) x) = βx ^ p ^ n - IsAlgClosed.card_roots_eq_natDegree π Mathlib.FieldTheory.IsAlgClosed.Basic
{k : Type u} [Field k] [IsAlgClosed k] {p : Polynomial k} : p.roots.card = p.natDegree - IsAlgClosed.roots_eq_zero_iff_natDegree_eq_zero π Mathlib.FieldTheory.IsAlgClosed.Basic
{k : Type u} [Field k] [IsAlgClosed k] {p : Polynomial k} : p.roots = 0 β p.natDegree = 0 - IsAlgClosed.card_roots_map_eq_natDegree_of_isUnit_leadingCoeff π Mathlib.FieldTheory.IsAlgClosed.Basic
{A : Type u_1} {B : Type u_2} [Semiring A] [Field B] [IsAlgClosed B] (f : A β+* B) {p : Polynomial A} (h : IsUnit p.leadingCoeff) : (Polynomial.map f p).roots.card = p.natDegree - IsAlgClosed.roots_eq_zero_iff_degree_nonpos π Mathlib.FieldTheory.IsAlgClosed.Basic
{k : Type u} [Field k] [IsAlgClosed k] {p : Polynomial k} : p.roots = 0 β p.degree β€ 0 - IsAlgClosed.card_roots_map_eq_natDegree_from_simpleRing π Mathlib.FieldTheory.IsAlgClosed.Basic
{A : Type u_1} {B : Type u_2} [Ring A] [IsSimpleRing A] [Field B] [IsAlgClosed B] (f : A β+* B) (p : Polynomial A) : (Polynomial.map f p).roots.card = p.natDegree - IsAlgClosed.card_roots_map_eq_natDegree_of_injective π Mathlib.FieldTheory.IsAlgClosed.Basic
{A : Type u_1} {B : Type u_2} [Semiring A] [Field B] [IsAlgClosed B] {f : A β+* B} (p : Polynomial A) (hf : Function.Injective βf) : (Polynomial.map f p).roots.card = p.natDegree - IsAlgClosed.card_roots_map_eq_natDegree_of_leadingCoeff_ne_zero π Mathlib.FieldTheory.IsAlgClosed.Basic
{A : Type u_1} {B : Type u_2} [Semiring A] [Field B] [IsAlgClosed B] {f : A β+* B} {p : Polynomial A} (hf : f p.leadingCoeff β 0) : (Polynomial.map f p).roots.card = p.natDegree - IsAlgClosed.associated_iff_roots_eq_roots π Mathlib.FieldTheory.IsAlgClosed.Basic
{k : Type u} [Field k] [IsAlgClosed k] {p q : Polynomial k} (hp : p β 0) (hq : q β 0) : Associated p q β p.roots = q.roots - IsAlgClosed.roots_eq_zero_iff π Mathlib.FieldTheory.IsAlgClosed.Basic
{k : Type u} [Field k] [IsAlgClosed k] {p : Polynomial k} : p.roots = 0 β p = Polynomial.C (p.coeff 0) - IsAlgClosed.dvd_iff_roots_le_roots π Mathlib.FieldTheory.IsAlgClosed.Basic
{k : Type u} [Field k] [IsAlgClosed k] {p q : Polynomial k} (hp : p β 0) (hq : q β 0) : p β£ q β p.roots β€ q.roots - spectrum.exists_mem_of_not_isUnit_aeval_prod π Mathlib.FieldTheory.IsAlgClosed.Spectrum
{R : Type u} {A : Type v} [CommRing R] [Ring A] [Algebra R A] [IsDomain R] {p : Polynomial R} {a : A} (h : Β¬IsUnit ((Polynomial.aeval a) (Multiset.map (fun x => Polynomial.X - Polynomial.C x) p.roots).prod)) : β k β spectrum R a, Polynomial.eval k p = 0 - AlgebraicClosure.finEquivRoots π Mathlib.FieldTheory.IsAlgClosed.AlgebraicClosure
{k : Type u} [Field k] {K : Type u_1} [Field K] [DecidableEq K] {i : k β+* K} {f : AlgebraicClosure.Monics k} (hf : (Polynomial.map i βf).Splits) : Fin (βf).natDegree β β₯(Polynomial.map i βf).roots.toEnumFinset - Field.primitive_element_inf_aux_exists_c π Mathlib.FieldTheory.PrimitiveElement
{F : Type u_1} [Field F] [Infinite F] {E : Type u_2} [Field E] (Ο : F β+* E) (Ξ± Ξ² : E) (f g : Polynomial F) : β c, β Ξ±' β (Polynomial.map Ο f).roots, β Ξ²' β (Polynomial.map Ο g).roots, -(Ξ±' - Ξ±) / (Ξ²' - Ξ²) β Ο c - IsSepClosed.roots_eq_zero_iff π Mathlib.FieldTheory.IsSepClosed
{k : Type u} [Field k] [IsSepClosed k] {p : Polynomial k} (hsep : p.Separable) : p.roots = 0 β p = Polynomial.C (p.coeff 0) - Polynomial.roots_countP_pos_le_signVariations π Mathlib.Algebra.Polynomial.RuleOfSigns
{R : Type u_1} [CommRing R] [LinearOrder R] [IsStrictOrderedRing R] (P : Polynomial R) : Multiset.countP (fun x => 0 < x) P.roots β€ P.signVariations - Polynomial.Monic.irreducible_iff_roots_eq_zero_of_degree_le_three π Mathlib.Algebra.Polynomial.SpecificDegree
{R : Type u_1} [CommRing R] [IsDomain R] {p : Polynomial R} (hp : p.Monic) (hp2 : 2 β€ p.natDegree) (hp3 : p.natDegree β€ 3) : Irreducible p β p.roots = 0 - Polynomial.irreducible_iff_roots_eq_zero_of_degree_le_three π Mathlib.Algebra.Polynomial.SpecificDegree
{K : Type u_1} [Field K] {p : Polynomial K} (hp2 : 2 β€ p.natDegree) (hp3 : p.natDegree β€ 3) : Irreducible p β p.roots = 0 - Polynomial.coeff_eq_esymm_roots_of_card π Mathlib.RingTheory.Polynomial.Vieta
{R : Type u_1} [CommRing R] [IsDomain R] {p : Polynomial R} (hroots : p.roots.card = p.natDegree) {k : β} (h : k β€ p.natDegree) : p.coeff k = p.leadingCoeff * (-1) ^ (p.natDegree - k) * p.roots.esymm (p.natDegree - k) - Polynomial.coeff_eq_esymm_roots_of_splits π Mathlib.RingTheory.Polynomial.Vieta
{F : Type u_2} [Field F] {p : Polynomial F} (hsplit : p.Splits) {k : β} (h : k β€ p.natDegree) : p.coeff k = p.leadingCoeff * (-1) ^ (p.natDegree - k) * p.roots.esymm (p.natDegree - k) - Polynomial.eq_one_of_roots_le π Mathlib.Topology.Algebra.Polynomial
{F : Type u_3} {K : Type u_4} [CommRing F] [NormedField K] {p : Polynomial F} {f : F β+* K} {B : β} (hB : B < 0) (h1 : p.Monic) (h2 : (Polynomial.map f p).Splits) (h3 : β z β (Polynomial.map f p).roots, βzβ β€ B) : p = 1 - Polynomial.coeff_le_of_roots_le π Mathlib.Topology.Algebra.Polynomial
{F : Type u_3} {K : Type u_4} [CommRing F] [NormedField K] {p : Polynomial F} {f : F β+* K} {B : β} (i : β) (h1 : p.Monic) (h2 : (Polynomial.map f p).Splits) (h3 : β z β (Polynomial.map f p).roots, βzβ β€ B) : β(Polynomial.map f p).coeff iβ β€ B ^ (p.natDegree - i) * β(p.natDegree.choose i) - Polynomial.coeff_bdd_of_roots_le π Mathlib.Topology.Algebra.Polynomial
{F : Type u_3} {K : Type u_4} [CommRing F] [NormedField K] {B : β} {d : β} (f : F β+* K) {p : Polynomial F} (h1 : p.Monic) (h2 : (Polynomial.map f p).Splits) (h3 : p.natDegree β€ d) (h4 : β z β (Polynomial.map f p).roots, βzβ β€ B) (i : β) : β(Polynomial.map f p).coeff iβ β€ max B 1 ^ d * β(d.choose (d / 2)) - FiniteField.roots_X_pow_card_sub_X π Mathlib.FieldTheory.Finite.Basic
(K : Type u_1) [Field K] [Fintype K] : (Polynomial.X ^ Fintype.card K - Polynomial.X).roots = Finset.univ.val - Subfield.roots_X_pow_char_sub_X_bot π Mathlib.FieldTheory.Finite.Basic
(F : Type u_3) [Field F] (p : β) [Fact (Nat.Prime p)] [CharP F p] : (Polynomial.X ^ p - Polynomial.X).roots = Finset.univ.val - Polynomial.resultant_eq_prod_eval π Mathlib.RingTheory.Polynomial.Resultant.Basic
{R : Type u_1} [CommRing R] [IsDomain R] (f g : Polynomial R) (n : β) (hg : g.natDegree β€ n) (hf : f.Splits) : f.resultant g f.natDegree n = f.leadingCoeff ^ n * (Multiset.map (fun x => Polynomial.eval x g) f.roots).prod - Polynomial.resultant_eq_prod_roots_sub π Mathlib.RingTheory.Polynomial.Resultant.Basic
{K : Type u_3} [Field K] (f g : Polynomial K) (hf : f.Monic) (hg : g.Monic) (hf' : f.Splits) (hg' : g.Splits) : f.resultant g = (Multiset.map (fun ij => ij.1 - ij.2) (f.roots ΓΛ’ g.roots)).prod - Polynomial.card_roots_le_derivative π Mathlib.Analysis.Calculus.LocalExtr.Polynomial
(p : Polynomial β) : p.roots.card β€ (Polynomial.derivative p).roots.card + 1 - Polynomial.card_roots_toFinset_le_derivative π Mathlib.Analysis.Calculus.LocalExtr.Polynomial
(p : Polynomial β) : p.roots.toFinset.card β€ (Polynomial.derivative p).roots.toFinset.card + 1 - Polynomial.card_roots_toFinset_le_card_roots_derivative_diff_roots_succ π Mathlib.Analysis.Calculus.LocalExtr.Polynomial
(p : Polynomial β) : p.roots.toFinset.card β€ ((Polynomial.derivative p).roots.toFinset \ p.roots.toFinset).card + 1 - Polynomial.card_roots_toFinset_le_card_roots_derivative_sdiff_roots_succ π Mathlib.Analysis.Calculus.LocalExtr.Polynomial
(p : Polynomial β) : p.roots.toFinset.card β€ ((Polynomial.derivative p).roots.toFinset \ p.roots.toFinset).card + 1 - Polynomial.sum_derivRootWeight_pos π Mathlib.Analysis.Complex.Polynomial.GaussLucas
{P : Polynomial β} (hP : 0 < P.degree) (z : β) : 0 < β w β P.roots.toFinset, P.derivRootWeight z w - Polynomial.eq_centerMass_of_eval_derivative_eq_zero π Mathlib.Analysis.Complex.Polynomial.GaussLucas
{P : Polynomial β} {z : β} (hP : 0 < P.degree) (hz : Polynomial.eval z (Polynomial.derivative P) = 0) : z = P.roots.toFinset.centerMass (P.derivRootWeight z) id - Matrix.det_eq_prod_roots_charpoly π Mathlib.LinearAlgebra.Matrix.Charpoly.Eigs
{n : Type u_1} [Fintype n] [DecidableEq n] {K : Type u_3} [Field K] (A : Matrix n n K) [IsAlgClosed K] : A.det = A.charpoly.roots.prod - Matrix.det_eq_prod_roots_charpoly_of_splits π Mathlib.LinearAlgebra.Matrix.Charpoly.Eigs
{n : Type u_1} [Fintype n] [DecidableEq n] {R : Type u_2} [CommRing R] {B : Matrix n n R} [IsDomain R] (hAps : B.charpoly.Splits) : B.det = B.charpoly.roots.prod - Matrix.trace_eq_sum_roots_charpoly π Mathlib.LinearAlgebra.Matrix.Charpoly.Eigs
{n : Type u_1} [Fintype n] [DecidableEq n] {K : Type u_3} [Field K] (A : Matrix n n K) [IsAlgClosed K] : A.trace = A.charpoly.roots.sum - Matrix.trace_eq_sum_roots_charpoly_of_splits π Mathlib.LinearAlgebra.Matrix.Charpoly.Eigs
{n : Type u_1} [Fintype n] [DecidableEq n] {R : Type u_2} [CommRing R] {B : Matrix n n R} [IsDomain R] (hAps : B.charpoly.Splits) : B.trace = B.charpoly.roots.sum - Module.End.det_eq_prod_roots_charpoly_of_splits π Mathlib.LinearAlgebra.Eigenspace.Charpoly
{K : Type u_3} {V : Type u_4} [Field K] [AddCommGroup V] [Module K V] [Module.Finite K V] {f : Module.End K V} (h : (LinearMap.charpoly f).Splits) : LinearMap.det f = (LinearMap.charpoly f).roots.prod - Module.End.trace_eq_sum_roots_charpoly_of_splits π Mathlib.LinearAlgebra.Eigenspace.Charpoly
{K : Type u_3} {V : Type u_4} [Field K] [AddCommGroup V] [Module K V] [Module.Finite K V] {f : Module.End K V} (h : (LinearMap.charpoly f).Splits) : (LinearMap.trace K V) f = (LinearMap.charpoly f).roots.sum - LinearMap.IsSymmetric.roots_charpoly_eq_eigenvalues π Mathlib.Analysis.InnerProductSpace.Spectrum
{π : Type u_1} [RCLike π] {E : Type u_2} [NormedAddCommGroup E] [InnerProductSpace π E] {T : E ββ[π] E} [FiniteDimensional π E] {n : β} (hT : T.IsSymmetric) (hn : Module.finrank π E = n) : T.charpoly.roots = Multiset.map (RCLike.ofReal β hT.eigenvalues hn) Finset.univ.val - LinearMap.IsSymmetric.sort_roots_charpoly_eq_eigenvalues π Mathlib.Analysis.InnerProductSpace.Spectrum
{π : Type u_1} [RCLike π] {E : Type u_2} [NormedAddCommGroup E] [InnerProductSpace π E] {T : E ββ[π] E} [FiniteDimensional π E] {n : β} (hT : T.IsSymmetric) (hn : Module.finrank π E = n) : ((Multiset.map (βRCLike.re) T.charpoly.roots).sort fun x1 x2 => x1 β₯ x2) = List.ofFn (hT.eigenvalues hn) - Matrix.IsHermitian.roots_charpoly_eq_eigenvalues π Mathlib.Analysis.Matrix.Spectrum
{π : Type u_1} [RCLike π] {n : Type u_2} [Fintype n] {A : Matrix n n π} [DecidableEq n] (hA : A.IsHermitian) : A.charpoly.roots = Multiset.map (RCLike.ofReal β hA.eigenvalues) Finset.univ.val - Matrix.IsHermitian.roots_charpoly_eq_eigenvaluesβ π Mathlib.Analysis.Matrix.Spectrum
{π : Type u_1} [RCLike π] {n : Type u_2} [Fintype n] {A : Matrix n n π} [DecidableEq n] (hA : A.IsHermitian) : A.charpoly.roots = Multiset.map (RCLike.ofReal β hA.eigenvaluesβ) Finset.univ.val - Matrix.IsHermitian.sort_roots_charpoly_eq_eigenvaluesβ π Mathlib.Analysis.Matrix.Spectrum
{π : Type u_1} [RCLike π] {n : Type u_2} [Fintype n] {A : Matrix n n π} [DecidableEq n] (hA : A.IsHermitian) : ((Multiset.map (βRCLike.re) A.charpoly.roots).sort fun x1 x2 => x1 β₯ x2) = List.ofFn hA.eigenvaluesβ - Polynomial.roots_of_cyclotomic π Mathlib.RingTheory.Polynomial.Cyclotomic.Basic
(n : β) (R : Type u_2) [CommRing R] [IsDomain R] : (Polynomial.cyclotomic' n R).roots = (primitiveRoots n R).val - IsPrimitiveRoot.is_roots_of_minpoly π Mathlib.RingTheory.RootsOfUnity.Minpoly
{n : β} {K : Type u_1} [CommRing K] {ΞΌ : K} (h : IsPrimitiveRoot ΞΌ n) [IsDomain K] [CharZero K] [DecidableEq K] : primitiveRoots n K β (Polynomial.map (Int.castRingHom K) (minpoly β€ ΞΌ)).roots.toFinset - Polynomial.roots_cyclotomic_nodup π Mathlib.RingTheory.Polynomial.Cyclotomic.Roots
{R : Type u_1} [CommRing R] {n : β} [IsDomain R] [NeZero βn] : (Polynomial.cyclotomic n R).roots.Nodup - Polynomial.cyclotomic.roots_eq_primitiveRoots_val π Mathlib.RingTheory.Polynomial.Cyclotomic.Roots
{R : Type u_1} [CommRing R] {n : β} [IsDomain R] [NeZero βn] : (Polynomial.cyclotomic n R).roots = (primitiveRoots n R).val - Polynomial.cyclotomic.roots_to_finset_eq_primitiveRoots π Mathlib.RingTheory.Polynomial.Cyclotomic.Roots
{R : Type u_1} [CommRing R] {n : β} [IsDomain R] [NeZero βn] : { val := (Polynomial.cyclotomic n R).roots, nodup := β― } = primitiveRoots n R - Polynomial.exists_roots_norm_sub_lt_of_norm_coeff_sub_lt π Mathlib.Analysis.Normed.Field.Approximation
{K : Type u_1} [NormedField K] {f g : Polynomial K} {Ξ΅ : β} (hΞ΅ : 0 < Ξ΅) {a : K} (ha : Polynomial.eval a f = 0) (hfm : f.Monic) (hgm : g.Monic) (hdeg : g.natDegree = f.natDegree) (hcoeff : β (i : β), βg.coeff i - f.coeff iβ < Ξ΅) (hg : g.Splits) : β b β g.roots, βa - bβ < ((βf.natDegree + 1) * Ξ΅) ^ (βf.natDegree)β»ΒΉ * max βaβ 1 - spectralNorm.spectralMulAlgNorm_eq_of_mem_roots π Mathlib.Analysis.Normed.Unbundled.SpectralNorm
(K : Type u) [NontriviallyNormedField K] (L : Type v) [Field L] [Algebra K L] [hu : IsUltrametricDist K] [CompleteSpace K] (x : L) {E : Type u_2} [Field E] [Algebra K E] [Algebra L E] [IsScalarTower K L E] [Algebra.IsAlgebraic K E] {a : E} (ha : a β ((Polynomial.mapAlg K E) (minpoly K x)).roots) : (spectralMulAlgNorm K E) a = (spectralMulAlgNorm K E) ((algebraMap L E) x) - spectralNorm.spectralNorm_pow_natDegree_eq_prod_roots π Mathlib.Analysis.Normed.Unbundled.SpectralNorm
(K : Type u) [NontriviallyNormedField K] (L : Type v) [Field L] [Algebra K L] [hu : IsUltrametricDist K] [CompleteSpace K] (x : L) {E : Type u_2} [Field E] [Algebra K E] [Algebra L E] [IsScalarTower K L E] [Polynomial.IsSplittingField L E ((Polynomial.mapAlg K L) (minpoly K x))] [Algebra.IsAlgebraic K E] : (spectralMulAlgNorm K E) ((algebraMap L E) x) ^ (minpoly K x).natDegree = (spectralMulAlgNorm K E) ((Polynomial.mapAlg K E) (minpoly K x)).roots.prod - Polynomial.one_le_prod_max_one_norm_roots π Mathlib.Analysis.Polynomial.MahlerMeasure
(p : Polynomial β) : 1 β€ (Multiset.map (fun a => max 1 βaβ) p.roots).prod - Polynomial.logMahlerMeasure_eq_log_leadingCoeff_add_sum_log_roots π Mathlib.Analysis.Polynomial.MahlerMeasure
(p : Polynomial β) : p.logMahlerMeasure = Real.log βp.leadingCoeffβ + (Multiset.map (fun a => βaβ.posLog) p.roots).sum - Polynomial.mahlerMeasure_eq_leadingCoeff_mul_prod_roots π Mathlib.Analysis.Polynomial.MahlerMeasure
(p : Polynomial β) : p.mahlerMeasure = βp.leadingCoeffβ * (Multiset.map (fun a => max 1 βaβ) p.roots).prod - Polynomial.prod_max_one_norm_roots_le_mahlerMeasure_of_one_le_leadingCoeff π Mathlib.Analysis.Polynomial.MahlerMeasure
{p : Polynomial β} (hlc : 1 β€ βp.leadingCoeffβ) : (Multiset.map (fun a => max 1 βaβ) p.roots).prod β€ p.mahlerMeasure - Polynomial.Chebyshev.roots_U_real π Mathlib.Analysis.SpecialFunctions.Trigonometric.Chebyshev.RootsExtrema
(n : β) : (Polynomial.Chebyshev.U β βn).roots = (Finset.image (fun k => Real.cos ((βk + 1) * Real.pi / (βn + 1))) (Finset.range n)).val - Polynomial.Chebyshev.roots_T_real π Mathlib.Analysis.SpecialFunctions.Trigonometric.Chebyshev.RootsExtrema
(n : β) : (Polynomial.Chebyshev.T β βn).roots = (Finset.image (fun k => Real.cos ((2 * βk + 1) * Real.pi / (2 * βn))) (Finset.range n)).val - Polynomial.eq_mul_mul_of_roots_quadratic_eq_pair π Mathlib.RingTheory.Polynomial.SmallDegreeVieta
{R : Type u_1} [CommRing R] [IsDomain R] {a b c x1 x2 : R} (hroots : (Polynomial.C a * Polynomial.X ^ 2 + Polynomial.C b * Polynomial.X + Polynomial.C c).roots = {x1, x2}) : c = a * x1 * x2 - Polynomial.eq_neg_mul_add_of_roots_quadratic_eq_pair π Mathlib.RingTheory.Polynomial.SmallDegreeVieta
{R : Type u_1} [CommRing R] [IsDomain R] {a b c x1 x2 : R} (hroots : (Polynomial.C a * Polynomial.X ^ 2 + Polynomial.C b * Polynomial.X + Polynomial.C c).roots = {x1, x2}) : b = -a * (x1 + x2) - Polynomial.roots_quadratic_eq_pair_iff_of_ne_zero π Mathlib.RingTheory.Polynomial.SmallDegreeVieta
{R : Type u_1} [CommRing R] [IsDomain R] {a b c x1 x2 : R} (ha : a β 0) : (Polynomial.C a * Polynomial.X ^ 2 + Polynomial.C b * Polynomial.X + Polynomial.C c).roots = {x1, x2} β b = -a * (x1 + x2) β§ c = a * x1 * x2 - Polynomial.roots_quadratic_eq_pair_iff_of_ne_zero' π Mathlib.RingTheory.Polynomial.SmallDegreeVieta
{R : Type u_1} [Field R] {a b c x1 x2 : R} (ha : a β 0) : (Polynomial.C a * Polynomial.X ^ 2 + Polynomial.C b * Polynomial.X + Polynomial.C c).roots = {x1, x2} β x1 + x2 = -b / a β§ x1 * x2 = c / a
About
Loogle searches Lean and Mathlib definitions and theorems.
You can use Loogle from within the Lean4 VSCode language extension
using the Loogle command from the command palette. 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.You can filter for definitions vs theorems: Using
β’ (_ : Type _)finds all definitions which provide data whileβ’ (_ : Prop)finds all theorems (and definitions of proofs).
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. Please review the Lean FRO Terms of Use and Privacy Policy.
This is Loogle revision 9f11169 serving mathlib revision ce5dd8c