Impressum axpy.prf
Sprache: Lisp
(axpy
(FcanonicBounded2 0
(FcanonicBounded2-1 nil 3320508538
("" (skeep)
(("" (typepred "x1" ) (("" (rewrite "FcanonicBounded" ) nil nil ))
nil ))
nil )
((b formal-const-decl "Format" axpy 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)" axpy 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 )
(FcanonicBounded formula-decl nil float nil ))
nil ))
(MinOrMax_Rlt 0
(MinOrMax_Rlt-1 nil 3320496512
("" (skeep)
(("" (expand "MinOrMax?" )
(("" (split)
(("1" (rewrite "RoundedModeUlp" :subst ("b" "b" "P" "isMin?" ))
(("1" (rewrite "isMin_RoundedMode" ) nil nil )) nil )
("2" (rewrite "RoundedModeUlp" :subst ("b" "b" "P" "isMax?" ))
(("2" (rewrite "isMax_RoundedMode" ) nil nil )) nil ))
nil ))
nil ))
nil )
((MinOrMax? const-decl "bool" axpy nil )
(isMax? const-decl "bool" float nil )
(isMax_RoundedMode formula-decl nil float nil )
(RoundedModeUlp formula-decl nil float nil )
(Format type-eq-decl nil float nil )
(float type-eq-decl nil float nil )
(nat nonempty-type-eq-decl nil naturalnumbers nil )
(Fbounded? const-decl "bool" float nil )
(RND type-eq-decl nil float nil )
(isMin? const-decl "bool" float nil )
(b formal-const-decl "Format" axpy 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)" axpy nil )
(real_lt_is_strict_total_order name-judgement
"(strict_total_order?[real])" real_props nil )
(isMin_RoundedMode formula-decl nil float nil )
(real_minus_real_is_real application-judgement "real" reals nil ))
shostak))
(MinOrMax_Fopp_TCC1 0
(MinOrMax_Fopp_TCC1-1 nil 3320496511
("" (skeep) (("" (rewrite "FoppBounded" ) nil nil )) nil )
((FoppBounded formula-decl nil float nil )
(nat nonempty-type-eq-decl nil naturalnumbers nil )
(Format type-eq-decl nil float nil )
(b formal-const-decl "Format" axpy nil )
(float type-eq-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)" axpy nil ))
nil ))
(MinOrMax_Fopp 0
(MinOrMax_Fopp-1 nil 3320496618
("" (skeep)
(("" (expand "MinOrMax?" )
(("" (split)
(("1" (skosimp*) (("1" (rewrite "MinOppMax" ) nil nil )) nil )
("2" (skosimp*) (("2" (rewrite "MaxOppMin" ) nil nil )) nil ))
nil ))
nil ))
nil )
((MinOrMax? const-decl "bool" axpy nil )
(MaxOppMin formula-decl nil float nil )
(radix formal-const-decl "above(1)" axpy 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 )
(float type-eq-decl nil float nil )
(b formal-const-decl "Format" axpy nil )
(Format type-eq-decl nil float nil )
(nat nonempty-type-eq-decl nil naturalnumbers nil )
(MinOppMax formula-decl nil float nil ))
shostak))
(MinOrMax1_TCC1 0
(MinOrMax1_TCC1-1 nil 3320496511
("" (skeep)
(("" (rewrite "FcanonicBounded" )
(("" (rewrite "FpredCanonic" ) nil nil )) nil ))
nil )
((FcanonicBounded formula-decl nil float nil )
(nat nonempty-type-eq-decl nil naturalnumbers nil )
(Format type-eq-decl nil float nil )
(b formal-const-decl "Format" axpy nil )
(float type-eq-decl nil float nil )
(Fpred const-decl "float" 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)" axpy nil )
(real_lt_is_strict_total_order name-judgement
"(strict_total_order?[real])" real_props nil )
(FpredCanonic formula-decl nil float nil ))
nil ))
(MinOrMax1_TCC2 0
(MinOrMax1_TCC2-1 nil 3320504768
("" (skeep) (("" (rewrite "FcanonicBounded" ) nil nil )) nil )
((FcanonicBounded formula-decl nil float nil )
(nat nonempty-type-eq-decl nil naturalnumbers nil )
(Format type-eq-decl nil float nil )
(b formal-const-decl "Format" axpy nil )
(float type-eq-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)" axpy nil )
(real_minus_real_is_real application-judgement "real" reals nil ))
nil ))
(MinOrMax1 0
(MinOrMax1-1 nil 3320504301
("" (skeep)
(("" (case "z <= FtoR(f)" )
(("1" (expand "abs" -4)
(("1" (grind-reals)
(("1" (expand "MinOrMax?" )
(("1" (skosimp*)
(("1" (hide 1)
(("1" (expand "isMax?" )
(("1" (skosimp*)
(("1" (lemma "FsuccFpred" :subst ("f" "f" "b" "b" ))
(("1" (split)
(("1" (replace -1 1 :dir rl)
(("1"
(case-replace
"FtoR(f!1)=FtoR(Fnormalize(b)(f!1))" )
(("1" (rewrite "FsuccProp" )
(("1"
(trans-ineq 1 "z" :strict 1)
(("1"
(trans-ineq
1
" FtoR[radix](f)-Fulp(b)(Fpred(b)(f))"
:strict
2)
(("1"
(rewrite "FpredDiff" :dir rl)
(("1" (assert ) nil nil ))
nil )
("2" (assert ) nil nil ))
nil ))
nil )
("2" (rewrite "FpredCanonic" ) nil nil ))
nil )
("2" (assert ) nil nil ))
nil ))
nil )
("2" (propax) nil nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2" (flip-ineq 1)
(("2" (expand "abs" -4)
(("2" (grind-reals)
(("2" (expand "MinOrMax?" )
(("2" (skosimp*)
(("2" (hide 2)
(("2" (expand "isMin?" )
(("2" (skosimp*)
(("2"
(lemma "FpredFsucc" :subst ("f" "f" "b" "b" ))
(("2" (split)
(("1" (replace -1 1 :dir rl)
(("1"
(case-replace
"FtoR(f!1)=FtoR(Fnormalize(b)(f!1))" )
(("1"
(rewrite "FpredProp" )
(("1"
(trans-ineq 1 "z" :strict 2)
(("1"
(trans-ineq
1
"FtoR(f)+Fulp(b)(Fpred(b)(f))"
:strict
1)
(("1" (assert ) nil nil )
("2"
(trans-ineq
1
"FtoR(f)+Fulp(b)(f)" )
(("1"
(assert )
(("1"
(rewrite "FulpFpred1" )
nil
nil ))
nil )
("2"
(rewrite "FsuccDiff" :dir rl)
(("2" (assert ) nil nil ))
nil )
("3"
(skosimp*)
(("3"
(rewrite "FcanonicBounded" )
nil
nil ))
nil )
("4"
(rewrite "FcanonicBounded" )
nil
nil ))
nil ))
nil ))
nil )
("2"
(rewrite "FsuccCanonic" )
nil
nil ))
nil )
("2" (assert ) nil nil ))
nil ))
nil )
("2" (propax) nil nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
((FtoR const-decl "real" float nil )
(float type-eq-decl nil float nil )
(radix formal-const-decl "above(1)" axpy nil )
(above nonempty-type-eq-decl nil integers nil )
(> const-decl "bool" reals nil )
(integer_pred const-decl "[rational -> boolean]" integers nil )
(rational nonempty-type-from-decl nil rationals nil )
(rational_pred const-decl "[real -> boolean]" rationals nil )
(int nonempty-type-eq-decl nil integers 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 )
(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 )
(isMax? const-decl "bool" float nil )
(FsuccFpred formula-decl nil float nil )
(nat nonempty-type-eq-decl nil naturalnumbers nil )
(Format type-eq-decl nil float nil )
(b formal-const-decl "Format" axpy nil )
(Fpred const-decl "float" float nil )
(FsuccProp formula-decl nil float nil )
(Fulp const-decl "real" float nil )
(- const-decl "[numfield, numfield -> numfield]" number_fields nil )
(numfield nonempty-type-eq-decl nil number_fields nil )
(FpredDiff formula-decl nil float nil )
(< const-decl "bool" reals nil )
(FpredCanonic formula-decl nil float nil )
(= const-decl "[T, T -> boolean]" equalities nil )
(Fbounded? const-decl "bool" float nil )
(Fcanonic? const-decl "bool" float nil )
(AND const-decl "[bool, bool -> bool]" booleans nil )
(Fnormalize def-decl
"{x: (Fcanonic?(b)) | FtoR(x) = FtoR(f):: real AND Fexp(x) <= Fexp(f)}"
float nil )
(MinOrMax? const-decl "bool" axpy nil )
(abs const-decl "{n: nonneg_real | n >= m AND n >= -m}" real_defs
nil )
(FsuccCanonic formula-decl nil float nil )
(both_sides_plus_le1 formula-decl nil real_props nil )
(IMPLIES const-decl "[bool, bool -> bool]" booleans nil )
(FulpFpred1 formula-decl nil float nil )
(FsuccDiff formula-decl nil float nil )
(FcanonicBounded formula-decl nil float nil )
(real_plus_real_is_real application-judgement "real" reals nil )
(+ const-decl "[numfield, numfield -> numfield]" number_fields nil )
(FpredProp formula-decl nil float nil )
(Fsucc const-decl "float" float nil )
(FpredFsucc formula-decl nil float nil )
(isMin? const-decl "bool" float nil )
(minus_real_is_real application-judgement "real" reals nil )
(real_gt_is_strict_total_order name-judgement
"(strict_total_order?[real])" real_props nil )
(real_minus_real_is_real application-judgement "real" reals nil ))
shostak))
(MinOrMax2_TCC1 0
(MinOrMax2_TCC1-1 nil 3320505812
("" (skeep) (("" (rewrite "FcanonicBounded" ) nil nil )) nil )
((FcanonicBounded formula-decl nil float nil )
(nat nonempty-type-eq-decl nil naturalnumbers nil )
(Format type-eq-decl nil float nil )
(b formal-const-decl "Format" axpy nil )
(float type-eq-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)" axpy nil ))
nil ))
(MinOrMax2 0
(MinOrMax2-1 nil 3320505496
("" (skeep)
(("" (expand * "MinOrMax?" "isMin?" )
(("" (skosimp*)
(("" (split)
(("1" (propax) nil nil )
("2" (skosimp*)
(("2" (hide 2)
(("2" (lemma "FpredFsucc" :subst ("f" "f" "b" "b" ))
(("2"
(case-replace "FtoR(f!1)=FtoR(Fnormalize(b)(f!1))" )
(("1" (split)
(("1" (replace -1 1 :dir rl)
(("1" (rewrite "FpredProp" )
(("1" (hide 2 -1 -2)
(("1" (trans-ineq 1 "z" :strict 2)
(("1" (expand "abs" -4)
(("1"
(trans-ineq
1
"FtoR(f)+Fulp(b)(f)"
:strict
1)
(("1" (assert ) nil nil )
("2"
(rewrite "FsuccDiff" :dir rl)
(("2" (assert ) nil nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2" (rewrite "FsuccCanonic" ) nil nil ))
nil ))
nil )
("2" (propax) nil nil ))
nil )
("2" (assert ) nil nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
((isMin? const-decl "bool" float nil )
(MinOrMax? const-decl "bool" axpy nil )
(= const-decl "[T, T -> boolean]" equalities nil )
(FtoR const-decl "real" float nil )
(Fbounded? const-decl "bool" float nil )
(Fcanonic? const-decl "bool" float nil )
(AND const-decl "[bool, bool -> bool]" booleans nil )
(<= const-decl "bool" reals nil )
(Fnormalize def-decl
"{x: (Fcanonic?(b)) | FtoR(x) = FtoR(f):: real AND Fexp(x) <= Fexp(f)}"
float nil )
(FsuccCanonic formula-decl nil float nil )
(abs const-decl "{n: nonneg_real | n >= m AND n >= -m}" real_defs
nil )
(FsuccDiff formula-decl nil float nil )
(real_plus_real_is_real application-judgement "real" reals nil )
(numfield nonempty-type-eq-decl nil number_fields nil )
(+ const-decl "[numfield, numfield -> numfield]" number_fields nil )
(Fulp const-decl "real" float nil ) (< const-decl "bool" reals nil )
(real_le_is_total_order name-judgement "(total_order?[real])"
real_props nil )
(real_lt_is_strict_total_order name-judgement
"(strict_total_order?[real])" real_props nil )
(FpredProp formula-decl nil float nil )
(Fsucc const-decl "float" float nil )
(FpredFsucc formula-decl nil float nil )
(nat nonempty-type-eq-decl nil naturalnumbers nil )
(Format type-eq-decl nil float nil )
(b formal-const-decl "Format" axpy nil )
(float type-eq-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)" axpy nil )
(real_minus_real_is_real application-judgement "real" reals nil ))
shostak))
(MinOrMax3_TCC1 0
(MinOrMax3_TCC1-1 nil 3320506118
("" (skeep) (("" (rewrite "FcanonicBounded" ) nil nil )) nil )
((FcanonicBounded formula-decl nil float nil )
(nat nonempty-type-eq-decl nil naturalnumbers nil )
(Format type-eq-decl nil float nil )
(b formal-const-decl "Format" axpy nil )
(float type-eq-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)" axpy nil ))
nil ))
(MinOrMax3 0
(MinOrMax3-1 nil 3320505840
("" (skeep)
(("" (case "z <= FtoR(f)" )
(("1" (expand "abs" -4)
(("1" (grind-reals)
(("1" (expand * "MinOrMax?" "isMax?" )
(("1" (skosimp*)
(("1" (hide 1)
(("1" (lemma "FsuccFpred" :subst ("f" "f" "b" "b" ))
(("1" (split)
(("1" (replace -1 1 :dir rl)
(("1"
(case-replace
"FtoR(f!1)=FtoR(Fnormalize(b)(f!1))" )
(("1" (rewrite "FsuccProp" )
(("1" (hide 2 -1 -2)
(("1" (trans-ineq 1 "z" :strict 1)
(("1"
(trans-ineq
1
"FtoR[radix](f) -Fulp(b)(f)"
:strict
2)
(("1"
(rewrite "FulpCanonic" )
(("1"
(case-replace
"f=(# Fnum:=0, Fexp:=-dExp(b) #)" )
(("1"
(hide-all-but 1)
(("1"
(expand * "Fpred" "FtoR" )
(("1"
(grind-reals)
(("1"
(lemma "radix_less_vNum" )
(("1"
(inst -1 "b" )
(("1"
(hide 1)
(("1"
(grind-reals)
nil
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2"
(rewrite
"FcanonicUnique"
:subst
("b"
"b"
"p"
"f"
"q"
"(# Fnum := 0, Fexp := -dExp(b) #)" ))
(("1"
(rewrite -3 :dir rl)
(("1"
(expand "FtoR" 1)
(("1" (assert ) nil nil ))
nil ))
nil )
("2"
(hide-all-but 1)
(("2"
(expand *
"Fcanonic?"
"Fsubnormal?"
"Fbounded?" )
(("2"
(grind-reals)
(("2"
(expand "abs" )
(("2" (assert ) nil nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2" (assert ) nil nil ))
nil ))
nil ))
nil )
("2" (rewrite "FpredCanonic" ) nil nil ))
nil )
("2" (assert ) nil nil ))
nil ))
nil )
("2" (propax) nil nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2" (flip-ineq 1)
(("2" (expand * "MinOrMax?" "isMin?" )
(("2" (skosimp*)
(("2" (split)
(("1" (assert ) nil nil )
("2" (skosimp*)
(("2" (expand "abs" -5)
(("2" (grind-reals)
(("2" (hide 2)
(("2"
(lemma "FpredFsucc" :subst ("f" "f" "b" "b" ))
(("2" (split)
(("1" (replace -1 1 :dir rl)
(("1"
(case-replace
"FtoR(f!1)=FtoR(Fnormalize(b)(f!1))" )
(("1"
(rewrite "FpredProp" )
(("1"
(hide -1 -2 2)
(("1"
(trans-ineq 1 "z" :strict 2)
(("1"
(trans-ineq
1
"FtoR(f)+Fulp(b)(f)"
:strict
1)
(("1" (assert ) nil nil )
("2"
(rewrite "FulpCanonic" )
(("2"
(case-replace
"f=(# Fnum:=0, Fexp:=-dExp(b) #)" )
(("1"
(hide-all-but 1)
(("1"
(expand * "Fsucc" "FtoR" )
(("1"
(grind-reals)
(("1"
(hide 1)
(("1"
(lemma
"radix_less_vNum" )
(("1"
(inst?)
(("1"
(assert )
nil
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2"
(rewrite
"FcanonicUnique"
:subst
("b"
"b"
"p"
"f"
"q"
"(# Fnum := 0, Fexp := -dExp(b) #)" ))
(("1"
(rewrite -4 :dir rl)
(("1"
(expand "FtoR" 1)
(("1"
(assert )
nil
nil ))
nil ))
nil )
("2"
(hide-all-but 1)
(("2"
(expand *
"Fcanonic?"
"Fsubnormal?"
"Fbounded?" )
(("2"
(expand "abs" )
(("2"
(grind-reals)
nil
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2"
(rewrite "FsuccCanonic" )
nil
nil ))
nil )
("2" (assert ) nil nil ))
nil ))
nil )
("2" (propax) nil nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
((FtoR const-decl "real" float nil )
(float type-eq-decl nil float nil )
(radix formal-const-decl "above(1)" axpy nil )
(above nonempty-type-eq-decl nil integers nil )
(> const-decl "bool" reals nil )
(integer_pred const-decl "[rational -> boolean]" integers nil )
(rational nonempty-type-from-decl nil rationals nil )
(rational_pred const-decl "[real -> boolean]" rationals nil )
(int nonempty-type-eq-decl nil integers 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 )
(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 )
(FsuccFpred formula-decl nil float nil )
(nat nonempty-type-eq-decl nil naturalnumbers nil )
(Format type-eq-decl nil float nil )
(b formal-const-decl "Format" axpy nil )
(Fpred const-decl "float" float nil )
(FsuccProp formula-decl nil float nil )
(< const-decl "bool" reals nil )
(FulpCanonic formula-decl nil float nil )
(posrat_exp application-judgement "posrat" exponentiation nil )
(nnrat_exp application-judgement "nnrat" exponentiation nil )
(FcanonicUnique formula-decl nil float nil )
(nnrat_times_nnrat_is_nnrat application-judgement "nonneg_rat"
rationals nil )
(zero_times1 formula-decl nil real_props nil )
(minus_odd_is_odd application-judgement "odd_int" integers nil )
(Fsubnormal? const-decl "bool" float nil )
(mult_divides2 application-judgement "(divides(m))" divides nil )
(mult_divides1 application-judgement "(divides(n))" divides nil )
(int_abs_is_nonneg application-judgement "{j: nonneg_int | j >= i}"
real_defs nil )
(times_div2 formula-decl nil real_props nil )
(nzrat_times_nzrat_is_nzrat application-judgement "nzrat" rationals
nil )
(minus_nzint_is_nzint application-judgement "nzint" integers nil )
(nzrat_div_nzrat_is_nzrat application-judgement "nzrat" rationals
nil )
(div_mult_pos_le1 formula-decl nil real_props nil )
(posrat_times_posrat_is_posrat application-judgement "posrat"
rationals nil )
(int_plus_int_is_int application-judgement "int" integers nil )
(real_ge_is_total_order name-judgement "(total_order?[real])"
real_props nil )
(radix_less_vNum formula-decl nil float nil )
(int_minus_int_is_int application-judgement "int" integers nil )
(minus_int_is_int application-judgement "int" integers nil )
(- const-decl "[numfield -> numfield]" number_fields nil )
(numfield nonempty-type-eq-decl nil number_fields nil )
(- const-decl "[numfield, numfield -> numfield]" number_fields nil )
(Fulp const-decl "real" float nil )
(FpredCanonic formula-decl nil float nil )
(= const-decl "[T, T -> boolean]" equalities nil )
(Fbounded? const-decl "bool" float nil )
(Fcanonic? const-decl "bool" float nil )
(AND const-decl "[bool, bool -> bool]" booleans nil )
(Fnormalize def-decl
"{x: (Fcanonic?(b)) | FtoR(x) = FtoR(f):: real AND Fexp(x) <= Fexp(f)}"
float nil )
(MinOrMax? const-decl "bool" axpy nil )
(isMax? const-decl "bool" float nil )
(abs const-decl "{n: nonneg_real | n >= m AND n >= -m}" real_defs
nil )
(isMin? const-decl "bool" float nil )
(FsuccCanonic formula-decl nil float nil )
(+ const-decl "[numfield, numfield -> numfield]" number_fields nil )
(real_plus_real_is_real application-judgement "real" reals nil )
(div_mult_pos_le2 formula-decl nil real_props nil )
(posrat_div_posrat_is_posrat application-judgement "posrat"
rationals nil )
(FpredProp formula-decl nil float nil )
(Fsucc const-decl "float" float nil )
(FpredFsucc formula-decl nil float nil )
(minus_real_is_real application-judgement "real" reals nil )
(real_gt_is_strict_total_order name-judgement
"(strict_total_order?[real])" real_props nil )
(real_minus_real_is_real application-judgement "real" reals nil ))
shostak))
(RoundLe_TCC1 0
(RoundLe_TCC1-1 nil 3320498426
("" (skeep) (("" (rewrite "FcanonicBounded" ) nil nil )) nil )
((FcanonicBounded formula-decl nil float nil )
(nat nonempty-type-eq-decl nil naturalnumbers nil )
(Format type-eq-decl nil float nil )
(b formal-const-decl "Format" axpy nil )
(float type-eq-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)" axpy nil ))
nil ))
(RoundLe_TCC2 0
(RoundLe_TCC2-1 nil 3320498426
("" (skeep)
(("" (expand * "FtoR" "abs" ) (("" (grind-reals) nil nil )) nil )) nil )
((abs const-decl "{n: nonneg_real | n >= m AND n >= -m}" real_defs
nil )
(FtoR const-decl "real" float nil )
(nonzero_times1 formula-decl nil real_props nil )
(nonzero_times2 formula-decl nil real_props nil )
(rat_times_rat_is_rat application-judgement "rat" rationals nil )
(nnrat_exp application-judgement "nnrat" exponentiation 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 )
(minus_int_is_int application-judgement "int" integers nil )
(real_lt_is_strict_total_order name-judgement
"(strict_total_order?[real])" real_props nil ))
nil ))
(RoundLe_TCC3 0
(RoundLe_TCC3-1 nil 3320498426
("" (skosimp*) (("" (field -3) (("" (grind) nil nil )) nil )) nil )
((rat_minus_rat_is_rat application-judgement "rat" rationals nil )
(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 )
(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 )
(/= const-decl "boolean" notequal nil )
(number_field_pred const-decl "[number -> boolean]" number_fields
nil )
(numfield nonempty-type-eq-decl nil number_fields nil )
(* const-decl "[numfield, numfield -> numfield]" number_fields nil )
(number_field nonempty-type-from-decl nil number_fields nil )
(real_pred const-decl "[number_field -> boolean]" reals nil )
(real nonempty-type-from-decl nil reals nil )
(>= const-decl "bool" reals nil )
(nonneg_real nonempty-type-eq-decl nil real_types nil )
(AND const-decl "[bool, bool -> bool]" booleans nil )
(- const-decl "[numfield -> numfield]" number_fields nil )
(abs const-decl "{n: nonneg_real | n >= m AND n >= -m}" real_defs
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 )
(> const-decl "bool" reals nil )
(above nonempty-type-eq-decl nil integers nil )
(radix formal-const-decl "above(1)" axpy nil )
(float type-eq-decl nil float nil )
(nzrat_div_nzrat_is_nzrat application-judgement "nzrat" rationals
nil )
(int_abs_is_nonneg application-judgement "{j: nonneg_int | j >= i}"
real_defs nil )
(= const-decl "[T, T -> boolean]" equalities nil )
(both_sides_times1_imp formula-decl nil extra_real_props 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 )
(bijective? const-decl "bool" functions nil )
(id const-decl "(bijective?[T, T])" identity nil )
(TRUE const-decl "bool" booleans nil )
(rat_times_rat_is_rat application-judgement "rat" rationals nil )
(even_minus_odd_is_odd application-judgement "odd_int" integers
nil )
(minus_int_is_int application-judgement "int" integers 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 ))
nil ))
(RoundLe 0
(RoundLe-1 nil 3320498427
("" (assert )
(("" (skeep)
(("" (assert )
(("" (case "0 < abs(Fnum(f))" )
(("1" (case "0 < 1 - 1 / (2 * abs(Fnum(f)))" )
(("1" (mult-by 2 "(1 - 1 / (2 * abs(Fnum(f))))" )
(("1"
(case-replace
" abs(FtoR[radix](f)) * (1 - 1 / (2 * abs(Fnum(f)))) =
abs(FtoR(f))-Fulp(b)(f)/2")
(("1" (move-terms 2 l 2)
(("1" (move-terms 2 r 1)
(("1" (trans-ineq 2 "abs(FtoR(f)-z)" )
(("1" (expand "abs" 1)
(("1" (grind-reals) nil nil )) nil )
("2" (rewrite "ClosestUlp" )
(("2" (rewrite "FcanonicBounded" ) nil nil ))
nil ))
nil ))
nil ))
nil )
("2" (hide 2 3)
(("2" (field 1)
(("2" (rewrite "FulpCanonic" )
(("2" (expand "FtoR" 1)
(("2" (rewrite "abs_mult" )
(("2" (expand "abs" 1 2)
(("2" (assert ) nil nil )) nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2" (case "1 <= abs(Fnum(f))" )
(("1" (field 1) nil nil )
("2" (hide-all-but (-1 1)) (("2" (grind) nil nil )) nil ))
nil ))
nil )
("2" (hide-all-but (1 2))
(("2" (expand * "abs" "FtoR" ) (("2" (grind-reals) nil nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
((float type-eq-decl nil float nil )
(radix formal-const-decl "above(1)" axpy nil )
(above nonempty-type-eq-decl nil integers nil )
(> const-decl "bool" reals nil )
(integer_pred const-decl "[rational -> boolean]" integers nil )
(rational nonempty-type-from-decl nil rationals nil )
(rational_pred const-decl "[real -> boolean]" rationals nil )
(int nonempty-type-eq-decl nil integers 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 )
(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 )
(even_minus_odd_is_odd application-judgement "odd_int" integers
nil )
(both_sides_times_pos_ge1_imp formula-decl nil extra_real_props
nil )
(minus_int_is_int application-judgement "int" integers nil )
(both_sides_times_pos_le1 formula-decl nil real_props nil )
(posreal nonempty-type-eq-decl nil real_types nil )
(FtoR const-decl "real" float nil )
(f skolem-const-decl "float[radix]" axpy nil )
(real_ge_is_total_order name-judgement "(total_order?[real])"
real_props nil )
(real_gt_is_strict_total_order name-judgement
"(strict_total_order?[real])" real_props nil )
(real_lt_is_strict_total_order name-judgement
"(strict_total_order?[real])" real_props nil )
(div_cancel2 formula-decl nil real_props nil )
(nonzero_real nonempty-type-eq-decl nil reals nil )
(FulpCanonic formula-decl nil float nil )
(posrat_exp application-judgement "posrat" exponentiation nil )
(nnrat_exp application-judgement "nnrat" exponentiation nil )
(^ const-decl "real" exponentiation nil )
(OR const-decl "[bool, bool -> bool]" booleans nil )
(abs_mult formula-decl nil real_props nil )
(rat_abs_is_nonneg application-judgement "{r: nonneg_rat | r >= q}"
real_defs nil )
(nzrat_abs_is_pos application-judgement "{r: posrat | r >= q}"
real_defs nil )
(nnrat_times_nnrat_is_nnrat application-judgement "nonneg_rat"
rationals nil )
(minus_nzint_is_nzint application-judgement "nzint" integers nil )
(minus_even_is_even application-judgement "even_int" integers nil )
(rat_times_rat_is_rat application-judgement "rat" rationals nil )
(minus_odd_is_odd application-judgement "odd_int" integers nil )
(TRUE const-decl "bool" booleans nil )
(id const-decl "(bijective?[T, T])" identity nil )
(bijective? const-decl "bool" functions nil )
(both_sides_times1 formula-decl nil real_props nil )
(rat nonempty-type-eq-decl nil rationals nil )
(NOT const-decl "[bool -> bool]" booleans nil )
(+ const-decl "[numfield, numfield -> numfield]" number_fields nil )
(<= const-decl "bool" reals nil )
(IFF const-decl "[bool, bool -> bool]" booleans nil )
(real_plus_real_is_real application-judgement "real" reals nil )
(nnreal_times_nnreal_is_nnreal application-judgement "nnreal"
real_types nil )
(times_div1 formula-decl nil real_props nil )
(both_sides_times2 formula-decl nil real_props nil )
(cross_mult formula-decl nil real_props nil )
(minus_real_is_real application-judgement "real" reals nil )
(FcanonicBounded formula-decl nil float nil )
(ClosestUlp formula-decl nil float nil )
(real_times_real_is_real application-judgement "real" reals nil )
(real_minus_real_is_real application-judgement "real" reals nil )
(= const-decl "[T, T -> boolean]" equalities nil )
(nat nonempty-type-eq-decl nil naturalnumbers nil )
(Format type-eq-decl nil float nil )
(Fbounded? const-decl "bool" float nil )
(Fulp const-decl "real" float nil )
(b formal-const-decl "Format" axpy 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 )
(- const-decl "[numfield, numfield -> numfield]" number_fields nil )
(nonzero_times2 formula-decl nil real_props nil )
(real_le_is_total_order name-judgement "(total_order?[real])"
real_props nil )
(real_div_nzreal_is_real application-judgement "real" reals nil )
(int_abs_is_nonneg application-judgement "{j: nonneg_int | j >= i}"
real_defs nil )
(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 )
(nzrat_div_nzrat_is_nzrat application-judgement "nzrat" rationals
nil )
(rat_minus_rat_is_rat application-judgement "rat" rationals nil ))
shostak))
(RoundGe_TCC1 0
(RoundGe_TCC1-1 nil 3320499635
("" (skeep) (("" (field -3) nil nil )) nil )
((int_abs_is_nonneg application-judgement "{j: nonneg_int | j >= i}"
real_defs nil )
(nzrat_div_nzrat_is_nzrat application-judgement "nzrat" rationals
nil )
(rat_plus_rat_is_rat application-judgement "rat" rationals nil )
(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 )
(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 )
(/= const-decl "boolean" notequal nil )
(number_field_pred const-decl "[number -> boolean]" number_fields
nil )
(numfield nonempty-type-eq-decl nil number_fields nil )
(* const-decl "[numfield, numfield -> numfield]" number_fields nil )
(number_field nonempty-type-from-decl nil number_fields nil )
(real_pred const-decl "[number_field -> boolean]" reals nil )
(real nonempty-type-from-decl nil reals nil )
(>= const-decl "bool" reals nil )
(nonneg_real nonempty-type-eq-decl nil real_types nil )
(AND const-decl "[bool, bool -> bool]" booleans nil )
(- const-decl "[numfield -> numfield]" number_fields nil )
(abs const-decl "{n: nonneg_real | n >= m AND n >= -m}" real_defs
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 )
(> const-decl "bool" reals nil )
(above nonempty-type-eq-decl nil integers nil )
(radix formal-const-decl "above(1)" axpy nil )
(float type-eq-decl nil float nil ))
nil ))
(RoundGe 0
(RoundGe-1 nil 3320499635
("" (skeep)
(("" (case "0 < abs(Fnum(f))" )
(("1" (case "0 < 1 + 1 / (2 * abs(Fnum(f)))" )
(("1" (mult-by 2 "(1 + 1 / (2 * abs(Fnum(f))))" )
(("1" (assert )
(("1"
(case-replace
" abs(FtoR[radix](f)) * (1 / (2 * abs(Fnum(f)))) =
Fulp(b)(f)/2")
(("1" (move-terms 2 r 1)
(("1" (trans-ineq 2 "abs(FtoR(f)-z)" )
(("1" (hide-all-but 1)
(("1" (expand "abs" ) (("1" (grind-reals) nil nil ))
nil ))
nil )
("2" (rewrite "ClosestUlp" )
(("2" (rewrite "FcanonicBounded" ) nil nil )) nil ))
nil ))
nil )
("2" (field 1)
(("2" (rewrite "FulpCanonic" )
(("2" (hide-all-but 1)
(("2" (expand * "abs" "FtoR" )
(("2" (grind-reals) nil nil )) nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2" (field 1) nil nil ))
nil )
("2" (hide-all-but (1 2))
(("2" (expand * "abs" "FtoR" ) (("2" (grind-reals) nil nil ))
nil ))
nil ))
nil ))
nil )
((float type-eq-decl nil float nil )
(radix formal-const-decl "above(1)" axpy nil )
(above nonempty-type-eq-decl nil integers nil )
(> const-decl "bool" reals nil )
(integer_pred const-decl "[rational -> boolean]" integers nil )
(rational nonempty-type-from-decl nil rationals nil )
(rational_pred const-decl "[real -> boolean]" rationals nil )
(int nonempty-type-eq-decl nil integers 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 )
(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 )
(both_sides_times_pos_ge1_imp formula-decl nil extra_real_props
nil )
(real_div_nzreal_is_real application-judgement "real" reals nil )
(both_sides_times_pos_le1 formula-decl nil real_props nil )
(posreal nonempty-type-eq-decl nil real_types nil )
(FtoR const-decl "real" float nil )
(f skolem-const-decl "float[radix]" axpy nil )
(real_ge_is_total_order name-judgement "(total_order?[real])"
real_props nil )
(nzrat_div_nzrat_is_nzrat application-judgement "nzrat" rationals
nil )
(int_abs_is_nonneg application-judgement "{j: nonneg_int | j >= i}"
real_defs nil )
(real_gt_is_strict_total_order name-judgement
"(strict_total_order?[real])" real_props nil )
(real_lt_is_strict_total_order name-judgement
"(strict_total_order?[real])" real_props nil )
(real_le_is_total_order name-judgement "(total_order?[real])"
real_props nil )
(div_cancel2 formula-decl nil real_props nil )
(nonzero_real nonempty-type-eq-decl nil reals nil )
(b formal-const-decl "Format" axpy nil )
(Fulp const-decl "real" float nil )
(Fbounded? const-decl "bool" float nil )
(Format type-eq-decl nil float nil )
(nat nonempty-type-eq-decl nil naturalnumbers nil )
(= const-decl "[T, T -> boolean]" equalities nil )
(minus_real_is_real application-judgement "real" reals nil )
(FcanonicBounded formula-decl nil float nil )
(ClosestUlp formula-decl nil float nil )
(real_plus_real_is_real application-judgement "real" reals nil )
(real_minus_real_is_real application-judgement "real" reals nil )
(IFF const-decl "[bool, bool -> bool]" booleans nil )
(<= const-decl "bool" reals nil )
(- const-decl "[numfield, numfield -> numfield]" number_fields nil )
(FulpCanonic formula-decl nil float nil )
(posrat_exp application-judgement "posrat" exponentiation nil )
(nnrat_exp application-judgement "nnrat" exponentiation nil )
(neg_times_lt formula-decl nil real_props nil )
(minus_rat_is_rat application-judgement "rat" rationals nil )
(rat_times_rat_is_rat application-judgement "rat" rationals nil )
(minus_int_is_int application-judgement "int" integers nil )
(TRUE const-decl "bool" booleans nil )
(id const-decl "(bijective?[T, T])" identity nil )
(bijective? const-decl "bool" functions nil )
(both_sides_times1 formula-decl nil real_props nil )
(NOT const-decl "[bool -> bool]" booleans nil )
(real_times_real_is_real application-judgement "real" reals nil )
(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 )
(rat_plus_rat_is_rat application-judgement "rat" rationals nil )
(+ const-decl "[numfield, numfield -> numfield]" number_fields nil )
(/= const-decl "boolean" notequal nil )
(nznum nonempty-type-eq-decl nil number_fields nil )
(/ const-decl "[numfield, nznum -> numfield]" number_fields nil )
(* const-decl "[numfield, numfield -> numfield]" number_fields nil )
(nonzero_times2 formula-decl nil real_props nil ))
shostak))
(ExactSum_Near_TCC1 0
(ExactSum_Near_TCC1-1 nil 3320510642 ("" (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/" )
(radix formal-const-decl "above(1)" axpy 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 )
(FtoR const-decl "real" float nil )
(Closest? const-decl "bool" float nil )
(/= const-decl "boolean" notequal 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 )
(rat_minus_rat_is_rat application-judgement "rat" rationals nil )
(real_minus_real_is_real application-judgement "real" reals nil ))
nil ))
(ExactSum_Near 0
(ExactSum_Near-1 nil 3320510940
("" (skeep)
(("" (lemma "errorBoundedPlus" )
(("" (inst -1 "b" "f" "p" "q" )
(("" (split)
(("1" (skosimp*)
(("1" (case "FtoR(e!1)=0" )
(("1" (assert ) nil nil )
("2" (hide 2)
(("2" (typepred "e!1" )
(("2" (expand "Fbounded?" -1)
(("2" (flatten)
(("2" (expand "FtoR" 1)
(("2" (case "abs(Fnum(e!1)) < 1" )
(("1" (grind-reals) nil nil )
("2" (hide 2)
(("2" (mult-by 1 "radix ^ (-dExp(b))" )
(("2"
(trans-ineq
1
"abs(FtoR[radix](f) - (FtoR[radix](p) + FtoR[radix](q)))"
:strict
2)
(("1"
(trans-ineq 1 "abs(FtoR(e!1))" )
(("1"
(expand "FtoR" 1)
(("1"
(rewrite "abs_mult" )
(("1"
(expand "abs" 1 3)
(("1"
(grind-reals)
(("1"
(rewrite "Exp_increq_1" )
nil
nil ))
nil ))
nil ))
nil ))
nil )
("2"
(rewrite -3)
(("2"
(expand "abs" 1)
(("2" (grind-reals) nil nil ))
nil ))
nil ))
nil )
("2" (assert ) nil nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2" (propax) nil nil ) ("3" (propax) nil nil )
("4" (propax) nil nil ) ("5" (propax) nil nil ))
nil ))
nil ))
nil ))
nil )
((radix formal-const-decl "above(1)" axpy 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 )
(errorBoundedPlus formula-decl nil float nil )
(Fbounded? const-decl "bool" float nil )
(FtoR const-decl "real" float nil )
(= const-decl "[T, T -> boolean]" equalities nil )
(real_plus_real_is_real application-judgement "real" reals nil )
(int_min application-judgement "{k: int | k <= i AND k <= j}"
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 )
(minus_int_is_int application-judgement "int" integers nil )
(NOT const-decl "[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 )
(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 )
(int_abs_is_nonneg application-judgement "{j: nonneg_int | j >= i}"
real_defs nil )
(mult_divides1 application-judgement "(divides(n))" divides nil )
(real_le_is_total_order name-judgement "(total_order?[real])"
real_props nil )
(rat_times_rat_is_rat application-judgement "rat" rationals nil )
(nonzero_times2 formula-decl nil real_props nil )
(both_sides_times_pos_ge1_imp formula-decl nil extra_real_props
nil )
(OR const-decl "[bool, bool -> bool]" booleans nil )
(/= const-decl "boolean" notequal nil )
(^ const-decl "real" exponentiation nil )
(real_ge_is_total_order name-judgement "(total_order?[real])"
real_props nil )
(* const-decl "[numfield, numfield -> numfield]" number_fields nil )
(posrat_times_posrat_is_posrat application-judgement "posrat"
rationals nil )
(nnrat_times_nnrat_is_nnrat application-judgement "nonneg_rat"
rationals nil )
(abs_mult formula-decl nil real_props nil )
(nzrat_abs_is_pos application-judgement "{r: posrat | r >= q}"
real_defs nil )
(real_gt_is_strict_total_order name-judgement
"(strict_total_order?[real])" real_props nil )
(both_sides_times_pos_le2 formula-decl nil real_props nil )
(Exp_increq_1 formula-decl nil float nil )
(min const-decl "{p: real | p <= m AND p <= n}" real_defs nil )
(<= const-decl "bool" reals nil )
(- const-decl "[numfield, numfield -> numfield]" number_fields nil )
(+ const-decl "[numfield, numfield -> numfield]" number_fields nil )
(float type-eq-decl nil float nil )
(b formal-const-decl "Format" axpy nil )
(Format type-eq-decl nil float nil )
(nat nonempty-type-eq-decl nil naturalnumbers nil )
(real_minus_real_is_real application-judgement "real" reals nil ))
shostak))
(Normal_iff_TCC1 0
(Normal_iff_TCC1-1 nil 3320748868 ("" (subtype-tcc) nil nil )
((even_times_int_is_even application-judgement "even_int" integers
nil )
(radix formal-const-decl "above(1)" axpy 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 )
(Fnormal? const-decl "bool" float nil )
(Fsubnormal? const-decl "bool" float nil )
(Fcanonic? const-decl "bool" float nil )
(/= const-decl "boolean" notequal 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 ))
(Normal_iff 0
(Normal_iff-1 nil 3320748869
("" (skeep)
(("" (split)
(("1" (skosimp*)
(("1" (hide -2)
(("1" (expand * "Fnormal?" "Fbounded?" )
(("1" (flatten)
(("1" (case "radix /= 0" )
(("1"
(trans-ineq 1
("radix ^ (Prec(b) - 1)*radix ^(-dExp(b))"
"radix ^ (Prec(b) - 1)*radix ^(Fexp(f))" ))
(("1" (rewrite "expt_plus" :dir rl)
(("1" (assert ) nil nil )) nil )
("2" (div-by 1 "radix ^ (Prec(b) - 1)" )
(("2" (rewrite "Exp_increq_1" ) nil nil )) nil )
("3" (expand "FtoR" )
(("3" (rewrite "abs_mult" )
(("3" (expand "abs" 1 2)
(("3" (div-by 1 "radix ^ (Fexp(f))" )
(("3" (mult-by 1 "radix" )
(("3" (rewrite "abs_mult" )
(("3"
(expand "abs" -4 1)
(("3"
(case-replace
"vNum(b)=radix ^ (Prec(b) - 1) * radix " )
(("1" (assert ) nil nil )
("2"
(case-replace
"vNum(b) = radix ^ (Prec(b) - 1) * radix^1" )
(("1" (rewrite "expt_x1" ) nil nil )
("2"
(rewrite "expt_plus" :dir rl)
(("2"
(assert )
(("2"
(expand "vNum" )
(("2" (propax) nil nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("4" (assert ) nil nil ) ("5" (assert ) nil nil )
("6" (assert ) nil nil ) ("7" (assert ) nil nil )
("8" (assert ) nil nil ) ("9" (assert ) nil nil )
("10" (assert ) nil nil ))
nil )
("2" (assert ) nil nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2" (skosimp*)
(("2" (expand "Fcanonic?" )
(("2" (split)
(("1" (propax) nil nil )
("2" (hide 1)
(("2" (flip-ineq -2)
(("2" (expand "Fsubnormal?" )
(("2" (flatten)
(("2" (expand "FtoR" )
(("2" (rewrite "abs_mult" )
(("2" (rewrite "abs_mult" )
(("2" (expand "abs" -3 1)
(("2" (expand "abs" 1 2)
(("2"
(case-replace
"Prec(b) - 1 - dExp(b)=Prec(b) - 1 +(- dExp(b))" )
(("1"
(rewrite "expt_plus" )
(("1"
(copy -4)
(("1"
(rewrite -4)
(("1"
(div-by 1 "radix ^ (-dExp(b))" )
(("1"
(mult-by 1 "radix" )
(("1"
(case-replace
"vNum(b) = radix ^ (Prec(b) - 1) * radix" )
(("1" (assert ) nil nil )
("2"
(case-replace
"vNum(b) = radix ^ (Prec(b) - 1) * radix^1" )
(("1"
(rewrite "expt_x1" )
nil
nil )
("2"
(rewrite
"expt_plus"
:dir
rl)
(("2"
(assert )
(("2"
(expand "vNum" )
(("2"
(propax)
nil
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2" (assert ) nil nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
((IMPLIES const-decl "[bool, bool -> bool]" booleans nil )
(real_ge_is_total_order name-judgement "(total_order?[real])"
real_props nil )
(posrat_exp application-judgement "posrat" exponentiation nil )
(nnrat_exp application-judgement "nnrat" exponentiation nil )
(real_le_is_total_order name-judgement "(total_order?[real])"
real_props nil )
(int_minus_int_is_int application-judgement "int" integers nil )
(minus_int_is_int application-judgement "int" integers nil )
(posrat_times_posrat_is_posrat application-judgement "posrat"
rationals nil )
(AND const-decl "[bool, bool -> bool]" booleans nil )
(<= const-decl "bool" reals nil )
(OR const-decl "[bool, bool -> bool]" booleans nil )
(>= const-decl "bool" reals nil )
(^ const-decl "real" exponentiation nil )
(numfield nonempty-type-eq-decl nil number_fields nil )
(- const-decl "[numfield, numfield -> numfield]" number_fields nil )
(nat nonempty-type-eq-decl nil naturalnumbers nil )
(Format type-eq-decl nil float nil )
(b formal-const-decl "Format" axpy nil )
(* const-decl "[numfield, numfield -> numfield]" number_fields nil )
(- const-decl "[numfield -> numfield]" number_fields nil )
(float type-eq-decl nil float nil )
(nonneg_real nonempty-type-eq-decl nil real_types nil )
(abs const-decl "{n: nonneg_real | n >= m AND n >= -m}" real_defs
nil )
(FtoR const-decl "real" float nil )
(int_abs_is_nonneg application-judgement "{j: nonneg_int | j >= i}"
real_defs nil )
(real_lt_is_strict_total_order name-judgement
"(strict_total_order?[real])" real_props nil )
(int_plus_int_is_int application-judgement "int" integers nil )
(expt_plus formula-decl nil exponentiation nil )
(nzreal nonempty-type-eq-decl nil reals nil )
(Exp_increq_1 formula-decl nil float nil )
(nonzero_real nonempty-type-eq-decl nil reals nil )
(times_div_cancel1 formula-decl nil extra_real_props nil )
(posreal nonempty-type-eq-decl nil real_types nil )
(both_sides_div_pos_le1 formula-decl nil real_props nil )
(abs_mult formula-decl nil real_props nil )
(nzrat_abs_is_pos application-judgement "{r: posrat | r >= q}"
real_defs nil )
(nnrat_times_nnrat_is_nnrat application-judgement "nonneg_rat"
rationals nil )
(times_div_cancel2 formula-decl nil extra_real_props nil )
(nzint_abs_is_pos application-judgement "{j: posint | j >= i}"
real_defs nil )
(nnint_times_nnint_is_nnint application-judgement "nonneg_int"
integers nil )
(vNum const-decl "posnat" float nil )
(posnat nonempty-type-eq-decl nil integers nil )
(nonneg_int nonempty-type-eq-decl nil integers nil )
(= const-decl "[T, T -> boolean]" equalities nil )
(posint_exp application-judgement "posint" exponentiation nil )
(expt_x1 formula-decl nil exponentiation nil )
(both_sides_times_pos_le1 formula-decl nil real_props nil )
(rat_times_rat_is_rat application-judgement "rat" rationals nil )
(number nonempty-type-decl nil numbers nil )
(boolean nonempty-type-decl nil booleans nil )
(/= const-decl "boolean" notequal 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)" axpy nil )
(Fnormal? const-decl "bool" float nil )
(mult_divides2 application-judgement "(divides(m))" divides nil )
(mult_divides1 application-judgement "(divides(n))" divides nil )
(Fbounded? const-decl "bool" float nil )
(Fcanonic? const-decl "bool" float nil )
(Fsubnormal? const-decl "bool" float nil )
(both_sides_times_pos_le1_imp formula-decl nil extra_real_props
nil )
(both_sides_div_pos_gt1 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 ))
shostak))
(Axpy_aux1_TCC1 0
(Axpy_aux1_TCC1-1 nil 3320512021
("" (skeep)
(("" (rewrite "FcanonicBounded" )
(("" (rewrite "FpredCanonic" ) nil nil )) nil ))
nil )
((FcanonicBounded formula-decl nil float nil )
(nat nonempty-type-eq-decl nil naturalnumbers nil )
(Format type-eq-decl nil float nil )
(b formal-const-decl "Format" axpy nil )
(float type-eq-decl nil float nil )
(Fpred const-decl "float" float nil )
(Fcanonic? const-decl "bool" 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)" axpy nil )
(real_lt_is_strict_total_order name-judgement
"(strict_total_order?[real])" real_props nil )
(real_plus_real_is_real application-judgement "real" reals nil )
(real_times_real_is_real application-judgement "real" reals nil )
(FpredCanonic formula-decl nil float nil ))
nil ))
(Axpy_aux1 0
(Axpy_aux1-1 nil 3320512021
("" (skeep)
((""
(case "abs(FtoR(u)-(y1+a1*x1)) < Fulp(b)(Fpred(b)(u)) / 2 + abs(FtoR(u)-(FtoR(t)+FtoR(y)))" )
(("1" (case "FtoR(t)+FtoR(y) <= FtoR(u)" )
(("1" (rewrite "MinOrMax1" )
(("1" (hide 2)
(("1"
(trans-ineq 1
"abs(FtoR[radix](u) - FtoR[radix](t) - FtoR[radix](y)) +
Fulp(b)(Fpred(b)(u)) / 2" :strict 1)
(("1"
(case "abs(FtoR[radix](u) - FtoR[radix](t) - FtoR[radix](y)) <= Fulp(b)(Fpred(b)(u)) / 2" )
(("1" (grind-reals) nil nil )
("2" (hide 2)
(("2" (lemma "ClosestUlp2" )
(("2" (inst -1 "b" "u" "FtoR(t)+FtoR(y)" )
(("2" (split)
(("1" (case-replace "Fabs(u)=u" )
(("1" (assert ) nil nil )
("2" (hide-all-but (1 -6))
(("2" (expand * "Fabs" "abs" "FtoR" )
(("2"
(grind-reals)
(("2" (decompose-equality 1) nil nil ))
nil ))
nil ))
nil ))
nil )
("2" (trans-ineq 1 "FtoR[radix](u)" )
(("1" (hide 2)
(("1" (case "0 <= FtoR(t)+FtoR(y)" )
(("1"
(expand "abs" 1)
(("1" (grind-reals) nil nil ))
nil )
("2"
(hide-all-but (-4 -5 1))
(("2"
(flip-ineq -2)
(("2"
(flip-ineq 2)
(("2"
(lemma "RleRoundedLessR0" )
(("2"
(assert )
(("2"
(inst
-1
"Closest?"
"b"
"u"
"FtoR(t)+FtoR(y)" )
(("2"
(split)
(("1" (assert ) nil nil )
("2" (assert ) nil nil )
("3" (propax) nil nil )
("4"
(rewrite
"Closest_RoundedMode" )
nil
nil )
("5"
(typepred "u" )
(("5"
(rewrite
"FcanonicBounded" )
nil
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2" (hide-all-but (1 -5))
(("2" (expand "abs" )
(("2"
(expand "Fulp" )
(("2" (grind-reals) nil nil ))
nil ))
nil ))
nil ))
nil )
("3" (propax) nil nil ) ("4" (assert ) nil nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2" (flip-ineq 1)
(("2"
(case "FtoR(t)+FtoR(y) <= FtoR(u)+ Fulp(b)(Fpred(b)(u)) / 2" )
(("1" (rewrite "MinOrMax1" )
(("1"
(trans-ineq 1
"abs(-1 * FtoR(y) - FtoR(a) * FtoR(x) + a1 * x1 + y1)+abs(FtoR(t) - FtoR(a) * FtoR(x))+abs(FtoR(t)+FtoR(y)-FtoR(u))"
:strict 2)
(("1" (hide-all-but 1)
(("1" (expand "abs" ) (("1" (grind-reals) nil nil ))
nil ))
nil )
("2" (expand "abs" 1 3) (("2" (grind-reals) nil nil ))
nil ))
nil ))
nil )
("2" (flip-ineq 1)
(("2" (rewrite "MinOrMax2" )
(("2" (hide 2)
(("2"
(trans-ineq 1
"abs(-1 * FtoR(y) - FtoR(a) * FtoR(x) + a1 * x1 + y1)+abs(FtoR(t) - FtoR(a) * FtoR(x))+abs(FtoR(t)+FtoR(y)-FtoR(u))"
:strict 2)
(("1" (hide-all-but 1)
(("1" (expand "abs" )
(("1" (grind-reals) nil nil )) nil ))
nil )
("2"
(trans-ineq 1
"Fulp(b)(Fpred(b)(u)) / 4 + Fulp(b)(Fpred(b)(u)) / 4 +
abs(FtoR[radix](t) + FtoR[radix](y) - FtoR[radix](u))"
:strict 1)
(("1" (assert ) nil nil )
("2"
(case " Fulp(b)(Fpred(b)(u)) <= Fulp(b)(u)" )
(("1"
(case "abs(FtoR[radix](t) + FtoR[radix](y) - FtoR[radix](u))<= Fulp(b)(u)/2" )
(("1" (assert ) nil nil )
("2" (hide 2)
(("2" (lemma "ClosestUlp" )
(("2"
(inst -1 "b" "u" "FtoR(t)+FtoR(y)" )
(("2"
(split)
(("1"
(hide-all-but (-1 1))
(("1"
(expand "abs" )
(("1" (grind-reals) nil nil ))
nil ))
nil )
("2" (propax) nil nil )
("3"
(rewrite "FcanonicBounded" )
nil
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2" (rewrite "FulpFpred1" ) nil nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2" (hide 2)
(("2"
(trans-ineq 1
"abs(y1-FtoR(y)+a1*x1-FtoR(a)*FtoR(x))+abs(FtoR(t)-FtoR(a)*FtoR(x))+abs(FtoR(u)-(FtoR(t)+FtoR(y)))" )
(("1" (hide-all-but 1)
(("1" (expand "abs" ) (("1" (grind-reals) nil nil )) nil ))
nil )
("2" (assert ) nil nil ))
nil ))
nil ))
nil ))
nil )
((Fpred const-decl "float" float nil )
(Fulp const-decl "real" float nil )
(Fbounded? const-decl "bool" float nil )
(/ const-decl "[numfield, nznum -> numfield]" number_fields nil )
(nznum nonempty-type-eq-decl nil number_fields nil )
(/= const-decl "boolean" notequal nil )
(* const-decl "[numfield, numfield -> numfield]" number_fields nil )
(+ const-decl "[numfield, numfield -> numfield]" number_fields nil )
(b formal-const-decl "Format" axpy 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 )
(radix formal-const-decl "above(1)" axpy nil )
(above nonempty-type-eq-decl nil integers nil )
(> const-decl "bool" reals nil )
(integer_pred const-decl "[rational -> boolean]" integers nil )
(rational nonempty-type-from-decl nil rationals nil )
(rational_pred const-decl "[real -> boolean]" rationals nil )
(int nonempty-type-eq-decl nil integers nil )
(- const-decl "[numfield, numfield -> numfield]" number_fields 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 )
(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 )
(FulpFpred1 formula-decl nil float nil )
(ClosestUlp formula-decl nil float nil )
(MinOrMax2 formula-decl nil axpy nil )
(minus_real_is_real application-judgement "real" reals nil )
(minus_odd_is_odd application-judgement "odd_int" integers nil )
(nnreal_plus_nnreal_is_nnreal application-judgement "nnreal"
real_types nil )
(MinOrMax1 formula-decl nil axpy nil )
(real_div_nzreal_is_real application-judgement "real" reals nil )
(real_le_is_total_order name-judgement "(total_order?[real])"
real_props nil )
(real_lt_is_strict_total_order name-judgement
"(strict_total_order?[real])" real_props nil )
(RleRoundedLessR0 formula-decl nil float nil )
(Closest? const-decl "bool" float nil )
(RND type-eq-decl nil float nil )
(NOT const-decl "[bool -> bool]" booleans nil )
(FcanonicBounded formula-decl nil float nil )
(Closest_RoundedMode formula-decl nil float nil )
(real_gt_is_strict_total_order name-judgement
"(strict_total_order?[real])" real_props nil )
(posrat_div_posrat_is_posrat application-judgement "posrat"
rationals nil )
(posrat_exp application-judgement "posrat" exponentiation nil )
(Fabs const-decl "float" float nil )
(= const-decl "[T, T -> boolean]" equalities nil )
(real_ge_is_total_order name-judgement "(total_order?[real])"
real_props nil )
(minus_int_is_int application-judgement "int" integers nil )
(nnrat_exp application-judgement "nnrat" exponentiation nil )
(rat_times_rat_is_rat application-judgement "rat" rationals nil )
(pos_times_lt formula-decl nil real_props nil )
(ClosestUlp2 formula-decl nil float nil )
(<= const-decl "bool" reals nil )
(real_times_real_is_real application-judgement "real" reals nil )
(real_minus_real_is_real application-judgement "real" reals nil )
(real_plus_real_is_real application-judgement "real" reals nil ))
shostak))
(Axpy_aux1_aux1 0
(Axpy_aux1_aux1-1 nil 3320575968
("" (skeep)
(("" (trans-ineq 1 "Fulp(b)(t)/2" )
(("1" (rewrite "ClosestUlp" )
(("1" (rewrite "FcanonicBounded" ) nil nil )) nil )
("2" (mult-by 1 "4" )
(("2" (field 1)
(("2" (trans-ineq 1 " radix* Fulp(b)(t)" )
(("1" (expand "Fulp" ) (("1" (grind-reals) nil nil )) nil )
("2"
(case "Fcanonic?(b)((# Fnum:= Fnum(t), Fexp:=Fexp(t)+1 #))" )
(("1"
(case-replace
"radix * Fulp(b)(t) =Fulp(b)( (# Fnum:= Fnum(t), Fexp:=Fexp(t)+1 #))" )
(("1" (rewrite "FulpMonotoneAbs" )
(("1"
(case-replace
"abs(FtoR((# Fnum := Fnum(t), Fexp := 1 + Fexp(t) #)))=radix * abs(FtoR[radix](t))" )
(("1" (case "0 <= FtoR(Fpred(b)(u))" )
(("1" (expand "abs" 1 2) (("1" (propax) nil nil ))
nil )
("2" (rewrite "FpredPos" ) nil nil ))
nil )
("2" (hide-all-but 1)
(("2" (expand * "abs" "FtoR" )
(("2" (grind-reals)
(("1" (rewrite "expt_plus" )
(("1" (assert ) nil nil )) nil )
("2" (rewrite "expt_plus" )
(("2" (assert ) nil nil )) nil ))
nil ))
nil ))
nil ))
nil )
("2" (rewrite "FcanonicBounded" )
(("2" (rewrite "FpredCanonic" ) nil nil )) nil )
("3" (rewrite "FcanonicBounded" ) nil nil ))
nil )
("2" (rewrite "FulpCanonic" )
(("2" (rewrite "FulpCanonic" )
(("2" (rewrite "expt_plus" ) nil nil )) nil ))
nil )
("3" (rewrite "FcanonicBounded" ) nil nil ))
nil )
("2" (hide-all-but (-4 1))
(("2" (expand * "Fcanonic?" "Fnormal?" "Fbounded?" )
(("2" (flatten)
(("2" (split)
(("1" (propax) nil nil ) ("2" (assert ) nil nil )
("3" (propax) nil nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
((real_div_nzreal_is_real application-judgement "real" reals nil )
(boolean nonempty-type-decl nil booleans nil )
(bool nonempty-type-eq-decl nil booleans nil )
(AND const-decl "[bool, bool -> bool]" booleans nil )
(number nonempty-type-decl nil numbers nil )
(number_field_pred const-decl "[number -> boolean]" number_fields
nil )
(number_field nonempty-type-from-decl nil number_fields nil )
(real_pred const-decl "[number_field -> boolean]" reals nil )
(real nonempty-type-from-decl nil reals nil )
(<= const-decl "bool" reals nil ) (>= const-decl "bool" reals nil )
(nonneg_real nonempty-type-eq-decl nil real_types 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 )
(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 )
(> const-decl "bool" reals nil )
(above nonempty-type-eq-decl nil integers nil )
(radix formal-const-decl "above(1)" axpy 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 )
(b formal-const-decl "Format" axpy nil )
(* const-decl "[numfield, numfield -> numfield]" number_fields nil )
(/= const-decl "boolean" notequal nil )
(nznum nonempty-type-eq-decl nil number_fields nil )
(/ const-decl "[numfield, nznum -> numfield]" number_fields nil )
(Fbounded? const-decl "bool" float nil )
(Fulp const-decl "real" float nil )
(Fpred const-decl "float" float 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 )
(real_plus_real_is_real application-judgement "real" reals nil )
(real_le_is_total_order name-judgement "(total_order?[real])"
real_props nil )
(FcanonicBounded formula-decl nil float nil )
(ClosestUlp formula-decl nil float nil )
(NOT const-decl "[bool -> bool]" booleans nil )
(= const-decl "[T, T -> boolean]" equalities nil )
(int_plus_int_is_int application-judgement "int" integers nil )
(+ const-decl "[numfield, numfield -> numfield]" number_fields nil )
(FulpCanonic formula-decl nil float nil )
(FulpMonotoneAbs formula-decl nil float nil )
(neg_times_lt formula-decl nil real_props nil )
(minus_rat_is_rat application-judgement "rat" rationals nil )
(rat_times_rat_is_rat application-judgement "rat" rationals nil )
(expt_x1 formula-decl nil exponentiation nil )
(posint_exp application-judgement "posint" exponentiation nil )
(int_minus_int_is_int application-judgement "int" integers nil )
(expt_plus formula-decl nil exponentiation nil )
(nzreal nonempty-type-eq-decl nil reals nil )
(posrat_exp application-judgement "posrat" exponentiation nil )
(FpredPos formula-decl nil float nil )
(FpredCanonic formula-decl nil float nil )
(Fnormal? const-decl "bool" float nil )
(mult_divides2 application-judgement "(divides(m))" divides nil )
(mult_divides1 application-judgement "(divides(n))" divides nil )
(minus_int_is_int application-judgement "int" integers nil )
(int_abs_is_nonneg application-judgement "{j: nonneg_int | j >= i}"
real_defs nil )
(posrat_times_posrat_is_posrat application-judgement "posrat"
rationals nil )
(nnrat_exp application-judgement "nnrat" exponentiation nil )
(nonzero_real nonempty-type-eq-decl nil reals nil )
(div_cancel2 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_times_real_is_real application-judgement "real" reals nil )
(real_minus_real_is_real application-judgement "real" reals nil ))
shostak))
(Axpy_aux1_aux2 0
(Axpy_aux1_aux2-1 nil 3320577546
("" (skeep)
(("" (trans-ineq 1 "Fulp(b)(t)/2" )
(("1" (rewrite "ClosestUlp" )
(("1" (rewrite "FcanonicBounded" ) nil nil )) nil )
("2" (rewrite "FulpCanonic" )
(("2" (rewrite "FulpCanonic" )
(("1" (expand "Fsubnormal?" )
(("1" (flatten)
(("1" (rewrite -5)
(("1" (mult-by 1 "4" )
(("1" (field 1)
(("1" (trans-ineq 1 "radix*(radix ^ -dExp(b))" )
(("1" (grind-reals) nil nil )
("2"
(case-replace
" radix * (radix ^ -dExp(b))=radix ^(1 - dExp(b))" )
(("1" (rewrite "Exp_increq_1" ) nil nil )
("2" (lemma "expt_plus" )
(("2" (inst -1 "1" "-dExp(b)" "radix" )
(("2" (rewrite "expt_x1" )
(("2" (assert ) nil nil )) nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2" (rewrite "FpredCanonic" ) nil nil ))
nil ))
nil ))
nil ))
nil )
((real_div_nzreal_is_real application-judgement "real" reals nil )
(boolean nonempty-type-decl nil booleans nil )
(bool nonempty-type-eq-decl nil booleans nil )
(AND const-decl "[bool, bool -> bool]" booleans nil )
(number nonempty-type-decl nil numbers nil )
(number_field_pred const-decl "[number -> boolean]" number_fields
nil )
(number_field nonempty-type-from-decl nil number_fields nil )
(real_pred const-decl "[number_field -> boolean]" reals nil )
(real nonempty-type-from-decl nil reals nil )
(<= const-decl "bool" reals nil ) (>= const-decl "bool" reals nil )
(nonneg_real nonempty-type-eq-decl nil real_types 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 )
(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 )
(> const-decl "bool" reals nil )
(above nonempty-type-eq-decl nil integers nil )
(radix formal-const-decl "above(1)" axpy 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 )
(b formal-const-decl "Format" axpy nil )
(* const-decl "[numfield, numfield -> numfield]" number_fields nil )
(/= const-decl "boolean" notequal nil )
(nznum nonempty-type-eq-decl nil number_fields nil )
(/ const-decl "[numfield, nznum -> numfield]" number_fields nil )
(Fbounded? const-decl "bool" float nil )
(Fulp const-decl "real" float nil )
(Fpred const-decl "float" float nil )
(int_minus_int_is_int application-judgement "int" integers nil )
(real_lt_is_strict_total_order name-judgement
"(strict_total_order?[real])" real_props nil )
(real_plus_real_is_real application-judgement "real" reals nil )
(real_le_is_total_order name-judgement "(total_order?[real])"
real_props nil )
(FcanonicBounded formula-decl nil float nil )
(ClosestUlp formula-decl nil float nil )
(posrat_div_posrat_is_posrat application-judgement "posrat"
rationals nil )
(both_sides_times_pos_le1 formula-decl nil real_props nil )
(posreal nonempty-type-eq-decl nil real_types nil )
(OR const-decl "[bool, bool -> bool]" booleans nil )
(^ const-decl "real" exponentiation nil )
(div_cancel2 formula-decl nil real_props nil )
(nonzero_real nonempty-type-eq-decl nil reals nil )
(le_times_le_pos formula-decl nil real_props nil )
(expt_plus formula-decl nil exponentiation nil )
(expt_x1 formula-decl nil exponentiation nil )
(posint_exp application-judgement "posint" exponentiation nil )
(minus_odd_is_odd application-judgement "odd_int" integers nil )
(int_plus_int_is_int application-judgement "int" integers nil )
(nzreal nonempty-type-eq-decl nil reals nil )
(Exp_increq_1 formula-decl nil float nil )
(real_ge_is_total_order name-judgement "(total_order?[real])"
real_props nil )
(= const-decl "[T, T -> boolean]" equalities nil )
(posrat_times_posrat_is_posrat application-judgement "posrat"
rationals nil )
(NOT const-decl "[bool -> bool]" booleans nil )
(minus_int_is_int application-judgement "int" integers nil )
(Fsubnormal? const-decl "bool" float nil )
(mult_divides2 application-judgement "(divides(m))" divides nil )
(mult_divides1 application-judgement "(divides(n))" divides nil )
(FpredCanonic formula-decl nil float nil )
(nnrat_exp application-judgement "nnrat" exponentiation nil )
(posrat_exp application-judgement "posrat" exponentiation nil )
(FulpCanonic formula-decl nil float nil )
(real_times_real_is_real application-judgement "real" reals nil )
(real_minus_real_is_real application-judgement "real" reals nil ))
shostak))
(Axpy_aux2 0
(Axpy_aux2-1 nil 3320577865
("" (skeep)
(("" (rewrite "MinOrMax1" )
(("" (hide 2)
(("" (copy -6)
(("" (rewrite -6)
((""
(trans-ineq 1
"abs(FtoR(t)-FtoR(a)*FtoR(x))+abs(-1 * FtoR(y) - FtoR(a) * FtoR(x) + a1 * x1 + y1)"
:strict 2)
(("1" (hide-all-but 1)
(("1" (expand "abs" ) (("1" (grind-reals) nil nil ))
nil ))
nil )
("2"
(trans-ineq 1
"Fulp(b)(Fpred(b)(u)) / 2+ Fulp(b)(Fpred(b)(u)) / 4"
:strict 1)
(("1"
(case "abs(FtoR[radix](t) - FtoR[radix](a) * FtoR[radix](x)) <= Fulp(b)(Fpred(b)(u)) / 2" )
(("1" (assert ) nil nil )
("2" (hide 2)
(("2" (trans-ineq 1 "Fulp(b)(t)/2" )
(("1" (rewrite "ClosestUlp" )
(("1" (rewrite "FcanonicBounded" ) nil nil ))
nil )
("2" (field 1)
(("2" (case "Fcanonic?(b)(Fpred(b)(u))" )
(("1" (rewrite "FulpCanonic" )
(("1" (rewrite "FulpCanonic" )
(("1"
(rewrite "Exp_increq_1" )
(("1"
(hide-all-but (-1 -7 1))
(("1"
(expand *
"Fcanonic?"
"Fnormal?"
"Fsubnormal?"
"Fbounded?" )
(("1"
(split)
(("1"
(flatten)
(("1" (assert ) nil nil ))
nil )
("2"
(flatten)
(("2" (assert ) nil nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2" (rewrite "FpredCanonic" ) nil nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2" (expand "Fulp" 1) (("2" (grind-reals) nil nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
((MinOrMax1 formula-decl nil axpy nil )
(int nonempty-type-eq-decl nil integers nil )
(number nonempty-type-decl nil numbers nil )
(boolean nonempty-type-decl nil booleans nil )
(number_field_pred const-decl "[number -> boolean]" number_fields
nil )
(number_field nonempty-type-from-decl nil number_fields nil )
(real_pred const-decl "[number_field -> boolean]" reals nil )
(real nonempty-type-from-decl nil reals nil )
(rational_pred const-decl "[real -> boolean]" rationals nil )
(rational nonempty-type-from-decl nil rationals nil )
(integer_pred const-decl "[rational -> boolean]" integers nil )
(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)" axpy nil )
(float type-eq-decl nil float nil )
(nat nonempty-type-eq-decl nil naturalnumbers nil )
(Format type-eq-decl nil float nil )
(Fcanonic? const-decl "bool" float nil )
(b formal-const-decl "Format" axpy nil )
(numfield nonempty-type-eq-decl nil number_fields nil )
(+ const-decl "[numfield, numfield -> numfield]" number_fields nil )
(* const-decl "[numfield, numfield -> numfield]" number_fields nil )
(real_div_nzreal_is_real application-judgement "real" reals nil )
(real_lt_is_strict_total_order name-judgement
"(strict_total_order?[real])" real_props nil )
(nnreal_plus_nnreal_is_nnreal application-judgement "nnreal"
real_types nil )
(AND const-decl "[bool, bool -> bool]" booleans nil )
(<= const-decl "bool" reals nil ) (>= const-decl "bool" reals nil )
(nonneg_real nonempty-type-eq-decl nil real_types nil )
(- const-decl "[numfield -> numfield]" number_fields nil )
(abs const-decl "{n: nonneg_real | n >= m AND n >= -m}" real_defs
nil )
(- const-decl "[numfield, numfield -> numfield]" number_fields nil )
(FtoR const-decl "real" float nil ) (< const-decl "bool" reals nil )
(Fbounded? const-decl "bool" float nil )
(Fulp const-decl "real" float nil )
(Fpred const-decl "float" float nil )
(real_le_is_total_order name-judgement "(total_order?[real])"
real_props nil )
(minus_real_is_real application-judgement "real" reals nil )
(posrat_plus_nnrat_is_posrat application-judgement "posrat"
rationals nil )
(FcanonicBounded formula-decl nil float nil )
(ClosestUlp formula-decl nil float nil )
(minus_int_is_int application-judgement "int" integers nil )
(int_abs_is_nonneg application-judgement "{j: nonneg_int | j >= i}"
real_defs nil )
(Fsubnormal? const-decl "bool" float nil )
(mult_divides1 application-judgement "(divides(n))" divides nil )
(mult_divides2 application-judgement "(divides(m))" divides nil )
(Fnormal? const-decl "bool" float nil )
(posrat_div_posrat_is_posrat application-judgement "posrat"
rationals nil )
(Exp_increq_1 formula-decl nil float nil )
(nnrat_exp application-judgement "nnrat" exponentiation nil )
(posrat_exp application-judgement "posrat" exponentiation nil )
(FulpCanonic formula-decl nil float nil )
(FpredCanonic formula-decl nil float nil )
(TRUE const-decl "bool" booleans nil )
(id const-decl "(bijective?[T, T])" identity nil )
(bijective? const-decl "bool" functions nil )
(nonzero_real nonempty-type-eq-decl nil reals nil )
(div_cancel2 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_gt_is_strict_total_order name-judgement
"(strict_total_order?[real])" real_props nil )
(NOT const-decl "[bool -> bool]" booleans nil )
(/= const-decl "boolean" notequal nil )
(nznum nonempty-type-eq-decl nil number_fields nil )
(/ const-decl "[numfield, nznum -> numfield]" number_fields nil )
(minus_odd_is_odd application-judgement "odd_int" integers nil )
(real_times_real_is_real application-judgement "real" reals nil )
(real_minus_real_is_real application-judgement "real" reals nil )
(real_plus_real_is_real application-judgement "real" reals nil ))
shostak))
(Axpy_aux3 0
(GET_PAST_BUG "(trans-ineq 1 \" Fulp(b)(t) / 2\") -> infinite loop"
3352629025
("" (skeep)
(("" (case "FtoR(u) <= a1*x1+y1" )
(("1" (rewrite "MinOrMax2" )
(("1" (hide 2)
(("1"
(trans-ineq 1
"abs(FtoR(u)-(FtoR(t)+FtoR(y)))+abs(FtoR(t)-FtoR(a)*FtoR(x))+abs(-1 * FtoR(y) - FtoR(a) * FtoR(x) + a1 * x1 + y1)"
:strict 2)
(("1" (hide-all-but 1)
(("1" (expand "abs" ) (("1" (grind-reals) nil nil )) nil ))
nil )
("2"
(case "abs(FtoR[radix](u) - (FtoR[radix](t) + FtoR[radix](y))) <= Fulp(b)(u)/2" )
(("1"
(case "abs(FtoR[radix](t) - FtoR[radix](a) * FtoR[radix](x)) <= Fulp(b)(u)/4" )
(("1"
(trans-ineq 1
"Fulp(b)(u) / 4+ Fulp(b)(u) / 2+Fulp(b)(Fpred(b)(u)) / 4"
:strict 1)
(("1" (assert ) nil nil )
("2" (case "Fulp(b)(Fpred(b)(u)) <= Fulp(b)(u)" )
(("1" (grind-reals) nil nil )
("2" (rewrite "FulpFpred1" ) nil nil ))
nil ))
nil )
("2" (hide 2 -1)
(("2" (trans-ineq 1 "Fulp(b)(t)/2" )
(("1" (rewrite "ClosestUlp" )
(("1" (rewrite "FcanonicBounded" ) nil nil )) nil )
("2" (field 1)
(("2" (rewrite "FulpCanonic" )
(("2" (rewrite "FulpCanonic" )
(("2" (trans-ineq 1 "radix^(1+Fexp(t))" )
(("1" (rewrite "expt_plus" )
(("1" (grind-reals) nil nil )) nil )
("2" (rewrite "Exp_increq_1" )
(("2"
(expand "Fsubnormal?" )
(("2" (propax) nil nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2" (rewrite "ClosestUlp" )
(("2" (rewrite "FcanonicBounded" ) nil nil )) nil ))
nil ))
nil ))
nil ))
nil )
("2" (flip-ineq 1)
(("2" (case "Fabs(u)=u" )
(("1" (lemma "Axpy_aux2" )
(("1" (inst -1 "a" "a1" "t" "u" "x" "x1" "y" "y1" )
(("1" (split)
(("1" (propax) nil nil ) ("2" (propax) nil nil )
("3" (rewrite "ExactSum_Near" )
(("1"
(lemma "ClosestUlp2" :subst
("b" "b" "p" "u" "r" "FtoR(t)+FtoR(y)" ))
(("1" (split)
(("1"
(trans-ineq 1 "Fulp(b)(Fpred(b)(Fabs(u))) / 2"
:strict 2)
(("1" (assert ) nil nil )
("2" (rewrite "FulpCanonic" )
(("1" (grind-reals) nil nil )
("2" (rewrite "FpredCanonic" ) nil nil ))
nil ))
nil )
("2" (assert )
(("2" (flip-ineq 1)
(("2" (rewrite "MinOrMax1" )
(("2" (expand "abs" 1)
(("2"
(trans-ineq
1
"abs(FtoR(t) + FtoR(y))- Fulp(b)(Fpred(b)(u)) / 2 - a1 * x1 - y1"
:strict
1)
(("1" (assert ) nil nil )
("2"
(expand "abs" 1)
(("2"
(grind-reals)
(("1"
(hide 1 2)
(("1"
(flip-ineq -7)
(("1"
(lemma "RleRoundedLessR0" )
(("1"
(inst
-1
"Closest?"
"b"
"u"
"FtoR(t)+FtoR(y)" )
(("1"
(split)
(("1" (assert ) nil nil )
("2" (assert ) nil nil )
("3" (propax) nil nil )
("4"
(rewrite
"Closest_RoundedMode" )
nil
nil )
("5"
(rewrite
"FcanonicBounded" )
nil
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2"
(hide 1)
(("2"
(trans-ineq
1
"abs(FtoR(t)-FtoR(a)*FtoR(x)) + abs(-FtoR(y) - FtoR(a) * FtoR(x) + a1 * x1 + y1) - Fulp(b)(Fpred(b)(u)) / 2" )
(("1"
(hide-all-but 1)
(("1"
(expand "abs" )
(("1"
(grind-reals)
nil
nil ))
nil ))
nil )
("2"
(case
"abs(FtoR[radix](t) - FtoR[radix](a) * FtoR[radix](x)) <= Fulp(b)(Fpred(b)(u)) / 2" )
(("1" (grind-reals) nil nil )
("2"
(hide 2 3)
(("2"
(name
"f2"
"Fulp(b)(t) / 2" )
(("2"
(trans-ineq 1 "f2" )
(("1"
(replaces -1 :dir rl)
(("1"
(rewrite
"ClosestUlp" )
(("1"
(rewrite
"FcanonicBounded" )
nil
nil ))
nil ))
nil )
("2"
(replaces -1 :dir rl)
(("2"
(mult-by 1 "2" )
(("2"
(rewrite
"FulpCanonic" )
(("2"
(rewrite
"FulpCanonic" )
(("1"
(expand
"Fsubnormal?" )
(("1"
(flatten)
(("1"
(assert )
nil
nil ))
nil ))
nil )
("2"
(rewrite
"FpredCanonic" )
nil
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("3" (propax) nil nil )
("4" (hide-all-but (-4 1))
(("4" (expand * "FtoR" "Fabs" "abs" )
(("4" (grind-reals) nil nil )) nil ))
nil ))
nil ))
nil )
("2" (decompose-equality)
(("2" (rewrite "FcanonicBounded" ) nil nil )) nil )
("3" (rewrite "FcanonicBounded" ) nil nil )
("4" (rewrite "FcanonicBounded" ) nil nil ))
nil )
("4" (propax) nil nil ) ("5" (propax) nil nil )
("6" (propax) nil nil ) ("7" (propax) nil nil ))
nil ))
nil ))
nil )
("2" (hide-all-but (-4 1))
(("2" (expand * "FtoR" "Fabs" "abs" )
(("2" (grind-reals) (("2" (decompose-equality) nil nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
((* const-decl "[numfield, numfield -> numfield]" number_fields nil )
(+ const-decl "[numfield, numfield -> numfield]" number_fields nil )
(numfield nonempty-type-eq-decl nil number_fields nil )
(b formal-const-decl "Format" axpy 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 )
(radix formal-const-decl "above(1)" axpy nil )
(above nonempty-type-eq-decl nil integers nil )
(> const-decl "bool" reals nil )
(integer_pred const-decl "[rational -> boolean]" integers nil )
(rational nonempty-type-from-decl nil rationals nil )
(rational_pred const-decl "[real -> boolean]" rationals nil )
(int nonempty-type-eq-decl nil integers 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 )
(/= const-decl "boolean" notequal nil )
(nznum nonempty-type-eq-decl nil number_fields nil )
(/ const-decl "[numfield, nznum -> numfield]" number_fields nil )
(real_gt_is_strict_total_order name-judgement
"(strict_total_order?[real])" real_props nil )
(both_sides_times_pos_le1 formula-decl nil real_props nil )
(posreal nonempty-type-eq-decl nil real_types nil )
(div_cancel2 formula-decl nil real_props nil )
(nonzero_real nonempty-type-eq-decl nil reals nil )
(bijective? const-decl "bool" functions nil )
(id const-decl "(bijective?[T, T])" identity nil )
(TRUE const-decl "bool" booleans nil )
(= const-decl "[T, T -> boolean]" equalities nil )
(Exp_increq_1 formula-decl nil float nil )
(Fsubnormal? const-decl "bool" float nil )
(mult_divides2 application-judgement "(divides(m))" divides nil )
(mult_divides1 application-judgement "(divides(n))" divides nil )
(nzreal nonempty-type-eq-decl nil reals nil )
(expt_plus formula-decl nil exponentiation nil )
(posint_exp application-judgement "posint" exponentiation nil )
(expt_x1 formula-decl nil exponentiation nil )
(le_times_le_pos formula-decl nil real_props nil )
(posrat_times_posrat_is_posrat application-judgement "posrat"
rationals nil )
(int_plus_int_is_int application-judgement "int" integers nil )
(OR const-decl "[bool, bool -> bool]" booleans nil )
(^ const-decl "real" exponentiation nil )
(real_ge_is_total_order name-judgement "(total_order?[real])"
real_props nil )
(IMPLIES const-decl "[bool, bool -> bool]" booleans nil )
(nnrat_exp application-judgement "nnrat" exponentiation nil )
(posrat_exp application-judgement "posrat" exponentiation nil )
(FulpCanonic formula-decl nil float nil )
(ClosestUlp formula-decl nil float nil )
(FcanonicBounded formula-decl nil float nil )
(Fpred const-decl "float" float nil )
(FulpFpred1 formula-decl nil float nil )
(minus_real_is_real application-judgement "real" reals nil )
(minus_odd_is_odd application-judgement "odd_int" integers nil )
(nnreal_plus_nnreal_is_nnreal application-judgement "nnreal"
real_types nil )
(AND const-decl "[bool, bool -> bool]" booleans nil )
(>= const-decl "bool" reals nil )
(nonneg_real nonempty-type-eq-decl nil real_types nil )
(- const-decl "[numfield -> numfield]" number_fields nil )
(abs const-decl "{n: nonneg_real | n >= m AND n >= -m}" real_defs
nil )
(- const-decl "[numfield, numfield -> numfield]" number_fields nil )
(< const-decl "bool" reals nil )
(Fbounded? const-decl "bool" float nil )
(Fulp const-decl "real" float 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_int_is_int application-judgement "int" integers nil )
(int_minus_int_is_int application-judgement "int" integers nil )
(real_div_nzreal_is_real application-judgement "real" reals nil )
(MinOrMax2 formula-decl nil axpy nil )
(Fabs const-decl "float" float nil )
(ExactSum_Near formula-decl nil axpy nil )
(posrat_div_posrat_is_posrat application-judgement "posrat"
rationals nil )
(FpredCanonic formula-decl nil float nil )
(div_mult_pos_le2 formula-decl nil real_props nil )
(nnreal_plus_posreal_is_posreal application-judgement "posreal"
real_types nil )
(div_mult_pos_le1 formula-decl nil real_props nil )
(RleRoundedLessR0 formula-decl nil float nil )
(Closest_RoundedMode formula-decl nil float nil )
(RND type-eq-decl nil float nil )
(Closest? const-decl "bool" float nil )
(nnreal_times_nnreal_is_nnreal application-judgement "nnreal"
real_types nil )
(div_mult_pos_lt2 formula-decl nil real_props nil )
(MinOrMax1 formula-decl nil axpy nil )
(ClosestUlp2 formula-decl nil float nil )
(Axpy_aux2 formula-decl nil axpy nil )
(rat_times_rat_is_rat application-judgement "rat" rationals nil )
(pos_times_lt formula-decl nil real_props nil )
(real_times_real_is_real application-judgement "real" reals nil )
(real_minus_real_is_real application-judgement "real" reals nil )
(real_plus_real_is_real application-judgement "real" reals nil ))
shostak)
(Axpy_aux3-1 nil 3320579990
("" (skeep)
(("" (case "u <= a1*x1+y1" )
(("1" (rewrite "MinOrMax2" )
(("1" (hide 2)
(("1"
(trans-ineq 1
"abs(u-(t+y))+abs(t-a*x)+abs(-1 * y - a * x + a1 * x1 + y1)"
:strict 2)
(("1" (hide-all-but 1)
(("1" (expand "abs" ) (("1" (grind-reals) nil nil )) nil ))
nil )
("2"
(case "abs(FtoR[radix](u) - (FtoR[radix](t) + FtoR[radix](y))) <= Fulp(b)(u)/2" )
(("1"
(case "abs(FtoR[radix](t) - FtoR[radix](a) * FtoR[radix](x)) <= Fulp(b)(u)/4" )
(("1"
(trans-ineq 1
"Fulp(b)(u) / 4+ Fulp(b)(u) / 2+Fulp(b)(Fpred(b)(u)) / 4"
:strict 1)
(("1" (assert ) nil nil )
("2" (case "Fulp(b)(Fpred(b)(u)) <= Fulp(b)(u)" )
(("1" (grind-reals) nil nil )
("2" (rewrite "FulpFpred1" ) nil nil ))
nil ))
nil )
("2" (hide 2 -1)
(("2" (trans-ineq 1 "Fulp(b)(t)/2" )
(("1" (rewrite "ClosestUlp" )
(("1" (rewrite "FcanonicBounded" ) nil nil )) nil )
("2" (field 1)
(("2" (rewrite "FulpCanonic" )
(("2" (rewrite "FulpCanonic" )
(("2" (trans-ineq 1 "radix^(1+Fexp(t))" )
(("1" (rewrite "expt_plus" )
(("1"
(rewrite "expt_x1" )
(("1" (grind-reals) nil nil ))
nil ))
nil )
("2" (rewrite "Exp_increq_1" )
(("2"
(expand "Fsubnormal?" )
(("2" (propax) nil nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2" (rewrite "ClosestUlp" )
(("2" (rewrite "FcanonicBounded" ) nil nil )) nil ))
nil ))
nil ))
nil ))
nil )
("2" (flip-ineq 1)
(("2" (case "Fabs(u)=u" )
(("1" (case "abs(t+y) <= u+Fulp(b)(Fpred(b)(u)) / 2" )
(("1" (lemma "Axpy_aux2" )
(("1" (inst -1 "a" "a1" "t" "u" "x" "x1" "y" "y1" )
(("1" (split)
(("1" (propax) nil nil ) ("2" (propax) nil nil )
("3" (rewrite "ExactSum_Near" )
(("1"
(lemma "ClosestUlp2" :subst
("b" "b" "p" "u" "r" "t+y" ))
(("1" (split)
(("1"
(trans-ineq 1
"Fulp(b)(Fpred(b)(Fabs(u))) / 2" :strict 2)
(("1" (assert ) nil nil )
("2" (rewrite -3)
(("2" (rewrite "FulpCanonic" )
(("1"
(rewrite -8 :dir rl)
(("1" (grind-reals) nil nil ))
nil )
("2" (rewrite "FpredCanonic" ) nil nil ))
nil ))
nil ))
nil )
("2" (assert ) nil nil ) ("3" (propax) nil nil )
("4" (assert ) nil nil ))
nil ))
nil )
("2" (rewrite "FcanonicBounded" ) nil nil )
("3" (rewrite "FcanonicBounded" ) nil nil )
("4" (rewrite "FcanonicBounded" ) nil nil ))
nil )
("4" (propax) nil nil ) ("5" (propax) nil nil )
("6" (propax) nil nil ) ("7" (propax) nil nil ))
nil ))
nil ))
nil )
("2" (flip-ineq 1)
(("2" (rewrite "MinOrMax1" )
(("2" (expand "abs" 1)
(("2"
(trans-ineq 1
"abs(t + y)- Fulp(b)(Fpred(b)(u)) / 2 - a1 * x1 - y1"
:strict 1)
(("1" (assert ) nil nil )
("2" (expand "abs" 1)
(("2" (grind-reals)
(("1" (hide 1 2)
(("1" (flip-ineq -7)
(("1" (lemma "RleRoundedLessR0" )
(("1"
(inst -1 "Closest?" "b" "u" "t+y" )
(("1"
(split)
(("1" (assert ) nil nil )
("2" (assert ) nil nil )
("3" (propax) nil nil )
("4"
(rewrite "Closest_RoundedMode" )
nil
nil )
("5"
(rewrite "FcanonicBounded" )
nil
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2" (hide 1)
(("2"
(trans-ineq 1
"abs(t-a*x) + abs(-y - a * x + a1 * x1 + y1) - Fulp(b)(Fpred(b)(u)) / 2" )
(("1" (hide-all-but 1)
(("1"
(expand "abs" )
(("1" (grind-reals) nil nil ))
nil ))
nil )
("2"
(case "abs(FtoR[radix](t) - FtoR[radix](a) * FtoR[radix](x)) <= Fulp(b)(Fpred(b)(u)) / 2" )
(("1" (grind-reals) nil nil )
("2"
(hide 2 3)
(("2"
(trans-ineq 1 " Fulp(b)(t) / 2" )
(("1"
(rewrite "ClosestUlp" )
(("1"
(rewrite "FcanonicBounded" )
nil
nil ))
nil )
("2"
(mult-by 1 "2" )
(("2"
(rewrite "FulpCanonic" )
(("2"
(rewrite "FulpCanonic" )
(("1"
(expand "Fsubnormal?" )
(("1"
(flatten)
(("1" (assert ) nil nil ))
nil ))
nil )
("2"
(rewrite "FpredCanonic" )
nil
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2" (hide-all-but (-4 1))
(("2" (expand * "FtoR" "Fabs" "abs" )
(("2" (grind-reals) (("2" (decompose-equality) nil nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
((Fcanonic? const-decl "bool" float nil )
(Format type-eq-decl nil float nil )
(FtoR const-decl "real" float nil )
(float type-eq-decl nil float nil )
(Exp_increq_1 formula-decl nil float nil )
(Fsubnormal? const-decl "bool" float nil )
(FulpCanonic formula-decl nil float nil )
(ClosestUlp formula-decl nil float nil )
(FcanonicBounded formula-decl nil float nil )
(Fpred const-decl "float" float nil )
(FulpFpred1 formula-decl nil float nil )
(Fulp const-decl "real" float nil )
(Fbounded? const-decl "bool" float nil )
(Fabs const-decl "float" float nil )
(RleRoundedLessR0 formula-decl nil float nil )
(Closest_RoundedMode formula-decl nil float nil )
(RND type-eq-decl nil float nil )
(Closest? const-decl "bool" float nil )
(ClosestUlp2 formula-decl nil float nil )
(FpredCanonic formula-decl nil float nil ))
shostak))
(AxpyPos 0
(AxpyPos-1 nil 3320578694
("" (skeep)
(("" (typepred "t" )
(("" (expand "Fcanonic?" )
(("" (split)
(("1" (lemma "Axpy_aux1" )
(("1" (inst -1 "a" "a1" "t" "u" "x" "x1" "y" "y1" )
(("1" (split)
(("1" (propax) nil nil ) ("2" (propax) nil nil )
("3" (lemma "Axpy_aux1_aux1" )
(("3" (inst -1 "a" "t" "u" "x" "y" )
(("3" (split)
(("1" (propax) nil nil )
("2" (split)
(("1" (propax) nil nil ) ("2" (propax) nil nil ))
nil )
("3" (propax) nil nil ) ("4" (propax) nil nil )
("5" (propax) nil nil ) ("6" (propax) nil nil ))
nil ))
nil ))
nil )
("4" (propax) nil nil ) ("5" (propax) nil nil )
("6" (propax) nil nil ))
nil ))
nil ))
nil )
("2" (case "1-dExp(b) <= Fexp(Fpred(b)(u))" )
(("1" (lemma "Axpy_aux1" )
(("1" (inst -1 "a" "a1" "t" "u" "x" "x1" "y" "y1" )
(("1" (split)
(("1" (propax) nil nil ) ("2" (propax) nil nil )
("3" (lemma "Axpy_aux1_aux2" )
(("3" (inst -1 "a" "t" "u" "x" "y" )
(("3" (split)
(("1" (propax) nil nil ) ("2" (propax) nil nil )
("3" (propax) nil nil ) ("4" (propax) nil nil )
("5" (propax) nil nil ) ("6" (propax) nil nil ))
nil ))
nil ))
nil )
("4" (propax) nil nil ) ("5" (propax) nil nil )
("6" (propax) nil nil ))
nil ))
nil ))
nil )
("2" (flip-ineq 1)
(("2" (case "1-dExp(b) <= Fexp(u)" )
(("1" (lemma "Axpy_aux3" )
(("1" (inst -1 "a" "a1" "t" "u" "x" "x1" "y" "y1" )
(("1" (split)
(("1" (propax) nil nil ) ("2" (propax) nil nil )
("3" (propax) nil nil )
("4" (case "Fbounded?(b)(Fpred(b)(u))" )
(("1" (expand "Fbounded?" )
(("1" (flatten) (("1" (assert ) nil nil ))
nil ))
nil )
("2" (rewrite "FcanonicBounded" )
(("2" (rewrite "FpredCanonic" ) nil nil ))
nil ))
nil )
("5" (propax) nil nil ) ("6" (propax) nil nil )
("7" (propax) nil nil ) ("8" (propax) nil nil ))
nil ))
nil ))
nil )
("2" (flip-ineq 1)
(("2" (lemma "Axpy_aux2" )
(("2" (inst -1 "a" "a1" "t" "u" "x" "x1" "y" "y1" )
(("2" (split)
(("1" (propax) nil nil ) ("2" (propax) nil nil )
("3" (rewrite "ExactSum_Near" )
(("1"
(trans-ineq 1 "radix ^ (-dExp(b))/2"
:strict 2)
(("1"
(lemma "ClosestUlp" :subst
("b" "b" "p" "u" "r" "FtoR(t)+FtoR(y)" ))
(("1"
(split)
(("1"
(trans-ineq 1 "Fulp(b)(u) / 2" )
(("1" (assert ) nil nil )
("2"
(mult-by 1 "2" )
(("2"
(rewrite "FulpCanonic" )
(("2"
(rewrite "Exp_increq_1" )
nil
nil ))
nil ))
nil ))
nil )
("2" (propax) nil nil )
("3"
(rewrite "FcanonicBounded" )
nil
nil ))
nil ))
nil )
("2" (grind-reals) nil nil ))
nil )
("2" (rewrite "FcanonicBounded" ) nil nil )
("3" (rewrite "FcanonicBounded" ) nil nil )
("4" (rewrite "FcanonicBounded" ) nil nil ))
nil )
("4" (propax) nil nil ) ("5" (propax) nil nil )
("6" (propax) nil nil ) ("7" (propax) nil nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
((b formal-const-decl "Format" axpy 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)" axpy 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 )
(Axpy_aux1_aux1 formula-decl nil axpy nil )
(Axpy_aux1 formula-decl nil axpy nil )
(real_gt_is_strict_total_order name-judgement
"(strict_total_order?[real])" real_props nil )
(real_le_is_total_order name-judgement "(total_order?[real])"
real_props nil )
(ExactSum_Near formula-decl nil axpy nil )
(posrat_exp application-judgement "posrat" exponentiation nil )
(nnrat_exp application-judgement "nnrat" exponentiation nil )
(ClosestUlp formula-decl nil float nil )
(+ const-decl "[numfield, numfield -> numfield]" number_fields nil )
(Fulp const-decl "real" float nil )
(FulpCanonic formula-decl nil float nil )
(Exp_increq_1 formula-decl nil float nil )
(nonzero_real nonempty-type-eq-decl nil reals nil )
(div_cancel2 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 )
(posrat_div_posrat_is_posrat application-judgement "posrat"
rationals nil )
(AND const-decl "[bool, bool -> bool]" booleans nil )
(>= const-decl "bool" reals nil )
(nonneg_real nonempty-type-eq-decl nil real_types nil )
(- const-decl "[numfield -> numfield]" number_fields nil )
(abs const-decl "{n: nonneg_real | n >= m AND n >= -m}" real_defs
nil )
(FtoR const-decl "real" float nil )
(/= const-decl "boolean" notequal nil )
(nznum nonempty-type-eq-decl nil number_fields nil )
(/ const-decl "[numfield, nznum -> numfield]" number_fields nil )
(OR const-decl "[bool, bool -> bool]" booleans nil )
(^ const-decl "real" exponentiation nil )
(< const-decl "bool" reals nil )
(Axpy_aux2 formula-decl nil axpy nil )
(Axpy_aux3 formula-decl nil axpy nil )
(FcanonicBounded formula-decl nil float nil )
(real_div_nzreal_is_real application-judgement "real" reals nil )
(FpredCanonic formula-decl nil float nil )
(minus_int_is_int application-judgement "int" integers nil )
(int_abs_is_nonneg application-judgement "{j: nonneg_int | j >= i}"
real_defs nil )
(real_lt_is_strict_total_order name-judgement
"(strict_total_order?[real])" real_props nil )
(Fbounded? const-decl "bool" float nil )
(Axpy_aux1_aux2 formula-decl nil axpy nil )
(Fpred const-decl "float" float nil )
(- const-decl "[numfield, numfield -> numfield]" number_fields nil )
(numfield nonempty-type-eq-decl nil number_fields nil )
(<= const-decl "bool" reals nil )
(int_minus_int_is_int application-judgement "int" integers nil )
(real_times_real_is_real application-judgement "real" reals nil )
(real_minus_real_is_real application-judgement "real" reals nil )
(real_plus_real_is_real application-judgement "real" reals nil ))
shostak))
(Axpy_opt_aux1_aux1_TCC1 0
(Axpy_opt_aux1_aux1_TCC1-1 nil 3320665877 ("" (subtype-tcc) nil nil )
((b formal-const-decl "Format" axpy nil )
(Fcanonic? 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 )
(NOT const-decl "[bool -> bool]" booleans nil )
(Fsubnormal? const-decl "bool" float nil )
(^ const-decl "real" exponentiation nil )
(even_times_int_is_even application-judgement "even_int" integers
nil )
(nnint_times_nnint_is_nnint application-judgement "nonneg_int"
integers nil )
(rat_times_rat_is_rat application-judgement "rat" rationals nil )
(posnat_expt application-judgement "posnat" exponentiation nil )
(minus_int_is_int application-judgement "int" integers nil )
(real_le_is_total_order name-judgement "(total_order?[real])"
real_props nil )
(real_ge_is_total_order name-judgement "(total_order?[real])"
real_props nil )
(posint_exp application-judgement "posint" exponentiation nil )
(real_lt_is_strict_total_order name-judgement
"(strict_total_order?[real])" real_props nil )
(radix formal-const-decl "above(1)" axpy 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 )
(Fnormal? const-decl "bool" float nil )
(FtoR const-decl "real" float nil )
(/= const-decl "boolean" notequal nil )
(nnrat_exp application-judgement "nnrat" exponentiation nil )
(posrat_exp application-judgement "posrat" exponentiation nil )
(int_abs_is_nonneg application-judgement "{j: nonneg_int | j >= i}"
real_defs nil )
(mult_divides1 application-judgement "(divides(n))" divides nil )
(mult_divides2 application-judgement "(divides(m))" divides nil ))
nil ))
(Axpy_opt_aux1_aux1_TCC2 0
(Axpy_opt_aux1_aux1_TCC2-1 nil 3320665877
("" (skeep)
(("" (expand "abs" -5)
(("" (grind-reals)
(("" (hide -1 -4)
(("" (expand * "FtoR" "Fnormal?" )
(("" (flatten)
(("" (expand "abs" )
(("" (grind-reals)
(("" (expand "Fpred" )
(("" (grind-reals)
(("1" (lemma "radix_less_vNum" )
(("1" (inst -1 "b" )
(("1" (grind-reals) nil nil )) nil ))
nil )
("2" (case-replace "Fnum(u)=1" )
(("1" (case-replace "vNum(b)=radix^(Prec(b))" )
(("1" (flip-ineq -4)
(("1" (assert )
(("1"
(case "radix^1 < radix ^ (Prec(b))" )
(("1"
(rewrite "expt_x1" )
(("1" (assert ) nil nil ))
nil )
("2" (rewrite "Exp_incr_1" ) nil nil ))
nil ))
nil ))
nil )
("2" (assert )
(("2" (expand "vNum" )
(("2" (propax) nil nil )) nil ))
nil ))
nil )
("2" (assert ) nil nil ))
nil )
("3" (case-replace "Fnum(u)=1" )
(("1" (case "radix^1 < radix ^ (Prec(b))" )
(("1" (flip-ineq -4)
(("1" (assert )
(("1"
(case-replace
"vNum(b)=radix^(Prec(b))" )
(("1"
(rewrite "expt_x1" )
(("1" (assert ) nil nil ))
nil )
("2"
(assert )
(("2"
(expand "vNum" )
(("2" (propax) nil nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2" (rewrite "Exp_incr_1" ) nil nil ))
nil )
("2" (assert ) nil nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
((abs const-decl "{n: nonneg_real | n >= m AND n >= -m}" real_defs
nil )
(neg_times_lt formula-decl nil real_props nil )
(pos_times_lt formula-decl nil real_props nil )
(rat_times_rat_is_rat application-judgement "rat" rationals nil )
(nnrat_exp application-judgement "nnrat" exponentiation nil )
(real_le_is_total_order name-judgement "(total_order?[real])"
real_props nil )
(div_cancel4 formula-decl nil real_props nil )
(posrat_div_posrat_is_posrat application-judgement "posrat"
rationals nil )
(real_gt_is_strict_total_order name-judgement
"(strict_total_order?[real])" real_props nil )
(b formal-const-decl "Format" axpy nil )
(Format type-eq-decl nil float nil )
(nat nonempty-type-eq-decl nil naturalnumbers nil )
(radix formal-const-decl "above(1)" axpy 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 )
(radix_less_vNum formula-decl nil float nil )
(^ const-decl "real" exponentiation nil )
(/= const-decl "boolean" notequal nil )
(OR const-decl "[bool, bool -> bool]" booleans nil )
(vNum const-decl "posnat" float nil )
(posnat nonempty-type-eq-decl nil integers nil )
(nonneg_int nonempty-type-eq-decl nil integers nil )
(>= const-decl "bool" reals nil )
(posint_exp application-judgement "posint" exponentiation nil )
(odd_minus_odd_is_even application-judgement "even_int" integers
nil )
(Exp_incr_1 formula-decl nil float nil )
(expt_x1 formula-decl nil exponentiation nil )
(< const-decl "bool" reals nil )
(posint_times_posint_is_posint application-judgement "posint"
integers nil )
(numfield nonempty-type-eq-decl nil number_fields nil )
(* const-decl "[numfield, numfield -> numfield]" number_fields nil )
(Fcanonic? const-decl "bool" float nil )
(float type-eq-decl nil float nil )
(= const-decl "[T, T -> boolean]" equalities nil )
(Fpred const-decl "float" float nil )
(int_minus_int_is_int application-judgement "int" integers nil )
(FtoR const-decl "real" float nil )
(mult_divides1 application-judgement "(divides(n))" divides nil )
(mult_divides2 application-judgement "(divides(m))" divides nil )
(Fnormal? const-decl "bool" float nil )
(zero_not_lt_zero formula-decl nil real_props nil )
(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 ))
nil ))
(Axpy_opt_aux1_aux1_TCC3 0
(Axpy_opt_aux1_aux1_TCC3-1 nil 3320665877 ("" (subtype-tcc) nil nil )
((b formal-const-decl "Format" axpy nil )
(Fcanonic? 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 )
(NOT const-decl "[bool -> bool]" booleans nil )
(Fsubnormal? const-decl "bool" float nil )
(^ const-decl "real" exponentiation nil )
(even_times_int_is_even application-judgement "even_int" integers
nil )
(nnint_times_nnint_is_nnint application-judgement "nonneg_int"
integers nil )
(rat_times_rat_is_rat application-judgement "rat" rationals nil )
(posnat_expt application-judgement "posnat" exponentiation nil )
(minus_int_is_int application-judgement "int" integers nil )
(real_le_is_total_order name-judgement "(total_order?[real])"
real_props nil )
(real_ge_is_total_order name-judgement "(total_order?[real])"
real_props nil )
(posint_exp application-judgement "posint" exponentiation nil )
(real_lt_is_strict_total_order name-judgement
"(strict_total_order?[real])" real_props nil )
(radix formal-const-decl "above(1)" axpy 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 )
(Fnormal? const-decl "bool" float nil )
(FtoR const-decl "real" float nil )
(/= const-decl "boolean" notequal nil )
(nnrat_exp application-judgement "nnrat" exponentiation nil )
(posrat_exp application-judgement "posrat" exponentiation nil )
(int_abs_is_nonneg application-judgement "{j: nonneg_int | j >= i}"
real_defs nil )
(mult_divides1 application-judgement "(divides(n))" divides nil )
(mult_divides2 application-judgement "(divides(m))" divides nil ))
nil ))
(Axpy_opt_aux1_aux1_TCC4 0
(Axpy_opt_aux1_aux1_TCC4-1 nil 3320665877
("" (skeep)
(("" (case "0 < (1 - 1 / (2 * abs(Fnum(t))))" )
(("1" (grind-reals) nil nil )
("2" (hide -5)
(("2" (case "0 < abs(Fnum(t))" )
(("1" (case "1 <= abs(Fnum(t))" )
(("1" (grind-reals)
(("1" (move-terms 1 r 2) (("1" (assert ) nil nil )) nil ))
nil )
("2" (grind-reals)
(("2" (hide-all-but (-1 1)) (("2" (grind) nil nil )) nil ))
nil ))
nil )
("2" (expand "Fnormal?" )
(("2" (flatten)
(("2" (hide-all-but (-2 1))
(("2" (expand "abs" ) (("2" (grind-reals) nil nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
((b formal-const-decl "Format" axpy 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 )
(radix formal-const-decl "above(1)" axpy nil )
(above nonempty-type-eq-decl nil integers nil )
(> const-decl "bool" reals nil )
(integer_pred const-decl "[rational -> boolean]" integers nil )
(rational nonempty-type-from-decl nil rationals nil )
(rational_pred const-decl "[real -> boolean]" rationals nil )
(int nonempty-type-eq-decl nil integers nil )
(abs const-decl "{n: nonneg_real | n >= m AND n >= -m}" real_defs
nil )
(- const-decl "[numfield -> numfield]" 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 "[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 )
(- const-decl "[numfield, numfield -> numfield]" number_fields nil )
(numfield nonempty-type-eq-decl nil number_fields 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 )
(rat_minus_rat_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 )
(nnint_times_nnint_is_nnint application-judgement "nonneg_int"
integers nil )
(real_lt_is_strict_total_order name-judgement
"(strict_total_order?[real])" real_props nil )
(nzrat_div_nzrat_is_nzrat application-judgement "nzrat" rationals
nil )
(int_abs_is_nonneg application-judgement "{j: nonneg_int | j >= i}"
real_defs nil )
(real_ge_is_total_order name-judgement "(total_order?[real])"
real_props nil )
(minus_int_is_int application-judgement "int" integers nil )
(real_le_is_total_order name-judgement "(total_order?[real])"
real_props nil )
(real_gt_is_strict_total_order name-judgement
"(strict_total_order?[real])" real_props nil )
(int_times_even_is_even application-judgement "even_int" integers
nil )
(div_mult_pos_lt1 formula-decl nil real_props nil )
(rat_plus_rat_is_rat application-judgement "rat" rationals nil )
(IFF const-decl "[bool, bool -> bool]" booleans nil )
(+ const-decl "[numfield, numfield -> numfield]" number_fields nil )
(<= const-decl "bool" reals nil )
(neg_times_lt formula-decl nil real_props nil )
(Fnormal? const-decl "bool" float nil ))
nil ))
(Axpy_opt_aux1_aux1_TCC5 0
(Axpy_opt_aux1_aux1_TCC5-1 nil 3320665877 ("" (subtype-tcc) nil nil )
((b formal-const-decl "Format" axpy nil )
(Fcanonic? 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 )
(NOT const-decl "[bool -> bool]" booleans nil )
(even_times_int_is_even application-judgement "even_int" integers
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 )
(posint_exp application-judgement "posint" exponentiation nil )
(real_ge_is_total_order name-judgement "(total_order?[real])"
real_props nil )
(real_le_is_total_order name-judgement "(total_order?[real])"
real_props nil )
(minus_int_is_int application-judgement "int" integers nil )
(posnat_expt application-judgement "posnat" exponentiation nil )
(nat_exp application-judgement "nat" exponentiation nil )
(nat_expt application-judgement "nat" exponentiation nil )
(abs const-decl "{n: nonneg_real | n >= m AND n >= -m}" real_defs
nil )
(^ const-decl "real" exponentiation nil )
(Fsubnormal? const-decl "bool" float nil )
(radix formal-const-decl "above(1)" axpy 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 )
(Fnormal? const-decl "bool" float nil )
(FtoR const-decl "real" float nil )
(/= const-decl "boolean" notequal nil )
(nnrat_exp application-judgement "nnrat" exponentiation nil )
(posrat_exp application-judgement "posrat" exponentiation nil )
(mult_divides1 application-judgement "(divides(n))" divides nil )
(mult_divides2 application-judgement "(divides(m))" divides nil ))
nil ))
(Axpy_opt_aux1_aux1 0
(Axpy_opt_aux1_aux1-1 nil 3320665878
(""
(case "FORALL (x:float): Fnormal?(b)(x) => radix^(Prec(b)-1) <= abs(Fnum(x))" )
(("1" (skeep)
(("1" (inst-cp -1 "t" )
(("1" (inst -1 "u" )
(("1" (split)
(("1" (split)
(("1" (case "2 <= radix ^ (Prec(b) - 1)" )
(("1" (mult-by 1 "(1 - 1 / (2 * abs(Fnum(t))))" )
(("1"
(trans-ineq 1
"(1 + radix + radix ^ (4 - Prec(b))) * (1 - radix^(1-Prec(b))/2)" )
(("1" (move-terms 1 l 1)
(("1" (move-terms 1 l 4)
(("1"
(trans-ineq 1
"radix/(radix^(Prec(b)-1)-1)+radix/(2*radix^(Prec(b)-1))+
radix*1/(2*radix^(Prec(b)-1))*1/(radix^(Prec(b)-1)-1)")
(("1"
(case "(abs(Fnum(Fpred(b)(u)))=radix ^ (Prec(b))-1 AND abs(Fnum(u))= radix ^ (Prec(b) - 1)) OR abs(Fnum(Fpred(b)(u)))=abs(Fnum(u))-1" )
(("1" (split)
(("1"
(flatten)
(("1"
(copy -3)
(("1"
(replace -3)
(("1"
(hide -4)
(("1"
(replace -2)
(("1"
(hide-all-but (-1 1))
(("1"
(case
"radix ^ (Prec(b))=radix*radix ^ (Prec(b) - 1)" )
(("1"
(name-replace
"AA"
"radix ^ (Prec(b) - 1)" )
(("1"
(copy -2)
(("1"
(replace -2)
(("1"
(hide -3)
(("1"
(case
"1 / (radix * AA - 1) <= 1 / (AA - 1)" )
(("1"
(case
"(1 / (radix * AA - 1)) * (1 / (2 * AA)) * radix <= radix * 1 / (2 * AA) * 1 / (AA - 1)" )
(("1"
(case
" (1 / (radix * AA - 1)) * radix <= radix / (AA - 1)" )
(("1"
(assert )
nil
nil )
("2"
(hide 2)
(("2"
(div-by
1
"radix" )
(("2"
(case-replace
"radix / (AA - 1) / radix=1 / (AA - 1)" )
(("2"
(field
1)
nil
nil ))
nil ))
nil ))
nil ))
nil )
("2"
(hide 2)
(("2"
(div-by
1
"radix" )
(("2"
(case-replace
" radix * 1 / (2 * AA) * 1 / (AA - 1) / radix =
(1 / (AA - 1))* (1 / (2 * AA))")
(("1"
(mult-by
1
"2*AA" )
(("1"
(case-replace
"(1 / (radix * AA - 1)) * (1 / (2 * AA)) * (2 * AA)=1 / (radix * AA - 1)" )
(("1"
(case-replace
"(1 / (AA - 1)) * (1 / (2 * AA)) * (2 * AA)=1 / (AA - 1)" )
(("1"
(field
1)
nil
nil ))
nil )
("2"
(field
1)
nil
nil ))
nil ))
nil )
("2"
(field
1)
nil
nil ))
nil ))
nil ))
nil ))
nil )
("2"
(hide 2)
(("2"
(case
"0 < radix * AA - 1" )
(("1"
(case
"0 < AA - 1" )
(("1"
(grind-reals)
(("1"
(div-by
1
"AA" )
(("1"
(assert )
nil
nil ))
nil ))
nil )
("2"
(grind-reals)
nil
nil ))
nil )
("2"
(hide 2)
(("2"
(case
"2*2 <= radix*AA" )
(("1"
(grind-reals)
nil
nil )
("2"
(trans-ineq
1
"2*AA" )
(("1"
(grind-reals)
nil
nil )
("2"
(grind-reals)
nil
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2"
(hide 2)
(("2"
(rewrite
"expt_div"
:dir
rl)
(("2"
(field 1)
nil
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2"
(replace -1)
(("2"
(hide -2)
(("2"
(case
"1 / (abs(Fnum(u)) - 1) <= 1 / (radix ^ (Prec(b) - 1) - 1)" )
(("1"
(trans-ineq
1
"radix / (radix ^ (Prec(b) - 1) - 1) + 1 / (2 * abs(Fnum(u))) * radix +
(1 / (abs(Fnum(u)) - 1)) * (1 / (2 * abs(Fnum(u)))) * radix")
(("1" (assert ) nil nil )
("2"
(case-replace
" radix / (radix ^ (Prec(b) - 1) - 1) = (1/ (radix ^ (Prec(b) - 1) - 1)) * radix" )
(("1"
(case
"(1 / (abs(Fnum(u)) - 1)) * radix <= (1 / (radix ^ (Prec(b) - 1) - 1)) * radix" )
(("1" (assert ) nil nil )
("2"
(hide 2)
(("2"
(div-by 1 "radix" )
nil
nil ))
nil ))
nil )
("2" (assert ) nil nil ))
nil )
("3"
(case
" 1 / (2 * abs(Fnum(u))) * radix <= radix / (2 * radix ^ (Prec(b) - 1))" )
(("1"
(trans-ineq
1
" radix / (radix ^ (Prec(b) - 1) - 1) +
radix / (2 * radix ^ (Prec(b) - 1))+(1 / (abs(Fnum(u)) - 1)) * (1 / (2 * abs(Fnum(u)))) * radix")
(("1" (assert ) nil nil )
("2"
(case
"(1 / (abs(Fnum(u)) - 1)) * (1 / (2 * abs(Fnum(u)))) * radix <= radix * 1 / (2 * radix ^ (Prec(b) - 1)) * 1 /
(radix ^ (Prec(b) - 1) - 1)")
(("1" (assert ) nil nil )
("2"
(hide 2)
(("2"
(div-by 1 "radix" )
(("2"
(case-replace
" radix * 1 / (2 * radix ^ (Prec(b) - 1)) * 1 /
(radix ^ (Prec(b) - 1) - 1)
/ radix = 1 / (radix ^ (Prec(b) - 1) - 1) * 1 / (2 * radix ^ (Prec(b) - 1))")
(("1"
(case
"(1 / (2 * abs(Fnum(u)))) <= 1 / (2 * radix ^ (Prec(b) - 1))" )
(("1"
(trans-ineq
1
" (1 / (abs(Fnum(u)) - 1)) * 1 / (2 * radix ^ (Prec(b) - 1))" )
(("1"
(mult-by
1
"abs(Fnum(u)) - 1" )
(("1"
(case-replace
"(1 / (abs(Fnum(u)) - 1)) * (1 / (2 * abs(Fnum(u)))) *
(abs(Fnum(u)) - 1)=(1 / (2 * abs(Fnum(u))))")
(("1"
(case-replace
"(1 / (abs(Fnum(u)) - 1)) * 1 / (2 * radix ^ (Prec(b) - 1)) *
(abs(Fnum(u)) - 1)=1 / (2 * radix ^ (Prec(b) - 1))")
(("1"
(field 1)
nil
nil ))
nil )
("2"
(field 1)
nil
nil ))
nil )
("2"
(grind-reals)
nil
nil ))
nil )
("2"
(mult-by
1
"2 * radix ^ (Prec(b) - 1)" )
nil
nil ))
nil )
("2"
(hide 2)
(("2"
(grind-reals)
nil
nil ))
nil ))
nil )
("2"
(field 1)
nil
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2"
(hide 2)
(("2"
(div-by 1 "radix" )
(("2"
(case-replace
"radix / (2 * radix ^ (Prec(b) - 1)) / radix= 1 / (2*radix ^ (Prec(b) - 1))" )
(("1"
(mult-by 1 "2" )
(("1"
(case-replace
"1 / (2 * abs(Fnum(u))) * 2=1 /abs(Fnum(u))" )
(("1"
(case-replace
"1 / (2 * radix ^ (Prec(b) - 1)) * 2=1/radix ^ (Prec(b) - 1)" )
(("1"
(grind-reals)
nil
nil )
("2"
(field 1)
nil
nil ))
nil )
("2"
(field 1)
nil
nil )
("3"
(grind-reals)
nil
nil ))
nil ))
nil )
("2" (field 1) nil nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2"
(hide 2)
(("2"
(case
"0 < radix ^ (Prec(b) - 1) - 1" )
(("1" (grind-reals) nil nil )
("2"
(case
"radix^1 <= radix ^ (Prec(b) - 1)" )
(("1"
(rewrite "expt_x1" )
(("1"
(grind-reals)
nil
nil ))
nil )
("2"
(rewrite "Exp_increq_1" )
nil
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2" (hide 2)
(("2"
(case "0 < Fnum(u)" )
(("1"
(case "0 <= Fnum(Fpred(b)(u))" )
(("1"
(case-replace
"abs(Fnum(Fpred(b)(u)))=Fnum(Fpred(b)(u))" )
(("1"
(case-replace
"abs(Fnum(u))=Fnum(u)" )
(("1"
(case-replace
"radix ^ (Prec(b))=vNum(b)" )
(("1"
(case-replace
"radix ^ (Prec(b)-1)=vNum(b)/radix" )
(("1"
(expand "Fpred" 1)
(("1"
(grind-reals)
nil
nil ))
nil )
("2"
(rewrite -1 :dir rl)
(("2"
(rewrite
"expt_div"
:dir
rl)
nil
nil ))
nil ))
nil )
("2"
(expand "vNum" )
(("2" (propax) nil nil ))
nil ))
nil )
("2"
(expand "abs" 1)
(("2" (grind-reals) nil nil ))
nil ))
nil )
("2"
(expand "abs" 1)
(("2" (grind-reals) nil nil ))
nil ))
nil )
("2"
(case "0 <= FtoR(Fpred(b)(u))" )
(("1"
(expand "FtoR" -1)
(("1" (grind-reals) nil nil ))
nil )
("2"
(rewrite "FpredPos" )
nil
nil ))
nil ))
nil )
("2"
(expand "FtoR" -6)
(("2" (grind-reals) nil nil ))
nil ))
nil ))
nil ))
nil )
("2" (hide -2 -3 -4 -5 -6)
(("2"
(case-replace
"radix ^ (1 - Prec(b))=1/radix ^ (Prec(b) - 1)" )
(("1"
(case-replace
" radix ^ (4 - Prec(b))=radix^3/radix ^ (Prec(b) - 1)" )
(("1"
(hide -1 -2)
(("1"
(name-replace
"AA"
"radix ^ (Prec(b) - 1)" )
(("1"
(case "0 < AA-1" )
(("1"
(case "0 < 2*AA" )
(("1"
(mult-by 1 "AA-1" )
(("1"
(mult-by 1 "2*AA" )
(("1"
(trans-ineq
1
"3*AA*radix" )
(("1" (field 1) nil nil )
("2"
(grind-reals)
(("2"
(mult-by 1 "AA" )
(("2"
(grind-reals)
(("2"
(case-replace
"2 * (AA * AA * radix ^ 3) / (2 * (AA * AA))=radix ^ 3" )
(("1"
(case-replace
"2 * (AA * AA * radix) / (2 * AA)=AA * radix" )
(("1"
(case-replace
"2 * (AA * AA * AA) / (2 * AA)=AA * AA" )
(("1"
(case-replace
"2 * (AA * AA * AA * radix ^ 3) / (2 * (AA * AA))=AA * radix ^ 3" )
(("1"
(case-replace
" 2 * (AA * AA * AA * radix) / (2 * AA)=AA * AA * radix" )
(("1"
(hide
-1
-2
-3
-4
-5)
(("1"
(assert )
(("1"
(move-terms
1
r
4)
(("1"
(move-terms
1
r
4)
(("1"
(move-terms
1
r
4)
(("1"
(case
"radix*radix <= AA" )
(("1"
(hide
-5)
(("1"
(rewrite
"expt_x3" )
(("1"
(grind-reals)
(("1"
(trans-ineq
1
" 2 * (AA * AA * radix * radix * radix)" )
(("1"
(trans-ineq
1
"AA * AA + 3 * (AA * (AA * radix)) + 4 * (AA * AA * radix)" )
(("1"
(grind-reals)
nil
nil )
("2"
(div-by
1
"AA" )
(("2"
(div-by
1
"AA" )
(("2"
(trans-ineq
1
"1+7*radix" )
(("1"
(field
1)
nil
nil )
("2"
(case-replace
"2 * (AA * AA * radix * radix * radix) / AA / AA=2*radix*radix*radix" )
(("1"
(hide
-1)
(("1"
(trans-ineq
1
"8*radix" )
(("1"
(grind-reals)
nil
nil )
("2"
(div-by
1
"radix" )
(("2"
(div-by
1
"2" )
(("2"
(case-replace
"8/2=4" )
(("1"
(trans-ineq
1
"2*radix" )
(("1"
(grind-reals)
nil
nil )
("2"
(grind-reals)
nil
nil ))
nil )
("2"
(field
1)
nil
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2"
(field
1)
nil
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2"
(grind-reals)
nil
nil ))
nil ))
nil ))
nil ))
nil )
("2"
(hide
2)
(("2"
(reveal
-12)
(("2"
(rewrite
-1
:dir
rl)
(("2"
(rewrite
"expt_x2"
:dir
rl)
(("2"
(rewrite
"Exp_increq_1" )
nil
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2"
(field
1)
nil
nil ))
nil )
("2"
(field 1)
nil
nil ))
nil )
("2"
(field 1)
nil
nil ))
nil )
("2"
(field 1)
nil
nil ))
nil )
("2"
(field 1)
nil
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2"
(hide 2)
(("2" (grind-reals) nil nil ))
nil ))
nil )
("2"
(hide 2)
(("2" (grind-reals) nil nil ))
nil ))
nil ))
nil ))
nil )
("2"
(hide 2)
(("2" (rewrite "expt_div" ) nil nil ))
nil ))
nil )
("2"
(hide 2)
(("2"
(rewrite "expt_inverse" :dir rl)
(("2" (assert ) nil nil ))
nil ))
nil ))
nil ))
nil )
("3" (hide 2)
(("3" (skosimp*)
(("3"
(hide -1)
(("3" (grind-reals) nil nil ))
nil ))
nil ))
nil )
("4" (hide 2) (("4" (grind-reals) nil nil ))
nil ))
nil ))
nil ))
nil )
("2"
(div-by 1 "1 + radix + radix ^ (4 - Prec(b))" )
(("2"
(case-replace
"radix ^ (1 - Prec(b))=1/radix ^ (Prec(b) - 1)" )
(("1" (grind-reals) nil nil )
("2" (rewrite "expt_inverse" :dir rl)
(("2" (assert ) nil nil )) nil ))
nil ))
nil ))
nil )
("2" (hide 2)
(("2" (split)
(("1" (field 1) nil nil ) ("2" (field 1) nil nil ))
nil ))
nil ))
nil )
("2" (trans-ineq 1 "radix ^1" )
(("1" (rewrite "expt_x1" ) (("1" (assert ) nil nil ))
nil )
("2" (rewrite "Exp_increq_1" ) nil nil ))
nil ))
nil )
("2" (propax) nil nil ))
nil )
("2" (propax) nil nil ))
nil ))
nil ))
nil ))
nil )
("2" (hide 2)
(("2" (skeep)
(("2" (expand "Fnormal?" )
(("2" (flatten)
(("2" (rewrite "abs_mult" )
(("2" (expand "abs" -2 1)
(("2"
(case-replace
"vNum(b)= radix *radix ^ (Prec(b) - 1)" )
(("1" (grind-reals) nil nil )
("2" (case-replace " vNum(b) =radix ^ (Prec(b))" )
(("1" (rewrite "expt_div" :dir rl)
(("1" (field 1) nil nil )) nil )
("2" (assert )
(("2" (expand "vNum" ) (("2" (propax) nil nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("3" (hide 2) (("3" (skeep) (("3" (assert ) nil nil )) nil )) nil ))
nil )
((abs_mult formula-decl nil real_props nil )
(nzint_abs_is_pos application-judgement "{j: posint | j >= i}"
real_defs nil )
(rat_minus_rat_is_rat application-judgement "rat" rationals nil )
(rat_div_nzrat_is_rat application-judgement "rat" rationals nil )
(both_sides_times_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 )
(Fpred const-decl "float" float nil )
(t skolem-const-decl "{x: float | Fcanonic?(b)(x)}" axpy 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 )
(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 )
(int_abs_is_nonneg application-judgement "{j: nonneg_int | j >= i}"
real_defs nil )
(posrat_plus_nnrat_is_posrat application-judgement "posrat"
rationals nil )
(real_ge_is_total_order name-judgement "(total_order?[real])"
real_props nil )
(nzrat_div_nzrat_is_nzrat application-judgement "nzrat" rationals
nil )
(real_gt_is_strict_total_order name-judgement
"(strict_total_order?[real])" real_props nil )
(real_le_is_total_order name-judgement "(total_order?[real])"
real_props nil )
(nnrat_exp application-judgement "nnrat" exponentiation nil )
(posrat_exp application-judgement "posrat" exponentiation nil )
(real_lt_is_strict_total_order name-judgement
"(strict_total_order?[real])" real_props nil )
(rat_plus_rat_is_rat application-judgement "rat" rationals nil )
(rat_times_rat_is_rat application-judgement "rat" rationals nil )
(nzrat_times_nzrat_is_nzrat application-judgement "nzrat" rationals
nil )
(posint_plus_nnint_is_posint application-judgement "posint"
integers nil )
(div_cancel2 formula-decl nil real_props nil )
(nonzero_real nonempty-type-eq-decl nil reals nil )
(both_sides_minus_le2 formula-decl nil real_props nil )
(IFF const-decl "[bool, bool -> bool]" booleans nil )
(posint_times_posint_is_posint application-judgement "posint"
integers nil )
(pos_times_lt formula-decl nil real_props nil )
(minus_int_is_int application-judgement "int" integers nil )
(div_cancel4 formula-decl nil real_props nil )
(nonneg_int nonempty-type-eq-decl nil integers nil )
(posnat nonempty-type-eq-decl nil integers nil )
(vNum const-decl "posnat" float nil )
(FpredPos formula-decl nil float nil )
(pos_times_le formula-decl nil real_props nil )
(FtoR const-decl "real" float nil )
(expt_x1 formula-decl nil exponentiation nil )
(expt_div formula-decl nil exponentiation nil )
(nzreal nonempty-type-eq-decl nil reals nil )
(posrat nonempty-type-eq-decl nil rationals nil )
(nonneg_rat nonempty-type-eq-decl nil rationals nil )
(both_sides_div_pos_le1 formula-decl nil real_props nil )
(times_div_cancel2 formula-decl nil extra_real_props nil )
(NOT const-decl "[bool -> bool]" booleans nil )
(< const-decl "bool" reals nil )
(both_sides_div_pos_le2 formula-decl nil real_props nil )
(both_sides_minus_le1 formula-decl nil real_props nil )
(div_simp formula-decl nil real_props nil )
(le_times_le_pos formula-decl nil real_props nil )
(posint_exp application-judgement "posint" exponentiation nil )
(Exp_increq_1 formula-decl nil float nil )
(div_distributes_minus formula-decl nil real_props nil )
(cross_mult formula-decl nil real_props nil )
(times_div1 formula-decl nil real_props nil )
(div_mult_pos_le1 formula-decl nil real_props nil )
(times_div2 formula-decl nil real_props nil )
(div_cancel3 formula-decl nil real_props nil )
(div_mult_pos_le2 formula-decl nil real_props nil )
(pos_times_gt formula-decl nil real_props nil )
(neg_times_lt formula-decl nil real_props nil )
(neg_times_le formula-decl nil real_props nil )
(both_sides_times_pos_le2 formula-decl nil real_props nil )
(div_times formula-decl nil real_props nil )
(div_div2 formula-decl nil real_props nil )
(even_minus_even_is_even application-judgement "even_int" integers
nil )
(nnrat_times_nnrat_is_nnrat application-judgement "nonneg_rat"
rationals nil )
(int_times_even_is_even application-judgement "even_int" integers
nil )
(u skolem-const-decl "{x: float | Fcanonic?(b)(x)}" axpy nil )
(= const-decl "[T, T -> boolean]" equalities nil )
(AA skolem-const-decl "posrat" axpy nil )
(rat nonempty-type-eq-decl nil rationals nil )
(TRUE const-decl "bool" booleans nil )
(id const-decl "(bijective?[T, T])" identity nil )
(bijective? const-decl "bool" functions nil )
(minus_even_is_even application-judgement "even_int" integers nil )
(minus_nzint_is_nzint application-judgement "nzint" integers nil )
(minus_odd_is_odd application-judgement "odd_int" integers nil )
(expt_x3 formula-decl nil exponentiation nil )
(le_div_le_pos formula-decl nil real_props nil )
(times_div_cancel1 formula-decl nil extra_real_props nil )
(le_plus_le formula-decl nil real_props nil )
(expt_x2 formula-decl nil exponentiation nil )
(div_cancel1 formula-decl nil real_props nil )
(expt_inverse formula-decl nil exponentiation nil )
(posrat_div_posrat_is_posrat application-judgement "posrat"
rationals nil )
(posrat_times_posrat_is_posrat application-judgement "posrat"
rationals nil )
(even_minus_odd_is_odd application-judgement "odd_int" integers
nil )
(both_sides_times_pos_ge1 formula-decl nil real_props nil )
(FDX_67 skolem-const-decl
"{n: nonneg_real | n >= Fnum(t) AND n >= -Fnum(t)}" axpy nil )
(both_sides_times_pos_le1_imp formula-decl nil extra_real_props
nil )
(Fcanonic? const-decl "bool" float nil )
(int_minus_int_is_int application-judgement "int" integers nil )
(int nonempty-type-eq-decl nil integers nil )
(number nonempty-type-decl nil numbers nil )
(boolean nonempty-type-decl nil booleans nil )
(number_field_pred const-decl "[number -> boolean]" number_fields
nil )
(number_field nonempty-type-from-decl nil number_fields nil )
(real_pred const-decl "[number_field -> boolean]" reals nil )
(real nonempty-type-from-decl nil reals nil )
(rational_pred const-decl "[real -> boolean]" rationals nil )
(rational nonempty-type-from-decl nil rationals nil )
(integer_pred const-decl "[rational -> boolean]" integers nil )
(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)" axpy nil )
(float type-eq-decl nil float nil )
(IMPLIES const-decl "[bool, bool -> bool]" booleans nil )
(nat nonempty-type-eq-decl nil naturalnumbers nil )
(Format type-eq-decl nil float nil )
(Fnormal? const-decl "bool" float nil )
(b formal-const-decl "Format" axpy nil )
(<= const-decl "bool" reals nil )
(OR const-decl "[bool, bool -> bool]" booleans nil )
(/= const-decl "boolean" notequal nil )
(>= const-decl "bool" reals nil )
(^ const-decl "real" exponentiation nil )
(numfield nonempty-type-eq-decl nil number_fields nil )
(- const-decl "[numfield, numfield -> numfield]" number_fields nil )
(nonneg_real nonempty-type-eq-decl nil real_types nil )
(AND const-decl "[bool, bool -> bool]" booleans nil )
(- const-decl "[numfield -> numfield]" number_fields nil )
(abs const-decl "{n: nonneg_real | n >= m AND n >= -m}" real_defs
nil ))
shostak))
(Axpy_opt_aux1_TCC1 0
(Axpy_opt_aux1_TCC1-1 nil 3320593659 ("" (subtype-tcc) nil nil )
((b formal-const-decl "Format" axpy nil )
(Fcanonic? 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 )
(NOT const-decl "[bool -> bool]" booleans nil )
(even_times_int_is_even application-judgement "even_int" integers
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 )
(posint_exp application-judgement "posint" exponentiation nil )
(real_ge_is_total_order name-judgement "(total_order?[real])"
real_props nil )
(real_le_is_total_order name-judgement "(total_order?[real])"
real_props nil )
(minus_int_is_int application-judgement "int" integers nil )
(posnat_expt application-judgement "posnat" exponentiation nil )
(real_gt_is_strict_total_order name-judgement
"(strict_total_order?[real])" real_props nil )
(nat_exp application-judgement "nat" exponentiation nil )
(nat_expt application-judgement "nat" exponentiation nil )
(abs const-decl "{n: nonneg_real | n >= m AND n >= -m}" real_defs
nil )
(^ const-decl "real" exponentiation nil )
(Fsubnormal? const-decl "bool" float nil )
(radix formal-const-decl "above(1)" axpy 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 )
(Closest? const-decl "bool" float nil )
(vNum const-decl "posnat" float nil )
(Fbounded? const-decl "bool" float nil )
(Fnormal? const-decl "bool" float nil )
(/= const-decl "boolean" notequal 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 )
(rat_minus_rat_is_rat application-judgement "rat" rationals nil )
(real_minus_real_is_real application-judgement "real" reals nil )
(mult_divides1 application-judgement "(divides(n))" divides nil )
(mult_divides2 application-judgement "(divides(m))" divides nil ))
nil ))
(Axpy_opt_aux1 0
(Axpy_opt_aux1-1 nil 3320593708
("" (skeep)
(("" (case "Fnormal?(b)(u)" )
(("1" (case "0 < Fnum(Fpred(b)(u))" )
(("1" (case "0 < 1+1/Fnum(Fpred(b)(u))" )
(("1" (trans-ineq 1 "FtoR(u)/(1+1/Fnum(Fpred(b)(u)))" )
(("1" (mult-by 1 "1 + 1 / Fnum(Fpred(b)(u))" )
(("1" (case "0 < abs(Fnum(u))" )
(("1" (case "0 < 1+1/(2*abs(Fnum(u)))" )
(("1"
(trans-ineq 1
"abs(FtoR(t)+FtoR(y))/(1+1/(2*abs(Fnum(u))))" )
(("1" (mult-by 1 "1 + 1 / (2 * abs(Fnum(u)))" )
(("1"
(trans-ineq 1 "abs(FtoR(y)) - abs(FtoR(t))" )
(("1" (move-terms 1 r 2)
(("1"
(trans-ineq 1
"abs(FtoR[radix](t))*(1+radix*((1 + 1 / Fnum(Fpred(b)(u)))*(1 + 1 / (2 * abs(Fnum(u))))))" )
(("1" (assert ) nil nil )
("2" (case "0 < abs(Fnum(t))" )
(("1"
(case
" 0 < (1 - 1 / (2 * abs(Fnum(t))))" )
(("1"
(case
" abs(FtoR[radix](t)) <=
abs(FtoR[radix](a) * FtoR[radix](x)) / (1 - 1 / (2 * abs(Fnum(t))))")
(("1"
(trans-ineq
1
"(radix + 1 + radix ^ (4 - Prec(b))) *
abs(FtoR[radix](a) * FtoR[radix](x))")
(("1"
(lemma "Axpy_opt_aux1_aux1" )
(("1"
(inst -1 "t" "u" )
(("1"
(split)
(("1"
(mult-by
-1
"abs(FtoR(a)*FtoR(x))" )
(("1"
(trans-ineq
1
"(1 +
radix * (1 + 1 / (2 * abs(Fnum(u)))) *
(1 + 1 / abs(Fnum(Fpred(b)(u)))))
/ (1 - 1 / (2 * abs(Fnum(t))))
* abs(FtoR[radix](a) * FtoR[radix](x))")
(("1"
(hide -1)
(("1"
(case-replace
"abs(Fnum(Fpred(b)(u)))=Fnum(Fpred(b)(u))" )
(("1"
(hide -1)
(("1"
(name-replace
"G1"
"(1 - 1 / (2 * abs(Fnum(t))))" )
(("1"
(name-replace
"G2"
"1 + 1 / (2 * abs(Fnum(u)))" )
(("1"
(name-replace
"G3"
"1 + 1 / Fnum(Fpred(b)(u))" )
(("1"
(div-by
1
"1 + radix * (G3 * G2)" )
(("1"
(case-replace
"(1 + radix * G2 * G3) / G1 * abs(FtoR[radix](a) * FtoR[radix](x)) /
(1 + radix * (G3 * G2))= abs(FtoR[radix](a) * FtoR[radix](x)) / G1")
(("1"
(field
1)
nil
nil ))
nil )
("2"
(hide 2)
(("2"
(case
"radix * (G3 * G2) >= 0" )
(("1"
(split)
(("1"
(grind-reals)
nil
nil )
("2"
(grind-reals)
nil
nil ))
nil )
("2"
(grind-reals)
nil
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2"
(hide 2)
(("2"
(expand "abs" 1)
(("2"
(grind-reals)
nil
nil ))
nil ))
nil ))
nil ))
nil )
("2" (assert ) nil nil ))
nil ))
nil )
("2" (propax) nil nil )
("3" (propax) nil nil )
("4" (propax) nil nil )
("5" (propax) nil nil ))
nil ))
nil ))
nil ))
nil )
("2"
(hide 2)
(("2"
(rewrite "RoundLe" )
(("2"
(hide-all-but (-1 -3))
(("2"
(expand * "abs" "FtoR" )
(("2" (grind-reals) nil nil ))
nil ))
nil ))
nil ))
nil )
("3" (assert ) nil nil ))
nil )
("2"
(hide 2)
(("2"
(hide-all-but (-1 1))
(("2"
(move-terms 1 r 2)
(("2"
(assert )
(("2"
(case "1 <= abs(Fnum(t))" )
(("1" (grind-reals) nil nil )
("2"
(hide 2)
(("2" (grind) nil nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("3" (assert ) nil nil ))
nil )
("2"
(expand "Fnormal?" )
(("2"
(flatten)
(("2"
(hide-all-but (1 -12))
(("2"
(rewrite "abs_mult" )
(("2"
(expand "abs" -1 1)
(("2" (grind-reals) nil nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2" (expand "abs" 1)
(("2" (grind-reals) nil nil )) nil ))
nil ))
nil )
("2" (trans-ineq 1 "abs(FtoR(u))" )
(("1" (rewrite "RoundGe" ) nil nil )
("2" (expand "abs" )
(("2" (grind-reals) nil nil )) nil ))
nil )
("3" (skosimp*) (("3" (grind-reals) nil nil )) nil )
("4" (grind-reals) nil nil ))
nil )
("2" (case "0 <= 1 / (2 * abs(Fnum(u)))" )
(("1" (grind-reals) nil nil )
("2" (grind-reals) nil nil ))
nil )
("3" (grind-reals) nil nil ))
nil )
("2" (expand "FtoR" -6)
(("2" (expand "abs" 1) (("2" (grind-reals) nil nil ))
nil ))
nil ))
nil ))
nil )
("2" (mult-by 1 "1 + 1/Fnum(Fpred(b)(u))" )
(("2" (assert )
(("2"
(case-replace
" FtoR[radix](Fpred(b)(u)) * (1 / Fnum(Fpred(b)(u))) = Fulp(b)(Fpred(b)(u))" )
(("1" (rewrite "FpredDiff" :dir rl)
(("1" (assert ) nil nil )) nil )
("2" (hide 2)
(("2" (expand "FtoR" 1)
(("2" (rewrite "FulpCanonic" )
(("1" (field 1) nil nil )
("2" (rewrite "FpredCanonic" ) nil nil ))
nil ))
nil ))
nil )
("3" (rewrite "FcanonicBounded" )
(("3" (rewrite "FpredCanonic" ) nil nil )) nil ))
nil ))
nil ))
nil )
("3" (hide 2)
(("3" (skosimp*) (("3" (grind-reals) nil nil )) nil )) nil )
("4" (hide 2)
(("4" (skosimp*) (("4" (grind-reals) nil nil )) nil ))
nil ))
nil )
("2" (hide-all-but (-1 1))
(("2" (trans-ineq 1 "1" :strict 1)
(("1" (assert ) nil nil )
("2" (grind-reals)
(("2" (case "0 <= 1 / Fnum(Fpred(b)(u))" )
(("1" (grind-reals) nil nil )
("2" (grind-reals) nil nil ))
nil ))
nil ))
nil ))
nil )
("3" (assert ) nil nil ))
nil )
("2" (hide-all-but (-1 1 -4))
(("2" (expand * "FtoR" "Fnormal?" )
(("2" (flatten)
(("2" (expand "abs" -2)
(("2" (grind-reals)
(("2" (expand "Fpred" )
(("2" (grind-reals)
(("1" (lemma "radix_less_vNum" )
(("1" (inst -1 "b" )
(("1" (grind-reals) nil nil )) nil ))
nil )
("2" (mult-by 2 "radix" )
(("2" (assert )
(("2" (case "radix < vNum(b)" )
(("1" (grind-reals) nil nil )
("2"
(case-replace "vNum(b)=radix^(Prec(b))" )
(("1"
(case "radix=radix^1" )
(("1"
(trans-ineq 1 "radix^1" :strict 2)
(("1" (assert ) nil nil )
("2"
(rewrite "Exp_incr_1" )
nil
nil ))
nil )
("2" (rewrite "expt_x1" ) nil nil ))
nil )
("2"
(assert )
(("2"
(expand "vNum" )
(("2" (propax) nil nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("3" (mult-by 2 "radix" )
(("3" (assert )
(("3" (case "radix < vNum(b)" )
(("1" (grind-reals) nil nil )
("2" (trans-ineq 1 "radix^1" :strict 2)
(("1"
(rewrite "expt_x1" )
(("1" (assert ) nil nil ))
nil )
("2"
(case-replace
"vNum(b)=radix^(Prec(b))" )
(("1" (rewrite "Exp_incr_1" ) nil nil )
("2"
(assert )
(("2"
(expand "vNum" )
(("2" (propax) nil nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2" (hide 2)
(("2" (lemma "Normal_iff" :subst ("f" "u" ))
(("2" (split)
(("1" (flatten)
(("1"
(case " radix ^ (Prec(b) - 1 - dExp(b)) <= abs(FtoR[radix](u))" )
(("1" (assert ) nil nil )
("2" (trans-ineq 1 "abs(FtoR(t))" )
(("1" (lemma "Normal_iff" :subst ("f" "t" ))
(("1" (split)
(("1" (flatten) (("1" (assert ) nil nil )) nil )
("2" (assert ) nil nil ))
nil ))
nil )
("2" (hide 2 -1 -2)
(("2" (lemma "Closest_Monotone" )
(("2" (expand "Monotone?" )
(("2"
(inst -1 "b" "abs(FtoR(t))"
"abs(FtoR(t)+FtoR(y))" "Fabs(t)" "Fabs(u)" )
(("1" (split)
(("1" (rewrite "FabsCorrect" )
(("1" (rewrite "FabsCorrect" ) nil nil ))
nil )
("2" (rewrite "ClosestFabs" )
(("2"
(rewrite "FcanonicBounded" )
nil
nil ))
nil )
("3" (rewrite "ClosestFabs" )
(("1"
(rewrite "RoundedProjector" )
(("1"
(rewrite "Closest_RoundedMode" )
nil
nil )
("2"
(rewrite "FcanonicBounded" )
nil
nil ))
nil )
("2"
(rewrite "FcanonicBounded" )
nil
nil ))
nil )
("4" (hide 2)
(("4"
(case "0 < 2*radix^(Prec(b)-1)" )
(("1"
(trans-ineq
1
"abs(FtoR[radix](t))*((radix+1)*(1-1/(2*radix ^ (Prec(b) - 1)))-1) "
:strict
1)
(("1"
(div-by 1 "abs(FtoR[radix](t))" )
(("1"
(case
"radix*radix <=radix ^ (Prec(b) - 1)" )
(("1"
(name-replace
"AA"
"radix ^ (Prec(b) - 1)" )
(("1"
(hide-all-but (-1 -2 1))
(("1"
(field 1)
(("1"
(move-terms 1 r 2)
(("1"
(move-terms 1 r 2)
(("1"
(trans-ineq
1
"2*AA+AA"
:strict
2)
(("1"
(move-terms 1 r 1)
(("1"
(assert )
(("1"
(trans-ineq
1
"radix*radix" )
(("1"
(trans-ineq
1
"radix+radix" )
(("1"
(grind-reals)
nil
nil )
("2"
(grind-reals)
nil
nil ))
nil ))
nil ))
nil ))
nil )
("2"
(div-by 1 "AA" )
(("2"
(field 1)
nil
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2"
(rewrite "expt_x2" :dir rl)
(("2"
(rewrite "Exp_increq_1" )
nil
nil ))
nil ))
nil )
("2"
(hide-all-but (1 -6))
(("2"
(expand * "Fnormal?" "FtoR" )
(("2"
(flatten)
(("2"
(rewrite "abs_mult" )
(("2"
(rewrite "abs_mult" )
(("2"
(expand "abs" -2 1)
(("2"
(expand "abs" 1 2)
(("2"
(grind-reals)
nil
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2"
(trans-ineq
1
"abs(FtoR(y))-abs(FtoR(t))" )
(("1"
(move-terms 1 r 2)
(("1"
(trans-ineq
1
"(abs(FtoR[radix](t)) * ((radix + 1) * (1 - 1 / (2 * radix ^ (Prec(b) - 1)))))" )
(("1" (assert ) nil nil )
("2"
(trans-ineq
1
"abs(FtoR[radix](a) * FtoR[radix](x))*(radix + 1)" )
(("1"
(name-replace
"rr"
"radix+1" )
(("1"
(cancel-by 1 "rr" )
(("1"
(hide -1 1)
(("1"
(trans-ineq
1
"(abs(FtoR[radix](t)) *(1 - 1 / (2 * radix ^ (Prec(b) - 1))))" )
(("1"
(name-replace
"G1"
"1 / (2 * radix ^ (Prec(b) - 1))" )
(("1"
(grind-reals)
nil
nil ))
nil )
("2"
(lemma "RoundLe" )
(("2"
(inst
-1
"t"
"FtoR(a)*FtoR(x)" )
(("2"
(case
" 0 < 2 * abs(Fnum(t))" )
(("1"
(case
" 0 < 1 - 1 / (2 * abs(Fnum(t)))" )
(("1"
(split)
(("1"
(mult-by
-1
" 1 - 1 / (2 * abs(Fnum(t)))" )
(("1"
(trans-ineq
1
"abs(FtoR[radix](t)) * (1 - 1 / (2 * abs(Fnum(t))))" )
(("1"
(div-by
1
"abs(FtoR[radix](t))" )
(("1"
(case
" radix ^ (Prec(b) - 1) <= abs(Fnum(t))" )
(("1"
(grind-reals)
nil
nil )
("2"
(hide-all-but
(-9
1))
(("2"
(expand
"Fnormal?" )
(("2"
(flatten)
(("2"
(case-replace
"radix ^ (Prec(b) - 1)=vNum(b)/radix" )
(("1"
(grind-reals)
(("1"
(expand
"abs"
-3
1)
(("1"
(assert )
nil
nil ))
nil ))
nil )
("2"
(case-replace
"vNum(b)=radix ^ (Prec(b))" )
(("1"
(rewrite
"expt_div"
:dir
rl)
nil
nil )
("2"
(assert )
(("2"
(expand
"vNum" )
(("2"
(propax)
nil
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2"
(grind-reals)
nil
nil ))
nil ))
nil )
("2"
(propax)
nil
nil )
("3"
(hide-all-but
(-1 -9))
(("3"
(expand *
"Fnormal?"
"FtoR" )
(("3"
(flatten)
(("3"
(expand
"abs" )
(("3"
(grind-reals)
nil
nil ))
nil ))
nil ))
nil ))
nil )
("4"
(assert )
nil
nil ))
nil )
("2"
(hide-all-but
(-1 -8 1))
(("2"
(case
"1 <= abs(Fnum(t))" )
(("1"
(field
1)
nil
nil )
("2"
(hide
-2
2)
(("2"
(grind)
nil
nil ))
nil ))
nil ))
nil )
("3"
(assert )
nil
nil ))
nil )
("2"
(hide-all-but
(1 -7))
(("2"
(expand
"Fnormal?" )
(("2"
(flatten)
(("2"
(expand
"abs" )
(("2"
(grind)
nil
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2"
(trans-ineq
1
"(radix + 1 + radix ^ (4 - Prec(b))) *
abs(FtoR[radix](a) * FtoR[radix](x))")
(("2"
(div-by
1
"abs(FtoR(a)*FtoR(x))" )
(("2"
(grind-reals)
nil
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2"
(hide-all-but 1)
(("2"
(expand "abs" )
(("2" (grind-reals) nil nil ))
nil ))
nil ))
nil ))
nil )
("2" (grind-reals) nil nil )
("3" (assert ) nil nil ))
nil ))
nil ))
nil )
("2" (rewrite "FabsBounded" )
(("2" (rewrite "FcanonicBounded" ) nil nil ))
nil )
("3" (rewrite "FabsBounded" )
(("3" (rewrite "FcanonicBounded" ) nil nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("3" (assert ) nil nil ))
nil ))
nil )
("2" (assert ) nil nil ))
nil ))
nil ))
nil ))
nil ))
nil )
((Fcanonic? const-decl "bool" float nil )
(b formal-const-decl "Format" axpy nil )
(Fnormal? 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)" axpy 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 )
(above nonempty-type-eq-decl nil integers nil )
(nat nonempty-type-eq-decl nil naturalnumbers nil )
(div_cancel4 formula-decl nil real_props nil )
(posrat_div_posrat_is_posrat application-judgement "posrat"
rationals nil )
(radix_less_vNum formula-decl nil float nil )
(posint_exp application-judgement "posint" exponentiation nil )
(expt_x1 formula-decl nil exponentiation nil )
(Exp_incr_1 formula-decl nil float nil )
(vNum const-decl "posnat" float nil )
(posnat nonempty-type-eq-decl nil integers nil )
(nonneg_int nonempty-type-eq-decl nil integers nil )
(both_sides_times_pos_ge1_imp formula-decl nil extra_real_props
nil )
(/ const-decl "[numfield, nznum -> numfield]" number_fields nil )
(nznum nonempty-type-eq-decl nil number_fields nil )
(/= const-decl "boolean" notequal nil )
(+ const-decl "[numfield, numfield -> numfield]" number_fields nil )
(numfield nonempty-type-eq-decl nil number_fields nil )
(rat_plus_rat_is_rat application-judgement "rat" rationals nil )
(Fulp const-decl "real" float nil )
(Fbounded? const-decl "bool" float nil )
(FpredDiff formula-decl nil float nil )
(FpredCanonic formula-decl nil float nil )
(FulpCanonic formula-decl nil float nil )
(FcanonicBounded formula-decl nil float nil )
(both_sides_times_pos_le1 formula-decl nil real_props nil )
(posreal nonempty-type-eq-decl nil real_types nil )
(u skolem-const-decl "{x: float | Fcanonic?(b)(x)}" axpy nil )
(real_gt_is_strict_total_order name-judgement
"(strict_total_order?[real])" real_props nil )
(div_cancel2 formula-decl nil real_props nil )
(nonzero_real nonempty-type-eq-decl nil reals nil )
(pos_times_lt formula-decl nil real_props nil )
(times_div2 formula-decl nil real_props nil )
(times_div1 formula-decl nil real_props nil )
(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 )
(int_abs_is_nonneg application-judgement "{j: nonneg_int | j >= i}"
real_defs nil )
(RoundGe formula-decl nil axpy nil )
(minus_real_is_real application-judgement "real" reals nil )
(IFF const-decl "[bool, bool -> bool]" booleans nil )
(int_times_even_is_even application-judgement "even_int" integers
nil )
(div_mult_pos_lt1 formula-decl nil real_props nil )
(Axpy_opt_aux1_aux1 formula-decl nil axpy nil )
(= const-decl "[T, T -> boolean]" equalities nil )
(rat nonempty-type-eq-decl nil rationals nil )
(posrat_exp application-judgement "posrat" exponentiation nil )
(minus_odd_is_odd application-judgement "odd_int" integers nil )
(pos_times_ge formula-decl nil real_props nil )
(neg_times_ge formula-decl nil real_props nil )
(NOT const-decl "[bool -> bool]" booleans nil )
(times_div_cancel2 formula-decl nil extra_real_props nil )
(G3 skolem-const-decl "rat" axpy nil )
(G2 skolem-const-decl "rat" axpy nil )
(both_sides_div_pos_le1 formula-decl nil real_props nil )
(minus_int_is_int application-judgement "int" integers nil )
(both_sides_times_pos_le1_imp formula-decl nil extra_real_props
nil )
(rat_div_nzrat_is_rat application-judgement "rat" rationals nil )
(OR const-decl "[bool, bool -> bool]" booleans nil )
(^ const-decl "real" exponentiation nil )
(RoundLe formula-decl nil axpy nil )
(nonzero_times2 formula-decl nil real_props nil )
(rat_minus_rat_is_rat application-judgement "rat" rationals nil )
(abs_mult formula-decl nil real_props nil )
(nzint_abs_is_pos application-judgement "{j: posint | j >= i}"
real_defs nil )
(rat_times_rat_is_rat application-judgement "rat" rationals nil )
(nzrat_times_nzrat_is_nzrat application-judgement "nzrat" rationals
nil )
(real_minus_real_is_real application-judgement "real" reals nil )
(- const-decl "[numfield, numfield -> numfield]" number_fields nil )
(neg_times_lt formula-decl nil real_props nil )
(neg_times_le formula-decl nil real_props nil )
(pos_times_gt formula-decl nil real_props nil )
(pos_times_le formula-decl nil real_props nil )
(pos_div_le formula-decl nil real_props nil )
(real_lt_is_strict_total_order name-judgement
"(strict_total_order?[real])" real_props nil )
(real_plus_real_is_real application-judgement "real" reals nil )
(real_ge_is_total_order name-judgement "(total_order?[real])"
real_props nil )
(posrat_plus_nnrat_is_posrat application-judgement "posrat"
rationals nil )
(posint_plus_nnint_is_posint application-judgement "posint"
integers nil )
(nnrat_exp application-judgement "nnrat" exponentiation nil )
(int_minus_int_is_int application-judgement "int" integers nil )
(nnreal_plus_nnreal_is_nnreal application-judgement "nnreal"
real_types 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 )
(nonneg_real nonempty-type-eq-decl nil real_types nil )
(>= const-decl "bool" reals nil )
(* const-decl "[numfield, numfield -> numfield]" number_fields nil )
(<= const-decl "bool" reals nil )
(AND const-decl "[bool, bool -> bool]" booleans nil )
(real_div_nzreal_is_real application-judgement "real" reals nil )
(nnreal_times_nnreal_is_nnreal application-judgement "nnreal"
real_types nil )
(real_le_is_total_order name-judgement "(total_order?[real])"
real_props nil )
(nzrat_div_nzrat_is_nzrat application-judgement "nzrat" rationals
nil )
(IMPLIES const-decl "[bool, bool -> bool]" booleans nil )
(div_mult_pos_le2 formula-decl nil real_props nil )
(zero_times1 formula-decl nil real_props nil )
(< const-decl "bool" reals nil )
(Fpred const-decl "float" float nil )
(Normal_iff formula-decl nil axpy nil )
(Closest_Monotone formula-decl nil float nil )
(t skolem-const-decl "{x: float | Fcanonic?(b)(x)}" axpy nil )
(Fabs const-decl "float" float 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 )
(posint_times_posint_is_posint application-judgement "posint"
integers nil )
(le_times_le_pos formula-decl nil real_props nil )
(minus_even_is_even application-judgement "even_int" integers nil )
(minus_nzint_is_nzint application-judgement "nzint" integers nil )
(TRUE const-decl "bool" booleans nil )
(id const-decl "(bijective?[T, T])" identity nil )
(bijective? const-decl "bool" functions nil )
(nonneg_rat nonempty-type-eq-decl nil rationals nil )
(posrat nonempty-type-eq-decl nil rationals nil )
(Exp_increq_1 formula-decl nil float nil )
(expt_x2 formula-decl nil exponentiation nil )
(times_div_cancel1 formula-decl nil extra_real_props nil )
(div_simp formula-decl nil real_props nil )
(both_sides_div_pos_lt1 formula-decl nil real_props nil )
(posnat_expt application-judgement "posnat" exponentiation nil )
(expt def-decl "real" exponentiation nil )
(expt_div formula-decl nil exponentiation nil )
(nzreal nonempty-type-eq-decl nil reals nil )
(div_mult_pos_le1 formula-decl nil real_props nil )
(both_sides_times_pos_le2 formula-decl nil real_props nil )
(le_div_le_pos formula-decl nil real_props nil )
(le_minus_le formula-decl nil real_props nil )
(even_minus_odd_is_odd application-judgement "odd_int" integers
nil )
(posint nonempty-type-eq-decl nil integers nil )
(x skolem-const-decl "{x: float | Fcanonic?(b)(x)}" axpy nil )
(a skolem-const-decl "{x: float | Fcanonic?(b)(x)}" axpy nil )
(posrat_times_posrat_is_posrat application-judgement "posrat"
rationals nil )
(Closest_RoundedMode formula-decl nil float nil )
(RoundedProjector formula-decl nil float nil )
(RND type-eq-decl nil float nil )
(Closest? const-decl "bool" float nil )
(ClosestFabs formula-decl nil float nil )
(FabsCorrect formula-decl nil float nil )
(FabsBounded formula-decl nil float nil )
(Monotone? const-decl "bool" float nil )
(real_times_real_is_real application-judgement "real" reals nil ))
shostak))
(Axpy_opt_aux2_TCC1 0
(Axpy_opt_aux2_TCC1-1 nil 3320755855 ("" (subtype-tcc) nil nil )
((b formal-const-decl "Format" axpy nil )
(Fcanonic? 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 )
(NOT const-decl "[bool -> bool]" booleans nil )
(even_times_int_is_even application-judgement "even_int" integers
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 )
(posint_exp application-judgement "posint" exponentiation nil )
(real_ge_is_total_order name-judgement "(total_order?[real])"
real_props nil )
(real_le_is_total_order name-judgement "(total_order?[real])"
real_props nil )
(minus_int_is_int application-judgement "int" integers nil )
(posnat_expt application-judgement "posnat" exponentiation nil )
(real_gt_is_strict_total_order name-judgement
"(strict_total_order?[real])" real_props nil )
(nat_exp application-judgement "nat" exponentiation nil )
(nat_expt application-judgement "nat" exponentiation nil )
(abs const-decl "{n: nonneg_real | n >= m AND n >= -m}" real_defs
nil )
(^ const-decl "real" exponentiation nil )
(Fsubnormal? const-decl "bool" float nil )
(radix formal-const-decl "above(1)" axpy 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 )
(Closest? const-decl "bool" float nil )
(vNum const-decl "posnat" float nil )
(Fbounded? const-decl "bool" float nil )
(Fnormal? const-decl "bool" float nil )
(/= const-decl "boolean" notequal 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 )
(rat_minus_rat_is_rat application-judgement "rat" rationals nil )
(real_minus_real_is_real application-judgement "real" reals nil )
(mult_divides1 application-judgement "(divides(n))" divides nil )
(mult_divides2 application-judgement "(divides(m))" divides nil ))
nil ))
(Axpy_opt_aux2_TCC2 0
(Axpy_opt_aux2_TCC2-1 nil 3321271390 ("" (subtype-tcc) nil nil )
((b formal-const-decl "Format" axpy nil )
(Fcanonic? 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 )
(NOT const-decl "[bool -> bool]" booleans nil )
(even_times_int_is_even application-judgement "even_int" integers
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 )
(posint_exp application-judgement "posint" exponentiation nil )
(real_ge_is_total_order name-judgement "(total_order?[real])"
real_props nil )
(real_le_is_total_order name-judgement "(total_order?[real])"
real_props nil )
(minus_int_is_int application-judgement "int" integers nil )
(posnat_expt application-judgement "posnat" exponentiation nil )
(real_gt_is_strict_total_order name-judgement
"(strict_total_order?[real])" real_props nil )
(nat_exp application-judgement "nat" exponentiation nil )
(nat_expt application-judgement "nat" exponentiation nil )
(abs const-decl "{n: nonneg_real | n >= m AND n >= -m}" real_defs
nil )
(^ const-decl "real" exponentiation nil )
(Fsubnormal? const-decl "bool" float nil )
(radix formal-const-decl "above(1)" axpy 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 )
(Closest? const-decl "bool" float nil )
(vNum const-decl "posnat" float nil )
(Fbounded? const-decl "bool" float nil )
(Fnormal? const-decl "bool" float nil )
(/= const-decl "boolean" notequal 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 )
(rat_minus_rat_is_rat application-judgement "rat" rationals nil )
(rat_abs_is_nonneg application-judgement "{r: nonneg_rat | r >= q}"
real_defs nil )
(nnrat_times_nnrat_is_nnrat application-judgement "nonneg_rat"
rationals nil )
(nnrat_plus_nnrat_is_nnrat application-judgement "nonneg_rat"
rationals nil )
(real_minus_real_is_real application-judgement "real" reals nil )
(mult_divides1 application-judgement "(divides(n))" divides nil )
(mult_divides2 application-judgement "(divides(m))" divides nil ))
nil ))
(Axpy_opt_aux2 0
(Axpy_opt_aux2-1 nil 3320755856
(""
(case "FORALL (x:float): Fnormal?(b)(x) => radix^(Prec(b)-1) <= abs(Fnum(x))" )
(("1" (skeep)
(("1" (case "Fnormal?(b)(Fpred(b)(u))" )
(("1" (case "Fnormal?(b)(u)" )
(("1"
(trans-ineq 1 "abs(FtoR(u))*radix^(-Prec(b))" :strict 1)
(("1" (mult-by 1 "radix ^ (Prec(b))" )
(("1"
(trans-ineq 1 "abs(FtoR[radix](y)) * radix/(radix+1)"
:strict 2)
(("1" (rewrite "expt_div" :dir rl)
(("1" (field 1) nil nil )) nil )
("2" (trans-ineq 1 "abs(FtoR(u))" :strict 1)
(("1" (case "0< 2*abs(Fnum(u))" )
(("1" (case "0< 1+1/(2*abs(Fnum(u)))" )
(("1"
(trans-ineq 1
"abs(FtoR(t)+FtoR(y))/(1+1/(2*abs(Fnum(u))))"
:strict 1)
(("1" (case "0 < 1+radix^(1-Prec(b))/2" )
(("1"
(trans-ineq 1
" abs(FtoR[radix](t) + FtoR[radix](y)) / ( 1 + radix ^ (1 - Prec(b)) / 2)"
:strict 1)
(("1"
(mult-by 1
"1 + radix ^ (1 - Prec(b)) / 2" )
(("1"
(trans-ineq
1
"abs(FtoR(y))-abs(FtoR(t))"
:strict
1)
(("1"
(move-terms 1 l 1)
(("1"
(move-terms 1 r 2)
(("1"
(assert )
(("1"
(case
"0 < 1+radix+radix^(4 - Prec(b))" )
(("1"
(case
" 0 < 1 - radix ^ (1 - Prec(b)) / 2" )
(("1"
(trans-ineq
1
"abs(FtoR(y))/(1 - radix ^ (1 - Prec(b)) / 2)*1/(1 + radix + radix ^ (4 - Prec(b)))"
:strict
2)
(("1"
(case
"0 < 2 * abs(Fnum(t))" )
(("1"
(case
"0 < 1 - 1 / (2 * abs(Fnum(t)))" )
(("1"
(trans-ineq
1
"abs(FtoR(a)*FtoR(x))/(1-1/(2*abs(Fnum(t))))" )
(("1"
(rewrite "RoundLe" )
(("1"
(hide-all-but
(-1 -3))
(("1"
(expand *
"FtoR"
"abs" )
(("1"
(grind-reals)
nil
nil ))
nil ))
nil ))
nil )
("2"
(trans-ineq
1
"abs(FtoR[radix](a) * FtoR[radix](x)) / (1 - radix ^ (1 - Prec(b)) / 2)" )
(("1"
(inst -10 "t" )
(("1"
(split)
(("1"
(field 1)
(("1"
(div-by
1
"abs(FtoR(a))" )
(("1"
(div-by
1
"abs(FtoR(x))" )
(("1"
(field
1)
(("1"
(mult-by
1
"radix ^ (Prec(b) - 1)" )
(("1"
(trans-ineq
1
"abs(Fnum(t))" )
(("1"
(assert )
nil
nil )
("2"
(div-by
1
"abs(Fnum(t))" )
(("2"
(field
1)
(("2"
(rewrite
"expt_plus"
:dir
rl)
(("2"
(assert )
nil
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2"
(propax)
nil
nil ))
nil ))
nil )
("2"
(mult-by
1
"(1 - radix ^ (1 - Prec(b)) / 2)" )
(("2"
(field 1)
nil
nil ))
nil ))
nil )
("3"
(assert )
nil
nil )
("4"
(assert )
nil
nil ))
nil )
("2"
(move-terms 1 r 2)
(("2"
(assert )
(("2"
(hide 2 -15)
(("2"
(case
"1 <= abs(Fnum(t))" )
(("1"
(grind-reals)
nil
nil )
("2"
(hide-all-but
(-1 1))
(("2"
(name-replace
"gg"
"abs(Fnum(t))" )
(("2"
(grind-reals)
nil
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("3"
(assert )
nil
nil ))
nil )
("2"
(expand "Fnormal?" -13)
(("2"
(flatten)
(("2"
(hide 2 -15)
(("2"
(grind-reals)
nil
nil ))
nil ))
nil ))
nil ))
nil )
("2"
(case-replace
" radix ^ (4 - Prec(b))=radix^3*radix ^ (1 - Prec(b))" )
(("1"
(case
"0 < radix ^ (1 - Prec(b))" )
(("1"
(case
" radix ^ (1 - Prec(b)) <= radix^(-5)" )
(("1"
(hide
-7
-8
-9
-10
-11
-12
-13
-14
-16
-17)
(("1"
(name-replace
"AA"
"radix ^ (1 - Prec(b))" )
(("1"
(hide -3 -7)
(("1"
(mult-by
1
"1+radix" )
(("1"
(trans-ineq
1
"abs(FtoR[radix](y))*(1+radix) - abs(FtoR[radix](y)) * radix -
AA / 2 * (abs(FtoR[radix](y)) * radix)"
:strict
1)
(("1"
(div-by
1
"abs(FtoR(y))" )
(("1"
(trans-ineq
1
"1/ (1 - AA / 2) * 1 / (1 + radix + radix ^ 3 * AA)
* (1 + radix)"
:strict
2)
(("1"
(field
1)
(("1"
(mult-by
-5
" 1 - AA / 2" )
(("1"
(grind-reals)
nil
nil ))
nil ))
nil )
("2"
(trans-ineq
1
"( (1 + radix) - radix -
AA / 2 * radix)"
:strict
1)
(("1"
(mult-by
1
"1-AA/2" )
(("1"
(trans-ineq
1
"1 / (1 + radix + radix ^ 3 * AA) * (1 + radix)"
:strict
2)
(("1"
(field
1)
nil
nil )
("2"
(mult-by
1
"1 + radix + radix ^ 3 * AA" )
(("2"
(trans-ineq
1
"1+radix"
:strict
2)
(("1"
(field
1)
nil
nil )
("2"
(assert )
(("2"
(assert )
(("2"
(move-terms
1
l
1)
(("2"
(move-terms
1
l
1)
(("2"
(assert )
(("2"
(move-terms
1
r
(2
3
4
5
6))
(("2"
(div-by
1
"AA" )
(("2"
(trans-ineq
1
"( 1 / 2 + radix ^ 3 * (AA / 2) + 1/ 2 * radix * radix +
radix ^ 3 * (AA / 2) * radix
+ radix)"
:strict
2)
(("1"
(field
1)
nil
nil )
("2"
(trans-ineq
1
" (radix ^ 3 + AA / 4 * radix +
(AA / 4) * radix * radix
+ radix ^ 3 * (AA / 2) * (AA / 2) * radix)"
:strict
1)
(("1"
(trans-ineq
1
"radix ^ 3"
:strict
2)
(("1"
(mult-by
1
"2" )
(("1"
(trans-ineq
1
"1+radix^3*AA+radix*radix+radix^3*radix*AA+2*radix" )
(("1"
(field
1)
nil
nil )
("2"
(trans-ineq
1
"1 + radix ^ 3 * radix^(-5) + radix * radix + radix ^ 3 * radix * radix^(-5) + 2 * radix" )
(("1"
(move-terms
1
r
(1
3
5))
(("1"
(assert )
(("1"
(case
"radix ^ 3 * AA <= radix ^ 3 * radix ^ (-5)" )
(("1"
(case
"AA * radix ^ 3 * radix <= radix ^ 3 * radix ^ (-5) * radix" )
(("1"
(assert )
nil
nil )
("2"
(grind-reals)
nil
nil ))
nil )
("2"
(grind-reals)
nil
nil ))
nil ))
nil ))
nil )
("2"
(rewrite
"expt_plus"
:dir
rl)
(("2"
(case-replace
"radix ^ 3 * radix * radix ^ (-5)=radix^(-1)" )
(("1"
(case
"radix * radix <= radix ^ 3" )
(("1"
(case
"1 + radix ^ -2 + radix ^ (-1) + 2 * radix <=
radix ^ 3")
(("1"
(assert )
nil
nil )
("2"
(hide
2)
(("2"
(trans-ineq
1
"radix^2+radix^2" )
(("1"
(case
"1 + radix ^ -2 + radix ^ (-1) <= radix ^ 2" )
(("1"
(case
" 2 * radix <= radix ^ 2" )
(("1"
(assert )
nil
nil )
("2"
(rewrite
"expt_x2" )
(("2"
(grind-reals)
nil
nil ))
nil ))
nil )
("2"
(hide
2)
(("2"
(trans-ineq
1
"radix+1+1" )
(("1"
(case
"1 <= radix" )
(("1"
(case
"radix ^ -2 <= 1" )
(("1"
(case
"radix ^ -1 <= 1" )
(("1"
(assert )
nil
nil )
("2"
(trans-ineq
1
"radix^0" )
(("1"
(rewrite
"Exp_increq_1" )
nil
nil )
("2"
(rewrite
"expt_x0" )
(("2"
(assert )
nil
nil ))
nil ))
nil ))
nil )
("2"
(trans-ineq
1
"radix^0" )
(("1"
(rewrite
"Exp_increq_1" )
nil
nil )
("2"
(rewrite
"expt_x0" )
(("2"
(assert )
nil
nil ))
nil ))
nil ))
nil )
("2"
(assert )
nil
nil ))
nil )
("2"
(rewrite
"expt_x2" )
(("2"
(grind-reals)
(("2"
(trans-ineq
1
"radix+radix" )
(("1"
(grind-reals)
nil
nil )
("2"
(grind-reals)
nil
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2"
(trans-ineq
1
"radix*radix^2" )
(("1"
(grind-reals)
nil
nil )
("2"
(lemma
"expt_plus" )
(("2"
(inst
-1
"2"
"1"
"radix" )
(("2"
(rewrite
"expt_x1" )
(("2"
(assert )
nil
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2"
(rewrite
"expt_x2"
:dir
rl)
(("2"
(rewrite
"Exp_increq_1" )
nil
nil ))
nil ))
nil )
("2"
(lemma
"expt_plus" )
(("2"
(inst
-1
"3"
"1"
"radix" )
(("2"
(rewrite
"expt_x1" )
(("2"
(rewrite
-1
:dir
rl)
(("2"
(rewrite
"expt_plus"
:dir
rl)
(("2"
(assert )
nil
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2"
(grind-reals)
nil
nil ))
nil )
("2"
(field
1)
nil
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2"
(field
1)
nil
nil ))
nil ))
nil )
("2"
(hide-all-but
1)
(("2"
(reveal
-19
-16
-20)
(("2"
(case
"0 < abs(FtoR(a)*FtoR(x))*(radix+1+radix^(4-Prec(b)))" )
(("1"
(grind-reals)
nil
nil )
("2"
(div-by
1
" (radix + 1 + radix ^ (4 - Prec(b)))" )
(("2"
(trans-ineq
1
"0"
:strict
2)
(("1"
(field
1)
nil
nil )
("2"
(case
"0 <= abs(FtoR(a)*FtoR(x))" )
(("1"
(split-ineq
-1)
(("1"
(case
"FtoR[radix](t)=FtoR[radix]((#Fnum:=0, Fexp:=-dExp(b)#))" )
(("1"
(hide-all-but
(-1
-5))
(("1"
(expand *
"Fnormal?"
"FtoR" )
(("1"
(flatten)
(("1"
(grind-reals)
nil
nil ))
nil ))
nil ))
nil )
("2"
(lemma
"RoundedProjectorEq" )
(("2"
(inst
-1
"Closest?"
"b"
"(# Fnum := 0, Fexp := -dExp(b) #)"
"t" )
(("2"
(split)
(("1"
(propax)
nil
nil )
("2"
(case-replace
"FtoR((# Fnum := 0, Fexp := -dExp(b) #))=FtoR(a)*FtoR(x)" )
(("2"
(hide-all-but
(-1
1))
(("2"
(expand
"FtoR"
1
1)
(("2"
(expand
"abs"
-1)
(("2"
(grind-reals)
nil
nil ))
nil ))
nil ))
nil ))
nil )
("3"
(rewrite
"Closest_RoundedMode" )
nil
nil )
("4"
(rewrite
"FcanonicBounded" )
nil
nil )
("5"
(hide-all-but
1)
(("5"
(expand
"Fbounded?" )
(("5"
(expand
"abs" )
(("5"
(assert )
nil
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2"
(grind-reals)
nil
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2"
(field 1)
nil
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2"
(rewrite
"Exp_increq_1" )
nil
nil ))
nil )
("2"
(assert )
nil
nil ))
nil )
("2"
(rewrite
"expt_plus"
:dir
rl)
nil
nil ))
nil )
("3" (assert ) nil nil )
("4" (assert ) nil nil ))
nil )
("2"
(move-terms 1 r 2)
(("2"
(assert )
(("2"
(hide-all-but (-11 1))
(("2"
(trans-ineq
1
"1/2"
:strict
2)
(("1"
(field 1)
(("1"
(trans-ineq
1
"radix^0" )
(("1"
(rewrite
"Exp_increq_1" )
nil
nil )
("2"
(rewrite
"expt_x0" )
(("2"
(assert )
nil
nil ))
nil ))
nil ))
nil )
("2"
(grind-reals)
nil
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2"
(hide-all-but 1)
(("2" (grind-reals) nil nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2"
(hide-all-but 1)
(("2"
(expand "abs" )
(("2" (grind-reals) nil nil ))
nil ))
nil ))
nil ))
nil )
("2" (inst -6 "u" )
(("2"
(split)
(("1"
(field 1)
(("1"
(div-by 1 "abs(FtoR(t)+FtoR(y))" )
(("1"
(field 1)
(("1"
(case
"1<=abs(Fnum(u)) * (radix ^ (1 - Prec(b)))" )
(("1"
(mult-by
-1
"abs(FtoR(t) + FtoR(y))" )
(("1" (assert ) nil nil ))
nil )
("2"
(hide 2)
(("2"
(assert )
(("2"
(mult-by
1
"radix ^ (Prec(b) - 1)" )
(("2"
(trans-ineq
1
"abs(Fnum(u))" )
(("1" (assert ) nil nil )
("2"
(div-by
1
"abs(Fnum(u))" )
(("2"
(field 1)
(("2"
(rewrite
"expt_plus"
:dir
rl)
(("2"
(assert )
nil
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2" (propax) nil nil ))
nil ))
nil ))
nil )
("2" (trans-ineq 1 "1" :strict 1)
(("1" (assert ) nil nil )
("2" (grind-reals) nil nil ))
nil )
("3" (assert ) nil nil ))
nil )
("2" (rewrite "RoundGe" ) nil nil )
("3" (assert ) nil nil ) ("4" (assert ) nil nil ))
nil )
("2" (trans-ineq 1 "1" :strict 1)
(("1" (assert ) nil nil )
("2" (move-terms 1 r 1)
(("2" (assert ) (("2" (grind-reals) nil nil ))
nil ))
nil ))
nil )
("3" (assert ) nil nil ))
nil )
("2" (expand "Fnormal?" -1)
(("2" (flatten)
(("2" (hide-all-but (-2 1))
(("2" (grind-reals) nil nil )) nil ))
nil ))
nil ))
nil )
("2" (rewrite "expt_inverse" )
(("2" (field 1) nil nil )) nil ))
nil ))
nil ))
nil )
("2" (rewrite "expt_inverse" )
(("2" (mult-by 1 "radix ^ Prec(b)" )
(("2" (trans-ineq 1 "abs(FtoR(u))" )
(("1" (field 1) nil nil )
("2"
(trans-ineq 1
" Fulp(b)(Fpred(b)(u))+ FtoR(Fpred(b)(u))" )
(("1" (rewrite "FpredDiff" :dir rl)
(("1" (assert )
(("1" (expand "abs" 1) (("1" (assert ) nil nil ))
nil ))
nil ))
nil )
("2" (expand "FtoR" 1)
(("2" (rewrite "FulpCanonic" )
(("1" (div-by 1 "radix ^ (Fexp(Fpred(b)(u)))" )
(("1" (trans-ineq 1 "Fnum(Fpred(b)(u))+1" )
(("1" (field 1) nil nil )
("2" (hide-all-but (-2 1))
(("2"
(name-replace "ff" "Fpred(b)(u)" )
(("2"
(expand * "Fnormal?" "Fbounded?" )
(("2"
(flatten)
(("2"
(case-replace
" radix ^ Prec(b)= vNum(b)" )
(("1"
(expand "abs" -2)
(("1"
(grind-reals)
(("1"
(case
"FORALL (i,j:int): i<j => 1+i <= j" )
(("1"
(inst?)
(("1" (assert ) nil nil ))
nil )
("2"
(skeep)
(("2" (assert ) nil nil ))
nil ))
nil ))
nil ))
nil )
("2"
(assert )
(("2"
(expand "vNum" )
(("2" (propax) nil nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2" (rewrite "FpredCanonic" ) nil nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("3" (assert ) nil nil ) ("4" (assert ) nil nil ))
nil )
("2" (lemma "Normal_iff" )
(("2" (inst-cp -1 "u" )
(("2" (inst -1 "Fpred(b)(u)" )
(("2" (split)
(("1" (split)
(("1" (flatten)
(("1" (rewrite -2)
(("1"
(trans-ineq 1
" abs(FtoR[radix](Fpred(b)(u)))" )
(("1" (case " 0 <= FtoR(Fpred(b)(u))" )
(("1" (expand "abs" 1)
(("1"
(lemma "FpredLt" )
(("1"
(inst -1 "b" "u" )
(("1" (assert ) nil nil ))
nil ))
nil ))
nil )
("2" (rewrite "FpredPos" ) nil nil ))
nil ))
nil ))
nil ))
nil )
("2" (assert ) nil nil ))
nil )
("2" (assert )
(("2" (rewrite "FpredCanonic" ) nil nil )) nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2" (lemma "Normal_iff" )
(("2" (inst-cp -1 "Fpred(b)(u)" )
(("2" (inst -1 "t" )
(("2" (split)
(("1" (split)
(("1" (flatten)
(("1" (rewrite -2)
(("1" (trans-ineq 1 "abs(FtoR(t))" )
(("1" (trans-ineq 1 "radix*abs(FtoR(t))" )
(("1" (div-by 1 "abs(FtoR[radix](t))" )
(("1" (assert ) nil nil )) nil )
("2" (expand "abs" 1 2)
(("2" (grind-reals)
(("1"
(lemma "Axpy_opt_aux1" )
(("1"
(inst -1 "a" "t" "u" "x" "y" )
(("1"
(split)
(("1" (assert ) nil nil )
("2" (assert ) nil nil )
("3" (propax) nil nil )
("4" (assert ) nil nil )
("5" (propax) nil nil )
("6" (propax) nil nil )
("7" (propax) nil nil ))
nil ))
nil ))
nil )
("2"
(lemma "Axpy_opt_aux1" )
(("2"
(inst -1 "a" "t" "u" "x" "y" )
(("2"
(split)
(("1" (propax) nil nil )
("2" (assert ) nil nil )
("3" (propax) nil nil )
("4" (assert ) nil nil )
("5" (propax) nil nil )
("6" (propax) nil nil )
("7" (propax) nil nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2" (assert )
(("2" (rewrite "FpredCanonic" ) nil nil )) nil ))
nil )
("2" (assert ) nil nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2" (hide 2)
(("2" (skeep)
(("2" (expand "Fnormal?" )
(("2" (flatten)
(("2" (case-replace "vNum(b)=radix ^ (Prec(b))" )
(("1" (rewrite "expt_div" :dir rl)
(("1" (rewrite "abs_mult" )
(("1" (expand "abs" -3 1)
(("1" (grind-reals) nil nil )) nil ))
nil ))
nil )
("2" (assert )
(("2" (expand "vNum" ) (("2" (propax) nil nil )) nil ))
nil )
("3" (assert ) nil nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("3" (hide 2) (("3" (skosimp*) (("3" (assert ) nil nil )) nil ))
nil ))
nil )
((div_mult_pos_le1 formula-decl nil real_props nil )
(real_times_real_is_real application-judgement "real" reals nil )
(Axpy_opt_aux1 formula-decl nil axpy nil )
(FpredCanonic formula-decl nil float nil )
(vNum const-decl "posnat" float nil )
(posnat nonempty-type-eq-decl nil integers nil )
(FulpCanonic formula-decl nil float nil )
(FpredDiff formula-decl nil float nil )
(posint_exp application-judgement "posint" exponentiation nil )
(both_sides_times_pos_ge1_imp formula-decl nil extra_real_props
nil )
(rat_plus_rat_is_rat application-judgement "rat" rationals nil )
(int_abs_is_nonneg application-judgement "{j: nonneg_int | j >= i}"
real_defs nil )
(RoundGe formula-decl nil axpy nil )
(FDX_90 skolem-const-decl "rat" axpy nil )
(FDX_89 skolem-const-decl "posrat" axpy nil )
(FDX_91 skolem-const-decl
"{n: nonneg_real | n >= Fnum(u) AND n >= -Fnum(u)}" axpy nil )
(u skolem-const-decl "{x: float | Fcanonic?(b)(x)}" axpy nil )
(both_sides_plus_le1 formula-decl nil real_props nil )
(FDX_92 skolem-const-decl
"{n: nonneg_real | n >= FtoR(t) + FtoR(y) AND n >= -(FtoR(t) + FtoR(y))}"
axpy nil )
(both_sides_times_pos_le1_imp formula-decl nil extra_real_props
nil )
(div_cancel2 formula-decl nil real_props nil )
(nonzero_real nonempty-type-eq-decl nil reals nil )
(minus_real_is_real application-judgement "real" reals nil )
(IFF const-decl "[bool, bool -> bool]" booleans nil )
(rat_minus_rat_is_rat application-judgement "rat" rationals nil )
(both_sides_div_pos_lt1 formula-decl nil real_props nil )
(y skolem-const-decl "{x: float | Fcanonic?(b)(x)}" axpy nil )
(div_cancel4 formula-decl nil real_props nil )
(div_distributes formula-decl nil real_props nil )
(le_plus_le formula-decl nil real_props nil )
(nnrat_plus_posrat_is_posrat application-judgement "posrat"
rationals nil )
(posint_times_posint_is_posint application-judgement "posint"
integers nil )
(odd_plus_odd_is_even application-judgement "even_int" integers
nil )
(even_plus_odd_is_odd application-judgement "odd_int" integers nil )
(expt_x2 formula-decl nil exponentiation nil )
(Exp_increq_1 formula-decl nil float nil )
(le_times_le_pos formula-decl nil real_props nil )
(nonneg_int nonempty-type-eq-decl nil integers nil )
(posint nonempty-type-eq-decl nil integers nil )
(div_cancel3 formula-decl nil real_props nil )
(div_distributes_minus formula-decl nil real_props nil )
(times_div1 formula-decl nil real_props nil )
(times_div2 formula-decl nil real_props nil )
(div_div2 formula-decl nil real_props nil )
(AA skolem-const-decl "posrat" axpy nil )
(both_sides_times_pos_lt1 formula-decl nil real_props nil )
(times_div_cancel2 formula-decl nil extra_real_props nil )
(zero_times1 formula-decl nil real_props nil )
(nzint_abs_is_pos application-judgement "{j: posint | j >= i}"
real_defs nil )
(Closest? const-decl "bool" float nil )
(RND type-eq-decl nil float nil )
(FcanonicBounded formula-decl nil float nil )
(Closest_RoundedMode formula-decl nil float nil )
(RoundedProjectorEq formula-decl nil float nil )
(nnrat_div_posrat_is_nnrat application-judgement "nonneg_rat"
rationals nil )
(div_mult_pos_lt1 formula-decl nil real_props nil )
(int_times_even_is_even application-judgement "even_int" integers
nil )
(nonzero_times2 formula-decl nil real_props nil )
(pos_times_lt formula-decl nil real_props nil )
(minus_int_is_int application-judgement "int" integers nil )
(rat_times_rat_is_rat application-judgement "rat" rationals nil )
(RoundLe formula-decl nil axpy nil )
(nonneg_rat nonempty-type-eq-decl nil rationals nil )
(posrat nonempty-type-eq-decl nil rationals nil )
(odd_minus_odd_is_even application-judgement "even_int" integers
nil )
(even_minus_odd_is_odd application-judgement "odd_int" integers
nil )
(= const-decl "[T, T -> boolean]" equalities nil )
(rat nonempty-type-eq-decl nil rationals nil )
(posrat_exp application-judgement "posrat" exponentiation nil )
(minus_odd_is_odd application-judgement "odd_int" integers nil )
(real_gt_is_strict_total_order name-judgement
"(strict_total_order?[real])" real_props nil )
(pos_times_gt formula-decl nil real_props nil )
(nonzero_times1 formula-decl nil real_props nil )
(abs_mult formula-decl nil real_props nil )
(both_sides_times_pos_le1 formula-decl nil real_props nil )
(posreal nonempty-type-eq-decl nil real_types nil )
(FDX_74 skolem-const-decl "rat" axpy nil )
(FDX_73 skolem-const-decl "rat" axpy nil )
(bijective? const-decl "bool" functions nil )
(id const-decl "(bijective?[T, T])" identity nil )
(TRUE const-decl "bool" booleans nil )
(nzrat_times_nzrat_is_nzrat application-judgement "nzrat" rationals
nil )
(FDX_75 skolem-const-decl
"{n: nonneg_real | n >= Fnum(t) AND n >= -Fnum(t)}" axpy nil )
(t skolem-const-decl "{x: float | Fcanonic?(b)(x)}" axpy nil )
(minus_even_is_even application-judgement "even_int" integers nil )
(both_sides_minus_le2 formula-decl nil real_props nil )
(div_simp formula-decl nil real_props nil )
(expt_plus formula-decl nil exponentiation nil )
(int_plus_int_is_int application-judgement "int" integers nil )
(expt_x0 formula-decl nil exponentiation nil )
(rat_div_nzrat_is_rat application-judgement "rat" rationals nil )
(posrat_times_posrat_is_posrat application-judgement "posrat"
rationals nil )
(nnrat_times_nnrat_is_nnrat application-judgement "nonneg_rat"
rationals nil )
(times_div_cancel1 formula-decl nil extra_real_props nil )
(both_sides_div_pos_le1 formula-decl nil real_props nil )
(real_minus_real_is_real application-judgement "real" reals nil )
(real_div_nzreal_is_real application-judgement "real" reals nil )
(nzrat_div_nzrat_is_nzrat application-judgement "nzrat" rationals
nil )
(div_mult_pos_le2 formula-decl nil real_props nil )
(mult_divides2 application-judgement "(divides(m))" divides nil )
(mult_divides1 application-judgement "(divides(n))" divides nil )
(even_times_int_is_even application-judgement "even_int" integers
nil )
(nnint_times_nnint_is_nnint application-judgement "nonneg_int"
integers nil )
(expt_inverse formula-decl nil exponentiation nil )
(nzreal nonempty-type-eq-decl nil reals nil )
(expt_div formula-decl nil exponentiation nil )
(posrat_div_posrat_is_posrat application-judgement "posrat"
rationals nil )
(expt_x1 formula-decl nil exponentiation nil )
(NOT const-decl "[bool -> bool]" booleans nil )
(real_le_is_total_order name-judgement "(total_order?[real])"
real_props nil )
(real_plus_real_is_real application-judgement "real" reals nil )
(posrat_plus_nnrat_is_posrat application-judgement "posrat"
rationals nil )
(nnreal_plus_nnreal_is_nnreal application-judgement "nnreal"
real_types nil )
(Fulp const-decl "real" float nil )
(Fbounded? const-decl "bool" float nil )
(+ const-decl "[numfield, numfield -> numfield]" number_fields nil )
(FtoR const-decl "real" float 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 "bool" reals nil )
(nnreal_times_nnreal_is_nnreal application-judgement "nnreal"
real_types nil )
(minus_nzint_is_nzint application-judgement "nzint" integers nil )
(nnreal_div_posreal_is_nnreal application-judgement "nnreal"
real_types nil )
(posint_plus_nnint_is_posint application-judgement "posint"
integers nil )
(real_lt_is_strict_total_order name-judgement
"(strict_total_order?[real])" real_props nil )
(nnrat_exp application-judgement "nnrat" exponentiation nil )
(real_ge_is_total_order name-judgement "(total_order?[real])"
real_props nil )
(FpredPos formula-decl nil float nil )
(FpredLt formula-decl nil float nil )
(Normal_iff formula-decl nil axpy nil )
(Fcanonic? const-decl "bool" float nil )
(Fpred const-decl "float" float nil )
(int_minus_int_is_int application-judgement "int" integers nil )
(int nonempty-type-eq-decl nil integers nil )
(number nonempty-type-decl nil numbers nil )
(boolean nonempty-type-decl nil booleans nil )
(number_field_pred const-decl "[number -> boolean]" number_fields
nil )
(number_field nonempty-type-from-decl nil number_fields nil )
(real_pred const-decl "[number_field -> boolean]" reals nil )
(real nonempty-type-from-decl nil reals nil )
(rational_pred const-decl "[real -> boolean]" rationals nil )
(rational nonempty-type-from-decl nil rationals nil )
(integer_pred const-decl "[rational -> boolean]" integers nil )
(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)" axpy nil )
(float type-eq-decl nil float nil )
(IMPLIES const-decl "[bool, bool -> bool]" booleans nil )
(nat nonempty-type-eq-decl nil naturalnumbers nil )
(Format type-eq-decl nil float nil )
(Fnormal? const-decl "bool" float nil )
(b formal-const-decl "Format" axpy nil )
(<= const-decl "bool" reals nil )
(OR const-decl "[bool, bool -> bool]" booleans nil )
(/= const-decl "boolean" notequal nil )
(>= const-decl "bool" reals nil )
(^ const-decl "real" exponentiation nil )
(numfield nonempty-type-eq-decl nil number_fields nil )
(- const-decl "[numfield, numfield -> numfield]" number_fields nil )
(nonneg_real nonempty-type-eq-decl nil real_types nil )
(AND const-decl "[bool, bool -> bool]" booleans nil )
(- const-decl "[numfield -> numfield]" number_fields nil )
(abs const-decl "{n: nonneg_real | n >= m AND n >= -m}" real_defs
nil ))
shostak))
(Axpy_opt_aux3_TCC1 0
(Axpy_opt_aux3_TCC1-1 nil 3321283541 ("" (subtype-tcc) nil nil )
((b formal-const-decl "Format" axpy nil )
(Fcanonic? 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 )
(NOT const-decl "[bool -> bool]" booleans nil )
(even_times_int_is_even application-judgement "even_int" integers
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 )
(posint_exp application-judgement "posint" exponentiation nil )
(real_ge_is_total_order name-judgement "(total_order?[real])"
real_props nil )
(real_le_is_total_order name-judgement "(total_order?[real])"
real_props nil )
(minus_int_is_int application-judgement "int" integers nil )
(posnat_expt application-judgement "posnat" exponentiation nil )
(real_gt_is_strict_total_order name-judgement
"(strict_total_order?[real])" real_props nil )
(nat_exp application-judgement "nat" exponentiation nil )
(nat_expt application-judgement "nat" exponentiation nil )
(abs const-decl "{n: nonneg_real | n >= m AND n >= -m}" real_defs
nil )
(^ const-decl "real" exponentiation nil )
(Fnormal? const-decl "bool" float nil )
(radix formal-const-decl "above(1)" axpy 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 )
(Closest? const-decl "bool" float nil )
(vNum const-decl "posnat" float nil )
(Fbounded? const-decl "bool" float nil )
(Fsubnormal? const-decl "bool" float nil )
(/= const-decl "boolean" notequal 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 )
(rat_minus_rat_is_rat application-judgement "rat" rationals nil )
(real_minus_real_is_real application-judgement "real" reals nil )
(mult_divides1 application-judgement "(divides(n))" divides nil )
(mult_divides2 application-judgement "(divides(m))" divides nil ))
nil ))
(Axpy_opt_aux3_TCC2 0
(Axpy_opt_aux3_TCC2-1 nil 3321283541 ("" (subtype-tcc) nil nil )
((b formal-const-decl "Format" axpy nil )
(Fcanonic? 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 )
(NOT const-decl "[bool -> bool]" booleans nil )
(even_times_int_is_even application-judgement "even_int" integers
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 )
(posint_exp application-judgement "posint" exponentiation nil )
(real_ge_is_total_order name-judgement "(total_order?[real])"
real_props nil )
(real_le_is_total_order name-judgement "(total_order?[real])"
real_props nil )
(minus_int_is_int application-judgement "int" integers nil )
(posnat_expt application-judgement "posnat" exponentiation nil )
(real_gt_is_strict_total_order name-judgement
"(strict_total_order?[real])" real_props nil )
(nat_exp application-judgement "nat" exponentiation nil )
(nat_expt application-judgement "nat" exponentiation nil )
(int_minus_int_is_int application-judgement "int" integers nil )
(abs const-decl "{n: nonneg_real | n >= m AND n >= -m}" real_defs
nil )
(^ const-decl "real" exponentiation nil )
(Fnormal? const-decl "bool" float nil )
(radix formal-const-decl "above(1)" axpy 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 )
(Closest? const-decl "bool" float nil )
(vNum const-decl "posnat" float nil )
(Fbounded? const-decl "bool" float nil )
(Fsubnormal? const-decl "bool" float nil )
(/= const-decl "boolean" notequal 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 )
(rat_minus_rat_is_rat application-judgement "rat" rationals nil )
(rat_abs_is_nonneg application-judgement "{r: nonneg_rat | r >= q}"
real_defs nil )
(nnrat_times_nnrat_is_nnrat application-judgement "nonneg_rat"
rationals nil )
(nnrat_plus_nnrat_is_nnrat application-judgement "nonneg_rat"
rationals nil )
(real_minus_real_is_real application-judgement "real" reals nil )
(mult_divides1 application-judgement "(divides(n))" divides nil )
(mult_divides2 application-judgement "(divides(m))" divides nil ))
nil ))
(Axpy_opt_aux3 0
(Axpy_opt_aux3-1 nil 3321283542
("" (skeep)
(("" (case "-dExp(b) <= Fexp(u)" )
(("1" (split-ineq -1)
(("1" (hide -2)
(("1" (mult-by 1 "radix/2+radix" )
(("1" (mult-by 1 "radix ^ (Prec(b)-1)" )
(("1"
(trans-ineq 1
"abs(FtoR[radix](y)) * (radix ^ (1 - Prec(b)) * radix ^ (Prec(b) - 1))"
:strict 2)
(("1" (assert ) nil nil )
("2" (rewrite "expt_plus" :dir rl)
(("2" (case-replace "FtoR(y)=FtoR(u)-FtoR(t)" )
(("1"
(trans-ineq 1 "abs(FtoR(u))+abs(FtoR(t))" :strict
2)
(("1" (hide-all-but 1)
(("1" (expand "abs" )
(("1" (grind-reals) nil nil )) nil ))
nil )
("2" (rewrite "FulpCanonic" )
(("1"
(case-replace "Fexp(Fpred(b)(u))=-dExp(b)" )
(("1" (assert )
(("1"
(case "abs(FtoR[radix](t)) <= radix ^ (Prec(b) - 1) * radix ^ -dExp(b)*(radix/2)" )
(("1"
(case
"abs(FtoR[radix](u)) < radix ^ (Prec(b) - 1) * radix ^ -dExp(b) * radix" )
(("1" (assert ) nil nil )
("2"
(hide 2)
(("2"
(rewrite "FabsCorrect" :dir rl)
(("2"
(expand "Fabs" )
(("2"
(expand "FtoR" 1)
(("2"
(rewrite -4 :dir rl)
(("2"
(div-by
1
"radix ^ -dExp(b)" )
(("2"
(field 1)
(("2"
(trans-ineq
1
"vNum(b)"
:strict
1)
(("1"
(case
"Fbounded?(b)(u)" )
(("1"
(expand
"Fbounded?" )
(("1"
(propax)
nil
nil ))
nil )
("2"
(rewrite
"FcanonicBounded" )
nil
nil ))
nil )
("2"
(trans-ineq
1
"radix ^ (Prec(b))" )
(("1"
(assert )
(("1"
(expand "vNum" )
(("1"
(assert )
nil
nil ))
nil ))
nil )
("2"
(lemma "expt_plus" )
(("2"
(inst
-1
"1"
"Prec(b)-1"
"radix" )
(("2"
(rewrite
"expt_x1" )
(("2"
(assert )
nil
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2"
(hide-all-but (-8 1))
(("2"
(expand * "Fsubnormal?" "FtoR" )
(("2"
(flatten)
(("2"
(copy -3)
(("2"
(rewrite -3)
(("2"
(div-by 1 "radix ^ -dExp(b)" )
(("2"
(rewrite "abs_mult" )
(("2"
(rewrite "abs_mult" )
(("2"
(expand "abs" 1 2)
(("2"
(field 1)
(("2"
(case-replace
" radix ^ (Prec(b) - 1)=vNum(b)/radix" )
(("1"
(trans-ineq
1
"radix*abs(Fnum(t))" )
(("1"
(grind-reals)
nil
nil )
("2"
(expand
"abs"
-3
1)
(("2"
(grind-reals)
nil
nil ))
nil ))
nil )
("2"
(rewrite
"expt_div"
:dir
rl)
(("2"
(grind-reals)
(("2"
(expand
"vNum" )
(("2"
(propax)
nil
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2" (hide-all-but (-2 -5 1))
(("2" (expand "Fpred" )
(("2"
(expand "FtoR" )
(("2" (grind-reals) nil nil ))
nil ))
nil ))
nil ))
nil )
("2" (rewrite "FpredCanonic" ) nil nil ))
nil ))
nil )
("2" (case "FtoR(u)=FtoR(t)+FtoR(y)" )
(("1" (assert ) nil nil )
("2" (hide 2 3)
(("2" (lemma "ExactSum_Near" )
(("2" (inst?)
(("2" (split)
(("1" (propax) nil nil )
("2"
(trans-ineq
1
"radix ^ (-dExp(b))/2"
:strict
2)
(("1"
(trans-ineq 1 "Fulp(b)(u)/2" )
(("1"
(rewrite "ClosestUlp" )
(("1"
(rewrite "FcanonicBounded" )
nil
nil ))
nil )
("2"
(rewrite "FulpCanonic" )
(("2" (assert ) nil nil ))
nil ))
nil )
("2" (grind-reals) nil nil ))
nil )
("3" (propax) nil nil )
("4"
(rewrite "FcanonicBounded" )
nil
nil )
("5"
(rewrite "FcanonicBounded" )
nil
nil )
("6"
(rewrite "FcanonicBounded" )
nil
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2" (case "-dExp(b) < Fexp(u)" )
(("1" (hide -2 1)
(("1" (trans-ineq 1 "abs(FtoR(u))*radix^(-Prec(b)) " )
(("1" (mult-by 1 "radix ^ (Prec(b))" )
(("1"
(trans-ineq 1
"abs(FtoR[radix](y)) / (radix/2 + radix)*(radix ^ (1 - Prec(b))*radix ^ (Prec(b)))" )
(("1" (assert ) nil nil )
("2" (rewrite "expt_plus" :dir rl)
(("2"
(trans-ineq 1
"abs(FtoR(u))*(radix ^ (-Prec(b)) * radix ^ (Prec(b)))" )
(("1" (rewrite "expt_plus" :dir rl)
(("1" (case-replace "(Prec(b)) + (-Prec(b))=0" )
(("1" (assert )
(("1"
(case "Fexp(u)=1-dExp(b) OR 2-dExp(b) <= Fexp(u)" )
(("1"
(split)
(("1"
(hide -2 -3)
(("1"
(div-by 1 "radix" )
(("1"
(mult-by 1 "radix/2+radix" )
(("1"
(trans-ineq
1
"abs(FtoR(u))+abs(FtoR(t))+abs(FtoR(u)-(FtoR(t)+FtoR(y)))" )
(("1"
(hide-all-but 1)
(("1"
(expand "abs" )
(("1"
(grind-reals)
nil
nil ))
nil ))
nil )
("2"
(hide -7)
(("2"
(trans-ineq
1
"abs(FtoR(u))+(radix^(Prec(b)-1)-1)*radix^(-dExp(b))+radix^(1-dExp(b))/2" )
(("1"
(case
"abs(FtoR[radix](t)) <= (radix ^ (Prec(b) - 1) - 1) * radix ^ (-dExp(b))" )
(("1"
(case
"abs(FtoR[radix](u) - (FtoR[radix](t) + FtoR[radix](y)))
<= radix ^ (1 - dExp(b)) / 2")
(("1" (assert ) nil nil )
("2"
(hide 2)
(("2"
(trans-ineq
1
"Fulp(b)(u)/2" )
(("1"
(rewrite
"ClosestUlp" )
(("1"
(rewrite
"FcanonicBounded" )
nil
nil ))
nil )
("2"
(rewrite
"FulpCanonic" )
(("2"
(rewrite -2)
(("2"
(assert )
nil
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2"
(expand "Fsubnormal?" )
(("2"
(flatten)
(("2"
(expand "FtoR" 1)
(("2"
(rewrite
"abs_mult" )
(("2"
(expand
"abs"
1
2)
(("2"
(copy -8)
(("2"
(rewrite
-8)
(("2"
(hide 2)
(("2"
(div-by
1
" radix ^ -dExp(b)" )
(("2"
(trans-ineq
1
"(radix ^ (Prec(b) - 1)-1)" )
(("1"
(rewrite
"abs_mult"
-1)
(("1"
(expand
"abs"
-1
1)
(("1"
(case-replace
"vNum(b)=radix*(radix ^ (Prec(b) - 1))" )
(("1"
(div-by
-2
"radix" )
(("1"
(case
"FORALL (i,j:int):i<j=> i<= j-1" )
(("1"
(inst?)
(("1"
(assert )
nil
nil )
("2"
(hide-all-but
(-7
1))
(("2"
(grind)
nil
nil ))
nil ))
nil )
("2"
(skosimp*)
(("2"
(assert )
nil
nil ))
nil ))
nil ))
nil )
("2"
(rewrite
"expt_div"
:dir
rl)
(("2"
(grind-reals)
(("2"
(expand
"vNum" )
(("2"
(propax)
nil
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2"
(field
1)
nil
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2"
(mult-by 1 "radix" )
(("2"
(trans-ineq
1
"abs(FtoR(u))*(radix/2+radix)" )
(("1"
(assert )
(("1"
(move-terms 1 r 2)
(("1"
(assert )
(("1"
(mult-by 1 "2" )
(("1"
(field 1)
(("1"
(div-by
1
"radix" )
(("1"
(trans-ineq
1
"(2 * (radix ^ (Prec(b) - 1) * radix ^ (-dExp(b)) ) -
2 * (radix ^ (-dExp(b)) )
+ ((radix ^ (1 - dExp(b)))))")
(("1"
(field
1)
nil
nil )
("2"
(rewrite
"FabsCorrect"
:dir
rl)
(("2"
(expand
"FtoR"
1)
(("2"
(expand
"Fabs" )
(("2"
(rewrite
-1)
(("2"
(case-replace
"radix ^ (1 - dExp(b))=radix*radix ^ (-dExp(b))" )
(("1"
(div-by
1
"radix ^ (-dExp(b))" )
(("1"
(trans-ineq
1
"(radix -2 +
2 * (radix ^ (Prec(b) - 1)))")
(("1"
(grind-reals)
nil
nil )
("2"
(field
1)
nil
nil )
("3"
(field
1)
(("3"
(trans-ineq
1
"(radix ^ (Prec(b)))" )
(("1"
(case
"2 <= radix" )
(("1"
(split-ineq
-1)
(("1"
(rewrite
-1)
(("1"
(rewrite
-1
:dir
rl)
(("1"
(assert )
(("1"
(lemma
"expt_plus" )
(("1"
(inst
-1
"1"
"Prec(b)-1"
"2" )
(("1"
(rewrite
"expt_x1" )
(("1"
(assert )
nil
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2"
(case
"2 < radix" )
(("1"
(hide
-2
1)
(("1"
(trans-ineq
1
"3 * (radix ^ (Prec(b) - 1))" )
(("1"
(move-terms
1
l
1)
(("1"
(assert )
(("1"
(trans-ineq
1
"radix^1" )
(("1"
(rewrite
"expt_x1" )
(("1"
(assert )
nil
nil ))
nil )
("2"
(rewrite
"Exp_increq_1" )
nil
nil ))
nil ))
nil ))
nil )
("2"
(trans-ineq
1
"radix * (radix ^ (Prec(b) - 1))" )
(("1"
(grind-reals)
nil
nil )
("2"
(rewrite
"expt_div"
:dir
rl)
(("2"
(grind-reals)
nil
nil ))
nil ))
nil ))
nil ))
nil )
("2"
(assert )
nil
nil ))
nil ))
nil )
("2"
(assert )
nil
nil ))
nil )
("2"
(typepred
"u" )
(("2"
(expand *
"Fcanonic?"
"Fsubnormal?"
"Fnormal?" )
(("2"
(flatten)
(("2"
(rewrite
"abs_mult" )
(("2"
(expand
"abs"
-2
1)
(("2"
(trans-ineq
1
"vNum(b)" )
(("2"
(assert )
(("2"
(expand
"vNum" )
(("2"
(assert )
nil
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2"
(lemma
"expt_plus" )
(("2"
(inst
-1
"1"
"-dExp(b)"
"radix" )
(("2"
(rewrite
"expt_x1" )
(("2"
(assert )
nil
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2"
(field 1)
nil
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2"
(div-by 1 "radix" )
(("2"
(mult-by 1 "radix / 2 + radix" )
(("2"
(case
"0 < 1+radix^(1-Prec(b))/2" )
(("1"
(trans-ineq
1
"abs(FtoR(u))*(1+radix^(1-Prec(b))/2+radix^(-2))" )
(("1"
(assert )
(("1"
(move-terms 1 r 2)
(("1"
(trans-ineq
1
"abs(FtoR[radix](y)) - abs(FtoR(t))" )
(("1"
(move-terms 1 r 2)
(("1"
(move-terms 1 l 1)
(("1"
(move-terms 1 l 1)
(("1"
(assert )
(("1"
(trans-ineq
1
"radix^(Prec(b)-1)*radix^(-dExp(b))" )
(("1"
(hide-all-but
(-9 1))
(("1"
(rewrite
"FabsCorrect"
:dir
rl)
(("1"
(expand *
"FtoR"
"Fabs"
"Fsubnormal?" )
(("1"
(flatten)
(("1"
(trans-ineq
1
"vNum(b)/radix*radix ^(-dExp(b))" )
(("1"
(rewrite
"abs_mult" )
(("1"
(expand
"abs"
-3
1)
(("1"
(copy
-3)
(("1"
(rewrite
-3)
(("1"
(div-by
1
"radix ^ -dExp(b) " )
(("1"
(grind-reals)
nil
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2"
(div-by
1
"radix ^ -dExp(b) " )
(("2"
(rewrite
"expt_div"
:dir
rl)
(("2"
(grind-reals)
(("2"
(expand
"vNum" )
(("2"
(assert )
nil
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2"
(rewrite
"FabsCorrect"
:dir
rl)
(("2"
(expand
"FtoR"
1)
(("2"
(expand
"Fabs" )
(("2"
(trans-ineq
1
"abs(Fnum(u))*(radix ^ Fexp(u)*radix ^ (-2))" )
(("1"
(rewrite
"expt_plus"
:dir
rl
:subst
("i"
"Fexp(u)" ))
(("1"
(case
"radix ^ (Prec(b) - 1) <= abs(Fnum(u))" )
(("1"
(case
"radix ^ (-dExp(b)) <= radix ^ (Fexp(u) - 2)" )
(("1"
(grind-reals)
nil
nil )
("2"
(rewrite
"Exp_increq_1" )
nil
nil ))
nil )
("2"
(hide-all-but
(-2
1))
(("2"
(typepred
"u" )
(("2"
(expand *
"Fcanonic?"
"Fnormal?"
"Fsubnormal?" )
(("2"
(flatten)
(("2"
(rewrite
"abs_mult" )
(("2"
(expand
"abs"
-2
1)
(("2"
(trans-ineq
1
" vNum(b)/radix" )
(("1"
(rewrite
"expt_div"
:dir
rl)
(("1"
(grind-reals)
(("1"
(expand
"vNum" )
(("1"
(assert )
nil
nil ))
nil ))
nil ))
nil )
("2"
(grind-reals)
nil
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2"
(assert )
nil
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2"
(trans-ineq
1
"abs(FtoR(t)+FtoR(y))" )
(("1"
(hide-all-but 1)
(("1"
(expand "abs" )
(("1"
(grind-reals)
nil
nil ))
nil ))
nil )
("2"
(case
" 0 < 2*abs(Fnum(u))" )
(("1"
(case
"0 < 1+1/(2*abs(Fnum(u)))" )
(("1"
(trans-ineq
1
" abs(FtoR[radix](u))*(1+ 1 / (2 * abs(Fnum(u))))" )
(("1"
(div-by
1
"1 + 1 / (2 * abs(Fnum(u)))" )
(("1"
(rewrite
"RoundGe" )
nil
nil ))
nil )
("2"
(assert )
(("2"
(move-terms
1
l
1)
(("2"
(assert )
(("2"
(div-by
1
"abs(FtoR(u))" )
(("2"
(mult-by
1
"2" )
(("2"
(lemma
"expt_inverse" )
(("2"
(inst
-1
"Prec(b)-1"
"radix" )
(("2"
(trans-ineq
1
"1 / (radix ^ (Prec(b) - 1))" )
(("1"
(field
1)
(("1"
(hide-all-but
(-7
1))
(("1"
(typepred
"u" )
(("1"
(expand *
"Fcanonic?"
"Fnormal?"
"Fsubnormal?" )
(("1"
(flatten)
(("1"
(rewrite
"abs_mult" )
(("1"
(expand
"abs"
-2
1)
(("1"
(trans-ineq
1
"vNum(b)/radix" )
(("1"
(rewrite
"expt_div"
:dir
rl)
(("1"
(grind-reals)
(("1"
(expand
"vNum" )
(("1"
(assert )
nil
nil ))
nil ))
nil ))
nil )
("2"
(grind-reals)
nil
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2"
(grind-reals)
nil
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2"
(hide-all-but
(-1 1))
(("2"
(trans-ineq
1
"1"
:strict
1)
(("1"
(assert )
nil
nil )
("2"
(move-terms
1
l
1)
(("2"
(assert )
(("2"
(grind-reals)
nil
nil ))
nil ))
nil ))
nil ))
nil )
("3"
(assert )
nil
nil ))
nil )
("2"
(hide-all-but
(-7 1))
(("2"
(expand *
"FtoR"
"abs" )
(("2"
(grind-reals)
nil
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2"
(div-by 1 "abs(FtoR(u))" )
(("2"
(field 1)
(("2"
(move-terms 1 l 3)
(("2"
(assert )
(("2"
(case
"(2 * (radix ^ (-2) * radix)) <= 1" )
(("1"
(case
"(radix * (radix ^ (1 - Prec(b)))) <= 1" )
(("1"
(assert )
nil
nil )
("2"
(hide-all-but
(-11 1))
(("2"
(lemma
"expt_plus" )
(("2"
(inst
-1
"1"
"1-Prec(b)"
"radix" )
(("2"
(rewrite
"expt_x1" )
(("2"
(trans-ineq
1
"radix ^ (2 - Prec(b))" )
(("1"
(assert )
nil
nil )
("2"
(trans-ineq
1
"radix ^ 0" )
(("1"
(rewrite
"Exp_increq_1" )
nil
nil )
("2"
(rewrite
"expt_x0" )
(("2"
(assert )
nil
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2"
(hide-all-but 1)
(("2"
(rewrite
"expt_inverse" )
(("2"
(rewrite
"expt_x2" )
(("2"
(field 1)
nil
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2" (grind-reals) nil nil ))
nil ))
nil ))
nil ))
nil )
("2"
(hide-all-but (-2 1))
(("2"
(flatten)
(("2" (grind-reals) nil nil ))
nil ))
nil ))
nil ))
nil )
("2" (assert ) nil nil ))
nil ))
nil )
("2" (assert ) nil nil ))
nil ))
nil ))
nil ))
nil )
("2" (expand "abs" 1)
(("2" (rewrite "expt_inverse" )
(("2" (cross-mult 1)
(("2" (trans-ineq 1 "FtoR(u)" )
(("1" (assert ) nil nil )
("2"
(trans-ineq 1
"Fulp(b)(Fpred(b)(u))+FtoR(Fpred(b)(u))" )
(("1" (rewrite "FpredDiff" :dir rl)
(("1" (assert ) nil nil )) nil )
("2" (rewrite "FulpCanonic" )
(("1" (expand "FtoR" 1)
(("1"
(div-by 1 "radix ^ (Fexp(Fpred(b)(u)))" )
(("1"
(trans-ineq 1 "Fnum(Fpred(b)(u))+1" )
(("1" (field 1) nil nil )
("2"
(case "Fbounded?(b)(Fpred(b)(u))" )
(("1"
(expand "Fbounded?" )
(("1"
(flatten)
(("1"
(hide-all-but (-1 1))
(("1"
(case-replace
"radix ^ (Prec(b))=vNum(b)" )
(("1"
(expand "abs" )
(("1"
(grind-reals)
(("1"
(case
"FORALL (i,j:int): i<j => 1+i <= j" )
(("1"
(grind-reals)
nil
nil )
("2"
(grind-reals)
nil
nil ))
nil ))
nil ))
nil )
("2"
(assert )
(("2"
(expand "vNum" )
(("2" (propax) nil nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2"
(rewrite "FcanonicBounded" )
(("2"
(rewrite "FpredCanonic" )
nil
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2" (rewrite "FpredCanonic" ) nil nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2" (assert ) nil nil ))
nil ))
nil )
("2" (case "Fbounded?(b)(u)" )
(("1" (expand "Fbounded?" ) (("1" (flatten) nil nil )) nil )
("2" (rewrite "FcanonicBounded" ) nil nil ))
nil ))
nil ))
nil )
((Fcanonic? const-decl "bool" float nil )
(float type-eq-decl nil float nil )
(b formal-const-decl "Format" axpy nil )
(Format type-eq-decl nil float nil )
(radix formal-const-decl "above(1)" axpy 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 )
(above nonempty-type-eq-decl nil integers nil )
(nat nonempty-type-eq-decl nil naturalnumbers nil )
(- const-decl "[numfield -> numfield]" number_fields nil )
(numfield nonempty-type-eq-decl nil number_fields 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 )
(minus_int_is_int application-judgement "int" integers nil )
(minus_nzint_is_nzint application-judgement "nzint" integers nil )
(expt_x2 formula-decl nil exponentiation nil )
(div_mult_pos_le1 formula-decl nil real_props nil )
(minus_rat_is_rat application-judgement "rat" rationals nil )
(div_mult_pos_le2 formula-decl nil real_props nil )
(nzrat_div_nzrat_is_nzrat application-judgement "nzrat" rationals
nil )
(RoundGe formula-decl nil axpy nil )
(u skolem-const-decl "{x: float | Fcanonic?(b)(x)}" axpy nil )
(expt_inverse formula-decl nil exponentiation nil )
(nzrat_times_nzrat_is_nzrat application-judgement "nzrat" rationals
nil )
(FDX_95 skolem-const-decl
"{n: nonneg_real | n >= Fnum(u) AND n >= -Fnum(u)}" axpy nil )
(FDX_96 skolem-const-decl "posrat" axpy nil )
(div_cancel4 formula-decl nil real_props nil )
(nonzero_times3 formula-decl nil real_props nil )
(pos_times_gt formula-decl nil real_props nil )
(nzreal_div_nzreal_is_nzreal application-judgement "nzreal"
real_types nil )
(nonneg_rat nonempty-type-eq-decl nil rationals nil )
(posrat nonempty-type-eq-decl nil rationals nil )
(rat nonempty-type-eq-decl nil rationals nil )
(minus_even_is_even application-judgement "even_int" integers nil )
(Fnormal? const-decl "bool" float nil )
(Exp_increq_1 formula-decl nil float nil )
(rat_plus_rat_is_rat application-judgement "rat" rationals nil )
(IFF const-decl "[bool, bool -> bool]" booleans nil )
(rat_div_nzrat_is_rat application-judgement "rat" rationals nil )
(times_div_cancel1 formula-decl nil extra_real_props nil )
(expt def-decl "real" exponentiation nil )
(posnat_expt application-judgement "posnat" exponentiation nil )
(rat_minus_rat_is_rat application-judgement "rat" rationals nil )
(nnreal_plus_posreal_is_posreal application-judgement "posreal"
real_types nil )
(posreal_plus_nnreal_is_posreal application-judgement "posreal"
real_types nil )
(FpredDiff formula-decl nil float nil )
(times_div1 formula-decl nil real_props nil )
(posrat_exp application-judgement "posrat" exponentiation nil )
(nzreal nonempty-type-eq-decl nil reals nil )
(expt_plus formula-decl nil exponentiation nil )
(int_plus_int_is_int application-judgement "int" integers nil )
(expt_x0 formula-decl nil exponentiation nil )
(ExactSum_Near formula-decl nil axpy nil )
(real_div_nzreal_is_real application-judgement "real" reals nil )
(ClosestUlp formula-decl nil float nil )
(minus_real_is_real application-judgement "real" reals nil )
(FpredCanonic formula-decl nil float nil )
(Fabs const-decl "float" float nil )
(int_abs_is_nonneg application-judgement "{j: nonneg_int | j >= i}"
real_defs nil )
(NOT const-decl "[bool -> bool]" booleans nil )
(IMPLIES const-decl "[bool, bool -> bool]" booleans nil )
(posint_exp application-judgement "posint" exponentiation nil )
(expt_x1 formula-decl nil exponentiation nil )
(FcanonicBounded formula-decl nil float nil )
(nonneg_int nonempty-type-eq-decl nil integers nil )
(posnat nonempty-type-eq-decl nil integers nil )
(vNum const-decl "posnat" float nil )
(times_div_cancel2 formula-decl nil extra_real_props nil )
(both_sides_div_pos_lt1 formula-decl nil real_props nil )
(nnrat_times_nnrat_is_nnrat application-judgement "nonneg_rat"
rationals nil )
(minus_odd_is_odd application-judgement "odd_int" integers nil )
(FabsCorrect formula-decl nil float nil )
(rat_times_rat_is_rat application-judgement "rat" rationals nil )
(mult_divides1 application-judgement "(divides(n))" divides nil )
(mult_divides2 application-judgement "(divides(m))" divides nil )
(Fsubnormal? const-decl "bool" float nil )
(rat_abs_is_nonneg application-judgement "{r: nonneg_rat | r >= q}"
real_defs nil )
(both_sides_div_pos_le1 formula-decl nil real_props nil )
(nzrat_abs_is_pos application-judgement "{r: posrat | r >= q}"
real_defs nil )
(nnrat_div_posrat_is_nnrat application-judgement "nonneg_rat"
rationals nil )
(real_gt_is_strict_total_order name-judgement
"(strict_total_order?[real])" real_props nil )
(bijective? const-decl "bool" functions nil )
(id const-decl "(bijective?[T, T])" identity nil )
(TRUE const-decl "bool" booleans nil )
(int_times_even_is_even application-judgement "even_int" integers
nil )
(expt_div formula-decl nil exponentiation nil )
(posint_times_posint_is_posint application-judgement "posint"
integers nil )
(both_sides_times1 formula-decl nil real_props nil )
(cross_mult formula-decl nil real_props nil )
(div_cancel1 formula-decl nil real_props nil )
(even_times_int_is_even application-judgement "even_int" integers
nil )
(le_times_le_pos formula-decl nil real_props 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 )
(abs_mult formula-decl nil real_props nil )
(pos_times_lt formula-decl nil real_props nil )
(FulpCanonic formula-decl nil float nil )
(real_minus_real_is_real application-judgement "real" reals nil )
(posrat_times_posrat_is_posrat application-judgement "posrat"
rationals nil )
(< const-decl "bool" reals nil )
(nonzero_real nonempty-type-eq-decl nil reals nil )
(div_cancel2 formula-decl nil real_props 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 )
(+ const-decl "[numfield, numfield -> numfield]" number_fields nil )
(/= const-decl "boolean" notequal nil )
(nznum nonempty-type-eq-decl nil number_fields nil )
(/ const-decl "[numfield, nznum -> numfield]" number_fields nil )
(* const-decl "[numfield, numfield -> numfield]" number_fields 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 )
(OR const-decl "[bool, bool -> bool]" booleans nil )
(^ const-decl "real" exponentiation nil )
(- const-decl "[numfield, numfield -> numfield]" number_fields nil )
(Fbounded? const-decl "bool" float nil )
(Fulp const-decl "real" float nil )
(Fpred const-decl "float" float nil )
(both_sides_times_pos_le1 formula-decl nil real_props nil )
(posrat_div_posrat_is_posrat application-judgement "posrat"
rationals nil )
(nnreal_div_posreal_is_nnreal application-judgement "nnreal"
real_types nil )
(nnreal_plus_nnreal_is_nnreal application-judgement "nnreal"
real_types nil )
(int_minus_int_is_int application-judgement "int" integers nil )
(nnrat_exp application-judgement "nnrat" exponentiation nil )
(posint_plus_nnint_is_posint application-judgement "posint"
integers nil )
(posrat_plus_nnrat_is_posrat application-judgement "posrat"
rationals nil )
(nnreal_times_nnreal_is_nnreal application-judgement "nnreal"
real_types 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 )
(real_plus_real_is_real application-judgement "real" reals nil )
(real_le_is_total_order name-judgement "(total_order?[real])"
real_props nil )
(= const-decl "[T, T -> boolean]" equalities nil )
(real_times_real_is_real application-judgement "real" reals nil ))
shostak))
(Axpy_optPos_TCC1 0
(Axpy_optPos_TCC1-1 nil 3320768094 ("" (subtype-tcc) nil nil )
((b formal-const-decl "Format" axpy nil )
(Fcanonic? 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 )
(NOT const-decl "[bool -> bool]" booleans 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 )
(posint_exp application-judgement "posint" exponentiation nil )
(real_ge_is_total_order name-judgement "(total_order?[real])"
real_props nil )
(real_le_is_total_order name-judgement "(total_order?[real])"
real_props nil )
(minus_int_is_int application-judgement "int" integers nil )
(posnat_expt application-judgement "posnat" exponentiation nil )
(real_gt_is_strict_total_order name-judgement
"(strict_total_order?[real])" real_props nil )
(^ const-decl "real" exponentiation nil )
(Fsubnormal? const-decl "bool" float nil )
(Fnormal? const-decl "bool" float nil )
(Fbounded? const-decl "bool" float nil )
(vNum const-decl "posnat" float nil )
(radix formal-const-decl "above(1)" axpy 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 )
(Closest? const-decl "bool" float nil )
(/= const-decl "boolean" notequal 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 )
(rat_minus_rat_is_rat application-judgement "rat" rationals nil )
(real_minus_real_is_real application-judgement "real" reals nil )
(mult_divides1 application-judgement "(divides(n))" divides nil )
(mult_divides2 application-judgement "(divides(m))" divides nil ))
nil ))
(Axpy_optPos_TCC2 0
(Axpy_optPos_TCC2-1 nil 3320768094 ("" (subtype-tcc) nil nil )
((b formal-const-decl "Format" axpy nil )
(Fcanonic? 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 )
(NOT const-decl "[bool -> bool]" booleans 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 )
(posint_exp application-judgement "posint" exponentiation nil )
(real_ge_is_total_order name-judgement "(total_order?[real])"
real_props nil )
(real_le_is_total_order name-judgement "(total_order?[real])"
real_props nil )
(minus_int_is_int application-judgement "int" integers nil )
(posnat_expt application-judgement "posnat" exponentiation nil )
(real_gt_is_strict_total_order name-judgement
"(strict_total_order?[real])" real_props nil )
(nat_exp application-judgement "nat" exponentiation nil )
(int_minus_int_is_int application-judgement "int" integers nil )
(nzrat_div_nzrat_is_nzrat application-judgement "nzrat" rationals
nil )
(nat_expt application-judgement "nat" exponentiation nil )
(^ const-decl "real" exponentiation nil )
(Fsubnormal? const-decl "bool" float nil )
(Fnormal? const-decl "bool" float nil )
(Fbounded? const-decl "bool" float nil )
(vNum const-decl "posnat" float nil )
(radix formal-const-decl "above(1)" axpy 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 )
(Closest? const-decl "bool" float nil )
(/= const-decl "boolean" notequal 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 )
(rat_minus_rat_is_rat application-judgement "rat" rationals nil )
(rat_abs_is_nonneg application-judgement "{r: nonneg_rat | r >= q}"
real_defs nil )
(nnrat_times_nnrat_is_nnrat application-judgement "nonneg_rat"
rationals nil )
(nnrat_plus_nnrat_is_nnrat application-judgement "nonneg_rat"
rationals nil )
(real_minus_real_is_real application-judgement "real" reals nil )
(mult_divides1 application-judgement "(divides(n))" divides nil )
(mult_divides2 application-judgement "(divides(m))" divides nil ))
nil ))
(Axpy_optPos 0
(Axpy_optPos-1 nil 3320768520
("" (skeep)
(("" (lemma "AxpyPos" )
(("" (inst?)
(("" (inst -1 "t" "u" )
(("" (split)
(("1" (propax) nil nil )
("2"
(trans-ineq 1
"abs(FtoR[radix](y)) * radix ^ (1 - Prec(b)) / (6 * radix)"
:strict 1)
(("2" (mult-by 1 "4" )
(("2" (typepred "t" )
(("2" (expand "Fcanonic?" )
(("2" (split)
(("1"
(trans-ineq 1
"abs(FtoR(y))*radix^(1-Prec(b))/(radix+1)"
:strict 2)
(("1" (hide-all-but 1)
(("1" (div-by 1 "abs(FtoR(y))" )
(("1"
(trans-ineq 1
"radix ^ (1 - Prec(b)) / (6 * radix) * 4 " )
(("1" (field 1) nil nil )
("2"
(trans-ineq
1
"radix ^ (1 - Prec(b)) / (radix + 1)" )
(("1"
(div-by 1 "radix ^ (1 - Prec(b))" )
(("1"
(trans-ineq 1 "4/(6*radix)" )
(("1" (field 1) nil nil )
("2"
(trans-ineq 1 "1/(radix + 1)" )
(("1" (grind-reals) nil nil )
("2" (field 1) nil nil ))
nil ))
nil ))
nil )
("2" (field 1) nil nil ))
nil ))
nil ))
nil ))
nil )
("2" (lemma "Axpy_opt_aux2" )
(("2" (inst?)
(("2" (inst -1 "t" "u" )
(("2"
(split)
(("1" (propax) nil nil )
("2" (propax) nil nil )
("3" (propax) nil nil )
("4" (propax) nil nil )
("5" (propax) nil nil )
("6" (propax) nil nil )
("7" (propax) nil nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2"
(trans-ineq 1
"abs(FtoR(y))*radix^(1-Prec(b))/(radix+radix/2)" )
(("1" (hide-all-but 1)
(("1" (field 1) nil nil )) nil )
("2" (lemma "Axpy_opt_aux3" )
(("2" (inst?)
(("2" (inst -1 "t" "u" )
(("2"
(split)
(("1" (propax) nil nil )
("2" (propax) nil nil )
("3" (propax) nil nil )
("4" (assert ) nil nil )
("5" (propax) nil nil )
("6" (propax) nil nil )
("7" (propax) nil nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("3" (skosimp*)
(("3" (lemma "Axpy_opt_aux1" )
(("3" (inst?)
(("3" (inst -1 "t" "u" )
(("3" (split)
(("1" (propax) nil nil ) ("2" (propax) nil nil )
("3" (propax) nil nil ) ("4" (assert ) nil nil )
("5" (propax) nil nil ) ("6" (propax) nil nil )
("7" (propax) nil nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("4" (propax) nil nil ) ("5" (propax) nil nil )
("6" (propax) nil nil ))
nil ))
nil ))
nil ))
nil ))
nil )
((AxpyPos formula-decl nil axpy nil )
(even_minus_odd_is_odd application-judgement "odd_int" integers
nil )
(posrat_exp application-judgement "posrat" exponentiation nil )
(Axpy_opt_aux1 formula-decl nil axpy nil )
(int_minus_int_is_int application-judgement "int" integers nil )
(posint_times_posint_is_posint application-judgement "posint"
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 )
(nnreal_div_posreal_is_nnreal application-judgement "nnreal"
real_types nil )
(real_div_nzreal_is_real application-judgement "real" reals nil )
(AND const-decl "[bool, bool -> bool]" booleans nil )
(< const-decl "bool" reals nil ) (>= const-decl "bool" reals nil )
(nonneg_real nonempty-type-eq-decl nil real_types 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 )
(+ const-decl "[numfield, numfield -> numfield]" number_fields nil )
(FtoR const-decl "real" float nil )
(* const-decl "[numfield, numfield -> numfield]" number_fields nil )
(/= const-decl "boolean" notequal nil )
(nznum nonempty-type-eq-decl nil number_fields nil )
(/ const-decl "[numfield, nznum -> numfield]" number_fields nil )
(OR const-decl "[bool, bool -> bool]" booleans nil )
(^ const-decl "real" exponentiation nil )
(<= const-decl "bool" reals nil )
(Fbounded? const-decl "bool" float nil )
(Fulp const-decl "real" float nil )
(Fpred const-decl "float" float nil )
(real_le_is_total_order name-judgement "(total_order?[real])"
real_props nil )
(nnrat_exp application-judgement "nnrat" exponentiation 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 )
(NOT const-decl "[bool -> bool]" booleans nil )
(Axpy_opt_aux2 formula-decl nil axpy nil )
(posrat_times_posrat_is_posrat application-judgement "posrat"
rationals nil )
(posrat_div_posrat_is_posrat application-judgement "posrat"
rationals nil )
(times_div2 formula-decl nil real_props nil )
(div_distributes formula-decl nil real_props nil )
(div_mult_pos_le1 formula-decl nil real_props nil )
(int_times_even_is_even application-judgement "even_int" integers
nil )
(even_plus_even_is_even application-judgement "even_int" integers
nil )
(posrat_plus_nnrat_is_posrat application-judgement "posrat"
rationals nil )
(div_mult_pos_le2 formula-decl nil real_props nil )
(neg_times_le formula-decl nil real_props nil )
(neg_times_lt formula-decl nil real_props nil )
(real_gt_is_strict_total_order name-judgement
"(strict_total_order?[real])" real_props nil )
(y skolem-const-decl "{x: float | Fcanonic?(b)(x)}" axpy nil )
(both_sides_div_pos_le1 formula-decl nil real_props nil )
(posint_plus_nnint_is_posint application-judgement "posint"
integers nil )
(Axpy_opt_aux3 formula-decl nil axpy nil )
(real_ge_is_total_order name-judgement "(total_order?[real])"
real_props nil )
(nonzero_real nonempty-type-eq-decl nil reals nil )
(div_cancel2 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 )
(b formal-const-decl "Format" axpy 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 )
(radix formal-const-decl "above(1)" axpy nil )
(above nonempty-type-eq-decl nil integers nil )
(> const-decl "bool" reals nil )
(bool nonempty-type-eq-decl nil booleans nil )
(integer_pred const-decl "[rational -> boolean]" integers nil )
(rational nonempty-type-from-decl nil rationals nil )
(rational_pred const-decl "[real -> boolean]" rationals nil )
(real nonempty-type-from-decl nil reals nil )
(real_pred const-decl "[number_field -> boolean]" reals nil )
(number_field nonempty-type-from-decl nil number_fields nil )
(number_field_pred const-decl "[number -> boolean]" number_fields
nil )
(boolean nonempty-type-decl nil booleans nil )
(number nonempty-type-decl nil numbers nil )
(int nonempty-type-eq-decl nil integers nil )
(real_times_real_is_real application-judgement "real" reals nil )
(real_minus_real_is_real application-judgement "real" reals nil )
(real_plus_real_is_real application-judgement "real" reals nil ))
shostak))
(Axpy_optZero_TCC1 0
(Axpy_optZero_TCC1-1 nil 3321008004 ("" (subtype-tcc) nil nil )
((b formal-const-decl "Format" axpy nil )
(Fcanonic? 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 )
(NOT const-decl "[bool -> bool]" booleans nil )
(rat_exp application-judgement "rat" exponentiation 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 )
(posint_exp application-judgement "posint" exponentiation nil )
(real_ge_is_total_order name-judgement "(total_order?[real])"
real_props nil )
(real_le_is_total_order name-judgement "(total_order?[real])"
real_props nil )
(minus_int_is_int application-judgement "int" integers nil )
(posnat_expt application-judgement "posnat" exponentiation nil )
(^ const-decl "real" exponentiation nil )
(Fsubnormal? const-decl "bool" float nil )
(Fnormal? const-decl "bool" float nil )
(Fbounded? const-decl "bool" float nil )
(vNum const-decl "posnat" float nil )
(radix formal-const-decl "above(1)" axpy 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 )
(Closest? const-decl "bool" float nil )
(/= const-decl "boolean" notequal 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 )
(rat_minus_rat_is_rat application-judgement "rat" rationals nil )
(real_minus_real_is_real application-judgement "real" reals nil )
(mult_divides1 application-judgement "(divides(n))" divides nil )
(mult_divides2 application-judgement "(divides(m))" divides nil ))
nil ))
(Axpy_optZero_TCC2 0
(Axpy_optZero_TCC2-1 nil 3321008004 ("" (subtype-tcc) nil nil )
((b formal-const-decl "Format" axpy nil )
(Fcanonic? 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 )
(NOT const-decl "[bool -> bool]" booleans nil )
(rat_exp application-judgement "rat" exponentiation 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 )
(posint_exp application-judgement "posint" exponentiation nil )
(real_ge_is_total_order name-judgement "(total_order?[real])"
real_props nil )
(real_le_is_total_order name-judgement "(total_order?[real])"
real_props nil )
(minus_int_is_int application-judgement "int" integers nil )
(posnat_expt application-judgement "posnat" exponentiation nil )
(rat_plus_rat_is_rat application-judgement "rat" rationals nil )
(int_minus_int_is_int application-judgement "int" integers nil )
(^ const-decl "real" exponentiation nil )
(Fsubnormal? const-decl "bool" float nil )
(Fnormal? const-decl "bool" float nil )
(Fbounded? const-decl "bool" float nil )
(vNum const-decl "posnat" float nil )
(radix formal-const-decl "above(1)" axpy 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 )
(Closest? const-decl "bool" float nil )
(/= const-decl "boolean" notequal 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 )
(rat_minus_rat_is_rat application-judgement "rat" rationals nil )
(rat_abs_is_nonneg application-judgement "{r: nonneg_rat | r >= q}"
real_defs nil )
(nnrat_times_nnrat_is_nnrat application-judgement "nonneg_rat"
rationals nil )
(nnrat_plus_nnrat_is_nnrat application-judgement "nonneg_rat"
rationals nil )
(real_minus_real_is_real application-judgement "real" reals nil )
(mult_divides1 application-judgement "(divides(n))" divides nil )
(mult_divides2 application-judgement "(divides(m))" divides nil ))
nil ))
(Axpy_optZero 0
(Axpy_optZero-1 nil 3321008612
("" (skeep)
(("" (case "u=(# Fnum:= 0, Fexp:=-dExp(b) #)" )
(("1" (case "FtoR(u)=FtoR(t)+FtoR(y)" )
(("1" (case "FtoR(y)=0" )
(("1" (hide-all-but (-1 -8))
(("1" (flip-ineq -2)
(("1" (rewrite -1)
(("1" (expand "abs" ) (("1" (grind-reals) nil nil ))
nil ))
nil ))
nil ))
nil )
("2" (case "radix*abs(FtoR(y)) <= (radix+1)*Fulp(b)(y)/2" )
(("1" (hide-all-but (-1 1))
(("1" (rewrite "FabsCorrect" :dir rl)
(("1" (rewrite "FulpCanonic" )
(("1" (expand * "Fabs" "FtoR" )
(("1" (div-by -1 "radix ^ (Fexp(y))" )
(("1"
(case-replace
" radix * (abs(Fnum(y)) * radix ^ Fexp(y)) / radix ^ (Fexp(y))= radix * abs(Fnum(y))" )
(("1"
(case-replace
"(radix ^ (Fexp(y)) + radix ^ (Fexp(y)) * radix) / 2 /
radix ^ (Fexp(y))=(radix+1)/2")
(("1" (hide -1 -2)
(("1" (div-by -1 "radix" )
(("1"
(case "abs(Fnum(y)) < 1" )
(("1"
(expand "abs" -1)
(("1" (grind-reals) nil nil ))
nil )
("2"
(trans-ineq
1
"(radix + 1) / 2 / radix"
:strict
2)
(("2" (grind-reals) nil nil ))
nil ))
nil ))
nil ))
nil )
("2" (field 1) nil nil ))
nil )
("2" (field 1) nil nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2"
(case "(radix+1) * abs(FtoR[radix](y)) <= abs(FtoR(y))+(radix + 1) * Fulp(b)(y) / 2" )
(("1" (grind-reals) nil nil )
("2" (hide 2 4)
(("2" (div-by 1 "radix+1" )
(("2"
(trans-ineq 1
"abs(FtoR[radix](y))/(radix+1)+ Fulp(b)(y) / 2" )
(("1" (move-terms 1 r 2)
(("1" (trans-ineq 1 "abs(FtoR(a)*FtoR(x))" )
(("1" (move-terms 1 l 2)
(("1" (move-terms 1 r 1)
(("1" (case-replace "y=Fopp(t)" )
(("1"
(rewrite "FulpOpp" )
(("1"
(rewrite "FoppCorrect" )
(("1"
(case-replace
"abs(-FtoR(t))=abs(FtoR(t))" )
(("1"
(trans-ineq
1
"abs(FtoR(t)-FtoR(a)*FtoR(x))" )
(("1"
(hide-all-but (-5 1))
(("1"
(case
"FORALL (v,w:real): (v>=0 => w>=0)=> (v<=0 => w<=0) => abs(w)-abs(v)<=abs(w-v)" )
(("1"
(inst
-1
"FtoR(a)*FtoR(x)"
"FtoR(t)" )
(("1"
(split)
(("1" (propax) nil nil )
("2"
(skosimp*)
(("2"
(lemma
"RleRoundedLessR0" )
(("2"
(inst
-1
"Closest?"
"b"
"t"
"FtoR(a)*FtoR(x)" )
(("2"
(split)
(("1"
(propax)
nil
nil )
("2"
(propax)
nil
nil )
("3"
(propax)
nil
nil )
("4"
(rewrite
"Closest_RoundedMode" )
nil
nil )
("5"
(rewrite
"FcanonicBounded" )
nil
nil ))
nil ))
nil ))
nil ))
nil )
("3"
(skosimp*)
(("3"
(lemma
"RleRoundedR0" )
(("3"
(inst
-1
"Closest?"
"b"
"t"
"FtoR(a)*FtoR(x)" )
(("3"
(split)
(("1"
(assert )
nil
nil )
("2"
(assert )
nil
nil )
("3"
(propax)
nil
nil )
("4"
(rewrite
"Closest_RoundedMode" )
nil
nil )
("5"
(rewrite
"FcanonicBounded" )
nil
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2"
(hide -1 2)
(("2"
(skeep)
(("2"
(expand "abs" )
(("2"
(grind-reals)
nil
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2"
(rewrite "ClosestUlp" )
(("2"
(rewrite "FcanonicBounded" )
nil
nil ))
nil ))
nil )
("2"
(hide-all-but 1)
(("2"
(expand "abs" )
(("2" (grind-reals) nil nil ))
nil ))
nil ))
nil ))
nil )
("2"
(rewrite "FcanonicBounded" )
nil
nil ))
nil )
("2"
(lemma "FcanonicUnique" )
(("2"
(inst -1 "b" "y" "Fopp(t)" )
(("2"
(split)
(("1" (propax) nil nil )
("2"
(rewrite "FoppCorrect" )
(("2" (assert ) nil nil ))
nil )
("3"
(lemma "FcanonicOpp" )
(("3"
(inst -1 "b" "t" )
(("3" (assert ) nil nil ))
nil ))
nil )
("4" (assert ) nil nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2" (mult-by 1 "radix+1" )
(("2"
(trans-ineq 1
"(radix + 1 + radix ^ (4 - Prec(b))) *
abs(FtoR[radix](a) * FtoR[radix](x))")
(("2" (assert )
(("2"
(move-terms 1 r 1)
(("2"
(move-terms 1 r 2)
(("2" (assert ) nil nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2" (field 1) nil nil ))
nil ))
nil ))
nil ))
nil ))
nil ))
nil )
("2" (rewrite "ExactSum_Near" )
(("1" (trans-ineq 1 "Fulp(b)(u)/2" :strict 2)
(("1" (lemma "ClosestUlp" )
(("1" (inst -1 "b" "u" "FtoR(t)+FtoR(y)" )
(("1" (split)
(("1" (assert ) nil nil ) ("2" (propax) nil nil )
("3" (rewrite "FcanonicBounded" ) nil nil ))
nil ))
nil ))
nil )
("2" (rewrite "FulpCanonic" )
(("2" (rewrite -1) (("2" (grind-reals) nil nil )) nil ))
nil ))
nil )
("2" (rewrite "FcanonicBounded" ) nil nil )
("3" (rewrite "FcanonicBounded" ) nil nil )
("4" (rewrite "FcanonicBounded" ) nil nil ))
nil ))
nil )
("2" (lemma "FcanonicUnique" )
(("2" (inst -1 "b" "u" "(# Fnum := 0, Fexp := -dExp(b) #)" )
(("2" (split)
(("1" (propax) nil nil )
("2" (rewrite -3 :dir rl)
(("2" (expand "FtoR" 1) (("2" (assert ) nil nil )) nil ))
nil )
("3" (expand * "Fcanonic?" "Fsubnormal?" "Fbounded?" )
(("3" (flatten)
(("3" (split)
(("1" (expand "abs" 1) (("1" (grind-reals) nil nil ))
nil )
("2" (expand "abs" 1) (("2" (grind-reals) nil nil ))
nil ))
nil ))
nil ))
nil )
("4" (assert ) nil nil ))
nil ))
nil ))
nil ))
nil ))
nil )
--> --------------------
--> maximum size reached
--> --------------------
Messung V0.5 in Prozent C=100 H=100 G=100
¤ Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.0.856Bemerkung:
(vorverarbeitet am 2026-04-27)
¤
*Bot Zugriff
2026-05-26