Theory poly

Parents

Contents

Type operators

(none)

Constants

Definitions

degreenormalizepoly_add_defpoly_cmul_defpoly_defpoly_diff_aux_defpoly_diff_defpoly_dividespoly_exp_defpoly_mul_defpoly_neg_defpoly_orderrsquarefree

Theorems

DEGREE_ZEROFINITE_LEMMAORDERORDER_DECOMPORDER_DIFFORDER_DIVIDESORDER_MULORDER_POLYORDER_ROOTORDER_THMORDER_UNIQUEPOLY_ADDPOLY_ADD_CLAUSESPOLY_ADD_RZEROPOLY_CMULPOLY_CMUL_CLAUSESPOLY_CONTPOLY_DIFFPOLY_DIFFERENTIABLEPOLY_DIFF_ADDPOLY_DIFF_AUX_ADDPOLY_DIFF_AUX_CMULPOLY_DIFF_AUX_ISZEROPOLY_DIFF_AUX_MUL_LEMMAPOLY_DIFF_AUX_NEGPOLY_DIFF_CLAUSESPOLY_DIFF_CMULPOLY_DIFF_EXPPOLY_DIFF_EXP_PRIMEPOLY_DIFF_ISZEROPOLY_DIFF_LEMMAPOLY_DIFF_MULPOLY_DIFF_MUL_LEMMAPOLY_DIFF_NEGPOLY_DIFF_WELLDEFPOLY_DIFF_ZEROPOLY_DIVIDES_ADDPOLY_DIVIDES_EXPPOLY_DIVIDES_REFLPOLY_DIVIDES_SUBPOLY_DIVIDES_SUB2POLY_DIVIDES_TRANSPOLY_DIVIDES_ZEROPOLY_ENTIREPOLY_ENTIRE_LEMMAPOLY_EXPPOLY_EXP_ADDPOLY_EXP_DIVIDESPOLY_EXP_EQ_0POLY_EXP_PRIME_EQ_0POLY_IVT_NEGPOLY_IVT_POSPOLY_LENGTH_MULPOLY_LINEAR_DIVIDESPOLY_LINEAR_REMPOLY_MONOPOLY_MULPOLY_MUL_ASSOCPOLY_MUL_CLAUSESPOLY_MUL_LCANCELPOLY_MVTPOLY_NEGPOLY_NEG_CLAUSESPOLY_NORMALIZEPOLY_ORDERPOLY_ORDER_EXISTSPOLY_PRIMESPOLY_PRIME_EQ_0POLY_ROOTS_FINITEPOLY_ROOTS_FINITE_LEMMAPOLY_ROOTS_FINITE_SETPOLY_ROOTS_INDEX_LEMMAPOLY_ROOTS_INDEX_LENGTHPOLY_SQUAREFREE_DECOMPPOLY_SQUAREFREE_DECOMP_ORDERPOLY_ZEROPOLY_ZERO_LEMMARSQUAREFREE_DECOMPRSQUAREFREE_ROOTS

Definitions

degree
⊢ ∀p. degree p = PRE (LENGTH (normalize p))
⊢ (normalize [] = []) ∧
  ∀h t.
    normalize (h::t) =
    if normalize t = [] then if h = 0 then [] else [h] else h::normalize t
⊢ (∀l2. [] + l2 = l2) ∧
  ∀h t l2. (h::t) + l2 = if l2 = [] then h::t else h + HD l2::t + TL l2
