Impressum IEEE_link.prf
Interaktion und PortierbarkeitLisp
(IEEE_link
(Significand_size_TCC1 0
(Significand_size_TCC1-1 nil 3321372494 ("" (subtype-tcc) nil nil )
((/= const-decl "boolean" notequal nil )) nil ))
(IMP_IEEE_854_TCC1 0
(IMP_IEEE_854_TCC1-1 nil 3321372494
("" (assuming-tcc)
(("" (lemma "Base_values" ) (("" (assert ) nil nil )) nil )) nil )
((Base_values formula-decl nil IEEE_link nil )) nil ))
(IMP_IEEE_854_TCC2 0
(IMP_IEEE_854_TCC2-1 nil 3321372494
("" (assuming-tcc)
(("" (lemma "Exponent_range" ) (("" (propax) nil nil )) nil )) nil )
((Exponent_range formula-decl nil IEEE_link nil )
(int_minus_int_is_int application-judgement "int" integers nil )
(rat_div_nzrat_is_rat application-judgement "rat" rationals nil )
(real_gt_is_strict_total_order name-judgement
"(strict_total_order?[real])" real_props nil ))
nil ))
(IMP_IEEE_854_TCC3 0
(IMP_IEEE_854_TCC3-1 nil 3321372494
("" (lemma "Significand_size" ) (("" (propax) nil nil )) nil )
((Significand_size formula-decl nil IEEE_link nil )) nil ))
(IMP_IEEE_854_TCC4 0
(IMP_IEEE_854_TCC4-1 nil 3321372494
("" (lemma "E_balance" ) (("" (propax) nil nil )) nil )
((E_balance formula-decl nil IEEE_link nil )) nil ))
(IMP_IEEE_854_TCC5 0
(IMP_IEEE_854_TCC5-1 nil 3321372494
("" (lemma "Exponent_Adjustment" ) (("" (propax) nil nil )) nil )
((Exponent_Adjustment formula-decl nil IEEE_link nil )) nil ))
(b_TCC1 0
(b_TCC1-1 nil 3321373471
("" (lemma "E_min_neg" ) (("" (assert ) nil nil )) nil )
((minus_int_is_int application-judgement "int" integers nil )
(int_plus_int_is_int application-judgement "int" integers 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_lt_is_strict_total_order name-judgement
"(strict_total_order?[real])" real_props nil )
(E_min_neg formula-decl nil IEEE_854 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 )
(above nonempty-type-eq-decl nil integers nil )
(radix formal-const-decl "above(1)" IEEE_link nil )
(p formal-const-decl "above(1)" IEEE_link nil )
(integer nonempty-type-from-decl nil integers nil )
(alpha formal-const-decl "integer" IEEE_link nil )
(E_max formal-const-decl "integer" IEEE_link nil )
(E_min formal-const-decl "integer" IEEE_link nil ))
nil ))
(IEEE_to_float_TCC1 0
(IEEE_to_float_TCC1-1 nil 3321373471
("" (skeep)
(("" (lemma "E_max_gt_E_min" ) (("" (propax) nil nil )) nil )) nil )
((E_min formal-const-decl "integer" IEEE_link nil )
(E_max formal-const-decl "integer" IEEE_link nil )
(alpha formal-const-decl "integer" IEEE_link nil )
(integer nonempty-type-from-decl nil integers nil )
(p formal-const-decl "above(1)" IEEE_link nil )
(radix formal-const-decl "above(1)" IEEE_link nil )
(above nonempty-type-eq-decl nil integers 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 )
(E_max_gt_E_min formula-decl nil IEEE_854 nil ))
nil ))
(IEEE_to_float_TCC2 0
(IEEE_to_float_TCC2-1 nil 3321373471
("" (skeep) (("" (assert ) nil nil )) nil ) nil nil ))
(IEEE_to_float_TCC3 0
(IEEE_to_float_TCC3-1 nil 3321614391
("" (skeep)
(("" (lemma "E_max_gt_E_min" ) (("" (propax) nil nil )) nil )) nil )
((E_min formal-const-decl "integer" IEEE_link nil )
(E_max formal-const-decl "integer" IEEE_link nil )
(alpha formal-const-decl "integer" IEEE_link nil )
(integer nonempty-type-from-decl nil integers nil )
(p formal-const-decl "above(1)" IEEE_link nil )
(radix formal-const-decl "above(1)" IEEE_link nil )
(above nonempty-type-eq-decl nil integers 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 )
(E_max_gt_E_min formula-decl nil IEEE_854 nil ))
nil ))
(IEEE_to_float_TCC4 0
(IEEE_to_float_TCC4-1 nil 3321373471
("" (skeep)
(("" (case "FORALL (i,j:int): integer?(i*j)" )
(("1"
(inst -1 "(-1) ^ sign[radix, p, E_max, E_min](ieee)"
"radix ^ (p - 1)
*
Sum(p,
value_digit[radix, p, E_max, E_min]
(d[radix, p, E_max, E_min](ieee)))")
(("1" (expand "integer?" )
(("1" (flatten) (("1" (assert ) nil nil )) nil )) nil )
("2" (hide 2)
(("2"
(case "FORALL (d:digits),(n:upto(p)): rational_pred(radix ^ (p - 1) *
Sum(n,
value_digit[radix, p, E_max, E_min]
(d)))
AND
integer_pred(radix ^ (p - 1) *
Sum(n,
value_digit[radix, p, E_max, E_min]
(d)))")
(("1" (inst -1 "d[radix, p, E_max, E_min](ieee)" "p" ) nil
nil )
("2" (hide 2)
(("2" (induct "n" 1 "upto_induction[p]" )
(("1" (expand "Sum" ) (("1" (propax) nil nil )) nil )
("2" (skosimp*)
(("2" (inst -2 "d!1" )
(("2" (flatten)
(("2" (rewrite "Sum" 1)
(("2" (assert )
(("2"
(case " rational_pred(value_digit[radix, p, E_max, E_min](d!1)(jt!1) *
radix ^ (p - 1)) AND
integer_pred(value_digit[radix, p, E_max, E_min](d!1)(jt!1) *
radix ^ (p - 1))")
(("1"
(case "FORALL (i,j:int): integer?(i+j)" )
(("1"
(inst?)
(("1"
(assert )
(("1"
(expand "integer?" )
(("1" (propax) nil nil ))
nil ))
nil ))
nil )
("2"
(hide-all-but 1)
(("2"
(skosimp*)
(("2"
(expand "integer?" )
(("2" (propax) nil nil ))
nil ))
nil ))
nil ))
nil )
("2" (hide -2 -3 2)
(("2"
(split)
(("1"
(expand "value_digit" )
(("1" (propax) nil nil ))
nil )
("2"
(expand "value_digit" )
(("2"
(case-replace
"d!1(jt!1) * radix ^ (p - 1) * radix ^ (-jt!1)=
d!1(jt!1) *(radix ^ (p - 1) * radix ^ (-jt!1))")
(("1"
(rewrite "expt_plus" :dir rl)
(("1"
(hide -1)
(("1"
(case
"FORALL (i,j:int): integer?(i*j)" )
(("1"
(inst?)
(("1"
(expand "integer?" )
(("1" (propax) nil nil ))
nil )
("2"
(grind-reals)
(("2"
(case
"0 <= (-jt!1) - 1 + p " )
(("1"
(assert )
(("1"
(expand "^" )
(("1"
(propax)
nil
nil ))
nil ))
nil )
("2"
(assert )
nil
nil ))
nil ))
nil ))
nil )
("2"
(hide -1 2)
(("2"
(skeep)
(("2"
(expand "integer?" )
(("2"
(propax)
nil
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2" (assert ) 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 ))
nil )
("3" (hide 2)
(("3" (skosimp*) (("3" (assert ) nil nil )) nil )) nil )
("4" (hide 2)
(("4" (skosimp*) (("4" (assert ) nil nil )) nil )) nil ))
nil ))
nil )
("3" (hide 2) (("3" (grind-reals) nil nil )) nil ))
nil )
("2" (hide 2)
(("2" (skosimp*)
(("2" (expand "integer?" ) (("2" (propax) nil nil )) nil ))
nil ))
nil ))
nil ))
nil )
((* const-decl "[numfield, numfield -> numfield]" number_fields nil )
(numfield nonempty-type-eq-decl nil number_fields nil )
(integer? const-decl "bool" integers 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 )
(nnreal_times_nnreal_is_nnreal application-judgement "nnreal"
real_types nil )
(real_lt_is_strict_total_order name-judgement
"(strict_total_order?[real])" real_props nil )
(nzreal nonempty-type-eq-decl nil reals nil )
(expt_plus formula-decl nil exponentiation nil )
(posrat_times_posrat_is_posrat application-judgement "posrat"
rationals nil )
(posrat_exp application-judgement "posrat" exponentiation nil )
(mult_divides2 application-judgement "(divides(m))" divides nil )
(mult_divides1 application-judgement "(divides(n))" divides nil )
(nnint_times_nnint_is_nnint application-judgement "nonneg_int"
integers nil )
(posnat_expt application-judgement "posnat" exponentiation nil )
(minus_int_is_int application-judgement "int" integers nil )
(nnrat_times_nnrat_is_nnrat application-judgement "nonneg_rat"
rationals nil )
(jt!1 skolem-const-decl "upto(p)" IEEE_link nil )
(d!1 skolem-const-decl "digits[radix, p, E_max, E_min]" IEEE_link
nil )
(int_plus_int_is_int application-judgement "int" integers nil )
(real_plus_real_is_real application-judgement "real" reals nil )
(nnint_plus_posint_is_posint application-judgement "posint"
integers nil )
(+ const-decl "[numfield, numfield -> numfield]" number_fields nil )
(upto_induction formula-decl nil bounded_nat_inductions nil )
(pred type-eq-decl nil defined_types nil )
(real_le_is_total_order name-judgement "(total_order?[real])"
real_props nil )
(IMPLIES const-decl "[bool, bool -> bool]" booleans nil )
(upto nonempty-type-eq-decl nil naturalnumbers nil )
(<= const-decl "bool" reals nil )
(nzrat_times_nzrat_is_nzrat application-judgement "nzrat" rationals
nil )
(sign adt-accessor-decl "[(finite?) -> sign_rep]" IEEE_854_values
nil )
(sign_rep type-eq-decl nil enumerated_type_defs nil )
(= const-decl "[T, T -> boolean]" equalities nil )
(- const-decl "[numfield -> numfield]" number_fields nil )
(alpha formal-const-decl "integer" IEEE_link nil )
(E_max_gt_E_min formula-decl nil IEEE_854 nil )
(AND const-decl "[bool, bool -> bool]" booleans nil )
(^ const-decl "real" exponentiation nil )
(nat nonempty-type-eq-decl nil naturalnumbers nil )
(Sum def-decl "real" sum_hack nil ) (< const-decl "bool" reals nil )
(below type-eq-decl nil naturalnumbers nil )
(integer nonempty-type-from-decl nil integers nil )
(E_max formal-const-decl "integer" IEEE_link nil )
(E_min formal-const-decl "integer" IEEE_link nil )
(digits type-eq-decl nil IEEE_854_values nil )
(nonneg_real nonempty-type-eq-decl nil real_types nil )
(value_digit const-decl "nonneg_real" IEEE_854_values nil )
(fp_num type-decl nil IEEE_854_values nil )
(finite? adt-recognizer-decl "[fp_num -> boolean]" IEEE_854_values
nil )
(d adt-accessor-decl "[(finite?) -> digits]" IEEE_854_values nil )
(ieee skolem-const-decl "(finite?[radix, p, E_max, E_min])"
IEEE_link nil )
(p formal-const-decl "above(1)" IEEE_link nil )
(- const-decl "[numfield, numfield -> numfield]" number_fields nil )
(>= const-decl "bool" reals nil )
(radix formal-const-decl "above(1)" IEEE_link nil )
(above nonempty-type-eq-decl nil integers nil )
(> const-decl "bool" reals nil )
(/= const-decl "boolean" notequal nil )
(OR const-decl "[bool, bool -> bool]" booleans nil )
(minus_odd_is_odd application-judgement "odd_int" integers nil )
(int_exp application-judgement "int" exponentiation nil )
(nzreal_exp application-judgement "nzreal" exponentiation nil )
(int_minus_int_is_int application-judgement "int" integers nil )
(real_times_real_is_real application-judgement "real" reals nil )
(nnrat_exp application-judgement "nnrat" exponentiation 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 ))
nil ))
(IEEE_to_float_TCC5 0
(IEEE_to_float_TCC5-1 nil 3321373471
("" (skeep)
((""
(case "value[radix, p, E_max, E_min](ieee) =
FtoR[radix]
((# Fnum
:= (-1) ^ sign[radix, p, E_max, E_min](ieee) *
radix ^ (p - 1)
*
Sum(p,
value_digit[radix, p, E_max, E_min]
(d[radix, p, E_max, E_min](ieee))),
Fexp := Exp[radix, p, E_max, E_min](ieee) + 1 - p #))")
(("1" (split)
(("1" (hide -1)
(("1" (expand "Fbounded?" )
(("1" (split)
(("1" (expand "vNum" )
(("1" (expand "b" )
(("1" (rewrite "abs_mult" )
(("1" (rewrite "abs_mult" )
(("1" (lemma "Sum_nonneg" )
(("1" (inst?)
(("1" (expand "abs" 1 1)
(("1" (grind-reals)
(("1"
(case-replace
"abs((-1) ^ sign[radix, p, E_max, E_min](ieee))=1" )
(("1"
(expand "abs" 1 1)
(("1"
(lemma "value_sig_lt_b" )
(("1"
(inst?)
(("1"
(case-replace
" radix ^ p=radix*radix^ (p - 1)" )
(("1"
(div-by 1 "radix ^ (p - 1)" )
nil
nil )
("2"
(lemma "expt_plus" )
(("2"
(inst -1 "1" "p-1" "radix" )
(("2"
(rewrite "expt_x1" )
(("2" (assert ) nil nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2"
(hide -1 2)
(("2"
(typepred
"sign[radix, p, E_max, E_min](ieee)" )
(("2"
(split)
(("1"
(rewrite -1)
(("1"
(expand * "^" "expt" "abs" )
nil
nil ))
nil )
("2"
(replace -1)
(("2"
(expand * "^" "expt" "abs" )
(("2"
(expand "expt" )
(("2" (propax) nil nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2" (expand "b" ) (("2" (assert ) nil nil )) nil ))
nil ))
nil ))
nil )
("2" (propax) nil nil )
("3" (replace -1 :dir rl)
(("3" (hide -1)
(("3" (lemma "finite_cover" )
(("3" (inst?)
(("3" (split)
(("1" (expand "zero?" )
(("1" (replace -1)
(("1" (expand "abs" ) (("1" (assert ) nil nil ))
nil ))
nil ))
nil )
("2" (lemma "value_normal" )
(("2" (inst?)
(("2" (split)
(("1" (flatten)
(("1" (trans-ineq 1 " max_pos" :strict 2)
(("1" (rewrite "max_fp_correct" )
(("1" (grind-reals) nil nil )) nil ))
nil ))
nil )
("2" (propax) nil nil ))
nil ))
nil ))
nil )
("3" (lemma "value_subnormal" )
(("3" (inst?)
(("3" (split)
(("1" (flatten)
(("1"
(trans-ineq 1 "radix ^ E_min" :strict 1)
(("1" (rewrite "Exp_increq_1" )
(("1"
(lemma "E_max_gt_E_min" )
(("1" (assert ) nil nil ))
nil ))
nil ))
nil ))
nil )
("2" (propax) nil nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2" (hide 2)
(("2" (expand "FtoR" )
(("2" (expand "value" )
(("2"
(case "Sum(p, value_digit(d(ieee))) * (-1) ^ sign(ieee) * radix ^ Exp(ieee)
=
Sum(p,
value_digit[radix, p, E_max, E_min]
(d[radix, p, E_max, E_min](ieee)))
* (-1) ^ sign[radix, p, E_max, E_min](ieee)
* (radix ^ (p - 1)
* radix ^ (1+Exp[radix, p, E_max, E_min](ieee) - p))")
(("1" (rewrite -1) nil nil )
("2" (hide 2)
(("2" (rewrite "expt_plus" :dir rl) nil nil )) nil ))
nil ))
nil ))
nil ))
nil )
("3" (hide 2)
(("3" (lemma "IEEE_to_float_TCC4" )
(("3" (inst?) (("3" (flatten) (("3" (assert ) nil nil )) nil ))
nil ))
nil ))
nil )
("4" (hide 2) (("4" (flatten) (("4" (assert ) nil nil )) nil ))
nil ))
nil ))
nil )
((Exp adt-accessor-decl "[(finite?) -> Exponent]" IEEE_854_values
nil )
(Exponent type-eq-decl nil IEEE_854_values nil )
(<= const-decl "bool" reals nil )
(AND const-decl "[bool, bool -> bool]" booleans nil )
(+ const-decl "[numfield, numfield -> numfield]" number_fields nil )
(d adt-accessor-decl "[(finite?) -> digits]" IEEE_854_values nil )
(value_digit const-decl "nonneg_real" IEEE_854_values nil )
(nonneg_real nonempty-type-eq-decl nil real_types nil )
(digits type-eq-decl nil IEEE_854_values nil )
(below type-eq-decl nil naturalnumbers nil )
(< const-decl "bool" reals nil ) (Sum def-decl "real" sum_hack nil )
(- const-decl "[numfield, numfield -> numfield]" number_fields nil )
(sign adt-accessor-decl "[(finite?) -> sign_rep]" IEEE_854_values
nil )
(sign_rep type-eq-decl nil enumerated_type_defs nil )
(nat nonempty-type-eq-decl nil naturalnumbers nil )
(- const-decl "[numfield -> numfield]" number_fields nil )
(^ const-decl "real" exponentiation nil )
(>= const-decl "bool" reals nil )
(/= const-decl "boolean" notequal nil )
(OR const-decl "[bool, bool -> bool]" booleans nil )
(* const-decl "[numfield, numfield -> numfield]" number_fields nil )
(numfield nonempty-type-eq-decl nil number_fields nil )
(FtoR const-decl "real" float nil )
(float type-eq-decl nil float nil )
(value const-decl "real" IEEE_854_values nil )
(finite? adt-recognizer-decl "[fp_num -> boolean]" IEEE_854_values
nil )
(fp_num type-decl nil IEEE_854_values nil )
(E_min formal-const-decl "integer" IEEE_link nil )
(E_max formal-const-decl "integer" IEEE_link nil )
(integer nonempty-type-from-decl nil integers nil )
(p formal-const-decl "above(1)" IEEE_link nil )
(radix formal-const-decl "above(1)" IEEE_link nil )
(above nonempty-type-eq-decl nil integers 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 )
(minus_odd_is_odd application-judgement "odd_int" integers nil )
(int_minus_int_is_int application-judgement "int" integers nil )
(nzrat_times_nzrat_is_nzrat application-judgement "nzrat" rationals
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 )
(finite_cover formula-decl nil IEEE_854_values nil )
(zero? const-decl "bool" IEEE_854_values nil )
(max_fp_correct formula-decl nil IEEE_854_values nil )
(rat_minus_rat_is_rat application-judgement "rat" rationals nil )
(max_pos const-decl "posreal" IEEE_854_values nil )
(IMPLIES const-decl "[bool, bool -> bool]" booleans nil )
(value_normal formula-decl nil IEEE_854_values nil )
(Exp_increq_1 formula-decl nil float nil )
(value_subnormal formula-decl nil IEEE_854_values nil )
(b const-decl "Format" IEEE_link nil )
(nzint_abs_is_pos application-judgement "{j: posint | j >= i}"
real_defs nil )
(alpha formal-const-decl "integer" IEEE_link nil )
(E_max_gt_E_min formula-decl nil IEEE_854 nil )
(real_lt_is_strict_total_order name-judgement
"(strict_total_order?[real])" real_props nil )
(posrat_times_posrat_is_posrat application-judgement "posrat"
rationals nil )
(posint_exp application-judgement "posint" exponentiation nil )
(int_expt application-judgement "int" exponentiation nil )
(nzreal_expt application-judgement "nzreal" exponentiation nil )
(expt def-decl "real" exponentiation nil )
(mult_divides2 application-judgement "(divides(m))" divides nil )
(mult_divides1 application-judgement "(divides(n))" divides nil )
(nzint_times_nzint_is_nzint application-judgement "nzint" integers
nil )
(NOT const-decl "[bool -> bool]" booleans nil )
(expt_plus formula-decl nil exponentiation nil )
(expt_x1 formula-decl nil exponentiation nil )
(nzreal nonempty-type-eq-decl nil reals nil )
(posreal nonempty-type-eq-decl nil real_types nil )
(times_div_cancel2 formula-decl nil extra_real_props nil )
(nonzero_real nonempty-type-eq-decl nil reals nil )
(both_sides_div_pos_lt1 formula-decl nil real_props nil )
(value_sig_lt_b formula-decl nil IEEE_854_values nil )
(abs const-decl "{n: nonneg_real | n >= m AND n >= -m}" real_defs
nil )
(Sum_nonneg formula-decl nil sum_hack nil )
(nnreal_times_nnreal_is_nnreal application-judgement "nnreal"
real_types nil )
(nzrat_abs_is_pos application-judgement "{r: posrat | r >= q}"
real_defs nil )
(abs_mult formula-decl nil real_props nil )
(vNum const-decl "posnat" float nil )
(minus_int_is_int application-judgement "int" integers nil )
(real_le_is_total_order name-judgement "(total_order?[real])"
real_props nil )
(Fbounded? const-decl "bool" float nil )
(IEEE_to_float_TCC4 subtype-tcc nil IEEE_link nil )
(int_exp application-judgement "int" exponentiation nil )
(nzreal_exp application-judgement "nzreal" exponentiation nil )
(real_times_real_is_real application-judgement "real" reals nil )
(nnrat_exp application-judgement "nnrat" exponentiation nil )
(posrat_exp application-judgement "posrat" exponentiation nil )
(int_plus_int_is_int application-judgement "int" integers nil ))
nil ))
(float_to_IEEE_TCC1 0
(float_to_IEEE_TCC1-1 nil 3321378670
("" (skeep) (("" (assert ) nil nil )) nil ) nil nil ))
(float_to_IEEE_TCC2 0
(float_to_IEEE_TCC2-1 nil 3321378670
("" (skosimp*)
(("" (typepred "f!1" )
(("" (split)
(("1" (case "Fbounded?(b)(f!1)" )
(("1" (expand * "Fbounded?" "b" )
(("1" (flatten) (("1" (assert ) nil nil )) nil )) nil )
("2" (rewrite "FcanonicBounded" ) nil nil ))
nil )
("2" (expand "Fcanonic?" )
(("2" (split)
(("1" (expand "Fnormal?" )
(("1" (flatten)
(("1" (case " Fexp(f!1) + p - 1 < E_max + 1" )
(("1" (assert ) nil nil )
("2" (rewrite "Exp_incr_2" )
(("2" (hide 2 3)
(("2" (trans-ineq 1 "abs(FtoR(f!1))" :strict 2)
(("2" (rewrite "expt_plus" )
(("2" (rewrite "expt_div" :dir rl)
(("2" (expand "FtoR" )
(("2"
(rewrite "abs_mult" )
(("2"
(expand "abs" 1 2)
(("2"
(rewrite "abs_mult" )
(("2"
(expand "abs" -2 1)
(("2"
(case-replace
"vNum(b)=radix ^ p" )
(("1"
(div-by
1
"radix ^ Fexp(f!1)" )
(("1" (field 1) nil nil ))
nil )
("2"
(expand "b" )
(("2"
(expand "vNum" )
(("2" (propax) nil nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2" (expand * "Fsubnormal?" "b" )
(("2" (flatten)
(("2" (rewrite -2)
(("2" (lemma "E_max_gt_E_min" )
(("2" (assert ) nil nil )) nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
((E_max formal-const-decl "integer" IEEE_link nil )
(integer nonempty-type-from-decl nil integers nil )
(+ const-decl "[numfield, numfield -> numfield]" number_fields nil )
(^ const-decl "real" exponentiation nil )
(/= const-decl "boolean" notequal nil )
(OR const-decl "[bool, bool -> bool]" booleans nil )
(FtoR const-decl "real" float nil )
(abs const-decl "{n: nonneg_real | n >= m AND n >= -m}" real_defs
nil )
(- const-decl "[numfield -> numfield]" number_fields nil )
(numfield nonempty-type-eq-decl nil number_fields nil )
(AND const-decl "[bool, bool -> bool]" booleans nil )
(nonneg_real nonempty-type-eq-decl nil real_types nil )
(>= const-decl "bool" reals nil ) (< const-decl "bool" reals nil )
(b const-decl "Format" IEEE_link nil )
(Fcanonic? const-decl "bool" float nil )
(float type-eq-decl nil float nil )
(Format type-eq-decl nil float nil )
(radix formal-const-decl "above(1)" IEEE_link nil )
(> const-decl "bool" reals 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 )
(number nonempty-type-decl nil numbers nil )
(above nonempty-type-eq-decl nil integers nil )
(nat nonempty-type-eq-decl nil naturalnumbers nil )
(NOT const-decl "[bool -> bool]" booleans nil )
(bool nonempty-type-eq-decl nil booleans nil )
(boolean nonempty-type-decl nil booleans nil )
(Fsubnormal? const-decl "bool" float nil )
(E_min formal-const-decl "integer" IEEE_link nil )
(alpha formal-const-decl "integer" IEEE_link nil )
(E_max_gt_E_min formula-decl nil IEEE_854 nil )
(mult_divides1 application-judgement "(divides(n))" divides nil )
(mult_divides2 application-judgement "(divides(m))" divides nil )
(Fnormal? const-decl "bool" float nil )
(- const-decl "[numfield, numfield -> numfield]" number_fields nil )
(p formal-const-decl "above(1)" IEEE_link nil )
(nzreal nonempty-type-eq-decl nil reals nil )
(expt_plus formula-decl nil exponentiation nil )
(posint_exp application-judgement "posint" exponentiation nil )
(posrat_times_posrat_is_posrat application-judgement "posrat"
rationals nil )
(rat_times_rat_is_rat application-judgement "rat" rationals nil )
(both_sides_div_pos_le1 formula-decl nil real_props nil )
(posreal nonempty-type-eq-decl nil real_types nil )
(* const-decl "[numfield, numfield -> numfield]" number_fields nil )
(nznum nonempty-type-eq-decl nil number_fields nil )
(/ const-decl "[numfield, nznum -> numfield]" number_fields nil )
(times_div_cancel2 formula-decl nil extra_real_props nil )
(nonzero_real nonempty-type-eq-decl nil reals nil )
(TRUE const-decl "bool" booleans nil )
(id const-decl "(bijective?[T, T])" identity nil )
(bijective? const-decl "bool" functions nil )
(div_cancel2 formula-decl nil real_props nil )
(both_sides_times_pos_le1 formula-decl nil real_props nil )
(real_gt_is_strict_total_order name-judgement
"(strict_total_order?[real])" real_props nil )
(= const-decl "[T, T -> boolean]" equalities nil )
(nonneg_int nonempty-type-eq-decl nil integers nil )
(posnat nonempty-type-eq-decl nil integers nil )
(vNum const-decl "posnat" float nil )
(nnint_times_nnint_is_nnint application-judgement "nonneg_int"
integers nil )
(nzint_abs_is_pos application-judgement "{j: posint | j >= i}"
real_defs nil )
(nnrat_times_nnrat_is_nnrat application-judgement "nonneg_rat"
rationals nil )
(nzrat_abs_is_pos application-judgement "{r: posrat | r >= q}"
real_defs nil )
(abs_mult formula-decl nil real_props nil )
(expt_x1 formula-decl nil exponentiation nil )
(posrat_div_posrat_is_posrat application-judgement "posrat"
rationals nil )
(expt_div formula-decl nil exponentiation nil )
(<= const-decl "bool" reals nil )
(nnrat_exp application-judgement "nnrat" exponentiation nil )
(posrat_exp application-judgement "posrat" exponentiation nil )
(Exp_incr_2 formula-decl nil float nil )
(Fbounded? const-decl "bool" float 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 )
(real_le_is_total_order name-judgement "(total_order?[real])"
real_props nil )
(minus_int_is_int application-judgement "int" integers nil )
(int_minus_int_is_int application-judgement "int" integers nil )
(int_plus_int_is_int application-judgement "int" integers nil )
(FcanonicBounded formula-decl nil float nil ))
nil ))
(float_to_IEEE_TCC3 0
(float_to_IEEE_TCC3-1 nil 3321378670
("" (skosimp*)
(("" (typepred "f!1" ) (("" (grind-reals) nil nil )) nil )) nil )
((E_max formal-const-decl "integer" IEEE_link nil )
(integer nonempty-type-from-decl nil integers nil )
(+ const-decl "[numfield, numfield -> numfield]" number_fields nil )
(^ const-decl "real" exponentiation nil )
(/= const-decl "boolean" notequal nil )
(OR const-decl "[bool, bool -> bool]" booleans nil )
(FtoR const-decl "real" float nil )
(abs const-decl "{n: nonneg_real | n >= m AND n >= -m}" real_defs
nil )
(- const-decl "[numfield -> numfield]" number_fields nil )
(numfield nonempty-type-eq-decl nil number_fields nil )
(AND const-decl "[bool, bool -> bool]" booleans nil )
(nonneg_real nonempty-type-eq-decl nil real_types nil )
(>= const-decl "bool" reals nil ) (< const-decl "bool" reals nil )
(b const-decl "Format" IEEE_link nil )
(Fcanonic? const-decl "bool" float nil )
(float type-eq-decl nil float nil )
(Format type-eq-decl nil float nil )
(radix formal-const-decl "above(1)" IEEE_link nil )
(> const-decl "bool" reals 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 )
(number nonempty-type-decl nil numbers nil )
(above nonempty-type-eq-decl nil integers nil )
(nat nonempty-type-eq-decl nil naturalnumbers nil )
(NOT const-decl "[bool -> bool]" booleans nil )
(bool nonempty-type-eq-decl nil booleans nil )
(boolean nonempty-type-decl nil booleans nil )
(real_lt_is_strict_total_order name-judgement
"(strict_total_order?[real])" real_props nil )
(nnrat_exp application-judgement "nnrat" exponentiation nil )
(posrat_exp application-judgement "posrat" exponentiation nil )
(int_plus_int_is_int application-judgement "int" integers nil ))
nil ))
(float_to_IEEE_TCC4 0
(float_to_IEEE_TCC4-1 nil 3321381545
("" (skeep)
(("" (lemma "E_max_gt_E_min" ) (("" (propax) nil nil )) nil )) nil )
((E_min formal-const-decl "integer" IEEE_link nil )
(E_max formal-const-decl "integer" IEEE_link nil )
(alpha formal-const-decl "integer" IEEE_link nil )
(integer nonempty-type-from-decl nil integers nil )
(p formal-const-decl "above(1)" IEEE_link nil )
(radix formal-const-decl "above(1)" IEEE_link nil )
(above nonempty-type-eq-decl nil integers 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 )
(E_max_gt_E_min formula-decl nil IEEE_854 nil ))
nil ))
(float_to_IEEE_TCC5 0
(float_to_IEEE_TCC5-1 nil 3321381545
("" (skosimp*)
(("" (typepred "f!1" )
(("" (expand * "FtoR" "value" )
((""
(case-replace
"radix ^ (Fexp(f!1) - 1 + p)=radix ^ (Fexp(f!1))*radix^(p-1)" )
(("1" (div-by 1 "radix ^ (Fexp(f!1))" )
(("1" (field 1)
(("1"
(case " Sum(p,
value_digit(LAMBDA (i: below(p)):
mod(floor((radix ^ (1+i-p)) * abs(Fnum(f!1))), radix)))*(radix ^ (p - 1))=abs(Fnum(f!1))")
(("1"
(case "Fnum(f!1) =((-1) ^ sign_of[radix, p](Fnum(f!1)))* abs(Fnum(f!1))" )
(("1" (assert ) nil nil )
("2" (hide-all-but 1)
(("2" (expand * "sign_of" "pos" "neg" "abs" )
(("2" (grind-reals)
(("1" (rewrite "expt_x1" )
(("1" (assert ) nil nil )) nil )
("2" (rewrite "expt_x0" )
(("2" (assert ) nil nil )) nil ))
nil ))
nil ))
nil ))
nil )
("2" (hide 2 -1)
(("2"
(case "FORALL (j:upto(p)): Sum(j, value_digit(LAMBDA (i: below(p)):
mod(floor((radix ^ (1+i-p)) * abs(Fnum(f!1))), radix)))
* (radix ^ (j-1))
= floor(abs(Fnum(f!1))*radix^(j-p))")
(("1" (inst?)
(("1" (copy -2)
(("1" (rewrite -2)
(("1" (rewrite "expt_x0" )
(("1" (assert )
(("1"
(lemma "floor_int" )
(("1" (inst?) nil nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2" (hide 2)
(("2" (induct "j" 1 "upto_induction[p]" )
(("1" (rewrite "Sum" )
(("1" (lemma "floor_0" )
(("1" (inst?)
(("1"
(flatten)
(("1"
(split -2)
(("1" (assert ) nil nil )
("2" (grind-reals) nil nil )
("3"
(hide 2)
(("3"
(case-replace "0-p=-p" )
(("1"
(rewrite "expt_inverse" )
(("1"
(mult-by 1 "radix ^ p" )
(("1"
(field 1)
(("1"
(case
"radix ^ p=vNum(b)" )
(("1"
(expand *
"Fcanonic?"
"Fsubnormal?"
"Fnormal?"
"Fbounded?" )
(("1"
(assert )
nil
nil ))
nil )
("2"
(expand "b" 1)
(("2"
(expand "vNum" )
(("2"
(propax)
nil
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2" (assert ) nil nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2" (skosimp*)
(("2" (rewrite "Sum" 1)
(("2" (assert )
(("2"
(case-replace
"Sum(jt!1,
value_digit(LAMBDA (i: below(p)):
mod(floor((radix ^ (1 + i - p)) * abs(Fnum(f!1))),
radix)))
* (radix ^ jt!1)=radix*floor(abs(Fnum(f!1)) * radix ^ (jt!1 - p))")
(("1"
(expand "value_digit" )
(("1"
(hide -1 -3)
(("1"
(case-replace
"mod(floor((radix ^ (1 - p + jt!1)) * abs(Fnum(f!1))), radix) *
radix ^ (-jt!1)
* (radix ^ jt!1) = mod(floor((radix ^ (1 - p + jt!1)) * abs(Fnum(f!1))), radix) *
( radix ^ (-jt!1)* (radix ^ jt!1))")
(("1"
(rewrite "expt_plus" :dir rl)
(("1"
(assert )
(("1"
(case-replace
" mod(floor((radix ^ (1 - p + jt!1)) * abs(Fnum(f!1))), radix)
* radix ^ ((-jt!1) + jt!1)=mod(floor((radix ^ (1 - p + jt!1)) * abs(Fnum(f!1))), radix)")
(("1"
(case
"FORALL (n,j:int): mod(floor(radix^j*n),radix)+
radix*floor(radix^(j-1)*n)=floor(radix^j*n)")
(("1"
(inst?)
(("1"
(assert )
nil
nil ))
nil )
("2"
(hide-all-but 1)
(("2"
(skeep)
(("2"
(lemma "rem_floor" )
(("2"
(lemma
"mod_to_rem" )
(("2"
(inst
-2
"radix"
"floor(radix ^ j * n)" )
(("2"
(case
"mod(floor(radix ^ j * n), radix) + radix * floor(radix ^ (j - 1) * n)
= rem(radix)(floor(radix ^ j * n)) +
radix * floor(floor(radix ^ j * n) / radix)")
(("1"
(assert )
nil
nil )
("2"
(hide 2 -2)
(("2"
(inst?)
(("2"
(rewrite
-1)
(("2"
(move-terms
1
l
1)
(("2"
(assert )
(("2"
(div-by
1
"radix" )
(("2"
(case
"(FORALL (r:real): (floor(r)=floor(floor(radix*r)/radix)))" )
(("1"
(inst
-1
"radix ^ (j - 1) * n" )
(("1"
(case-replace
"radix ^ j=radix * (radix ^ (j - 1))" )
(("1"
(assert )
nil
nil )
("2"
(lemma
"expt_plus" )
(("2"
(inst
-1
"1"
"j-1"
"radix" )
(("2"
(rewrite
"expt_x1" )
(("2"
(assert )
nil
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2"
(hide-all-but
1)
(("2"
(skeep)
(("2"
(case
"floor(floor(radix * r) / radix) <= r" )
(("1"
(case
" r < floor(floor(radix * r) / radix)+1" )
(("1"
(assert )
nil
nil )
("2"
(hide
-1
2)
(("2"
(move-terms
1
r
2)
(("2"
(trans-ineq
1
"floor(radix * r) / radix-1+1/radix"
:strict
1)
(("1"
(field
1)
nil
nil )
("2"
(field
1)
(("2"
(case
"floor(radix * r) - radix <
floor(floor(radix * r) / radix) * radix")
(("1"
(assert )
nil
nil )
("2"
(div-by
1
"radix" )
(("2"
(grind-reals)
nil
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2"
(trans-ineq
1
"floor(radix * r) / radix" )
(("1"
(assert )
nil
nil )
("2"
(trans-ineq
1
"(radix * r)/radix" )
(("1"
(grind-reals)
nil
nil )
("2"
(grind-reals)
nil
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2"
(hide-all-but 1)
(("2"
(case-replace
"(-jt!1) + jt!1=0" )
(("1"
(rewrite "expt_x0" )
(("1"
(assert )
nil
nil ))
nil )
("2"
(assert )
nil
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2" (assert ) nil nil ))
nil ))
nil ))
nil )
("2"
(hide 2)
(("2"
(rewrite -2 :dir rl)
(("2"
(div-by
1
" Sum(jt!1,
value_digit(LAMBDA (i: below(p)):
mod(floor((radix ^ (1+i-p )) * abs(Fnum(f!1))),
radix)))")
(("1"
(field 1)
(("1"
(lemma "expt_plus" )
(("1"
(inst
-1
"1"
"jt!1 - 1"
"radix" )
(("1"
(rewrite "expt_x1" )
(("1" (assert ) nil nil ))
nil ))
nil ))
nil ))
nil )
("2"
(lemma "E_max_gt_E_min" )
(("2" (propax) nil nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("3" (lemma "E_max_gt_E_min" )
(("3" (propax) nil nil )) nil ))
nil ))
nil ))
nil ))
nil )
("3" (lemma "E_max_gt_E_min" ) (("3" (propax) nil nil ))
nil ))
nil )
("2" (lemma "E_max_gt_E_min" ) (("2" (propax) nil nil ))
nil ))
nil )
("2" (lemma "E_max_gt_E_min" ) (("2" (propax) nil nil ))
nil ))
nil )
("2" (lemma "expt_plus" )
(("2" (inst -1 "Fexp(f!1)" "p-1" "radix" )
(("2" (assert ) nil nil )) nil ))
nil )
("3" (assert ) nil nil ))
nil ))
nil ))
nil ))
nil )
((E_max formal-const-decl "integer" IEEE_link nil )
(integer nonempty-type-from-decl nil integers nil )
(+ const-decl "[numfield, numfield -> numfield]" number_fields nil )
(^ const-decl "real" exponentiation nil )
(/= const-decl "boolean" notequal nil )
(OR const-decl "[bool, bool -> bool]" booleans nil )
(FtoR const-decl "real" float nil )
(abs const-decl "{n: nonneg_real | n >= m AND n >= -m}" real_defs
nil )
(- const-decl "[numfield -> numfield]" number_fields nil )
(numfield nonempty-type-eq-decl nil number_fields nil )
(AND const-decl "[bool, bool -> bool]" booleans nil )
(nonneg_real nonempty-type-eq-decl nil real_types nil )
(>= const-decl "bool" reals nil ) (< const-decl "bool" reals nil )
(b const-decl "Format" IEEE_link nil )
(Fcanonic? const-decl "bool" float nil )
(float type-eq-decl nil float nil )
(Format type-eq-decl nil float nil )
(radix formal-const-decl "above(1)" IEEE_link nil )
(> const-decl "bool" reals 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 )
(number nonempty-type-decl nil numbers nil )
(above nonempty-type-eq-decl nil integers nil )
(nat nonempty-type-eq-decl nil naturalnumbers nil )
(NOT const-decl "[bool -> bool]" booleans nil )
(bool nonempty-type-eq-decl nil booleans nil )
(boolean nonempty-type-decl nil booleans nil )
(real_ge_is_total_order name-judgement "(total_order?[real])"
real_props nil )
(* const-decl "[numfield, numfield -> numfield]" number_fields nil )
(p formal-const-decl "above(1)" IEEE_link nil )
(- const-decl "[numfield, numfield -> numfield]" number_fields nil )
(= const-decl "[T, T -> boolean]" equalities nil )
(int_plus_int_is_int application-judgement "int" integers nil )
(posrat_times_posrat_is_posrat application-judgement "posrat"
rationals nil )
(real_times_real_is_real application-judgement "real" reals nil )
(nzreal_exp application-judgement "nzreal" exponentiation nil )
(int_exp application-judgement "int" exponentiation nil )
(bijective? const-decl "bool" functions nil )
(id const-decl "(bijective?[T, T])" identity nil )
(TRUE const-decl "bool" booleans nil )
(real_div_nzreal_is_real application-judgement "real" reals nil )
(/ const-decl "[numfield, nznum -> numfield]" number_fields nil )
(nznum nonempty-type-eq-decl nil number_fields nil )
(nzrat_times_nzrat_is_nzrat application-judgement "nzrat" rationals
nil )
(nnreal_times_nnreal_is_nnreal application-judgement "nnreal"
real_types nil )
(f!1 skolem-const-decl
"{f: (Fcanonic?(b)) | abs(FtoR(f)) < radix ^ (E_max + 1)}"
IEEE_link nil )
(jt!1 skolem-const-decl "upto(p)" IEEE_link nil )
(nnint_plus_nnint_is_nnint application-judgement "nonneg_int"
integers nil )
(mod_to_rem formula-decl nil mod_lems "ints/" )
(rat_div_nzrat_is_rat application-judgement "rat" rationals nil )
(mod nonempty-type-eq-decl nil euclidean_division nil )
(rem const-decl "{r: mod(b) | EXISTS q: x = b * q + r}"
modulo_arithmetic nil )
(IFF const-decl "[bool, bool -> bool]" booleans nil )
(times_div_cancel1 formula-decl nil extra_real_props nil )
(rat_plus_rat_is_rat application-judgement "rat" rationals nil )
(rat_minus_rat_is_rat application-judgement "rat" rationals nil )
(both_sides_div_pos_lt1 formula-decl nil real_props nil )
(posreal nonempty-type-eq-decl nil real_types nil )
(both_sides_times_pos_le1 formula-decl nil real_props nil )
(real_minus_real_is_real application-judgement "real" reals nil )
(both_sides_div_pos_le1 formula-decl nil real_props nil )
(rem_floor formula-decl nil modulo_arithmetic nil )
(expt_plus formula-decl nil exponentiation nil )
(real_plus_real_is_real application-judgement "real" reals nil )
(nnint_plus_posint_is_posint application-judgement "posint"
integers nil )
(even_minus_odd_is_odd application-judgement "odd_int" integers
nil )
(minus_nzint_is_nzint application-judgement "nzint" integers nil )
(both_sides_times_pos_ge1_imp formula-decl nil extra_real_props
nil )
(posint_times_posint_is_posint application-judgement "posint"
integers nil )
(nonneg_int nonempty-type-eq-decl nil integers nil )
(posnat nonempty-type-eq-decl nil integers nil )
(vNum const-decl "posnat" float nil )
(Fnormal? const-decl "bool" float nil )
(Fbounded? const-decl "bool" float nil )
(Fsubnormal? const-decl "bool" float nil )
(posrat_div_posrat_is_posrat application-judgement "posrat"
rationals nil )
(expt_inverse formula-decl nil exponentiation nil )
(nzreal nonempty-type-eq-decl nil reals nil )
(floor_0 formula-decl nil floor_ceil nil )
(upto_induction formula-decl nil bounded_nat_inductions nil )
(pred type-eq-decl nil defined_types nil )
(real_le_is_total_order name-judgement "(total_order?[real])"
real_props nil )
(posint_exp application-judgement "posint" exponentiation nil )
(nnint_times_nnint_is_nnint application-judgement "nonneg_int"
integers nil )
(floor_int formula-decl nil floor_ceil nil )
(upto nonempty-type-eq-decl nil naturalnumbers nil )
(nonneg_floor_is_nat application-judgement "nat" floor_ceil nil )
(mult_divides1 application-judgement "(divides(n))" divides nil )
(mult_divides2 application-judgement "(divides(m))" divides nil )
(pos const-decl "sign_rep" enumerated_type_defs nil )
(neg const-decl "sign_rep" enumerated_type_defs nil )
(expt_x0 formula-decl nil exponentiation nil )
(neg_times_neg formula-decl nil real_props nil )
(expt_x1 formula-decl nil exponentiation nil )
(minus_int_is_int application-judgement "int" integers nil )
(times_div_cancel2 formula-decl nil extra_real_props nil )
(rat_abs_is_nonneg application-judgement "{r: nonneg_rat | r >= q}"
real_defs 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 )
(minus_odd_is_odd application-judgement "odd_int" integers nil )
(nnrat_times_nnrat_is_nnrat application-judgement "nonneg_rat"
rationals nil )
(nil application-judgement "below(m)" mod nil )
(below type-eq-decl nil naturalnumbers nil )
(sign_of const-decl "sign_rep" fp_round_aux nil )
(sign_rep type-eq-decl nil enumerated_type_defs nil )
(floor const-decl "{i | i <= x & x < i + 1}" floor_ceil nil )
(<= const-decl "bool" reals nil )
(mod const-decl "{k | abs(k) < abs(j)}" mod nil )
(nonzero_integer nonempty-type-eq-decl nil integers nil )
(value_digit const-decl "nonneg_real" IEEE_854_values nil )
(digits type-eq-decl nil IEEE_854_values nil )
(E_min formal-const-decl "integer" IEEE_link nil )
(Sum def-decl "real" sum_hack nil )
(nonzero_real nonempty-type-eq-decl nil reals nil )
(alpha formal-const-decl "integer" IEEE_link nil )
(E_max_gt_E_min formula-decl nil IEEE_854 nil )
(both_sides_div1 formula-decl nil real_props nil )
(rat_times_rat_is_rat application-judgement "rat" rationals nil )
(int_minus_int_is_int application-judgement "int" integers nil )
(value const-decl "real" IEEE_854_values nil )
(int_abs_is_nonneg application-judgement "{j: nonneg_int | j >= i}"
real_defs nil )
(posrat_exp application-judgement "posrat" exponentiation nil )
(nnrat_exp application-judgement "nnrat" exponentiation nil )
(posint_plus_nnint_is_posint application-judgement "posint"
integers nil ))
nil ))
(value_nonzero_bis_TCC1 0
(value_nonzero_bis_TCC1-1 nil 3321634233 ("" (subtype-tcc) nil 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 )
(nat_exp application-judgement "nat" exponentiation nil )
(real_ge_is_total_order name-judgement "(total_order?[real])"
real_props nil )
(zero_hat formula-decl nil exponent_props "reals/" )
(b const-decl "Format" IEEE_link nil )
(radix formal-const-decl "above(1)" IEEE_link nil )
(above nonempty-type-eq-decl nil integers 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 )
(vNum const-decl "posnat" float nil )
(Fbounded? const-decl "bool" float nil )
(/= const-decl "boolean" notequal nil )
(minus_int_is_int application-judgement "int" integers nil )
(int_minus_int_is_int application-judgement "int" integers nil )
(int_plus_int_is_int application-judgement "int" integers nil ))
nil ))
(value_nonzero_bis_TCC2 0
(value_nonzero_bis_TCC2-1 nil 3321634271
("" (skeep)
(("" (lemma "E_max_gt_E_min" ) (("" (propax) nil nil )) nil )) nil )
((E_min formal-const-decl "integer" IEEE_link nil )
(E_max formal-const-decl "integer" IEEE_link nil )
(alpha formal-const-decl "integer" IEEE_link nil )
(integer nonempty-type-from-decl nil integers nil )
(p formal-const-decl "above(1)" IEEE_link nil )
(radix formal-const-decl "above(1)" IEEE_link nil )
(above nonempty-type-eq-decl nil integers 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 )
(E_max_gt_E_min formula-decl nil IEEE_854 nil ))
nil ))
(value_nonzero_bis 0
(value_nonzero_bis-1 nil 3321634234
("" (skeep)
(("" (lemma "value_nonzero" )
(("" (inst -1 "float_to_IEEE(Fnormalize(b)(f))" )
(("1" (split)
(("1" (assert ) (("1" (flatten) (("1" (assert ) nil nil )) nil ))
nil )
("2" (expand "zero?" )
(("2" (assert ) (("2" (grind-reals) nil nil )) nil )) nil ))
nil )
("2" (assert ) nil nil ))
nil ))
nil ))
nil )
((E_min formal-const-decl "integer" IEEE_link nil )
(E_max formal-const-decl "integer" IEEE_link nil )
(integer nonempty-type-from-decl nil integers nil )
(p formal-const-decl "above(1)" IEEE_link nil )
(radix formal-const-decl "above(1)" IEEE_link nil )
(above nonempty-type-eq-decl nil integers 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 )
(value_nonzero formula-decl nil IEEE_854_values nil )
(real_le_is_total_order name-judgement "(total_order?[real])"
real_props nil )
(zero? const-decl "bool" IEEE_854_values nil )
(float_to_IEEE const-decl "{x: (finite?) | FtoR(f) = value(x)}"
IEEE_link nil )
(value const-decl "real" IEEE_854_values nil )
(finite? adt-recognizer-decl "[fp_num -> boolean]" IEEE_854_values
nil )
(fp_num type-decl nil IEEE_854_values nil )
(< const-decl "bool" reals nil ) (>= const-decl "bool" reals nil )
(nonneg_real nonempty-type-eq-decl nil real_types nil )
(AND const-decl "[bool, bool -> bool]" booleans nil )
(numfield nonempty-type-eq-decl nil number_fields nil )
(- const-decl "[numfield -> numfield]" number_fields nil )
(abs const-decl "{n: nonneg_real | n >= m AND n >= -m}" real_defs
nil )
(FtoR const-decl "real" float nil )
(Fcanonic? const-decl "bool" float nil )
(= const-decl "[T, T -> boolean]" equalities nil )
(<= const-decl "bool" reals nil )
(Fnormalize def-decl
"{x: (Fcanonic?(b)) | FtoR(x) = FtoR(f):: real AND Fexp(x) <= Fexp(f)}"
float nil )
(OR const-decl "[bool, bool -> bool]" booleans nil )
(/= const-decl "boolean" notequal nil )
(^ const-decl "real" exponentiation nil )
(+ const-decl "[numfield, numfield -> numfield]" number_fields nil )
(f skolem-const-decl "float[radix]" IEEE_link nil )
(b const-decl "Format" IEEE_link nil )
(Fbounded? const-decl "bool" float nil )
(float type-eq-decl nil float nil )
(Format type-eq-decl nil float nil )
(nat nonempty-type-eq-decl nil naturalnumbers nil )
(real_lt_is_strict_total_order name-judgement
"(strict_total_order?[real])" real_props nil )
(nnrat_exp application-judgement "nnrat" exponentiation nil )
(posrat_exp application-judgement "posrat" exponentiation nil )
(int_plus_int_is_int application-judgement "int" integers nil ))
shostak))
(Sterbenz_bis 0
(Sterbenz_bis-1 nil 3321634826
("" (skeep)
(("" (lemma "Sterbenz" )
(("" (inst -1 "b" "IEEE_to_float(ieee)" "IEEE_to_float(ieee2)" )
(("" (split)
(("1"
(inst 1
"float_to_IEEE(Fnormalize(b)(Fminus(IEEE_to_float(ieee2), IEEE_to_float(ieee))))" )
(("1"
(case "value(float_to_IEEE(Fnormalize(b)
(Fminus
(IEEE_to_float(ieee2),
IEEE_to_float(ieee)))))=FtoR(Fnormalize(b)
(Fminus
(IEEE_to_float(ieee2),
IEEE_to_float(ieee))))")
(("1" (copy -2)
(("1" (rewrite -2)
(("1" (rewrite "FnormalizeCorrect" )
(("1" (rewrite "FminusCorrect" )
(("1" (assert ) nil nil )) nil ))
nil ))
nil ))
nil )
("2" (hide 2) (("2" (assert ) nil nil )) nil ))
nil )
("2" (lemma "E_max_gt_E_min" )
(("2" (rewrite "FnormalizeCorrect" )
(("2" (rewrite "FminusCorrect" )
(("2"
(trans-ineq 1 "abs(FtoR(IEEE_to_float(ieee2)))"
:strict 2)
(("1" (expand "abs" ) (("1" (grind-reals) nil nil ))
nil )
("2" (assert ) nil nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2" (assert ) nil nil ) ("3" (assert ) nil nil )
("4" (assert ) nil nil ) ("5" (assert ) nil nil ))
nil ))
nil ))
nil ))
nil )
((radix formal-const-decl "above(1)" IEEE_link nil )
(above nonempty-type-eq-decl nil integers 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 )
(Sterbenz formula-decl nil float nil )
(E_max_gt_E_min formula-decl nil IEEE_854 nil )
(alpha formal-const-decl "integer" IEEE_link nil )
(div_mult_pos_le1 formula-decl nil real_props nil )
(- const-decl "[numfield, numfield -> numfield]" number_fields nil )
(real_gt_is_strict_total_order name-judgement
"(strict_total_order?[real])" real_props nil )
(FminusCorrect formula-decl nil float nil )
(real_minus_real_is_real application-judgement "real" reals nil )
(real_le_is_total_order name-judgement "(total_order?[real])"
real_props nil )
(real_div_nzreal_is_real application-judgement "real" reals nil )
(real_times_real_is_real application-judgement "real" reals nil )
(FnormalizeCorrect formula-decl nil float nil )
(float_to_IEEE const-decl "{x: (finite?) | FtoR(f) = value(x)}"
IEEE_link nil )
(Fcanonic? const-decl "bool" float nil )
(<= const-decl "bool" reals nil )
(Fnormalize def-decl
"{x: (Fcanonic?(b)) | FtoR(x) = FtoR(f):: real AND Fexp(x) <= Fexp(f)}"
float nil )
(ieee skolem-const-decl "(finite?)" IEEE_link nil )
(ieee2 skolem-const-decl "(finite?)" IEEE_link nil )
(Fminus const-decl "float" float nil )
(real_lt_is_strict_total_order name-judgement
"(strict_total_order?[real])" real_props nil )
(nnrat_exp application-judgement "nnrat" exponentiation nil )
(posrat_exp application-judgement "posrat" exponentiation nil )
(int_plus_int_is_int application-judgement "int" integers nil )
(IEEE_to_float const-decl "{x: (Fbounded?(b)) |
value(ieee) = FtoR(x):: real AND
abs(FtoR(x)) < radix ^ (E_max + 1)}" IEEE_link nil)
(+ const-decl "[numfield, numfield -> numfield]" number_fields nil )
(^ const-decl "real" exponentiation nil )
(/= const-decl "boolean" notequal nil )
(OR const-decl "[bool, bool -> bool]" booleans nil )
(abs const-decl "{n: nonneg_real | n >= m AND n >= -m}" real_defs
nil )
(- const-decl "[numfield -> numfield]" number_fields nil )
(numfield nonempty-type-eq-decl nil number_fields nil )
(nonneg_real nonempty-type-eq-decl nil real_types nil )
(>= const-decl "bool" reals nil ) (< const-decl "bool" reals nil )
(FtoR const-decl "real" float nil )
(value const-decl "real" IEEE_854_values nil )
(= const-decl "[T, T -> boolean]" equalities nil )
(AND const-decl "[bool, bool -> bool]" booleans nil )
(Fbounded? const-decl "bool" float nil )
(finite? adt-recognizer-decl "[fp_num -> boolean]" IEEE_854_values
nil )
(fp_num type-decl nil IEEE_854_values nil )
(E_min formal-const-decl "integer" IEEE_link nil )
(E_max formal-const-decl "integer" IEEE_link nil )
(integer nonempty-type-from-decl nil integers nil )
(p formal-const-decl "above(1)" IEEE_link nil )
(float type-eq-decl nil float nil )
(b const-decl "Format" IEEE_link nil )
(Format type-eq-decl nil float nil )
(nat nonempty-type-eq-decl nil naturalnumbers nil ))
shostak))
(Roundings_eq_pos_TCC1 0
(Roundings_eq_pos_TCC1-1 nil 3321716069 ("" (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 )
(real_le_is_total_order name-judgement "(total_order?[real])"
real_props nil )
(/= const-decl "boolean" notequal nil ))
nil ))
(Roundings_eq_pos_TCC2 0
(Roundings_eq_pos_TCC2-1 nil 3321716069
("" (skeep)
(("" (lemma "E_max_gt_E_min" ) (("" (propax) nil nil )) nil )) nil )
((E_min formal-const-decl "integer" IEEE_link nil )
(E_max formal-const-decl "integer" IEEE_link nil )
(alpha formal-const-decl "integer" IEEE_link nil )
(integer nonempty-type-from-decl nil integers nil )
(p formal-const-decl "above(1)" IEEE_link nil )
(radix formal-const-decl "above(1)" IEEE_link nil )
(above nonempty-type-eq-decl nil integers 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 )
(E_max_gt_E_min formula-decl nil IEEE_854 nil ))
nil ))
(Roundings_eq_pos 0
(Roundings_eq_pos-2 nil 3321716129
("" (skeep)
(("" (expand "RND_Min" )
(("" (grind-reals)
(("" (rewrite "RND_aux_alt_def" )
(("" (expand "RND_aux_alt" )
(("" (assert )
(("" (expand "b" )
(("" (expand "vNum" )
(("" (rewrite "expt_plus" :dir rl)
((""
(case-replace
"((-(-E_min - 1 + p) - 1) + p)=E_min" )
(("1" (grind-reals)
(("1" (hide -1)
(("1" (expand "fp_round" )
(("1" (expand "over_under?" )
(("1"
(expand "abs" 2)
(("1"
(grind-reals)
(("1"
(case-replace "floor(0)=0" )
(("1"
(expand "FtoR" )
(("1" (assert ) nil nil ))
nil )
("2" (assert ) nil nil ))
nil )
("2"
(expand "round_exceptions" )
(("2"
(expand "round_exceptions_x" )
(("2"
(expand "abs" 3)
(("2"
(grind-reals)
(("1"
(hide 2)
(("1"
(flip-ineq -4)
(("1"
(rewrite
"max_fp_correct" )
(("1"
(trans-ineq
1
"radix ^ E_min" )
(("1"
(assert )
nil
nil )
("2"
(trans-ineq
1
"radix ^ E_max" )
(("1"
(rewrite
"Exp_increq_1" )
(("1"
(lemma
" E_max_gt_E_min" )
(("1"
(assert )
nil
nil ))
nil ))
nil )
("2"
(move-terms
1
r
2)
(("2"
(trans-ineq
1
"radix ^ E_max+radix ^ E_max" )
(("1"
(move-terms
1
r
1)
(("1"
(assert )
(("1"
(rewrite
"Exp_increq_1" )
nil
nil ))
nil ))
nil )
("2"
(rewrite
"expt_plus" )
(("2"
(assert )
nil
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2"
(lemma " E_max_gt_E_min" )
(("2"
(expand "underflow" )
(("2"
(grind-reals)
(("2"
(expand
"round_under" )
(("2"
(expand "FtoR" )
(("2"
(case-replace
"-(-E_min - 1 + p)=(1 + E_min - p)" )
(("1"
(div-by
4
"radix ^ (1 + E_min - p)" )
(("1"
(expand
"round" )
(("1"
(assert )
nil
nil ))
nil ))
nil )
("2"
(assert )
nil
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2" (flip-ineq 2)
(("2" (expand "fp_round" )
(("2" (expand "over_under?" )
(("2"
(grind-reals)
(("1"
(expand "round_exceptions" )
(("1"
(expand "round_exceptions_x" )
(("1"
(expand "overflow" )
(("1"
(grind-reals)
(("1"
(lemma " max_fp_correct" )
(("1"
(expand "abs" )
(("1"
(expand "FtoR" )
(("1"
(case-replace
"floor(ln(r * radix / radix ^ p) / ln(radix))=(E_max + 1) - p" )
(("1"
(case-replace
"floor(r * radix ^ (-((E_max + 1) - p)))=radix^p-1" )
(("1"
(rewrite -3)
(("1"
(assert )
(("1"
(rewrite
"expt_plus"
:dir
rl)
nil
nil ))
nil ))
nil )
("2"
(hide 2 -1)
(("2"
(case
" radix ^ p - 1<= r * radix ^ (-((E_max + 1) - p))" )
(("1"
(case
"r * radix ^ (-((E_max + 1) - p)) < (radix ^ p-1)+1" )
(("1"
(assert )
(("1"
(case
"FORALL (g:real,i:int): g<i+1 => i<= g=> floor(g)=i" )
(("1"
(inst?)
(("1"
(assert )
nil
nil ))
nil )
("2"
(hide-all-but
1)
(("2"
(skosimp*)
(("2"
(assert )
nil
nil ))
nil ))
nil ))
nil ))
nil )
("2"
(hide 2 -1)
(("2"
(assert )
(("2"
(trans-ineq
1
"radix ^ (1 + E_max)*radix ^ (-(1 + E_max - p))"
:strict
1)
(("1"
(grind-reals)
nil
nil )
("2"
(rewrite
"expt_plus"
:dir
rl)
(("2"
(assert )
nil
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2"
(div-by
1
"radix ^ (-((E_max + 1) - p))" )
(("2"
(trans-ineq
1
" max_pos" )
(("1"
(mult-by
-8
"radix ^ (-(1 + E_max - p))" )
(("1"
(grind-reals)
nil
nil ))
nil )
("2"
(mult-by
1
"radix ^ (-((E_max + 1) - p))" )
(("2"
(rewrite
-1)
(("2"
(assert )
(("2"
(rewrite
"expt_plus"
:dir
rl)
(("2"
(rewrite
"expt_plus"
:dir
rl)
(("2"
(assert )
nil
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("3"
(assert )
nil
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2"
(hide 2)
(("2"
(case
"FORALL (g:real,i:int): g<i+1 => i<= g=> floor(g)=i" )
(("1"
(inst?)
(("1"
(split)
(("1"
(propax)
nil
nil )
("2"
(mult-by
1
"ln(radix)" )
(("1"
(rewrite
"ln_expt"
:dir
rl)
(("1"
(lemma
"ln_increasing" )
(("1"
(expand
"increasing?" )
(("1"
(inst?)
(("1"
(split)
(("1"
(propax)
nil
nil )
("2"
(mult-by
1
"radix ^ p" )
(("2"
(rewrite
"expt_plus"
:dir
rl)
(("2"
(trans-ineq
1
" max_pos*radix" )
(("1"
(mult-by
-2
"radix" )
(("1"
(grind-reals)
nil
nil ))
nil )
("2"
(rewrite
-1)
(("2"
(assert )
(("2"
(move-terms
1
r
2)
(("2"
(trans-ineq
1
"radix ^ (1 + E_max)+radix ^ (1 + E_max)" )
(("1"
(move-terms
1
r
1)
(("1"
(assert )
(("1"
(trans-ineq
1
"radix ^ ((1 + E_max - p)+1)" )
(("1"
(lemma
"expt_plus" )
(("1"
(inst
-1
"(1 + E_max - p)"
"1"
"radix" )
(("1"
(rewrite
"expt_x1" )
(("1"
(assert )
nil
nil ))
nil ))
nil ))
nil )
("2"
(rewrite
"Exp_increq_1" )
nil
nil ))
nil ))
nil ))
nil )
("2"
(grind-reals)
(("2"
(div-by
1
"radix ^ (1 + E_max)" )
(("2"
(assert )
nil
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("3"
(div-by
1
"radix" )
(("3"
(assert )
nil
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2"
(case
"ln(radix) > 0" )
(("1"
(split)
(("1"
(assert )
nil
nil )
("2"
(propax)
nil
nil ))
nil )
("2"
(lemma
"ln_strict_increasing" )
(("2"
(expand
"strict_increasing?" )
(("2"
(inst
-1
"1"
"radix" )
(("2"
(rewrite
"ln_1" )
(("2"
(assert )
nil
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("3"
(mult-by
1
"ln(radix)" )
(("1"
(rewrite
"ln_expt"
:dir
rl)
(("1"
(lemma
"ln_strict_increasing" )
(("1"
(expand
"strict_increasing?" )
(("1"
(inst?)
(("1"
(split)
(("1"
(propax)
nil
nil )
("2"
(mult-by
1
"radix ^ p" )
(("2"
(rewrite
"expt_plus"
:dir
rl)
(("2"
(case-replace
"radix ^ (2 + E_max)= radix ^ (1 + E_max)*radix" )
(("1"
(grind-reals)
nil
nil )
("2"
(lemma
"expt_plus" )
(("2"
(inst
-1
"1+E_max"
"1"
"radix" )
(("2"
(rewrite
"expt_x1" )
(("2"
(assert )
nil
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2"
(lemma
"ln_strict_increasing" )
(("2"
(expand
"strict_increasing?" )
(("2"
(inst
-1
"1"
"radix" )
(("2"
(rewrite
"ln_1" )
(("2"
(assert )
nil
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2"
(hide-all-but 1)
(("2"
(skosimp*)
(("2"
(assert )
nil
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2"
(flip-ineq 2)
(("2"
(expand "round_scaled" )
(("2"
(case-replace
"scale(abs(r))=floor(ln(r * radix / radix ^ p) / ln(radix))" )
(("1"
(expand "FtoR" )
(("1"
(expand "round" )
(("1" (assert ) nil nil ))
nil ))
nil )
("2"
(hide 2 3)
(("2"
(expand "abs" 1)
(("2"
(expand "scale" )
(("2"
(move-terms 1 l (1 3))
(("2"
(lemma "Exp_of_unique" )
(("2"
(inst?)
(("2"
(inst -1 "r" )
(("2"
(split)
(("1"
(propax)
nil
nil )
("2"
(assert )
nil
nil )
("3"
(assert )
nil
nil )
("4"
(lemma
"hathat_int" )
(("4"
(inst
-1
"(floor(ln(r * radix / radix ^ p) / ln(radix)) - 1 + p)" )
(("4"
(rewrite
-1
:dir
rl)
(("4"
(hide
-1
2
-3)
(("4"
(expand
"^^" )
(("4"
(trans-ineq
1
"exp(ln(r * radix / radix ^ p) / ln(radix) * ln(radix) +
ln(radix) * p
- ln(radix))")
(("1"
(lemma
"exp_increasing" )
(("1"
(expand
"increasing?" )
(("1"
(inst?)
(("1"
(split)
(("1"
(propax)
nil
nil )
("2"
(hide
2)
(("2"
(assert )
(("2"
(div-by
1
"ln(radix)" )
(("1"
(assert )
nil
nil )
("2"
(case
"ln(radix) > 0" )
(("1"
(split)
(("1"
(assert )
nil
nil )
("2"
(propax)
nil
nil ))
nil )
("2"
(lemma
"ln_strict_increasing" )
(("2"
(expand
"strict_increasing?" )
(("2"
(inst
-1
"1"
"radix" )
(("2"
(split)
(("1"
(rewrite
"ln_1" )
(("1"
(assert )
nil
nil ))
nil )
("2"
(assert )
nil
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2"
(rewrite
"ln_div" )
(("2"
(rewrite
"hathat_int"
:dir
rl)
(("2"
(expand
"^^" )
(("2"
(rewrite
"ln_exp" )
(("2"
(case-replace
"ln(r * radix) + ln(radix) * p - p * ln(radix) - ln(radix)
= ln(r * radix)-ln(radix)")
(("1"
(rewrite
"ln_div"
:dir
rl)
(("1"
(case-replace
"r * radix / radix=r" )
(("1"
(rewrite
"exp_ln" )
(("1"
(assert )
nil
nil ))
nil )
("2"
(field
1)
nil
nil ))
nil ))
nil )
("2"
(assert )
nil
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("5"
(hide 2 -3)
(("5"
(rewrite
"hathat_int"
:dir
rl)
(("5"
(rewrite
"hathat_int"
:dir
rl)
(("5"
(expand
"^^" )
(("5"
(trans-ineq
1
"exp((ln(r * radix / exp(p * ln(radix))) / ln(radix)-1) *
ln(radix)
+ ln(radix) * p)"
:strict
2)
(("1"
(rewrite
"ln_div" )
(("1"
(rewrite
"ln_exp" )
(("1"
(rewrite
"ln_mult" )
(("1"
(case-replace
"(((ln(r) + ln(radix) - p * ln(radix)) / ln(radix) - 1) *
ln(radix)
+ ln(radix) * p)=ln(r)")
(("1"
(rewrite
"exp_ln" )
(("1"
(assert )
nil
nil ))
nil )
("2"
(field
1)
nil
nil ))
nil ))
nil ))
nil ))
nil )
("2"
(lemma
"exp_strict_increasing" )
(("2"
(expand
"strict_increasing?" )
(("2"
(inst?)
(("2"
(split)
(("1"
(propax)
nil
nil )
("2"
(hide
2)
(("2"
(assert )
(("2"
(div-by
1
"ln(radix)" )
(("1"
(field
1)
nil
nil )
("2"
(case
"ln(radix) > 0" )
(("1"
(split)
(("1"
(assert )
nil
nil )
("2"
(propax)
nil
nil ))
nil )
("2"
(lemma
"ln_strict_increasing" )
(("2"
(expand
"strict_increasing?" )
(("2"
(inst
-1
"1"
"radix" )
(("2"
(split)
(("1"
(rewrite
"ln_1" )
(("1"
(assert )
nil
nil ))
nil )
("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 )
("2" (assert ) nil nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
((RND_Min const-decl "(Fcanonic?(b))" float nil )
(RND_aux_alt_def formula-decl nil float 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 )
(above nonempty-type-eq-decl nil integers nil )
(radix formal-const-decl "above(1)" IEEE_link nil )
(int_minus_int_is_int application-judgement "int" integers nil )
(posrat_times_posrat_is_posrat application-judgement "posrat"
rationals nil )
(vNum const-decl "posnat" float nil )
(= const-decl "[T, T -> boolean]" equalities nil )
(scale const-decl
"{i: int | b ^ (i + p - 1) <= x & x < b ^ (i + p)}"
fp_round_aux nil )
(Exp_of const-decl "{i: int | b ^ i <= x & x < b ^ (i + 1)}"
fp_round_aux nil )
(exp const-decl "{py | x = ln(py)}" ln_exp "lnexp_fnd/" )
(both_sides_plus_le1 formula-decl nil real_props nil )
(both_sides_minus_le1 formula-decl nil real_props nil )
(exp_increasing formula-decl nil ln_exp "lnexp_fnd/" )
(ln_exp formula-decl nil ln_exp "lnexp_fnd/" )
(exp_ln formula-decl nil ln_exp "lnexp_fnd/" )
(div_cancel3 formula-decl nil real_props nil )
(ln_div formula-decl nil ln_exp "lnexp_fnd/" )
(pos_times_gt formula-decl nil real_props nil )
(^^ const-decl "nnreal" expt "lnexp_fnd/" )
(hathat_int formula-decl nil float nil )
(exp_strict_increasing formula-decl nil ln_exp "lnexp_fnd/" )
(both_sides_div_pos_lt1 formula-decl nil real_props nil )
(div_cancel1 formula-decl nil real_props nil )
(both_sides_plus_lt1 formula-decl nil real_props nil )
(ln_mult formula-decl nil ln_exp "lnexp_fnd/" )
(bijective? const-decl "bool" functions nil )
(id const-decl "(bijective?[T, T])" identity nil )
(TRUE const-decl "bool" booleans nil )
(NOT const-decl "[bool -> bool]" booleans nil )
(nnreal type-eq-decl nil real_types nil )
(pos_div_ge formula-decl nil real_props nil )
(neg_times_ge formula-decl nil real_props nil )
(Exp_of_unique formula-decl nil fp_round_aux nil )
(round_scaled const-decl "real" fp_round_aux nil )
(overflow const-decl "[real, exception]" over_under nil )
(both_sides_times_pos_ge1_imp formula-decl nil extra_real_props
nil )
(div_mult_neg_lt1 formula-decl nil real_props nil )
(real_plus_real_is_real application-judgement "real" reals nil )
(div_mult_pos_lt1 formula-decl nil real_props nil )
(odd_minus_even_is_odd application-judgement "odd_int" integers
nil )
(even_minus_even_is_even application-judgement "even_int" integers
nil )
(real_minus_real_is_real application-judgement "real" reals nil )
(ln_increasing formula-decl nil ln_exp "lnexp_fnd/" )
(both_sides_times_pos_le1_imp formula-decl nil extra_real_props
nil )
(increasing? const-decl "bool" real_fun_preds "reals/" )
(ln_expt formula-decl nil ln_exp "lnexp_fnd/" )
(ln_strict_increasing formula-decl nil ln_exp "lnexp_fnd/" )
(ln_1 formula-decl nil ln_exp "lnexp_fnd/" )
(strict_increasing? const-decl "bool" real_fun_preds "reals/" )
(lt_times_lt_pos2 formula-decl nil real_props nil )
(div_mult_pos_le1 formula-decl nil real_props nil )
(posreal_times_posreal_is_posreal application-judgement "posreal"
real_types nil )
(rat_div_nzrat_is_rat application-judgement "rat" rationals nil )
(gt_times_gt_pos2 formula-decl nil real_props nil )
(both_sides_times_pos_gt1 formula-decl nil real_props nil )
(minus_odd_is_odd application-judgement "odd_int" integers nil )
(le_minus_le formula-decl nil real_props nil )
(expt_x0 formula-decl nil exponentiation nil )
(div_cancel2 formula-decl nil real_props nil )
(both_sides_times_pos_le1 formula-decl nil real_props nil )
(both_sides_div_pos_le1 formula-decl nil real_props nil )
(nznum nonempty-type-eq-decl nil number_fields nil )
(/ const-decl "[numfield, nznum -> numfield]" number_fields nil )
(ln const-decl "real" ln_exp "lnexp_fnd/" )
(nnint_times_nnint_is_nnint application-judgement "nonneg_int"
integers nil )
(even_times_int_is_even application-judgement "even_int" integers
nil )
(mult_divides1 application-judgement "(divides(n))" divides nil )
(mult_divides2 application-judgement "(divides(m))" divides nil )
(div_mult_pos_ge1 formula-decl nil real_props nil )
(pos_times_ge formula-decl nil real_props nil )
(over_under? const-decl "bool" over_under nil )
(zero_times1 formula-decl nil real_props nil )
(zero_le_zero formula-decl nil real_props nil )
(int_abs_is_nonneg application-judgement "{j: nonneg_int | j >= i}"
real_defs nil )
(nonneg_floor_is_nat application-judgement "nat" floor_ceil nil )
(nnrat_times_nnrat_is_nnrat application-judgement "nonneg_rat"
rationals nil )
(FtoR const-decl "real" float nil )
(AND const-decl "[bool, bool -> bool]" booleans nil )
(<= const-decl "bool" reals nil ) (< const-decl "bool" reals nil )
(floor const-decl "{i | i <= x & x < i + 1}" floor_ceil nil )
(round_exceptions_x const-decl "[real, exception]" real_to_fp nil )
(real_gt_is_strict_total_order name-judgement
"(strict_total_order?[real])" real_props nil )
(E_max formal-const-decl "integer" IEEE_link nil )
(alpha formal-const-decl "integer" IEEE_link nil )
(E_max_gt_E_min formula-decl nil IEEE_854 nil )
(max_pos const-decl "posreal" IEEE_854_values nil )
(posreal nonempty-type-eq-decl nil real_types nil )
(nonneg_real nonempty-type-eq-decl nil real_types nil )
(>= const-decl "bool" reals nil )
(^ const-decl "real" exponentiation nil )
(OR const-decl "[bool, bool -> bool]" booleans nil )
(IFF const-decl "[bool, bool -> bool]" booleans nil )
(posrat_plus_nnrat_is_posrat application-judgement "posrat"
rationals nil )
(expt_x1 formula-decl nil exponentiation nil )
(le_times_le_pos formula-decl nil real_props nil )
(Exp_increq_1 formula-decl nil float nil )
(real_ge_is_total_order name-judgement "(total_order?[real])"
real_props nil )
(IMPLIES const-decl "[bool, bool -> bool]" booleans nil )
(rat_minus_rat_is_rat application-judgement "rat" rationals nil )
(max_fp_correct formula-decl nil IEEE_854_values nil )
(underflow const-decl "[real, exception]" over_under nil )
(round_under const-decl "real" over_under nil )
(times_div_cancel2 formula-decl nil extra_real_props nil )
(times_div_cancel1 formula-decl nil extra_real_props nil )
(to_neg adt-constructor-decl "(to_neg?)" enumerated_type_defs nil )
(to_neg? adt-recognizer-decl "[rounding_mode -> boolean]"
enumerated_type_defs nil )
(round const-decl "integer" round nil )
(rounding_mode type-decl nil enumerated_type_defs nil )
(* const-decl "[numfield, numfield -> numfield]" number_fields nil )
(nonzero_real nonempty-type-eq-decl nil reals nil )
(both_sides_div1 formula-decl nil real_props nil )
(rat_times_rat_is_rat application-judgement "rat" rationals nil )
(round_exceptions const-decl "real" real_to_fp nil )
(abs const-decl "{n: nonneg_real | n >= m AND n >= -m}" real_defs
nil )
(fp_round const-decl "real" real_to_fp nil )
(real_div_nzreal_is_real application-judgement "real" reals nil )
(expt_plus formula-decl nil exponentiation 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 )
(integer nonempty-type-from-decl nil integers nil )
(E_min formal-const-decl "integer" IEEE_link nil )
(p formal-const-decl "above(1)" IEEE_link nil )
(/= const-decl "boolean" notequal nil )
(nzreal nonempty-type-eq-decl nil reals nil )
(b const-decl "Format" IEEE_link nil )
(RND_aux_alt const-decl "(Fcanonic?(b))" float nil )
(minus_int_is_int application-judgement "int" integers nil )
(real_times_real_is_real application-judgement "real" reals nil )
(nnreal_times_nnreal_is_nnreal application-judgement "nnreal"
real_types nil )
(posint_exp application-judgement "posint" exponentiation nil )
(posrat_exp application-judgement "posrat" exponentiation nil )
(int_plus_int_is_int application-judgement "int" integers nil )
(nnrat_exp application-judgement "nnrat" 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 ))
nil ))
(Roundings_eq_neg_TCC1 0
(Roundings_eq_neg_TCC1-1 nil 3321717384
("" (skeep)
(("" (lemma "E_max_gt_E_min" ) (("" (propax) nil nil )) nil )) nil )
((E_min formal-const-decl "integer" IEEE_link nil )
(E_max formal-const-decl "integer" IEEE_link nil )
(alpha formal-const-decl "integer" IEEE_link nil )
(integer nonempty-type-from-decl nil integers nil )
(p formal-const-decl "above(1)" IEEE_link nil )
(radix formal-const-decl "above(1)" IEEE_link nil )
(above nonempty-type-eq-decl nil integers 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 )
(E_max_gt_E_min formula-decl nil IEEE_854 nil ))
nil ))
(Roundings_eq_neg 0
(Roundings_eq_neg-1 nil 3321717385
("" (skeep)
(("" (expand "RND_Max" )
(("" (rewrite "FoppCorrect" )
(("" (expand "RND_Min" )
(("" (grind-reals)
(("1" (rewrite "FoppCorrect" )
(("1" (lemma "round_value2" )
(("1" (inst -1 "float_to_IEEE(RND_aux(b)(r))" "to_pos" )
(("1" (split)
(("1" (assert ) nil nil ) ("2" (propax) nil nil ))
nil )
("2" (trans-ineq 1 "max_pos" :strict 2)
(("1" (assert ) nil nil )
("2" (rewrite "max_fp_correct" )
(("2" (grind-reals) nil nil )) nil ))
nil ))
nil ))
nil ))
nil )
("2" (rewrite "FpredFoppFsucc" )
(("2" (rewrite "FoppCorrect" )
(("2" (rewrite "FoppCorrect" )
(("2" (assert )
(("2"
(case-replace
"FtoR(Fsucc(b)(RND_aux(b)(r)))=FtoR(RND_aux(b)(r))+Fulp(b)(RND_aux(b)(r))" )
(("1" (rewrite "FulpCanonic" )
(("1" (mult-by 2 "-1" )
(("1" (assert )
(("1" (hide -1)
(("1"
(rewrite "RND_aux_alt_def" )
(("1"
(expand "RND_aux_alt" )
(("1"
(expand "b" )
(("1"
(expand "vNum" )
(("1"
(rewrite "expt_plus" :dir rl)
(("1"
(case-replace
"((-(-E_min - 1 + p) - 1) + p)=E_min" )
(("1"
(grind-reals)
(("1"
(expand "FtoR" )
(("1"
(expand *
"fp_round"
"over_under?" )
(("1"
(expand "abs" )
(("1"
(expand
"round_exceptions" )
(("1"
(expand
"round_exceptions_x" )
(("1"
(expand
"underflow" )
(("1"
(grind-reals)
(("1"
(expand
"round_under" )
(("1"
(expand
"round" )
(("1"
(case-replace
"-(-E_min - 1 + p)=1 + E_min - p" )
(("1"
(div-by
3
"radix ^ (1 + E_min - p)" )
(("1"
(case-replace
" (radix ^ (1 + E_min - p) +
floor(r * radix ^ (-E_min - 1 + p)) * radix ^ (1 + E_min - p))
/ radix ^ (1 + E_min - p)=floor(r * radix ^ (-E_min - 1 + p))+1")
(("1"
(case
"FORALL (g:real): not floor(g)=g => ceiling(g)=floor(g)+1" )
(("1"
(inst?)
(("1"
(split)
(("1"
(assert )
nil
nil )
("2"
(mult-by
-1
" radix ^ (1 + E_min - p)" )
(("2"
(case
"radix ^ (-(1 + E_min - p)) * r * radix ^ (1 + E_min - p)=r" )
(("1"
(assert )
nil
nil )
("2"
(hide-all-but
(1
-5))
(("2"
(div-by
1
"r" )
(("2"
(case
"(radix ^ (-(1 + E_min - p)) * r * radix ^ (1 + E_min - p) / r)=
(radix ^ (-(1 + E_min - p))*radix ^ (1 + E_min - p))")
(("1"
(replace
-1)
(("1"
(rewrite
"expt_plus"
:dir
rl)
nil
nil ))
nil )
("2"
(assert )
nil
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2"
(hide-all-but
1)
(("2"
(skosimp*)
(("2"
(assert )
nil
nil ))
nil ))
nil ))
nil )
("2"
(field
1)
nil
nil ))
nil ))
nil )
("2"
(assert )
nil
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2"
(flip-ineq 2)
(("2"
(hide 1)
(("2"
(name
"a"
"floor(ln(r * radix / radix ^ p) / ln(radix))" )
(("2"
(copy -2)
(("2"
(replace -2)
(("2"
(hide -3)
(("2"
(expand
"fp_round" )
(("2"
(hide -3)
(("2"
(expand
"over_under?" )
(("2"
(expand
"abs" )
(("2"
(expand
"round_scaled" )
(("2"
(expand
"abs" )
(("2"
(expand
"FtoR" )
(("2"
(case-replace
"scale(r)=a" )
(("1"
(div-by
2
"radix ^ a" )
(("1"
(case-replace
"(radix ^ a + floor(r * radix ^ (-a)) * radix ^ a) / radix ^ a
= floor(r * radix ^ (-a)) +1")
(("1"
(expand
"round" )
(("1"
(mult-by
1
"radix ^ (-a)" )
(("1"
(case-replace
"(floor(r * radix ^ (-a)) * radix ^ a * radix ^ (-a))
= (floor(r * radix ^ (-a)))")
(("1"
(assert )
nil
nil )
("2"
(hide-all-but
1)
(("2"
(div-by
1
"(floor(r * radix ^ (-a)))" )
(("2"
(case-replace
"((floor(r * radix ^ (-a)) * radix ^ a * radix ^ (-a)) /
(floor(r * radix ^ (-a)))=radix ^ a * radix ^ (-a))")
(("1"
(rewrite
"expt_plus"
:dir
rl)
nil
nil )
("2"
(field
1)
nil
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2"
(field
1)
nil
nil ))
nil ))
nil )
("2"
(hide
2
3)
(("2"
(expand
"scale" )
(("2"
(move-terms
1
l
(1
3))
(("2"
(lemma
"Exp_of_unique" )
(("2"
(inst?)
(("2"
(inst
-1
"r" )
(("2"
(case
"0 < ln(radix)" )
(("1"
(split)
(("1"
(propax)
nil
nil )
("2"
(assert )
nil
nil )
("3"
(assert )
nil
nil )
("4"
(rewrite
"hathat_int"
:dir
rl)
(("4"
(expand
"^^" )
(("4"
(trans-ineq
1
"exp(ln(radix) *((ln(r * radix / radix ^ p) / ln(radix))) + ln(radix) * p - ln(radix))" )
(("1"
(lemma
"exp_increasing" )
(("1"
(expand
"increasing?" )
(("1"
(inst?)
(("1"
(split)
(("1"
(propax)
nil
nil )
("2"
(hide
2
3)
(("2"
(move-terms
1
l
(2
3))
(("2"
(assert )
(("2"
(div-by
1
"ln(radix)" )
(("2"
(assert )
nil
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2"
(rewrite
"ln_div" )
(("2"
(rewrite
"ln_expt" )
(("2"
(rewrite
"ln_mult" )
(("2"
(assert )
(("2"
(rewrite
"exp_ln" )
(("2"
(assert )
nil
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("5"
(rewrite
"hathat_int"
:dir
rl)
(("5"
(expand
"^^" )
(("5"
(trans-ineq
1
"exp(ln(radix) * (ln(r * radix / radix ^ p) / ln(radix)-1) + ln(radix) * p)"
:strict
2)
(("1"
(rewrite
"ln_div" )
(("1"
(rewrite
"ln_expt" )
(("1"
(rewrite
"ln_mult" )
(("1"
(case-replace
"(ln(radix) *
((ln(r) + ln(radix) - p * ln(radix)) / ln(radix) - 1)
+ ln(radix) * p)=ln(r)")
(("1"
(rewrite
"exp_ln" )
(("1"
(assert )
nil
nil ))
nil )
("2"
(field
1)
nil
nil ))
nil ))
nil ))
nil ))
nil )
("2"
(lemma
"exp_strict_increasing" )
(("2"
(expand
"strict_increasing?" )
(("2"
(inst?)
(("2"
(split)
(("1"
(propax)
nil
nil )
("2"
(hide
2
3)
(("2"
(move-terms
1
l
2)
(("2"
(assert )
(("2"
(div-by
1
"ln(radix)" )
(("2"
(trans-ineq
1
"ln(r * radix / radix ^ p) / ln(radix)-1"
:strict
2)
(("1"
(field
1)
nil
nil )
("2"
(assert )
nil
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2"
(lemma
"ln_strict_increasing" )
(("2"
(expand
"strict_increasing?" )
(("2"
(inst
-1
"1"
"radix" )
(("2"
(rewrite
"ln_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 )
("2"
(lemma "E_max_gt_E_min" )
(("2" (assert ) nil nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2" (rewrite "FsuccDiff" :dir rl)
(("1" (assert ) nil nil )
("2" (lemma "RleRoundedR0" )
(("2"
(inst -1 "isMin?" "b" "RND_Min(b)(r)" "r" )
(("2" (split)
(("1"
(expand "RND_Min" )
(("1" (propax) nil nil ))
nil )
("2" (assert ) nil nil )
("3" (rewrite "RND_Min_isMin" ) nil nil )
("4"
(rewrite "isMin_RoundedMode" )
nil
nil )
("5"
(rewrite "FcanonicBounded" )
nil
nil ))
nil ))
nil ))
nil ))
nil )
("3" (rewrite "FcanonicBounded" ) nil nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
((RND_Max const-decl "(Fcanonic?(b))" float nil )
(FpredFoppFsucc formula-decl nil float nil )
(Fsucc const-decl "float" float nil )
(Fulp const-decl "real" float nil )
(Fbounded? const-decl "bool" float nil )
(real_plus_real_is_real application-judgement "real" reals nil )
(minus_odd_is_odd application-judgement "odd_int" integers nil )
(both_sides_times1 formula-decl nil real_props nil )
(nonzero_real nonempty-type-eq-decl nil reals nil )
(posint_exp application-judgement "posint" exponentiation nil )
(nnreal_times_nnreal_is_nnreal application-judgement "nnreal"
real_types nil )
(minus_int_is_int application-judgement "int" integers nil )
(RND_aux_alt const-decl "(Fcanonic?(b))" float nil )
(vNum const-decl "posnat" float nil )
(ln const-decl "real" ln_exp "lnexp_fnd/" )
(nnint_times_nnint_is_nnint application-judgement "nonneg_int"
integers nil )
(even_times_int_is_even application-judgement "even_int" integers
nil )
(mult_divides1 application-judgement "(divides(n))" divides nil )
(mult_divides2 application-judgement "(divides(m))" divides nil )
(round_scaled const-decl "real" fp_round_aux nil )
(Exp_of const-decl "{i: int | b ^ i <= x & x < b ^ (i + 1)}"
fp_round_aux nil )
(IFF const-decl "[bool, bool -> bool]" booleans nil )
(odd_minus_odd_is_even application-judgement "even_int" integers
nil )
(TRUE const-decl "bool" booleans nil )
(id const-decl "(bijective?[T, T])" identity nil )
(bijective? const-decl "bool" functions nil )
(strict_increasing? const-decl "bool" real_fun_preds "reals/" )
(both_sides_div_pos_lt1 formula-decl nil real_props nil )
(div_mult_pos_lt1 formula-decl nil real_props nil )
(div_mult_pos_le1 formula-decl nil real_props nil )
(exp_strict_increasing formula-decl nil ln_exp "lnexp_fnd/" )
(hathat_int formula-decl nil float nil )
(div_cancel1 formula-decl nil real_props nil )
(zero_times1 formula-decl nil real_props nil )
(pos_times_ge formula-decl nil real_props nil )
(div_mult_pos_ge1 formula-decl nil real_props nil )
(exp const-decl "{py | x = ln(py)}" ln_exp "lnexp_fnd/" )
(real_minus_real_is_real application-judgement "real" reals nil )
(increasing? const-decl "bool" real_fun_preds "reals/" )
(both_sides_plus_le1 formula-decl nil real_props nil )
(both_sides_minus_le1 formula-decl nil real_props nil )
(both_sides_div_pos_le1 formula-decl nil real_props nil )
(div_mult_pos_le2 formula-decl nil real_props nil )
(exp_increasing formula-decl nil ln_exp "lnexp_fnd/" )
(ln_expt formula-decl nil ln_exp "lnexp_fnd/" )
(exp_ln formula-decl nil ln_exp "lnexp_fnd/" )
(ln_mult formula-decl nil ln_exp "lnexp_fnd/" )
(ln_div formula-decl nil ln_exp "lnexp_fnd/" )
(pos_times_gt formula-decl nil real_props nil )
(^^ const-decl "nnreal" expt "lnexp_fnd/" )
(ln_1 formula-decl nil ln_exp "lnexp_fnd/" )
(ln_strict_increasing formula-decl nil ln_exp "lnexp_fnd/" )
(Exp_of_unique formula-decl nil fp_round_aux nil )
(a skolem-const-decl "{i |
i <= ln(r * radix / radix ^ p) / ln(radix) &
ln(r * radix / radix ^ p) / ln(radix) < 1 + i}" IEEE_link
nil )
(scale const-decl
"{i: int | b ^ (i + p - 1) <= x & x < b ^ (i + p)}"
fp_round_aux nil )
(round_exceptions_x const-decl "[real, exception]" real_to_fp nil )
(rat_times_rat_is_rat application-judgement "rat" rationals nil )
(rat_plus_rat_is_rat application-judgement "rat" rationals nil )
(round const-decl "integer" round nil )
(both_sides_div1 formula-decl nil real_props nil )
(* const-decl "[numfield, numfield -> numfield]" number_fields nil )
(ceiling const-decl "{i | x <= i & i < x + 1}" floor_ceil nil )
(floor const-decl "{i | i <= x & x < i + 1}" floor_ceil nil )
(times_div_cancel1 formula-decl nil extra_real_props nil )
(NOT const-decl "[bool -> bool]" booleans nil )
(div_cancel3 formula-decl nil real_props nil )
(posrat_times_posrat_is_posrat application-judgement "posrat"
rationals nil )
(div_simp formula-decl nil real_props nil )
(expt_x0 formula-decl nil exponentiation nil )
(both_sides_times1_imp formula-decl nil extra_real_props nil )
(rat_div_nzrat_is_rat application-judgement "rat" rationals nil )
(nznum nonempty-type-eq-decl nil number_fields nil )
(/ const-decl "[numfield, nznum -> numfield]" number_fields nil )
(round_under const-decl "real" over_under nil )
(underflow const-decl "[real, exception]" over_under nil )
(round_exceptions const-decl "real" real_to_fp nil )
(fp_round const-decl "real" real_to_fp nil )
(over_under? const-decl "bool" over_under nil )
(real_div_nzreal_is_real application-judgement "real" reals nil )
(expt_plus formula-decl nil exponentiation nil )
(- const-decl "[numfield, numfield -> numfield]" number_fields nil )
(nzreal nonempty-type-eq-decl nil reals nil )
(RND_aux_alt_def formula-decl nil float nil )
(neg_times_neg formula-decl nil real_props nil )
(real_times_real_is_real application-judgement "real" reals nil )
(FulpCanonic formula-decl nil float nil )
(RleRoundedR0 formula-decl nil float nil )
(RND_Min_isMin formula-decl nil float nil )
(isMin_RoundedMode formula-decl nil float nil )
(FcanonicBounded formula-decl nil float nil )
(RND type-eq-decl nil float nil )
(isMin? const-decl "bool" float nil )
(FsuccDiff formula-decl nil float nil )
(real_ge_is_total_order name-judgement "(total_order?[real])"
real_props nil )
(RND_aux const-decl "(Fcanonic?(b))" float nil )
(nonneg_real nonempty-type-eq-decl nil real_types nil )
(>= const-decl "bool" reals nil )
(int_plus_int_is_int application-judgement "int" integers nil )
(posrat_exp application-judgement "posrat" exponentiation nil )
(nnrat_exp application-judgement "nnrat" exponentiation nil )
(< const-decl "bool" reals nil )
(AND const-decl "[bool, bool -> bool]" booleans nil )
(abs const-decl "{n: nonneg_real | n >= m AND n >= -m}" real_defs
nil )
(FtoR const-decl "real" float nil )
(r skolem-const-decl "real" IEEE_link nil )
(OR const-decl "[bool, bool -> bool]" booleans nil )
(/= const-decl "boolean" notequal nil )
(^ const-decl "real" exponentiation nil )
(+ const-decl "[numfield, numfield -> numfield]" number_fields nil )
(fp_num type-decl nil IEEE_854_values nil )
(finite? adt-recognizer-decl "[fp_num -> boolean]" IEEE_854_values
nil )
(= const-decl "[T, T -> boolean]" equalities nil )
(value const-decl "real" IEEE_854_values nil )
(float_to_IEEE const-decl "{x: (finite?) | FtoR(f) = value(x)}"
IEEE_link nil )
(rounding_mode type-decl nil enumerated_type_defs nil )
(to_pos? adt-recognizer-decl "[rounding_mode -> boolean]"
enumerated_type_defs nil )
(to_pos adt-constructor-decl "(to_pos?)" enumerated_type_defs nil )
(max_fp_correct formula-decl nil IEEE_854_values nil )
(int_minus_int_is_int application-judgement "int" integers nil )
(rat_minus_rat_is_rat application-judgement "rat" rationals nil )
(<= const-decl "bool" reals nil )
(posreal nonempty-type-eq-decl nil real_types nil )
(max_pos const-decl "posreal" IEEE_854_values nil )
(real_gt_is_strict_total_order name-judgement
"(strict_total_order?[real])" real_props nil )
(IMPLIES const-decl "[bool, bool -> bool]" booleans nil )
(E_max_gt_E_min formula-decl nil IEEE_854 nil )
(E_min formal-const-decl "integer" IEEE_link nil )
(E_max formal-const-decl "integer" IEEE_link nil )
(alpha formal-const-decl "integer" IEEE_link nil )
(integer nonempty-type-from-decl nil integers nil )
(p formal-const-decl "above(1)" IEEE_link nil )
(round_value2 formula-decl nil real_to_fp 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 )
(radix formal-const-decl "above(1)" IEEE_link nil )
(above nonempty-type-eq-decl nil integers 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 )
(- const-decl "[numfield -> numfield]" number_fields nil )
(numfield nonempty-type-eq-decl nil number_fields nil )
(b const-decl "Format" IEEE_link nil )
(RND_Min const-decl "(Fcanonic?(b))" float nil )
(Fcanonic? const-decl "bool" float nil )
(Format type-eq-decl nil float nil )
(nat nonempty-type-eq-decl nil naturalnumbers nil )
(float type-eq-decl nil float nil )
(FoppCorrect formula-decl nil float nil )
(minus_real_is_real application-judgement "real" reals nil ))
shostak))
(fp_round_opp_aux_TCC1 0
(fp_round_opp_aux_TCC1-1 nil 3321786254 ("" (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 "boolean" notequal nil ))
nil ))
(fp_round_opp_aux_TCC2 0
(fp_round_opp_aux_TCC2-1 nil 3321786254 ("" (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 )
(minus_real_is_real application-judgement "real" reals nil )
(/= const-decl "boolean" notequal nil ))
nil ))
(fp_round_opp_aux 0
(fp_round_opp_aux-1 nil 3321786255
("" (skeep)
(("" (expand "round_scaled" )
(("" (case-replace "abs(-r)=abs(r)" )
(("1" (expand "round" ) (("1" (grind-reals) nil nil )) nil )
("2" (hide 2)
(("2" (expand "abs" ) (("2" (grind-reals) nil nil )) nil ))
nil ))
nil ))
nil ))
nil )
((int_minus_int_is_int application-judgement "int" integers nil )
(minus_real_is_real application-judgement "real" reals nil )
(round_scaled const-decl "real" fp_round_aux nil )
(real_lt_is_strict_total_order name-judgement
"(strict_total_order?[real])" real_props nil )
(real_times_real_is_real application-judgement "real" reals nil )
(round const-decl "integer" round nil )
(minus_int_is_int application-judgement "int" integers nil )
(minus_rat_is_rat application-judgement "rat" rationals nil )
(nnrat_exp application-judgement "nnrat" exponentiation nil )
(posrat_exp application-judgement "posrat" exponentiation nil )
(rat_times_rat_is_rat application-judgement "rat" rationals nil )
(abs const-decl "{n: nonneg_real | n >= m AND n >= -m}" real_defs
nil )
(- const-decl "[numfield -> numfield]" number_fields nil )
(numfield nonempty-type-eq-decl nil number_fields nil )
(AND const-decl "[bool, bool -> bool]" booleans nil )
(nonneg_real nonempty-type-eq-decl nil real_types nil )
(>= const-decl "bool" reals nil )
(bool nonempty-type-eq-decl nil 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 )
(= const-decl "[T, T -> boolean]" equalities nil )
(boolean nonempty-type-decl nil booleans nil )
(number nonempty-type-decl nil numbers nil ))
shostak))
(fp_round_opp_TCC1 0
(fp_round_opp_TCC1-1 nil 3321805125
("" (skeep)
(("" (lemma "E_max_gt_E_min" ) (("" (propax) nil nil )) nil )) nil )
((E_min formal-const-decl "integer" IEEE_link nil )
(E_max formal-const-decl "integer" IEEE_link nil )
(alpha formal-const-decl "integer" IEEE_link nil )
(integer nonempty-type-from-decl nil integers nil )
(p formal-const-decl "above(1)" IEEE_link nil )
(radix formal-const-decl "above(1)" IEEE_link nil )
(above nonempty-type-eq-decl nil integers 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 )
(E_max_gt_E_min formula-decl nil IEEE_854 nil ))
nil ))
(fp_round_opp 0
(fp_round_opp-1 nil 3321718237
("" (skeep)
(("" (case "FORALL (g:real): abs(-g)=abs(g)" )
(("1" (expand "fp_round" )
(("1" (expand "over_under?" )
(("1" (rewrite -1)
(("1" (grind-reals)
(("1" (expand "round_exceptions" )
(("1" (expand "round_exceptions_x" )
(("1" (expand "overflow" )
(("1" (case "max_pos=-max_neg" )
(("1" (grind-reals)
(("1" (expand "trap_over" )
(("1" (grind-reals)
(("1" (rewrite "fp_round_opp_aux" )
(("1" (assert ) nil nil )) nil ))
nil ))
nil )
("2" (expand "trap_over" )
(("2" (grind-reals)
(("2" (rewrite "fp_round_opp_aux" )
(("2" (assert ) nil nil )) nil ))
nil ))
nil ))
nil )
("2" (hide 2 3)
(("2"
(expand * "max_pos" "max_neg" "max_fp_pos"
"max_fp_neg" "value" "pos" "neg" )
(("2" (rewrite "expt_x0" )
(("2" (rewrite "expt_x1" )
(("2" (assert ) nil nil )) nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2" (expand "round_exceptions" )
(("2" (expand "round_exceptions_x" )
(("2" (grind-reals)
(("1" (expand "overflow" )
(("1" (case "max_pos=-max_neg" )
(("1" (grind-reals)
(("1" (expand "trap_over" )
(("1" (grind-reals)
(("1"
(rewrite "fp_round_opp_aux" )
(("1" (assert ) nil nil ))
nil ))
nil ))
nil )
("2" (expand "trap_over" )
(("2" (grind-reals)
(("2"
(rewrite "fp_round_opp_aux" )
(("2" (assert ) nil nil ))
nil ))
nil ))
nil ))
nil )
("2" (hide 2 3)
(("2"
(expand * "max_pos" "max_neg" "max_fp_pos"
"max_fp_neg" "value" "pos" "neg" )
(("2" (rewrite "expt_x1" )
(("2"
(rewrite "expt_x0" )
(("2" (assert ) nil nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2" (expand "underflow" )
(("2" (case "tiny?(r, to_neg)=tiny?(-r, to_pos)" )
(("1"
(case "round_under(r, to_neg)=-round_under(-r, to_pos)" )
(("1" (grind-reals)
(("1" (rewrite "fp_round_opp_aux" )
(("1" (assert ) nil nil )) nil ))
nil )
("2" (rewrite "fp_round_opp_aux" )
(("2" (hide 4)
(("2"
(expand "round_under" )
(("2"
(expand "round" )
(("2" (grind-reals) nil nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2" (hide 4)
(("2" (expand "tiny?" )
(("2" (rewrite "fp_round_opp_aux" )
(("2"
(case
"abs(-round_scaled(-r, to_pos)) =abs(round_scaled(-r, to_pos))" )
(("1"
(assert )
(("1" (grind-reals) nil nil ))
nil )
("2"
(hide 2)
(("2"
(name-replace
"AA"
"round_scaled(-r, to_pos)" )
(("2"
(expand "abs" 1)
(("2" (grind-reals) nil nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("3" (rewrite "fp_round_opp_aux" ) nil nil ))
nil ))
nil ))
nil ))
nil )
("2" (hide 2)
(("2" (skosimp*)
(("2" (expand "abs" ) (("2" (grind-reals) nil nil )) nil ))
nil ))
nil ))
nil ))
nil )
((abs const-decl "{n: nonneg_real | n >= m AND n >= -m}" real_defs
nil )
(- const-decl "[numfield -> numfield]" number_fields nil )
(numfield nonempty-type-eq-decl nil number_fields nil )
(AND const-decl "[bool, bool -> bool]" booleans nil )
(nonneg_real nonempty-type-eq-decl nil real_types nil )
(>= const-decl "bool" reals nil )
(bool nonempty-type-eq-decl nil booleans nil )
(= const-decl "[T, T -> boolean]" equalities 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 )
(over_under? const-decl "bool" over_under 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 )
(nnrat_exp application-judgement "nnrat" exponentiation nil )
(round_exceptions_x const-decl "[real, exception]" real_to_fp nil )
(max_neg const-decl "negreal" IEEE_854_values nil )
(negreal nonempty-type-eq-decl nil real_types nil )
(< const-decl "bool" reals nil )
(nonpos_real nonempty-type-eq-decl nil real_types nil )
(<= const-decl "bool" reals nil )
(max_pos const-decl "posreal" IEEE_854_values nil )
(E_min formal-const-decl "integer" IEEE_link nil )
(E_max formal-const-decl "integer" IEEE_link nil )
(integer nonempty-type-from-decl nil integers nil )
(p formal-const-decl "above(1)" IEEE_link nil )
(radix formal-const-decl "above(1)" IEEE_link nil )
(above nonempty-type-eq-decl nil integers 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 )
(posreal nonempty-type-eq-decl nil real_types nil )
(> const-decl "bool" reals nil )
(minus_nzreal_is_nzreal application-judgement "nzreal" real_types
nil )
(trap_over const-decl "real" over_under nil )
(alpha formal-const-decl "integer" IEEE_link 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 )
(fp_round_opp_aux formula-decl nil IEEE_link nil )
(nonzero_times3 formula-decl nil real_props nil )
(minus_int_is_int application-judgement "int" integers nil )
(real_times_real_is_real application-judgement "real" reals nil )
(int_plus_int_is_int application-judgement "int" integers nil )
(real_ge_is_total_order name-judgement "(total_order?[real])"
real_props nil )
(max_fp_neg const-decl "fp_num" IEEE_854_values nil )
(pos const-decl "sign_rep" enumerated_type_defs nil )
(neg const-decl "sign_rep" enumerated_type_defs nil )
(value const-decl "real" IEEE_854_values nil )
(max_fp_pos const-decl "fp_num" IEEE_854_values nil )
(expt_x1 formula-decl nil exponentiation nil )
(nzreal_exp application-judgement "nzreal" exponentiation nil )
(int_exp application-judgement "int" exponentiation nil )
(minus_odd_is_odd application-judgement "odd_int" integers nil )
(expt_x0 formula-decl nil exponentiation nil )
(overflow const-decl "[real, exception]" over_under nil )
(posrat_exp application-judgement "posrat" exponentiation nil )
(round_exceptions const-decl "real" real_to_fp nil )
(underflow const-decl "[real, exception]" over_under nil )
(round_scaled const-decl "real" fp_round_aux nil )
(round_under const-decl "real" over_under nil )
(int_minus_int_is_int application-judgement "int" integers nil )
(round const-decl "integer" round nil )
(rat_times_rat_is_rat application-judgement "rat" rationals nil )
(minus_rat_is_rat application-judgement "rat" rationals nil )
(nzreal nonempty-type-eq-decl nil reals nil )
(rounding_mode type-decl nil enumerated_type_defs nil )
(tiny? const-decl "bool" over_under nil )
(to_neg? adt-recognizer-decl "[rounding_mode -> boolean]"
enumerated_type_defs nil )
(to_neg adt-constructor-decl "(to_neg?)" enumerated_type_defs nil )
(to_pos? adt-recognizer-decl "[rounding_mode -> boolean]"
enumerated_type_defs nil )
(to_pos adt-constructor-decl "(to_pos?)" enumerated_type_defs nil )
(fp_round const-decl "real" real_to_fp nil ))
shostak))
(RND_EClosest2_TCC1 0
(RND_EClosest2_TCC1-1 nil 3321882585 ("" (subtype-tcc) nil nil )
((NOT const-decl "[bool -> bool]" booleans nil )
(real_lt_is_strict_total_order name-judgement
"(strict_total_order?[real])" real_props nil )
(real_minus_real_is_real application-judgement "real" reals nil )
(real_le_is_total_order name-judgement "(total_order?[real])"
real_props nil )
(nat_exp application-judgement "nat" exponentiation 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 )
(minus_real_is_real application-judgement "real" reals nil )
(b const-decl "Format" IEEE_link nil )
(radix formal-const-decl "above(1)" IEEE_link nil )
(above nonempty-type-eq-decl nil integers 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 )
(FtoR const-decl "real" float nil )
(Fopp const-decl "float" float nil )
(RND_Max const-decl "(Fcanonic?(b))" float nil )
(/= const-decl "boolean" notequal nil )
(vNum const-decl "posnat" float nil )
(minus_int_is_int application-judgement "int" integers nil )
(rat_times_rat_is_rat application-judgement "rat" rationals nil )
(int_plus_int_is_int application-judgement "int" integers nil )
(posint_exp application-judgement "posint" exponentiation nil )
(nnrat_exp application-judgement "nnrat" exponentiation nil )
(posrat_exp application-judgement "posrat" exponentiation nil )
(posint_plus_nnint_is_posint application-judgement "posint"
integers nil )
(int_minus_int_is_int application-judgement "int" integers nil )
(mult_divides1 application-judgement "(divides(n))" divides nil )
(mult_divides2 application-judgement "(divides(m))" divides nil ))
nil ))
(RND_EClosest2 0
(RND_EClosest2-2 "RWB" 3508763454
("" (skeep)
(("" (lemma "RND_Min_isMin" )
(("" (inst?)
(("" (expand "isMin?" )
(("" (lemma "RND_Max_isMax" )
(("" (inst?)
(("" (expand "isMax?" )
(("" (flatten)
(("" (expand "RND_EClosest" )
((""
(case-replace
" abs(FtoR(RND_Min(b)(r)) - r)=r - FtoR[radix](RND_Min(b)(r))" )
(("1"
(case-replace
"abs(FtoR(RND_Max(b)(r)) - r)=FtoR[radix](RND_Max(b)(r)) - r" )
(("1" (hide-all-but 1)
(("1" (grind-reals)
(("1" (lemma "MaxSuccMin" )
(("1"
(inst
-1
"b"
"RND_Min(b)(r)"
"RND_Max(b)(r)"
"r" )
(("1"
(split)
(("1"
(case
"r=(FtoR(RND_Max(b)(r))+FtoR(RND_Min(b)(r)))/2" )
(("1"
(hide 1 2)
(("1"
(hide 1)
(("1"
(expand "RND_Min" )
(("1"
(grind-reals
:theories
("extra_tegies"
"extra_real_props" ))
(("1"
(hide -2)
(("1"
(expand "abs" )
(("1"
(case-replace
"(r * radix ^ (-Fexp(RND_aux(b)(r))))=(Fnum(RND_aux(b)(r)))+1/2" )
(("1"
(expand "even?" )
(("1"
(skosimp*)
(("1"
(replace -4)
(("1"
(case-replace
"ceiling(2 * j!1 + 1 / 2)=2 * j!1 + 1" )
(("1"
(case-replace
"floor((2 * j!1 + 1) / 2)=j!1" )
(("1"
(expand
"FtoR" )
(("1"
(assert )
nil
nil ))
nil )
("2"
(hide-all-but
1)
(("2"
(assert )
nil
nil ))
nil ))
nil )
("2"
(case-replace
"1 / 2 + 2 * j!1=-1/2+(2*j!1+1)" )
(("1"
(rewrite
"ceiling_plus_int" )
(("1"
(case-replace
"ceiling(-(1 / 2))=0" )
(("1"
(assert )
nil
nil )
("2"
(assert )
nil
nil ))
nil ))
nil )
("2"
(assert )
nil
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2"
(hide 2)
(("2"
(rewrite
"expt_inverse" )
(("2"
(field 1)
(("2"
(copy -2)
(("2"
(replace
-2)
(("2"
(hide -3)
(("2"
(case-replace
"FtoR(Fsucc(b)(RND_aux(b)(r)))=FtoR(RND_aux(b)(r))+radix ^ Fexp(RND_aux(b)(r))" )
(("1"
(expand
"FtoR" )
(("1"
(propax)
nil
nil ))
nil )
("2"
(hide
2)
(("2"
(move-terms
1
r
1)
(("2"
(rewrite
"FsuccDiff" )
(("1"
(rewrite
"FulpCanonic" )
nil
nil )
("2"
(lemma
"RleRoundedR0" )
(("2"
(inst
-1
"isMin?"
"b"
"RND_Min(b)(r)"
"r" )
(("2"
(split)
(("1"
(expand
"RND_Min" )
(("1"
(propax)
nil
nil ))
nil )
("2"
(propax)
nil
nil )
("3"
(rewrite
"RND_Min_isMin" )
nil
nil )
("4"
(rewrite
"isMin_RoundedMode" )
nil
nil )
("5"
(rewrite
"FcanonicBounded" )
nil
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2"
(flip-ineq 1)
(("2"
(name
"AA"
"Fpred(b)(Fopp(RND_aux(b)(-r)))" )
(("2"
(copy -2)
(("2"
(replace -2)
(("2"
(hide -3)
(("2"
(expand "abs" )
(("2"
(case
"RND_aux(b)(-r)=Fopp(Fsucc(b)(AA))" )
(("1"
(replaces
-1
2)
(("1"
(expand
"Fopp"
2)
(("1"
(case-replace
"r * radix ^ (-Fexp(Fsucc(b)(AA)))=Fnum(Fsucc(b)(AA))-1/2" )
(("1"
(case-replace
"ceiling(Fnum(Fsucc(b)(AA)) - 1 / 2)=Fnum(Fsucc(b)(AA))" )
(("1"
(case-replace
"floor(Fnum(Fsucc(b)(AA)) / 2)=(Fnum(Fsucc(b)(AA))-1)/2" )
(("1"
(expand
"FtoR" )
(("1"
(field
2)
(("1"
(move-terms
2
r
1)
(("1"
(case
"radix ^ Fexp(Fsucc(b)(AA))=FtoR(Fsucc(b)(AA))-FtoR(AA)" )
(("1"
(expand
"FtoR"
-1)
(("1"
(assert )
nil
nil ))
nil )
("2"
(case-replace
"Fsucc(b)(AA)=Fopp(Fpred(b)(Fopp(AA)))" )
(("1"
(hide
2
3)
(("1"
(case-replace
"radix ^ Fexp(Fopp(Fpred(b)(Fopp(AA))))=radix ^ Fexp((Fpred(b)(Fopp(AA))))" )
(("1"
(rewrite
"FoppCorrect" )
(("1"
(case-replace
" FtoR[radix](AA)=-FtoR(Fopp(AA))" )
(("1"
(case-replace
"-FtoR(Fpred(b)(Fopp(AA))) - -(FtoR[radix]((Fopp(AA))))
= FtoR(Fopp(AA))-FtoR(Fpred(b)(Fopp(AA)))")
(("1"
(rewrite
"FpredDiff" )
(("1"
(rewrite
"FulpCanonic" )
(("1"
(case-replace
"Fpred(b)(Fopp(AA))=Fopp(RND_Max(b)(r))" )
(("1"
(lemma
"FcanonicOpp" )
(("1"
(hide-all-but
(-1
1))
(("1"
(inst
-1
"b"
"RND_Max(b)(r)" )
(("1"
(assert )
nil
nil ))
nil ))
nil ))
nil )
("2"
(rewrite
-10)
(("2"
(expand
"Fopp"
1)
(("2"
(decompose-equality
1)
nil
nil ))
nil ))
nil ))
nil ))
nil )
("2"
(rewrite
"FoppCorrect" )
(("2"
(replace
-9
:dir
rl)
(("2"
(hide-all-but
(-8
1))
(("2"
(rewrite
"FpredFoppFsucc" )
(("2"
(rewrite
"FoppCorrect" )
(("2"
(assert )
(("2"
(trans-ineq
1
"FtoR(Fsucc(b)(RND_aux(b)(-r)))"
:strict
1)
(("1"
(rewrite
"FsuccPos" )
(("1"
(lemma
"RleRoundedR0" )
(("1"
(inst
-1
"isMin?"
"b"
"RND_Min(b)(-r)"
"-r" )
(("1"
(split)
(("1"
(expand
"RND_Min" )
(("1"
(propax)
nil
nil ))
nil )
("2"
(assert )
nil
nil )
("3"
(rewrite
"RND_Min_isMin" )
nil
nil )
("4"
(rewrite
"isMin_RoundedMode" )
nil
nil )
("5"
(rewrite
"FcanonicBounded" )
nil
nil ))
nil ))
nil ))
nil ))
nil )
("2"
(assert )
nil
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("3"
(replace
-9
:dir
rl)
(("3"
(hide-all-but
1)
(("3"
(lemma
"FcanonicOpp" )
(("3"
(inst
-1
"b"
"Fpred(b)(Fopp(RND_aux(b)(-r)))" )
(("3"
(flatten)
(("3"
(rewrite
-1)
(("3"
(rewrite
"FpredCanonic" )
(("3"
(lemma
"FcanonicOpp" )
(("3"
(inst
-1
"b"
"RND_aux(b)(-r)" )
(("3"
(assert )
nil
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2"
(assert )
nil
nil ))
nil )
("2"
(rewrite
"FoppCorrect" )
(("2"
(assert )
nil
nil ))
nil ))
nil ))
nil )
("2"
(expand
"Fopp"
1)
(("2"
(propax)
nil
nil ))
nil ))
nil ))
nil )
("2"
(rewrite
"FpredFoppFsucc" )
(("2"
(expand
"Fopp"
1)
(("2"
(decompose-equality
1)
nil
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2"
(case
"odd?(Fnum(Fsucc(b)(AA)))" )
(("1"
(expand
"odd?" )
(("1"
(skosimp*)
(("1"
(hide-all-but
(-1
1))
(("1"
(replace
-1)
(("1"
(assert )
(("1"
(case-replace
"(1 + 2 * j!1) / 2=1/2+j!1" )
(("1"
(rewrite
"floor_plus_int" )
(("1"
(assert )
nil
nil ))
nil )
("2"
(field
1)
nil
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2"
(rewrite
"EvenFsuccOdd" )
(("2"
(replace
-4
:dir
rl)
(("2"
(hide-all-but
(-3
1))
(("2"
(rewrite
"FpredCanonic" )
(("2"
(lemma
"FcanonicOpp" )
(("2"
(inst
-1
"b"
"RND_aux(b)(-r)" )
(("2"
(assert )
nil
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2"
(assert )
nil
nil ))
nil )
("2"
(assert )
(("2"
(rewrite
"expt_inverse" )
(("2"
(field
1)
(("2"
(hide
2
3)
(("2"
(copy
-4)
(("2"
(replace
-4)
(("2"
(hide
-5)
(("2"
(case-replace
"FtoR(AA)=FtoR(Fsucc(b)(AA))-radix ^ Fexp(Fsucc(b)(AA))" )
(("1"
(expand
"FtoR"
1)
(("1"
(propax)
nil
nil ))
nil )
("2"
(hide
2)
(("2"
(case-replace
"Fsucc(b)(AA)=Fopp(Fpred(b)(Fopp(AA)))" )
(("1"
(case-replace
"Fexp(Fopp(Fpred(b)(Fopp(AA))))=Fexp((Fpred(b)(Fopp(AA))))" )
(("1"
(rewrite
"FoppCorrect" )
(("1"
(case-replace
"FtoR[radix](AA)=-FtoR(Fopp(AA))" )
(("1"
(case
"radix ^ Fexp((Fpred(b)(Fopp(AA))))=FtoR(Fopp(AA))-FtoR(Fpred(b)(Fopp(AA)))" )
(("1"
(assert )
nil
nil )
("2"
(rewrite
"FpredDiff" )
(("1"
(rewrite
"FulpCanonic" )
(("1"
(hide-all-but
(-4
1))
(("1"
(lemma
"FcanonicOpp" )
(("1"
(inst
-1
"b"
"Fpred(b)(Fopp(AA))" )
(("1"
(assert )
nil
nil ))
nil ))
nil ))
nil ))
nil )
("2"
(replace
-6
:dir
rl)
(("2"
(hide
2
3
-1
-2
-3)
(("2"
(rewrite
"FpredFoppFsucc" )
(("2"
(rewrite
"FoppCorrect" )
(("2"
(rewrite
"FoppCorrect" )
(("2"
(trans-ineq
1
"FtoR(Fsucc(b)(RND_aux(b)(-r)))"
:strict
1)
(("1"
(rewrite
"FsuccPos" )
(("1"
(lemma
"RleRoundedR0" )
(("1"
(inst
-1
"isMin?"
"b"
"RND_Min(b)(-r)"
"-r" )
(("1"
(split)
(("1"
(expand
"RND_Min" )
(("1"
(propax)
nil
nil ))
nil )
("2"
(assert )
nil
nil )
("3"
(rewrite
"RND_Min_isMin" )
nil
nil )
("4"
(rewrite
"isMin_RoundedMode" )
nil
nil )
("5"
(rewrite
"FcanonicBounded" )
nil
nil ))
nil ))
nil ))
nil ))
nil )
("2"
(assert )
nil
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("3"
(replace
-6
:dir
rl)
(("3"
(hide-all-but
(-5
1))
(("3"
(rewrite
"FpredFoppFsucc" )
(("3"
(case-replace
"Fopp(Fopp(Fsucc(b)(RND_aux(b)(-r))))=Fsucc(b)(RND_aux(b)(-r))" )
(("1"
(rewrite
"FsuccCanonic" )
nil
nil )
("2"
(expand
"Fopp"
1)
(("2"
(decompose-equality
1)
nil
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2"
(rewrite
"FoppCorrect" )
(("2"
(assert )
nil
nil ))
nil ))
nil ))
nil )
("2"
(expand
"Fopp" )
(("2"
(propax)
nil
nil ))
nil ))
nil )
("2"
(rewrite
"FpredFoppFsucc" )
(("2"
(expand
"Fopp"
1)
(("2"
(decompose-equality
1)
nil
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2"
(replace
-2
:dir
rl)
(("2"
(rewrite
"FsuccFpred" )
(("1"
(expand
"Fopp"
1)
(("1"
(decompose-equality
1)
nil
nil ))
nil )
("2"
(lemma
"FcanonicOpp" )
(("2"
(inst
-1
"b"
"RND_aux(b)(-r)" )
(("2"
(assert )
nil
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2" (grind-reals) nil nil ))
nil )
("2" (propax) nil nil )
("3"
(rewrite "RND_Max_isMax" )
nil
nil )
("4"
(rewrite "RND_Min_isMin" )
nil
nil )
("5" (assert ) nil nil )
("6" (assert ) nil nil ))
nil ))
nil ))
nil )
("2" (lemma "MaxSuccMin" )
(("2"
(inst
-1
"b"
"RND_Min(b)(r)"
"RND_Max(b)(r)"
"r" )
(("2"
(split)
(("1"
(replace -1)
(("1"
(expand "RND_Min" )
(("1"
(grind-reals)
(("1"
(expand "abs" )
(("1"
(case-replace
"r * radix ^ (-Fexp(RND_aux(b)(r)))
=Fnum(RND_aux(b)(r))+1/2")
(("1"
(case-replace
"ceiling(Fnum(RND_aux(b)(r)) + 1 / 2)=Fnum(RND_aux(b)(r)) + 1" )
(("1"
(case-replace
"floor((Fnum(RND_aux(b)(r)) + 1) / 2)=
(Fnum(RND_aux(b)(r)) + 1)/2")
(("1"
(hide 1 2 3 4)
(("1"
(case-replace
"FtoR(Fsucc(b)(RND_aux(b)(r)))=FtoR(RND_aux(b)(r))+Fulp(b)(RND_aux(b)(r))" )
(("1"
(rewrite
"FulpCanonic" )
(("1"
(expand
"FtoR"
1)
(("1"
(field 1)
nil
nil ))
nil ))
nil )
("2"
(rewrite
"FsuccDiff"
:dir
rl)
(("1"
(assert )
nil
nil )
("2"
(lemma
"RleRoundedR0" )
(("2"
(inst
-1
"isMin?"
"b"
"RND_Min(b)(r)"
"r" )
(("2"
(split)
(("1"
(expand
"RND_Min" )
(("1"
(propax)
nil
nil ))
nil )
("2"
(propax)
nil
nil )
("3"
(rewrite
"RND_Min_isMin" )
nil
nil )
("4"
(rewrite
"isMin_RoundedMode" )
nil
nil )
("5"
(rewrite
"FcanonicBounded" )
nil
nil ))
nil ))
nil ))
nil ))
nil )
("3"
(rewrite
"FcanonicBounded" )
nil
nil ))
nil ))
nil )
("2"
(hide 2 3 4 6)
(("2"
(case
"odd?(Fnum(RND_aux(b)(r)))" )
(("1"
(expand "odd?" )
(("1"
(skosimp*)
(("1"
(replace -1)
(("1"
(field 1)
nil
nil ))
nil ))
nil ))
nil )
("2"
(lemma
"even_or_odd" )
(("2"
(inst?)
(("2"
(assert )
nil
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2" (assert ) nil nil ))
nil )
("2"
(rewrite "expt_inverse" )
(("2"
(field 1)
(("2"
(case-replace
"(radix ^ Fexp(RND_aux(b)(r))) +
2 * (Fnum(RND_aux(b)(r)) * (radix ^ Fexp(RND_aux(b)(r))))=FtoR(RND_aux(b)(r))
+ FtoR(Fsucc(b)(RND_aux(b)(r)))")
(("1"
(grind-reals)
nil
nil )
("2"
(hide 2 3 4 6 7)
(("2"
(case-replace
"FtoR(Fsucc(b)(RND_aux(b)(r)))=FtoR(RND_aux(b)(r))+Fulp(b)(RND_aux(b)(r))" )
(("1"
(rewrite
"FulpCanonic" )
(("1"
(expand
"FtoR"
1)
(("1"
(propax)
nil
nil ))
nil ))
nil )
("2"
(rewrite
"FsuccDiff"
:dir
rl)
(("1"
(assert )
nil
nil )
("2"
(lemma
"RleRoundedR0" )
(("2"
(inst
-1
"isMin?"
"b"
"RND_Min(b)(r)"
"r" )
(("2"
(split)
(("1"
(expand
"RND_Min" )
(("1"
(propax)
nil
nil ))
nil )
("2"
(propax)
nil
nil )
("3"
(rewrite
"RND_Min_isMin" )
nil
nil )
("4"
(rewrite
"isMin_RoundedMode" )
nil
nil )
("5"
(rewrite
"FcanonicBounded" )
nil
nil ))
nil ))
nil ))
nil ))
nil )
("3"
(rewrite
"FcanonicBounded" )
nil
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2"
(flip-ineq 4)
(("2"
(rewrite "FsuccFpred" )
(("1"
(expand "abs" )
(("1"
(case-replace
"Fexp(RND_aux(b)(-r))=Fexp(Fopp(RND_aux(b)(-r)))" )
(("1"
(name-replace
"AA"
"Fopp(RND_aux(b)(-r))" )
(("1"
(case-replace
"r * radix ^ (-Fexp(AA))=Fnum(AA)-1/2" )
(("1"
(case-replace
"ceiling(Fnum(AA) - 1 / 2)=Fnum(AA)" )
(("1"
(case-replace
"floor(Fnum(AA) / 2)=Fnum(AA) / 2" )
(("1"
(expand
"FtoR"
6)
(("1"
(field 6)
nil
nil ))
nil )
("2"
(case
"even?(Fnum(AA))" )
(("1"
(case
"even?(Fnum(AA))" )
(("1"
(expand
"even?" )
(("1"
(skosimp*)
(("1"
(hide-all-but
(-1
1))
(("1"
(replace
-1)
(("1"
(field
1)
nil
nil ))
nil ))
nil ))
nil ))
nil )
("2"
(propax)
nil
nil ))
nil )
("2"
(case
"AA=Fsucc(b)(Fpred(b)(AA))" )
(("1"
(replaces
-1
1)
(("1"
(rewrite
"OddFsuccEven" )
(("1"
(lemma
"even_or_odd" )
(("1"
(inst
-1
"Fnum(Fpred(b)(AA))" )
(("1"
(assert )
nil
nil ))
nil ))
nil )
("2"
(rewrite
"FpredCanonic" )
nil
nil ))
nil ))
nil )
("2"
(rewrite
"FsuccFpred" )
nil
nil ))
nil ))
nil ))
nil )
("2"
(assert )
nil
nil ))
nil )
("2"
(rewrite
"expt_inverse" )
(("2"
(field 1)
(("2"
(case-replace
"2 * (Fnum(AA) * (radix ^ Fexp(AA))) - (radix ^ Fexp(AA))
= FtoR(AA)+FtoR(Fpred(b)(AA))")
(("1"
(grind-reals)
nil
nil )
("2"
(hide
2
3
4
5
6
7
8)
(("2"
(case-replace
"2 * (Fnum(AA) * (radix ^ Fexp(AA))) - (radix ^ Fexp(AA))=2*FtoR(AA)-(radix ^ Fexp(AA))" )
(("1"
(move-terms
1
r
(1 2))
(("1"
(move-terms
1
l
2)
(("1"
(assert )
(("1"
(case-replace
"FtoR[radix](AA)=-FtoR(Fopp(AA))" )
(("1"
(case-replace
"Fpred(b)(AA)=Fopp(Fsucc(b)(Fopp(AA)))" )
(("1"
(case-replace
"radix ^ Fexp(AA)=Fulp(b)(Fopp(AA))" )
(("1"
(rewrite
"FsuccDiff"
:dir
rl)
(("1"
(assert )
(("1"
(rewrite
"FoppCorrect" )
(("1"
(assert )
(("1"
(rewrite
"FoppCorrect" )
(("1"
(assert )
nil
nil ))
nil ))
nil ))
nil ))
nil )
("2"
(rewrite
"FoppCorrect" )
(("2"
(case
"FtoR(AA) <= 0" )
(("1"
(assert )
nil
nil )
("2"
(lemma
"RleRoundedLessR0" )
(("2"
(inst
-1
"isMax?"
"b"
"RND_Max(b)(r)"
"r" )
(("2"
(split)
(("1"
(assert )
nil
nil )
("2"
(assert )
nil
nil )
("3"
(rewrite
"RND_Max_isMax" )
nil
nil )
("4"
(rewrite
"isMax_RoundedMode" )
nil
nil )
("5"
(rewrite
"FcanonicBounded" )
nil
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("3"
(lemma
"FcanonicOpp" )
(("3"
(inst
-1
"b"
"AA" )
(("3"
(assert )
nil
nil ))
nil ))
nil ))
nil )
("2"
(rewrite
"FulpCanonic" )
(("1"
(assert )
(("1"
(expand
"Fopp" )
(("1"
(propax)
nil
nil ))
nil ))
nil )
("2"
(lemma
"FcanonicOpp" )
(("2"
(inst
-1
"b"
"AA" )
(("2"
(assert )
nil
nil ))
nil ))
nil ))
nil )
("3"
(rewrite
"FoppBounded" )
(("3"
(rewrite
"FcanonicBounded" )
nil
nil ))
nil ))
nil )
("2"
(rewrite
"FsuccFoppFpred" )
(("2"
(expand
"Fopp"
1)
(("2"
(decompose-equality
1)
nil
nil ))
nil ))
nil ))
nil )
("2"
(rewrite
"FoppCorrect" )
(("2"
(assert )
nil
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2"
(expand
"FtoR"
1)
(("2"
(propax)
nil
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2"
(expand "Fopp" 1)
(("2"
(propax)
nil
nil ))
nil ))
nil ))
nil )
("2"
(hide 2 3 4 5 6 7)
(("2"
(lemma "FcanonicOpp" )
(("2"
(inst
-1
"b"
"RND_aux(b)(-r)" )
(("2"
(assert )
nil
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2" (propax) nil nil )
("3"
(rewrite "RND_Max_isMax" )
nil
nil )
("4"
(rewrite "RND_Min_isMin" )
nil
nil )
("5" (assert ) nil nil )
("6" (assert ) nil nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2" (hide 2)
(("2" (expand "abs" 1)
(("2" (grind-reals) nil nil )) nil ))
nil ))
nil )
("2" (hide 2)
(("2" (expand "abs" 1)
(("2" (grind-reals) nil nil )) nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
((radix formal-const-decl "above(1)" IEEE_link nil )
(above nonempty-type-eq-decl nil integers 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 )
(RND_Min_isMin formula-decl nil float nil )
(isMin? const-decl "bool" float nil )
(= const-decl "[T, T -> boolean]" equalities nil )
(>= const-decl "bool" reals nil )
(nonneg_real nonempty-type-eq-decl nil real_types nil )
(AND const-decl "[bool, bool -> bool]" booleans nil )
(numfield nonempty-type-eq-decl nil number_fields nil )
(- const-decl "[numfield -> numfield]" number_fields nil )
(abs const-decl "{n: nonneg_real | n >= m AND n >= -m}" real_defs
nil )
(- const-decl "[numfield, numfield -> numfield]" number_fields nil )
(float type-eq-decl nil float nil )
(FtoR const-decl "real" float nil )
(Fcanonic? const-decl "bool" float nil )
(RND_Min const-decl "(Fcanonic?(b))" float nil )
(nnrat_plus_posrat_is_posrat application-judgement "posrat"
rationals nil )
(FsuccFoppFpred formula-decl nil float nil )
(RleRoundedLessR0 formula-decl nil float nil )
(isMax_RoundedMode formula-decl nil float nil )
(FoppBounded formula-decl nil float nil )
(both_sides_times2 formula-decl nil real_props nil )
(OddFsuccEven formula-decl nil float nil )
(even_or_odd formula-decl nil naturalnumbers nil )
(even_plus_even_is_even application-judgement "even_int" integers
nil )
(odd_plus_odd_is_even application-judgement "even_int" integers
nil )
(Fulp const-decl "real" float nil )
(lt_minus_lt2 formula-decl nil real_props nil )
(MaxSuccMin formula-decl nil float nil )
(real_gt_is_strict_total_order name-judgement
"(strict_total_order?[real])" real_props nil )
(add_neg formula-decl nil extra_tegies nil )
(FsuccCanonic formula-decl nil float nil )
(odd? const-decl "bool" integers nil )
(nonneg_floor_is_nat application-judgement "nat" floor_ceil nil )
(floor_plus_int formula-decl nil floor_ceil nil )
(times_div_cancel1 formula-decl nil extra_real_props nil )
(odd_minus_odd_is_even application-judgement "even_int" integers
nil )
(int_times_even_is_even application-judgement "even_int" integers
nil )
(EvenFsuccOdd formula-decl nil float nil )
(int_minus_int_is_int application-judgement "int" integers nil )
(FpredDiff formula-decl nil float nil )
(FcanonicOpp formula-decl nil float nil )
(neg_neg formula-decl nil extra_tegies nil )
(FpredFoppFsucc formula-decl nil float nil )
(FsuccPos formula-decl nil float nil )
(IMPLIES const-decl "[bool, bool -> bool]" booleans nil )
(FpredCanonic formula-decl nil float nil )
(FoppCorrect formula-decl nil float nil )
(rat_minus_rat_is_rat application-judgement "rat" rationals nil )
(FsuccFpred formula-decl nil float nil )
(Fopp const-decl "float" float nil )
(Fpred const-decl "float" float nil )
(real_ge_is_total_order name-judgement "(total_order?[real])"
real_props nil )
(RND_aux const-decl "(Fcanonic?(b))" float nil )
(^ const-decl "real" exponentiation nil )
(OR const-decl "[bool, bool -> bool]" booleans nil )
(* const-decl "[numfield, numfield -> numfield]" number_fields nil )
(rat_plus_rat_is_rat application-judgement "rat" rationals nil )
(ceiling const-decl "{i | x <= i & i < x + 1}" floor_ceil nil )
(< const-decl "bool" reals nil ) (<= const-decl "bool" reals nil )
(integer nonempty-type-from-decl nil integers nil )
(even_plus_odd_is_odd application-judgement "odd_int" integers nil )
(odd_plus_even_is_odd application-judgement "odd_int" integers nil )
(rat_times_rat_is_rat application-judgement "rat" rationals nil )
(nzrat_div_nzrat_is_nzrat application-judgement "nzrat" rationals
nil )
(floor const-decl "{i | i <= x & x < i + 1}" floor_ceil nil )
(ceiling_plus_int formula-decl nil floor_ceil nil )
(int_plus_int_is_int application-judgement "int" integers nil )
(neg_div formula-decl nil extra_tegies nil )
(posint_plus_nnint_is_posint application-judgement "posint"
integers nil )
(minus_nzrat_is_nzrat application-judgement "nzrat" rationals nil )
(minus_odd_is_odd application-judgement "odd_int" integers nil )
(posrat_div_posrat_is_posrat application-judgement "posrat"
rationals nil )
(even? const-decl "bool" integers nil )
(nzreal nonempty-type-eq-decl nil reals nil )
(expt_inverse formula-decl nil exponentiation nil )
(FsuccDiff formula-decl nil float nil )
(FulpCanonic formula-decl nil float nil )
(RND type-eq-decl nil float nil )
(Fbounded? const-decl "bool" float nil )
(FcanonicBounded formula-decl nil float nil )
(isMin_RoundedMode formula-decl nil float nil )
(RleRoundedR0 formula-decl nil float nil )
(IFF const-decl "[bool, bool -> bool]" booleans nil )
(Fsucc const-decl "float" float nil )
(div_cancel1 formula-decl nil real_props nil )
(nonzero_real nonempty-type-eq-decl nil reals nil )
(both_sides_times1 formula-decl nil real_props nil )
(one_times formula-decl nil extra_tegies nil )
(times_div2 formula-decl nil real_props nil )
(posrat_times_posrat_is_posrat application-judgement "posrat"
rationals nil )
(times_div1 formula-decl nil real_props nil )
(div_cancel3 formula-decl nil real_props 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 )
(div_cancel4 formula-decl nil real_props nil )
(real_plus_real_is_real application-judgement "real" reals nil )
(minus_real_is_real application-judgement "real" reals nil )
(+ const-decl "[numfield, 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 )
(minus_int_is_int application-judgement "int" integers nil )
(rat_div_nzrat_is_rat application-judgement "rat" rationals 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 )
(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 )
(RND_Max const-decl "(Fcanonic?(b))" float nil )
(r skolem-const-decl "real" IEEE_link nil )
(RND_EClosest const-decl "(Fcanonic?(b))" float nil )
(real_minus_real_is_real application-judgement "real" reals nil )
(isMax? const-decl "bool" float nil )
(RND_Max_isMax formula-decl nil float nil )
(nat nonempty-type-eq-decl nil naturalnumbers nil )
(Format type-eq-decl nil float nil )
(b const-decl "Format" IEEE_link nil )
(nnrat_exp application-judgement "nnrat" exponentiation nil )
(posrat_exp application-judgement "posrat" exponentiation nil )
(real_times_real_is_real application-judgement "real" reals nil ))
nil )
(RWB "RWB" 3507894068 ("" (skeep) (("" (postpone) nil nil )) nil ) nil
shostak)
(RND_EClosest2-1 nil 3321798760
("" (skeep)
(("" (lemma "RND_Min_isMin" )
(("" (inst?)
(("" (expand "isMin?" )
(("" (lemma "RND_Max_isMax" )
(("" (inst?)
(("" (expand "isMax?" )
(("" (flatten)
(("" (expand "RND_EClosest" )
((""
(case-replace
" abs(FtoR(RND_Min(b)(r)) - r)=r - FtoR[radix](RND_Min(b)(r))" )
(("1"
(case-replace
"abs(FtoR(RND_Max(b)(r)) - r)=FtoR[radix](RND_Max(b)(r)) - r" )
(("1" (hide-all-but 1)
(("1" (grind-reals)
(("1" (lemma "MaxSuccMin" )
(("1"
(inst
-1
"b"
"RND_Min(b)(r)"
"RND_Max(b)(r)"
"r" )
(("1"
(split)
(("1"
(case
"r=(RND_Max(b)(r)+RND_Min(b)(r))/2" )
(("1"
(hide 1 2)
(("1"
(hide 1)
(("1"
(expand "RND_Min" )
(("1"
(grind-reals)
(("1"
(hide -2)
(("1"
(expand "abs" )
(("1"
(case-replace
"(r * radix ^ (-Fexp(RND_aux(b)(r))))=(Fnum(RND_aux(b)(r)))+1/2" )
(("1"
(expand "even?" )
(("1"
(skosimp*)
(("1"
(replace -4)
(("1"
(case-replace
"ceiling(2 * j!1 + 1 / 2)=2 * j!1 + 1" )
(("1"
(case-replace
"floor((2 * j!1 + 1) / 2)=j!1" )
(("1"
(expand
"FtoR" )
(("1"
(assert )
nil
nil ))
nil )
("2"
(hide-all-but
1)
(("2"
(assert )
nil
nil ))
nil ))
nil )
("2"
(hide-all-but
1)
(("2"
(assert )
(("2"
(case-replace
"1 / 2 + 2 * j!1=-1/2+(2*j!1+1)" )
(("1"
(rewrite
"ceiling_plus_int" )
(("1"
(case-replace
"ceiling(-(1 / 2))=0" )
(("1"
(assert )
nil
nil )
("2"
(assert )
nil
nil ))
nil ))
nil )
("2"
(assert )
nil
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2"
(hide 2)
(("2"
(rewrite
"expt_inverse" )
(("2"
(field 1)
(("2"
(copy -2)
(("2"
(replace
-2)
(("2"
(hide -3)
(("2"
(case-replace
"Fsucc(b)(RND_aux(b)(r))=RND_aux(b)(r)+radix ^ Fexp(RND_aux(b)(r))" )
(("1"
(expand
"FtoR" )
(("1"
(propax)
nil
nil ))
nil )
("2"
(hide
2)
(("2"
(move-terms
1
r
1)
(("2"
(rewrite
"FsuccDiff" )
(("1"
(rewrite
"FulpCanonic" )
nil
nil )
("2"
(lemma
"RleRoundedR0" )
(("2"
(inst
-1
"isMin?"
"b"
"RND_Min(b)(r)"
"r" )
(("2"
(split)
(("1"
(expand
"RND_Min" )
(("1"
(propax)
nil
nil ))
nil )
("2"
(propax)
nil
nil )
("3"
(rewrite
"RND_Min_isMin" )
nil
nil )
("4"
(rewrite
"isMin_RoundedMode" )
nil
nil )
("5"
(rewrite
"FcanonicBounded" )
nil
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2"
(flip-ineq 1)
(("2"
(name
"AA"
"Fpred(b)(Fopp(RND_aux(b)(-r)))" )
(("2"
(copy -2)
(("2"
(replace -2)
(("2"
(hide -3)
(("2"
(expand "abs" )
(("2"
(case
"RND_aux(b)(-r)=Fopp(Fsucc(b)(AA))" )
(("1"
(replaces
-1
2)
(("1"
(expand
"Fopp"
2)
(("1"
(case-replace
"r * radix ^ (-Fexp(Fsucc(b)(AA)))=Fnum(Fsucc(b)(AA))-1/2" )
(("1"
(case-replace
"ceiling(Fnum(Fsucc(b)(AA)) - 1 / 2)=Fnum(Fsucc(b)(AA))" )
(("1"
(case-replace
"floor(Fnum(Fsucc(b)(AA)) / 2)=(Fnum(Fsucc(b)(AA))-1)/2" )
(("1"
(expand
"FtoR" )
(("1"
(field
2)
(("1"
(move-terms
2
r
1)
(("1"
(case
"radix ^ Fexp(Fsucc(b)(AA))=Fsucc(b)(AA)-AA" )
(("1"
(expand
"FtoR"
-1)
(("1"
(assert )
nil
nil ))
nil )
("2"
(case-replace
"Fsucc(b)(AA)=Fopp(Fpred(b)(Fopp(AA)))" )
(("1"
(hide
2
3)
(("1"
(case-replace
"radix ^ Fexp(Fopp(Fpred(b)(Fopp(AA))))=radix ^ Fexp((Fpred(b)(Fopp(AA))))" )
(("1"
(rewrite
"FoppCorrect" )
(("1"
(case-replace
" FtoR[radix](AA)=-(Fopp(AA))" )
(("1"
(case-replace
"-FtoR(Fpred(b)(Fopp(AA))) - -(FtoR[radix]((Fopp(AA))))
= Fopp(AA)-Fpred(b)(Fopp(AA))")
(("1"
(rewrite
"FpredDiff" )
(("1"
(rewrite
"FulpCanonic" )
(("1"
(case-replace
"Fpred(b)(Fopp(AA))=Fopp(RND_Max(b)(r))" )
(("1"
(lemma
"FcanonicOpp" )
(("1"
(hide-all-but
(-1
1))
(("1"
(inst
-1
"b"
"RND_Max(b)(r)" )
(("1"
(assert )
nil
nil ))
nil ))
nil ))
nil )
("2"
(rewrite
-10)
(("2"
(expand
"Fopp"
1)
(("2"
(decompose-equality
1)
nil
nil ))
nil ))
nil ))
nil ))
nil )
("2"
(rewrite
"FoppCorrect" )
(("2"
(replace
-9
:dir
rl)
(("2"
(hide-all-but
(-8
1))
(("2"
(rewrite
"FpredFoppFsucc" )
(("2"
(rewrite
"FoppCorrect" )
(("2"
(assert )
(("2"
(trans-ineq
1
"FtoR(Fsucc(b)(RND_aux(b)(-r)))"
:strict
1)
(("1"
(rewrite
"FsuccPos" )
(("1"
(lemma
"RleRoundedR0" )
(("1"
(inst
-1
"isMin?"
"b"
"RND_Min(b)(-r)"
"-r" )
(("1"
(split)
(("1"
(expand
"RND_Min" )
(("1"
(propax)
nil
nil ))
nil )
("2"
(assert )
nil
nil )
("3"
(rewrite
"RND_Min_isMin" )
nil
nil )
("4"
(rewrite
"isMin_RoundedMode" )
nil
nil )
("5"
(rewrite
"FcanonicBounded" )
nil
nil ))
nil ))
nil ))
nil ))
nil )
("2"
(assert )
nil
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("3"
(replace
-9
:dir
rl)
(("3"
(hide-all-but
1)
(("3"
(lemma
"FcanonicOpp" )
(("3"
(inst
-1
"b"
"Fpred(b)(Fopp(RND_aux(b)(-r)))" )
(("3"
(flatten)
(("3"
(rewrite
-1)
(("3"
(rewrite
"FpredCanonic" )
(("3"
(lemma
"FcanonicOpp" )
(("3"
(inst
-1
"b"
"RND_aux(b)(-r)" )
(("3"
(assert )
nil
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2"
(assert )
nil
nil ))
nil )
("2"
(rewrite
"FoppCorrect" )
(("2"
(assert )
nil
nil ))
nil ))
nil ))
nil )
("2"
(expand
"Fopp"
1)
(("2"
(propax)
nil
nil ))
nil ))
nil ))
nil )
("2"
(rewrite
"FpredFoppFsucc" )
(("2"
(expand
"Fopp"
1)
(("2"
(decompose-equality
1)
nil
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2"
(case
"odd?(Fnum(Fsucc(b)(AA)))" )
(("1"
(expand
"odd?" )
(("1"
(skosimp*)
(("1"
(hide-all-but
(-1
1))
(("1"
(replace
-1)
(("1"
(assert )
(("1"
(case-replace
"(1 + 2 * j!1) / 2=1/2+j!1" )
(("1"
(rewrite
"floor_plus_int" )
(("1"
(assert )
nil
nil ))
nil )
("2"
(field
1)
nil
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2"
(rewrite
"EvenFsuccOdd" )
(("2"
(replace
-4
:dir
rl)
(("2"
(hide-all-but
(-3
1))
(("2"
(rewrite
"FpredCanonic" )
(("2"
(lemma
"FcanonicOpp" )
(("2"
(inst
-1
"b"
"RND_aux(b)(-r)" )
(("2"
(assert )
nil
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2"
(assert )
nil
nil ))
nil )
("2"
(rewrite
"expt_inverse" )
(("2"
(field
1)
(("2"
(hide
2
3)
(("2"
(copy
-4)
(("2"
(replace
-4)
(("2"
(hide
-5)
(("2"
(case-replace
"AA=Fsucc(b)(AA)-radix ^ Fexp(Fsucc(b)(AA))" )
(("1"
(expand
"FtoR"
1)
(("1"
(propax)
nil
nil ))
nil )
("2"
(hide
2)
(("2"
(case-replace
"Fsucc(b)(AA)=Fopp(Fpred(b)(Fopp(AA)))" )
(("1"
(case-replace
"Fexp(Fopp(Fpred(b)(Fopp(AA))))=Fexp((Fpred(b)(Fopp(AA))))" )
(("1"
(rewrite
"FoppCorrect" )
(("1"
(case-replace
"FtoR[radix](AA)=-(Fopp(AA))" )
(("1"
(case
"radix ^ Fexp((Fpred(b)(Fopp(AA))))=Fopp(AA)-Fpred(b)(Fopp(AA))" )
(("1"
(assert )
nil
nil )
("2"
(rewrite
"FpredDiff" )
(("1"
(rewrite
"FulpCanonic" )
(("1"
(hide-all-but
(-4
1))
(("1"
(lemma
"FcanonicOpp" )
(("1"
(inst
-1
"b"
"Fpred(b)(Fopp(AA))" )
(("1"
(assert )
nil
nil ))
nil ))
nil ))
nil ))
nil )
("2"
(replace
-6
:dir
rl)
(("2"
(hide
2
3
-1
-2
-3)
(("2"
(rewrite
"FpredFoppFsucc" )
(("2"
(rewrite
"FoppCorrect" )
(("2"
(rewrite
"FoppCorrect" )
(("2"
(trans-ineq
1
"FtoR(Fsucc(b)(RND_aux(b)(-r)))"
:strict
1)
(("1"
(rewrite
"FsuccPos" )
(("1"
(lemma
"RleRoundedR0" )
(("1"
(inst
-1
"isMin?"
"b"
"RND_Min(b)(-r)"
"-r" )
(("1"
(split)
(("1"
(expand
"RND_Min" )
(("1"
(propax)
nil
nil ))
nil )
("2"
(assert )
nil
nil )
("3"
(rewrite
"RND_Min_isMin" )
nil
nil )
("4"
(rewrite
"isMin_RoundedMode" )
nil
nil )
("5"
(rewrite
"FcanonicBounded" )
nil
nil ))
nil ))
nil ))
nil ))
nil )
("2"
(assert )
nil
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("3"
(replace
-6
:dir
rl)
(("3"
(hide-all-but
(-5
1))
(("3"
(rewrite
"FpredFoppFsucc" )
(("3"
(case-replace
"Fopp(Fopp(Fsucc(b)(RND_aux(b)(-r))))=Fsucc(b)(RND_aux(b)(-r))" )
(("1"
(rewrite
"FsuccCanonic" )
nil
nil )
("2"
(expand
"Fopp"
1)
(("2"
(decompose-equality
1)
(("2"
(grind-reals)
nil
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2"
(rewrite
"FoppCorrect" )
(("2"
(assert )
nil
nil ))
nil ))
nil ))
nil )
("2"
(expand
"Fopp" )
(("2"
(propax)
nil
nil ))
nil ))
nil )
("2"
(rewrite
"FpredFoppFsucc" )
(("2"
(expand
"Fopp"
1)
(("2"
(decompose-equality
1)
nil
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2"
(replace
-2
:dir
rl)
(("2"
(rewrite
"FsuccFpred" )
(("1"
(expand
"Fopp"
1)
(("1"
(decompose-equality
1)
nil
nil ))
nil )
("2"
(lemma
"FcanonicOpp" )
(("2"
(inst
-1
"b"
"RND_aux(b)(-r)" )
(("2"
(assert )
nil
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2" (grind-reals) nil nil ))
nil )
("2" (propax) nil nil )
("3"
(rewrite "RND_Max_isMax" )
nil
nil )
("4"
(rewrite "RND_Min_isMin" )
nil
nil )
("5" (assert ) nil nil )
("6" (assert ) nil nil ))
nil ))
nil ))
nil )
("2" (lemma "MaxSuccMin" )
(("2"
(inst
-1
"b"
"RND_Min(b)(r)"
"RND_Max(b)(r)"
"r" )
(("2"
(split)
(("1"
(replace -1)
(("1"
(expand "RND_Min" )
(("1"
(grind-reals)
(("1"
(expand "abs" )
(("1"
(case-replace
"r * radix ^ (-Fexp(RND_aux(b)(r)))
=Fnum(RND_aux(b)(r))+1/2")
(("1"
(case-replace
"ceiling(Fnum(RND_aux(b)(r)) + 1 / 2)=Fnum(RND_aux(b)(r)) + 1" )
(("1"
(case-replace
"floor((Fnum(RND_aux(b)(r)) + 1) / 2)=
(Fnum(RND_aux(b)(r)) + 1)/2")
(("1"
(hide 1 2 3 4)
(("1"
(case-replace
"Fsucc(b)(RND_aux(b)(r))=RND_aux(b)(r)+Fulp(b)(RND_aux(b)(r))" )
(("1"
(rewrite
"FulpCanonic" )
(("1"
(expand
"FtoR"
1)
(("1"
(field 1)
nil
nil ))
nil ))
nil )
("2"
(rewrite
"FsuccDiff"
:dir
rl)
(("1"
(assert )
nil
nil )
("2"
(lemma
"RleRoundedR0" )
(("2"
(inst
-1
"isMin?"
"b"
"RND_Min(b)(r)"
"r" )
(("2"
(split)
(("1"
(expand
"RND_Min" )
(("1"
(propax)
nil
nil ))
nil )
("2"
(propax)
nil
nil )
("3"
(rewrite
"RND_Min_isMin" )
nil
nil )
("4"
(rewrite
"isMin_RoundedMode" )
nil
nil )
("5"
(rewrite
"FcanonicBounded" )
nil
nil ))
nil ))
nil ))
nil ))
nil )
("3"
(rewrite
"FcanonicBounded" )
nil
nil ))
nil ))
nil )
("2"
(hide 2 3 4 6)
(("2"
(case
"odd?(Fnum(RND_aux(b)(r)))" )
(("1"
(expand "odd?" )
(("1"
(skosimp*)
(("1"
(replace -1)
(("1"
(field 1)
nil
nil ))
nil ))
nil ))
nil )
("2"
(lemma
"even_or_odd" )
(("2"
(inst?)
(("2"
(assert )
nil
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2" (assert ) nil nil ))
nil )
("2"
(rewrite "expt_inverse" )
(("2"
(field 1)
(("2"
(case-replace
"(radix ^ Fexp(RND_aux(b)(r))) +
2 * (Fnum(RND_aux(b)(r)) * (radix ^ Fexp(RND_aux(b)(r))))=RND_aux(b)(r)
+ Fsucc(b)(RND_aux(b)(r))")
(("1"
(grind-reals)
nil
nil )
("2"
(hide 2 3 4 6 7)
(("2"
(case-replace
"Fsucc(b)(RND_aux(b)(r))=RND_aux(b)(r)+Fulp(b)(RND_aux(b)(r))" )
(("1"
(rewrite
"FulpCanonic" )
(("1"
(expand
"FtoR"
1)
(("1"
(propax)
nil
nil ))
nil ))
nil )
("2"
(rewrite
"FsuccDiff"
:dir
rl)
(("1"
(assert )
nil
nil )
("2"
(lemma
"RleRoundedR0" )
(("2"
(inst
-1
"isMin?"
"b"
"RND_Min(b)(r)"
"r" )
(("2"
(split)
(("1"
(expand
"RND_Min" )
(("1"
(propax)
nil
nil ))
nil )
("2"
(propax)
nil
nil )
("3"
(rewrite
"RND_Min_isMin" )
nil
nil )
("4"
(rewrite
"isMin_RoundedMode" )
nil
nil )
("5"
(rewrite
"FcanonicBounded" )
nil
nil ))
nil ))
nil ))
nil ))
nil )
("3"
(rewrite
"FcanonicBounded" )
nil
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2"
(flip-ineq 4)
(("2"
(rewrite "FsuccFpred" )
(("1"
(expand "abs" )
(("1"
(case-replace
"Fexp(RND_aux(b)(-r))=Fexp(Fopp(RND_aux(b)(-r)))" )
(("1"
(name-replace
"AA"
"Fopp(RND_aux(b)(-r))" )
(("1"
(case-replace
"r * radix ^ (-Fexp(AA))=Fnum(AA)-1/2" )
(("1"
(case-replace
"ceiling(Fnum(AA) - 1 / 2)=Fnum(AA)" )
(("1"
(case-replace
"floor(Fnum(AA) / 2)=Fnum(AA) / 2" )
(("1"
(expand
"FtoR"
6)
(("1"
(field 6)
nil
nil ))
nil )
("2"
(case
"even?(Fnum(AA))" )
(("1"
(expand
"even?" )
(("1"
(skosimp*)
(("1"
(hide-all-but
(-1
1))
(("1"
(replace
-1)
(("1"
(field
1)
nil
nil ))
nil ))
nil ))
nil ))
nil )
("2"
(case
"AA=Fsucc(b)(Fpred(b)(AA))" )
(("1"
(replaces
-1
1)
(("1"
(rewrite
"OddFsuccEven" )
(("1"
(lemma
"even_or_odd" )
(("1"
(inst
-1
"Fnum(Fpred(b)(AA))" )
(("1"
(assert )
nil
nil ))
nil ))
nil )
("2"
(rewrite
"FpredCanonic" )
nil
nil ))
nil ))
nil )
("2"
(rewrite
"FsuccFpred" )
nil
nil ))
nil ))
nil ))
nil )
("2"
(assert )
nil
nil ))
nil )
("2"
(rewrite
"expt_inverse" )
(("2"
(field 1)
(("2"
(case-replace
"2 * (Fnum(AA) * (radix ^ Fexp(AA))) - (radix ^ Fexp(AA))
= AA+Fpred(b)(AA)")
(("1"
(grind-reals)
nil
nil )
("2"
(hide
2
3
4
5
6
7
8)
(("2"
(case-replace
"2 * (Fnum(AA) * (radix ^ Fexp(AA))) - (radix ^ Fexp(AA))=2*AA-(radix ^ Fexp(AA))" )
(("1"
(move-terms
1
r
(1 2))
(("1"
(move-terms
1
l
2)
(("1"
(assert )
(("1"
(case-replace
"FtoR[radix](AA)=-(Fopp(AA))" )
(("1"
(case-replace
"Fpred(b)(AA)=Fopp(Fsucc(b)(Fopp(AA)))" )
(("1"
(case-replace
"radix ^ Fexp(AA)=Fulp(b)(Fopp(AA))" )
(("1"
(rewrite
"FsuccDiff"
:dir
rl)
(("1"
(assert )
(("1"
(rewrite
"FoppCorrect" )
(("1"
(assert )
(("1"
(rewrite
"FoppCorrect" )
(("1"
(assert )
nil
nil ))
nil ))
nil ))
nil ))
nil )
("2"
(rewrite
"FoppCorrect" )
(("2"
(case
"AA <= 0" )
(("1"
(assert )
nil
nil )
("2"
(lemma
"RleRoundedLessR0" )
(("2"
(inst
-1
"isMax?"
"b"
"RND_Max(b)(r)"
"r" )
(("2"
(split)
(("1"
(assert )
nil
nil )
("2"
(assert )
nil
nil )
("3"
(rewrite
"RND_Max_isMax" )
nil
nil )
("4"
(rewrite
"isMax_RoundedMode" )
nil
nil )
("5"
(rewrite
"FcanonicBounded" )
nil
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("3"
(lemma
"FcanonicOpp" )
(("3"
(inst
-1
"b"
"AA" )
(("3"
(assert )
nil
nil ))
nil ))
nil ))
nil )
("2"
(rewrite
"FulpCanonic" )
(("1"
(assert )
(("1"
(expand
"Fopp" )
(("1"
(propax)
nil
nil ))
nil ))
nil )
("2"
(lemma
"FcanonicOpp" )
(("2"
(inst
-1
"b"
"AA" )
(("2"
(assert )
nil
nil ))
nil ))
nil ))
nil )
("3"
(rewrite
"FoppBounded" )
(("3"
(rewrite
"FcanonicBounded" )
nil
nil ))
nil ))
nil )
("2"
(rewrite
"FsuccFoppFpred" )
(("2"
(expand
"Fopp"
1)
(("2"
(decompose-equality
1)
nil
nil ))
nil ))
nil ))
nil )
("2"
(rewrite
"FoppCorrect" )
(("2"
(assert )
nil
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2"
(expand
"FtoR"
1)
(("2"
(propax)
nil
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2"
(expand "Fopp" 1)
(("2"
(propax)
nil
nil ))
nil ))
nil ))
nil )
("2"
(hide 2 3 4 5 6 7)
(("2"
(lemma "FcanonicOpp" )
(("2"
(inst
-1
"b"
"RND_aux(b)(-r)" )
(("2"
(assert )
nil
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2" (propax) nil nil )
("3"
(rewrite "RND_Max_isMax" )
nil
nil )
("4"
(rewrite "RND_Min_isMin" )
nil
nil )
("5" (assert ) nil nil )
("6" (assert ) nil nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2" (hide 2)
(("2" (expand "abs" 1)
(("2" (grind-reals) nil nil )) nil ))
nil ))
nil )
("2" (hide 2)
(("2" (expand "abs" 1)
(("2" (grind-reals) nil nil )) nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
((RND_Min_isMin formula-decl nil float nil )
(isMin? const-decl "bool" float nil )
(float type-eq-decl nil float nil )
(FtoR const-decl "real" float nil )
(Fcanonic? const-decl "bool" float nil )
(RND_Min const-decl "(Fcanonic?(b))" float nil )
(FsuccFoppFpred formula-decl nil float nil )
(RleRoundedLessR0 formula-decl nil float nil )
(isMax_RoundedMode formula-decl nil float nil )
(FoppBounded formula-decl nil float nil )
(OddFsuccEven formula-decl nil float nil )
(Fulp const-decl "real" float nil )
(MaxSuccMin formula-decl nil float nil )
(FsuccCanonic formula-decl nil float nil )
(EvenFsuccOdd formula-decl nil float nil )
(FpredDiff formula-decl nil float nil )
(FcanonicOpp formula-decl nil float nil )
(FpredFoppFsucc formula-decl nil float nil )
(FsuccPos formula-decl nil float nil )
(FpredCanonic formula-decl nil float nil )
(FoppCorrect formula-decl nil float nil )
(FsuccFpred formula-decl nil float nil )
(Fopp const-decl "float" float nil )
(Fpred const-decl "float" float nil )
(RND_aux const-decl "(Fcanonic?(b))" float nil )
(FsuccDiff formula-decl nil float nil )
(FulpCanonic formula-decl nil float nil )
(RND type-eq-decl nil float nil )
(Fbounded? const-decl "bool" float nil )
(FcanonicBounded formula-decl nil float nil )
(isMin_RoundedMode formula-decl nil float nil )
(RleRoundedR0 formula-decl nil float nil )
(Fsucc const-decl "float" float nil )
(RND_Max const-decl "(Fcanonic?(b))" float nil )
(RND_EClosest const-decl "(Fcanonic?(b))" float nil )
(isMax? const-decl "bool" float nil )
(RND_Max_isMax formula-decl nil float nil )
(Format type-eq-decl nil float nil ))
shostak))
(Roundings_eq_1_TCC1 0
(Roundings_eq_1_TCC1-1 nil 3321717897
("" (skeep) (("" (assert ) nil nil )) nil )
((real_le_is_total_order name-judgement "(total_order?[real])"
real_props nil ))
nil ))
(Roundings_eq_1_TCC2 0
(Roundings_eq_1_TCC2-1 nil 3321786922
("" (skeep)
(("" (lemma "E_max_gt_E_min" ) (("" (propax) nil nil )) nil )) nil )
((E_min formal-const-decl "integer" IEEE_link nil )
(E_max formal-const-decl "integer" IEEE_link nil )
(alpha formal-const-decl "integer" IEEE_link nil )
(integer nonempty-type-from-decl nil integers nil )
(p formal-const-decl "above(1)" IEEE_link nil )
(radix formal-const-decl "above(1)" IEEE_link nil )
(above nonempty-type-eq-decl nil integers 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 )
(E_max_gt_E_min formula-decl nil IEEE_854 nil ))
nil ))
(Roundings_eq_1 0
(Roundings_eq_1-1 nil 3321717898
("" (skeep)
(("" (case "0 <= r" )
(("1" (rewrite "Roundings_eq_pos" )
(("1" (expand "abs" ) (("1" (propax) nil nil )) nil )) nil )
("2" (flip-ineq 1)
(("2"
(case-replace
"FtoR[radix](RND_Min(b)(r))=-FtoR[radix](RND_Max(b)(-r))" )
(("1"
(case-replace
" fp_round(r, to_neg)= -fp_round(-r, to_pos)" )
(("1" (rewrite "Roundings_eq_neg" )
(("1" (expand "abs" 1)
(("1" (case "max_pos=-max_neg" )
(("1" (assert ) nil nil )
("2"
(expand * "max_pos" "max_neg" "max_fp_pos"
"max_fp_neg" "value" "pos" "neg" )
(("2" (rewrite "expt_x0" )
(("2" (rewrite "expt_x1" )
(("2" (assert ) nil nil )) nil ))
nil ))
nil )
("3" (lemma "E_max_gt_E_min" )
(("3" (propax) nil nil )) nil ))
nil ))
nil ))
nil )
("2" (rewrite "fp_round_opp" ) nil nil )
("3" (lemma "E_max_gt_E_min" ) (("3" (propax) nil nil ))
nil ))
nil )
("2" (hide 2 3 -2)
(("2" (lemma "isMin_Unique" )
(("2" (expand "Unique?" )
(("2"
(inst -1 "b" "r" "RND_Min(b)(r)"
"Fopp(RND_Max(b)(-r))" )
(("1" (rewrite "FoppCorrect" )
(("1" (split)
(("1" (propax) nil nil )
("2" (case-replace "r=--r" )
(("1" (rewrite "MaxOppMin" )
(("1" (rewrite -1 :dir rl)
(("1" (rewrite "RND_Max_isMax" ) nil nil ))
nil )
("2" (rewrite "FcanonicBounded" ) nil nil ))
nil )
("2" (assert ) nil nil ))
nil )
("3" (rewrite "RND_Min_isMin" ) nil nil ))
nil ))
nil )
("2" (rewrite "FoppBounded" )
(("2" (rewrite "FcanonicBounded" ) nil nil )) nil )
("3" (rewrite "FcanonicBounded" ) nil nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
((<= const-decl "bool" reals nil )
(bool nonempty-type-eq-decl nil 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 )
(boolean nonempty-type-decl nil booleans nil )
(number nonempty-type-decl nil numbers 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 )
(nnrat_exp application-judgement "nnrat" exponentiation nil )
(posrat_exp application-judgement "posrat" exponentiation nil )
(int_plus_int_is_int application-judgement "int" integers nil )
(real_le_is_total_order name-judgement "(total_order?[real])"
real_props nil )
(Roundings_eq_pos formula-decl nil IEEE_link nil )
(minus_real_is_real application-judgement "real" reals nil )
(= const-decl "[T, T -> boolean]" equalities nil )
(int nonempty-type-eq-decl nil integers 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 )
(above nonempty-type-eq-decl nil integers nil )
(radix formal-const-decl "above(1)" IEEE_link nil )
(float type-eq-decl nil float nil )
(FtoR const-decl "real" float nil )
(nat nonempty-type-eq-decl nil naturalnumbers nil )
(Format type-eq-decl nil float nil )
(Fcanonic? const-decl "bool" float nil )
(RND_Min const-decl "(Fcanonic?(b))" float nil )
(b const-decl "Format" IEEE_link nil )
(numfield nonempty-type-eq-decl nil number_fields nil )
(- const-decl "[numfield -> numfield]" number_fields nil )
(RND_Max const-decl "(Fcanonic?(b))" float nil )
(fp_round_opp formula-decl nil IEEE_link nil )
(Roundings_eq_neg formula-decl nil IEEE_link nil )
(minus_nzreal_is_nzreal application-judgement "nzreal" real_types
nil )
(>= const-decl "bool" reals nil )
(nonneg_real nonempty-type-eq-decl nil real_types nil )
(posreal nonempty-type-eq-decl nil real_types nil )
(max_pos const-decl "posreal" IEEE_854_values nil )
(nonpos_real nonempty-type-eq-decl nil real_types nil )
(< const-decl "bool" reals nil )
(negreal nonempty-type-eq-decl nil real_types nil )
(max_neg const-decl "negreal" IEEE_854_values nil )
(expt_x0 formula-decl nil exponentiation nil )
(minus_odd_is_odd application-judgement "odd_int" integers nil )
(int_exp application-judgement "int" exponentiation nil )
(nzreal_exp application-judgement "nzreal" exponentiation nil )
(real_times_real_is_real application-judgement "real" reals nil )
(expt_x1 formula-decl nil exponentiation nil )
(max_fp_pos const-decl "fp_num" IEEE_854_values nil )
(value const-decl "real" IEEE_854_values nil )
(neg const-decl "sign_rep" enumerated_type_defs nil )
(pos const-decl "sign_rep" enumerated_type_defs nil )
(max_fp_neg const-decl "fp_num" IEEE_854_values nil )
(rounding_mode type-decl nil enumerated_type_defs nil )
(fp_round const-decl "real" real_to_fp nil )
(to_neg? adt-recognizer-decl "[rounding_mode -> boolean]"
enumerated_type_defs nil )
(to_neg adt-constructor-decl "(to_neg?)" enumerated_type_defs nil )
(to_pos? adt-recognizer-decl "[rounding_mode -> boolean]"
enumerated_type_defs nil )
(to_pos adt-constructor-decl "(to_pos?)" enumerated_type_defs nil )
(E_max_gt_E_min formula-decl nil IEEE_854 nil )
(p formal-const-decl "above(1)" IEEE_link nil )
(integer nonempty-type-from-decl nil integers nil )
(alpha formal-const-decl "integer" IEEE_link nil )
(E_max formal-const-decl "integer" IEEE_link nil )
(E_min formal-const-decl "integer" IEEE_link nil )
(isMin_Unique formula-decl nil float nil )
(Fopp const-decl "float" float nil )
(r skolem-const-decl "real" IEEE_link nil )
(Fbounded? const-decl "bool" float nil )
(MaxOppMin formula-decl nil float nil )
(RND_Max_isMax formula-decl nil float nil )
(FcanonicBounded formula-decl nil float nil )
(RND_Min_isMin formula-decl nil float nil )
(FoppCorrect formula-decl nil float nil )
(FoppBounded formula-decl nil float nil )
(Unique? const-decl "bool" float nil )
(real_gt_is_strict_total_order name-judgement
"(strict_total_order?[real])" real_props nil )
(> const-decl "bool" reals nil ))
shostak))
(Roundings_eq_2_TCC1 0
(Roundings_eq_2_TCC1-1 nil 3321787154
("" (skeep)
(("" (lemma "E_max_gt_E_min" ) (("" (propax) nil nil )) nil )) nil )
((E_min formal-const-decl "integer" IEEE_link nil )
(E_max formal-const-decl "integer" IEEE_link nil )
(alpha formal-const-decl "integer" IEEE_link nil )
(integer nonempty-type-from-decl nil integers nil )
(p formal-const-decl "above(1)" IEEE_link nil )
(radix formal-const-decl "above(1)" IEEE_link nil )
(above nonempty-type-eq-decl nil integers 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 )
(E_max_gt_E_min formula-decl nil IEEE_854 nil ))
nil ))
(Roundings_eq_2 0
(Roundings_eq_2-1 nil 3321787155
("" (skeep)
(("" (case "0 < r" )
(("1" (rewrite "Roundings_eq_neg" )
(("1" (expand "abs" ) (("1" (propax) nil nil )) nil )) nil )
("2" (case "fp_round(r, to_pos)= - fp_round(-r, to_neg)" )
(("1" (case "fp_round(-r, to_neg)=FtoR[radix](RND_Min(b)(-r))" )
(("1"
(case "-FtoR[radix](RND_Min(b)(-r))= FtoR[radix](RND_Max(b)(r))" )
(("1" (assert ) nil nil )
("2" (hide-all-but 1)
(("2" (rewrite "FoppCorrect" :dir rl)
(("2" (lemma "isMax_Unique" )
(("2" (expand "Unique?" )
(("2"
(inst -1 "b" "r" "Fopp(RND_Min(b)(-r))"
"RND_Max(b)(r)" )
(("1" (split)
(("1" (propax) nil nil )
("2" (rewrite "RND_Max_isMax" ) nil nil )
("3" (case-replace "r=--r" )
(("1" (rewrite "MinOppMax" )
(("1" (rewrite "RND_Min_isMin" ) nil nil )
("2" (rewrite "FcanonicBounded" ) nil nil ))
nil )
("2" (assert ) nil nil ))
nil ))
nil )
("2" (rewrite "FcanonicBounded" ) nil nil )
("3" (rewrite "FoppBounded" )
(("3" (rewrite "FcanonicBounded" ) nil nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2" (rewrite "Roundings_eq_pos" )
(("2" (expand "abs" ) (("2" (grind-reals) nil nil )) nil ))
nil ))
nil )
("2" (rewrite "fp_round_opp" )
(("1" (assert ) nil nil )
("2" (case-replace "r=0" )
(("1" (hide-all-but 1)
(("1" (expand "fp_round" ) (("1" (assert ) nil nil )) nil ))
nil )
("2" (assert ) nil nil ))
nil ))
nil )
("3" (lemma "E_max_gt_E_min" ) (("3" (propax) nil nil )) nil ))
nil ))
nil ))
nil )
((< const-decl "bool" reals nil )
(bool nonempty-type-eq-decl nil 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 )
(boolean nonempty-type-decl nil booleans nil )
(number nonempty-type-decl nil numbers nil )
(abs const-decl "{n: nonneg_real | n >= m AND n >= -m}" real_defs
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_nzrat_is_nzrat application-judgement "nzrat" rationals nil )
(nnrat_exp application-judgement "nnrat" exponentiation nil )
(int_plus_int_is_int application-judgement "int" integers nil )
(posrat_exp application-judgement "posrat" exponentiation nil )
(Roundings_eq_neg formula-decl nil IEEE_link nil )
(fp_round_opp formula-decl nil IEEE_link nil )
(b const-decl "Format" IEEE_link nil )
(RND_Min const-decl "(Fcanonic?(b))" float nil )
(Fcanonic? const-decl "bool" float nil )
(Format type-eq-decl nil float nil )
(nat nonempty-type-eq-decl nil naturalnumbers nil )
(FtoR const-decl "real" float nil )
(float type-eq-decl nil float nil )
(isMax_Unique formula-decl nil float nil )
(r skolem-const-decl "real" IEEE_link nil )
(Fopp const-decl "float" float nil )
(Fbounded? const-decl "bool" float nil )
(FcanonicBounded formula-decl nil float nil )
(RND_Min_isMin formula-decl nil float nil )
(MinOppMax formula-decl nil float nil )
(RND_Max_isMax formula-decl nil float nil )
(FoppBounded formula-decl nil float nil )
(Unique? const-decl "bool" float nil )
(FoppCorrect formula-decl nil float nil )
(RND_Max const-decl "(Fcanonic?(b))" float nil )
(Roundings_eq_pos formula-decl nil IEEE_link nil )
(real_gt_is_strict_total_order name-judgement
"(strict_total_order?[real])" real_props nil )
(minus_real_is_real application-judgement "real" reals nil )
(= const-decl "[T, T -> boolean]" equalities nil )
(rounding_mode type-decl nil enumerated_type_defs 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 )
(above nonempty-type-eq-decl nil integers nil )
(radix formal-const-decl "above(1)" IEEE_link nil )
(p formal-const-decl "above(1)" IEEE_link nil )
(integer nonempty-type-from-decl nil integers nil )
(alpha formal-const-decl "integer" IEEE_link nil )
(E_max formal-const-decl "integer" IEEE_link nil )
(E_min formal-const-decl "integer" IEEE_link nil )
(fp_round const-decl "real" real_to_fp nil )
(to_pos? adt-recognizer-decl "[rounding_mode -> boolean]"
enumerated_type_defs nil )
(to_pos adt-constructor-decl "(to_pos?)" enumerated_type_defs nil )
(numfield nonempty-type-eq-decl nil number_fields nil )
(- const-decl "[numfield -> numfield]" number_fields nil )
(to_neg? adt-recognizer-decl "[rounding_mode -> boolean]"
enumerated_type_defs nil )
(to_neg adt-constructor-decl "(to_neg?)" enumerated_type_defs nil ))
shostak))
(Roundings_eq_3_TCC1 0
(Roundings_eq_3_TCC1-1 nil 3321788177 ("" (subtype-tcc) nil nil )
((/= const-decl "boolean" notequal nil )) nil ))
(Roundings_eq_3_TCC2 0
(Roundings_eq_3_TCC2-1 nil 3321788177
("" (skeep)
(("" (lemma "E_max_gt_E_min" ) (("" (propax) nil nil )) nil )) nil )
((E_min formal-const-decl "integer" IEEE_link nil )
(E_max formal-const-decl "integer" IEEE_link nil )
(alpha formal-const-decl "integer" IEEE_link nil )
(integer nonempty-type-from-decl nil integers nil )
(p formal-const-decl "above(1)" IEEE_link nil )
(radix formal-const-decl "above(1)" IEEE_link nil )
(above nonempty-type-eq-decl nil integers 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 )
(E_max_gt_E_min formula-decl nil IEEE_854 nil ))
nil ))
(Roundings_eq_3 0
(Roundings_eq_3-1 nil 3321788178
("" (skeep)
(("" (case "abs(r) <= max_pos" )
(("1" (rewrite "RND_EClosest2" )
(("1" (rewrite "Roundings_eq_1" :dir rl)
(("1" (rewrite "Roundings_eq_2" :dir rl)
(("1" (grind-reals)
(("1" (expand "fp_round" )
(("1" (grind-reals)
(("1" (expand "round_exceptions" )
(("1" (expand "round_exceptions_x" )
(("1" (expand "underflow" )
(("1" (grind-reals)
(("1" (expand "round_under" )
(("1" (expand "round" )
(("1"
(expand "round_to_even" )
(("1"
(case
"radix ^ (-(1 + E_min - p)) * r -
floor(radix ^ (-(1 + E_min - p)) * r)
<
ceiling(radix ^ (-(1 + E_min - p)) * r) -
radix ^ (-(1 + E_min - p)) * r")
(("1" (assert ) nil nil )
("2"
(hide 4 2)
(("2"
(mult-by
1
"(radix ^ (1 + E_min - p))" )
(("2"
(assert )
(("2"
(case-replace
"(radix ^ (1 + E_min - p)) * radix ^ (-(1 + E_min - p)) * r=r" )
(("1" (assert ) nil nil )
("2"
(hide 2)
(("2"
(div-by 1 "r" )
(("2"
(rewrite
"expt_plus"
:dir
rl)
nil
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2" (expand "round_scaled" )
(("2" (div-by 4 "radix ^ (scale(abs(r)))" )
(("2" (expand "round" )
(("2" (expand "round_to_even" )
(("2"
(case "radix ^ (-scale(abs(r))) * r -
floor(radix ^ (-scale(abs(r))) * r)
<
ceiling(radix ^ (-scale(abs(r))) * r) -
radix ^ (-scale(abs(r))) * r")
(("1" (assert ) nil nil )
("2" (hide 5)
(("2"
(assert )
(("2"
(mult-by
1
"(radix ^(scale(abs(r))))" )
(("2"
(assert )
(("2"
(case-replace
"radix ^ (scale(abs(r))) * radix ^ (-scale(abs(r))) * r=r" )
--> --------------------
--> 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.0.899Bemerkung:
(Wie Sie bei der Firma Beratungs- und Dienstleistungen beauftragen können 2026-04-27)
¤
*Eine klare Vorstellung vom Zielzustand
2026-05-26