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