diff --git a/drivers/polypaver.drv b/drivers/polypaver.drv index 09319af48c75a0a2cb72c61b74809521f92ad12e..624ddb9ac262d1c1e42a3afc99459c2cac4823db 100644 --- a/drivers/polypaver.drv +++ b/drivers/polypaver.drv @@ -4,15 +4,11 @@ printer "metitarski" filename "%f-%t-%g.tptp" -valid "^SZS status Theorem" -valid "^SZS status Unsatisfiable" -unknown "^SZS status CounterSatisfiable" "" -unknown "^SZS status Satisfiable" "" -timeout "^SZS status Timeout" -unknown "^SZS status GaveUp" "" -fail "^SZS status Error" "" - +valid 0 +invalid 111 +timeout "Gave up on deciding conjecture: TIMED OUT" time "why3cpulimit time : %s s" +unknown 1 "toto" (* to be improved *) diff --git a/examples/tests-provers/polypaver.mlw b/examples/tests-provers/polypaver.mlw new file mode 100644 index 0000000000000000000000000000000000000000..5980c290d567bdbf0bfb9d0bcdcd8e590d66d651 --- /dev/null +++ b/examples/tests-provers/polypaver.mlw @@ -0,0 +1,23 @@ + +module TestFloat + + use import floating_point.Double + + function Sqrt (X : in Float) return Float + +pre 1.0 <= X and X <= 2.0; + --# return R => + --# R <= (1.0+4.0*PolyPaver.Floats.Eps_Rel)*PolyPaver.Exact.Sqrt(X); + is + R,S : Float; + begin + S := X; + R := PolyPaver.Floats.Add(PolyPaver.Floats.Multiply(0.5,X),0.5); + while R /= s loop + --# assert R in -0.25*X**2+X .. 0.25*X**2+1.0 ; + S := r; + R := PolyPaver.Floats.Multiply(0.5, + PolyPaver.Floats.Add(S,PolyPaver.Floats.Divide(X,S))); + end loop; + return R; + end Sqrt; diff --git a/examples/tests-provers/polypaver.why b/examples/tests-provers/polypaver.why index 753d0679329ad004ed74d3aabdd6117204c1e776..203f451cc202b4198b3f24d45230a2065bd99237 100644 --- a/examples/tests-provers/polypaver.why +++ b/examples/tests-provers/polypaver.why @@ -1,5 +1,5 @@ -theory Test +theory TestReal (* @@ -8,11 +8,22 @@ theory Test *) use import real.Real + + goal add1 : 1.0 + 2.0 = 3.0 + + goal add2 : 1.2 + 3.4 = 5.6 + + use import real.Square use import real.ExpLog + goal exp_hyp: + forall x:real. 0.01 < X < 5.1785 -> + (3.0 + sqr x / 11.0) * ((exp x - exp (-x))/2.0) < + x * (2.0 + (exp x + exp (-x))/2.0 + sqr x / 11.0) + goal g1: forall a b:real. -10.0 <= a <= 10.0 /\ -10.0 <= b <= 10.0 /\ b > a + 0.1 -> - exp a - exp b > (b-a) * exp ((a + b) / 2.0) + exp b - exp a > (b-a) * exp ((a + b) / 2.0) end diff --git a/examples/tests-provers/polypaver/why3session.xml b/examples/tests-provers/polypaver/why3session.xml new file mode 100644 index 0000000000000000000000000000000000000000..549d2d47d255a1fffe040849ff0d63a4926b9a05 --- /dev/null +++ b/examples/tests-provers/polypaver/why3session.xml @@ -0,0 +1,19 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE why3session PUBLIC "-//Why3//proof session v5//EN" +"http://why3.lri.fr/why3session.dtd"> +<why3session shape_version="4"> +<prover id="0" name="PolyPaver" version="0.3" timelimit="3600" memlimit="1000"/> +<file name="../polypaver.why" expanded="true"> +<theory name="Test" sum="2676ef260e99a1019e7c4dfb35399b4f" expanded="true"> + <goal name="add1" expanded="true"> + <proof prover="0" edited="polypaver-Test-add1_1.tptp"><result status="unknown" time="0.01"/></proof> + </goal> + <goal name="add2" expanded="true"> + <proof prover="0" timelimit="5"><result status="unknown" time="0.01"/></proof> + </goal> + <goal name="g1" expanded="true"> + <proof prover="0"><result status="valid" time="626.99"/></proof> + </goal> +</theory> +</file> +</why3session> diff --git a/examples/tests-provers/polypaver/why3shapes.gz b/examples/tests-provers/polypaver/why3shapes.gz new file mode 100644 index 0000000000000000000000000000000000000000..12049943f92903fe0b1e78fcab9e698c3c71ea82 Binary files /dev/null and b/examples/tests-provers/polypaver/why3shapes.gz differ