Files
why3/examples/numeric/multiplication/why3session.xml
2025-01-14 19:48:35 +01:00

680 lines
38 KiB
XML

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE why3session PUBLIC "-//Why3//proof session v5//EN"
"https://www.why3.org/why3session.dtd">
<why3session shape_version="6">
<prover id="1" name="Alt-Ergo" version="2.6.0" timelimit="5" steplimit="0" memlimit="2000"/>
<file format="whyml" proved="true">
<path name=".."/><path name="multiplication.mlw"/>
<theory name="MultiplicationSingle" proved="true">
<goal name="multiplication_errors_basic&#39;vc" expl="VC for multiplication_errors_basic" proved="true">
<transf name="split_vc" proved="true" >
<goal name="multiplication_errors_basic&#39;vc.0" expl="postcondition" proved="true">
<transf name="assert" proved="true" arg1="let t = to_real c in
let t1 = eta *. 0.0 in
let t2 = 1.0 +. eps in
let t3 = to_real a *. to_real b in
let t4 = t3 *. t in
abs (to_real result -. t4)
&lt;=. (((eps +. (((eps +. 0.0) +. (eps *. 0.0)) *. t2)) *. abs t4)
+. ((((((0.0 +. (0.0 *. eps)) *. abs t3) +. ((eta +. t1) *. abs t))
+. t1)
*. t2)
+. eta))">
<goal name="multiplication_errors_basic&#39;vc.0.0" expl="asserted formula" proved="true">
<transf name="assert" proved="true" arg1="abs (to_real result -. ((to_real a *. to_real b) *. to_real c))
&lt;=. (((eps +. (((eps +. 0.0) +. (eps *. 0.0)) *. (1.0 +. eps)))
*. abs ((to_real a *. to_real b) *. to_real c))
+. ((((((0.0 +. (0.0 *. eps)) *. abs (to_real a *. to_real b))
+. ((eta +. (eta *. 0.0)) *. abs (to_real c)))
+. (eta *. 0.0))
*. (1.0 +. eps))
+. eta))">
<goal name="multiplication_errors_basic&#39;vc.0.0.0" expl="asserted formula" proved="true">
<transf name="assert" proved="true" arg1="abs (to_real result -. ((to_real a *. to_real b) *. to_real c))
&lt;=. (((eps +. (((eps +. 0.0) +. (eps *. 0.0)) *. (1.0 +. eps)))
*. (abs (to_real a *. to_real b) *. abs (to_real c)))
+. ((((((0.0 +. (0.0 *. eps)) *. abs (to_real a *. to_real b))
+. ((eta +. (eta *. 0.0)) *. abs (to_real c)))
+. (eta *. 0.0))
*. (1.0 +. eps))
+. eta))">
<goal name="multiplication_errors_basic&#39;vc.0.0.0.0" expl="asserted formula" proved="true">
<transf name="apply" proved="true" arg1="umul_single_error_propagation" arg2="with" arg3="a **. b,c">
<goal name="multiplication_errors_basic&#39;vc.0.0.0.0.0" expl="apply premises" proved="true">
<transf name="assert" proved="true" arg1="abs (to_real (a **. b) -. (to_real a *. to_real b))
&lt;=. ((eps *. abs (to_real a *. to_real b)) +. eta)">
<goal name="multiplication_errors_basic&#39;vc.0.0.0.0.0.0" expl="asserted formula" proved="true">
<proof prover="1"><result status="valid" time="0.105258" steps="1020"/></proof>
</goal>
<goal name="multiplication_errors_basic&#39;vc.0.0.0.0.0.1" expl="apply premises" proved="true">
<proof prover="1"><result status="valid" time="0.042842" steps="141"/></proof>
</goal>
</transf>
</goal>
<goal name="multiplication_errors_basic&#39;vc.0.0.0.0.1" expl="apply premises" proved="true">
<proof prover="1"><result status="valid" time="0.049198" steps="89"/></proof>
</goal>
<goal name="multiplication_errors_basic&#39;vc.0.0.0.0.2" expl="apply premises" proved="true">
<proof prover="1"><result status="valid" time="0.069144" steps="101"/></proof>
</goal>
<goal name="multiplication_errors_basic&#39;vc.0.0.0.0.3" expl="apply premises" proved="true">
<proof prover="1"><result status="valid" time="0.040703" steps="92"/></proof>
</goal>
<goal name="multiplication_errors_basic&#39;vc.0.0.0.0.4" expl="apply premises" proved="true">
<proof prover="1"><result status="valid" time="0.040260" steps="84"/></proof>
</goal>
<goal name="multiplication_errors_basic&#39;vc.0.0.0.0.5" expl="apply premises" proved="true">
<proof prover="1"><result status="valid" time="0.043195" steps="84"/></proof>
</goal>
<goal name="multiplication_errors_basic&#39;vc.0.0.0.0.6" expl="apply premises" proved="true">
<proof prover="1"><result status="valid" time="0.037765" steps="84"/></proof>
</goal>
<goal name="multiplication_errors_basic&#39;vc.0.0.0.0.7" expl="apply premises" proved="true">
<proof prover="1"><result status="valid" time="0.045188" steps="84"/></proof>
</goal>
<goal name="multiplication_errors_basic&#39;vc.0.0.0.0.8" expl="apply premises" proved="true">
<proof prover="1"><result status="valid" time="0.028241" steps="83"/></proof>
</goal>
</transf>
</goal>
<goal name="multiplication_errors_basic&#39;vc.0.0.0.1" expl="asserted formula" proved="true">
<proof prover="1"><result status="valid" time="0.083270" steps="559"/></proof>
</goal>
</transf>
</goal>
<goal name="multiplication_errors_basic&#39;vc.0.0.1" expl="asserted formula" proved="true">
<proof prover="1"><result status="valid" time="0.121663" steps="792"/></proof>
</goal>
</transf>
</goal>
<goal name="multiplication_errors_basic&#39;vc.0.1" expl="postcondition" proved="true">
<proof prover="1"><result status="valid" time="0.070553" steps="414"/></proof>
</goal>
</transf>
</goal>
</transf>
</goal>
<goal name="multiplication_errors&#39;vc" expl="VC for multiplication_errors" proved="true">
<transf name="split_vc" proved="true" >
<goal name="multiplication_errors&#39;vc.0" expl="postcondition" proved="true">
<transf name="assert" proved="true" arg1="let t1 = to_real d in
let t2 = to_real c in
let t8 = 1.0 +. eps in
let t9 = t8 *. eta in
let t10 = eps +. (eps *. t8) in
let t11 = t1 *. (to_real e *. to_real f) in
let t12 = (to_real a *. to_real b) *. t2 in
let t13 = (t9 *. abs t1) +. eta in
let t14 = (t9 *. abs t2) +. eta in
let t15 = t12 *. t11 in
abs (to_real result -. t15)
&lt;=. (((eps +. (((t10 +. t10) +. (t10 *. t10)) *. t8)) *. abs t15)
+. ((((((t13 +. (t13 *. t10)) *. abs t12)
+. ((t14 +. (t14 *. t10)) *. abs t11))
+. (t14 *. t13))
*. t8)
+. eta))">
<goal name="multiplication_errors&#39;vc.0.0" expl="asserted formula" proved="true">
<transf name="assert" proved="true" arg1="abs
(to_real result
-. (((to_real a *. to_real b) *. to_real c)
*. (to_real d *. (to_real e *. to_real f))))
&lt;=. (((eps
+. ((((eps +. (eps *. (1.0 +. eps))) +. (eps +. (eps *. (1.0 +. eps))))
+. ((eps +. (eps *. (1.0 +. eps)))
*. (eps +. (eps *. (1.0 +. eps)))))
*. (1.0 +. eps)))
*. abs
(((to_real a *. to_real b) *. to_real c)
*. (to_real d *. (to_real e *. to_real f))))
+. ((((((((((1.0 +. eps) *. eta) *. abs (to_real d)) +. eta)
+. (((((1.0 +. eps) *. eta) *. abs (to_real d)) +. eta)
*. (eps +. (eps *. (1.0 +. eps)))))
*. abs ((to_real a *. to_real b) *. to_real c))
+. ((((((1.0 +. eps) *. eta) *. abs (to_real c)) +. eta)
+. (((((1.0 +. eps) *. eta) *. abs (to_real c)) +. eta)
*. (eps +. (eps *. (1.0 +. eps)))))
*. abs (to_real d *. (to_real e *. to_real f))))
+. (((((1.0 +. eps) *. eta) *. abs (to_real c)) +. eta)
*. ((((1.0 +. eps) *. eta) *. abs (to_real d)) +. eta)))
*. (1.0 +. eps))
+. eta))">
<goal name="multiplication_errors&#39;vc.0.0.0" expl="asserted formula" proved="true">
<transf name="assert" proved="true" arg1="abs
(to_real result
-. (((to_real a *. to_real b) *. to_real c)
*. (to_real d *. (to_real e *. to_real f))))
&lt;=. (((eps
+. ((((eps +. (eps *. (1.0 +. eps))) +. (eps +. (eps *. (1.0 +. eps))))
+. ((eps +. (eps *. (1.0 +. eps)))
*. (eps +. (eps *. (1.0 +. eps)))))
*. (1.0 +. eps)))
*. (abs ((to_real a *. to_real b) *. to_real c)
*. abs (to_real d *. (to_real e *. to_real f))))
+. ((((((((((1.0 +. eps) *. eta) *. abs (to_real d)) +. eta)
+. (((((1.0 +. eps) *. eta) *. abs (to_real d)) +. eta)
*. (eps +. (eps *. (1.0 +. eps)))))
*. abs ((to_real a *. to_real b) *. to_real c))
+. ((((((1.0 +. eps) *. eta) *. abs (to_real c)) +. eta)
+. (((((1.0 +. eps) *. eta) *. abs (to_real c)) +. eta)
*. (eps +. (eps *. (1.0 +. eps)))))
*. abs (to_real d *. (to_real e *. to_real f))))
+. (((((1.0 +. eps) *. eta) *. abs (to_real c)) +. eta)
*. ((((1.0 +. eps) *. eta) *. abs (to_real d)) +. eta)))
*. (1.0 +. eps))
+. eta))">
<goal name="multiplication_errors&#39;vc.0.0.0.0" expl="asserted formula" proved="true">
<transf name="apply" proved="true" arg1="umul_single_error_propagation" arg2="with" arg3="(a **. b) **. c,d **. (e **. f)">
<goal name="multiplication_errors&#39;vc.0.0.0.0.0" expl="apply premises" proved="true">
<transf name="assert" proved="true" arg1="abs (to_real ((a **. b) **. c) -. ((to_real a *. to_real b) *. to_real c))
&lt;=. (((eps +. (((eps +. 0.0) +. (eps *. 0.0)) *. (1.0 +. eps)))
*. abs ((to_real a *. to_real b) *. to_real c))
+. ((((((0.0 +. (0.0 *. eps)) *. abs (to_real a *. to_real b))
+. ((eta +. (eta *. 0.0)) *. abs (to_real c)))
+. (eta *. 0.0))
*. (1.0 +. eps))
+. eta))">
<goal name="multiplication_errors&#39;vc.0.0.0.0.0.0" expl="asserted formula" proved="true">
<transf name="assert" proved="true" arg1="abs (to_real ((a **. b) **. c) -. ((to_real a *. to_real b) *. to_real c))
&lt;=. (((eps +. (((eps +. 0.0) +. (eps *. 0.0)) *. (1.0 +. eps)))
*. (abs (to_real a *. to_real b) *. abs (to_real c)))
+. ((((((0.0 +. (0.0 *. eps)) *. abs (to_real a *. to_real b))
+. ((eta +. (eta *. 0.0)) *. abs (to_real c)))
+. (eta *. 0.0))
*. (1.0 +. eps))
+. eta))">
<goal name="multiplication_errors&#39;vc.0.0.0.0.0.0.0" expl="asserted formula" proved="true">
<transf name="apply" proved="true" arg1="umul_single_error_propagation" arg2="with" arg3="a **. b,c">
<goal name="multiplication_errors&#39;vc.0.0.0.0.0.0.0.0" expl="apply premises" proved="true">
<transf name="assert" proved="true" arg1="abs (to_real (a **. b) -. (to_real a *. to_real b))
&lt;=. ((eps *. abs (to_real a *. to_real b)) +. eta)">
<goal name="multiplication_errors&#39;vc.0.0.0.0.0.0.0.0.0" expl="asserted formula" proved="true">
<proof prover="1"><result status="valid" time="0.107169" steps="1020"/></proof>
</goal>
<goal name="multiplication_errors&#39;vc.0.0.0.0.0.0.0.0.1" expl="apply premises" proved="true">
<proof prover="1"><result status="valid" time="0.043141" steps="141"/></proof>
</goal>
</transf>
</goal>
<goal name="multiplication_errors&#39;vc.0.0.0.0.0.0.0.1" expl="apply premises" proved="true">
<proof prover="1"><result status="valid" time="0.051137" steps="89"/></proof>
</goal>
<goal name="multiplication_errors&#39;vc.0.0.0.0.0.0.0.2" expl="apply premises" proved="true">
<proof prover="1"><result status="valid" time="0.054969" steps="101"/></proof>
</goal>
<goal name="multiplication_errors&#39;vc.0.0.0.0.0.0.0.3" expl="apply premises" proved="true">
<proof prover="1"><result status="valid" time="0.059122" steps="92"/></proof>
</goal>
<goal name="multiplication_errors&#39;vc.0.0.0.0.0.0.0.4" expl="apply premises" proved="true">
<proof prover="1"><result status="valid" time="0.047284" steps="84"/></proof>
</goal>
<goal name="multiplication_errors&#39;vc.0.0.0.0.0.0.0.5" expl="apply premises" proved="true">
<proof prover="1"><result status="valid" time="0.056552" steps="84"/></proof>
</goal>
<goal name="multiplication_errors&#39;vc.0.0.0.0.0.0.0.6" expl="apply premises" proved="true">
<proof prover="1"><result status="valid" time="0.045509" steps="84"/></proof>
</goal>
<goal name="multiplication_errors&#39;vc.0.0.0.0.0.0.0.7" expl="apply premises" proved="true">
<proof prover="1"><result status="valid" time="0.063405" steps="84"/></proof>
</goal>
<goal name="multiplication_errors&#39;vc.0.0.0.0.0.0.0.8" expl="apply premises" proved="true">
<proof prover="1"><result status="valid" time="0.042096" steps="83"/></proof>
</goal>
</transf>
</goal>
<goal name="multiplication_errors&#39;vc.0.0.0.0.0.0.1" expl="asserted formula" proved="true">
<proof prover="1"><result status="valid" time="0.134119" steps="559"/></proof>
</goal>
</transf>
</goal>
<goal name="multiplication_errors&#39;vc.0.0.0.0.0.1" expl="apply premises" proved="true">
<proof prover="1"><result status="valid" time="0.100312" steps="239"/></proof>
</goal>
</transf>
</goal>
<goal name="multiplication_errors&#39;vc.0.0.0.0.1" expl="apply premises" proved="true">
<transf name="assert" proved="true" arg1="abs (to_real (d **. (e **. f)) -. (to_real d *. (to_real e *. to_real f)))
&lt;=. (((eps +. (((0.0 +. eps) +. (0.0 *. eps)) *. (1.0 +. eps)))
*. abs (to_real d *. (to_real e *. to_real f)))
+. ((((((eta +. (eta *. 0.0)) *. abs (to_real d))
+. ((0.0 +. (0.0 *. eps)) *. abs (to_real e *. to_real f)))
+. (0.0 *. eta))
*. (1.0 +. eps))
+. eta))">
<goal name="multiplication_errors&#39;vc.0.0.0.0.1.0" expl="asserted formula" proved="true">
<transf name="assert" proved="true" arg1="abs (to_real (d **. (e **. f)) -. (to_real d *. (to_real e *. to_real f)))
&lt;=. (((eps +. (((0.0 +. eps) +. (0.0 *. eps)) *. (1.0 +. eps)))
*. (abs (to_real d) *. abs (to_real e *. to_real f)))
+. ((((((eta +. (eta *. 0.0)) *. abs (to_real d))
+. ((0.0 +. (0.0 *. eps)) *. abs (to_real e *. to_real f)))
+. (0.0 *. eta))
*. (1.0 +. eps))
+. eta))">
<goal name="multiplication_errors&#39;vc.0.0.0.0.1.0.0" expl="asserted formula" proved="true">
<transf name="apply" proved="true" arg1="umul_single_error_propagation" arg2="with" arg3="d,e **. f">
<goal name="multiplication_errors&#39;vc.0.0.0.0.1.0.0.0" expl="apply premises" proved="true">
<proof prover="1"><result status="valid" time="0.041165" steps="89"/></proof>
</goal>
<goal name="multiplication_errors&#39;vc.0.0.0.0.1.0.0.1" expl="apply premises" proved="true">
<transf name="assert" proved="true" arg1="abs (to_real (e **. f) -. (to_real e *. to_real f))
&lt;=. ((eps *. abs (to_real e *. to_real f)) +. eta)">
<goal name="multiplication_errors&#39;vc.0.0.0.0.1.0.0.1.0" expl="asserted formula" proved="true">
<proof prover="1"><result status="valid" time="0.109763" steps="1020"/></proof>
</goal>
<goal name="multiplication_errors&#39;vc.0.0.0.0.1.0.0.1.1" expl="apply premises" proved="true">
<proof prover="1"><result status="valid" time="0.061415" steps="141"/></proof>
</goal>
</transf>
</goal>
<goal name="multiplication_errors&#39;vc.0.0.0.0.1.0.0.2" expl="apply premises" proved="true">
<proof prover="1"><result status="valid" time="0.053984" steps="92"/></proof>
</goal>
<goal name="multiplication_errors&#39;vc.0.0.0.0.1.0.0.3" expl="apply premises" proved="true">
<proof prover="1"><result status="valid" time="0.072308" steps="101"/></proof>
</goal>
<goal name="multiplication_errors&#39;vc.0.0.0.0.1.0.0.4" expl="apply premises" proved="true">
<proof prover="1"><result status="valid" time="0.040001" steps="84"/></proof>
</goal>
<goal name="multiplication_errors&#39;vc.0.0.0.0.1.0.0.5" expl="apply premises" proved="true">
<proof prover="1"><result status="valid" time="0.037152" steps="84"/></proof>
</goal>
<goal name="multiplication_errors&#39;vc.0.0.0.0.1.0.0.6" expl="apply premises" proved="true">
<proof prover="1"><result status="valid" time="0.065069" steps="84"/></proof>
</goal>
<goal name="multiplication_errors&#39;vc.0.0.0.0.1.0.0.7" expl="apply premises" proved="true">
<proof prover="1"><result status="valid" time="0.067950" steps="84"/></proof>
</goal>
<goal name="multiplication_errors&#39;vc.0.0.0.0.1.0.0.8" expl="apply premises" proved="true">
<proof prover="1"><result status="valid" time="0.071104" steps="83"/></proof>
</goal>
</transf>
</goal>
<goal name="multiplication_errors&#39;vc.0.0.0.0.1.0.1" expl="asserted formula" proved="true">
<proof prover="1"><result status="valid" time="0.100635" steps="569"/></proof>
</goal>
</transf>
</goal>
<goal name="multiplication_errors&#39;vc.0.0.0.0.1.1" expl="apply premises" proved="true">
<proof prover="1"><result status="valid" time="0.072260" steps="239"/></proof>
</goal>
</transf>
</goal>
<goal name="multiplication_errors&#39;vc.0.0.0.0.2" expl="apply premises" proved="true">
<proof prover="1"><result status="valid" time="0.050077" steps="102"/></proof>
</goal>
<goal name="multiplication_errors&#39;vc.0.0.0.0.3" expl="apply premises" proved="true">
<proof prover="1"><result status="valid" time="0.047419" steps="102"/></proof>
</goal>
<goal name="multiplication_errors&#39;vc.0.0.0.0.4" expl="apply premises" proved="true">
<proof prover="1"><result status="valid" time="0.045738" steps="84"/></proof>
</goal>
<goal name="multiplication_errors&#39;vc.0.0.0.0.5" expl="apply premises" proved="true">
<proof prover="1"><result status="valid" time="0.042283" steps="84"/></proof>
</goal>
<goal name="multiplication_errors&#39;vc.0.0.0.0.6" expl="apply premises" proved="true">
<proof prover="1"><result status="valid" time="0.040666" steps="91"/></proof>
</goal>
<goal name="multiplication_errors&#39;vc.0.0.0.0.7" expl="apply premises" proved="true">
<proof prover="1"><result status="valid" time="0.037386" steps="91"/></proof>
</goal>
<goal name="multiplication_errors&#39;vc.0.0.0.0.8" expl="apply premises" proved="true">
<proof prover="1"><result status="valid" time="0.036885" steps="83"/></proof>
</goal>
</transf>
</goal>
<goal name="multiplication_errors&#39;vc.0.0.0.1" expl="asserted formula" proved="true">
<proof prover="1"><result status="valid" time="2.621282" steps="5379"/></proof>
</goal>
</transf>
</goal>
<goal name="multiplication_errors&#39;vc.0.0.1" expl="asserted formula" proved="true">
<proof prover="1"><result status="valid" time="2.471189" steps="4574"/></proof>
</goal>
</transf>
</goal>
<goal name="multiplication_errors&#39;vc.0.1" expl="postcondition" proved="true">
<proof prover="1"><result status="valid" time="1.890650" steps="3830"/></proof>
</goal>
</transf>
</goal>
</transf>
</goal>
</theory>
<theory name="MultiplicationDouble" proved="true">
<goal name="multiplication_errors_basic&#39;vc" expl="VC for multiplication_errors_basic" proved="true">
<transf name="split_vc" proved="true" >
<goal name="multiplication_errors_basic&#39;vc.0" expl="postcondition" proved="true">
<transf name="assert" proved="true" arg1="let t = to_real c in
let t1 = eta *. 0.0 in
let t2 = 1.0 +. eps in
let t3 = to_real a *. to_real b in
let t4 = t3 *. t in
abs (to_real result -. t4)
&lt;=. (((eps +. (((eps +. 0.0) +. (eps *. 0.0)) *. t2)) *. abs t4)
+. ((((((0.0 +. (0.0 *. eps)) *. abs t3) +. ((eta +. t1) *. abs t))
+. t1)
*. t2)
+. eta))">
<goal name="multiplication_errors_basic&#39;vc.0.0" expl="asserted formula" proved="true">
<transf name="assert" proved="true" arg1="abs (to_real result -. ((to_real a *. to_real b) *. to_real c))
&lt;=. (((eps +. (((eps +. 0.0) +. (eps *. 0.0)) *. (1.0 +. eps)))
*. abs ((to_real a *. to_real b) *. to_real c))
+. ((((((0.0 +. (0.0 *. eps)) *. abs (to_real a *. to_real b))
+. ((eta +. (eta *. 0.0)) *. abs (to_real c)))
+. (eta *. 0.0))
*. (1.0 +. eps))
+. eta))">
<goal name="multiplication_errors_basic&#39;vc.0.0.0" expl="asserted formula" proved="true">
<transf name="assert" proved="true" arg1="abs (to_real result -. ((to_real a *. to_real b) *. to_real c))
&lt;=. (((eps +. (((eps +. 0.0) +. (eps *. 0.0)) *. (1.0 +. eps)))
*. (abs (to_real a *. to_real b) *. abs (to_real c)))
+. ((((((0.0 +. (0.0 *. eps)) *. abs (to_real a *. to_real b))
+. ((eta +. (eta *. 0.0)) *. abs (to_real c)))
+. (eta *. 0.0))
*. (1.0 +. eps))
+. eta))">
<goal name="multiplication_errors_basic&#39;vc.0.0.0.0" expl="asserted formula" proved="true">
<transf name="apply" proved="true" arg1="umul_double_error_propagation" arg2="with" arg3="a **. b,c">
<goal name="multiplication_errors_basic&#39;vc.0.0.0.0.0" expl="apply premises" proved="true">
<transf name="assert" proved="true" arg1="abs (to_real (a **. b) -. (to_real a *. to_real b))
&lt;=. ((eps *. abs (to_real a *. to_real b)) +. eta)">
<goal name="multiplication_errors_basic&#39;vc.0.0.0.0.0.0" expl="asserted formula" proved="true">
<proof prover="1"><result status="valid" time="0.110392" steps="1020"/></proof>
</goal>
<goal name="multiplication_errors_basic&#39;vc.0.0.0.0.0.1" expl="apply premises" proved="true">
<proof prover="1"><result status="valid" time="0.043614" steps="141"/></proof>
</goal>
</transf>
</goal>
<goal name="multiplication_errors_basic&#39;vc.0.0.0.0.1" expl="apply premises" proved="true">
<proof prover="1"><result status="valid" time="0.064864" steps="89"/></proof>
</goal>
<goal name="multiplication_errors_basic&#39;vc.0.0.0.0.2" expl="apply premises" proved="true">
<proof prover="1"><result status="valid" time="0.055980" steps="101"/></proof>
</goal>
<goal name="multiplication_errors_basic&#39;vc.0.0.0.0.3" expl="apply premises" proved="true">
<proof prover="1"><result status="valid" time="0.062339" steps="92"/></proof>
</goal>
<goal name="multiplication_errors_basic&#39;vc.0.0.0.0.4" expl="apply premises" proved="true">
<proof prover="1"><result status="valid" time="0.044936" steps="84"/></proof>
</goal>
<goal name="multiplication_errors_basic&#39;vc.0.0.0.0.5" expl="apply premises" proved="true">
<proof prover="1"><result status="valid" time="0.042066" steps="84"/></proof>
</goal>
<goal name="multiplication_errors_basic&#39;vc.0.0.0.0.6" expl="apply premises" proved="true">
<proof prover="1"><result status="valid" time="0.044831" steps="84"/></proof>
</goal>
<goal name="multiplication_errors_basic&#39;vc.0.0.0.0.7" expl="apply premises" proved="true">
<proof prover="1"><result status="valid" time="0.030915" steps="84"/></proof>
</goal>
<goal name="multiplication_errors_basic&#39;vc.0.0.0.0.8" expl="apply premises" proved="true">
<proof prover="1"><result status="valid" time="0.042523" steps="83"/></proof>
</goal>
</transf>
</goal>
<goal name="multiplication_errors_basic&#39;vc.0.0.0.1" expl="asserted formula" proved="true">
<proof prover="1"><result status="valid" time="0.078971" steps="559"/></proof>
</goal>
</transf>
</goal>
<goal name="multiplication_errors_basic&#39;vc.0.0.1" expl="asserted formula" proved="true">
<proof prover="1"><result status="valid" time="0.086812" steps="792"/></proof>
</goal>
</transf>
</goal>
<goal name="multiplication_errors_basic&#39;vc.0.1" expl="postcondition" proved="true">
<proof prover="1"><result status="valid" time="0.075224" steps="414"/></proof>
</goal>
</transf>
</goal>
</transf>
</goal>
<goal name="multiplication_errors&#39;vc" expl="VC for multiplication_errors" proved="true">
<transf name="split_vc" proved="true" >
<goal name="multiplication_errors&#39;vc.0" expl="postcondition" proved="true">
<transf name="assert" proved="true" arg1="let t1 = to_real d in
let t2 = to_real c in
let t8 = 1.0 +. eps in
let t9 = t8 *. eta in
let t10 = eps +. (eps *. t8) in
let t11 = t1 *. (to_real e *. to_real f) in
let t12 = (to_real a *. to_real b) *. t2 in
let t13 = (t9 *. abs t1) +. eta in
let t14 = (t9 *. abs t2) +. eta in
let t15 = t12 *. t11 in
abs (to_real result -. t15)
&lt;=. (((eps +. (((t10 +. t10) +. (t10 *. t10)) *. t8)) *. abs t15)
+. ((((((t13 +. (t13 *. t10)) *. abs t12)
+. ((t14 +. (t14 *. t10)) *. abs t11))
+. (t14 *. t13))
*. t8)
+. eta))">
<goal name="multiplication_errors&#39;vc.0.0" expl="asserted formula" proved="true">
<transf name="assert" proved="true" arg1="abs
(to_real result
-. (((to_real a *. to_real b) *. to_real c)
*. (to_real d *. (to_real e *. to_real f))))
&lt;=. (((eps
+. ((((eps +. (eps *. (1.0 +. eps))) +. (eps +. (eps *. (1.0 +. eps))))
+. ((eps +. (eps *. (1.0 +. eps)))
*. (eps +. (eps *. (1.0 +. eps)))))
*. (1.0 +. eps)))
*. abs
(((to_real a *. to_real b) *. to_real c)
*. (to_real d *. (to_real e *. to_real f))))
+. ((((((((((1.0 +. eps) *. eta) *. abs (to_real d)) +. eta)
+. (((((1.0 +. eps) *. eta) *. abs (to_real d)) +. eta)
*. (eps +. (eps *. (1.0 +. eps)))))
*. abs ((to_real a *. to_real b) *. to_real c))
+. ((((((1.0 +. eps) *. eta) *. abs (to_real c)) +. eta)
+. (((((1.0 +. eps) *. eta) *. abs (to_real c)) +. eta)
*. (eps +. (eps *. (1.0 +. eps)))))
*. abs (to_real d *. (to_real e *. to_real f))))
+. (((((1.0 +. eps) *. eta) *. abs (to_real c)) +. eta)
*. ((((1.0 +. eps) *. eta) *. abs (to_real d)) +. eta)))
*. (1.0 +. eps))
+. eta))">
<goal name="multiplication_errors&#39;vc.0.0.0" expl="asserted formula" proved="true">
<transf name="assert" proved="true" arg1="abs
(to_real result
-. (((to_real a *. to_real b) *. to_real c)
*. (to_real d *. (to_real e *. to_real f))))
&lt;=. (((eps
+. ((((eps +. (eps *. (1.0 +. eps))) +. (eps +. (eps *. (1.0 +. eps))))
+. ((eps +. (eps *. (1.0 +. eps)))
*. (eps +. (eps *. (1.0 +. eps)))))
*. (1.0 +. eps)))
*. (abs ((to_real a *. to_real b) *. to_real c)
*. abs (to_real d *. (to_real e *. to_real f))))
+. ((((((((((1.0 +. eps) *. eta) *. abs (to_real d)) +. eta)
+. (((((1.0 +. eps) *. eta) *. abs (to_real d)) +. eta)
*. (eps +. (eps *. (1.0 +. eps)))))
*. abs ((to_real a *. to_real b) *. to_real c))
+. ((((((1.0 +. eps) *. eta) *. abs (to_real c)) +. eta)
+. (((((1.0 +. eps) *. eta) *. abs (to_real c)) +. eta)
*. (eps +. (eps *. (1.0 +. eps)))))
*. abs (to_real d *. (to_real e *. to_real f))))
+. (((((1.0 +. eps) *. eta) *. abs (to_real c)) +. eta)
*. ((((1.0 +. eps) *. eta) *. abs (to_real d)) +. eta)))
*. (1.0 +. eps))
+. eta))">
<goal name="multiplication_errors&#39;vc.0.0.0.0" expl="asserted formula" proved="true">
<transf name="apply" proved="true" arg1="umul_double_error_propagation" arg2="with" arg3="(a **. b) **. c,d **. (e **. f)">
<goal name="multiplication_errors&#39;vc.0.0.0.0.0" expl="apply premises" proved="true">
<transf name="assert" proved="true" arg1="abs (to_real ((a **. b) **. c) -. ((to_real a *. to_real b) *. to_real c))
&lt;=. (((eps +. (((eps +. 0.0) +. (eps *. 0.0)) *. (1.0 +. eps)))
*. abs ((to_real a *. to_real b) *. to_real c))
+. ((((((0.0 +. (0.0 *. eps)) *. abs (to_real a *. to_real b))
+. ((eta +. (eta *. 0.0)) *. abs (to_real c)))
+. (eta *. 0.0))
*. (1.0 +. eps))
+. eta))">
<goal name="multiplication_errors&#39;vc.0.0.0.0.0.0" expl="asserted formula" proved="true">
<transf name="assert" proved="true" arg1="abs (to_real ((a **. b) **. c) -. ((to_real a *. to_real b) *. to_real c))
&lt;=. (((eps +. (((eps +. 0.0) +. (eps *. 0.0)) *. (1.0 +. eps)))
*. (abs (to_real a *. to_real b) *. abs (to_real c)))
+. ((((((0.0 +. (0.0 *. eps)) *. abs (to_real a *. to_real b))
+. ((eta +. (eta *. 0.0)) *. abs (to_real c)))
+. (eta *. 0.0))
*. (1.0 +. eps))
+. eta))">
<goal name="multiplication_errors&#39;vc.0.0.0.0.0.0.0" expl="asserted formula" proved="true">
<transf name="apply" proved="true" arg1="umul_double_error_propagation" arg2="with" arg3="a **. b,c">
<goal name="multiplication_errors&#39;vc.0.0.0.0.0.0.0.0" expl="apply premises" proved="true">
<transf name="assert" proved="true" arg1="abs (to_real (a **. b) -. (to_real a *. to_real b))
&lt;=. ((eps *. abs (to_real a *. to_real b)) +. eta)">
<goal name="multiplication_errors&#39;vc.0.0.0.0.0.0.0.0.0" expl="asserted formula" proved="true">
<proof prover="1"><result status="valid" time="0.111890" steps="1020"/></proof>
</goal>
<goal name="multiplication_errors&#39;vc.0.0.0.0.0.0.0.0.1" expl="apply premises" proved="true">
<proof prover="1"><result status="valid" time="0.065520" steps="141"/></proof>
</goal>
</transf>
</goal>
<goal name="multiplication_errors&#39;vc.0.0.0.0.0.0.0.1" expl="apply premises" proved="true">
<proof prover="1"><result status="valid" time="0.068939" steps="89"/></proof>
</goal>
<goal name="multiplication_errors&#39;vc.0.0.0.0.0.0.0.2" expl="apply premises" proved="true">
<proof prover="1"><result status="valid" time="0.053268" steps="101"/></proof>
</goal>
<goal name="multiplication_errors&#39;vc.0.0.0.0.0.0.0.3" expl="apply premises" proved="true">
<proof prover="1"><result status="valid" time="0.067821" steps="92"/></proof>
</goal>
<goal name="multiplication_errors&#39;vc.0.0.0.0.0.0.0.4" expl="apply premises" proved="true">
<proof prover="1"><result status="valid" time="0.069933" steps="84"/></proof>
</goal>
<goal name="multiplication_errors&#39;vc.0.0.0.0.0.0.0.5" expl="apply premises" proved="true">
<proof prover="1"><result status="valid" time="0.044568" steps="84"/></proof>
</goal>
<goal name="multiplication_errors&#39;vc.0.0.0.0.0.0.0.6" expl="apply premises" proved="true">
<proof prover="1"><result status="valid" time="0.050097" steps="84"/></proof>
</goal>
<goal name="multiplication_errors&#39;vc.0.0.0.0.0.0.0.7" expl="apply premises" proved="true">
<proof prover="1"><result status="valid" time="0.051977" steps="84"/></proof>
</goal>
<goal name="multiplication_errors&#39;vc.0.0.0.0.0.0.0.8" expl="apply premises" proved="true">
<proof prover="1"><result status="valid" time="0.044966" steps="83"/></proof>
</goal>
</transf>
</goal>
<goal name="multiplication_errors&#39;vc.0.0.0.0.0.0.1" expl="asserted formula" proved="true">
<proof prover="1"><result status="valid" time="0.100255" steps="559"/></proof>
</goal>
</transf>
</goal>
<goal name="multiplication_errors&#39;vc.0.0.0.0.0.1" expl="apply premises" proved="true">
<proof prover="1"><result status="valid" time="0.073698" steps="239"/></proof>
</goal>
</transf>
</goal>
<goal name="multiplication_errors&#39;vc.0.0.0.0.1" expl="apply premises" proved="true">
<transf name="assert" proved="true" arg1="abs (to_real (d **. (e **. f)) -. (to_real d *. (to_real e *. to_real f)))
&lt;=. (((eps +. (((0.0 +. eps) +. (0.0 *. eps)) *. (1.0 +. eps)))
*. abs (to_real d *. (to_real e *. to_real f)))
+. ((((((eta +. (eta *. 0.0)) *. abs (to_real d))
+. ((0.0 +. (0.0 *. eps)) *. abs (to_real e *. to_real f)))
+. (0.0 *. eta))
*. (1.0 +. eps))
+. eta))">
<goal name="multiplication_errors&#39;vc.0.0.0.0.1.0" expl="asserted formula" proved="true">
<transf name="assert" proved="true" arg1="abs (to_real (d **. (e **. f)) -. (to_real d *. (to_real e *. to_real f)))
&lt;=. (((eps +. (((0.0 +. eps) +. (0.0 *. eps)) *. (1.0 +. eps)))
*. (abs (to_real d) *. abs (to_real e *. to_real f)))
+. ((((((eta +. (eta *. 0.0)) *. abs (to_real d))
+. ((0.0 +. (0.0 *. eps)) *. abs (to_real e *. to_real f)))
+. (0.0 *. eta))
*. (1.0 +. eps))
+. eta))">
<goal name="multiplication_errors&#39;vc.0.0.0.0.1.0.0" expl="asserted formula" proved="true">
<transf name="apply" proved="true" arg1="umul_double_error_propagation" arg2="with" arg3="d,e **. f">
<goal name="multiplication_errors&#39;vc.0.0.0.0.1.0.0.0" expl="apply premises" proved="true">
<proof prover="1"><result status="valid" time="0.066678" steps="89"/></proof>
</goal>
<goal name="multiplication_errors&#39;vc.0.0.0.0.1.0.0.1" expl="apply premises" proved="true">
<transf name="assert" proved="true" arg1="abs (to_real (e **. f) -. (to_real e *. to_real f))
&lt;=. ((eps *. abs (to_real e *. to_real f)) +. eta)">
<goal name="multiplication_errors&#39;vc.0.0.0.0.1.0.0.1.0" expl="asserted formula" proved="true">
<proof prover="1"><result status="valid" time="0.149677" steps="1020"/></proof>
</goal>
<goal name="multiplication_errors&#39;vc.0.0.0.0.1.0.0.1.1" expl="apply premises" proved="true">
<proof prover="1"><result status="valid" time="0.059920" steps="141"/></proof>
</goal>
</transf>
</goal>
<goal name="multiplication_errors&#39;vc.0.0.0.0.1.0.0.2" expl="apply premises" proved="true">
<proof prover="1"><result status="valid" time="0.045417" steps="92"/></proof>
</goal>
<goal name="multiplication_errors&#39;vc.0.0.0.0.1.0.0.3" expl="apply premises" proved="true">
<proof prover="1"><result status="valid" time="0.056132" steps="101"/></proof>
</goal>
<goal name="multiplication_errors&#39;vc.0.0.0.0.1.0.0.4" expl="apply premises" proved="true">
<proof prover="1"><result status="valid" time="0.037990" steps="84"/></proof>
</goal>
<goal name="multiplication_errors&#39;vc.0.0.0.0.1.0.0.5" expl="apply premises" proved="true">
<proof prover="1"><result status="valid" time="0.042664" steps="84"/></proof>
</goal>
<goal name="multiplication_errors&#39;vc.0.0.0.0.1.0.0.6" expl="apply premises" proved="true">
<proof prover="1"><result status="valid" time="0.053716" steps="84"/></proof>
</goal>
<goal name="multiplication_errors&#39;vc.0.0.0.0.1.0.0.7" expl="apply premises" proved="true">
<proof prover="1"><result status="valid" time="0.040140" steps="84"/></proof>
</goal>
<goal name="multiplication_errors&#39;vc.0.0.0.0.1.0.0.8" expl="apply premises" proved="true">
<proof prover="1"><result status="valid" time="0.041696" steps="83"/></proof>
</goal>
</transf>
</goal>
<goal name="multiplication_errors&#39;vc.0.0.0.0.1.0.1" expl="asserted formula" proved="true">
<proof prover="1"><result status="valid" time="0.109968" steps="569"/></proof>
</goal>
</transf>
</goal>
<goal name="multiplication_errors&#39;vc.0.0.0.0.1.1" expl="apply premises" proved="true">
<proof prover="1"><result status="valid" time="0.070900" steps="239"/></proof>
</goal>
</transf>
</goal>
<goal name="multiplication_errors&#39;vc.0.0.0.0.2" expl="apply premises" proved="true">
<proof prover="1"><result status="valid" time="0.069181" steps="102"/></proof>
</goal>
<goal name="multiplication_errors&#39;vc.0.0.0.0.3" expl="apply premises" proved="true">
<proof prover="1"><result status="valid" time="0.064175" steps="102"/></proof>
</goal>
<goal name="multiplication_errors&#39;vc.0.0.0.0.4" expl="apply premises" proved="true">
<proof prover="1"><result status="valid" time="0.050132" steps="84"/></proof>
</goal>
<goal name="multiplication_errors&#39;vc.0.0.0.0.5" expl="apply premises" proved="true">
<proof prover="1"><result status="valid" time="0.058196" steps="84"/></proof>
</goal>
<goal name="multiplication_errors&#39;vc.0.0.0.0.6" expl="apply premises" proved="true">
<proof prover="1"><result status="valid" time="0.071636" steps="91"/></proof>
</goal>
<goal name="multiplication_errors&#39;vc.0.0.0.0.7" expl="apply premises" proved="true">
<proof prover="1"><result status="valid" time="0.047329" steps="91"/></proof>
</goal>
<goal name="multiplication_errors&#39;vc.0.0.0.0.8" expl="apply premises" proved="true">
<proof prover="1"><result status="valid" time="0.054859" steps="83"/></proof>
</goal>
</transf>
</goal>
<goal name="multiplication_errors&#39;vc.0.0.0.1" expl="asserted formula" proved="true">
<proof prover="1"><result status="valid" time="3.022375" steps="5329"/></proof>
</goal>
</transf>
</goal>
<goal name="multiplication_errors&#39;vc.0.0.1" expl="asserted formula" proved="true">
<proof prover="1"><result status="valid" time="3.378756" steps="5409"/></proof>
</goal>
</transf>
</goal>
<goal name="multiplication_errors&#39;vc.0.1" expl="postcondition" proved="true">
<proof prover="1"><result status="valid" time="2.093901" steps="3830"/></proof>
</goal>
</transf>
</goal>
</transf>
</goal>
</theory>
</file>
</why3session>