Impressum more_polynomial_props.prf
Sprache: Lisp
(more_polynomial_props
(polynomial_degree_existence 0
(polynomial_degree_existence-1 nil 3591712357
("" (induct "n" )
(("1" (assert )
(("1" (skeep)
(("1" (inst + "0" )
(("1" (assert )
(("1" (split +)
(("1" (grind) nil nil )
("2" (skeep) (("2" (assert ) nil nil )) nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2" (skolem 1 "n" )
(("2" (flatten)
(("2" (skeep)
(("2" (inst - "a" )
(("2" (assert )
(("2"
(case " ((EXISTS (x): polynomial(a, 1+n)(x) /= 0) AND
(EXISTS (i: upto(1+n)): a(i) /= 0))")
(("1" (hide -3)
(("1" (split -)
(("1" (flatten)
(("1" (case "a(1+n) = 0" )
(("1" (skosimp*)
(("1" (inst + "i!1" )
(("1" (assert )
(("1"
(split +)
(("1"
(skeep)
(("1"
(inst - "j" )
(("1" (assert ) nil nil ))
nil ))
nil )
("2"
(hide (-2 3))
(("2"
(replace -2 :dir rl)
(("2"
(decompose-equality 1)
(("2"
(expand "polynomial" 1)
(("2"
(expand "sigma" + 1)
(("2"
(replaces -1)
(("2" (assert ) nil nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2" (inst + "1+n" )
(("2" (assert )
(("2" (skosimp*) (("2" (assert ) nil nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2" (case "a(1+n) /= 0" )
(("1" (flatten)
(("1" (inst 4 "1+n" )
(("1" (assert )
(("1" (skosimp*) (("1" (assert ) nil nil ))
nil ))
nil ))
nil ))
nil )
("2" (flatten)
(("2" (skosimp*)
(("2" (inst + "x!1" )
(("2" (flatten)
(("2"
(rewrite "polynomial_rec" 2)
(("2"
(replaces -1)
(("2" (assert ) nil nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2" (hide (-1 2))
(("2" (ground)
(("1" (lemma "polynomial_eq_coeff" )
(("1" (inst - "a" "LAMBDA (ii:nat): 0" "1+n" )
(("1" (flatten)
(("1" (hide -2)
(("1" (split -)
(("1"
(skosimp*)
(("1" (inst - "i!1" ) nil nil ))
nil )
("2"
(decompose-equality 1)
(("2"
(inst + "x!1" )
(("2"
(flatten)
(("2"
(replaces -2)
(("2"
(expand "polynomial" )
(("2"
(rewrite
"sigma_restrict_eq_0" )
(("2"
(skosimp*)
(("2"
(lift-if)
(("2" (ground) nil nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2" (skosimp*)
(("2" (expand "polynomial" )
(("2" (rewrite "sigma_restrict_eq_0" )
(("2" (skosimp*)
(("2" (inst + "i!1" )
(("2"
(flatten)
(("2"
(lift-if)
(("2" (ground) nil nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
((subrange type-eq-decl nil integers nil )
(polynomial_eq_coeff formula-decl nil polynomials nil )
(NOT const-decl "[bool -> bool]" booleans nil )
(T_low type-eq-decl nil sigma nil )
(T_high type-eq-decl nil sigma nil )
(IF const-decl "[boolean, T, T -> T]" if_def nil )
(* const-decl "[numfield, numfield -> numfield]" number_fields nil )
(sigma_restrict_eq_0 formula-decl nil sigma nil )
(real_lt_is_strict_total_order name-judgement
"(strict_total_order?[real])" real_props nil )
(mult_divides2 application-judgement "(divides(m))" divides nil )
(mult_divides1 application-judgement "(divides(n))" divides nil )
(even_times_int_is_even application-judgement "even_int" integers
nil )
(nnint_times_nnint_is_nnint application-judgement "nonneg_int"
integers nil )
(real_plus_real_is_real application-judgement "real" reals nil )
(polynomial_rec formula-decl nil polynomials nil )
(real_times_real_is_real application-judgement "real" reals nil )
(int_minus_int_is_int application-judgement "int" integers nil )
(+ const-decl "[numfield, numfield -> numfield]" number_fields nil )
(numfield nonempty-type-eq-decl nil number_fields nil )
(posint_plus_nnint_is_posint application-judgement "posint"
integers nil )
(sigma def-decl "real" sigma nil )
(^ const-decl "real" exponentiation nil )
(expt def-decl "real" exponentiation nil )
(real_le_is_total_order name-judgement "(total_order?[real])"
real_props nil )
(real_gt_is_strict_total_order name-judgement
"(strict_total_order?[real])" real_props nil )
(nat_induction formula-decl nil naturalnumbers nil )
(= const-decl "[T, T -> boolean]" equalities nil )
(> const-decl "bool" reals nil )
(AND const-decl "[bool, bool -> bool]" booleans nil )
(upto nonempty-type-eq-decl nil naturalnumbers nil )
(<= const-decl "bool" reals nil )
(polynomial const-decl "[real -> real]" polynomials nil )
(/= const-decl "boolean" notequal nil )
(OR const-decl "[bool, bool -> bool]" booleans nil )
(IMPLIES const-decl "[bool, bool -> bool]" booleans nil )
(sequence type-eq-decl nil sequences nil )
(pred type-eq-decl nil defined_types nil )
(nat nonempty-type-eq-decl nil naturalnumbers nil )
(>= const-decl "bool" reals nil )
(bool nonempty-type-eq-decl nil booleans nil )
(int nonempty-type-eq-decl nil integers nil )
(integer_pred const-decl "[rational -> boolean]" integers nil )
(rational nonempty-type-from-decl nil rationals nil )
(rational_pred const-decl "[real -> boolean]" rationals nil )
(real nonempty-type-from-decl nil reals nil )
(real_pred const-decl "[number_field -> boolean]" reals nil )
(number_field nonempty-type-from-decl nil number_fields nil )
(number_field_pred const-decl "[number -> boolean]" number_fields
nil )
(boolean nonempty-type-decl nil booleans nil )
(number nonempty-type-decl nil numbers nil ))
shostak))
(poly_deriv_limit_TCC1 0
(poly_deriv_limit_TCC1-1 nil 3587828917 ("" (subtype-tcc) nil nil )
((/= const-decl "boolean" notequal nil )) nil ))
(poly_deriv_limit_TCC2 0
(poly_deriv_limit_TCC2-1 nil 3587828917 ("" (subtype-tcc) nil nil )
((real_minus_real_is_real application-judgement "real" reals nil )
(boolean nonempty-type-decl nil booleans nil )
(bool nonempty-type-eq-decl nil booleans nil )
(NOT const-decl "[bool -> bool]" booleans nil )
(number nonempty-type-decl nil numbers nil )
(number_field_pred const-decl "[number -> boolean]" number_fields
nil )
(number_field nonempty-type-from-decl nil number_fields nil )
(real_pred const-decl "[number_field -> boolean]" reals nil )
(real nonempty-type-from-decl nil reals nil )
(>= const-decl "bool" reals nil )
(nonneg_real nonempty-type-eq-decl nil real_types nil )
(> const-decl "bool" reals nil )
(posreal nonempty-type-eq-decl nil real_types nil )
(minus_odd_is_odd application-judgement "odd_int" integers nil )
(real_ge_is_total_order name-judgement "(total_order?[real])"
real_props nil )
(real_gt_is_strict_total_order name-judgement
"(strict_total_order?[real])" real_props nil )
(real_lt_is_strict_total_order name-judgement
"(strict_total_order?[real])" real_props nil )
(int_abs_is_nonneg application-judgement "{j: nonneg_int | j >= i}"
real_defs nil )
(abs const-decl "{n: nonneg_real | n >= m AND n >= -m}" real_defs
nil )
(/= const-decl "boolean" notequal nil ))
nil ))
(poly_deriv_limit 0
(poly_deriv_limit-2 nil 3587828907
("" (lemma "poly_continuous" )
(("" (skeep)
(("" (inst - "poly_deriv(a)" "pn-1" "y" "epsil" )
(("" (assert )
(("" (skeep -1)
(("" (inst + "delta" )
(("" (skeep)
(("" (lemma "poly_mean_value" )
(("" (case "x < y" )
(("1" (inst - "a" "pn" "x" "y" )
(("1" (assert )
(("1" (skeep -)
(("1"
(invoke (case "%1 = %2" ) (! -4 2)
(! 2 1 1 2))
(("1" (replace -1)
(("1"
(replace -5 :dir rl)
(("1"
(inst - "cc" )
(("1"
(split -)
(("1" (propax) nil nil )
("2"
(expand "abs" )
(("2"
(lift-if)
(("2" (ground) nil nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2" (assert ) (("2" (field) nil nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2" (inst - "a" "pn" "y" "x" )
(("2" (assert )
(("2" (skeep -1)
(("2" (replace -3 :dir rl)
(("2" (inst - "cc" )
(("2"
(split -)
(("1" (propax) nil nil )
("2"
(expand "abs" )
(("2"
(lift-if)
(("2" (ground) nil nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
((real_div_nzreal_is_real application-judgement "real" reals nil )
(real_minus_real_is_real application-judgement "real" reals nil )
(poly_mean_value formula-decl nil polynomials nil )
(NOT const-decl "[bool -> bool]" booleans nil )
(TRUE const-decl "bool" booleans nil )
(id const-decl "(bijective?[T, T])" identity nil )
(bijective? const-decl "bool" functions nil )
(* const-decl "[numfield, numfield -> numfield]" number_fields nil )
(FDX_44 skolem-const-decl "real" more_polynomial_props nil )
(FDX_45 skolem-const-decl "real" more_polynomial_props nil )
(nonzero_real nonempty-type-eq-decl nil reals nil )
(both_sides_times1 formula-decl nil real_props nil )
(real_times_real_is_real application-judgement "real" reals nil )
(nonzero_times3 formula-decl nil real_props nil )
(minus_odd_is_odd application-judgement "odd_int" integers nil )
(abs const-decl "{n: nonneg_real | n >= m AND n >= -m}" real_defs
nil )
(minus_real_is_real application-judgement "real" reals nil )
(real_le_is_total_order name-judgement "(total_order?[real])"
real_props nil )
(= const-decl "[T, T -> boolean]" equalities nil )
(/= const-decl "boolean" notequal nil )
(nznum nonempty-type-eq-decl nil number_fields nil )
(/ const-decl "[numfield, nznum -> numfield]" number_fields nil )
(polynomial const-decl "[real -> real]" polynomials nil )
(real_lt_is_strict_total_order name-judgement
"(strict_total_order?[real])" real_props nil )
(real_gt_is_strict_total_order name-judgement
"(strict_total_order?[real])" real_props nil )
(< const-decl "bool" reals nil )
(posreal nonempty-type-eq-decl nil real_types nil )
(nonneg_real nonempty-type-eq-decl nil real_types nil )
(posnat nonempty-type-eq-decl nil integers nil )
(> const-decl "bool" reals nil )
(nonneg_int nonempty-type-eq-decl nil integers nil )
(- const-decl "[numfield, numfield -> numfield]" number_fields nil )
(numfield nonempty-type-eq-decl nil number_fields nil )
(poly_deriv const-decl "real" polynomials nil )
(sequence type-eq-decl nil sequences nil )
(nat nonempty-type-eq-decl nil naturalnumbers nil )
(>= const-decl "bool" reals nil )
(bool nonempty-type-eq-decl nil booleans nil )
(int nonempty-type-eq-decl nil integers nil )
(integer_pred const-decl "[rational -> boolean]" integers nil )
(rational nonempty-type-from-decl nil rationals nil )
(rational_pred const-decl "[real -> boolean]" rationals nil )
(real nonempty-type-from-decl nil reals nil )
(real_pred const-decl "[number_field -> boolean]" reals nil )
(number_field nonempty-type-from-decl nil number_fields nil )
(number_field_pred const-decl "[number -> boolean]" number_fields
nil )
(boolean nonempty-type-decl nil booleans nil )
(number nonempty-type-decl nil numbers nil )
(int_minus_int_is_int application-judgement "int" integers nil )
(real_ge_is_total_order name-judgement "(total_order?[real])"
real_props nil )
(poly_continuous formula-decl nil polynomials nil ))
nil )
(poly_deriv_limit-1 nil 3587821660
(""
(name "PQ"
"LAMBDA (a:sequence[real],ki:nat): (FORALL (y: real, epsil: posreal):
EXISTS (delta: posreal):
FORALL (x: real):
abs(x - y) < delta AND x /= y IMPLIES
abs(polynomial(poly_deriv(a), ki+1 - 1)(y) -
(polynomial(a, ki+1)(x) - polynomial(a, ki+1)(y)) / (x - y))
< epsil)")
(("1" (case "FORALL (a:sequence[real],ki:nat): PQ(a,ki)" )
(("1" (skeep)
(("1" (inst - "a" "pn-1" )
(("1" (expand "PQ" -1)
(("1" (assert ) (("1" (inst - "y" "epsil" ) nil nil )) nil ))
nil ))
nil ))
nil )
("2" (hide 2)
(("2"
(case "FORALL (kc:real,nm:nat,ki:nat): (LET apow = (LAMBDA (ii:nat): IF ii = nm THEN kc ELSE 0 ENDIF) IN PQ(apow,ki))" )
(("1" (induct "ki" 1)
(("1" (hide -)
(("1" (skeep)
(("1" (expand "PQ" )
(("1" (skeep)
(("1" (case "a(1) = 0" )
(("1" (inst + "1" )
(("1" (skeep)
(("1" (expand "polynomial" +)
(("1" (expand "sigma" )
(("1"
(expand "sigma" )
(("1"
(expand "sigma" )
(("1"
(replace -1)
(("1"
(assert )
(("1"
(expand "poly_deriv" )
(("1"
(replaces -1)
(("1"
(assert )
(("1"
(expand "abs" )
(("1" (assert ) nil nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2" (inst + "epsil/abs(a(1))" )
(("1" (skeep)
(("1" (expand "polynomial" +)
(("1" (expand "sigma" )
(("1"
(expand "sigma" )
(("1"
(expand "sigma" )
(("1"
(expand "poly_deriv" )
(("1"
(expand "^" )
(("1"
(expand "expt" )
(("1"
(expand "expt" )
(("1"
(case
"a(1)*(x-y)/(x-y) = a(1)" )
(("1"
(replace -1)
(("1"
(assert )
(("1"
(expand "abs" +)
(("1"
(assert )
nil
nil ))
nil ))
nil ))
nil )
("2"
(cross-mult 1)
nil
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2" (split)
(("1" (cross-mult 1) nil nil )
("2" (cross-mult 1) nil nil ))
nil )
("3" (expand "abs" )
(("3" (lift-if) (("3" (ground) nil nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2" (skeep)
(("2" (skeep)
(("2" (inst - "a(j+2)" "j+2" "j+1" )
(("2" (skoletin -2)
(("2" (inst - "a" )
(("2" (expand "PQ" (-1 -3 1))
(("2" (skeep)
(("2" (inst - "y" "epsil/2" )
(("2" (inst - "y" "epsil/2" )
(("2"
(skosimp*)
(("2"
(inst + "min(delta!1,delta!2)" )
(("2"
(skeep)
(("2"
(inst - "x" )
(("2"
(inst - "x" )
(("2"
(assert )
(("2"
(case
"FORALL (xy:real): polynomial(a,2+j)(xy) = polynomial(a,1+j)(xy) + polynomial(apow,2+j)(xy)" )
(("1"
(rewrite -1)
(("1"
(rewrite -1)
(("1"
(hide -1)
(("1"
(case
"FORALL (xy:real): polynomial(poly_deriv(a),1+j)(xy) = polynomial(poly_deriv(a),j)(xy) + polynomial(poly_deriv(apow),1+j)(xy)" )
(("1"
(rewrite -1)
(("1"
(hide -1)
(("1"
(expand
"abs"
(-1 -3 +))
(("1"
(lift-if)
(("1"
(ground)
nil
nil ))
nil ))
nil ))
nil ))
nil )
("2"
(hide-all-but 1)
(("2"
(skeep)
(("2"
(expand
"polynomial" )
(("2"
(expand
"sigma"
+
1)
(("2"
(expand
"sigma" )
(("2"
(invoke
(case
"%1 = 0" )
(!
1
2
1))
(("1"
(replaces
-1)
(("1"
(assert )
(("1"
(expand
"poly_deriv" )
(("1"
(expand
"apow" )
(("1"
(propax)
nil
nil ))
nil ))
nil ))
nil ))
nil )
("2"
(hide
2)
(("2"
(rewrite
"sigma_restrict_eq_0" )
(("2"
(hide
2)
(("2"
(skosimp*)
(("2"
(expand
"poly_deriv" )
(("2"
(expand
"apow" )
(("2"
(propax)
nil
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2"
(hide-all-but 1)
(("2"
(skeep)
(("2"
(expand "polynomial" )
(("2"
(expand
"sigma"
+
1)
(("2"
(expand "sigma" )
(("2"
(invoke
(case
"%1 = 0" )
(! 1 2 1))
(("1"
(replaces -1)
(("1"
(expand
"apow" )
(("1"
(propax)
nil
nil ))
nil ))
nil )
("2"
(hide 2)
(("2"
(rewrite
"sigma_restrict_eq_0" )
(("2"
(skosimp*)
(("2"
(expand
"apow" )
(("2"
(lift-if)
(("2"
(assert )
nil
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2"
(case "(FORALL (y: real, epsil: posreal,nm:posnat,kc:real):
EXISTS (delta: posreal):
FORALL (x: real):
abs(x - y) < delta AND x /= y IMPLIES
abs(kc*nm*y^(nm-1) -
(kc*x^nm -kc*y^nm) / (x - y))
< epsil)")
(("1" (skeep)
(("1" (case "nm = 0" )
(("1" (replaces -1)
(("1" (assert )
(("1" (hide-all-but 1)
(("1" (expand "PQ" )
(("1" (skeep)
(("1" (inst + "1" )
(("1" (skeep)
(("1"
(expand "poly_deriv" )
(("1"
(expand "polynomial" + 1)
(("1"
(rewrite "sigma_restrict_eq_0" )
(("1"
(assert )
(("1"
(invoke
(case "%1 = 0" )
(! 2 1 1 2 1))
(("1"
(replaces -1)
(("1"
(expand "abs" )
(("1" (assert ) nil nil ))
nil ))
nil )
("2"
(hide 3)
(("2"
(expand "polynomial" )
(("2"
(rewrite "sigma_minus" )
(("2"
(rewrite
"sigma_restrict_eq_0" )
(("2"
(hide 2)
(("2"
(skosimp*)
(("2"
(lift-if)
(("2"
(ground)
nil
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2"
(skosimp*)
(("2"
(lift-if)
(("2" (ground) nil nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2" (label "nmzero" 1)
(("2" (hide (-2 3))
(("2" (skoletin 2)
(("2" (expand "PQ" 1)
(("2" (skeep)
(("2" (inst - "y" "epsil" "nm" "kc" )
(("1" (skeep -2)
(("1"
(inst + "delta" )
(("1"
(skeep)
(("1"
(inst - "x" )
(("1"
(assert )
(("1"
(case "1+ki<nm" )
(("1"
(invoke
(case "%1 = 0" )
(! 2 1 1))
(("1"
(replaces -1)
(("1"
(expand "abs" +)
(("1" (assert ) nil nil ))
nil ))
nil )
("2"
(hide 3)
(("2"
(invoke
(case "%1 = 0" )
(! 1 1 1))
(("1"
(invoke
(case "%1 = 0" )
(! 1 1 2))
(("1" (assert ) nil nil )
("2"
(invoke
(case "%1 = 0" )
(! 1 1 1))
(("1"
(assert )
nil
nil )
("2"
(invoke
(case "%1 = 0" )
(! 1 1 1))
(("1"
(invoke
(case "%1 = 0" )
(! 1 1 2))
(("1"
(assert )
nil
nil )
("2"
(expand
"polynomial"
1)
(("2"
(rewrite
"sigma_restrict_eq_0" )
(("2"
(skosimp*)
(("2"
(expand
"apow"
1)
(("2"
(lift-if)
(("2"
(ground)
nil
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2"
(expand
"polynomial"
1)
(("2"
(rewrite
"sigma_restrict_eq_0" )
(("2"
(skosimp*)
(("2"
(expand
"apow"
1)
(("2"
(lift-if)
(("2"
(ground)
nil
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2"
(expand "polynomial" 1)
(("2"
(expand
"poly_deriv"
1)
(("2"
(rewrite
"sigma_restrict_eq_0" )
(("2"
(skosimp*)
(("2"
(expand
"apow"
1)
(("2"
(propax)
nil
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2"
(case
"polynomial(poly_deriv(apow), ki)(y) = y ^ (nm - 1) * kc * nm" )
(("1"
(case
"FORALL (xy:real): polynomial(apow, 1 + ki)(xy) = kc * xy ^ nm" )
(("1"
(inst-cp - "x" )
(("1"
(inst - "y" )
(("1"
(assert )
nil
nil ))
nil ))
nil )
("2"
(hide 4)
(("2"
(skeep)
(("2"
(expand
"polynomial"
1)
(("2"
(lemma
"sigma_eq_one_arg" )
(("2"
(inst
-
_
_
_
"nm" )
(("2"
(inst?)
(("2"
(assert )
(("2"
(split -)
(("1"
(expand
"apow"
-1
2)
(("1"
(propax)
nil
nil ))
nil )
("2"
(skosimp*)
(("2"
(expand
"apow"
1)
(("2"
(lift-if)
(("2"
(ground)
nil
nil ))
nil ))
nil ))
nil )
("3"
(skosimp*)
(("3"
(expand
"apow"
1)
(("3"
(assert )
nil
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2"
(expand "polynomial" 1)
(("2"
(lemma
"sigma_eq_one_arg" )
(("2"
(inst - _ _ _ "nm-1" )
(("2"
(inst?)
(("2"
(assert )
(("2"
(split -)
(("1"
(replaces -1)
(("1"
(expand
"poly_deriv"
1)
(("1"
(expand
"apow"
1)
(("1"
(lift-if)
(("1"
(ground)
(("1"
(replaces
-1)
(("1"
(expand
"^" )
(("1"
(expand
"expt"
1)
(("1"
(propax)
nil
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2"
(skosimp*)
(("2"
(expand
"poly_deriv"
1)
(("2"
(expand
"apow"
1)
(("2"
(propax)
nil
nil ))
nil ))
nil ))
nil )
("3"
(skosimp*)
(("3"
(expand
"poly_deriv"
1)
(("3"
(expand
"apow"
1)
(("3"
(propax)
nil
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2" (assert ) nil nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2" (hide-all-but 1)
(("2"
(case "(FORALL (y: real, epsil: posreal, nm: posnat, kc: real):
EXISTS (delta: posreal):
FORALL (x: real):
abs(x - y) < delta AND x /= y IMPLIES
abs(nm * y ^ (nm - 1) -
(x ^ nm - y ^ nm) / (x - y))
< epsil)")
(("1" (skeep)
(("1" (case "kc = 0" )
(("1" (replaces -1)
(("1" (assert )
(("1" (expand "abs" +) (("1" (propax) nil nil ))
nil ))
nil ))
nil )
("2" (case "NOT abs(kc)>0" )
(("1" (expand "abs" 1)
(("1" (lift-if) (("1" (ground) nil nil )) nil ))
nil )
("2" (inst - "y" "epsil/abs(kc)" "nm" "kc" )
(("1" (skeep -2)
(("1" (inst + "delta" )
(("1" (skeep)
(("1"
(inst - "x" )
(("1"
(assert )
(("1"
(cross-mult -2)
(("1"
(rewrite "abs_mult" :dir rl)
(("1" (assert ) nil nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2" (hide 3)
(("2" (split)
(("1" (cross-mult 1) nil nil )
("2" (cross-mult 1) nil nil ))
nil ))
nil )
("3" (assert ) nil nil ))
nil ))
nil ))
nil ))
nil )
("2" (hide 2)
(("2" (lemma "binomial_theorem" )
(("2" (skeep) (("2" (postpone) nil nil )) nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2" (skosimp*) (("2" (assert ) nil nil )) nil ))
nil )
nil shostak))
(square_free_min_TCC1 0
(square_free_min_TCC1-1 nil 3587829356 ("" (subtype-tcc) nil nil )
((^ const-decl "real" exponentiation nil )
(polynomial const-decl "[real -> real]" polynomials nil )
(real_times_real_is_real application-judgement "real" reals nil ))
nil ))
(square_free_min 0
(square_free_min-1 nil 3587829358
("" (skeep)
(("" (case "NOT FORALL (RR:real): RR=0 IFF (RR>=0 AND RR<=0)" )
(("1" (skosimp*) (("1" (ground) nil nil )) nil )
("2" (rewrite -1 1)
(("2" (hide -1)
(("2" (split +)
(("1" (lemma "poly_deriv_limit" )
(("1"
(name "eppy" "-polynomial(poly_deriv(a), pn - 1)(y)/2" )
(("1" (inst - "a" "y" "eppy" "pn" )
(("1" (skeep -2)
(("1"
(case "NOT FORALL (x:real): abs(x-y)<delta AND x/=y IMPLIES (polynomial(a, pn)(x) - polynomial(a, pn)(y)) / (x - y) < 0" )
(("1" (skeep)
(("1" (inst - "x" )
(("1" (assert )
(("1" (expand "abs" -3)
(("1" (assert ) nil nil )) nil ))
nil ))
nil ))
nil )
("2" (name "xy" "y + min(delta,epsil)/2" )
(("2" (inst - "xy" )
(("2" (assert )
(("2" (split -)
(("1"
(cross-mult -1)
(("1"
(assert )
(("1"
(inst -6 "xy" )
(("1"
(split -)
(("1" (assert ) nil nil )
("2"
(expand "abs" 1)
(("2" (assert ) nil nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2"
(expand "abs" 1)
(("2" (assert ) nil nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("3" (skosimp*) (("3" (assert ) nil nil )) nil ))
nil ))
nil )
("2" (assert ) nil nil ))
nil ))
nil ))
nil )
("2" (lemma "poly_deriv_limit" )
(("2"
(name "eppy" "polynomial(poly_deriv(a), pn - 1)(y)/2" )
(("2" (inst - "a" "y" "eppy" "pn" )
(("1" (skeep -2)
(("1"
(case "NOT FORALL (x:real): abs(x-y)<delta AND x/=y IMPLIES (polynomial(a, pn)(x) - polynomial(a, pn)(y)) / (x - y) > 0" )
(("1" (skeep)
(("1" (inst - "x" )
(("1" (assert )
(("1" (expand "abs" -3)
(("1" (assert ) nil nil )) nil ))
nil ))
nil ))
nil )
("2" (name "xy" "y - min(delta,epsil)/2" )
(("2" (inst - "xy" )
(("2" (assert )
(("2" (split -)
(("1"
(cross-mult -1)
(("1"
(inst -6 "xy" )
(("1"
(split -)
(("1" (assert ) nil nil )
("2"
(expand "abs" 1)
(("2" (assert ) nil nil ))
nil ))
nil ))
nil ))
nil )
("2"
(expand "abs" 1)
(("2" (assert ) nil nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("3" (skosimp*) (("3" (assert ) nil nil )) nil ))
nil ))
nil )
("2" (assert ) nil nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
((<= const-decl "bool" reals nil ) (>= const-decl "bool" reals nil )
(AND const-decl "[bool, bool -> bool]" booleans nil )
(= const-decl "[T, T -> boolean]" equalities nil )
(IFF const-decl "[bool, bool -> bool]" booleans nil )
(real nonempty-type-from-decl nil reals nil )
(real_pred const-decl "[number_field -> boolean]" reals nil )
(number_field nonempty-type-from-decl nil number_fields nil )
(number_field_pred const-decl "[number -> boolean]" number_fields
nil )
(number nonempty-type-decl nil numbers nil )
(NOT const-decl "[bool -> bool]" booleans nil )
(bool nonempty-type-eq-decl nil booleans nil )
(boolean nonempty-type-decl nil booleans nil )
(real_le_is_total_order name-judgement "(total_order?[real])"
real_props nil )
(real_ge_is_total_order name-judgement "(total_order?[real])"
real_props nil )
(eppy skolem-const-decl "real" more_polynomial_props nil )
(negreal nonempty-type-eq-decl nil real_types nil )
(nonpos_real nonempty-type-eq-decl nil real_types nil )
(div_mult_neg_gt1 formula-decl nil extra_real_props nil )
(poly_deriv_limit formula-decl nil more_polynomial_props nil )
(real_gt_is_strict_total_order name-judgement
"(strict_total_order?[real])" real_props nil )
(eppy skolem-const-decl "real" more_polynomial_props nil )
(posreal nonempty-type-eq-decl nil real_types nil )
(nonneg_real nonempty-type-eq-decl nil real_types nil )
(IMPLIES const-decl "[bool, bool -> bool]" booleans nil )
(< const-decl "bool" reals nil )
(abs const-decl "{n: nonneg_real | n >= m AND n >= -m}" real_defs
nil )
(real_lt_is_strict_total_order name-judgement
"(strict_total_order?[real])" real_props nil )
(minus_real_is_real application-judgement "real" reals nil )
(real_times_real_is_real application-judgement "real" reals nil )
(div_mult_pos_lt1 formula-decl nil real_props nil )
(posreal_div_posreal_is_posreal application-judgement "posreal"
real_types nil )
(posreal_min application-judgement
"{z: posreal | z <= x AND z <= y}" real_defs nil )
(min const-decl "{p: real | p <= m AND p <= n}" real_defs nil )
(+ const-decl "[numfield, numfield -> numfield]" number_fields nil )
(real_plus_real_is_real application-judgement "real" reals nil )
(- const-decl "[numfield -> numfield]" number_fields nil )
(/ const-decl "[numfield, nznum -> numfield]" number_fields nil )
(nznum nonempty-type-eq-decl nil number_fields nil )
(/= const-decl "boolean" notequal nil )
(real_div_nzreal_is_real application-judgement "real" reals nil )
(posnat nonempty-type-eq-decl nil integers nil )
(> const-decl "bool" reals nil )
(nonneg_int nonempty-type-eq-decl nil integers nil )
(- const-decl "[numfield, numfield -> numfield]" number_fields nil )
(numfield nonempty-type-eq-decl nil number_fields nil )
(poly_deriv const-decl "real" polynomials nil )
(polynomial const-decl "[real -> real]" polynomials nil )
(sequence type-eq-decl nil sequences nil )
(nat nonempty-type-eq-decl nil naturalnumbers nil )
(int nonempty-type-eq-decl nil integers nil )
(integer_pred const-decl "[rational -> boolean]" integers nil )
(rational nonempty-type-from-decl nil rationals nil )
(rational_pred const-decl "[real -> boolean]" rationals nil )
(int_minus_int_is_int application-judgement "int" integers nil )
(real_minus_real_is_real application-judgement "real" reals nil ))
shostak))
(square_free_max_TCC1 0
(square_free_max_TCC1-1 nil 3587832241 ("" (subtype-tcc) nil nil )
((^ const-decl "real" exponentiation nil )
(polynomial const-decl "[real -> real]" polynomials nil )
(real_times_real_is_real application-judgement "real" reals nil ))
nil ))
(square_free_max 0
(square_free_max-1 nil 3587832242
("" (skeep)
(("" (lemma "square_free_min" )
(("" (inst - "-a" "epsil" "y" "-c" "pn" )
(("" (assert )
(("" (split -)
(("1" (hide-all-but (-1 1))
(("1" (case "NOT poly_deriv(-a) = (-1)*poly_deriv(a)" )
(("1" (expand "poly_deriv" 1)
(("1" (decompose-equality 1)
(("1" (hide-all-but 1) (("1" (grind) nil nil ))
nil ))
nil ))
nil )
("2" (replaces -1)
(("2" (lemma "scal_polynomial" )
(("2" (expand "const_fun" )
(("2" (expand "*" )
(("2" (inst - _ _ "-1" )
(("2" (inst - "poly_deriv(a)" "pn-1" )
(("2" (decompose-equality -1)
(("2"
(inst - "y" )
(("2" (assert ) nil nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2" (hide-all-but (-1 1))
(("2" (replace -1 1 :dir rl)
(("2" (hide -1)
(("2" (expand "polynomial" )
(("2" (case "FORALL (ccc:real): -ccc = (-1)*ccc" )
(("1" (rewrite -1 1)
(("1" (rewrite "sigma_scal" :dir rl)
(("1" (rewrite "sigma_eq" )
(("1" (skosimp*) (("1" (grind) nil nil ))
nil ))
nil ))
nil ))
nil )
("2" (assert ) nil nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("3" (hide (-1 2))
(("3" (skeep)
(("3" (inst - "x" )
(("3" (assert )
(("3"
(case "(-1)*polynomial(-a, pn)(x) = polynomial(a,pn)(x)" )
(("1" (assert ) nil nil )
("2" (hide-all-but 1)
(("2" (expand "polynomial" )
(("2" (rewrite "sigma_scal" :dir rl)
(("2" (rewrite "sigma_eq" )
(("2"
(skosimp*)
(("2"
(hide 2)
(("2" (grind :exclude "^" ) nil nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
((square_free_min formula-decl nil more_polynomial_props nil )
(int_minus_int_is_int application-judgement "int" integers nil )
(sigma_scal formula-decl nil sigma nil )
(AND const-decl "[bool, bool -> bool]" booleans nil )
(subrange type-eq-decl nil integers nil )
(expt def-decl "real" exponentiation nil )
(real_gt_is_strict_total_order name-judgement
"(strict_total_order?[real])" real_props nil )
(sigma_eq formula-decl nil sigma nil )
(OR const-decl "[bool, bool -> bool]" booleans nil )
(<= const-decl "bool" reals nil ) (T_low type-eq-decl nil sigma nil )
(T_high type-eq-decl nil sigma nil )
(sigma def-decl "real" sigma nil )
(IF const-decl "[boolean, T, T -> T]" if_def nil )
(/= const-decl "boolean" notequal nil )
(^ const-decl "real" exponentiation nil )
(real_lt_is_strict_total_order name-judgement
"(strict_total_order?[real])" real_props nil )
(real_le_is_total_order name-judgement "(total_order?[real])"
real_props nil )
(const_fun const-decl "[T -> real]" real_fun_ops nil )
(IMPLIES const-decl "[bool, bool -> bool]" booleans nil )
(polynomial const-decl "[real -> real]" polynomials nil )
(- const-decl "[numfield, numfield -> numfield]" number_fields nil )
(real_ge_is_total_order name-judgement "(total_order?[real])"
real_props nil )
(* const-decl "[T -> real]" real_fun_ops nil )
(scal_polynomial formula-decl nil polynomials nil )
(+ const-decl "[numfield, numfield -> numfield]" number_fields nil )
(* const-decl "[numfield, numfield -> numfield]" number_fields nil )
(posint_plus_nnint_is_posint application-judgement "posint"
integers nil )
(real_plus_real_is_real application-judgement "real" reals nil )
(real_times_real_is_real application-judgement "real" reals nil )
(* const-decl "[T -> real]" real_fun_ops nil )
(poly_deriv const-decl "real" polynomials nil )
(= const-decl "[T, T -> boolean]" equalities nil )
(NOT const-decl "[bool -> bool]" booleans nil )
(minus_odd_is_odd application-judgement "odd_int" integers nil )
(posnat nonempty-type-eq-decl nil integers nil )
(nonneg_int nonempty-type-eq-decl nil integers nil )
(- const-decl "[numfield -> numfield]" number_fields nil )
(numfield nonempty-type-eq-decl nil number_fields nil )
(posreal nonempty-type-eq-decl nil real_types nil )
(> const-decl "bool" reals nil )
(nonneg_real nonempty-type-eq-decl nil real_types nil )
(- const-decl "[T -> real]" real_fun_ops nil )
(sequence type-eq-decl nil sequences nil )
(nat nonempty-type-eq-decl nil naturalnumbers nil )
(>= const-decl "bool" reals nil )
(bool nonempty-type-eq-decl nil booleans nil )
(int nonempty-type-eq-decl nil integers nil )
(integer_pred const-decl "[rational -> boolean]" integers nil )
(rational nonempty-type-from-decl nil rationals nil )
(rational_pred const-decl "[real -> boolean]" rationals nil )
(real nonempty-type-from-decl nil reals nil )
(real_pred const-decl "[number_field -> boolean]" reals nil )
(number_field nonempty-type-from-decl nil number_fields nil )
(number_field_pred const-decl "[number -> boolean]" number_fields
nil )
(boolean nonempty-type-decl nil booleans nil )
(number nonempty-type-decl nil numbers nil )
(minus_real_is_real application-judgement "real" reals nil )
(real_minus_real_is_real application-judgement "real" reals nil ))
shostak))
(deriv_poly_shift_TCC1 0
(deriv_poly_shift_TCC1-1 nil 3589548521 ("" (subtype-tcc) nil nil )
((boolean nonempty-type-decl nil booleans nil )
(bool nonempty-type-eq-decl nil booleans nil )
(NOT const-decl "[bool -> bool]" booleans nil )
(number nonempty-type-decl nil numbers nil )
(number_field_pred const-decl "[number -> boolean]" number_fields
nil )
(number_field nonempty-type-from-decl nil number_fields nil )
(real_pred const-decl "[number_field -> boolean]" reals nil )
(real nonempty-type-from-decl nil reals nil )
(>= const-decl "bool" reals nil )
(rational_pred const-decl "[real -> boolean]" rationals nil )
(rational nonempty-type-from-decl nil rationals nil )
(integer_pred const-decl "[rational -> boolean]" integers nil )
(int nonempty-type-eq-decl nil integers nil )
(nat nonempty-type-eq-decl nil naturalnumbers nil )
(int_minus_int_is_int application-judgement "int" integers nil )
(real_gt_is_strict_total_order name-judgement
"(strict_total_order?[real])" real_props nil )
(real_ge_is_total_order name-judgement "(total_order?[real])"
real_props nil ))
nil ))
(deriv_poly_shift 0
(deriv_poly_shift-1 nil 3589548523
("" (skeep)
(("" (decompose-equality 1)
(("" (name "j" "x!1" )
(("" (replace -1)
(("" (hide -1)
(("" (expand "poly_deriv" )
(("" (expand "poly_shift" )
(("" (rewrite "sigma_scal_right" 1 :dir rl)
(("1" (rewrite "sigma_sum" )
(("1" (rewrite "sigma_shift_fun_eq" )
(("1" (hide 2)
(("1" (skosimp*)
(("1" (assert )
(("1" (factor 1)
(("1"
(lemma " binom_absorption" )
(("1"
(inst - "1+j" "1+i!1+j" )
(("1"
(assert )
(("1"
(replace -1 +)
(("1"
(factor 1)
(("1"
(typepred "i!1" )
(("1" (field) nil nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2" (hide 2)
(("2" (skosimp*) (("2" (assert ) nil nil )) nil ))
nil )
("3" (skosimp*) (("3" (assert ) nil nil )) nil )
("4" (skosimp*) (("4" (assert ) nil nil )) nil )
("5" (skosimp*) (("5" (assert ) nil nil )) nil ))
nil )
("2" (skosimp*) (("2" (assert ) nil nil )) nil )
("3" (skosimp*) (("3" (assert ) nil nil )) nil ))
nil )
("2" (skosimp*) (("2" (assert ) nil nil )) nil )
("3" (skosimp*) (("3" (assert ) nil nil )) nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
((real_gt_is_strict_total_order name-judgement
"(strict_total_order?[real])" real_props nil )
(real_ge_is_total_order name-judgement "(total_order?[real])"
real_props nil )
(int_minus_int_is_int application-judgement "int" integers nil )
(n skolem-const-decl "nat" more_polynomial_props nil )
(- const-decl "[numfield, numfield -> numfield]" number_fields nil )
(numfield nonempty-type-eq-decl nil number_fields nil )
(sequence type-eq-decl nil sequences nil )
(poly_deriv const-decl "real" polynomials nil )
(poly_shift const-decl "sequence[real]" polynomials nil )
(nat nonempty-type-eq-decl nil naturalnumbers nil )
(>= const-decl "bool" reals nil )
(bool nonempty-type-eq-decl nil booleans nil )
(int nonempty-type-eq-decl nil integers nil )
(integer_pred const-decl "[rational -> boolean]" integers nil )
(rational nonempty-type-from-decl nil rationals nil )
(rational_pred const-decl "[real -> boolean]" rationals nil )
(real nonempty-type-from-decl nil reals nil )
(real_pred const-decl "[number_field -> boolean]" reals nil )
(number_field nonempty-type-from-decl nil number_fields nil )
(number_field_pred const-decl "[number -> boolean]" number_fields
nil )
(boolean nonempty-type-decl nil booleans nil )
(number nonempty-type-decl nil numbers nil )
(IMPLIES const-decl "[bool, bool -> bool]" booleans nil )
(AND const-decl "[bool, bool -> bool]" booleans nil )
(NOT const-decl "[bool -> bool]" booleans nil )
(posint_plus_nnint_is_posint application-judgement "posint"
integers nil )
(sigma_scal_right formula-decl nil sigma nil )
(IF const-decl "[boolean, T, T -> T]" if_def nil )
(OR const-decl "[bool, bool -> bool]" booleans nil )
(< const-decl "bool" reals nil )
(+ const-decl "[numfield, numfield -> numfield]" number_fields nil )
(> const-decl "bool" reals nil )
(* const-decl "[numfield, numfield -> numfield]" number_fields nil )
(<= const-decl "bool" reals nil )
(nonneg_int nonempty-type-eq-decl nil integers nil )
(posnat nonempty-type-eq-decl nil integers nil )
(C const-decl "posnat" binomial nil )
(/= const-decl "boolean" notequal nil )
(^ const-decl "real" exponentiation nil )
(T_high type-eq-decl nil sigma nil )
(T_low type-eq-decl nil sigma nil )
(real_plus_real_is_real application-judgement "real" reals nil )
(sigma_shift_fun_eq formula-decl nil sigma nil )
(int_plus_int_is_int application-judgement "int" integers nil )
(subrange type-eq-decl nil integers nil )
(TRUE const-decl "bool" booleans nil )
(id const-decl "(bijective?[T, T])" identity nil )
(bijective? const-decl "bool" functions nil )
(even_minus_odd_is_odd application-judgement "odd_int" integers
nil )
(odd_minus_odd_is_even application-judgement "even_int" integers
nil )
(real_minus_real_is_real application-judgement "real" reals nil )
(rat_minus_rat_is_rat application-judgement "rat" rationals nil )
(posint nonempty-type-eq-decl nil integers nil )
(rat_times_rat_is_rat application-judgement "rat" rationals nil )
(nznum nonempty-type-eq-decl nil number_fields nil )
(/ const-decl "[numfield, nznum -> numfield]" number_fields nil )
(rat_div_nzrat_is_rat application-judgement "rat" rationals nil )
(binom_absorption formula-decl nil binomial_identities nil )
(real_lt_is_strict_total_order name-judgement
"(strict_total_order?[real])" real_props nil )
(real_le_is_total_order name-judgement "(total_order?[real])"
real_props nil )
(sigma_sum formula-decl nil sigma nil )
(real_times_real_is_real application-judgement "real" reals nil )
(= const-decl "[T, T -> boolean]" equalities nil ))
shostak))
(linear_power_is_differentiable_TCC1 0
(linear_power_is_differentiable_TCC1-1 nil 3589549521
("" (subtype-tcc) nil nil ) ((/= const-decl "boolean" notequal nil ))
nil ))
(linear_power_is_differentiable 0
(linear_power_is_differentiable-1 nil 3589549523
("" (skeep)
(("" (lemma "power_linear_polynomial" )
(("" (inst + "power_linear(-y,1,m)" )
(("" (assert )
(("" (split +)
(("1" (expand "power_linear" 1)
(("1" (assert )
(("1" (expand "C" 1)
(("1" (assert )
(("1" (expand "^" 1)
(("1" (lemma "expt_1n_aux" )
(("1" (inst?)
(("1" (assert )
(("1" (replace -1)
(("1"
(expand "expt" +)
(("1" (assert ) nil nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2" (hide -) (("2" (grind) nil nil )) nil )
("3" (skeep) (("3" (inst?) (("3" (assert ) nil nil )) nil ))
nil )
("4" (lemma "deriv_power_linear" )
(("4" (skeep)
(("4" (inst?)
(("4" (replace -1)
(("4" (expand "max" )
(("4" (assert )
(("4" (rewrite "scal_polynomial2" )
(("4" (inst?) (("4" (assert ) nil nil )) nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
((power_linear_polynomial formula-decl nil polynomials nil )
(real_times_real_is_real application-judgement "real" reals nil )
(real_gt_is_strict_total_order name-judgement
"(strict_total_order?[real])" real_props nil )
(deriv_power_linear formula-decl nil polynomials nil )
(max const-decl "{p: real | p >= m AND p >= n}" real_defs nil )
(* const-decl "[numfield, numfield -> numfield]" number_fields nil )
(- const-decl "[numfield, numfield -> numfield]" number_fields nil )
(scal_polynomial2 formula-decl nil polynomials nil )
(int_minus_int_is_int application-judgement "int" integers nil )
(real_ge_is_total_order name-judgement "(total_order?[real])"
real_props nil )
(real_minus_real_is_real application-judgement "real" reals nil )
(NOT const-decl "[bool -> bool]" booleans nil )
(factorial def-decl "posnat" factorial "ints/" )
(nnint_times_nnint_is_nnint application-judgement "nonneg_int"
integers nil )
(C const-decl "posnat" binomial nil )
(^ const-decl "real" exponentiation nil )
(posrat_times_posrat_is_posrat application-judgement "posrat"
rationals nil )
(expt def-decl "real" exponentiation nil )
(posnat_expt application-judgement "posnat" exponentiation nil )
(expt_1n_aux formula-decl nil exponentiation nil )
(factorial_0 formula-decl nil factorial "ints/" )
(posrat_div_posrat_is_posrat application-judgement "posrat"
rationals nil )
(posint_times_posint_is_posint application-judgement "posint"
integers nil )
(mult_divides1 application-judgement "(divides(n))" divides nil )
(mult_divides2 application-judgement "(divides(m))" divides nil )
(posint_exp application-judgement "posint" exponentiation nil )
(- const-decl "[numfield -> numfield]" number_fields nil )
(numfield nonempty-type-eq-decl nil number_fields nil )
(power_linear const-decl "real" polynomials nil )
(sequence type-eq-decl nil sequences nil )
(nat nonempty-type-eq-decl nil naturalnumbers nil )
(>= const-decl "bool" reals nil )
(bool nonempty-type-eq-decl nil booleans nil )
(int nonempty-type-eq-decl nil integers nil )
(integer_pred const-decl "[rational -> boolean]" integers nil )
(rational nonempty-type-from-decl nil rationals nil )
(rational_pred const-decl "[real -> boolean]" rationals nil )
(real nonempty-type-from-decl nil reals nil )
(real_pred const-decl "[number_field -> boolean]" reals nil )
(number_field nonempty-type-from-decl nil number_fields nil )
(number_field_pred const-decl "[number -> boolean]" number_fields
nil )
(boolean nonempty-type-decl nil booleans nil )
(number nonempty-type-decl nil numbers nil )
(minus_real_is_real application-judgement "real" reals nil ))
shostak))
(polynomial_prod_degrees 0
(polynomial_prod_degrees-1 nil 3591538151
("" (skeep)
(("" (lemma "polynomial_prod_def" )
((""
(case "NOT polynomial(a,n) = polynomial(polynomial_prod(b,m,g,p),m+p)" )
(("1" (hide 5)
(("1" (decompose-equality +)
(("1" (inst - "b" "g" "p" "m" "x!1" )
(("1" (inst - "x!1" ) (("1" (assert ) nil nil )) nil )) nil ))
nil ))
nil )
("2" (case "m+p < n" )
(("1"
(case "polynomial(a, n) = polynomial(polynomial_prod(b, m, g, p), n)" )
(("1" (lemma "polynomial_eq_coeff" )
(("1" (inst?)
(("1" (assert )
(("1" (inst - "n" )
(("1" (expand "polynomial_prod" -1)
(("1" (expand "max" -1)
(("1" (expand "sigma" ) (("1" (propax) nil nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2" (replace -2 +)
(("2" (expand "polynomial" 1)
(("2" (decompose-equality +)
(("2" (lemma "sigma_split" )
(("2" (inst - _ "n" "0" "m+p" )
(("2" (inst?)
(("2" (assert )
(("2" (replaces -1 +)
(("2" (assert )
(("2"
(rewrite "sigma_restrict_eq_0" )
(("2"
(skosimp*)
(("2"
(expand "polynomial_prod" 1)
(("2"
(expand "max" )
(("2"
(expand "sigma" +)
(("2" (assert ) nil nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2" (assert )
(("2" (lemma "polynomial_eq_coeff" )
(("2"
(inst -
"LAMBDA (i:nat): IF i<=n THEN a(i) ELSE 0 ENDIF"
"polynomial_prod(b,m,g,p)" "m+p" )
(("2" (case "m + p > n" )
(("1" (assert )
(("1" (replace -3 :dir rl)
(("1" (flatten)
(("1" (hide -3)
(("1" (splash -2)
(("1" (inst - "m+p" )
(("1"
(assert )
(("1"
(expand "polynomial_prod" -1)
(("1"
(expand "max" -1)
(("1"
(expand "sigma" -1)
(("1"
(expand "sigma" -1)
(("1"
(lemma
"nzreal_times_nzreal_is_nzreal" )
(("1"
(inst?)
(("1" (assert ) nil nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2" (lemma "sigma_split" )
(("2"
(invoke (name "PG" "%1" ) (! 1 2))
(("2"
(replace -1)
(("2"
(decompose-equality 1)
(("2"
(expand "polynomial" 1)
(("2"
(inst - _ "m+p" "0" "n" )
(("2"
(inst?)
(("2"
(assert )
(("2"
(replaces -2)
(("2"
(invoke
(case "%1 = 0" )
(! 1 1 2))
(("1"
(replaces -1)
(("1"
(assert )
(("1"
(expand "PG" +)
(("1"
(expand
"polynomial"
1)
(("1"
(rewrite
"sigma_eq" )
nil
nil ))
nil ))
nil ))
nil ))
nil )
("2"
(hide 2)
(("2"
(rewrite
"sigma_restrict_eq_0" )
nil
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2" (assert )
(("2" (case "m+p = n" )
(("1" (replace -1 :dir rl)
(("1" (assert )
(("1" (hide -2)
(("1" (lemma "polynomial_eq_coeff" )
(("1"
(inst?)
(("1"
(assert )
(("1"
(skeep)
(("1" (inst - "i" ) nil nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2" (assert ) nil nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
((polynomial_prod_def formula-decl nil polynomials nil )
(< const-decl "bool" reals nil )
(real_ge_is_total_order name-judgement "(total_order?[real])"
real_props nil )
(OR const-decl "[bool, bool -> bool]" booleans nil )
(T_low type-eq-decl nil sigma nil )
(T_high type-eq-decl nil sigma nil )
(* const-decl "[numfield, numfield -> numfield]" number_fields nil )
(IF const-decl "[boolean, T, T -> T]" if_def nil )
(/= const-decl "boolean" notequal nil )
(^ const-decl "real" exponentiation nil )
(posint_plus_nnint_is_posint application-judgement "posint"
integers nil )
(even_minus_odd_is_odd application-judgement "odd_int" integers
nil )
(real_plus_real_is_real application-judgement "real" reals nil )
(sigma_restrict_eq_0 formula-decl nil sigma nil )
(IMPLIES const-decl "[bool, bool -> bool]" booleans nil )
(sigma_split formula-decl nil sigma nil )
(polynomial_eq_coeff formula-decl nil polynomials nil )
(real_lt_is_strict_total_order name-judgement
"(strict_total_order?[real])" real_props nil )
(sigma def-decl "real" sigma nil )
(max const-decl "{p: real | p >= m AND p >= n}" real_defs nil )
(<= const-decl "bool" reals nil )
(upto nonempty-type-eq-decl nil naturalnumbers nil )
(real_le_is_total_order name-judgement "(total_order?[real])"
real_props nil )
(> const-decl "bool" reals nil )
(PG skolem-const-decl "[real -> real]" more_polynomial_props nil )
(sigma_eq formula-decl nil sigma nil )
(nzreal_times_nzreal_is_nzreal judgement-tcc nil real_types nil )
(nzreal nonempty-type-eq-decl nil reals nil )
(real_gt_is_strict_total_order name-judgement
"(strict_total_order?[real])" real_props nil )
(i skolem-const-decl "nat" more_polynomial_props nil )
(m skolem-const-decl "nat" more_polynomial_props nil )
(p skolem-const-decl "nat" more_polynomial_props nil )
(real_times_real_is_real application-judgement "real" reals nil )
(nnint_plus_nnint_is_nnint application-judgement "nonneg_int"
integers nil )
(boolean nonempty-type-decl nil booleans nil )
(bool nonempty-type-eq-decl nil booleans nil )
(NOT const-decl "[bool -> bool]" booleans nil )
(number nonempty-type-decl nil numbers nil )
(number_field_pred const-decl "[number -> boolean]" number_fields
nil )
(number_field nonempty-type-from-decl nil number_fields nil )
(real_pred const-decl "[number_field -> boolean]" reals nil )
(real nonempty-type-from-decl nil reals nil )
(= const-decl "[T, T -> boolean]" equalities nil )
(rational_pred const-decl "[real -> boolean]" rationals nil )
(rational nonempty-type-from-decl nil rationals nil )
(integer_pred const-decl "[rational -> boolean]" integers nil )
(int nonempty-type-eq-decl nil integers nil )
(>= const-decl "bool" reals nil )
(nat nonempty-type-eq-decl nil naturalnumbers nil )
(sequence type-eq-decl nil sequences nil )
(polynomial const-decl "[real -> real]" polynomials nil )
(polynomial_prod const-decl "real" polynomials nil )
(numfield nonempty-type-eq-decl nil number_fields nil )
(+ const-decl "[numfield, numfield -> numfield]" number_fields
nil ))
shostak))
(polynomial_div_linear_power_degree_TCC1 0
(polynomial_div_linear_power_degree_TCC1-1 nil 3591543095
("" (subtype-tcc) nil nil ) ((/= const-decl "boolean" notequal nil ))
nil ))
(polynomial_div_linear_power_degree 0
(polynomial_div_linear_power_degree-1 nil 3591543097
("" (skeep)
(("" (case "k = 0" )
(("1" (replaces -1)
(("1" (assert )
(("1" (expand "^" )
(("1" (expand "expt" )
(("1" (assert )
(("1" (case "m > n" )
(("1"
(name "aa"
"LAMBDA (i:nat): IF i<=n THEN a(i) ELSE 0 ENDIF" )
(("1" (lemma "polynomial_eq_coeff" )
(("1" (inst - "aa" "b" "m" )
(("1" (assert )
(("1" (flatten)
(("1" (hide -2)
(("1"
(split -)
(("1"
(inst - "m" )
(("1"
(expand "aa" -1)
(("1" (assert ) nil nil ))
nil ))
nil )
("2"
(decompose-equality 1)
(("2"
(inst - "x!1" )
(("2"
(replace -3 :dir rl)
(("2"
(expand "polynomial" 1 1)
(("2"
(lemma "sigma_split" )
(("2"
(inst - _ "m" "0" "n" )
(("2"
(inst?)
(("2"
(assert )
(("2"
(replaces -1)
(("2"
(invoke
(case "%1 = 0" )
(! 1 1 2))
(("1"
(replaces -1)
(("1"
(assert )
(("1"
(expand
"polynomial"
+)
(("1"
(rewrite
"sigma_eq" )
(("1"
(skosimp*)
(("1"
(expand
"aa"
1)
(("1"
(propax)
nil
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2"
(rewrite
"sigma_restrict_eq_0" )
(("2"
(skosimp*)
(("2"
(expand
"aa"
1)
(("2"
(assert )
nil
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2" (case "n > m" )
(("1"
(name "bb"
"LAMBDA (i:nat): IF i<=m THEN b(i) ELSE 0 ENDIF" )
(("1" (lemma "polynomial_eq_coeff" )
(("1" (inst - "a" "bb" "n" )
(("1" (flatten)
(("1" (hide -2)
(("1"
(split -)
(("1"
(inst - "n" )
(("1"
(expand "bb" -1)
(("1" (assert ) nil nil ))
nil ))
nil )
("2"
(expand "polynomial" + 2)
(("2"
(decompose-equality 1)
(("2"
(lemma "sigma_split" )
(("2"
(inst - _ "n" "0" "m" )
(("2"
(inst?)
(("2"
(assert )
(("2"
(replaces -1)
(("2"
(invoke
(case "%1 = 0" )
(! 1 2 2))
(("1"
(replaces -1)
(("1"
(assert )
(("1"
(inst - "x!1" )
(("1"
(replace -3 +)
(("1"
(assert )
(("1"
(expand
"polynomial"
1)
(("1"
(case
"FORALL (diggy:real): 1*diggy=diggy" )
(("1"
(rewrite
-1)
(("1"
(rewrite
"sigma_eq" )
(("1"
(skosimp*)
(("1"
(expand
"bb"
1)
(("1"
(propax)
nil
nil ))
nil ))
nil ))
nil ))
nil )
("2"
(assert )
nil
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2"
(hide 2)
(("2"
(rewrite
"sigma_restrict_eq_0" )
(("2"
(skosimp*)
(("2"
(expand "bb" 1)
(("2"
(assert )
nil
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2" (assert )
(("2" (case "NOT m = n" )
(("1" (assert ) nil nil )
("2" (hide (1 2))
(("2" (replace -1)
(("2" (assert )
(("2"
(lemma "polynomial_eq_coeff" )
(("2"
(inst - "a" "b" "n" )
(("2"
(flatten)
(("2"
(hide -2)
(("2"
(split -)
(("1" (inst - "n" ) nil nil )
("2"
(decompose-equality 1)
(("2"
(inst - "x!1" )
(("2" (assert ) nil nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2" (assert )
(("2" (lemma "linear_power_is_differentiable" )
(("2" (inst - "k" "y" )
(("2" (assert )
(("2" (skolem -1 "G" )
(("2" (flatten)
(("2" (lemma "polynomial_prod_degrees" )
(("2" (inst - "a" "G" "b" "n" "k" "m" )
(("2" (assert )
(("2" (split -)
(("1" (flatten)
(("1" (assert )
(("1"
(inst - "n" )
(("1"
(assert )
(("1"
(replace -2 4)
(("1"
(expand "polynomial_prod" +)
(("1"
(expand "max" +)
(("1"
(expand "sigma" +)
(("1"
(expand "sigma" +)
(("1" (assert ) nil nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2" (skosimp*)
(("2" (inst -5 "x!1" )
(("2"
(replace -5 +)
(("2"
(inst -3 "x!1" )
(("2" (assert ) nil nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
((nat nonempty-type-eq-decl nil naturalnumbers nil )
(>= const-decl "bool" reals nil )
(bool nonempty-type-eq-decl nil booleans nil )
(int nonempty-type-eq-decl nil integers nil )
(integer_pred const-decl "[rational -> boolean]" integers nil )
(rational nonempty-type-from-decl nil rationals nil )
(rational_pred const-decl "[real -> boolean]" rationals nil )
(real nonempty-type-from-decl nil reals nil )
(real_pred const-decl "[number_field -> boolean]" reals nil )
(number_field nonempty-type-from-decl nil number_fields nil )
(number_field_pred const-decl "[number -> boolean]" number_fields
nil )
(= const-decl "[T, T -> boolean]" equalities nil )
(boolean nonempty-type-decl nil booleans nil )
(number nonempty-type-decl nil numbers nil )
(expt def-decl "real" exponentiation nil )
(> const-decl "bool" reals nil )
(polynomial_eq_coeff formula-decl nil polynomials nil )
(real_gt_is_strict_total_order name-judgement
"(strict_total_order?[real])" real_props nil )
(polynomial const-decl "[real -> real]" polynomials nil )
(sigma_split formula-decl nil sigma nil )
(real_times_real_is_real application-judgement "real" reals nil )
(/= const-decl "boolean" notequal nil )
(* const-decl "[numfield, numfield -> numfield]" number_fields nil )
(numfield nonempty-type-eq-decl nil number_fields nil )
(sigma_restrict_eq_0 formula-decl nil sigma nil )
(sigma_eq formula-decl nil sigma nil )
(real_plus_real_is_real application-judgement "real" reals nil )
(posint_plus_nnint_is_posint application-judgement "posint"
integers nil )
(sigma def-decl "real" sigma nil )
(+ const-decl "[numfield, numfield -> numfield]" number_fields nil )
(NOT const-decl "[bool -> bool]" booleans nil )
(IMPLIES const-decl "[bool, bool -> bool]" booleans nil )
(real_lt_is_strict_total_order name-judgement
"(strict_total_order?[real])" real_props nil )
(even_minus_odd_is_odd application-judgement "odd_int" integers
nil )
(OR const-decl "[bool, bool -> bool]" booleans nil )
(T_high type-eq-decl nil sigma nil )
(T_low type-eq-decl nil sigma nil )
(real_le_is_total_order name-judgement "(total_order?[real])"
real_props nil )
(upto nonempty-type-eq-decl nil naturalnumbers nil )
(aa skolem-const-decl "[nat -> real]" more_polynomial_props nil )
(sequence type-eq-decl nil sequences nil )
(<= const-decl "bool" reals nil )
(IF const-decl "[boolean, T, T -> T]" if_def nil )
(real_ge_is_total_order name-judgement "(total_order?[real])"
real_props nil )
(bb skolem-const-decl "[nat -> real]" more_polynomial_props nil )
(^ const-decl "real" exponentiation nil )
(linear_power_is_differentiable formula-decl nil
more_polynomial_props nil )
(nnint_plus_nnint_is_nnint application-judgement "nonneg_int"
integers nil )
(polynomial_prod const-decl "real" polynomials nil )
(int_minus_int_is_int application-judgement "int" integers nil )
(max const-decl "{p: real | p >= m AND p >= n}" real_defs nil )
(real_minus_real_is_real application-judgement "real" reals nil )
(polynomial_prod_degrees formula-decl nil more_polynomial_props
nil ))
shostak))
(poly_deriv_signs_neq_around_root_left_TCC1 0
(poly_deriv_signs_neq_around_root_left_TCC1-1 nil 3592659204
("" (subtype-tcc) nil nil )
((boolean nonempty-type-decl nil booleans nil )
(bool nonempty-type-eq-decl nil booleans nil )
(NOT const-decl "[bool -> bool]" booleans nil )
(number nonempty-type-decl nil numbers nil )
(number_field_pred const-decl "[number -> boolean]" number_fields
nil )
(number_field nonempty-type-from-decl nil number_fields nil )
(real_pred const-decl "[number_field -> boolean]" reals nil )
(real nonempty-type-from-decl nil reals nil )
(>= const-decl "bool" reals nil )
(rational_pred const-decl "[real -> boolean]" rationals nil )
(rational nonempty-type-from-decl nil rationals nil )
(integer_pred const-decl "[rational -> boolean]" integers nil )
(int nonempty-type-eq-decl nil integers nil )
(nat nonempty-type-eq-decl nil naturalnumbers nil )
(real_ge_is_total_order name-judgement "(total_order?[real])"
real_props nil )
(real_gt_is_strict_total_order name-judgement
"(strict_total_order?[real])" real_props nil )
(real_lt_is_strict_total_order name-judgement
"(strict_total_order?[real])" real_props nil )
(real_le_is_total_order name-judgement "(total_order?[real])"
real_props nil )
(int_minus_int_is_int application-judgement "int" integers nil )
(^ const-decl "real" exponentiation nil )
(polynomial const-decl "[real -> real]" polynomials nil )
(real_times_real_is_real application-judgement "real" reals nil ))
nil ))
(poly_deriv_signs_neq_around_root_left_TCC2 0
(poly_deriv_signs_neq_around_root_left_TCC2-1 nil 3592659204
("" (subtype-tcc) nil nil )
((boolean nonempty-type-decl nil booleans nil )
(bool nonempty-type-eq-decl nil booleans nil )
(NOT const-decl "[bool -> bool]" booleans nil )
(number nonempty-type-decl nil numbers nil )
(number_field_pred const-decl "[number -> boolean]" number_fields
nil )
(number_field nonempty-type-from-decl nil number_fields nil )
(real_pred const-decl "[number_field -> boolean]" reals nil )
(real nonempty-type-from-decl nil reals nil )
(>= const-decl "bool" reals nil )
(rational_pred const-decl "[real -> boolean]" rationals nil )
(rational nonempty-type-from-decl nil rationals nil )
(integer_pred const-decl "[rational -> boolean]" integers nil )
(int nonempty-type-eq-decl nil integers nil )
(nat nonempty-type-eq-decl nil naturalnumbers nil )
(real_gt_is_strict_total_order name-judgement
"(strict_total_order?[real])" real_props nil )
(real_lt_is_strict_total_order name-judgement
"(strict_total_order?[real])" real_props nil )
(real_le_is_total_order name-judgement "(total_order?[real])"
real_props nil )
(real_ge_is_total_order name-judgement "(total_order?[real])"
real_props nil )
(^ const-decl "real" exponentiation nil )
(polynomial const-decl "[real -> real]" polynomials nil )
(poly_deriv const-decl "real" polynomials nil )
(real_times_real_is_real application-judgement "real" reals nil )
(int_minus_int_is_int application-judgement "int" integers nil )
(real_plus_real_is_real application-judgement "real" reals nil ))
nil ))
(poly_deriv_signs_neq_around_root_left 0
(poly_deriv_signs_neq_around_root_left-1 nil 3592659205
(""
(case "FORALL (a: sequence[real], n: nat, x, y: real):
(n > 0 AND
x < y AND
polynomial(a, n)(y) = 0 AND
(FORALL (z: real):
x <= z AND
z <= y AND
(polynomial(a, n)(z) = 0 OR
polynomial(poly_deriv(a), n - 1)(z) = 0)
IMPLIES z = y))
AND polynomial(a,n)(x)<0
IMPLIES
sign_ext(polynomial(a, n)(x)) =
-sign_ext(polynomial(poly_deriv(a), n - 1)(x))")
(("1" (skeep)
(("1" (case "polynomial(a,n)(x)<0" )
(("1" (inst?) (("1" (assert ) nil nil )) nil )
("2" (inst - "-a" "n" "x" "y" )
(("2" (assert )
(("2" (rewrite "neg_polynomial" :dir rl)
(("2" (assert )
(("2" (case "poly_deriv(-a) = -poly_deriv(a)" )
(("1" (replace -1)
(("1" (rewrite "neg_polynomial" :dir rl)
(("1" (assert )
(("1" (expand "-" )
(("1" (assert )
(("1" (case "polynomial(a,n)(x)=0" )
(("1"
(hide (-2 -3))
(("1"
(inst - "x" )
(("1" (assert ) nil nil ))
nil ))
nil )
("2"
(assert )
(("2"
(split -)
(("1"
(expand "sign_ext" (-1 +))
(("1"
(lift-if)
(("1" (ground) nil nil ))
nil ))
nil )
("2"
(skeep)
(("2"
(inst - "z" )
(("2"
(assert )
(("2"
(flatten)
(("2" (assert ) nil nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2" (hide-all-but 1)
(("2" (decompose-equality) (("2" (grind) nil nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2" (hide 2)
(("2" (skeep)
(("2" (expand "sign_ext" +)
(("2" (lift-if)
(("2" (lift-if)
(("2" (lift-if)
(("2" (lift-if)
(("2" (assert )
(("2"
(case "polynomial(poly_deriv(a), n - 1)(x) = 0" )
(("1" (inst - "x" ) (("1" (assert ) nil nil )) nil )
("2" (assert )
(("2"
(case "polynomial(poly_deriv(a), n - 1)(x) >=0" )
(("1" (ground) nil nil )
("2" (hide (2 3))
(("2" (lemma "poly_decreasing" )
(("2"
(inst - "a" "n" "x" "y" )
(("2"
(assert )
(("2"
(skeep)
(("2"
(lemma
"poly_intermediate_value_inc" )
(("2"
(inst
-
"poly_deriv(a)"
"0"
"n-1"
"x"
"c" )
(("2"
(assert )
(("2"
(skosimp*)
(("2"
(inst - "cc!1" )
(("2" (assert ) nil nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("3" (hide 2) (("3" (skosimp*) (("3" (assert ) nil nil )) nil )) nil )
("4" (hide 2) (("4" (skosimp*) (("4" (assert ) nil nil )) nil ))
nil ))
nil )
((poly_decreasing formula-decl nil polynomials nil )
(poly_intermediate_value_inc formula-decl nil polynomials nil )
(- const-decl "[T -> real]" real_fun_ops nil )
(neg_polynomial formula-decl nil polynomials nil )
(real_ge_is_total_order name-judgement "(total_order?[real])"
real_props nil )
(real_le_is_total_order name-judgement "(total_order?[real])"
real_props nil )
(minus_odd_is_odd application-judgement "odd_int" integers nil )
(real_times_real_is_real application-judgement "real" reals nil )
(nnint_plus_posint_is_posint application-judgement "posint"
integers nil )
(posint_plus_nnint_is_posint application-judgement "posint"
integers nil )
(real_plus_real_is_real application-judgement "real" reals nil )
(real_lt_is_strict_total_order name-judgement
"(strict_total_order?[real])" real_props nil )
(real_gt_is_strict_total_order name-judgement
"(strict_total_order?[real])" real_props nil )
(NOT const-decl "[bool -> bool]" booleans nil )
(int_minus_int_is_int application-judgement "int" integers nil )
(minus_real_is_real application-judgement "real" reals nil )
(number nonempty-type-decl nil numbers nil )
(boolean nonempty-type-decl nil booleans nil )
(number_field_pred const-decl "[number -> boolean]" number_fields
nil )
(number_field nonempty-type-from-decl nil number_fields nil )
(real_pred const-decl "[number_field -> boolean]" reals nil )
(real nonempty-type-from-decl nil reals nil )
(rational_pred const-decl "[real -> boolean]" rationals nil )
(rational nonempty-type-from-decl nil rationals nil )
(integer_pred const-decl "[rational -> boolean]" integers nil )
(int nonempty-type-eq-decl nil integers nil )
(bool nonempty-type-eq-decl nil booleans nil )
(>= const-decl "bool" reals nil )
(nat nonempty-type-eq-decl nil naturalnumbers nil )
(sequence type-eq-decl nil sequences nil )
(IMPLIES const-decl "[bool, bool -> bool]" booleans nil )
(AND const-decl "[bool, bool -> bool]" booleans nil )
(> const-decl "bool" reals nil ) (< const-decl "bool" reals nil )
(= const-decl "[T, T -> boolean]" equalities nil )
(polynomial const-decl "[real -> real]" polynomials nil )
(<= const-decl "bool" reals nil )
(OR const-decl "[bool, bool -> bool]" booleans nil )
(poly_deriv const-decl "real" polynomials nil )
(numfield nonempty-type-eq-decl nil number_fields nil )
(- const-decl "[numfield, numfield -> numfield]" number_fields nil )
(- const-decl "[numfield -> numfield]" number_fields nil )
(* const-decl "[numfield, numfield -> numfield]" number_fields nil )
(nonneg_real nonempty-type-eq-decl nil real_types nil )
(abs const-decl "{n: nonneg_real | n >= m AND n >= -m}" real_defs
nil )
(sign_ext const-decl
"{sig: real | (sig = -1 OR sig = 1 OR sig = 0) AND sig * x = abs(x)}"
sign nil ))
shostak))
(poly_deriv_signs_neq_around_root_right_TCC1 0
(poly_deriv_signs_neq_around_root_right_TCC1-1 nil 3592664083
("" (subtype-tcc) nil nil )
((boolean nonempty-type-decl nil booleans nil )
(bool nonempty-type-eq-decl nil booleans nil )
(NOT const-decl "[bool -> bool]" booleans nil )
(number nonempty-type-decl nil numbers nil )
(number_field_pred const-decl "[number -> boolean]" number_fields
nil )
(number_field nonempty-type-from-decl nil number_fields nil )
(real_pred const-decl "[number_field -> boolean]" reals nil )
(real nonempty-type-from-decl nil reals nil )
(>= const-decl "bool" reals nil )
(rational_pred const-decl "[real -> boolean]" rationals nil )
(rational nonempty-type-from-decl nil rationals nil )
(integer_pred const-decl "[rational -> boolean]" integers nil )
(int nonempty-type-eq-decl nil integers nil )
(nat nonempty-type-eq-decl nil naturalnumbers nil )
(real_ge_is_total_order name-judgement "(total_order?[real])"
real_props nil )
(real_gt_is_strict_total_order name-judgement
"(strict_total_order?[real])" real_props nil )
(real_le_is_total_order name-judgement "(total_order?[real])"
real_props nil )
(real_lt_is_strict_total_order name-judgement
"(strict_total_order?[real])" real_props nil )
(int_minus_int_is_int application-judgement "int" integers nil )
(^ const-decl "real" exponentiation nil )
(polynomial const-decl "[real -> real]" polynomials nil )
(real_times_real_is_real application-judgement "real" reals nil ))
nil ))
(poly_deriv_signs_neq_around_root_right_TCC2 0
(poly_deriv_signs_neq_around_root_right_TCC2-1 nil 3592664083
("" (subtype-tcc) nil nil )
((boolean nonempty-type-decl nil booleans nil )
(bool nonempty-type-eq-decl nil booleans nil )
(NOT const-decl "[bool -> bool]" booleans nil )
(number nonempty-type-decl nil numbers nil )
(number_field_pred const-decl "[number -> boolean]" number_fields
nil )
(number_field nonempty-type-from-decl nil number_fields nil )
(real_pred const-decl "[number_field -> boolean]" reals nil )
(real nonempty-type-from-decl nil reals nil )
(>= const-decl "bool" reals nil )
(rational_pred const-decl "[real -> boolean]" rationals nil )
(rational nonempty-type-from-decl nil rationals nil )
(integer_pred const-decl "[rational -> boolean]" integers nil )
(int nonempty-type-eq-decl nil integers nil )
(nat nonempty-type-eq-decl nil naturalnumbers nil )
(real_gt_is_strict_total_order name-judgement
"(strict_total_order?[real])" real_props nil )
(real_lt_is_strict_total_order name-judgement
"(strict_total_order?[real])" real_props nil )
(real_le_is_total_order name-judgement "(total_order?[real])"
real_props nil )
(real_ge_is_total_order name-judgement "(total_order?[real])"
real_props nil )
(^ const-decl "real" exponentiation nil )
(polynomial const-decl "[real -> real]" polynomials nil )
(poly_deriv const-decl "real" polynomials nil )
(real_times_real_is_real application-judgement "real" reals nil )
(int_minus_int_is_int application-judgement "int" integers nil )
(real_plus_real_is_real application-judgement "real" reals nil ))
nil ))
(poly_deriv_signs_neq_around_root_right 0
(poly_deriv_signs_neq_around_root_right-1 nil 3592664088
(""
(case "FORALL (a: sequence[real], n: nat, x, y: real):
(n > 0 AND
x > y AND
polynomial(a, n)(y) = 0 AND
(FORALL (z: real):
y <= z AND
z <= x AND
(polynomial(a, n)(z) = 0 OR
polynomial(poly_deriv(a), n - 1)(z) = 0)
IMPLIES z = y)) AND
polynomial(a,n)(x)>0
IMPLIES
sign_ext(polynomial(a, n)(x)) =
sign_ext(polynomial(poly_deriv(a), n - 1)(x))")
(("1" (skeep)
(("1" (case "polynomial(a,n)(x)>0" )
(("1" (inst?) (("1" (assert ) nil nil )) nil )
("2" (inst - "-a" "n" "x" "y" )
(("2" (assert )
(("2" (rewrite "neg_polynomial" :dir rl)
(("2" (assert )
(("2" (case "poly_deriv(-a) = -poly_deriv(a)" )
(("1" (replace -1)
(("1" (rewrite "neg_polynomial" :dir rl)
(("1" (assert )
(("1" (expand "-" )
(("1" (assert )
(("1" (case "polynomial(a,n)(x)=0" )
(("1"
(hide (-2 -3))
(("1"
(inst - "x" )
(("1" (assert ) nil nil ))
nil ))
nil )
("2"
(assert )
(("2"
(split -)
(("1"
(expand "sign_ext" (-1 +))
(("1"
(lift-if)
(("1" (ground) nil nil ))
nil ))
nil )
("2"
(skeep)
(("2"
(inst - "z" )
(("2"
(assert )
(("2"
(flatten)
(("2" (assert ) nil nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2" (hide-all-but 1)
(("2" (decompose-equality) (("2" (grind) nil nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2" (hide 2)
(("2" (skeep)
(("2" (expand "sign_ext" +)
(("2" (lift-if)
(("2" (lift-if)
(("2" (lift-if)
(("2" (lift-if)
(("2" (assert )
(("2"
(case "polynomial(poly_deriv(a), n - 1)(x) = 0" )
(("1" (inst - "x" ) (("1" (assert ) nil nil )) nil )
("2" (assert )
(("2"
(case "polynomial(poly_deriv(a), n - 1)(x) >=0" )
(("1" (ground) nil nil )
("2" (hide (2 3))
(("2" (lemma "poly_decreasing" )
(("2"
(inst - "a" "n" "y" "x" )
(("2"
(assert )
(("2"
(skeep)
(("2"
(lemma
"poly_intermediate_value_dec" )
(("2"
(inst
-
"poly_deriv(a)"
"0"
"n-1"
"c"
"x" )
(("2"
(assert )
(("2"
(skosimp*)
(("2"
(inst - "cc!1" )
(("2" (assert ) nil nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("3" (hide 2) (("3" (skosimp*) (("3" (assert ) nil nil )) nil )) nil )
("4" (hide 2) (("4" (skosimp*) (("4" (assert ) nil nil )) nil ))
nil ))
nil )
((poly_decreasing formula-decl nil polynomials nil )
(poly_intermediate_value_dec formula-decl nil polynomials nil )
(- const-decl "[T -> real]" real_fun_ops nil )
(neg_polynomial formula-decl nil polynomials nil )
(real_ge_is_total_order name-judgement "(total_order?[real])"
real_props nil )
(minus_real_is_real application-judgement "real" reals nil )
(real_le_is_total_order name-judgement "(total_order?[real])"
real_props nil )
(real_lt_is_strict_total_order name-judgement
"(strict_total_order?[real])" real_props nil )
(minus_odd_is_odd application-judgement "odd_int" integers nil )
(real_times_real_is_real application-judgement "real" reals nil )
(nnint_plus_posint_is_posint application-judgement "posint"
integers nil )
(posint_plus_nnint_is_posint application-judgement "posint"
integers nil )
(real_plus_real_is_real application-judgement "real" reals nil )
(real_gt_is_strict_total_order name-judgement
"(strict_total_order?[real])" real_props nil )
(NOT const-decl "[bool -> bool]" booleans nil )
(int_minus_int_is_int application-judgement "int" integers nil )
(number nonempty-type-decl nil numbers nil )
(boolean nonempty-type-decl nil booleans nil )
(number_field_pred const-decl "[number -> boolean]" number_fields
nil )
(number_field nonempty-type-from-decl nil number_fields nil )
(real_pred const-decl "[number_field -> boolean]" reals nil )
(real nonempty-type-from-decl nil reals nil )
(rational_pred const-decl "[real -> boolean]" rationals nil )
(rational nonempty-type-from-decl nil rationals nil )
(integer_pred const-decl "[rational -> boolean]" integers nil )
(int nonempty-type-eq-decl nil integers nil )
(bool nonempty-type-eq-decl nil booleans nil )
(>= const-decl "bool" reals nil )
(nat nonempty-type-eq-decl nil naturalnumbers nil )
(sequence type-eq-decl nil sequences nil )
(IMPLIES const-decl "[bool, bool -> bool]" booleans nil )
(AND const-decl "[bool, bool -> bool]" booleans nil )
(> const-decl "bool" reals nil )
(= const-decl "[T, T -> boolean]" equalities nil )
(polynomial const-decl "[real -> real]" polynomials nil )
(<= const-decl "bool" reals nil )
(OR const-decl "[bool, bool -> bool]" booleans nil )
(poly_deriv const-decl "real" polynomials nil )
(numfield nonempty-type-eq-decl nil number_fields nil )
(- const-decl "[numfield, numfield -> numfield]" number_fields nil )
(- const-decl "[numfield -> numfield]" number_fields nil )
(* const-decl "[numfield, numfield -> numfield]" number_fields nil )
(nonneg_real nonempty-type-eq-decl nil real_types nil )
(abs const-decl "{n: nonneg_real | n >= m AND n >= -m}" real_defs
nil )
(sign_ext const-decl
"{sig: real | (sig = -1 OR sig = 1 OR sig = 0) AND sig * x = abs(x)}"
sign nil ))
nil ))
(max_linear_div_power?_TCC1 0
(max_linear_div_power?_TCC1-1 nil 3591032268
("" (subtype-tcc) nil nil ) ((/= const-decl "boolean" notequal nil ))
nil ))
(max_linear_div_power?_TCC2 0
(max_linear_div_power?_TCC2-1 nil 3591032268
("" (subtype-tcc) nil nil )
((boolean nonempty-type-decl nil booleans nil )
(bool nonempty-type-eq-decl nil booleans nil )
(NOT const-decl "[bool -> bool]" booleans nil )
(number nonempty-type-decl nil numbers nil )
(number_field_pred const-decl "[number -> boolean]" number_fields
nil )
(number_field nonempty-type-from-decl nil number_fields nil )
(real_pred const-decl "[number_field -> boolean]" reals nil )
(real nonempty-type-from-decl nil reals nil )
(>= const-decl "bool" reals nil )
(rational_pred const-decl "[real -> boolean]" rationals nil )
(rational nonempty-type-from-decl nil rationals nil )
(integer_pred const-decl "[rational -> boolean]" integers nil )
(int nonempty-type-eq-decl nil integers nil )
(nat nonempty-type-eq-decl nil naturalnumbers nil )
(> const-decl "bool" reals nil )
(nonneg_int nonempty-type-eq-decl nil integers nil )
(posnat nonempty-type-eq-decl nil integers nil )
(int_minus_int_is_int application-judgement "int" integers nil )
(real_le_is_total_order name-judgement "(total_order?[real])"
real_props nil )
(real_gt_is_strict_total_order name-judgement
"(strict_total_order?[real])" real_props nil )
(real_ge_is_total_order name-judgement "(total_order?[real])"
real_props nil ))
nil ))
(max_linear_div_power?_TCC3 0
(max_linear_div_power?_TCC3-1 nil 3591032268
("" (subtype-tcc) nil nil )
((boolean nonempty-type-decl nil booleans nil )
(bool nonempty-type-eq-decl nil booleans nil )
(NOT const-decl "[bool -> bool]" booleans nil )
(number nonempty-type-decl nil numbers nil )
(number_field_pred const-decl "[number -> boolean]" number_fields
nil )
(number_field nonempty-type-from-decl nil number_fields nil )
(real_pred const-decl "[number_field -> boolean]" reals nil )
(real nonempty-type-from-decl nil reals nil )
(>= const-decl "bool" reals nil )
(rational_pred const-decl "[real -> boolean]" rationals nil )
(rational nonempty-type-from-decl nil rationals nil )
(integer_pred const-decl "[rational -> boolean]" integers nil )
(int nonempty-type-eq-decl nil integers nil )
(nat nonempty-type-eq-decl nil naturalnumbers nil )
(> const-decl "bool" reals nil )
(nonneg_int nonempty-type-eq-decl nil integers nil )
(posnat nonempty-type-eq-decl nil integers nil )
(real_lt_is_strict_total_order name-judgement
"(strict_total_order?[real])" real_props nil )
(real_le_is_total_order name-judgement "(total_order?[real])"
real_props nil )
(real_gt_is_strict_total_order name-judgement
"(strict_total_order?[real])" real_props nil )
(real_ge_is_total_order name-judgement "(total_order?[real])"
real_props nil )
(^ const-decl "real" exponentiation nil )
(polynomial const-decl "[real -> real]" polynomials nil )
(int_minus_int_is_int application-judgement "int" integers nil )
(real_times_real_is_real application-judgement "real" reals nil ))
nil ))
(max_linear_div_power?_TCC4 0
(max_linear_div_power?_TCC4-1 nil 3591032268
("" (subtype-tcc) nil nil )
((^ const-decl "real" exponentiation nil )
(polynomial const-decl "[real -> real]" polynomials nil )
(/= const-decl "boolean" notequal nil )
(real_times_real_is_real application-judgement "real" reals nil )
(int_minus_int_is_int application-judgement "int" integers nil ))
nil ))
(max_linear_div_power_rew 0
(max_linear_div_power_rew-2 nil 3591090184
("" (skeep)
(("" (expand "max_linear_div_power?" )
(("" (ground)
(("1" (skeep) (("1" (inst + "b" ) (("1" (assert ) nil nil )) nil ))
nil )
("2" (skeep)
(("2" (case "n = m" )
(("1" (replace -1)
(("1" (assert )
(("1" (inst + "b" "m*b" )
(("1" (split +)
(("1" (propax) nil nil ) ("2" (propax) nil nil )
("3" (skeep)
(("3" (lemma "linear_power_is_differentiable" )
(("3" (inst - "m" "y" )
(("3" (assert )
(("3" (skolem -1 "g" )
(("3"
(flatten)
(("3"
(hide -1)
(("3"
(case
"FORALL (j:nat): j<=m IMPLIES a(j)=g(j)*b(0)" )
(("1"
(inst -4 "x" )
(("1"
(case
"polynomial(poly_deriv(a),m-1)(x) = polynomial(poly_deriv(g),m-1)(x)*b(0)" )
(("1"
(replaces -1)
(("1"
(replace -4)
(("1"
(expand "polynomial" +)
(("1"
(expand "sigma" +)
(("1"
(expand "sigma" +)
(("1"
(expand "*" )
(("1"
(propax)
nil
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2"
(hide 2)
(("2"
(expand "polynomial" +)
(("2"
(rewrite
"sigma_scal_right"
1
:dir
rl)
(("2"
(rewrite "sigma_eq" )
(("2"
(hide 2)
(("2"
(skosimp*)
(("2"
(expand
"poly_deriv"
1)
(("2"
(inst
-
"1+n!1" )
(("2"
(assert )
(("2"
(replace
-1)
(("2"
(assert )
nil
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2"
(lemma "polynomial_eq_coeff" )
(("2"
(inst - "a" "b(0)*g" "m" )
(("2"
(assert )
(("2"
(flatten)
(("2"
(hide -2)
(("2"
(split -1)
(("1"
(skeep)
(("1"
(inst - "j" )
(("1"
(expand "*" )
(("1"
(assert )
nil
nil ))
nil ))
nil ))
nil )
("2"
(decompose-equality
1)
(("2"
(inst -6 "x!1" )
(("2"
(replace -6 1)
(("2"
(expand
"polynomial"
+
1)
(("2"
(expand
"sigma"
1)
(("2"
(expand
"sigma"
1)
(("2"
(inst
-2
"x!1" )
(("2"
(replace
-2
1
:dir
rl)
(("2"
(rewrite
"scal_polynomial2" )
nil
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("4" (inst - "1" )
(("4" (mult-by 1 "m" )
(("4" (assert )
(("4" (expand "polynomial" (-1 1))
(("4"
(rewrite "sigma_scal_right" 1 :dir rl)
(("4"
(expand "*" )
(("4" (assert ) nil nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2" (label "neqm" 1)
(("2" (hide "neqm" )
(("2"
(case "EXISTS (q:[nat->real]): FORALL (x:real): polynomial(q,n-m)(x) = (x-y)^1*polynomial(poly_deriv(b),n-m-1)(x) + m*polynomial(b,n-m)(x)" )
(("1" (skeep)
(("1"
(case "FORALL (x):
polynomial(poly_deriv(a), n - 1)(x) =
(x - y) ^ (m - 1) * polynomial(q, n - m)(x)")
(("1" (inst + "b" "q" )
(("1" (assert )
(("1" (split +)
(("1" (propax) nil nil )
("2" (propax) nil nil )
("3" (assert )
(("3"
(inst -2 "y" )
(("3"
(assert )
(("3"
(assert )
(("3"
(replace -2 +)
(("3"
(inst -4 "1" )
(("3"
(flatten)
(("3"
(mult-by 1 "m" )
(("3"
(assert )
(("3"
(expand "^" -1)
(("3"
(expand "expt" -1)
(("3"
(assert )
nil
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2" (hide 3)
(("2" (lemma "linear_power_is_differentiable" )
(("2" (inst - "m" "y" )
(("2" (assert )
(("2"
(skolem -1 "z" )
(("2"
(flatten)
(("2"
(hide -1)
(("2"
(assert )
(("2"
(case
"NOT polynomial(poly_deriv(a),n-1) = polynomial(poly_deriv(polynomial_prod(z,m,b,n-m)),n-1)" )
(("1"
(case
"NOT polynomial(poly_deriv(LAMBDA (i:nat): IF i>n THEN 0 ELSE a(i) ENDIF),n-1) = polynomial(poly_deriv(polynomial_prod(z,m,b,n-m)),n-1)" )
(("1"
(hide 2)
(("1"
(invoke
(name "aq" "%1" )
(! 1 1 1 1))
(("1"
(replace -1)
(("1"
(case
"aq = polynomial_prod(z, m, b, n - m)" )
(("1"
(assert )
nil
nil )
("2"
(lemma
"polynomial_eq_coeff" )
(("2"
(inst
-
"aq"
"polynomial_prod(z, m, b, n - m)"
"n" )
(("2"
(flatten)
(("2"
(hide -2)
(("2"
(split -)
(("1"
(decompose-equality
1)
(("1"
(case
"x!1 > n" )
(("1"
(expand
"aq"
1)
(("1"
(assert )
(("1"
(expand
"polynomial_prod"
1)
(("1"
(expand
"max" )
(("1"
(assert )
(("1"
(expand
"sigma"
+)
(("1"
(propax)
nil
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2"
(inst
-
"x!1" )
(("2"
(assert )
nil
nil ))
nil ))
nil ))
nil )
("2"
(decompose-equality
1)
(("2"
(rewrite
"polynomial_prod_def"
:dir
rl)
(("2"
(inst
-3
"x!1" )
(("2"
(inst
-7
"x!1" )
(("2"
(assert )
(("2"
(replace
-3
:dir
rl)
(("2"
(replace
-7
:dir
rl)
(("2"
(expand
"polynomial"
1)
(("2"
(rewrite
"sigma_restrict_eq" )
(("2"
(decompose-equality
1)
(("2"
(expand
"restrict" )
(("2"
(lift-if)
(("2"
(expand
"aq" )
(("2"
(propax)
nil
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2"
(replace -1 1 :dir rl)
(("2"
(decompose-equality 1)
(("2"
(expand "polynomial" 1)
(("2"
(rewrite
"sigma_restrict_eq" )
(("2"
(hide 2)
(("2"
(decompose-equality
1)
(("2"
(expand
"restrict" )
(("2"
(expand
"poly_deriv" )
(("2"
(propax)
nil
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2"
(lemma " poly_product_rule" )
(("2"
(inst?)
(("2"
(skeep)
(("2"
(inst - "x" )
(("2"
(assert )
(("2"
(reveal "neqm" )
(("2"
(assert )
(("2"
(replace
-2
:dir
rl)
(("2"
(replace
-1
+)
(("2"
(inst
-4
"x" )
(("2"
(inst
-5
"x" )
(("2"
(replace
-5)
(("2"
(replace
-4)
(("2"
(inst
-6
"x" )
(("2"
(replace
-6)
(("2"
(assert )
(("2"
(lemma
"expt_plus" )
(("2"
(inst
-
"m-1"
"1"
"x-y" )
(("1"
(assert )
nil
nil )
("2"
(flatten)
(("2"
(replace
-1)
(("2"
(expand
"^"
+)
(("2"
(expand
"expt"
+)
(("2"
(lift-if)
(("2"
(assert )
nil
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2" (assert )
(("2" (hide 3)
(("2"
(name "DIGG"
"LAMBDA (ii:nat): IF ii = n-m THEN poly_deriv(b)(n-m-1) + m*b(n-m) ELSIF ii>0 THEN poly_deriv(b)(ii-1) - y*poly_deriv(b)(ii) + m*b(ii) ELSE -y*poly_deriv(b)(0) + m*b(0) ENDIF" )
(("1" (inst + "DIGG" )
(("1" (skeep)
(("1"
(name "IP"
"LAMBDA (i:nat): IF i = 1 THEN 1 ELSIF i = 0 THEN -y ELSE 0 ENDIF" )
(("1"
(case "x-y = polynomial(IP,1)(x)" )
(("1"
(replace -1 1)
(("1"
(expand "^" 1)
(("1"
(expand "expt" 1)
(("1"
(expand "expt" 1)
(("1"
(rewrite
"polynomial_prod_def" )
(("1"
(rewrite
"scal_polynomial2"
:dir
rl)
(("1"
(expand "polynomial" 1)
(("1"
(rewrite "sigma_sum" )
(("1"
(rewrite
"sigma_restrict_eq" )
(("1"
(hide 2)
(("1"
(decompose-equality
1)
(("1"
(expand
"restrict" )
(("1"
(lift-if)
(("1"
(assert )
(("1"
(split +)
(("1"
(propax)
nil
nil )
("2"
(flatten)
(("2"
(case
"DIGG(x!1) =
(m * b)(x!1) +
polynomial_prod(poly_deriv(b), -1 - m + n, IP, 1)(x!1)")
(("1"
(assert )
nil
nil )
("2"
(hide
3)
(("2"
(hide
-3)
(("2"
(expand
"DIGG"
1)
(("2"
(expand
"polynomial_prod" )
(("2"
(expand
"max" )
(("2"
(assert )
(("2"
(case
"x!1 = 0" )
(("1"
(replaces
-1)
(("1"
(assert )
(("1"
(lemma
"sigma_eq_one_arg" )
(("1"
(inst?)
(("1"
(inst
-
"0" )
(("1"
(assert )
(("1"
(split
-)
(("1"
(replace
-1
+)
(("1"
(expand
"IP"
1)
(("1"
(expand
"*" )
(("1"
(reveal
"neqm" )
(("1"
(assert )
nil
nil ))
nil ))
nil ))
nil ))
nil )
("2"
(reveal
"neqm" )
(("2"
(assert )
nil
nil ))
nil )
("3"
(skosimp*)
nil
nil ))
nil ))
nil ))
nil )
("2"
(skosimp*)
(("2"
(assert )
nil
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2"
(assert )
(("2"
(assert )
(("2"
(lift-if)
(("2"
(split
+)
(("1"
(flatten)
(("1"
(replaces
-1)
(("1"
(assert )
(("1"
(expand
"sigma"
1)
(("1"
(expand
"sigma"
1)
(("1"
(expand
"IP"
1)
(("1"
(expand
"*" )
(("1"
(propax)
nil
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2"
(flatten)
(("2"
(assert )
(("2"
(rewrite
"sigma_reverse"
2)
(("1"
(expand
"sigma"
+)
(("1"
(expand
"sigma"
+)
(("1"
(assert )
(("1"
(invoke
(case
"NOT %1 = 0" )
(!
2
2
2))
(("1"
(hide
3)
(("1"
(rewrite
"sigma_restrict_eq_0" )
(("1"
(hide
2)
(("1"
(skosimp*)
(("1"
(assert )
nil
nil ))
nil ))
nil )
("2"
(skosimp*)
(("2"
(assert )
nil
nil ))
nil ))
nil ))
nil )
("2"
(replaces
-1)
(("2"
(assert )
(("2"
(expand
"IP"
+)
(("2"
(expand
"*" )
(("2"
(assert )
nil
nil ))
nil ))
nil ))
nil ))
nil )
("3"
(skosimp*)
(("3"
(assert )
nil
nil ))
nil )
("4"
(skosimp*)
(("4"
(assert )
nil
nil ))
nil )
("5"
(flatten)
(("5"
(assert )
nil
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2"
(skosimp*)
(("2"
(assert )
nil
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("3"
(reveal
"neqm" )
(("3"
(assert )
nil
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2"
(hide-all-but
1)
(("2"
(grind)
(("2"
(reveal
"neqm" )
(("2"
(assert )
nil
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2"
(assert )
(("2"
(reveal "neqm" )
(("2"
(assert )
(("2"
(expand "IP" 2)
(("2"
(hide-all-but 2)
(("2" (grind) nil nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2" (skosimp*) (("2" (assert ) nil nil )) nil )
("3" (skosimp*)
(("3" (assert )
(("3" (reveal "neqm" )
(("3" (assert ) nil nil )) nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("3" (assert )
(("3" (reveal "neqm" ) (("3" (assert ) nil nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
((max_linear_div_power? const-decl "bool" more_polynomial_props nil )
(nat_exp application-judgement "nat" exponentiation nil )
(expt def-decl "real" exponentiation nil )
(nat_expt application-judgement "nat" exponentiation nil )
(poly_product_rule formula-decl nil polynomials nil )
(expt_plus formula-decl nil exponentiation nil )
(nzreal nonempty-type-eq-decl nil reals nil )
(y skolem-const-decl "real" more_polynomial_props nil )
(x skolem-const-decl "real" more_polynomial_props nil )
(nnint_plus_nnint_is_nnint application-judgement "nonneg_int"
integers nil )
(sigma_restrict_eq formula-decl nil sigma nil )
(restrict const-decl "[T -> real]" sigma nil )
(polynomial_prod_def formula-decl nil polynomials nil )
(x!1 skolem-const-decl "nat" more_polynomial_props nil )
(n skolem-const-decl "nat" more_polynomial_props nil )
(aq skolem-const-decl "[nat -> real]" more_polynomial_props nil )
(max const-decl "{p: real | p >= m AND p >= n}" real_defs nil )
(polynomial_prod const-decl "real" polynomials nil )
(minus_real_is_real application-judgement "real" reals nil )
(sigma_reverse formula-decl nil sigma_nat nil )
(posint_plus_nnint_is_posint application-judgement "posint"
integers nil )
(sigma_restrict_eq_0 formula-decl nil sigma nil )
(sigma_eq_one_arg formula-decl nil sigma nil )
(IP skolem-const-decl "[nat -> real]" more_polynomial_props nil )
(even_minus_odd_is_odd application-judgement "odd_int" integers
nil )
(DIGG skolem-const-decl "[nat -> real]" more_polynomial_props nil )
(sigma_sum formula-decl nil sigma nil )
(- const-decl "[numfield -> numfield]" number_fields nil )
(minus_odd_is_odd application-judgement "odd_int" integers nil )
(* const-decl "[T -> real]" real_fun_ops nil )
(mult_divides2 application-judgement "(divides(m))" divides nil )
(mult_divides1 application-judgement "(divides(n))" divides nil )
(even_times_int_is_even application-judgement "even_int" integers
nil )
(nnint_times_nnint_is_nnint application-judgement "nonneg_int"
integers nil )
(nonzero_real nonempty-type-eq-decl nil reals nil )
(both_sides_times1 formula-decl nil real_props nil )
(polynomial_eq_coeff formula-decl nil polynomials nil )
(scal_polynomial2 formula-decl nil polynomials nil )
(upto nonempty-type-eq-decl nil naturalnumbers nil )
(m skolem-const-decl "posnat" more_polynomial_props nil )
(j skolem-const-decl "nat" more_polynomial_props nil )
(NOT const-decl "[bool -> bool]" booleans nil )
(T_low type-eq-decl nil sigma nil )
(T_high type-eq-decl nil sigma nil )
(^ const-decl "real" exponentiation nil )
(/= const-decl "boolean" notequal nil )
(OR const-decl "[bool, bool -> bool]" booleans nil )
(IF const-decl "[boolean, T, T -> T]" if_def nil )
(sigma_scal_right formula-decl nil sigma nil )
(real_lt_is_strict_total_order name-judgement
"(strict_total_order?[real])" real_props nil )
(real_plus_real_is_real application-judgement "real" reals nil )
(+ const-decl "[numfield, numfield -> numfield]" number_fields nil )
(AND const-decl "[bool, bool -> bool]" booleans nil )
(subrange type-eq-decl nil integers nil )
(int_plus_int_is_int application-judgement "int" integers nil )
(sigma_eq formula-decl nil sigma nil )
(sigma def-decl "real" sigma nil )
(real_ge_is_total_order name-judgement "(total_order?[real])"
real_props nil )
(- const-decl "[numfield, numfield -> numfield]" number_fields nil )
(poly_deriv const-decl "real" polynomials nil )
(polynomial const-decl "[real -> real]" polynomials nil )
(* const-decl "[numfield, numfield -> numfield]" number_fields nil )
(numfield nonempty-type-eq-decl nil number_fields nil )
(sequence type-eq-decl nil sequences nil )
(<= const-decl "bool" reals nil )
(IMPLIES const-decl "[bool, bool -> bool]" booleans nil )
(real_times_real_is_real application-judgement "real" reals nil )
(real_minus_real_is_real application-judgement "real" reals nil )
(real_gt_is_strict_total_order name-judgement
"(strict_total_order?[real])" real_props nil )
(linear_power_is_differentiable formula-decl nil
more_polynomial_props nil )
(= const-decl "[T, T -> boolean]" equalities nil )
(nonneg_int nonempty-type-eq-decl nil integers nil )
(> const-decl "bool" reals nil )
(posnat nonempty-type-eq-decl nil integers nil )
(int_minus_int_is_int application-judgement "int" integers nil )
(nat nonempty-type-eq-decl nil naturalnumbers nil )
(>= const-decl "bool" reals nil )
(bool nonempty-type-eq-decl nil booleans nil )
(int nonempty-type-eq-decl nil integers nil )
(integer_pred const-decl "[rational -> boolean]" integers nil )
(rational nonempty-type-from-decl nil rationals nil )
(rational_pred const-decl "[real -> boolean]" rationals nil )
(real nonempty-type-from-decl nil reals nil )
(real_pred const-decl "[number_field -> boolean]" reals nil )
(number_field nonempty-type-from-decl nil number_fields nil )
(number_field_pred const-decl "[number -> boolean]" number_fields
nil )
(boolean nonempty-type-decl nil booleans nil )
(number nonempty-type-decl nil numbers nil )
(real_le_is_total_order name-judgement "(total_order?[real])"
real_props nil ))
nil )
(max_linear_div_power_rew-1 nil 3591089825
(""
(case "NOT FORALL (a: sequence[real], n: nat, y: real):
a(n) /= 0 AND polynomial(a, n)(y) = 0 IMPLIES
(EXISTS (b: [nat -> real], m: posnat):
m <= n
AND FORALL (x):
polynomial(a, n)(x) =
(x - y) ^ m * polynomial(b, n - m)(x)
AND polynomial(b, n - m)(y) /= 0)")
(("1" (hide 2)
(("1" (induct "n" )
(("1" (skeep)
(("1" (expand "polynomial" -1)
(("1" (expand "sigma" )
(("1" (expand "sigma" ) (("1" (propax) nil )))))))))
("2" (skolem 1 "nn" )
(("2" (flatten)
(("2" (skeep)
(("2" (lemma "polynomial_zero_factor" )
(("2" (inst - "a" "nn+1" "y" )
(("2" (assert )
(("2" (skeep -1)
(("2" (case "polynomial(g,nn)(y)/=0" )
(("1" (inst + "g" "1" )
(("1" (assert )
(("1" (expand "^" +)
(("1"
(expand "expt" +)
(("1"
(expand "expt" +)
(("1" (propax) nil )))))))))))
("2" (flatten)
(("2" (inst - "g" "y" )
(("2" (assert )
(("2"
(case "g(nn)/=0" )
(("1"
(assert )
(("1"
(flatten)
(("1"
(skeep)
(("1"
(assert )
(("1"
(inst + "b" "m+1" )
(("1"
(assert )
(("1"
(skeep)
(("1"
(inst - "x" )
(("1"
(inst - "x" )
(("1"
(assert )
(("1"
(case
"FORALL (rr:real): x*rr-rr*y = (x-y)^1*rr" )
(("1"
(rewrite -1)
(("1"
(hide -1)
(("1"
(replace
-2
+)
(("1"
(assert )
(("1"
(flatten)
(("1"
(assert )
(("1"
(replace
-4
+)
(("1"
(assert )
(("1"
(lemma
"expt_plus" )
(("1"
(inst?)
(("1"
(assert )
(("1"
(replace
-1
+)
(("1"
(assert )
nil )))))
("2"
(flatten)
(("2"
(replace
-1
+)
(("2"
(expand
"^"
+)
(("2"
(expand
"expt"
+)
(("2"
(propax)
nil )))))))))))))))))))))))))))))
("2"
(hide-all-but
1)
(("2"
(grind)
nil )))))))))))))))))))))))))
("2"
(flatten)
(("2"
(assert )
(("2"
(lemma "polynomial_eq_coeff" )
(("2"
(name
"DIG"
"LAMBDA (ii:nat): IF ii = 1+nn THEN g(nn) ELSIF ii>0 THEN g(ii-1) - g(ii)*y ELSE -g(0)*y ENDIF" )
(("1"
(inst - "a" "DIG" "1+nn" )
(("1"
(flatten)
(("1"
(hide -3)
(("1"
(split -)
(("1"
(inst - "1+nn" )
(("1"
(expand "DIG" -1)
(("1"
(assert )
nil )))))
("2"
(decompose-equality
1)
(("2"
(inst - "x!1" )
(("2"
(assert )
(("2"
(replace -4 1)
(("2"
(expand
"polynomial"
1)
(("2"
(name
"IG"
"LAMBDA (i: nat): g(i) * (IF i = 0 THEN 1 ELSE x!1 ^ i ENDIF)" )
(("2"
(replace
-1)
(("2"
(case
"sigma(0,nn,IG)=sigma(0,1+nn,LAMBDA (ii:nat): IF ii=0 THEN 0 ELSE IG(ii-1) ENDIF)" )
(("1"
(mult-by
-1
"x!1" )
(("1"
(replace
-1
+)
(("1"
(rewrite
"sigma_scal_right"
1
:dir
rl)
(("1"
(rewrite
"sigma_scal_right"
1
:dir
rl)
(("1"
(case
"sigma(0, nn, LAMBDA (i: nat): IG(i) * y) = sigma(0, 1+nn, LAMBDA (i: nat): IF i >nn THEN 0 ELSE IG(i) * y ENDIF)" )
(("1"
(replace
-1
+)
(("1"
(rewrite
"sigma_minus" )
(("1"
(rewrite
"sigma_restrict_eq" )
(("1"
(hide
2)
(("1"
(decompose-equality
1)
(("1"
(expand
"restrict" )
(("1"
(lift-if)
(("1"
(assert )
(("1"
(ground)
(("1"
(expand
"DIG"
1)
(("1"
(assert )
(("1"
(expand
"IG"
1)
(("1"
(assert )
nil )))))))
("2"
(lift-if)
(("2"
(assert )
(("2"
(ground)
(("1"
(case
"NOT x!2 = 1+nn" )
(("1"
(assert )
nil )
("2"
(replace
-1)
(("2"
(assert )
(("2"
(expand
"DIG"
1)
(("2"
(expand
"IG"
1)
(("2"
(lift-if)
(("2"
(assert )
nil )))))))))))))
("2"
(expand
"IG"
2)
(("2"
(expand
"DIG"
2)
(("2"
(lift-if)
(("2"
(assert )
(("2"
(ground)
(("1"
(replace
-1)
(("1"
(expand
"^"
1)
(("1"
(expand
"expt"
1)
(("1"
(expand
"expt"
1)
(("1"
(propax)
nil )))))))))
("2"
(lemma
"expt_plus" )
(("2"
(inst
-
"x!2-1"
"1"
"x!1" )
(("1"
(assert )
(("1"
(replace
-1
+)
(("1"
(expand
"^"
2
3)
(("1"
(expand
"expt"
2)
(("1"
(expand
"expt"
2)
(("1"
(assert )
nil )))))))))))
("2"
(assert )
(("2"
(flatten)
(("2"
(replace
-1)
(("2"
(expand
"^"
2)
(("2"
(expand
"expt"
2)
(("2"
(propax)
nil )))))))))))))))))))))))))))))))))))))))
("2"
(skosimp*)
(("2"
(assert )
nil )))))))))))))
("2"
(hide
2)
(("2"
(expand
"sigma"
+
2)
(("2"
(rewrite
"sigma_restrict_eq" )
(("2"
(decompose-equality
1)
(("2"
(expand
"restrict" )
(("2"
(propax)
nil )))))))))))))))))))
("2"
(skosimp*)
(("2"
(assert )
nil )))))
("2"
(case
"FORALL (k:nat): k<=nn IMPLIES sigma(0, k, IG) =
sigma(0, 1 + k,
LAMBDA (ii: nat): IF ii = 0 THEN 0 ELSE IG(ii - 1) ENDIF)")
(("1"
(inst?)
(("1"
(assert )
nil )))
("2"
(induct
"k" )
(("1"
(assert )
(("1"
(hide-all-but
1)
(("1"
(expand
"IG" )
(("1"
(grind)
nil )))))))
("2"
(skeep)
(("2"
(assert )
(("2"
(expand
"sigma"
+)
(("2"
(propax)
nil )))))))
("3"
(skosimp*)
(("3"
(assert )
nil )))))
("3"
(skosimp*)
(("3"
(assert )
nil )))))
("3"
(skosimp*)
(("3"
(assert )
nil )))))))))))))))))))))))))))
("2"
(skosimp*)
(("2"
(assert )
nil )))))))))))))))))))))))))))))))))))
("3" (skosimp*) (("3" (assert ) nil )))
("4" (skosimp*) (("4" (assert ) nil )))))))
("2" (skeep)
(("2" (inst - "a" "n" "y" )
(("2" (assert )
(("2" (skeep)
(("2" (case "n = m" )
(("1" (replace -1)
(("1" (assert )
(("1" (inst + "m" )
(("1" (expand "max_linear_div_power?" )
(("1" (inst + "b" "m*b" )
(("1" (split +)
(("1" (skeep)
(("1" (inst - "x" ) (("1" (assert ) nil )))))
("2" (inst - "1" ) (("2" (assert ) nil )))
("3" (skeep)
(("3"
(lemma "linear_power_is_differentiable" )
(("3"
(inst - "m" "y" )
(("3"
(assert )
(("3"
(skolem -1 "g" )
(("3"
(flatten)
(("3"
(case
"FORALL (j:nat): j<=m IMPLIES a(j)=g(j)*b(0)" )
(("1"
(inst -4 "x" )
(("1"
(case
"polynomial(poly_deriv(a),m-1)(x) = polynomial(poly_deriv(g),m-1)(x)*b(0)" )
(("1"
(replaces -1)
(("1"
(replace -4)
(("1"
(expand
"polynomial"
+)
(("1"
(expand "sigma" +)
(("1"
(expand
"sigma"
+)
(("1"
(expand "*" )
(("1"
(propax)
nil )))))))))))))
("2"
(hide 2)
(("2"
(expand "polynomial" +)
(("2"
(rewrite
"sigma_scal_right"
1
:dir
rl)
(("2"
(rewrite
"sigma_eq" )
(("2"
(hide 2)
(("2"
(skosimp*)
(("2"
(expand
"poly_deriv"
1)
(("2"
(inst
-
"1+n!1" )
(("2"
(assert )
(("2"
(replace
-1)
(("2"
(assert )
nil )))))))))))))))))))))))))
("2"
(lemma "polynomial_eq_coeff" )
(("2"
(inst - "a" "b(0)*g" "m" )
(("2"
(assert )
(("2"
(flatten)
(("2"
(hide -2)
(("2"
(split -1)
(("1"
(skeep)
(("1"
(inst - "j" )
(("1"
(expand "*" )
(("1"
(assert )
nil )))))))
("2"
(decompose-equality
1)
(("2"
(inst -6 "x!1" )
(("2"
(flatten)
(("2"
(replace
-6
1)
(("2"
(expand
"polynomial"
+
1)
(("2"
(expand
"sigma"
1)
(("2"
(expand
"sigma"
1)
(("2"
(inst
-2
"x!1" )
(("2"
(replace
-2
1
:dir
rl)
(("2"
(rewrite
"scal_polynomial2" )
nil )))))))))))))))))))))))))))))))))))))))))))))
("4" (inst - "1" )
(("4" (flatten)
(("4"
(mult-by 1 "m" )
(("4"
(assert )
(("4"
(expand "polynomial" (-1 1))
(("4"
(rewrite
"sigma_scal_right"
1
:dir
rl)
(("4"
(expand "*" )
(("4"
(assert )
nil )))))))))))))))))))))))))))
("2" (label "neqm" 1)
(("2" (hide "neqm" )
(("2"
(case "EXISTS (q:[nat->real]): FORALL (x:real): polynomial(q,n-m)(x) = (x-y)^1*polynomial(poly_deriv(b),n-m-1)(x) + m*polynomial(b,n-m)(x)" )
(("1" (skeep)
(("1"
(case "FORALL (x):
polynomial(poly_deriv(a), n - 1)(x) =
(x - y) ^ (m - 1) * polynomial(q, n - m)(x)")
(("1" (inst + "m" )
(("1" (expand "max_linear_div_power?" )
(("1" (inst + "b" "q" )
(("1"
(assert )
(("1"
(split +)
(("1"
(skeep)
(("1"
(inst -4 "x" )
(("1" (assert ) nil )))))
("2"
(inst -4 "1" )
(("2" (assert ) nil )))
("3" (propax) nil )
("4"
(inst -2 "y" )
(("4"
(assert )
(("4"
(assert )
(("4"
(replace -2 +)
(("4"
(inst -4 "1" )
(("4"
(flatten)
(("4"
(mult-by 1 "m" )
(("4"
(assert )
(("4"
(expand "^" -1)
(("4"
(expand
"expt"
-1)
(("4"
(assert )
nil )))))))))))))))))))))))))))))))
("2" (lemma "linear_power_is_differentiable" )
(("2" (inst - "m" "y" )
(("2" (assert )
(("2"
(skolem -1 "z" )
(("2"
(flatten)
(("2"
(assert )
(("2"
(hide 3)
(("2"
(case
"NOT polynomial(poly_deriv(a),n-1) = polynomial(poly_deriv(polynomial_prod(z,m,b,n-m)),n-1)" )
(("1"
(case
"NOT polynomial(poly_deriv(LAMBDA (i:nat): IF i>n THEN 0 ELSE a(i) ENDIF),n-1) = polynomial(poly_deriv(polynomial_prod(z,m,b,n-m)),n-1)" )
(("1"
(hide 2)
(("1"
(invoke
(name "aq" "%1" )
(! 1 1 1 1))
(("1"
(replace -1)
(("1"
(case
"aq = polynomial_prod(z, m, b, n - m)" )
(("1" (assert ) nil )
("2"
(lemma
"polynomial_eq_coeff" )
(("2"
(inst
-
"aq"
"polynomial_prod(z, m, b, n - m)"
"n" )
(("2"
(flatten)
(("2"
(hide -2)
(("2"
(split -)
(("1"
(decompose-equality
1)
(("1"
(case
"x!1 > n" )
(("1"
(expand
"aq"
1)
(("1"
(assert )
(("1"
(expand
"polynomial_prod"
1)
(("1"
(expand
"max" )
(("1"
(assert )
(("1"
(expand
"sigma"
+)
(("1"
(propax)
nil )))))))))))))
("2"
(inst
-
"x!1" )
(("2"
(assert )
nil )))))))
("2"
(decompose-equality
1)
(("2"
(rewrite
"polynomial_prod_def"
:dir
rl)
(("2"
(inst
-3
"x!1" )
(("2"
(inst
-7
"x!1" )
(("2"
(flatten)
(("2"
(assert )
(("2"
(replace
-3
:dir
rl)
(("2"
(replace
-7
:dir
rl)
(("2"
(expand
"polynomial"
1)
(("2"
(rewrite
"sigma_restrict_eq" )
(("2"
(decompose-equality
1)
(("2"
(expand
"restrict" )
(("2"
(lift-if)
(("2"
(expand
"aq" )
(("2"
(propax)
nil )))))))))))))))))))))))))))))))))))))))))))))))
("2"
(replace -1 1 :dir rl)
(("2"
(decompose-equality 1)
(("2"
(expand "polynomial" 1)
(("2"
(rewrite
"sigma_restrict_eq" )
(("2"
(hide 2)
(("2"
(decompose-equality
1)
(("2"
(expand
"restrict" )
(("2"
(expand
"poly_deriv" )
(("2"
(propax)
nil )))))))))))))))))))
("2"
(lemma " poly_product_rule" )
(("2"
(inst?)
(("2"
(skeep)
(("2"
(inst - "x" )
(("2"
(assert )
(("2"
(reveal "neqm" )
(("2"
(assert )
(("2"
(replace
-2
:dir
rl)
(("2"
(replace
-1
+)
(("2"
(inst
-4
"x" )
(("2"
(inst
-5
"x" )
(("2"
(replace
-5)
(("2"
(replace
-4)
(("2"
(inst
-6
"x" )
(("2"
(replace
-6)
(("2"
(assert )
(("2"
(lemma
"expt_plus" )
(("2"
(inst
-
"m-1"
"1"
"x-y" )
(("1"
(assert )
nil )
("2"
(flatten)
(("2"
(replace
-1)
(("2"
(expand
"^"
+)
(("2"
(expand
"expt"
+)
(("2"
(lift-if)
(("2"
(assert )
nil )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
("3" (assert ) nil )))))
("2" (hide 3)
(("2"
(name "DIGG"
"LAMBDA (ii:nat): IF ii = n-m THEN poly_deriv(b)(n-m-1) + m*b(n-m) ELSIF ii>0 THEN poly_deriv(b)(ii-1) - y*poly_deriv(b)(ii) + m*b(ii) ELSE -y*poly_deriv(b)(0) + m*b(0) ENDIF" )
(("1" (inst + "DIGG" )
(("1" (skeep)
(("1"
(name "IP"
"LAMBDA (i:nat): IF i = 1 THEN 1 ELSIF i = 0 THEN -y ELSE 0 ENDIF" )
(("1"
(case "x-y = polynomial(IP,1)(x)" )
(("1"
(replace -1 1)
(("1"
(expand "^" 1)
(("1"
(expand "expt" 1)
(("1"
(expand "expt" 1)
(("1"
(rewrite
"polynomial_prod_def" )
(("1"
(rewrite
"scal_polynomial2"
:dir
rl)
(("1"
(expand "polynomial" 1)
(("1"
(rewrite "sigma_sum" )
(("1"
(rewrite
"sigma_restrict_eq" )
(("1"
(hide 2)
(("1"
(decompose-equality
1)
(("1"
(expand
"restrict" )
(("1"
(lift-if)
(("1"
(assert )
(("1"
(split +)
(("1"
(propax)
nil )
("2"
(flatten)
(("2"
(case
"DIGG(x!1) =
(m * b)(x!1) +
polynomial_prod(poly_deriv(b), -1 - m + n, IP, 1)(x!1)")
(("1"
(assert )
nil )
("2"
(hide
3)
(("2"
(hide
-3)
(("2"
(expand
"DIGG"
1)
(("2"
(expand
"polynomial_prod" )
(("2"
(expand
"max" )
(("2"
(assert )
(("2"
(case
"x!1 = 0" )
(("1"
(replaces
-1)
(("1"
(assert )
(("1"
(lemma
"sigma_eq_one_arg" )
(("1"
(inst?)
(("1"
(inst
-
"0" )
(("1"
(assert )
(("1"
(split
-)
(("1"
(replace
-1
+)
(("1"
(expand
"IP"
1)
(("1"
(expand
"*" )
(("1"
(reveal
"neqm" )
(("1"
(assert )
nil )))))))))
("2"
(reveal
"neqm" )
(("2"
(assert )
nil )))
("3"
(skosimp*)
nil )))))))
("2"
(skosimp*)
(("2"
(assert )
nil )))))))))))
("2"
(assert )
(("2"
(assert )
(("2"
(lift-if)
(("2"
(split
+)
(("1"
(flatten)
(("1"
(replaces
-1)
(("1"
(assert )
(("1"
(expand
"sigma"
1)
(("1"
(expand
"sigma"
1)
(("1"
(expand
"IP"
1)
(("1"
(expand
"*" )
(("1"
(propax)
nil )))))))))))))))
("2"
(flatten)
(("2"
(assert )
(("2"
(rewrite
"sigma_reverse"
2)
(("1"
(expand
"sigma"
+)
(("1"
(expand
"sigma"
+)
(("1"
(assert )
(("1"
(invoke
(case
"NOT %1 = 0" )
(!
2
2
2))
(("1"
(hide
3)
(("1"
(rewrite
"sigma_restrict_eq_0" )
(("1"
(hide
2)
(("1"
(skosimp*)
(("1"
(assert )
nil )))))
("2"
(skosimp*)
(("2"
(assert )
nil )))))))
("2"
(replaces
-1)
(("2"
(assert )
(("2"
(expand
"IP"
+)
(("2"
(expand
"*" )
(("2"
(assert )
nil )))))))))
("3"
(skosimp*)
(("3"
(assert )
nil )))
("4"
(skosimp*)
(("4"
(assert )
nil )))
("5"
(flatten)
(("5"
(assert )
nil )))))))))))
("2"
(skosimp*)
(("2"
(assert )
nil )))))))))))))))))))))))))))))))
("3"
(reveal
"neqm" )
(("3"
(assert )
nil )))))))))))))))
("2"
(hide-all-but
1)
(("2"
(grind)
(("2"
(reveal
"neqm" )
(("2"
(assert )
nil )))))))))))))))))))))))))))))
("2"
(assert )
(("2"
(reveal "neqm" )
(("2"
(assert )
(("2"
(expand "IP" 2)
(("2"
(hide-all-but 2)
(("2"
(grind)
nil )))))))))))))))))))
("2" (skosimp*) (("2" (assert ) nil )))
("3" (skosimp*) (("3" (assert ) nil )))
("4" (skosimp*)
(("4" (assert )
(("4" (reveal "neqm" )
(("4" (assert ) nil )))))))))))
("3" (assert )
(("3" (reveal "neqm" ) (("3" (assert ) nil )))))
("4" (assert ) nil )))))))))))))))))
("3" (skosimp*) (("3" (assert ) nil )))
("4" (skosimp*) (("4" (assert ) nil ))))
nil )
nil nil ))
(max_linear_div_power_rew2_TCC1 0
(max_linear_div_power_rew2_TCC1-1 nil 3591634826
("" (subtype-tcc) nil nil ) ((/= const-decl "boolean" notequal nil ))
nil ))
(max_linear_div_power_rew2 0
(max_linear_div_power_rew2-1 nil 3591634835
("" (skeep)
(("" (rewrite "max_linear_div_power_rew" )
(("" (split)
(("1" (flatten)
(("1" (skosimp*)
(("1" (assert )
(("1" (inst + "b!1" "n-m" ) (("1" (assert ) nil nil )) nil ))
nil ))
nil ))
nil )
("2" (flatten)
(("2" (case "NOT m<=n" )
(("1" (hide 2)
(("1" (lemma "polynomial_prod_def" )
(("1" (lemma "linear_power_is_differentiable" )
(("1" (inst - "m" "y" )
(("1" (assert )
(("1" (skolem - "aa" )
(("1" (flatten)
(("1" (skeep)
(("1" (hide -4)
(("1"
(inst - "aa" "b" "k" "m" _)
(("1"
(case
"NOT polynomial(a,n) = polynomial(polynomial_prod(aa,m,b,k),k+m)" )
(("1"
(decompose-equality 1)
(("1"
(inst -3 "x!1" )
(("1"
(inst -4 "x!1" )
(("1"
(replace -4 :dir rl)
(("1"
(replace -3)
(("1"
(assert )
(("1"
(inst -5 "x!1" )
nil
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2"
(case
"EXISTS (D:nat): D<=k AND b(D)/=0 AND FORALL (i:nat): i>D AND i<=k IMPLIES b(i)=0" )
(("1"
(skeep)
(("1"
(name
"pp"
"polynomial_prod(aa, m, b, k)" )
(("1"
(replace -1)
(("1"
(case "pp(D+m)/=0" )
(("1"
(flatten)
(("1"
(case
"NOT polynomial(LAMBDA (i:nat): IF i>n THEN 0 ELSE a(i) ENDIF,k+m) = polynomial(pp,k+m)" )
(("1"
(decompose-equality
1)
(("1"
(decompose-equality
-4)
(("1"
(inst - "x!1" )
(("1"
(replaces
-1
:dir
rl)
(("1"
(hide-all-but
(1 4))
(("1"
(expand
"polynomial"
+
1)
(("1"
(lemma
"sigma_split" )
(("1"
(inst?)
(("1"
(inst
-
"n" )
(("1"
(assert )
(("1"
(replaces
-1)
(("1"
(invoke
(case
"%1 = 0" )
(!
1
1
2))
(("1"
(replaces
-1)
(("1"
(expand
"polynomial"
+)
(("1"
(rewrite
"sigma_eq" )
nil
nil ))
nil ))
nil )
("2"
(hide
2)
(("2"
(rewrite
"sigma_restrict_eq_0" )
nil
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2"
(lemma
"polynomial_eq_coeff" )
(("2"
(inst?)
(("2"
(assert )
(("2"
(inst - "D+m" )
(("2"
(assert )
nil
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2"
(flatten)
(("2"
(assert )
(("2"
(expand "pp" -1)
(("2"
(hide -2)
(("2"
(expand
"polynomial_prod" )
(("2"
(assert )
(("2"
(lemma
"sigma_eq_one_arg" )
(("2"
(inst?)
(("1"
(inst
-
"m" )
(("1"
(assert )
(("1"
(split
+)
(("1"
(expand
"max"
1)
(("1"
(assert )
(("1"
(lift-if)
(("1"
(assert )
nil
nil ))
nil ))
nil ))
nil )
("2"
(skeep)
(("2"
(inst
-3
"D-i+m" )
(("2"
(assert )
nil
nil ))
nil ))
nil )
("3"
(skeep)
nil
nil ))
nil ))
nil ))
nil )
("2"
(skeep)
(("2"
(assert )
nil
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2"
(case
"EXISTS (ii:nat): ii<=k AND b(ii)/=0" )
(("1"
(skeep -)
(("1"
(hide-all-but (-1 1 2 3))
(("1"
(case
"FORALL (kk:nat): kk>=ii IMPLIES EXISTS (D: nat):
D <= kk AND
b(D) /= 0 AND (FORALL (i: nat): i > D AND i <= kk IMPLIES b(i) = 0)")
(("1"
(inst - "k" )
(("1" (assert ) nil nil ))
nil )
("2"
(hide 3)
(("2"
(induct "kk" )
(("1"
(assert )
(("1"
(case "ii = 0" )
(("1"
(replaces -1)
(("1"
(assert )
(("1"
(inst + "0" )
(("1"
(assert )
(("1"
(skosimp*)
(("1"
(assert )
nil
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2"
(assert )
nil
nil ))
nil ))
nil )
("2"
(skeep)
(("2"
(assert )
(("2"
(case "j>=ii" )
(("1"
(assert )
(("1"
(case
"b(1+j)/=0" )
(("1"
(flatten)
(("1"
(inst
+
"1+j" )
(("1"
(assert )
(("1"
(skeep)
(("1"
(assert )
nil
nil ))
nil ))
nil ))
nil ))
nil )
("2"
(flatten)
(("2"
(skeep)
(("2"
(inst
+
"D" )
(("2"
(assert )
(("2"
(skeep)
(("2"
(inst
-
"i" )
(("2"
(assert )
nil
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2"
(assert )
(("2"
(hide -1)
(("2"
(case
"b(1+j)/=0" )
(("1"
(inst
+
"1+j" )
(("1"
(assert )
(("1"
(skeep)
(("1"
(assert )
nil
nil ))
nil ))
nil ))
nil )
("2"
(flatten)
(("2"
(assert )
nil
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2"
(hide-all-but (1 4))
(("2"
(expand "polynomial" )
(("2"
(rewrite
"sigma_restrict_eq_0" )
(("2"
(hide 3)
(("2"
(skosimp*)
(("2"
(inst + "i!1" )
(("2"
(assert )
(("2"
(flatten)
(("2"
(replaces -1)
(("2"
(assert )
(("2"
(lift-if)
(("2"
(assert )
nil
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2" (assert )
(("2" (skeep)
(("2"
(name "bb"
"LAMBDA (i:nat): IF i<=k THEN b(i) ELSE 0 ENDIF" )
(("2" (inst + "bb" )
(("2" (assert )
(("2"
(case "polynomial(bb,n-m) = polynomial(b,k)" )
(("1" (assert ) nil nil )
("2" (hide 3)
(("2"
(case "NOT EXISTS (i:nat): i<=k AND i>n-m AND b(i)/=0" )
(("1" (case "k <= n-m" )
(("1"
(expand "polynomial" 2 1)
(("1"
(decompose-equality 2)
(("1"
(lemma "sigma_split" )
(("1"
(inst?)
(("1"
(inst - "k" )
(("1"
(assert )
(("1"
(replaces -1)
(("1"
(invoke
(case "%1 = 0" )
(! 1 1 2))
(("1"
(replaces -1)
(("1"
(assert )
(("1"
(expand
"polynomial"
1)
(("1"
(rewrite
"sigma_eq" )
(("1"
(hide 2)
(("1"
(skosimp*)
(("1"
(expand
"bb"
1)
(("1"
(propax)
nil
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2"
(hide 2)
(("2"
(rewrite
"sigma_restrict_eq_0" )
(("2"
(skosimp*)
(("2"
(expand "bb" 1)
(("2"
(assert )
nil
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2"
(case "NOT k>n-m" )
(("1" (assert ) nil nil )
("2"
(hide 1)
(("2"
(decompose-equality 2)
(("2"
(expand "polynomial" + 2)
(("2"
(lemma "sigma_split" )
(("2"
(inst?)
(("2"
(inst - "n-m" )
(("2"
(assert )
(("2"
(replaces -1)
(("2"
(invoke
(case "%1 = 0" )
(! 1 2 2))
(("1"
(replaces -1)
(("1"
(expand
"polynomial"
1)
(("1"
(rewrite
"sigma_eq" )
(("1"
(skosimp*)
(("1"
(expand
"bb"
1)
(("1"
(propax)
nil
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2"
(rewrite
"sigma_restrict_eq_0" )
(("2"
(skosimp*)
(("2"
(inst + "i!1" )
(("2"
(ground)
nil
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2"
(lemma "linear_power_is_differentiable" )
(("2"
(case "NOT k>n-m" )
(("1"
(skosimp*)
(("1" (assert ) nil nil ))
nil )
("2"
(inst - "m" "y" )
(("2"
(assert )
(("2"
(skolem - "AA" )
(("2"
(flatten)
(("2"
(assert )
(("2"
(hide -5)
(("2"
(lemma
"polynomial_prod_def" )
(("2"
(case
"EXISTS (i:nat): i<=k AND i>n-m AND b(i)/=0 AND FORALL (ij:nat): ij>i AND ij<=k IMPLIES b(ij)=0" )
(("1"
(skolem -1 "D" )
(("1"
(flatten)
(("1"
(case
"polynomial(b,k) = polynomial(b,D)" )
(("1"
(replace -1)
(("1"
(inst
-
"AA"
"b"
"D"
"m"
_)
(("1"
(name
"pp"
"polynomial_prod(AA, m, b, D)" )
(("1"
(name
"aa"
"LaMBDA (i:nat): IF i<=n THEN a(i) ELSE 0 ENDIF" )
(("1"
(case
"FORALL (ij:nat): ij<=m+k IMPLIES aa(ij) = pp(ij)" )
(("1"
(inst
-
"m+D" )
(("1"
(assert )
(("1"
(expand
"aa"
-1)
(("1"
(expand
"pp"
-1)
(("1"
(expand
"polynomial_prod"
-1)
(("1"
(expand
"max"
-1)
(("1"
(expand
"sigma"
-1)
(("1"
(expand
"sigma"
-1)
(("1"
(assert )
nil
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2"
(lemma
"polynomial_eq_coeff" )
(("2"
(inst
-
"aa"
"pp"
"m+k" )
(("2"
(assert )
(("2"
(flatten)
(("2"
(hide
-2)
(("2"
(split
-)
(("1"
(skeep)
(("1"
(inst
-
"ij" )
nil
nil ))
nil )
("2"
(hide
2)
(("2"
(case
"NOT polynomial(aa,k+m)=polynomial(a,n)" )
(("1"
(decompose-equality
1)
(("1"
(expand
"polynomial"
1
1)
(("1"
(lemma
"sigma_split" )
(("1"
(inst?)
(("1"
(inst
-
"n" )
(("1"
(assert )
(("1"
(replaces
-1)
(("1"
(invoke
(case
"%1 = 0" )
(!
1
1
2))
(("1"
(replaces
-1)
(("1"
(assert )
(("1"
(expand
"polynomial"
1)
(("1"
(rewrite
"sigma_eq" )
(("1"
(skosimp*)
(("1"
(expand
"aa"
1)
(("1"
(propax)
nil
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2"
(rewrite
"sigma_restrict_eq_0" )
(("2"
(skosimp*)
(("2"
(expand
"aa"
1)
(("2"
(assert )
nil
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2"
(replaces
-1)
(("2"
(decompose-equality
1)
(("2"
(inst
-7
"x!1" )
(("2"
(replace
-2)
(("2"
(case
"polynomial(pp,k+m) = polynomial(pp,D+m)" )
(("1"
(replaces
-1)
(("1"
(replace
-7
:dir
rl)
(("1"
(inst
-11
"x!1" )
(("1"
(replace
-11)
(("1"
(inst
-15
"x!1" )
nil
nil ))
nil ))
nil ))
nil ))
nil )
("2"
(assert )
(("2"
(case
"FORALL (ij:nat): ij>D+m IMPLIES pp(ij) = 0" )
(("1"
(expand
"polynomial"
+
1)
(("1"
(decompose-equality
1)
(("1"
(lemma
"sigma_split" )
(("1"
(inst?)
(("1"
(inst
-
"D+m" )
(("1"
(assert )
(("1"
(replaces
-1)
(("1"
(invoke
(case
"%1 = 0" )
(!
1
1
2))
(("1"
(replaces
-1)
(("1"
(expand
"polynomial"
+
1)
(("1"
(propax)
nil
nil ))
nil ))
nil )
("2"
(hide
2)
(("2"
(rewrite
"sigma_restrict_eq_0" )
(("2"
(skosimp*)
(("2"
(inst
-
"i!1" )
(("2"
(assert )
nil
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2"
(hide-all-but
1)
(("2"
(skeep)
(("2"
(expand
"pp" )
(("2"
(expand
"polynomial_prod" )
(("2"
(expand
"max" )
(("2"
(assert )
(("2"
(expand
"sigma" )
(("2"
(propax)
nil
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2"
(decompose-equality
1)
(("2"
(expand
"polynomial"
+
1)
(("2"
(lemma
"sigma_split" )
(("2"
(inst?)
(("2"
(inst
-
"D" )
(("2"
(assert )
(("2"
(replaces
-1)
(("2"
(invoke
(case
"%1 = 0" )
(!
1
1
2))
(("1"
(replaces
-1)
(("1"
(expand
"polynomial"
+
1)
(("1"
(propax)
nil
nil ))
nil ))
nil )
("2"
(rewrite
"sigma_restrict_eq_0" )
(("2"
(skosimp*)
(("2"
(inst
-
"i!1" )
(("2"
(assert )
nil
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2"
(case
"FORALL (i:nat): i>n-m AND i<=k IMPLIES b(i) = 0" )
(("1"
(decompose-equality
2)
(("1"
(expand
"polynomial"
1
2)
(("1"
(lemma
"sigma_split" )
(("1"
(inst?)
(("1"
(inst
-
"n-m" )
(("1"
(assert )
(("1"
(replaces
-1)
(("1"
(invoke
(case
"%1 = 0" )
(!
1
2
2))
(("1"
(replaces
-1)
(("1"
(assert )
(("1"
(expand
"polynomial"
1)
(("1"
(rewrite
"sigma_eq" )
(("1"
(skosimp*)
(("1"
(expand
"bb"
1)
(("1"
(propax)
nil
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2"
(rewrite
"sigma_restrict_eq_0" )
(("2"
(skosimp*)
(("2"
(inst
-
"i!1" )
(("2"
(assert )
nil
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2"
(case
"FORALL (kk:nat): (EXISTS (i: nat):
i <= n-m+1+kk AND
i > n - m AND
b(i) /= 0 AND
(FORALL (ij: nat): ij > i AND ij <= n-m+1+kk IMPLIES b(ij) = 0)) OR (FORALL (i: nat): i > n - m AND i <= n-m+1+kk IMPLIES b(i) = 0)")
(("1"
(inst
-
"k-n+m-1" )
(("1"
(assert )
(("1"
(ground)
nil
nil ))
nil ))
nil )
("2"
(hide (2 3))
(("2"
(induct "kk" )
(("1"
(assert )
(("1"
(flatten)
(("1"
(inst
+
"n-m+1" )
(("1"
(assert )
(("1"
(skosimp*)
(("1"
(ground)
(("1"
(skosimp*)
(("1"
(assert )
nil
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2"
(skolem
1
"kk" )
(("2"
(flatten)
(("2"
(assert )
(("2"
(case
"b(n-m+2+kk)=0" )
(("1"
(split
-)
(("1"
(skosimp*)
(("1"
(inst
+
"i!1" )
(("1"
(ground)
(("1"
(skosimp*)
(("1"
(inst
-
"ij!1" )
(("1"
(ground)
nil
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2"
(skeep
2)
(("2"
(inst
-
"i" )
(("2"
(ground)
nil
nil ))
nil ))
nil ))
nil )
("2"
(inst
+
"n-m+2+kk" )
(("2"
(assert )
(("2"
(skosimp*)
(("2"
(split
-)
(("1"
(assert )
nil
nil )
("2"
(inst
-
"ij!1" )
(("2"
(assert )
nil
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
((max_linear_div_power_rew formula-decl nil more_polynomial_props
nil )
(number nonempty-type-decl nil numbers nil )
(boolean nonempty-type-decl nil booleans nil )
(number_field_pred const-decl "[number -> boolean]" number_fields
nil )
(number_field nonempty-type-from-decl nil number_fields nil )
(real_pred const-decl "[number_field -> boolean]" reals nil )
(real nonempty-type-from-decl nil reals nil )
(rational_pred const-decl "[real -> boolean]" rationals nil )
(rational nonempty-type-from-decl nil rationals nil )
(integer_pred const-decl "[rational -> boolean]" integers nil )
(int nonempty-type-eq-decl nil integers nil )
(bool nonempty-type-eq-decl nil booleans nil )
(>= const-decl "bool" reals nil )
(nat nonempty-type-eq-decl nil naturalnumbers nil )
(sequence type-eq-decl nil sequences nil )
(nonneg_int nonempty-type-eq-decl nil integers nil )
(> const-decl "bool" reals nil )
(posnat nonempty-type-eq-decl nil integers nil )
(real_le_is_total_order name-judgement "(total_order?[real])"
real_props nil )
(k skolem-const-decl "nat" more_polynomial_props nil )
(ij skolem-const-decl "nat" more_polynomial_props nil )
(aa skolem-const-decl "[nat -> real]" more_polynomial_props nil )
(pp skolem-const-decl "[nat -> real]" more_polynomial_props nil )
(real_plus_real_is_real application-judgement "real" reals nil )
(bb skolem-const-decl "[nat -> real]" more_polynomial_props nil )
(linear_power_is_differentiable formula-decl nil
more_polynomial_props nil )
(real_gt_is_strict_total_order name-judgement
"(strict_total_order?[real])" real_props nil )
(nnint_plus_posint_is_posint application-judgement "posint"
integers nil )
(= const-decl "[T, T -> boolean]" equalities nil )
(polynomial const-decl "[real -> real]" polynomials nil )
(polynomial_prod const-decl "real" polynomials nil )
(+ const-decl "[numfield, numfield -> numfield]" number_fields nil )
(real_minus_real_is_real application-judgement "real" reals nil )
(real_times_real_is_real application-judgement "real" reals nil )
(nat_induction formula-decl nil naturalnumbers nil )
(pred type-eq-decl nil defined_types nil )
(pp skolem-const-decl "[nat -> real]" more_polynomial_props nil )
(sigma_eq_one_arg formula-decl nil sigma nil )
(subrange type-eq-decl nil integers nil )
(max const-decl "{p: real | p >= m AND p >= n}" real_defs nil )
(m skolem-const-decl "posnat" more_polynomial_props nil )
(D skolem-const-decl "nat" more_polynomial_props nil )
(int_max application-judgement "{k: int | i <= k AND j <= k}"
real_defs nil )
(rat_max application-judgement "{s: rat | s >= q AND s >= r}"
real_defs nil )
(int_plus_int_is_int application-judgement "int" integers nil )
(polynomial_eq_coeff formula-decl nil polynomials nil )
(upto nonempty-type-eq-decl nil naturalnumbers nil )
(sigma_split formula-decl nil sigma nil )
(sigma_restrict_eq_0 formula-decl nil sigma nil )
(sigma_eq formula-decl nil sigma nil )
(posint_plus_nnint_is_posint application-judgement "posint"
integers nil )
(sigma def-decl "real" sigma nil )
(real_lt_is_strict_total_order name-judgement
"(strict_total_order?[real])" real_props nil )
(even_minus_odd_is_odd application-judgement "odd_int" integers
nil )
(* const-decl "[numfield, numfield -> numfield]" number_fields nil )
(OR const-decl "[bool, bool -> bool]" booleans nil )
(^ const-decl "real" exponentiation nil )
(T_high type-eq-decl nil sigma nil )
(T_low type-eq-decl nil sigma nil )
(IF const-decl "[boolean, T, T -> T]" if_def nil )
(IMPLIES const-decl "[bool, bool -> bool]" booleans nil )
(/= const-decl "boolean" notequal nil )
(AND const-decl "[bool, bool -> bool]" booleans nil )
(polynomial_prod_def formula-decl nil polynomials nil )
(<= const-decl "bool" reals nil )
(NOT const-decl "[bool -> bool]" booleans nil )
(int_minus_int_is_int application-judgement "int" integers nil )
(numfield nonempty-type-eq-decl nil number_fields nil )
(- const-decl "[numfield, numfield -> numfield]" number_fields nil )
(real_ge_is_total_order name-judgement "(total_order?[real])"
real_props nil ))
nil ))
(max_linear_div_power_unique 0
(max_linear_div_power_unique-1 nil 3591628357
(""
(case "FORALL (a: sequence[real], n: nat, y: real, m, kp: posnat):
kp > m AND
max_linear_div_power?(a, n, y)(m) IMPLIES
NOT max_linear_div_power?(a, n, y)(kp)")
(("1" (skeep)
(("1" (inst-cp - "a" "n" "y" "m" "kp" )
(("1" (inst - "a" "n" "y" "kp" "m" ) (("1" (ground) nil nil ))
nil ))
nil ))
nil )
("2" (hide 2)
(("2" (skeep)
(("2" (rewrite "max_linear_div_power_rew" )
(("2" (rewrite "max_linear_div_power_rew" )
(("2" (flatten)
(("2" (assert )
(("2" (skolem - "bm" )
(("2" (skolem - "bk" )
(("2" (flatten)
(("2"
(case "NOT FORALL (x): polynomial(bm,n-m)(x) = (x-y)^(kp-m)*polynomial(bk,n-kp)(x)" )
(("1"
(case "FORALL (x): x/=y IMPLIES polynomial(bm, n - m)(x) =
(x - y) ^ (kp - m) * polynomial(bk, n - kp)(x)")
(("1"
(lemma "linear_power_is_differentiable" )
(("1" (inst - "kp-m" "y" )
(("1"
(assert )
(("1"
(skolem -1 "D" )
(("1"
(flatten)
(("1"
(lemma "polynomial_prod_def" )
(("1"
(case
"NOT FORALL (x): x/=y IMPLIES polynomial(bm,n-m)(x) = polynomial(polynomial_prod(D, kp - m, bk, n - kp), kp - m + (n - kp))(x)" )
(("1"
(skeep)
(("1"
(inst
-
"D"
"bk"
"n-kp"
"kp-m"
"x" )
(("1"
(inst -4 "x" )
(("1"
(replace -4)
(("1"
(inst -6 "x" )
(("1"
(assert )
nil
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2"
(assert )
(("2"
(case
"polynomial(bm, n - m) =
polynomial(polynomial_prod(D, kp - m, bk, n - kp), n - m)")
(("1"
(decompose-equality -1)
(("1"
(inst - "y" )
(("1"
(inst
-
"D"
"bk"
"n-kp"
"kp-m"
"y" )
(("1"
(inst -6 "y" )
(("1"
(replace -6)
(("1"
(assert )
(("1"
(replace
-3
:dir
rl)
(("1"
(case
"0^(kp-m) = 0" )
(("1"
(assert )
nil
nil )
("2"
(expand
"^"
1)
(("2"
(expand
"expt"
1)
(("2"
(assert )
nil
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2"
(case
"FORALL (aa:[nat->real],nm:nat): (FORALL (x): x/=y IMPLIES polynomial(aa,nm)(x)=0) IMPLIES polynomial(aa,nm) = (LAMBDA (x): 0)" )
(("1"
(inst
-
"bm-polynomial_prod(D, kp - m, bk, n - kp)"
"n-m" )
(("1"
(assert )
(("1"
(split -)
(("1"
(rewrite
"polynomial_sub" )
(("1"
(expand "-" )
(("1"
(decompose-equality
1)
(("1"
(decompose-equality
-)
(("1"
(inst
-
"x!1" )
(("1"
(assert )
nil
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2"
(skeep)
(("2"
(inst - "x" )
(("2"
(assert )
(("2"
(rewrite
"polynomial_sub" )
(("2"
(expand
"-" )
(("2"
(assert )
nil
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2"
(hide-all-but 1)
(("2"
(skeep)
(("2"
(lemma
"poly_continuous" )
(("2"
(decompose-equality
+)
(("2"
(inst
-
"aa"
"nm"
"x!1"
"abs(polynomial(aa,nm)(x!1))/2" )
(("1"
(skosimp*)
(("1"
(inst
-
"y-delta!1/2" )
(("1"
(inst-cp
-
"x!1" )
(("1"
(assert )
(("1"
(flatten)
(("1"
(replace
-3)
(("1"
(assert )
(("1"
(inst
-
"y-delta!1/2" )
(("1"
(assert )
(("1"
(split
-)
(("1"
(expand
"abs" )
(("1"
(lift-if)
(("1"
(lift-if)
(("1"
(lift-if)
(("1"
(ground)
nil
nil ))
nil ))
nil ))
nil ))
nil )
("2"
(expand
"abs"
1)
(("2"
(assert )
nil
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2"
(assert )
nil
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2" (hide (2 3 4))
(("2" (skeep)
(("2"
(inst - "x" )
(("2"
(inst - "x" )
(("2"
(assert )
(("2"
(replaces -3)
(("2"
(lemma "expt_plus" )
(("2"
(inst - "m" "kp-m" "x-y" )
(("2"
(assert )
(("2"
(replaces -1)
(("2"
(div-by -4 "(x-y)^m" )
(("1"
(assert )
(("1"
(replace -4)
(("1"
(assert )
(("1"
(field)
nil
nil ))
nil ))
nil ))
nil )
("2"
(flatten)
(("2"
(lemma "expt_eq_0" )
(("2"
(inst?)
(("2"
(assert )
nil
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2" (inst - "y" )
(("2" (assert )
(("2" (expand "^" -1)
(("2"
(expand "expt" -1)
(("2" (propax) nil nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
((max_linear_div_power_rew formula-decl nil more_polynomial_props
nil )
(real_le_is_total_order name-judgement "(total_order?[real])"
real_props nil )
(polynomial_prod_def formula-decl nil polynomials nil )
(polynomial_sub formula-decl nil polynomials nil )
(- const-decl "[T -> real]" real_fun_ops nil )
(nonzero_abs_is_pos application-judgement "{y: posreal | y >= x}"
real_defs nil )
(real_lt_is_strict_total_order name-judgement
"(strict_total_order?[real])" real_props nil )
(minus_real_is_real application-judgement "real" reals nil )
(real_div_nzreal_is_real application-judgement "real" reals nil )
(minus_odd_is_odd application-judgement "odd_int" integers nil )
(posreal_div_posreal_is_posreal application-judgement "posreal"
real_types nil )
(real_plus_real_is_real application-judgement "real" reals nil )
(posreal nonempty-type-eq-decl nil real_types nil )
(x!1 skolem-const-decl "real" more_polynomial_props nil )
(nm skolem-const-decl "nat" more_polynomial_props nil )
(aa skolem-const-decl "[nat -> real]" more_polynomial_props nil )
(abs const-decl "{n: nonneg_real | n >= m AND n >= -m}" real_defs
nil )
(- const-decl "[numfield -> numfield]" number_fields nil )
(nonneg_real nonempty-type-eq-decl nil real_types nil )
(/ const-decl "[numfield, nznum -> numfield]" number_fields nil )
(nznum nonempty-type-eq-decl nil number_fields nil )
(nnreal_div_posreal_is_nnreal application-judgement "nnreal"
real_types nil )
(poly_continuous formula-decl nil polynomials nil )
(nat_expt application-judgement "nat" exponentiation nil )
(mult_divides2 application-judgement "(divides(m))" divides nil )
(mult_divides1 application-judgement "(divides(n))" divides nil )
(even_times_int_is_even application-judgement "even_int" integers
nil )
(nnint_times_nnint_is_nnint application-judgement "nonneg_int"
integers nil )
(expt def-decl "real" exponentiation nil )
(nat_exp application-judgement "nat" exponentiation nil )
(+ const-decl "[numfield, numfield -> numfield]" number_fields nil )
(polynomial_prod const-decl "real" polynomials nil )
(int_plus_int_is_int application-judgement "int" integers nil )
(linear_power_is_differentiable formula-decl nil
more_polynomial_props nil )
(nzreal nonempty-type-eq-decl nil reals nil )
(expt_eq_0 formula-decl nil exponentiation nil )
(div_cancel3 formula-decl nil real_props nil )
(times_div_cancel1 formula-decl nil extra_real_props nil )
(x skolem-const-decl "real" more_polynomial_props nil )
(y skolem-const-decl "real" more_polynomial_props nil )
(m skolem-const-decl "posnat" more_polynomial_props nil )
(nonzero_real nonempty-type-eq-decl nil reals nil )
(both_sides_div1 formula-decl nil real_props nil )
(expt_plus formula-decl nil exponentiation nil )
(real_ge_is_total_order name-judgement "(total_order?[real])"
real_props nil )
(^ const-decl "real" exponentiation nil )
(/= const-decl "boolean" notequal nil )
(OR const-decl "[bool, bool -> bool]" booleans nil )
(* const-decl "[numfield, numfield -> numfield]" number_fields nil )
(- const-decl "[numfield, numfield -> numfield]" number_fields nil )
(numfield nonempty-type-eq-decl nil number_fields nil )
(polynomial const-decl "[real -> real]" polynomials nil )
(= const-decl "[T, T -> boolean]" equalities nil )
(real_minus_real_is_real application-judgement "real" reals nil )
(int_minus_int_is_int application-judgement "int" integers nil )
(real_times_real_is_real application-judgement "real" reals nil )
(real_gt_is_strict_total_order name-judgement
"(strict_total_order?[real])" real_props nil )
(number nonempty-type-decl nil numbers nil )
(boolean nonempty-type-decl nil booleans nil )
(number_field_pred const-decl "[number -> boolean]" number_fields
nil )
(number_field nonempty-type-from-decl nil number_fields nil )
(real_pred const-decl "[number_field -> boolean]" reals nil )
(real nonempty-type-from-decl nil reals nil )
(rational_pred const-decl "[real -> boolean]" rationals nil )
(rational nonempty-type-from-decl nil rationals nil )
(integer_pred const-decl "[rational -> boolean]" integers nil )
(int nonempty-type-eq-decl nil integers nil )
(bool nonempty-type-eq-decl nil booleans nil )
(>= const-decl "bool" reals nil )
(nat nonempty-type-eq-decl nil naturalnumbers nil )
(sequence type-eq-decl nil sequences nil )
(nonneg_int nonempty-type-eq-decl nil integers nil )
(> const-decl "bool" reals nil )
(posnat nonempty-type-eq-decl nil integers nil )
(IMPLIES const-decl "[bool, bool -> bool]" booleans nil )
(AND const-decl "[bool, bool -> bool]" booleans nil )
(max_linear_div_power? const-decl "bool" more_polynomial_props nil )
(NOT const-decl "[bool -> bool]" booleans nil ))
shostak))
(max_linear_div_power_additive 0
(max_linear_div_power_additive-1 nil 3591709973
("" (skeep)
(("" (rewrite "max_linear_div_power_rew2" )
(("" (rewrite "max_linear_div_power_rew2" )
(("" (skosimp*)
(("" (inst + "b!1" "k!1" )
(("" (assert )
(("" (skeep)
(("" (inst - "x" )
(("" (inst - "x" )
(("" (lemma "expt_plus" )
(("" (inst?)
(("1" (assert )
(("1" (replace -1) (("1" (assert ) nil nil ))
nil ))
nil )
("2" (flatten)
(("2" (replace -1)
(("2" (expand "^" )
(("2"
(expand "expt" )
(("2" (propax) nil nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
((max_linear_div_power_rew2 formula-decl nil more_polynomial_props
nil )
(number nonempty-type-decl nil numbers nil )
(boolean nonempty-type-decl nil booleans nil )
(number_field_pred const-decl "[number -> boolean]" number_fields
nil )
(number_field nonempty-type-from-decl nil number_fields nil )
(real_pred const-decl "[number_field -> boolean]" reals nil )
(real nonempty-type-from-decl nil reals nil )
(rational_pred const-decl "[real -> boolean]" rationals nil )
(rational nonempty-type-from-decl nil rationals nil )
(integer_pred const-decl "[rational -> boolean]" integers nil )
(int nonempty-type-eq-decl nil integers nil )
(bool nonempty-type-eq-decl nil booleans nil )
(>= const-decl "bool" reals nil )
(nat nonempty-type-eq-decl nil naturalnumbers nil )
(sequence type-eq-decl nil sequences nil )
(nonneg_int nonempty-type-eq-decl nil integers nil )
(> const-decl "bool" reals nil )
(posnat nonempty-type-eq-decl nil integers nil )
(expt_plus formula-decl nil exponentiation nil )
(^ const-decl "real" exponentiation nil )
(expt def-decl "real" exponentiation nil )
(minus_odd_is_odd application-judgement "odd_int" integers nil )
(real_times_real_is_real application-judgement "real" reals nil )
(nzreal nonempty-type-eq-decl nil reals nil )
(y skolem-const-decl "real" more_polynomial_props nil )
(x skolem-const-decl "real" more_polynomial_props nil )
(- const-decl "[numfield, numfield -> numfield]" number_fields nil )
(/= const-decl "boolean" notequal nil )
(real_minus_real_is_real application-judgement "real" reals nil )
(+ const-decl "[numfield, numfield -> numfield]" number_fields nil )
(numfield nonempty-type-eq-decl nil number_fields nil )
(posint_plus_nnint_is_posint application-judgement "posint"
integers nil ))
shostak))
(max_linear_div_power_derivative_TCC1 0
(max_linear_div_power_derivative_TCC1-1 nil 3591455656
("" (subtype-tcc) nil nil )
((boolean nonempty-type-decl nil booleans nil )
(bool nonempty-type-eq-decl nil booleans nil )
(NOT const-decl "[bool -> bool]" booleans nil )
(number nonempty-type-decl nil numbers nil )
(number_field_pred const-decl "[number -> boolean]" number_fields
nil )
(number_field nonempty-type-from-decl nil number_fields nil )
(real_pred const-decl "[number_field -> boolean]" reals nil )
(real nonempty-type-from-decl nil reals nil )
(>= const-decl "bool" reals nil )
(rational_pred const-decl "[real -> boolean]" rationals nil )
(rational nonempty-type-from-decl nil rationals nil )
(integer_pred const-decl "[rational -> boolean]" integers nil )
(int nonempty-type-eq-decl nil integers nil )
(nat nonempty-type-eq-decl nil naturalnumbers nil )
(> const-decl "bool" reals nil )
(nonneg_int nonempty-type-eq-decl nil integers nil )
(posnat nonempty-type-eq-decl nil integers nil )
(real_ge_is_total_order name-judgement "(total_order?[real])"
real_props nil )
(real_gt_is_strict_total_order name-judgement
"(strict_total_order?[real])" real_props nil )
(real_le_is_total_order name-judgement "(total_order?[real])"
real_props nil )
(real_lt_is_strict_total_order name-judgement
"(strict_total_order?[real])" real_props nil )
(^ const-decl "real" exponentiation nil )
(polynomial const-decl "[real -> real]" polynomials nil )
(poly_deriv const-decl "real" polynomials nil )
(max_linear_div_power? const-decl "bool" more_polynomial_props nil )
(real_times_real_is_real application-judgement "real" reals nil )
(int_minus_int_is_int application-judgement "int" integers nil )
(real_plus_real_is_real application-judgement "real" reals nil ))
nil ))
(max_linear_div_power_derivative_TCC2 0
(max_linear_div_power_derivative_TCC2-1 nil 3591455656
("" (subtype-tcc) nil nil )
((boolean nonempty-type-decl nil booleans nil )
(bool nonempty-type-eq-decl nil booleans nil )
(NOT const-decl "[bool -> bool]" booleans nil )
(number nonempty-type-decl nil numbers nil )
(number_field_pred const-decl "[number -> boolean]" number_fields
nil )
(number_field nonempty-type-from-decl nil number_fields nil )
(real_pred const-decl "[number_field -> boolean]" reals nil )
(real nonempty-type-from-decl nil reals nil )
(>= const-decl "bool" reals nil )
(rational_pred const-decl "[real -> boolean]" rationals nil )
(rational nonempty-type-from-decl nil rationals nil )
(integer_pred const-decl "[rational -> boolean]" integers nil )
(int nonempty-type-eq-decl nil integers nil )
(nat nonempty-type-eq-decl nil naturalnumbers nil )
(> const-decl "bool" reals nil )
(nonneg_int nonempty-type-eq-decl nil integers nil )
(posnat nonempty-type-eq-decl nil integers nil )
(real_ge_is_total_order name-judgement "(total_order?[real])"
real_props nil )
(real_gt_is_strict_total_order name-judgement
"(strict_total_order?[real])" real_props nil )
(real_le_is_total_order name-judgement "(total_order?[real])"
real_props nil )
(real_lt_is_strict_total_order name-judgement
"(strict_total_order?[real])" real_props nil )
(^ const-decl "real" exponentiation nil )
(polynomial const-decl "[real -> real]" polynomials nil )
(poly_deriv const-decl "real" polynomials nil )
(max_linear_div_power? const-decl "bool" more_polynomial_props nil )
(real_times_real_is_real application-judgement "real" reals nil )
(int_minus_int_is_int application-judgement "int" integers nil )
(real_plus_real_is_real application-judgement "real" reals nil ))
nil ))
(max_linear_div_power_derivative 0
(max_linear_div_power_derivative-1 nil 3591455878
("" (skeep)
(("" (expand "max_linear_div_power?" -)
(("" (skeep)
(("" (case "n = 0" )
(("1" (replace -1) (("1" (assert ) nil nil )) nil )
("2" (assert )
(("2" (rewrite "max_linear_div_power_rew" )
(("2" (inst + "q" ) (("2" (assert ) nil nil )) nil )) nil ))
nil ))
nil ))
nil ))
nil ))
nil )
((max_linear_div_power? const-decl "bool" more_polynomial_props nil )
(nat nonempty-type-eq-decl nil naturalnumbers nil )
(>= const-decl "bool" reals nil )
(bool nonempty-type-eq-decl nil booleans nil )
(int nonempty-type-eq-decl nil integers nil )
(integer_pred const-decl "[rational -> boolean]" integers nil )
(rational nonempty-type-from-decl nil rationals nil )
(rational_pred const-decl "[real -> boolean]" rationals nil )
(real nonempty-type-from-decl nil reals nil )
(real_pred const-decl "[number_field -> boolean]" reals nil )
(number_field nonempty-type-from-decl nil number_fields nil )
(number_field_pred const-decl "[number -> boolean]" number_fields
nil )
(= const-decl "[T, T -> boolean]" equalities nil )
(boolean nonempty-type-decl nil booleans nil )
(number nonempty-type-decl nil numbers nil )
(real_le_is_total_order name-judgement "(total_order?[real])"
real_props nil )
(real_gt_is_strict_total_order name-judgement
"(strict_total_order?[real])" real_props nil )
(minus_odd_is_odd application-judgement "odd_int" integers nil )
(real_ge_is_total_order name-judgement "(total_order?[real])"
real_props nil )
(max_linear_div_power_rew formula-decl nil more_polynomial_props
nil )
(sequence type-eq-decl nil sequences nil )
(poly_deriv const-decl "real" polynomials nil )
(numfield nonempty-type-eq-decl nil number_fields nil )
(- const-decl "[numfield, numfield -> numfield]" number_fields nil )
(nonneg_int nonempty-type-eq-decl nil integers nil )
(> const-decl "bool" reals nil )
(posnat nonempty-type-eq-decl nil integers nil )
(int_minus_int_is_int application-judgement "int" integers nil ))
shostak))
(poly_max_zero_power 0
(poly_max_zero_power-1 nil 3589289206
(""
(case "NOT FORALL (a: sequence[real], n: nat, y: real):
a(n) /= 0 AND polynomial(a, n)(y) = 0 IMPLIES
(EXISTS (b: [nat -> real], m: posnat):
m <= n
AND FORALL (x):
polynomial(a, n)(x) =
(x - y) ^ m * polynomial(b, n - m)(x)
AND polynomial(b, n - m)(y) /= 0)")
(("1" (hide 2)
(("1" (induct "n" )
(("1" (skeep)
(("1" (expand "polynomial" -1)
(("1" (expand "sigma" )
(("1" (expand "sigma" ) (("1" (propax) nil nil )) nil ))
nil ))
nil ))
nil )
("2" (skolem 1 "nn" )
(("2" (flatten)
(("2" (skeep)
(("2" (lemma "polynomial_zero_factor" )
(("2" (inst - "a" "nn+1" "y" )
(("2" (assert )
(("2" (skeep -1)
(("2" (case "polynomial(g,nn)(y)/=0" )
(("1" (inst + "g" "1" )
(("1" (assert )
(("1" (expand "^" +)
(("1"
(expand "expt" +)
(("1"
(expand "expt" +)
(("1" (propax) nil nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2" (flatten)
(("2" (inst - "g" "y" )
(("2" (assert )
(("2"
(case "g(nn)/=0" )
(("1"
(assert )
(("1"
(flatten)
(("1"
(skeep)
(("1"
(assert )
(("1"
(inst + "b" "m+1" )
(("1"
(assert )
(("1"
(skeep)
(("1"
(inst - "x" )
(("1"
(inst - "x" )
(("1"
(assert )
(("1"
(case
"FORALL (rr:real): x*rr-rr*y = (x-y)^1*rr" )
(("1"
(rewrite -1)
(("1"
(hide -1)
(("1"
(replace
-2
+)
(("1"
(assert )
(("1"
(flatten)
(("1"
(assert )
(("1"
(replace
-4
+)
(("1"
(assert )
(("1"
(lemma
"expt_plus" )
(("1"
(inst?)
(("1"
(assert )
(("1"
(replace
-1
+)
(("1"
(assert )
nil
nil ))
nil ))
nil )
("2"
(flatten)
(("2"
(replace
-1
+)
(("2"
(expand
"^"
+)
(("2"
(expand
"expt"
+)
(("2"
(propax)
nil
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2"
(hide-all-but
1)
(("2"
(grind)
nil
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2"
(flatten)
(("2"
(assert )
(("2"
(lemma "polynomial_eq_coeff" )
(("2"
(name
"DIG"
"LAMBDA (ii:nat): IF ii = 1+nn THEN g(nn) ELSIF ii>0 THEN g(ii-1) - g(ii)*y ELSE -g(0)*y ENDIF" )
(("1"
(inst - "a" "DIG" "1+nn" )
(("1"
(flatten)
(("1"
(hide -3)
(("1"
(split -)
(("1"
(inst - "1+nn" )
(("1"
(expand "DIG" -1)
(("1"
(assert )
nil
nil ))
nil ))
nil )
("2"
(decompose-equality
1)
(("2"
(inst - "x!1" )
(("2"
(assert )
(("2"
(replace -4 1)
(("2"
(expand
"polynomial"
1)
(("2"
(name
"IG"
"LAMBDA (i: nat): g(i) * (IF i = 0 THEN 1 ELSE x!1 ^ i ENDIF)" )
(("2"
(replace
-1)
(("2"
(case
"sigma(0,nn,IG)=sigma(0,1+nn,LAMBDA (ii:nat): IF ii=0 THEN 0 ELSE IG(ii-1) ENDIF)" )
(("1"
(mult-by
-1
"x!1" )
(("1"
(replace
-1
+)
(("1"
(rewrite
"sigma_scal_right"
1
:dir
rl)
(("1"
(rewrite
"sigma_scal_right"
1
:dir
rl)
(("1"
(case
"sigma(0, nn, LAMBDA (i: nat): IG(i) * y) = sigma(0, 1+nn, LAMBDA (i: nat): IF i >nn THEN 0 ELSE IG(i) * y ENDIF)" )
(("1"
(replace
-1
+)
(("1"
(rewrite
"sigma_minus" )
(("1"
(rewrite
"sigma_restrict_eq" )
(("1"
(hide
2)
(("1"
(decompose-equality
1)
(("1"
(expand
"restrict" )
(("1"
(lift-if)
(("1"
(assert )
(("1"
(ground)
(("1"
(expand
"DIG"
1)
(("1"
(assert )
(("1"
(expand
"IG"
1)
(("1"
(assert )
nil
nil ))
nil ))
nil ))
nil )
("2"
(lift-if)
(("2"
(assert )
(("2"
(ground)
(("1"
(case
"NOT x!2 = 1+nn" )
(("1"
(assert )
nil
nil )
("2"
(replace
-1)
(("2"
(assert )
(("2"
(expand
"DIG"
1)
(("2"
(expand
"IG"
1)
(("2"
(lift-if)
(("2"
(assert )
nil
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2"
(expand
"IG"
2)
(("2"
(expand
"DIG"
2)
(("2"
(lift-if)
(("2"
(assert )
(("2"
(ground)
(("1"
(replace
-1)
(("1"
(expand
"^"
1)
(("1"
(expand
"expt"
1)
(("1"
(expand
"expt"
1)
(("1"
(propax)
nil
nil ))
nil ))
nil ))
nil ))
nil )
("2"
(lemma
"expt_plus" )
(("2"
(inst
-
"x!2-1"
"1"
"x!1" )
(("1"
(assert )
(("1"
(replace
-1
+)
(("1"
(expand
"^"
2
3)
(("1"
(expand
"expt"
2)
(("1"
(expand
"expt"
2)
(("1"
(assert )
nil
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2"
(assert )
(("2"
(flatten)
(("2"
(replace
-1)
(("2"
(expand
"^"
2)
(("2"
(expand
"expt"
2)
(("2"
(propax)
nil
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2"
(skosimp*)
(("2"
(assert )
nil
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2"
(hide
2)
(("2"
(expand
"sigma"
+
2)
(("2"
(rewrite
"sigma_restrict_eq" )
(("2"
(decompose-equality
1)
(("2"
(expand
"restrict" )
(("2"
(propax)
nil
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2"
(skosimp*)
(("2"
(assert )
nil
nil ))
nil ))
nil )
("2"
(case
"FORALL (k:nat): k<=nn IMPLIES sigma(0, k, IG) =
sigma(0, 1 + k,
LAMBDA (ii: nat): IF ii = 0 THEN 0 ELSE IG(ii - 1) ENDIF)")
(("1"
(inst?)
(("1"
(assert )
nil
nil ))
nil )
("2"
(induct
"k" )
(("1"
(assert )
(("1"
(hide-all-but
1)
(("1"
(expand
"IG" )
(("1"
(grind)
nil
nil ))
nil ))
nil ))
nil )
("2"
(skeep)
(("2"
(assert )
(("2"
(expand
"sigma"
+)
(("2"
(propax)
nil
nil ))
nil ))
nil ))
nil )
("3"
(skosimp*)
(("3"
(assert )
nil
nil ))
nil ))
nil )
("3"
(skosimp*)
(("3"
(assert )
nil
nil ))
nil ))
nil )
("3"
(skosimp*)
(("3"
(assert )
nil
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2"
(skosimp*)
(("2" (assert ) nil nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("3" (skosimp*) (("3" (assert ) nil nil )) nil )
("4" (skosimp*) (("4" (assert ) nil nil )) nil ))
nil ))
nil )
("2" (skeep)
(("2" (inst - "a" "n" "y" )
(("2" (assert )
(("2" (skeep)
(("2" (inst + "m" )
(("2" (rewrite "max_linear_div_power_rew" )
(("2" (assert )
(("2" (inst + "b" )
(("2" (split)
(("1" (skeep)
(("1" (inst - "x" ) (("1" (assert ) nil nil ))
nil ))
nil )
("2" (inst - "1" ) (("2" (flatten) nil nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("3" (hide 2) (("3" (skosimp*) (("3" (assert ) nil nil )) nil )) nil )
("4" (hide 2) (("4" (skosimp*) (("4" (assert ) nil nil )) nil ))
nil ))
nil )
((max_linear_div_power_rew formula-decl nil more_polynomial_props
nil )
(nnint_plus_posint_is_posint application-judgement "posint"
integers nil )
(+ const-decl "[numfield, numfield -> numfield]" number_fields nil )
(polynomial_eq_coeff formula-decl nil polynomials nil )
(real_plus_real_is_real application-judgement "real" reals nil )
(nn skolem-const-decl "nat" more_polynomial_props nil )
(both_sides_times1_imp formula-decl nil extra_real_props nil )
(real_lt_is_strict_total_order name-judgement
"(strict_total_order?[real])" real_props nil )
(sigma_scal_right formula-decl nil sigma nil )
(minus_real_is_real application-judgement "real" reals nil )
(sigma_minus formula-decl nil sigma nil )
(real_gt_is_strict_total_order name-judgement
"(strict_total_order?[real])" real_props nil )
(x!1 skolem-const-decl "real" more_polynomial_props nil )
(int_plus_int_is_int application-judgement "int" integers nil )
(IG skolem-const-decl "[nat -> real]" more_polynomial_props nil )
(restrict const-decl "[T -> real]" sigma nil )
(sigma_restrict_eq formula-decl nil sigma nil )
(T_high type-eq-decl nil sigma nil )
(T_low type-eq-decl nil sigma nil )
(upto nonempty-type-eq-decl nil naturalnumbers nil )
(DIG skolem-const-decl "[nat -> real]" more_polynomial_props nil )
(- const-decl "[numfield -> numfield]" number_fields nil )
(IF const-decl "[boolean, T, T -> T]" if_def nil )
(real_ge_is_total_order name-judgement "(total_order?[real])"
real_props nil )
(x skolem-const-decl "real" more_polynomial_props nil )
(y skolem-const-decl "real" more_polynomial_props nil )
(nzreal nonempty-type-eq-decl nil reals nil )
(odd_minus_odd_is_even application-judgement "even_int" integers
nil )
(minus_odd_is_odd application-judgement "odd_int" integers nil )
(expt_plus formula-decl nil exponentiation nil )
(expt def-decl "real" exponentiation nil )
(posint_plus_nnint_is_posint application-judgement "posint"
integers nil )
(real_le_is_total_order name-judgement "(total_order?[real])"
real_props nil )
(polynomial_zero_factor formula-decl nil polynomials nil )
(sigma def-decl "real" sigma nil )
(nat_induction formula-decl nil naturalnumbers nil )
(pred type-eq-decl nil defined_types nil )
(real_times_real_is_real application-judgement "real" reals nil )
(real_minus_real_is_real application-judgement "real" reals nil )
(int_minus_int_is_int application-judgement "int" integers nil )
(boolean nonempty-type-decl nil booleans nil )
(bool nonempty-type-eq-decl nil booleans nil )
(NOT const-decl "[bool -> bool]" booleans nil )
(number nonempty-type-decl nil numbers nil )
(number_field_pred const-decl "[number -> boolean]" number_fields
nil )
(number_field nonempty-type-from-decl nil number_fields nil )
(real_pred const-decl "[number_field -> boolean]" reals nil )
(real nonempty-type-from-decl nil reals nil )
(rational_pred const-decl "[real -> boolean]" rationals nil )
(rational nonempty-type-from-decl nil rationals nil )
(integer_pred const-decl "[rational -> boolean]" integers nil )
(int nonempty-type-eq-decl nil integers nil )
(>= const-decl "bool" reals nil )
(nat nonempty-type-eq-decl nil naturalnumbers nil )
(sequence type-eq-decl nil sequences nil )
(IMPLIES const-decl "[bool, bool -> bool]" booleans nil )
(AND const-decl "[bool, bool -> bool]" booleans nil )
(/= const-decl "boolean" notequal nil )
(= const-decl "[T, T -> boolean]" equalities nil )
(polynomial const-decl "[real -> real]" polynomials nil )
(nonneg_int nonempty-type-eq-decl nil integers nil )
(> const-decl "bool" reals nil )
(posnat nonempty-type-eq-decl nil integers nil )
(<= const-decl "bool" reals nil )
(numfield nonempty-type-eq-decl nil number_fields nil )
(* const-decl "[numfield, numfield -> numfield]" number_fields nil )
(OR const-decl "[bool, bool -> bool]" booleans nil )
(^ const-decl "real" exponentiation nil )
(- const-decl "[numfield, numfield -> numfield]" number_fields
nil ))
shostak))
(max_linear_div_power_scal 0
(max_linear_div_power_scal-1 nil 3591458539
(""
(case " FORALL (a: sequence[real], n: nat, y: real, nz: nzreal, m: posnat):
max_linear_div_power?(a, n, y)(m) IMPLIES
max_linear_div_power?(nz * a, n, y)(m)")
(("1" (skeep)
(("1" (inst-cp - "a" "n" "y" "nz" "m" )
(("1" (inst - "nz*a" "n" "y" "1/nz" "m" )
(("1" (case "(1/nz)*(nz*a) = a" )
(("1" (ground) nil nil )
("2" (hide-all-but 1)
(("2" (decompose-equality)
(("2" (expand "*" ) (("2" (assert ) nil nil )) nil )) nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2" (hide 2)
(("2" (skeep)
(("2" (rewrite "max_linear_div_power_rew" +)
(("2" (rewrite "max_linear_div_power_rew" -)
(("2" (flatten)
(("2" (assert )
(("2" (skeep)
(("2" (inst + "nz*b" )
(("2" (assert )
(("2" (split +)
(("1" (skeep)
(("1" (inst - "x" )
(("1" (rewrite "scal_polynomial2" )
(("1"
(rewrite "scal_polynomial2" )
(("1" (assert ) nil nil ))
nil ))
nil ))
nil ))
nil )
("2" (rewrite "scal_polynomial2" )
(("2" (flatten)
(("2" (mult-by 1 "nz" )
(("2" (assert ) nil nil )) nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
((max_linear_div_power_rew formula-decl nil more_polynomial_props
nil )
(real_le_is_total_order name-judgement "(total_order?[real])"
real_props nil )
(int_minus_int_is_int application-judgement "int" integers nil )
(both_sides_times1 formula-decl nil real_props nil )
(nonzero_real nonempty-type-eq-decl nil reals nil )
(polynomial const-decl "[real -> real]" polynomials nil )
(scal_polynomial2 formula-decl nil polynomials nil )
(real_minus_real_is_real application-judgement "real" reals nil )
(- const-decl "[numfield, numfield -> numfield]" number_fields nil )
(real_ge_is_total_order name-judgement "(total_order?[real])"
real_props nil )
(nzreal_div_nzreal_is_nzreal application-judgement "nzreal"
real_types nil )
(numfield nonempty-type-eq-decl nil number_fields nil )
(nznum nonempty-type-eq-decl nil number_fields nil )
(/ const-decl "[numfield, nznum -> numfield]" number_fields nil )
(real_times_real_is_real application-judgement "real" reals nil )
(= const-decl "[T, T -> boolean]" equalities nil )
(number nonempty-type-decl nil numbers nil )
(boolean nonempty-type-decl nil booleans nil )
(number_field_pred const-decl "[number -> boolean]" number_fields
nil )
(number_field nonempty-type-from-decl nil number_fields nil )
(real_pred const-decl "[number_field -> boolean]" reals nil )
(real nonempty-type-from-decl nil reals nil )
(rational_pred const-decl "[real -> boolean]" rationals nil )
(rational nonempty-type-from-decl nil rationals nil )
(integer_pred const-decl "[rational -> boolean]" integers nil )
(int nonempty-type-eq-decl nil integers nil )
(bool nonempty-type-eq-decl nil booleans nil )
(>= const-decl "bool" reals nil )
(nat nonempty-type-eq-decl nil naturalnumbers nil )
(sequence type-eq-decl nil sequences nil )
(/= const-decl "boolean" notequal nil )
(nzreal nonempty-type-eq-decl nil reals nil )
(nonneg_int nonempty-type-eq-decl nil integers nil )
(> const-decl "bool" reals nil )
(posnat nonempty-type-eq-decl nil integers nil )
(IMPLIES const-decl "[bool, bool -> bool]" booleans nil )
(max_linear_div_power? const-decl "bool" more_polynomial_props nil )
(* const-decl "[T -> real]" real_fun_ops nil ))
shostak))
(max_linear_div_power_lower_bound 0
(max_linear_div_power_lower_bound-1 nil 3591632939
("" (skeep)
(("" (case "polynomial(b,j)(y)/=0" )
(("1" (flatten)
(("1" (assert )
(("1" (case "k = m" )
(("1" (assert ) nil nil )
("2" (hide 3)
(("2" (lemma "max_linear_div_power_unique" )
(("2" (inst?)
(("2" (case "NOT k = 0" )
(("1" (inst - "k" )
(("1" (assert )
(("1" (rewrite "max_linear_div_power_rew2" +)
(("1" (inst + "b" "j" )
(("1" (assert ) nil nil )) nil ))
nil ))
nil )
("2" (assert ) nil nil ))
nil )
("2" (replaces -1)
(("2" (expand "^" )
(("2" (expand "expt" )
(("2" (hide -1)
(("2"
(rewrite "max_linear_div_power_rew2" -)
(("2"
(skosimp*)
(("2"
(inst - "y" )
(("2"
(inst - "y" )
(("2"
(assert )
(("2"
(expand "^" )
(("2"
(expand "expt" )
(("2" (assert ) nil nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2" (flatten)
(("2" (assert )
(("2" (case "k < m" )
(("1" (assert ) nil nil )
("2" (hide 2)
(("2"
(case "EXISTS (jk:posnat): b(jk)/=0 AND polynomial(b,j) = polynomial(b,jk)" )
(("1" (skeep)
(("1" (replace -1)
(("1" (lemma "poly_max_zero_power" )
(("1" (inst - "b" "jk" "y" )
(("1" (assert )
(("1" (skolem -1 "bm" )
(("1"
(lemma "max_linear_div_power_additive" )
(("1"
(inst - "a" "n" "y" "k" "bm" "b" "jk" )
(("1"
(assert )
(("1"
(replace -6)
(("1"
(lemma
"max_linear_div_power_unique" )
(("1"
(inst - "a" "n" "y" "bm+k" "m" )
(("1" (assert ) nil nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2" (case "FORALL (i:nat): i<=j IMPLIES b(i)=0" )
(("1" (case "polynomial(b,j) = (LAMBDA (x:real): 0)" )
(("1" (replaces -1)
(("1" (hide -1)
(("1" (assert )
(("1" (expand "max_linear_div_power?" )
(("1" (skosimp*)
(("1"
(lemma "poly_continuous" )
(("1"
(inst
-
"b!1"
"n-m"
"y"
"abs(polynomial(b!1, n - m)(y))/2" )
(("1"
(skosimp*)
(("1"
(inst - "y-delta!1/2" )
(("1"
(assert )
(("1"
(expand "abs" -1 1)
(("1"
(assert )
(("1"
(inst - "y-delta!1/2" )
(("1"
(assert )
(("1"
(lemma
"nzreal_times_nzreal_is_nzreal" )
(("1"
(inst
-
"(-1 * (delta!1 / 2)) ^ m"
"polynomial(b!1, n - m)(y - delta!1 / 2)" )
(("1"
(assert )
(("1"
(inst
-
"y-delta!1/2" )
(("1"
(inst
-
"y-delta!1/2" )
(("1"
(assert )
nil
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2"
(expand "abs" 1)
(("2"
(assert )
(("2"
(lift-if)
(("2" (ground) nil nil ))
nil ))
nil ))
nil )
("3" (assert ) nil nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2" (hide-all-but (-1 1))
(("2" (decompose-equality 1)
(("2" (expand "polynomial" 1)
(("2" (rewrite "sigma_restrict_eq_0" )
(("2" (skosimp*)
(("2"
(inst - "i!1" )
(("2"
(assert )
(("2"
(replaces -1)
(("2"
(assert )
(("2"
(lift-if)
(("2" (assert ) nil nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2" (hide (-2 -3))
(("2" (lemma "polynomial_degree_existence" )
(("2" (inst - "b" "j" )
(("2" (assert )
(("2" (split -)
(("1" (skeep -1)
(("1"
(inst 3 "i" )
(("1" (assert ) nil nil )
("2"
(assert )
(("2"
(case "i = 0" )
(("1"
(replaces -1)
(("1"
(assert )
(("1"
(replaces -2)
(("1"
(expand "polynomial" -2)
(("1"
(expand "sigma" )
(("1"
(expand "sigma" )
(("1"
(propax)
nil
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2" (assert ) nil nil ))
nil ))
nil ))
nil ))
nil )
("2" (hide 3)
(("2"
(flatten)
(("2"
(lemma "polynomial_eq_coeff" )
(("2"
(inst
-
"b"
"(LAMBDA (i:nat): 0)"
"j" )
(("2"
(flatten)
(("2"
(hide -2)
(("2"
(split -)
(("1"
(skeep)
(("1"
(inst - "i" )
nil
nil ))
nil )
("2"
(decompose-equality 1)
(("2"
(inst + "x!1" )
(("2"
(flatten)
(("2"
(replaces -1)
(("2"
(expand
"polynomial"
1)
(("2"
(rewrite
"sigma_restrict_eq_0" )
(("2"
(skosimp*)
(("2"
(lift-if)
(("2"
(ground)
nil
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
((polynomial const-decl "[real -> real]" polynomials nil )
(sequence type-eq-decl nil sequences nil )
(nat nonempty-type-eq-decl nil naturalnumbers nil )
(>= const-decl "bool" reals nil )
(bool nonempty-type-eq-decl nil booleans nil )
(int nonempty-type-eq-decl nil integers nil )
(integer_pred const-decl "[rational -> boolean]" integers nil )
(rational nonempty-type-from-decl nil rationals nil )
(rational_pred const-decl "[real -> boolean]" rationals nil )
(real nonempty-type-from-decl nil reals nil )
(real_pred const-decl "[number_field -> boolean]" reals nil )
(number_field nonempty-type-from-decl nil number_fields nil )
(number_field_pred const-decl "[number -> boolean]" number_fields
nil )
(/= const-decl "boolean" notequal nil )
(boolean nonempty-type-decl nil booleans nil )
(number nonempty-type-decl nil numbers nil )
(real_le_is_total_order name-judgement "(total_order?[real])"
real_props nil )
(expt def-decl "real" exponentiation nil )
(nat_exp application-judgement "nat" exponentiation nil )
(real_minus_real_is_real application-judgement "real" reals nil )
(real_times_real_is_real application-judgement "real" reals nil )
(^ const-decl "real" exponentiation nil )
(real_gt_is_strict_total_order name-judgement
"(strict_total_order?[real])" real_props nil )
(k skolem-const-decl "nat" more_polynomial_props nil )
(max_linear_div_power_rew2 formula-decl nil more_polynomial_props
nil )
(NOT const-decl "[bool -> bool]" booleans nil )
(max_linear_div_power_unique formula-decl nil more_polynomial_props
nil )
(= const-decl "[T, T -> boolean]" equalities nil )
(nonneg_int nonempty-type-eq-decl nil integers nil )
(> const-decl "bool" reals nil )
(posnat nonempty-type-eq-decl nil integers nil )
(IMPLIES const-decl "[bool, bool -> bool]" booleans nil )
(<= const-decl "bool" reals nil )
(subrange type-eq-decl nil integers nil )
(sigma_restrict_eq_0 formula-decl nil sigma nil )
(IF const-decl "[boolean, T, T -> T]" if_def nil )
(T_high type-eq-decl nil sigma nil )
(T_low type-eq-decl nil sigma nil )
(real_ge_is_total_order name-judgement "(total_order?[real])"
real_props nil )
(nnreal_div_posreal_is_nnreal application-judgement "nnreal"
real_types nil )
(int_minus_int_is_int application-judgement "int" integers nil )
(- const-decl "[numfield, numfield -> numfield]" number_fields nil )
(n skolem-const-decl "nat" more_polynomial_props nil )
(m skolem-const-decl "posnat" more_polynomial_props nil )
(nznum nonempty-type-eq-decl nil number_fields nil )
(/ const-decl "[numfield, nznum -> numfield]" number_fields nil )
(nonneg_real nonempty-type-eq-decl nil real_types nil )
(- const-decl "[numfield -> numfield]" number_fields nil )
(abs const-decl "{n: nonneg_real | n >= m AND n >= -m}" real_defs
nil )
(b!1 skolem-const-decl "[nat -> real]" more_polynomial_props nil )
(y skolem-const-decl "real" more_polynomial_props nil )
(posreal nonempty-type-eq-decl nil real_types nil )
(posreal_div_posreal_is_posreal application-judgement "posreal"
real_types nil )
(nzreal_times_nzreal_is_nzreal judgement-tcc nil real_types nil )
(nzreal nonempty-type-eq-decl nil reals nil )
(OR const-decl "[bool, bool -> bool]" booleans nil )
(* const-decl "[numfield, numfield -> numfield]" number_fields nil )
(minus_odd_is_odd application-judgement "odd_int" integers nil )
(nzreal_times_nzreal_is_nzreal application-judgement "nzreal"
real_types nil )
(nzreal_exp application-judgement "nzreal" exponentiation nil )
(real_div_nzreal_is_real application-judgement "real" reals nil )
(minus_real_is_real application-judgement "real" reals nil )
(poly_continuous formula-decl nil polynomials nil )
(max_linear_div_power? const-decl "bool" more_polynomial_props nil )
(polynomial_degree_existence formula-decl nil more_polynomial_props
nil )
(polynomial_eq_coeff formula-decl nil polynomials nil )
--> --------------------
--> maximum size reached
--> --------------------
Messung V0.5 in Prozent C=100 H=100 G=100
¤ Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.1.1Bemerkung:
(vorverarbeitet am 2026-05-03)
¤
*Bot Zugriff
2026-05-26