⊢ (∀c. c ## [] = []) ∧ ∀c h t. c ## (h::t) = c * h::c ## t
⊢ (∀x. poly [] x = 0) ∧ ∀h t x. poly (h::t) x = h + x * poly t x
⊢ (∀n. poly_diff_aux n [] = []) ∧
  ∀n h t. poly_diff_aux n (h::t) = &n * h::poly_diff_aux (SUC n) t
⊢ ∀l. diff l = if l = [] then [] else poly_diff_aux 1 (TL l)
poly_divides
⊢ ∀p1 p2. p1 poly_divides p2 ⇔ ∃q. poly p2 = poly (p1 * q)
⊢ (∀p. p poly_exp 0 = [1]) ∧ ∀p n. p poly_exp SUC n = p * p poly_exp n
⊢ (∀l2. [] * l2 = []) ∧
  ∀h t l2. (h::t) * l2 = if t = [] then h ## l2 else h ## l2 + (0::t * l2)
⊢ $~ = $## (-1)
poly_order
⊢ ∀a p.
    poly_order a p =
    @n. [-a; 1] poly_exp n poly_divides p ∧
        ¬([-a; 1] poly_exp SUC n poly_divides p)
rsquarefree
⊢ ∀p. rsquarefree p ⇔
      poly p ≠ poly [] ∧ ∀a. (poly_order a p = 0) ∨ (poly_order a p = 1)

Theorems

⊢ ∀p. (poly p = poly []) ⇒ (degree p = 0)
⊢ ∀i N P. (∀x. P x ⇒ ∃n. n < N ∧ (x = i n)) ⇒ ∃a. ∀x. P x ⇒ x < a
⊢ ∀p a n.
    [-a; 1] poly_exp n poly_divides p ∧
    ¬([-a; 1] poly_exp SUC n poly_divides p) ⇔
    (n = poly_order a p) ∧ poly p ≠ poly []
⊢ ∀p a.
    poly p ≠ poly [] ⇒
    ∃q. (poly p = poly ([-a; 1] poly_exp poly_order a p * q)) ∧
        ¬([-a; 1] poly_divides q)
⊢ ∀p a.
    poly (diff p) ≠ poly [] ∧ poly_order a p ≠ 0 ⇒
    (poly_order a p = SUC (poly_order a (diff p)))
⊢ ∀p a n.
    [-a; 1] poly_exp n poly_divides p ⇔
    (poly p = poly []) ∨ n ≤ poly_order a p
⊢ ∀a p q.
    poly (p * q) ≠ poly [] ⇒
    (poly_order a (p * q) = poly_order a p + poly_order a q)
⊢ ∀p q a. (poly p = poly q) ⇒ (poly_order a p = poly_order a q)
⊢ ∀p a. (poly p a = 0) ⇔ (poly p = poly []) ∨ poly_order a p ≠ 0
⊢ ∀p a.
    poly p ≠ poly [] ⇒
    [-a; 1] poly_exp poly_order a p poly_divides p ∧
    ¬([-a; 1] poly_exp SUC (poly_order a p) poly_divides p)
⊢ ∀p a n.
    poly p ≠ poly [] ∧ [-a; 1] poly_exp n poly_divides p ∧
    ¬([-a; 1] poly_exp SUC n poly_divides p) ⇒
    (n = poly_order a p)
⊢ ∀p1 p2 x. poly (p1 + p2) x = poly p1 x + poly p2 x
⊢ ([] + p2 = p2) ∧ (p1 + [] = p1) ∧
  ((h1::t1) + (h2::t2) = h1 + h2::t1 + t2)
⊢ ∀p. poly (p + []) = poly p
⊢ ∀p c x. poly (c ## p) x = c * poly p x
⊢ (c ## [] = []) ∧ (c ## (h::t) = c * h::c ## t)
⊢ ∀l x. (λx. poly l x) contl x
⊢ ∀l x. ((λx. poly l x) diffl poly (diff l) x) x
⊢ ∀l x. (λx. poly l x) differentiable x
⊢ ∀p1 p2. poly (diff (p1 + p2)) = poly (diff p1 + diff p2)
⊢ ∀p1 p2 n.
    poly (poly_diff_aux n (p1 + p2)) =
    poly (poly_diff_aux n p1 + poly_diff_aux n p2)
⊢ ∀p c n. poly (poly_diff_aux n (c ## p)) = poly (c ## poly_diff_aux n p)
⊢ ∀p n. EVERY (λc. c = 0) (poly_diff_aux (SUC n) p) ⇔ EVERY (λc. c = 0) p
⊢ ∀p n. poly (poly_diff_aux (SUC n) p) = poly (poly_diff_aux n p + p)
⊢ ∀p n. poly (poly_diff_aux n (~p)) = poly (~poly_diff_aux n p)
⊢ (diff [] = []) ∧ (diff [c] = []) ∧ (diff (h::t) = poly_diff_aux 1 t)
⊢ ∀p c. poly (diff (c ## p)) = poly (c ## diff p)
⊢ ∀p n.
    poly (diff (p poly_exp SUC n)) = poly (&SUC n ## p poly_exp n * diff p)
⊢ ∀n a.
    poly (diff ([-a; 1] poly_exp SUC n)) =
    poly (&SUC n ## [-a; 1] poly_exp n)
⊢ ∀p. (poly (diff p) = poly []) ⇒ ∃h. poly p = poly [h]
⊢ ∀l n x.
    ((λx. x pow SUC n * poly l x) diffl
     (x pow n * poly (poly_diff_aux (SUC n) l) x)) x
⊢ ∀p1 p2. poly (diff (p1 * p2)) = poly (p1 * diff p2 + diff p1 * p2)
⊢ ∀t h. poly (diff (h::t)) = poly ((0::diff t) + t)
⊢ ∀p. poly (diff (~p)) = poly (~diff p)
⊢ ∀p q. (poly p = poly q) ⇒ (poly (diff p) = poly (diff q))
⊢ ∀p. (poly p = poly []) ⇒ (poly (diff p) = poly [])
⊢ ∀p q r. p poly_divides q ∧ p poly_divides r ⇒ p poly_divides q + r
⊢ ∀p m n. m ≤ n ⇒ p poly_exp m poly_divides p poly_exp n
⊢ ∀p. p poly_divides p
⊢ ∀p q r. p poly_divides q ∧ p poly_divides q + r ⇒ p poly_divides r
⊢ ∀p q r. p poly_divides r ∧ p poly_divides q + r ⇒ p poly_divides q
⊢ ∀p q r. p poly_divides q ∧ q poly_divides r ⇒ p poly_divides r
⊢ ∀p q. (poly p = poly []) ⇒ q poly_divides p
⊢ ∀p q. (poly (p * q) = poly []) ⇔ (poly p = poly []) ∨ (poly q = poly [])
⊢ ∀p q. poly p ≠ poly [] ∧ poly q ≠ poly [] ⇒ poly (p * q) ≠ poly []
⊢ ∀p n x. poly (p poly_exp n) x = poly p x pow n
⊢ ∀d n p. poly (p poly_exp (n + d)) = poly (p poly_exp n * p poly_exp d)
⊢ ∀p q m n.
    p poly_exp n poly_divides q ∧ m ≤ n ⇒ p poly_exp m poly_divides q
⊢ ∀p n. (poly (p poly_exp n) = poly []) ⇔ (poly p = poly []) ∧ n ≠ 0
⊢ ∀a n. poly ([a; 1] poly_exp n) ≠ poly []
⊢ ∀p a b.
    a < b ∧ poly p a > 0 ∧ poly p b < 0 ⇒
    ∃x. a < x ∧ x < b ∧ (poly p x = 0)
⊢ ∀p a b.
    a < b ∧ poly p a < 0 ∧ poly p b > 0 ⇒
    ∃x. a < x ∧ x < b ∧ (poly p x = 0)
⊢ ∀q. LENGTH ([-a; 1] * q) = SUC (LENGTH q)
⊢ ∀a p. (poly p a = 0) ⇔ (p = []) ∨ ∃q. p = [-a; 1] * q
⊢ ∀t h. ∃q r. h::t = [r] + [-a; 1] * q
⊢ ∀x k p. abs x ≤ k ⇒ abs (poly p x) ≤ poly (MAP abs p) k
⊢ ∀x p1 p2. poly (p1 * p2) x = poly p1 x * poly p2 x
⊢ ∀p q r. poly (p * (q * r)) = poly (p * q * r)
⊢ ([] * p2 = []) ∧ ([h1] * p2 = h1 ## p2) ∧
  ((h1::k1::t1) * p2 = h1 ## p2 + (0::(k1::t1) * p2))
⊢ ∀p q r.
    (poly (p * q) = poly (p * r)) ⇔ (poly p = poly []) ∨ (poly q = poly r)
⊢ ∀p a b.
    a < b ⇒
    ∃x. a < x ∧ x < b ∧ (poly p b − poly p a = (b − a) * poly (diff p) x)
⊢ ∀p x. poly (~p) x = -poly p x
⊢ (~[] = []) ∧ (~(h::t) = -h::~t)
⊢ ∀p. poly (normalize p) = poly p
⊢ ∀p a.
    poly p ≠ poly [] ⇒
    ∃!n.
      [-a; 1] poly_exp n poly_divides p ∧
      ¬([-a; 1] poly_exp SUC n poly_divides p)
⊢ ∀a d p.
    (LENGTH p = d) ∧ poly p ≠ poly [] ⇒
    ∃n. [-a; 1] poly_exp n poly_divides p ∧
        ¬([-a; 1] poly_exp SUC n poly_divides p)
⊢ ∀a p q.
    [a; 1] poly_divides p * q ⇔
    [a; 1] poly_divides p ∨ [a; 1] poly_divides q
⊢ ∀a. poly [a; 1] ≠ poly []
⊢ ∀p. poly p ≠ poly [] ⇔ ∃N i. ∀x. (poly p x = 0) ⇒ ∃n. n < N ∧ (x = i n)
⊢ ∀p. poly p ≠ poly [] ⇒ ∃N i. ∀x. (poly p x = 0) ⇒ ∃n. n < N ∧ (x = i n)
⊢ ∀p. poly p ≠ poly [] ⇒ FINITE {x | poly p x = 0}
⊢ ∀n p.
    poly p ≠ poly [] ∧ (LENGTH p = n) ⇒
    ∃i. ∀x. (poly p x = 0) ⇒ ∃m. m ≤ n ∧ (x = i m)
⊢ ∀p. poly p ≠ poly [] ⇒
      ∃i. ∀x. (poly p x = 0) ⇒ ∃n. n ≤ LENGTH p ∧ (x = i n)
⊢ ∀p q d e r s.
    poly (diff p) ≠ poly [] ∧ (poly p = poly (q * d)) ∧
    (poly (diff p) = poly (e * d)) ∧ (poly d = poly (r * p + s * diff p)) ⇒
    rsquarefree q ∧ ∀a. (poly q a = 0) ⇔ (poly p a = 0)
⊢ ∀p q d e r s.
    poly (diff p) ≠ poly [] ∧ (poly p = poly (q * d)) ∧
    (poly (diff p) = poly (e * d)) ∧ (poly d = poly (r * p + s * diff p)) ⇒
    ∀a. poly_order a q = if poly_order a p = 0 then 0 else 1
⊢ ∀p. (poly p = poly []) ⇔ EVERY (λc. c = 0) p
⊢ ∀h t. (poly (h::t) = poly []) ⇒ (h = 0) ∧ (poly t = poly [])
⊢ ∀p a.
    rsquarefree p ∧ (poly p a = 0) ⇒
    ∃q. (poly p = poly ([-a; 1] * q)) ∧ poly q a ≠ 0
⊢ ∀p. rsquarefree p ⇔ ∀a. ¬((poly p a = 0) ∧ (poly (diff p) a = 0))