1 <?xml version="1.0" encoding="UTF-8"?>
2 <!DOCTYPE why3session PUBLIC "-//Why3//proof session v5//EN"
3 "https://www.why3.org/why3session.dtd">
4 <why3session shape_version="6">
5 <prover id="2" name="Alt-Ergo" version="2.5.4" alternative="FPA" timelimit="5" steplimit="0" memlimit="2000"/>
6 <file format="whyml" proved="true">
7 <path name=".."/><path name="exp_log.mlw"/>
8 <theory name="ExpLogSingle" proved="true">
9 <goal name="example1'vc" expl="VC for example1" proved="true">
10 <transf name="split_vc" proved="true" >
11 <goal name="example1'vc.0" expl="precondition" proved="true">
12 <proof prover="2"><result status="valid" time="0.052160" steps="871"/></proof>
14 <goal name="example1'vc.1" expl="precondition" proved="true">
15 <proof prover="2"><result status="valid" time="0.090134" steps="1034"/></proof>
17 <goal name="example1'vc.2" expl="postcondition" proved="true">
18 <transf name="assert" proved="true" arg1="let t = log (exp (to_real y)) in
19 let t1 = log (exp (to_real x)) in
21 ((1.0 +. eps) +. log_error)
22 *. ((-. log (1.0 -. exp_error)) *. (1.0 +. log_error))
24 abs (to_real result -. (t1 +. t))
25 <=. ((((log_error +. log_error) +. eps) *. (abs t1 +. abs t)) +. (t2 +. t2))">
26 <goal name="example1'vc.2.0" expl="asserted formula" proved="true">
27 <transf name="assert" proved="true" arg1="abs (to_real result -. (log (exp (to_real x)) +. log (exp (to_real y))))
28 <=. ((((log_error +. log_error) +. eps)
29 *. (abs (log (exp (to_real x))) +. abs (log (exp (to_real y)))))
30 +. ((((1.0 +. eps) +. log_error)
31 *. ((-. log (1.0 -. exp_error)) *. (1.0 +. log_error)))
32 +. (((1.0 +. eps) +. log_error)
33 *. ((-. log (1.0 -. exp_error)) *. (1.0 +. log_error)))))">
34 <goal name="example1'vc.2.0.0" expl="asserted formula" proved="true">
35 <transf name="apply" proved="true" arg1="uadd_single_error_propagation" arg2="with" arg3="log_approx (exp_approx x),log_approx (exp_approx y)">
36 <goal name="example1'vc.2.0.0.0" expl="apply premises" proved="true">
37 <transf name="assert" proved="true" arg1="abs (to_real (log_approx (exp_approx x)) -. log (exp (to_real x)))
38 <=. ((abs (log (exp (to_real x))) *. log_error)
39 +. ((-. log (1.0 -. exp_error)) *. (1.0 +. log_error)))">
40 <goal name="example1'vc.2.0.0.0.0" expl="asserted formula" proved="true">
41 <transf name="assert" proved="true" arg1="abs (to_real (log_approx (exp_approx x)) -. log (exp (to_real x)))
42 <=. ((log_error *. abs (log (exp (to_real x))))
45 -. (((exp_error *. exp (to_real x)) +. 0.0) /. exp (to_real x))))
46 *. (1.0 +. log_error))
48 <goal name="example1'vc.2.0.0.0.0.0" expl="asserted formula" proved="true">
49 <transf name="assert" proved="true" arg1="abs
50 (to_real ((fun (y0:usingle) -> log_approx y0) @ exp_approx x)
51 -. log (exp (to_real x)))
52 <=. ((log_error *. abs (log (exp (to_real x))))
55 -. (((exp_error *. exp (to_real x)) +. 0.0) /. exp (to_real x))))
56 *. (1.0 +. log_error))
58 <goal name="example1'vc.2.0.0.0.0.0.0" expl="asserted formula" proved="true">
59 <transf name="apply" proved="true" arg1="log_single_error_propagation">
60 <goal name="example1'vc.2.0.0.0.0.0.0.0" expl="apply premises" proved="true">
61 <proof prover="2"><result status="valid" time="0.053633" steps="108"/></proof>
63 <goal name="example1'vc.2.0.0.0.0.0.0.1" expl="apply premises" proved="true">
64 <proof prover="2"><result status="valid" time="0.256933" steps="1738"/></proof>
66 <goal name="example1'vc.2.0.0.0.0.0.0.2" expl="apply premises" proved="true">
67 <proof prover="2"><result status="valid" time="0.119913" steps="956"/></proof>
69 <goal name="example1'vc.2.0.0.0.0.0.0.3" expl="apply premises" proved="true">
70 <proof prover="2"><result status="valid" time="0.265578" steps="1096"/></proof>
72 <goal name="example1'vc.2.0.0.0.0.0.0.4" expl="apply premises" proved="true">
73 <proof prover="2"><result status="valid" time="0.048327" steps="103"/></proof>
77 <goal name="example1'vc.2.0.0.0.0.0.1" expl="asserted formula" proved="true">
78 <proof prover="2"><result status="valid" time="0.510193" steps="2760"/></proof>
82 <goal name="example1'vc.2.0.0.0.0.1" expl="asserted formula" proved="true">
83 <proof prover="2"><result status="valid" time="0.538622" steps="4518"/></proof>
87 <goal name="example1'vc.2.0.0.0.1" expl="apply premises" proved="true">
88 <proof prover="2"><result status="valid" time="0.070726" steps="134"/></proof>
92 <goal name="example1'vc.2.0.0.1" expl="apply premises" proved="true">
93 <transf name="assert" proved="true" arg1="abs (to_real (log_approx (exp_approx y)) -. log (exp (to_real y)))
94 <=. ((abs (log (exp (to_real y))) *. log_error)
95 +. ((-. log (1.0 -. exp_error)) *. (1.0 +. log_error)))">
96 <goal name="example1'vc.2.0.0.1.0" expl="asserted formula" proved="true">
97 <transf name="assert" proved="true" arg1="abs (to_real (log_approx (exp_approx y)) -. log (exp (to_real y)))
98 <=. ((log_error *. abs (log (exp (to_real y))))
101 -. (((exp_error *. exp (to_real y)) +. 0.0) /. exp (to_real y))))
102 *. (1.0 +. log_error))
104 <goal name="example1'vc.2.0.0.1.0.0" expl="asserted formula" proved="true">
105 <transf name="assert" proved="true" arg1="abs
106 (to_real ((fun (y0:usingle) -> log_approx y0) @ exp_approx y)
107 -. log (exp (to_real y)))
108 <=. ((log_error *. abs (log (exp (to_real y))))
111 -. (((exp_error *. exp (to_real y)) +. 0.0) /. exp (to_real y))))
112 *. (1.0 +. log_error))
114 <goal name="example1'vc.2.0.0.1.0.0.0" expl="asserted formula" proved="true">
115 <transf name="apply" proved="true" arg1="log_single_error_propagation">
116 <goal name="example1'vc.2.0.0.1.0.0.0.0" expl="apply premises" proved="true">
117 <proof prover="2"><result status="valid" time="0.063878" steps="108"/></proof>
119 <goal name="example1'vc.2.0.0.1.0.0.0.1" expl="apply premises" proved="true">
120 <proof prover="2"><result status="valid" time="0.351352" steps="1764"/></proof>
122 <goal name="example1'vc.2.0.0.1.0.0.0.2" expl="apply premises" proved="true">
123 <proof prover="2"><result status="valid" time="0.109382" steps="952"/></proof>
125 <goal name="example1'vc.2.0.0.1.0.0.0.3" expl="apply premises" proved="true">
126 <proof prover="2"><result status="valid" time="0.172776" steps="1044"/></proof>
128 <goal name="example1'vc.2.0.0.1.0.0.0.4" expl="apply premises" proved="true">
129 <proof prover="2"><result status="valid" time="0.080213" steps="103"/></proof>
133 <goal name="example1'vc.2.0.0.1.0.0.1" expl="asserted formula" proved="true">
134 <proof prover="2"><result status="valid" time="0.460793" steps="2446"/></proof>
138 <goal name="example1'vc.2.0.0.1.0.1" expl="asserted formula" proved="true">
139 <proof prover="2"><result status="valid" time="0.657721" steps="5070"/></proof>
143 <goal name="example1'vc.2.0.0.1.1" expl="apply premises" proved="true">
144 <proof prover="2"><result status="valid" time="0.059395" steps="134"/></proof>
148 <goal name="example1'vc.2.0.0.2" expl="apply premises" proved="true">
149 <proof prover="2"><result status="valid" time="0.048864" steps="110"/></proof>
151 <goal name="example1'vc.2.0.0.3" expl="apply premises" proved="true">
152 <proof prover="2"><result status="valid" time="0.045970" steps="110"/></proof>
154 <goal name="example1'vc.2.0.0.4" expl="apply premises" proved="true">
155 <proof prover="2"><result status="valid" time="0.056673" steps="103"/></proof>
157 <goal name="example1'vc.2.0.0.5" expl="apply premises" proved="true">
158 <proof prover="2"><result status="valid" time="0.041649" steps="103"/></proof>
160 <goal name="example1'vc.2.0.0.6" expl="apply premises" proved="true">
161 <proof prover="2"><result status="valid" time="0.122526" steps="649"/></proof>
163 <goal name="example1'vc.2.0.0.7" expl="apply premises" proved="true">
164 <proof prover="2"><result status="valid" time="0.123367" steps="649"/></proof>
166 <goal name="example1'vc.2.0.0.8" expl="apply premises" proved="true">
167 <proof prover="2"><result status="valid" time="0.053356" steps="103"/></proof>
171 <goal name="example1'vc.2.0.1" expl="asserted formula" proved="true">
172 <proof prover="2"><result status="valid" time="0.101478" steps="303"/></proof>
176 <goal name="example1'vc.2.1" expl="postcondition" proved="true">
177 <proof prover="2"><result status="valid" time="1.345438" steps="6975"/></proof>
183 <goal name="example2'vc" expl="VC for example2" proved="true">
184 <transf name="split_vc" proved="true" >
185 <goal name="example2'vc.0" expl="precondition" proved="true">
186 <proof prover="2"><result status="valid" time="0.108956" steps="1659"/></proof>
188 <goal name="example2'vc.1" expl="postcondition" proved="true">
189 <transf name="assert" proved="true" arg1="let t = log (exp (to_real x) +. exp (to_real y)) in
190 abs (to_real result -. t)
191 <=. ((abs t *. log_error)
192 +. ((-. log (1.0 -. ((exp_error +. exp_error) +. eps)))
193 *. (1.0 +. log_error)))">
194 <goal name="example2'vc.1.0" expl="asserted formula" proved="true">
195 <transf name="assert" proved="true" arg1="abs (to_real result -. log (exp (to_real x) +. exp (to_real y)))
196 <=. ((abs (log (exp (to_real x) +. exp (to_real y))) *. log_error)
197 +. ((-. log (1.0 -. ((exp_error +. exp_error) +. eps)))
198 *. (1.0 +. log_error)))">
199 <goal name="example2'vc.1.0.0" expl="asserted formula" proved="true">
200 <transf name="assert" proved="true" arg1="abs (to_real result -. log (exp (to_real x) +. exp (to_real y)))
201 <=. ((log_error *. abs (log (exp (to_real x) +. exp (to_real y))))
204 -. (((((exp_error +. exp_error) +. eps)
205 *. (exp (to_real x) +. exp (to_real y)))
207 /. (exp (to_real x) +. exp (to_real y)))))
208 *. (1.0 +. log_error))
210 <goal name="example2'vc.1.0.0.0" expl="asserted formula" proved="true">
211 <transf name="assert" proved="true" arg1="abs
213 ((fun (y0:usingle) -> log_approx y0) @ (exp_approx x ++. exp_approx y))
214 -. log (exp (to_real x) +. exp (to_real y)))
215 <=. ((log_error *. abs (log (exp (to_real x) +. exp (to_real y))))
218 -. (((((exp_error +. exp_error) +. eps)
219 *. (exp (to_real x) +. exp (to_real y)))
221 /. (exp (to_real x) +. exp (to_real y)))))
222 *. (1.0 +. log_error))
224 <goal name="example2'vc.1.0.0.0.0" expl="asserted formula" proved="true">
225 <transf name="apply" proved="true" arg1="log_single_error_propagation">
226 <goal name="example2'vc.1.0.0.0.0.0" expl="apply premises" proved="true">
227 <transf name="assert" proved="true" arg1="abs
228 (to_real (exp_approx x ++. exp_approx y)
229 -. (exp (to_real x) +. exp (to_real y)))
230 <=. ((((exp_error +. exp_error) +. eps)
231 *. (exp (to_real x) +. exp (to_real y)))
232 +. ((((1.0 +. eps) +. exp_error) *. 0.0)
233 +. (((1.0 +. eps) +. exp_error) *. 0.0)))">
234 <goal name="example2'vc.1.0.0.0.0.0.0" expl="asserted formula" proved="true">
235 <transf name="apply" proved="true" arg1="uadd_single_error_propagation" arg2="with" arg3="exp_approx x,exp_approx y">
236 <goal name="example2'vc.1.0.0.0.0.0.0.0" expl="apply premises" proved="true">
237 <proof prover="2"><result status="valid" time="0.047157" steps="104"/></proof>
239 <goal name="example2'vc.1.0.0.0.0.0.0.1" expl="apply premises" proved="true">
240 <proof prover="2"><result status="valid" time="0.045597" steps="104"/></proof>
242 <goal name="example2'vc.1.0.0.0.0.0.0.2" expl="apply premises" proved="true">
243 <proof prover="2"><result status="valid" time="0.126866" steps="804"/></proof>
245 <goal name="example2'vc.1.0.0.0.0.0.0.3" expl="apply premises" proved="true">
246 <proof prover="2"><result status="valid" time="0.129691" steps="807"/></proof>
248 <goal name="example2'vc.1.0.0.0.0.0.0.4" expl="apply premises" proved="true">
249 <proof prover="2"><result status="valid" time="0.078660" steps="97"/></proof>
251 <goal name="example2'vc.1.0.0.0.0.0.0.5" expl="apply premises" proved="true">
252 <proof prover="2"><result status="valid" time="0.073957" steps="97"/></proof>
254 <goal name="example2'vc.1.0.0.0.0.0.0.6" expl="apply premises" proved="true">
255 <proof prover="2"><result status="valid" time="0.062206" steps="97"/></proof>
257 <goal name="example2'vc.1.0.0.0.0.0.0.7" expl="apply premises" proved="true">
258 <proof prover="2"><result status="valid" time="0.084683" steps="97"/></proof>
260 <goal name="example2'vc.1.0.0.0.0.0.0.8" expl="apply premises" proved="true">
261 <proof prover="2"><result status="valid" time="0.071985" steps="97"/></proof>
265 <goal name="example2'vc.1.0.0.0.0.0.1" expl="apply premises" proved="true">
266 <proof prover="2"><result status="valid" time="0.058649" steps="108"/></proof>
270 <goal name="example2'vc.1.0.0.0.0.1" expl="apply premises" proved="true">
271 <proof prover="2"><result status="valid" time="0.293682" steps="1700"/></proof>
273 <goal name="example2'vc.1.0.0.0.0.2" expl="apply premises" proved="true">
274 <proof prover="2"><result status="valid" time="0.158214" steps="605"/></proof>
276 <goal name="example2'vc.1.0.0.0.0.3" expl="apply premises" proved="true">
277 <proof prover="2"><result status="valid" time="0.160169" steps="1031"/></proof>
279 <goal name="example2'vc.1.0.0.0.0.4" expl="apply premises" proved="true">
280 <proof prover="2"><result status="valid" time="0.042031" steps="97"/></proof>
284 <goal name="example2'vc.1.0.0.0.1" expl="asserted formula" proved="true">
285 <proof prover="2"><result status="valid" time="0.342849" steps="2907"/></proof>
289 <goal name="example2'vc.1.0.0.1" expl="asserted formula" proved="true">
290 <proof prover="2"><result status="valid" time="0.449556" steps="4731"/></proof>
294 <goal name="example2'vc.1.0.1" expl="asserted formula" proved="true">
295 <proof prover="2"><result status="valid" time="0.052670" steps="152"/></proof>
299 <goal name="example2'vc.1.1" expl="postcondition" proved="true">
300 <proof prover="2"><result status="valid" time="0.049317" steps="158"/></proof>
306 <goal name="example3'vc" expl="VC for example3" proved="true">
307 <transf name="split_vc" proved="true" >
308 <goal name="example3'vc.0" expl="precondition" proved="true">
309 <proof prover="2"><result status="valid" time="0.053312" steps="652"/></proof>
311 <goal name="example3'vc.1" expl="postcondition" proved="true">
312 <transf name="assert" proved="true" arg1="let t = log2 (to_real x +. to_real y) in
313 abs (to_real result -. t)
314 <=. ((abs t *. log2_error) +. ((-. log2 (1.0 -. eps)) *. (1.0 +. log2_error)))">
315 <goal name="example3'vc.1.0" expl="asserted formula" proved="true">
316 <transf name="assert" proved="true" arg1="abs (to_real result -. log2 (to_real x +. to_real y))
317 <=. ((abs (log2 (to_real x +. to_real y)) *. log2_error)
318 +. ((-. log2 (1.0 -. eps)) *. (1.0 +. log2_error)))">
319 <goal name="example3'vc.1.0.0" expl="asserted formula" proved="true">
320 <transf name="assert" proved="true" arg1="abs (to_real result -. log2 (to_real x +. to_real y))
321 <=. ((log2_error *. abs (log2 (to_real x +. to_real y)))
324 -. (((eps *. abs (to_real x +. to_real y)) +. 0.0)
325 /. (to_real x +. to_real y))))
326 *. (1.0 +. log2_error))
328 <goal name="example3'vc.1.0.0.0" expl="asserted formula" proved="true">
329 <transf name="assert" proved="true" arg1="abs
330 (to_real ((fun (y0:usingle) -> log2_approx y0) @ (x ++. y))
331 -. log2 (to_real x +. to_real y))
332 <=. ((log2_error *. abs (log2 (to_real x +. to_real y)))
335 -. (((eps *. abs (to_real x +. to_real y)) +. 0.0)
336 /. (to_real x +. to_real y))))
337 *. (1.0 +. log2_error))
339 <goal name="example3'vc.1.0.0.0.0" expl="asserted formula" proved="true">
340 <transf name="apply" proved="true" arg1="log2_single_error_propagation">
341 <goal name="example3'vc.1.0.0.0.0.0" expl="apply premises" proved="true">
342 <transf name="assert" proved="true" arg1="abs (to_real (x ++. y) -. (to_real x +. to_real y))
343 <=. (eps *. abs (to_real x +. to_real y))">
344 <goal name="example3'vc.1.0.0.0.0.0.0" expl="asserted formula" proved="true">
345 <proof prover="2"><result status="valid" time="0.117111" steps="845"/></proof>
347 <goal name="example3'vc.1.0.0.0.0.0.1" expl="apply premises" proved="true">
348 <proof prover="2"><result status="valid" time="0.048219" steps="113"/></proof>
352 <goal name="example3'vc.1.0.0.0.0.1" expl="apply premises" proved="true">
353 <proof prover="2"><result status="valid" time="0.202150" steps="1551"/></proof>
355 <goal name="example3'vc.1.0.0.0.0.2" expl="apply premises" proved="true">
356 <proof prover="2"><result status="valid" time="0.068201" steps="96"/></proof>
358 <goal name="example3'vc.1.0.0.0.0.3" expl="apply premises" proved="true">
359 <proof prover="2"><result status="valid" time="0.049889" steps="95"/></proof>
361 <goal name="example3'vc.1.0.0.0.0.4" expl="apply premises" proved="true">
362 <proof prover="2"><result status="valid" time="0.076572" steps="92"/></proof>
366 <goal name="example3'vc.1.0.0.0.1" expl="asserted formula" proved="true">
367 <proof prover="2"><result status="valid" time="0.318865" steps="3195"/></proof>
371 <goal name="example3'vc.1.0.0.1" expl="asserted formula" proved="true">
372 <proof prover="2"><result status="valid" time="0.059172" steps="161"/></proof>
376 <goal name="example3'vc.1.0.1" expl="asserted formula" proved="true">
377 <proof prover="2"><result status="valid" time="0.044173" steps="148"/></proof>
381 <goal name="example3'vc.1.1" expl="postcondition" proved="true">
382 <proof prover="2"><result status="valid" time="0.054142" steps="140"/></proof>
388 <goal name="example4'vc" expl="VC for example4" proved="true">
389 <transf name="split_vc" proved="true" >
390 <goal name="example4'vc.0" expl="precondition" proved="true">
391 <proof prover="2"><result status="valid" time="0.044697" steps="652"/></proof>
393 <goal name="example4'vc.1" expl="postcondition" proved="true">
394 <transf name="assert" proved="true" arg1="let t = log10 (to_real x +. to_real y) in
395 abs (to_real result -. t)
396 <=. ((abs t *. log10_error)
397 +. ((-. log10 (1.0 -. eps)) *. (1.0 +. log10_error)))">
398 <goal name="example4'vc.1.0" expl="asserted formula" proved="true">
399 <transf name="assert" proved="true" arg1="abs (to_real result -. log10 (to_real x +. to_real y))
400 <=. ((abs (log10 (to_real x +. to_real y)) *. log10_error)
401 +. ((-. log10 (1.0 -. eps)) *. (1.0 +. log10_error)))">
402 <goal name="example4'vc.1.0.0" expl="asserted formula" proved="true">
403 <transf name="assert" proved="true" arg1="abs (to_real result -. log10 (to_real x +. to_real y))
404 <=. ((log10_error *. abs (log10 (to_real x +. to_real y)))
407 -. (((eps *. abs (to_real x +. to_real y)) +. 0.0)
408 /. (to_real x +. to_real y))))
409 *. (1.0 +. log10_error))
411 <goal name="example4'vc.1.0.0.0" expl="asserted formula" proved="true">
412 <transf name="assert" proved="true" arg1="abs
413 (to_real ((fun (y0:usingle) -> log10_approx y0) @ (x ++. y))
414 -. log10 (to_real x +. to_real y))
415 <=. ((log10_error *. abs (log10 (to_real x +. to_real y)))
418 -. (((eps *. abs (to_real x +. to_real y)) +. 0.0)
419 /. (to_real x +. to_real y))))
420 *. (1.0 +. log10_error))
422 <goal name="example4'vc.1.0.0.0.0" expl="asserted formula" proved="true">
423 <transf name="apply" proved="true" arg1="log10_single_error_propagation">
424 <goal name="example4'vc.1.0.0.0.0.0" expl="apply premises" proved="true">
425 <transf name="assert" proved="true" arg1="abs (to_real (x ++. y) -. (to_real x +. to_real y))
426 <=. (eps *. abs (to_real x +. to_real y))">
427 <goal name="example4'vc.1.0.0.0.0.0.0" expl="asserted formula" proved="true">
428 <proof prover="2"><result status="valid" time="0.153891" steps="849"/></proof>
430 <goal name="example4'vc.1.0.0.0.0.0.1" expl="apply premises" proved="true">
431 <proof prover="2"><result status="valid" time="0.055530" steps="113"/></proof>
435 <goal name="example4'vc.1.0.0.0.0.1" expl="apply premises" proved="true">
436 <proof prover="2"><result status="valid" time="0.204980" steps="1545"/></proof>
438 <goal name="example4'vc.1.0.0.0.0.2" expl="apply premises" proved="true">
439 <proof prover="2"><result status="valid" time="0.066154" steps="96"/></proof>
441 <goal name="example4'vc.1.0.0.0.0.3" expl="apply premises" proved="true">
442 <proof prover="2"><result status="valid" time="0.060541" steps="95"/></proof>
444 <goal name="example4'vc.1.0.0.0.0.4" expl="apply premises" proved="true">
445 <proof prover="2"><result status="valid" time="0.069524" steps="92"/></proof>
449 <goal name="example4'vc.1.0.0.0.1" expl="asserted formula" proved="true">
450 <proof prover="2"><result status="valid" time="0.290082" steps="3175"/></proof>
454 <goal name="example4'vc.1.0.0.1" expl="asserted formula" proved="true">
455 <proof prover="2"><result status="valid" time="0.056574" steps="159"/></proof>
459 <goal name="example4'vc.1.0.1" expl="asserted formula" proved="true">
460 <proof prover="2"><result status="valid" time="0.048803" steps="148"/></proof>
464 <goal name="example4'vc.1.1" expl="postcondition" proved="true">
465 <proof prover="2"><result status="valid" time="0.046835" steps="140"/></proof>
472 <theory name="ExpLogDouble" proved="true">
473 <goal name="example1'vc" expl="VC for example1" proved="true">
474 <transf name="split_vc" proved="true" >
475 <goal name="example1'vc.0" expl="precondition" proved="true">
476 <proof prover="2"><result status="valid" time="0.054807" steps="867"/></proof>
478 <goal name="example1'vc.1" expl="precondition" proved="true">
479 <proof prover="2"><result status="valid" time="0.075010" steps="1020"/></proof>
481 <goal name="example1'vc.2" expl="postcondition" proved="true">
482 <transf name="assert" proved="true" arg1="let t = log (exp (to_real y)) in
483 let t1 = log (exp (to_real x)) in
485 ((1.0 +. eps) +. log_error)
486 *. ((-. log (1.0 -. exp_error)) *. (1.0 +. log_error))
488 abs (to_real result -. (t1 +. t))
489 <=. ((((log_error +. log_error) +. eps) *. (abs t1 +. abs t)) +. (t2 +. t2))">
490 <goal name="example1'vc.2.0" expl="asserted formula" proved="true">
491 <transf name="assert" proved="true" arg1="abs (to_real result -. (log (exp (to_real x)) +. log (exp (to_real y))))
492 <=. ((((log_error +. log_error) +. eps)
493 *. (abs (log (exp (to_real x))) +. abs (log (exp (to_real y)))))
494 +. ((((1.0 +. eps) +. log_error)
495 *. ((-. log (1.0 -. exp_error)) *. (1.0 +. log_error)))
496 +. (((1.0 +. eps) +. log_error)
497 *. ((-. log (1.0 -. exp_error)) *. (1.0 +. log_error)))))">
498 <goal name="example1'vc.2.0.0" expl="asserted formula" proved="true">
499 <transf name="apply" proved="true" arg1="uadd_double_error_propagation" arg2="with" arg3="log_approx (exp_approx x),log_approx (exp_approx y)">
500 <goal name="example1'vc.2.0.0.0" expl="apply premises" proved="true">
501 <transf name="assert" proved="true" arg1="abs (to_real (log_approx (exp_approx x)) -. log (exp (to_real x)))
502 <=. ((abs (log (exp (to_real x))) *. log_error)
503 +. ((-. log (1.0 -. exp_error)) *. (1.0 +. log_error)))">
504 <goal name="example1'vc.2.0.0.0.0" expl="asserted formula" proved="true">
505 <transf name="assert" proved="true" arg1="abs (to_real (log_approx (exp_approx x)) -. log (exp (to_real x)))
506 <=. ((log_error *. abs (log (exp (to_real x))))
509 -. (((exp_error *. exp (to_real x)) +. 0.0) /. exp (to_real x))))
510 *. (1.0 +. log_error))
512 <goal name="example1'vc.2.0.0.0.0.0" expl="asserted formula" proved="true">
513 <transf name="assert" proved="true" arg1="abs
514 (to_real ((fun (y0:udouble) -> log_approx y0) @ exp_approx x)
515 -. log (exp (to_real x)))
516 <=. ((log_error *. abs (log (exp (to_real x))))
519 -. (((exp_error *. exp (to_real x)) +. 0.0) /. exp (to_real x))))
520 *. (1.0 +. log_error))
522 <goal name="example1'vc.2.0.0.0.0.0.0" expl="asserted formula" proved="true">
523 <transf name="apply" proved="true" arg1="log_double_error_propagation">
524 <goal name="example1'vc.2.0.0.0.0.0.0.0" expl="apply premises" proved="true">
525 <proof prover="2"><result status="valid" time="0.043651" steps="108"/></proof>
527 <goal name="example1'vc.2.0.0.0.0.0.0.1" expl="apply premises" proved="true">
528 <proof prover="2"><result status="valid" time="0.358678" steps="1738"/></proof>
530 <goal name="example1'vc.2.0.0.0.0.0.0.2" expl="apply premises" proved="true">
531 <proof prover="2"><result status="valid" time="0.123091" steps="956"/></proof>
533 <goal name="example1'vc.2.0.0.0.0.0.0.3" expl="apply premises" proved="true">
534 <proof prover="2"><result status="valid" time="0.286920" steps="1104"/></proof>
536 <goal name="example1'vc.2.0.0.0.0.0.0.4" expl="apply premises" proved="true">
537 <proof prover="2"><result status="valid" time="0.058031" steps="103"/></proof>
541 <goal name="example1'vc.2.0.0.0.0.0.1" expl="asserted formula" proved="true">
542 <proof prover="2"><result status="valid" time="0.396684" steps="2722"/></proof>
546 <goal name="example1'vc.2.0.0.0.0.1" expl="asserted formula" proved="true">
547 <proof prover="2"><result status="valid" time="0.682269" steps="4517"/></proof>
551 <goal name="example1'vc.2.0.0.0.1" expl="apply premises" proved="true">
552 <proof prover="2"><result status="valid" time="0.071577" steps="134"/></proof>
556 <goal name="example1'vc.2.0.0.1" expl="apply premises" proved="true">
557 <transf name="assert" proved="true" arg1="abs (to_real (log_approx (exp_approx y)) -. log (exp (to_real y)))
558 <=. ((abs (log (exp (to_real y))) *. log_error)
559 +. ((-. log (1.0 -. exp_error)) *. (1.0 +. log_error)))">
560 <goal name="example1'vc.2.0.0.1.0" expl="asserted formula" proved="true">
561 <transf name="assert" proved="true" arg1="abs (to_real (log_approx (exp_approx y)) -. log (exp (to_real y)))
562 <=. ((log_error *. abs (log (exp (to_real y))))
565 -. (((exp_error *. exp (to_real y)) +. 0.0) /. exp (to_real y))))
566 *. (1.0 +. log_error))
568 <goal name="example1'vc.2.0.0.1.0.0" expl="asserted formula" proved="true">
569 <transf name="assert" proved="true" arg1="abs
570 (to_real ((fun (y0:udouble) -> log_approx y0) @ exp_approx y)
571 -. log (exp (to_real y)))
572 <=. ((log_error *. abs (log (exp (to_real y))))
575 -. (((exp_error *. exp (to_real y)) +. 0.0) /. exp (to_real y))))
576 *. (1.0 +. log_error))
578 <goal name="example1'vc.2.0.0.1.0.0.0" expl="asserted formula" proved="true">
579 <transf name="apply" proved="true" arg1="log_double_error_propagation">
580 <goal name="example1'vc.2.0.0.1.0.0.0.0" expl="apply premises" proved="true">
581 <proof prover="2"><result status="valid" time="0.052347" steps="108"/></proof>
583 <goal name="example1'vc.2.0.0.1.0.0.0.1" expl="apply premises" proved="true">
584 <proof prover="2"><result status="valid" time="0.241788" steps="1753"/></proof>
586 <goal name="example1'vc.2.0.0.1.0.0.0.2" expl="apply premises" proved="true">
587 <proof prover="2"><result status="valid" time="0.181126" steps="952"/></proof>
589 <goal name="example1'vc.2.0.0.1.0.0.0.3" expl="apply premises" proved="true">
590 <proof prover="2"><result status="valid" time="0.191433" steps="1044"/></proof>
592 <goal name="example1'vc.2.0.0.1.0.0.0.4" expl="apply premises" proved="true">
593 <proof prover="2"><result status="valid" time="0.077926" steps="103"/></proof>
597 <goal name="example1'vc.2.0.0.1.0.0.1" expl="asserted formula" proved="true">
598 <proof prover="2"><result status="valid" time="0.412397" steps="2444"/></proof>
602 <goal name="example1'vc.2.0.0.1.0.1" expl="asserted formula" proved="true">
603 <proof prover="2"><result status="valid" time="0.587672" steps="5061"/></proof>
607 <goal name="example1'vc.2.0.0.1.1" expl="apply premises" proved="true">
608 <proof prover="2"><result status="valid" time="0.056516" steps="134"/></proof>
612 <goal name="example1'vc.2.0.0.2" expl="apply premises" proved="true">
613 <proof prover="2"><result status="valid" time="0.058089" steps="110"/></proof>
615 <goal name="example1'vc.2.0.0.3" expl="apply premises" proved="true">
616 <proof prover="2"><result status="valid" time="0.056199" steps="110"/></proof>
618 <goal name="example1'vc.2.0.0.4" expl="apply premises" proved="true">
619 <proof prover="2"><result status="valid" time="0.045904" steps="103"/></proof>
621 <goal name="example1'vc.2.0.0.5" expl="apply premises" proved="true">
622 <proof prover="2"><result status="valid" time="0.042505" steps="103"/></proof>
624 <goal name="example1'vc.2.0.0.6" expl="apply premises" proved="true">
625 <proof prover="2"><result status="valid" time="0.117590" steps="649"/></proof>
627 <goal name="example1'vc.2.0.0.7" expl="apply premises" proved="true">
628 <proof prover="2"><result status="valid" time="0.129957" steps="649"/></proof>
630 <goal name="example1'vc.2.0.0.8" expl="apply premises" proved="true">
631 <proof prover="2"><result status="valid" time="0.046690" steps="103"/></proof>
635 <goal name="example1'vc.2.0.1" expl="asserted formula" proved="true">
636 <proof prover="2"><result status="valid" time="0.090952" steps="303"/></proof>
640 <goal name="example1'vc.2.1" expl="postcondition" proved="true">
641 <proof prover="2"><result status="valid" time="1.264545" steps="6995"/></proof>
647 <goal name="example2'vc" expl="VC for example2" proved="true">
648 <transf name="split_vc" proved="true" >
649 <goal name="example2'vc.0" expl="precondition" proved="true">
650 <proof prover="2"><result status="valid" time="0.104003" steps="1656"/></proof>
652 <goal name="example2'vc.1" expl="postcondition" proved="true">
653 <transf name="assert" proved="true" arg1="let t = log (exp (to_real x) +. exp (to_real y)) in
654 abs (to_real result -. t)
655 <=. ((abs t *. log_error)
656 +. ((-. log (1.0 -. ((exp_error +. exp_error) +. eps)))
657 *. (1.0 +. log_error)))">
658 <goal name="example2'vc.1.0" expl="asserted formula" proved="true">
659 <transf name="assert" proved="true" arg1="abs (to_real result -. log (exp (to_real x) +. exp (to_real y)))
660 <=. ((abs (log (exp (to_real x) +. exp (to_real y))) *. log_error)
661 +. ((-. log (1.0 -. ((exp_error +. exp_error) +. eps)))
662 *. (1.0 +. log_error)))">
663 <goal name="example2'vc.1.0.0" expl="asserted formula" proved="true">
664 <transf name="assert" proved="true" arg1="abs (to_real result -. log (exp (to_real x) +. exp (to_real y)))
665 <=. ((log_error *. abs (log (exp (to_real x) +. exp (to_real y))))
668 -. (((((exp_error +. exp_error) +. eps)
669 *. (exp (to_real x) +. exp (to_real y)))
671 /. (exp (to_real x) +. exp (to_real y)))))
672 *. (1.0 +. log_error))
674 <goal name="example2'vc.1.0.0.0" expl="asserted formula" proved="true">
675 <transf name="assert" proved="true" arg1="abs
677 ((fun (y0:udouble) -> log_approx y0) @ (exp_approx x ++. exp_approx y))
678 -. log (exp (to_real x) +. exp (to_real y)))
679 <=. ((log_error *. abs (log (exp (to_real x) +. exp (to_real y))))
682 -. (((((exp_error +. exp_error) +. eps)
683 *. (exp (to_real x) +. exp (to_real y)))
685 /. (exp (to_real x) +. exp (to_real y)))))
686 *. (1.0 +. log_error))
688 <goal name="example2'vc.1.0.0.0.0" expl="asserted formula" proved="true">
689 <transf name="apply" proved="true" arg1="log_double_error_propagation">
690 <goal name="example2'vc.1.0.0.0.0.0" expl="apply premises" proved="true">
691 <transf name="assert" proved="true" arg1="abs
692 (to_real (exp_approx x ++. exp_approx y)
693 -. (exp (to_real x) +. exp (to_real y)))
694 <=. ((((exp_error +. exp_error) +. eps)
695 *. (exp (to_real x) +. exp (to_real y)))
696 +. ((((1.0 +. eps) +. exp_error) *. 0.0)
697 +. (((1.0 +. eps) +. exp_error) *. 0.0)))">
698 <goal name="example2'vc.1.0.0.0.0.0.0" expl="asserted formula" proved="true">
699 <transf name="apply" proved="true" arg1="uadd_double_error_propagation" arg2="with" arg3="exp_approx x,exp_approx y">
700 <goal name="example2'vc.1.0.0.0.0.0.0.0" expl="apply premises" proved="true">
701 <proof prover="2"><result status="valid" time="0.041392" steps="104"/></proof>
703 <goal name="example2'vc.1.0.0.0.0.0.0.1" expl="apply premises" proved="true">
704 <proof prover="2"><result status="valid" time="0.060612" steps="104"/></proof>
706 <goal name="example2'vc.1.0.0.0.0.0.0.2" expl="apply premises" proved="true">
707 <proof prover="2"><result status="valid" time="0.151292" steps="806"/></proof>
709 <goal name="example2'vc.1.0.0.0.0.0.0.3" expl="apply premises" proved="true">
710 <proof prover="2"><result status="valid" time="0.199235" steps="810"/></proof>
712 <goal name="example2'vc.1.0.0.0.0.0.0.4" expl="apply premises" proved="true">
713 <proof prover="2"><result status="valid" time="0.071313" steps="97"/></proof>
715 <goal name="example2'vc.1.0.0.0.0.0.0.5" expl="apply premises" proved="true">
716 <proof prover="2"><result status="valid" time="0.077320" steps="97"/></proof>
718 <goal name="example2'vc.1.0.0.0.0.0.0.6" expl="apply premises" proved="true">
719 <proof prover="2"><result status="valid" time="0.091780" steps="97"/></proof>
721 <goal name="example2'vc.1.0.0.0.0.0.0.7" expl="apply premises" proved="true">
722 <proof prover="2"><result status="valid" time="0.053089" steps="97"/></proof>
724 <goal name="example2'vc.1.0.0.0.0.0.0.8" expl="apply premises" proved="true">
725 <proof prover="2"><result status="valid" time="0.054087" steps="97"/></proof>
729 <goal name="example2'vc.1.0.0.0.0.0.1" expl="apply premises" proved="true">
730 <proof prover="2"><result status="valid" time="0.058522" steps="108"/></proof>
734 <goal name="example2'vc.1.0.0.0.0.1" expl="apply premises" proved="true">
735 <proof prover="2"><result status="valid" time="0.244545" steps="1697"/></proof>
737 <goal name="example2'vc.1.0.0.0.0.2" expl="apply premises" proved="true">
738 <proof prover="2"><result status="valid" time="0.167142" steps="605"/></proof>
740 <goal name="example2'vc.1.0.0.0.0.3" expl="apply premises" proved="true">
741 <proof prover="2"><result status="valid" time="0.222462" steps="1030"/></proof>
743 <goal name="example2'vc.1.0.0.0.0.4" expl="apply premises" proved="true">
744 <proof prover="2"><result status="valid" time="0.037568" steps="97"/></proof>
748 <goal name="example2'vc.1.0.0.0.1" expl="asserted formula" proved="true">
749 <proof prover="2"><result status="valid" time="0.368659" steps="2891"/></proof>
753 <goal name="example2'vc.1.0.0.1" expl="asserted formula" proved="true">
754 <proof prover="2"><result status="valid" time="0.488205" steps="4729"/></proof>
758 <goal name="example2'vc.1.0.1" expl="asserted formula" proved="true">
759 <proof prover="2"><result status="valid" time="0.062153" steps="152"/></proof>
763 <goal name="example2'vc.1.1" expl="postcondition" proved="true">
764 <proof prover="2"><result status="valid" time="0.069773" steps="158"/></proof>
770 <goal name="example3'vc" expl="VC for example3" proved="true">
771 <transf name="split_vc" proved="true" >
772 <goal name="example3'vc.0" expl="precondition" proved="true">
773 <proof prover="2"><result status="valid" time="0.044315" steps="652"/></proof>
775 <goal name="example3'vc.1" expl="postcondition" proved="true">
776 <transf name="assert" proved="true" arg1="let t = log2 (to_real x +. to_real y) in
777 abs (to_real result -. t)
778 <=. ((abs t *. log2_error) +. ((-. log2 (1.0 -. eps)) *. (1.0 +. log2_error)))">
779 <goal name="example3'vc.1.0" expl="asserted formula" proved="true">
780 <transf name="assert" proved="true" arg1="abs (to_real result -. log2 (to_real x +. to_real y))
781 <=. ((abs (log2 (to_real x +. to_real y)) *. log2_error)
782 +. ((-. log2 (1.0 -. eps)) *. (1.0 +. log2_error)))">
783 <goal name="example3'vc.1.0.0" expl="asserted formula" proved="true">
784 <transf name="assert" proved="true" arg1="abs (to_real result -. log2 (to_real x +. to_real y))
785 <=. ((log2_error *. abs (log2 (to_real x +. to_real y)))
788 -. (((eps *. abs (to_real x +. to_real y)) +. 0.0)
789 /. (to_real x +. to_real y))))
790 *. (1.0 +. log2_error))
792 <goal name="example3'vc.1.0.0.0" expl="asserted formula" proved="true">
793 <transf name="assert" proved="true" arg1="abs
794 (to_real ((fun (y0:udouble) -> log2_approx y0) @ (x ++. y))
795 -. log2 (to_real x +. to_real y))
796 <=. ((log2_error *. abs (log2 (to_real x +. to_real y)))
799 -. (((eps *. abs (to_real x +. to_real y)) +. 0.0)
800 /. (to_real x +. to_real y))))
801 *. (1.0 +. log2_error))
803 <goal name="example3'vc.1.0.0.0.0" expl="asserted formula" proved="true">
804 <transf name="apply" proved="true" arg1="log2_double_error_propagation">
805 <goal name="example3'vc.1.0.0.0.0.0" expl="apply premises" proved="true">
806 <transf name="assert" proved="true" arg1="abs (to_real (x ++. y) -. (to_real x +. to_real y))
807 <=. (eps *. abs (to_real x +. to_real y))">
808 <goal name="example3'vc.1.0.0.0.0.0.0" expl="asserted formula" proved="true">
809 <proof prover="2"><result status="valid" time="0.117193" steps="846"/></proof>
811 <goal name="example3'vc.1.0.0.0.0.0.1" expl="apply premises" proved="true">
812 <proof prover="2"><result status="valid" time="0.047354" steps="113"/></proof>
816 <goal name="example3'vc.1.0.0.0.0.1" expl="apply premises" proved="true">
817 <proof prover="2"><result status="valid" time="0.227336" steps="1544"/></proof>
819 <goal name="example3'vc.1.0.0.0.0.2" expl="apply premises" proved="true">
820 <proof prover="2"><result status="valid" time="0.076293" steps="96"/></proof>
822 <goal name="example3'vc.1.0.0.0.0.3" expl="apply premises" proved="true">
823 <proof prover="2"><result status="valid" time="0.051523" steps="95"/></proof>
825 <goal name="example3'vc.1.0.0.0.0.4" expl="apply premises" proved="true">
826 <proof prover="2"><result status="valid" time="0.073888" steps="92"/></proof>
830 <goal name="example3'vc.1.0.0.0.1" expl="asserted formula" proved="true">
831 <proof prover="2"><result status="valid" time="0.316832" steps="3192"/></proof>
835 <goal name="example3'vc.1.0.0.1" expl="asserted formula" proved="true">
836 <proof prover="2"><result status="valid" time="0.086738" steps="161"/></proof>
840 <goal name="example3'vc.1.0.1" expl="asserted formula" proved="true">
841 <proof prover="2"><result status="valid" time="0.053101" steps="148"/></proof>
845 <goal name="example3'vc.1.1" expl="postcondition" proved="true">
846 <proof prover="2"><result status="valid" time="0.048528" steps="140"/></proof>
852 <goal name="example4'vc" expl="VC for example4" proved="true">
853 <transf name="split_vc" proved="true" >
854 <goal name="example4'vc.0" expl="precondition" proved="true">
855 <proof prover="2"><result status="valid" time="0.160185" steps="652"/></proof>
857 <goal name="example4'vc.1" expl="postcondition" proved="true">
858 <transf name="assert" proved="true" arg1="let t = log10 (to_real x +. to_real y) in
859 abs (to_real result -. t)
860 <=. ((abs t *. log10_error)
861 +. ((-. log10 (1.0 -. eps)) *. (1.0 +. log10_error)))">
862 <goal name="example4'vc.1.0" expl="asserted formula" proved="true">
863 <transf name="assert" proved="true" arg1="abs (to_real result -. log10 (to_real x +. to_real y))
864 <=. ((abs (log10 (to_real x +. to_real y)) *. log10_error)
865 +. ((-. log10 (1.0 -. eps)) *. (1.0 +. log10_error)))">
866 <goal name="example4'vc.1.0.0" expl="asserted formula" proved="true">
867 <transf name="assert" proved="true" arg1="abs (to_real result -. log10 (to_real x +. to_real y))
868 <=. ((log10_error *. abs (log10 (to_real x +. to_real y)))
871 -. (((eps *. abs (to_real x +. to_real y)) +. 0.0)
872 /. (to_real x +. to_real y))))
873 *. (1.0 +. log10_error))
875 <goal name="example4'vc.1.0.0.0" expl="asserted formula" proved="true">
876 <transf name="assert" proved="true" arg1="abs
877 (to_real ((fun (y0:udouble) -> log10_approx y0) @ (x ++. y))
878 -. log10 (to_real x +. to_real y))
879 <=. ((log10_error *. abs (log10 (to_real x +. to_real y)))
882 -. (((eps *. abs (to_real x +. to_real y)) +. 0.0)
883 /. (to_real x +. to_real y))))
884 *. (1.0 +. log10_error))
886 <goal name="example4'vc.1.0.0.0.0" expl="asserted formula" proved="true">
887 <transf name="apply" proved="true" arg1="log10_double_error_propagation">
888 <goal name="example4'vc.1.0.0.0.0.0" expl="apply premises" proved="true">
889 <transf name="assert" proved="true" arg1="abs (to_real (x ++. y) -. (to_real x +. to_real y))
890 <=. (eps *. abs (to_real x +. to_real y))">
891 <goal name="example4'vc.1.0.0.0.0.0.0" expl="asserted formula" proved="true">
892 <proof prover="2"><result status="valid" time="0.129682" steps="849"/></proof>
894 <goal name="example4'vc.1.0.0.0.0.0.1" expl="apply premises" proved="true">
895 <proof prover="2"><result status="valid" time="0.052425" steps="113"/></proof>
899 <goal name="example4'vc.1.0.0.0.0.1" expl="apply premises" proved="true">
900 <proof prover="2"><result status="valid" time="0.216874" steps="1558"/></proof>
902 <goal name="example4'vc.1.0.0.0.0.2" expl="apply premises" proved="true">
903 <proof prover="2"><result status="valid" time="0.079901" steps="96"/></proof>
905 <goal name="example4'vc.1.0.0.0.0.3" expl="apply premises" proved="true">
906 <proof prover="2"><result status="valid" time="0.054171" steps="95"/></proof>
908 <goal name="example4'vc.1.0.0.0.0.4" expl="apply premises" proved="true">
909 <proof prover="2"><result status="valid" time="0.051552" steps="92"/></proof>
913 <goal name="example4'vc.1.0.0.0.1" expl="asserted formula" proved="true">
914 <proof prover="2"><result status="valid" time="0.379000" steps="3211"/></proof>
918 <goal name="example4'vc.1.0.0.1" expl="asserted formula" proved="true">
919 <proof prover="2"><result status="valid" time="0.094588" steps="159"/></proof>
923 <goal name="example4'vc.1.0.1" expl="asserted formula" proved="true">
924 <proof prover="2"><result status="valid" time="0.061902" steps="148"/></proof>
928 <goal name="example4'vc.1.1" expl="postcondition" proved="true">
929 <proof prover="2"><result status="valid" time="0.059584" steps="140"/></proof>