Support for PolyPaver prover

parent 99d922cd
 ... ... @@ -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 *) ... ...
 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;
 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