From 7e21f5706c3f41f677dce3d8e32edbfd42b4954b Mon Sep 17 00:00:00 2001
From: Claude Marche <Claude.Marche@inria.fr>
Date: Mon, 7 Mar 2016 16:56:07 +0100
Subject: [PATCH] example algo63, with version using fast WP

---
 examples/algo63.mlw                    |   3 +-
 examples/algo63/why3session.xml        | 979 ++++---------------------
 examples/algo63/why3shapes.gz          | Bin 10172 -> 4309 bytes
 examples/algo63_fastwp/why3session.xml | 180 +++++
 examples/algo63_fastwp/why3shapes.gz   | Bin 0 -> 3667 bytes
 5 files changed, 338 insertions(+), 824 deletions(-)
 create mode 100644 examples/algo63_fastwp/why3session.xml
 create mode 100644 examples/algo63_fastwp/why3shapes.gz

diff --git a/examples/algo63.mlw b/examples/algo63.mlw
index dda59fd9c4..1d979ee585 100644
--- a/examples/algo63.mlw
+++ b/examples/algo63.mlw
@@ -26,7 +26,8 @@ module Algo63
     ensures  { permut_sub (old a) a m (n+1) }
     let v = a[i] in
     a[i] <- a[j];
-    a[j] <- v
+    a[j] <- v;
+    assert { exchange (old a) a i j }
 
   val random (m n: int) : int ensures { m <= result <= n }
 
diff --git a/examples/algo63/why3session.xml b/examples/algo63/why3session.xml
index 1205cf2e53..250f338504 100644
--- a/examples/algo63/why3session.xml
+++ b/examples/algo63/why3session.xml
@@ -2,898 +2,231 @@
 <!DOCTYPE why3session PUBLIC "-//Why3//proof session v5//EN"
 "http://why3.lri.fr/why3session.dtd">
 <why3session shape_version="4">
-<prover id="0" name="Spass" version="3.7" timelimit="6" memlimit="1000"/>
-<prover id="1" name="Eprover" version="1.8-001" timelimit="30" memlimit="1000"/>
-<prover id="2" name="Alt-Ergo" version="0.95.2" timelimit="5" memlimit="1000"/>
-<prover id="3" name="Vampire" version="0.6" timelimit="6" memlimit="1000"/>
+<prover id="4" name="Alt-Ergo" version="0.99.1" timelimit="5" memlimit="1000"/>
+<prover id="5" name="CVC4" version="1.4" timelimit="5" memlimit="1000"/>
+<prover id="6" name="Z3" version="4.3.2" timelimit="5" memlimit="1000"/>
 <file name="../algo63.mlw" expanded="true">
-<theory name="Algo63" sum="e540511305143abe7957581671199dba" expanded="true">
- <goal name="WP_parameter exchange" expl="VC for exchange">
- <proof prover="2"><result status="valid" time="0.05"/></proof>
- </goal>
- <goal name="WP_parameter partition_" expl="VC for partition_">
+<theory name="Algo63" sum="11f00ad4a912fe3ea4346c638f71a0ef" expanded="true">
+ <goal name="VC exchange" expl="VC for exchange">
  <transf name="split_goal_wp">
-  <goal name="WP_parameter partition_.1" expl="1. index in array bounds">
-  <proof prover="2"><result status="valid" time="0.01"/></proof>
-  </goal>
-  <goal name="WP_parameter partition_.2" expl="2. loop invariant init">
-  <proof prover="2"><result status="valid" time="0.02"/></proof>
-  </goal>
-  <goal name="WP_parameter partition_.3" expl="3. loop invariant init">
-  <proof prover="2"><result status="valid" time="0.01"/></proof>
-  </goal>
-  <goal name="WP_parameter partition_.4" expl="4. index in array bounds">
-  <proof prover="2"><result status="valid" time="0.02"/></proof>
-  </goal>
-  <goal name="WP_parameter partition_.5" expl="5. loop invariant preservation">
-  <proof prover="2"><result status="valid" time="0.02"/></proof>
-  </goal>
-  <goal name="WP_parameter partition_.6" expl="6. loop invariant preservation">
-  <proof prover="2"><result status="valid" time="0.02"/></proof>
-  </goal>
-  <goal name="WP_parameter partition_.7" expl="7. loop variant decrease">
-  <proof prover="2"><result status="valid" time="0.02"/></proof>
-  </goal>
-  <goal name="WP_parameter partition_.8" expl="8. loop invariant init">
-  <proof prover="2"><result status="valid" time="0.01"/></proof>
-  </goal>
-  <goal name="WP_parameter partition_.9" expl="9. loop invariant init">
-  <proof prover="2"><result status="valid" time="0.02"/></proof>
-  </goal>
-  <goal name="WP_parameter partition_.10" expl="10. index in array bounds">
-  <proof prover="2"><result status="valid" time="0.01"/></proof>
-  </goal>
-  <goal name="WP_parameter partition_.11" expl="11. loop invariant preservation">
-  <proof prover="2"><result status="valid" time="0.02"/></proof>
-  </goal>
-  <goal name="WP_parameter partition_.12" expl="12. loop invariant preservation">
-  <proof prover="2"><result status="valid" time="0.02"/></proof>
-  </goal>
-  <goal name="WP_parameter partition_.13" expl="13. loop variant decrease">
-  <proof prover="2"><result status="valid" time="0.02"/></proof>
-  </goal>
-  <goal name="WP_parameter partition_.14" expl="14. precondition">
-  <proof prover="2"><result status="valid" time="0.02"/></proof>
-  </goal>
-  <goal name="WP_parameter partition_.15" expl="15. variant decrease">
-  <proof prover="2"><result status="valid" time="0.02"/></proof>
-  </goal>
-  <goal name="WP_parameter partition_.16" expl="16. precondition">
-  <proof prover="2"><result status="valid" time="0.02"/></proof>
-  </goal>
-  <goal name="WP_parameter partition_.17" expl="17. precondition">
-  <proof prover="2"><result status="valid" time="0.02"/></proof>
-  </goal>
-  <goal name="WP_parameter partition_.18" expl="18. precondition">
-  <proof prover="2" timelimit="15"><result status="valid" time="0.30"/></proof>
-  </goal>
-  <goal name="WP_parameter partition_.19" expl="19. precondition">
-  <proof prover="2"><result status="valid" time="0.29"/></proof>
-  </goal>
-  <goal name="WP_parameter partition_.20" expl="20. precondition">
-  <proof prover="2"><result status="valid" time="0.02"/></proof>
-  </goal>
-  <goal name="WP_parameter partition_.21" expl="21. postcondition">
-  <proof prover="2"><result status="valid" time="0.02"/></proof>
+  <goal name="VC exchange.1" expl="1. index in array bounds">
+  <proof prover="4"><result status="valid" time="0.02" steps="6"/></proof>
   </goal>
-  <goal name="WP_parameter partition_.22" expl="22. postcondition">
-  <proof prover="2"><result status="valid" time="0.03"/></proof>
+  <goal name="VC exchange.2" expl="2. index in array bounds">
+  <proof prover="4"><result status="valid" time="0.02" steps="6"/></proof>
   </goal>
-  <goal name="WP_parameter partition_.23" expl="23. postcondition">
-  <proof prover="2"><result status="valid" time="0.02"/></proof>
+  <goal name="VC exchange.3" expl="3. index in array bounds">
+  <proof prover="4"><result status="valid" time="0.01" steps="6"/></proof>
   </goal>
-  <goal name="WP_parameter partition_.24" expl="24. postcondition">
-  <proof prover="2"><result status="valid" time="0.02"/></proof>
+  <goal name="VC exchange.4" expl="4. index in array bounds">
+  <proof prover="4"><result status="valid" time="0.01" steps="8"/></proof>
   </goal>
-  <goal name="WP_parameter partition_.25" expl="25. postcondition">
-  <proof prover="2"><result status="valid" time="0.02"/></proof>
+  <goal name="VC exchange.5" expl="5. assertion">
+  <proof prover="4"><result status="valid" time="0.02" steps="30"/></proof>
+  <proof prover="5"><result status="valid" time="0.04"/></proof>
+  <proof prover="6"><result status="valid" time="0.01"/></proof>
   </goal>
-  <goal name="WP_parameter partition_.26" expl="26. postcondition">
-  <proof prover="2"><result status="valid" time="0.02"/></proof>
+  <goal name="VC exchange.6" expl="6. postcondition">
+  <proof prover="4"><result status="valid" time="0.02" steps="11"/></proof>
   </goal>
-  <goal name="WP_parameter partition_.27" expl="27. postcondition">
-  <proof prover="2"><result status="valid" time="0.02"/></proof>
+  <goal name="VC exchange.7" expl="7. postcondition">
+  <proof prover="4"><result status="valid" time="0.03" steps="15"/></proof>
   </goal>
-  <goal name="WP_parameter partition_.28" expl="28. postcondition">
-  <proof prover="2"><result status="valid" time="0.02"/></proof>
-  </goal>
-  <goal name="WP_parameter partition_.29" expl="29. postcondition">
-  <proof prover="2"><result status="valid" time="0.01"/></proof>
-  </goal>
-  <goal name="WP_parameter partition_.30" expl="30. postcondition">
-  <proof prover="2"><result status="valid" time="0.01"/></proof>
-  </goal>
-  <goal name="WP_parameter partition_.31" expl="31. postcondition">
-  <proof prover="2"><result status="valid" time="0.01"/></proof>
-  </goal>
-  <goal name="WP_parameter partition_.32" expl="32. postcondition">
-  <proof prover="2"><result status="valid" time="0.02"/></proof>
-  </goal>
-  <goal name="WP_parameter partition_.33" expl="33. postcondition">
-  <proof prover="2"><result status="valid" time="0.02"/></proof>
-  </goal>
-  <goal name="WP_parameter partition_.34" expl="34. postcondition">
-  <proof prover="2"><result status="valid" time="0.02"/></proof>
-  </goal>
-  <goal name="WP_parameter partition_.35" expl="35. precondition">
-  <proof prover="2"><result status="valid" time="0.02"/></proof>
-  </goal>
-  <goal name="WP_parameter partition_.36" expl="36. variant decrease">
-  <proof prover="2"><result status="valid" time="0.02"/></proof>
-  </goal>
-  <goal name="WP_parameter partition_.37" expl="37. precondition">
-  <proof prover="2"><result status="valid" time="0.02"/></proof>
-  </goal>
-  <goal name="WP_parameter partition_.38" expl="38. precondition">
-  <proof prover="2"><result status="valid" time="0.02"/></proof>
-  </goal>
-  <goal name="WP_parameter partition_.39" expl="39. precondition">
-  <proof prover="2"><result status="valid" time="0.02"/></proof>
-  </goal>
-  <goal name="WP_parameter partition_.40" expl="40. precondition">
-  <proof prover="2"><result status="valid" time="0.02"/></proof>
-  </goal>
-  <goal name="WP_parameter partition_.41" expl="41. precondition">
-  <proof prover="2"><result status="valid" time="0.02"/></proof>
-  </goal>
-  <goal name="WP_parameter partition_.42" expl="42. postcondition">
-  <proof prover="2"><result status="valid" time="0.01"/></proof>
-  </goal>
-  <goal name="WP_parameter partition_.43" expl="43. postcondition">
-  <proof prover="2"><result status="valid" time="0.02"/></proof>
+ </transf>
+ </goal>
+ <goal name="VC partition_" expl="VC for partition_">
+ <transf name="split_goal_wp">
+  <goal name="VC partition_.1" expl="1. index in array bounds">
+  <proof prover="4"><result status="valid" time="0.01" steps="5"/></proof>
   </goal>
-  <goal name="WP_parameter partition_.44" expl="44. postcondition">
-  <proof prover="2"><result status="valid" time="0.03"/></proof>
+  <goal name="VC partition_.2" expl="2. loop invariant init">
+  <proof prover="4"><result status="valid" time="0.02" steps="15"/></proof>
   </goal>
-  <goal name="WP_parameter partition_.45" expl="45. postcondition">
-  <proof prover="2"><result status="valid" time="0.03"/></proof>
+  <goal name="VC partition_.3" expl="3. loop invariant init">
+  <proof prover="4"><result status="valid" time="0.02" steps="22"/></proof>
   </goal>
-  <goal name="WP_parameter partition_.46" expl="46. postcondition">
-  <proof prover="2"><result status="valid" time="0.03"/></proof>
+  <goal name="VC partition_.4" expl="4. index in array bounds">
+  <proof prover="4"><result status="valid" time="0.02" steps="18"/></proof>
   </goal>
-  <goal name="WP_parameter partition_.47" expl="47. postcondition">
-  <proof prover="2"><result status="valid" time="0.03"/></proof>
+  <goal name="VC partition_.5" expl="5. loop invariant preservation">
+  <proof prover="4"><result status="valid" time="0.02" steps="20"/></proof>
   </goal>
-  <goal name="WP_parameter partition_.48" expl="48. postcondition">
-  <proof prover="2"><result status="valid" time="0.03"/></proof>
+  <goal name="VC partition_.6" expl="6. loop invariant preservation">
+  <proof prover="4"><result status="valid" time="0.03" steps="27"/></proof>
   </goal>
-  <goal name="WP_parameter partition_.49" expl="49. postcondition">
-  <proof prover="2"><result status="valid" time="0.02"/></proof>
+  <goal name="VC partition_.7" expl="7. loop variant decrease">
+  <proof prover="4"><result status="valid" time="0.02" steps="20"/></proof>
   </goal>
-  <goal name="WP_parameter partition_.50" expl="50. postcondition">
-  <proof prover="2"><result status="valid" time="0.02"/></proof>
+  <goal name="VC partition_.8" expl="8. loop invariant init">
+  <proof prover="4"><result status="valid" time="0.01" steps="17"/></proof>
   </goal>
-  <goal name="WP_parameter partition_.51" expl="51. postcondition">
-  <proof prover="2"><result status="valid" time="0.02"/></proof>
+  <goal name="VC partition_.9" expl="9. loop invariant init">
+  <proof prover="4"><result status="valid" time="0.01" steps="24"/></proof>
   </goal>
-  <goal name="WP_parameter partition_.52" expl="52. postcondition">
-  <proof prover="2"><result status="valid" time="0.02"/></proof>
+  <goal name="VC partition_.10" expl="10. index in array bounds">
+  <proof prover="4"><result status="valid" time="0.02" steps="20"/></proof>
   </goal>
-  <goal name="WP_parameter partition_.53" expl="53. postcondition">
-  <proof prover="2"><result status="valid" time="0.02"/></proof>
+  <goal name="VC partition_.11" expl="11. loop invariant preservation">
+  <proof prover="4"><result status="valid" time="0.02" steps="22"/></proof>
   </goal>
-  <goal name="WP_parameter partition_.54" expl="54. postcondition">
-  <proof prover="2"><result status="valid" time="0.02"/></proof>
+  <goal name="VC partition_.12" expl="12. loop invariant preservation">
+  <proof prover="4"><result status="valid" time="0.04" steps="29"/></proof>
   </goal>
-  <goal name="WP_parameter partition_.55" expl="55. postcondition">
-  <proof prover="2"><result status="valid" time="0.02"/></proof>
+  <goal name="VC partition_.13" expl="13. loop variant decrease">
+  <proof prover="4"><result status="valid" time="0.01" steps="22"/></proof>
   </goal>
-  <goal name="WP_parameter partition_.56" expl="56. loop invariant init">
-  <proof prover="2"><result status="valid" time="0.02"/></proof>
+  <goal name="VC partition_.14" expl="14. precondition">
+  <proof prover="4"><result status="valid" time="0.02" steps="22"/></proof>
   </goal>
-  <goal name="WP_parameter partition_.57" expl="57. loop invariant init">
-  <proof prover="2"><result status="valid" time="0.02"/></proof>
+  <goal name="VC partition_.15" expl="15. variant decrease">
+  <proof prover="4"><result status="valid" time="0.07" steps="87"/></proof>
   </goal>
-  <goal name="WP_parameter partition_.58" expl="58. index in array bounds">
-  <proof prover="2"><result status="valid" time="0.01"/></proof>
+  <goal name="VC partition_.16" expl="16. precondition">
+  <proof prover="4"><result status="valid" time="0.02" steps="34"/></proof>
   </goal>
-  <goal name="WP_parameter partition_.59" expl="59. loop invariant preservation">
-  <proof prover="2"><result status="valid" time="0.02"/></proof>
+  <goal name="VC partition_.17" expl="17. precondition">
+  <proof prover="4"><result status="valid" time="0.05" steps="128"/></proof>
   </goal>
-  <goal name="WP_parameter partition_.60" expl="60. loop invariant preservation">
-  <proof prover="2"><result status="valid" time="0.02"/></proof>
+  <goal name="VC partition_.18" expl="18. precondition">
+  <proof prover="4"><result status="valid" time="1.69" steps="666"/></proof>
   </goal>
-  <goal name="WP_parameter partition_.61" expl="61. loop variant decrease">
-  <proof prover="2"><result status="valid" time="0.02"/></proof>
+  <goal name="VC partition_.19" expl="19. precondition">
+  <proof prover="4"><result status="timeout" time="5.01"/></proof>
+  <proof prover="5"><result status="timeout" time="5.04"/></proof>
+  <proof prover="6"><result status="valid" time="0.41"/></proof>
   </goal>
-  <goal name="WP_parameter partition_.62" expl="62. precondition">
-  <proof prover="2"><result status="valid" time="0.02"/></proof>
+  <goal name="VC partition_.20" expl="20. precondition">
+  <proof prover="4"><result status="valid" time="0.08" steps="129"/></proof>
   </goal>
-  <goal name="WP_parameter partition_.63" expl="63. variant decrease">
-  <proof prover="2"><result status="valid" time="0.02"/></proof>
+  <goal name="VC partition_.21" expl="21. postcondition">
+  <proof prover="4"><result status="valid" time="0.02" steps="33"/></proof>
   </goal>
-  <goal name="WP_parameter partition_.64" expl="64. precondition">
-  <proof prover="2"><result status="valid" time="0.02"/></proof>
+  <goal name="VC partition_.22" expl="22. postcondition">
+  <proof prover="4"><result status="valid" time="0.08" steps="158"/></proof>
   </goal>
-  <goal name="WP_parameter partition_.65" expl="65. precondition">
-  <proof prover="2"><result status="valid" time="0.02"/></proof>
+  <goal name="VC partition_.23" expl="23. postcondition">
+  <proof prover="4"><result status="valid" time="0.02" steps="33"/></proof>
   </goal>
-  <goal name="WP_parameter partition_.66" expl="66. precondition">
-  <proof prover="2"><result status="valid" time="0.02"/></proof>
+  <goal name="VC partition_.24" expl="24. postcondition">
+  <proof prover="4"><result status="valid" time="0.02" steps="33"/></proof>
   </goal>
-  <goal name="WP_parameter partition_.67" expl="67. precondition">
-  <proof prover="2"><result status="valid" time="0.02"/></proof>
+  <goal name="VC partition_.25" expl="25. postcondition">
+  <proof prover="4"><result status="valid" time="0.03" steps="33"/></proof>
   </goal>
-  <goal name="WP_parameter partition_.68" expl="68. precondition">
-  <proof prover="2"><result status="valid" time="0.02"/></proof>
+  <goal name="VC partition_.26" expl="26. postcondition">
+  <proof prover="4"><result status="valid" time="0.03" steps="47"/></proof>
   </goal>
-  <goal name="WP_parameter partition_.69" expl="69. postcondition">
-  <proof prover="2"><result status="valid" time="0.02"/></proof>
+  <goal name="VC partition_.27" expl="27. postcondition">
+  <proof prover="4"><result status="valid" time="0.03" steps="47"/></proof>
   </goal>
-  <goal name="WP_parameter partition_.70" expl="70. postcondition">
-  <proof prover="2"><result status="valid" time="0.02"/></proof>
+  <goal name="VC partition_.28" expl="28. postcondition">
+  <proof prover="4"><result status="valid" time="0.02" steps="20"/></proof>
   </goal>
-  <goal name="WP_parameter partition_.71" expl="71. postcondition">
-  <proof prover="2"><result status="valid" time="0.02"/></proof>
+  <goal name="VC partition_.29" expl="29. postcondition">
+  <proof prover="4"><result status="valid" time="0.04" steps="98"/></proof>
   </goal>
-  <goal name="WP_parameter partition_.72" expl="72. postcondition">
-  <proof prover="2"><result status="valid" time="0.02"/></proof>
+  <goal name="VC partition_.30" expl="30. postcondition">
+  <proof prover="4"><result status="valid" time="0.02" steps="22"/></proof>
   </goal>
-  <goal name="WP_parameter partition_.73" expl="73. postcondition">
-  <proof prover="2"><result status="valid" time="0.02"/></proof>
+  <goal name="VC partition_.31" expl="31. postcondition">
+  <proof prover="4"><result status="valid" time="0.02" steps="22"/></proof>
   </goal>
-  <goal name="WP_parameter partition_.74" expl="74. postcondition">
-  <proof prover="2"><result status="valid" time="0.03"/></proof>
+  <goal name="VC partition_.32" expl="32. postcondition">
+  <proof prover="4"><result status="valid" time="0.02" steps="20"/></proof>
   </goal>
-  <goal name="WP_parameter partition_.75" expl="75. postcondition">
-  <proof prover="2"><result status="valid" time="0.04"/></proof>
+  <goal name="VC partition_.33" expl="33. postcondition">
+  <proof prover="4"><result status="valid" time="0.02" steps="27"/></proof>
   </goal>
-  <goal name="WP_parameter partition_.76" expl="76. postcondition">
-  <proof prover="2"><result status="valid" time="0.02"/></proof>
+  <goal name="VC partition_.34" expl="34. postcondition">
+  <proof prover="4"><result status="valid" time="0.02" steps="27"/></proof>
   </goal>
-  <goal name="WP_parameter partition_.77" expl="77. postcondition">
-  <proof prover="2"><result status="valid" time="0.02"/></proof>
+  <goal name="VC partition_.35" expl="35. precondition">
+  <proof prover="4"><result status="valid" time="0.01" steps="8"/></proof>
   </goal>
-  <goal name="WP_parameter partition_.78" expl="78. postcondition">
-  <proof prover="2"><result status="valid" time="0.02"/></proof>
+  <goal name="VC partition_.36" expl="36. precondition">
+  <proof prover="4"><result status="valid" time="0.02" steps="18"/></proof>
   </goal>
-  <goal name="WP_parameter partition_.79" expl="79. postcondition">
-  <proof prover="2"><result status="valid" time="0.02"/></proof>
+  <goal name="VC partition_.37" expl="37. precondition">
+  <proof prover="4"><result status="valid" time="0.02" steps="9"/></proof>
   </goal>
-  <goal name="WP_parameter partition_.80" expl="80. postcondition">
-  <proof prover="2"><result status="valid" time="0.02"/></proof>
+  <goal name="VC partition_.38" expl="38. precondition">
+  <proof prover="4"><result status="valid" time="0.02" steps="9"/></proof>
   </goal>
-  <goal name="WP_parameter partition_.81" expl="81. postcondition">
-  <proof prover="2"><result status="valid" time="0.02"/></proof>
+  <goal name="VC partition_.39" expl="39. precondition">
+  <proof prover="4"><result status="valid" time="0.02" steps="0"/></proof>
   </goal>
-  <goal name="WP_parameter partition_.82" expl="82. postcondition">
-  <proof prover="2"><result status="valid" time="0.02"/></proof>
+  <goal name="VC partition_.40" expl="40. assertion">
+  <proof prover="4"><result status="valid" time="0.02" steps="18"/></proof>
   </goal>
-  <goal name="WP_parameter partition_.83" expl="83. precondition">
-  <proof prover="2"><result status="valid" time="0.02"/></proof>
+  <goal name="VC partition_.41" expl="41. precondition">
+  <proof prover="4"><result status="valid" time="0.02" steps="15"/></proof>
   </goal>
-  <goal name="WP_parameter partition_.84" expl="84. variant decrease">
-  <proof prover="2"><result status="valid" time="0.08"/></proof>
+  <goal name="VC partition_.42" expl="42. postcondition">
+  <proof prover="4"><result status="valid" time="0.02" steps="19"/></proof>
   </goal>
-  <goal name="WP_parameter partition_.85" expl="85. precondition">
-  <proof prover="2"><result status="valid" time="0.02"/></proof>
+  <goal name="VC partition_.43" expl="43. postcondition">
+  <proof prover="4"><result status="valid" time="0.08" steps="127"/></proof>
   </goal>
-  <goal name="WP_parameter partition_.86" expl="86. precondition">
-  <proof prover="2"><result status="valid" time="0.02"/></proof>
+  <goal name="VC partition_.44" expl="44. postcondition">
+  <proof prover="4"><result status="timeout" time="5.00"/></proof>
+  <proof prover="6"><result status="valid" time="0.25"/></proof>
   </goal>
-  <goal name="WP_parameter partition_.87" expl="87. precondition">
-  <transf name="inline_goal">
-   <goal name="WP_parameter partition_.87.1" expl="1. precondition">
-   <transf name="inline_goal">
-    <goal name="WP_parameter partition_.87.1.1" expl="1. precondition">
-    <transf name="inline_goal">
-     <goal name="WP_parameter partition_.87.1.1.1" expl="1. precondition">
-     <proof prover="2"><result status="valid" time="0.09"/></proof>
-     </goal>
-    </transf>
-    </goal>
-   </transf>
-   </goal>
-  </transf>
+  <goal name="VC partition_.45" expl="45. postcondition">
+  <proof prover="4"><result status="timeout" time="5.00"/></proof>
+  <proof prover="6"><result status="valid" time="0.42"/></proof>
   </goal>
-  <goal name="WP_parameter partition_.88" expl="88. precondition">
-  <proof prover="2"><result status="valid" time="0.02"/></proof>
+  <goal name="VC partition_.46" expl="46. postcondition">
+  <proof prover="4"><result status="valid" time="4.52" steps="1916"/></proof>
   </goal>
-  <goal name="WP_parameter partition_.89" expl="89. precondition">
-  <proof prover="2"><result status="valid" time="0.10"/></proof>
+  <goal name="VC partition_.47" expl="47. precondition">
+  <proof prover="4"><result status="valid" time="0.02" steps="19"/></proof>
   </goal>
-  <goal name="WP_parameter partition_.90" expl="90. postcondition">
-  <proof prover="2"><result status="valid" time="0.02"/></proof>
+  <goal name="VC partition_.48" expl="48. postcondition">
+  <proof prover="4"><result status="valid" time="0.02" steps="20"/></proof>
   </goal>
-  <goal name="WP_parameter partition_.91" expl="91. postcondition">
-  <proof prover="2"><result status="valid" time="0.03"/></proof>
+  <goal name="VC partition_.49" expl="49. postcondition">
+  <proof prover="4"><result status="valid" time="0.05" steps="128"/></proof>
   </goal>
-  <goal name="WP_parameter partition_.92" expl="92. postcondition">
-  <proof prover="2"><result status="valid" time="0.03"/></proof>
+  <goal name="VC partition_.50" expl="50. postcondition">
+  <proof prover="4"><result status="valid" time="2.03" steps="1129"/></proof>
   </goal>
-  <goal name="WP_parameter partition_.93" expl="93. postcondition">
-  <proof prover="2"><result status="valid" time="0.03"/></proof>
+  <goal name="VC partition_.51" expl="51. postcondition">
+  <proof prover="4"><result status="timeout" time="5.00"/></proof>
+  <proof prover="6"><result status="valid" time="0.31"/></proof>
   </goal>
-  <goal name="WP_parameter partition_.94" expl="94. postcondition">
-  <proof prover="2"><result status="valid" time="0.02"/></proof>
+  <goal name="VC partition_.52" expl="52. postcondition">
+  <proof prover="4"><result status="valid" time="0.49" steps="329"/></proof>
   </goal>
-  <goal name="WP_parameter partition_.95" expl="95. postcondition">
-  <proof prover="2"><result status="valid" time="0.07"/></proof>
+  <goal name="VC partition_.53" expl="53. postcondition">
+  <proof prover="4"><result status="valid" time="0.02" steps="18"/></proof>
   </goal>
-  <goal name="WP_parameter partition_.96" expl="96. postcondition">
-  <proof prover="2"><result status="valid" time="0.08"/></proof>
+  <goal name="VC partition_.54" expl="54. postcondition">
+  <proof prover="4"><result status="valid" time="0.02" steps="16"/></proof>
   </goal>
-  <goal name="WP_parameter partition_.97" expl="97. postcondition">
-  <proof prover="2"><result status="valid" time="0.03"/></proof>
+  <goal name="VC partition_.55" expl="55. postcondition">
+  <proof prover="4"><result status="valid" time="0.03" steps="23"/></proof>
   </goal>
-  <goal name="WP_parameter partition_.98" expl="98. postcondition">
-  <proof prover="2"><result status="valid" time="0.02"/></proof>
+  <goal name="VC partition_.56" expl="56. postcondition">
+  <proof prover="4"><result status="valid" time="0.04" steps="24"/></proof>
   </goal>
-  <goal name="WP_parameter partition_.99" expl="99. postcondition">
-  <proof prover="2"><result status="valid" time="0.01"/></proof>
-  </goal>
-  <goal name="WP_parameter partition_.100" expl="100. postcondition">
-  <proof prover="2"><result status="valid" time="0.02"/></proof>
-  </goal>
-  <goal name="WP_parameter partition_.101" expl="101. postcondition">
-  <proof prover="2"><result status="valid" time="0.02"/></proof>
-  </goal>
-  <goal name="WP_parameter partition_.102" expl="102. postcondition">
-  <proof prover="2"><result status="valid" time="0.02"/></proof>
-  </goal>
-  <goal name="WP_parameter partition_.103" expl="103. postcondition">
-  <proof prover="2"><result status="valid" time="0.02"/></proof>
-  </goal>
-  <goal name="WP_parameter partition_.104" expl="104. precondition">
-  <proof prover="2"><result status="valid" time="0.03"/></proof>
-  </goal>
-  <goal name="WP_parameter partition_.105" expl="105. precondition">
-  <proof prover="2"><result status="valid" time="0.02"/></proof>
-  </goal>
-  <goal name="WP_parameter partition_.106" expl="106. precondition">
-  <proof prover="2"><result status="valid" time="0.01"/></proof>
-  </goal>
-  <goal name="WP_parameter partition_.107" expl="107. precondition">
-  <proof prover="2"><result status="valid" time="0.01"/></proof>
-  </goal>
-  <goal name="WP_parameter partition_.108" expl="108. precondition">
-  <proof prover="2"><result status="valid" time="0.02"/></proof>
-  </goal>
-  <goal name="WP_parameter partition_.109" expl="109. assertion">
-  <proof prover="2"><result status="valid" time="0.02"/></proof>
-  </goal>
-  <goal name="WP_parameter partition_.110" expl="110. precondition">
-  <proof prover="2"><result status="valid" time="0.01"/></proof>
-  </goal>
-  <goal name="WP_parameter partition_.111" expl="111. postcondition">
-  <proof prover="2"><result status="valid" time="0.02"/></proof>
-  </goal>
-  <goal name="WP_parameter partition_.112" expl="112. postcondition">
-  <proof prover="2"><result status="valid" time="0.05"/></proof>
-  </goal>
-  <goal name="WP_parameter partition_.113" expl="113. postcondition">
-  <transf name="inline_goal">
-   <goal name="WP_parameter partition_.113.1" expl="1. postcondition">
-   <transf name="inline_goal">
-    <goal name="WP_parameter partition_.113.1.1" expl="1. postcondition">
-    <transf name="inline_goal">
-     <goal name="WP_parameter partition_.113.1.1.1" expl="1. postcondition">
-     <proof prover="2"><result status="valid" time="0.54"/></proof>
-     </goal>
-    </transf>
-    </goal>
-   </transf>
-   </goal>
-  </transf>
-  </goal>
-  <goal name="WP_parameter partition_.114" expl="114. postcondition">
-  <transf name="inline_goal">
-   <goal name="WP_parameter partition_.114.1" expl="1. postcondition">
-   <transf name="inline_goal">
-    <goal name="WP_parameter partition_.114.1.1" expl="1. postcondition">
-    <transf name="inline_goal">
-     <goal name="WP_parameter partition_.114.1.1.1" expl="1. postcondition">
-     <proof prover="2"><result status="valid" time="0.35"/></proof>
-     </goal>
-    </transf>
-    </goal>
-   </transf>
-   </goal>
-  </transf>
-  </goal>
-  <goal name="WP_parameter partition_.115" expl="115. postcondition">
-  <transf name="inline_goal">
-   <goal name="WP_parameter partition_.115.1" expl="1. postcondition">
-   <transf name="inline_goal">
-    <goal name="WP_parameter partition_.115.1.1" expl="1. postcondition">
-    <transf name="inline_goal">
-     <goal name="WP_parameter partition_.115.1.1.1" expl="1. postcondition">
-     <proof prover="2" timelimit="15"><result status="valid" time="0.46"/></proof>
-     </goal>
-    </transf>
-    </goal>
-   </transf>
-   </goal>
-  </transf>
-  </goal>
-  <goal name="WP_parameter partition_.116" expl="116. precondition">
-  <proof prover="2"><result status="valid" time="0.02"/></proof>
-  </goal>
-  <goal name="WP_parameter partition_.117" expl="117. postcondition">
-  <proof prover="2"><result status="valid" time="0.02"/></proof>
-  </goal>
-  <goal name="WP_parameter partition_.118" expl="118. postcondition">
-  <proof prover="2"><result status="valid" time="0.05"/></proof>
-  </goal>
-  <goal name="WP_parameter partition_.119" expl="119. postcondition">
-  <transf name="inline_goal">
-   <goal name="WP_parameter partition_.119.1" expl="1. postcondition">
-   <transf name="inline_goal">
-    <goal name="WP_parameter partition_.119.1.1" expl="1. postcondition">
-    <transf name="inline_goal">
-     <goal name="WP_parameter partition_.119.1.1.1" expl="1. postcondition">
-     <proof prover="2"><result status="valid" time="0.38"/></proof>
-     </goal>
-    </transf>
-    </goal>
-   </transf>
-   </goal>
-  </transf>
-  </goal>
-  <goal name="WP_parameter partition_.120" expl="120. postcondition">
-  <transf name="inline_goal">
-   <goal name="WP_parameter partition_.120.1" expl="1. postcondition">
-   <transf name="inline_goal">
-    <goal name="WP_parameter partition_.120.1.1" expl="1. postcondition">
-    <transf name="inline_goal">
-     <goal name="WP_parameter partition_.120.1.1.1" expl="1. postcondition">
-     <proof prover="2"><result status="valid" time="0.32"/></proof>
-     </goal>
-    </transf>
-    </goal>
-   </transf>
-   </goal>
-  </transf>
-  </goal>
-  <goal name="WP_parameter partition_.121" expl="121. postcondition">
-  <transf name="inline_goal">
-   <goal name="WP_parameter partition_.121.1" expl="1. postcondition">
-   <transf name="inline_goal">
-    <goal name="WP_parameter partition_.121.1.1" expl="1. postcondition">
-    <transf name="inline_goal">
-     <goal name="WP_parameter partition_.121.1.1.1" expl="1. postcondition">
-     <proof prover="2"><result status="valid" time="0.47"/></proof>
-     </goal>
-    </transf>
-    </goal>
-   </transf>
-   </goal>
-  </transf>
-  </goal>
-  <goal name="WP_parameter partition_.122" expl="122. postcondition">
-  <proof prover="2"><result status="valid" time="0.02"/></proof>
-  </goal>
-  <goal name="WP_parameter partition_.123" expl="123. postcondition">
-  <proof prover="2"><result status="valid" time="0.01"/></proof>
-  </goal>
-  <goal name="WP_parameter partition_.124" expl="124. postcondition">
-  <proof prover="2"><result status="valid" time="0.04"/></proof>
-  </goal>
-  <goal name="WP_parameter partition_.125" expl="125. postcondition">
-  <proof prover="2"><result status="valid" time="0.04"/></proof>
-  </goal>
-  <goal name="WP_parameter partition_.126" expl="126. postcondition">
-  <proof prover="2"><result status="valid" time="0.03"/></proof>
+  <goal name="VC partition_.57" expl="57. postcondition">
+  <proof prover="4"><result status="valid" time="0.02" steps="23"/></proof>
   </goal>
  </transf>
  </goal>
- <goal name="WP_parameter partition" expl="VC for partition">
+ <goal name="VC partition" expl="VC for partition">
  <transf name="split_goal_wp">
-  <goal name="WP_parameter partition.1" expl="1. precondition">
-  <proof prover="2"><result status="valid" time="0.01"/></proof>
-  </goal>
-  <goal name="WP_parameter partition.2" expl="2. postcondition">
-  <proof prover="2"><result status="valid" time="0.00"/></proof>
-  </goal>
-  <goal name="WP_parameter partition.3" expl="3. postcondition">
-  <proof prover="2"><result status="valid" time="0.02"/></proof>
-  </goal>
-  <goal name="WP_parameter partition.4" expl="4. postcondition">
-  <proof prover="1"><result status="valid" time="1.92"/></proof>
-  <metas>
-   <ts_pos name="ref" arity="1" id="2237"
-    ip_theory="Ref">
-    <ip_library name="ref"/>
-    <ip_qualid name="ref"/>
-   </ts_pos>
-   <ls_pos name="zero" id="286"
-    ip_theory="Int">
-    <ip_library name="int"/>
-    <ip_qualid name="zero"/>
-   </ls_pos>
-   <ls_pos name="one" id="287"
-    ip_theory="Int">
-    <ip_library name="int"/>
-    <ip_qualid name="one"/>
-   </ls_pos>
-   <ls_pos name="infix &lt;" id="288"
-    ip_theory="Int">
-    <ip_library name="int"/>
-    <ip_qualid name="infix &lt;"/>
-   </ls_pos>
-   <ls_pos name="infix &gt;" id="291"
-    ip_theory="Int">
-    <ip_library name="int"/>
-    <ip_qualid name="infix &gt;"/>
-   </ls_pos>
-   <ls_pos name="infix +" id="1457"
-    ip_theory="Int">
-    <ip_library name="int"/>
-    <ip_qualid name="infix +"/>
-   </ls_pos>
-   <ls_pos name="prefix -" id="1458"
-    ip_theory="Int">
-    <ip_library name="int"/>
-    <ip_qualid name="prefix -"/>
-   </ls_pos>
-   <ls_pos name="infix *" id="1459"
-    ip_theory="Int">
-    <ip_library name="int"/>
-    <ip_qualid name="infix *"/>
-   </ls_pos>
-   <ls_pos name="prefix !" id="2243"
-    ip_theory="Ref">
-    <ip_library name="ref"/>
-    <ip_qualid name="prefix !"/>
-   </ls_pos>
-   <ls_pos name="get" id="2389"
-    ip_theory="Map">
-    <ip_library name="map"/>
-    <ip_qualid name="get"/>
-   </ls_pos>
-   <ls_pos name="set" id="2392"
-    ip_theory="Map">
-    <ip_library name="map"/>
-    <ip_qualid name="set"/>
-   </ls_pos>
-   <ls_pos name="mixfix [&lt;-]" id="2412"
-    ip_theory="Map">
-    <ip_library name="map"/>
-    <ip_qualid name="mixfix [&lt;-]"/>
-   </ls_pos>
-   <ls_pos name="const" id="2443"
-    ip_theory="Map">
-    <ip_library name="map"/>
-    <ip_qualid name="const"/>
-   </ls_pos>
-   <ls_pos name="occ" id="2618"
-    ip_theory="Occ">
-    <ip_library name="map"/>
-    <ip_qualid name="occ"/>
-   </ls_pos>
-   <ls_pos name="get" id="2823"
-    ip_theory="Array">
-    <ip_library name="array"/>
-    <ip_qualid name="get"/>
-   </ls_pos>
-   <ls_pos name="set" id="2838"
-    ip_theory="Array">
-    <ip_library name="array"/>
-    <ip_qualid name="set"/>
-   </ls_pos>
-   <ls_pos name="mixfix []" id="2863"
-    ip_theory="Array">
-    <ip_library name="array"/>
-    <ip_qualid name="mixfix []"/>
-   </ls_pos>
-   <ls_pos name="mixfix [&lt;-]" id="2880"
-    ip_theory="Array">
-    <ip_library name="array"/>
-    <ip_qualid name="mixfix [&lt;-]"/>
-   </ls_pos>
-   <ls_pos name="make" id="2981"
-    ip_theory="Array">
-    <ip_library name="array"/>
-    <ip_qualid name="make"/>
-   </ls_pos>
-   <ls_pos name="array_eq" id="3257"
-    ip_theory="ArrayEq">
-    <ip_library name="array"/>
-    <ip_qualid name="array_eq"/>
-   </ls_pos>
-   <pr_pos name="Assoc" id="1460"
-    ip_theory="Int">
-    <ip_library name="int"/>
-    <ip_qualid name="CommutativeGroup"/>
-    <ip_qualid name="Assoc"/>
-   </pr_pos>
-   <pr_pos name="Unit_def_l" id="1467"
-    ip_theory="Int">
-    <ip_library name="int"/>
-    <ip_qualid name="CommutativeGroup"/>
-    <ip_qualid name="Unit_def_l"/>
-   </pr_pos>
-   <pr_pos name="Unit_def_r" id="1470"
-    ip_theory="Int">
-    <ip_library name="int"/>
-    <ip_qualid name="CommutativeGroup"/>
-    <ip_qualid name="Unit_def_r"/>
-   </pr_pos>
-   <pr_pos name="Inv_def_l" id="1473"
-    ip_theory="Int">
-    <ip_library name="int"/>
-    <ip_qualid name="CommutativeGroup"/>
-    <ip_qualid name="Inv_def_l"/>
-   </pr_pos>
-   <pr_pos name="Inv_def_r" id="1476"
-    ip_theory="Int">
-    <ip_library name="int"/>
-    <ip_qualid name="CommutativeGroup"/>
-    <ip_qualid name="Inv_def_r"/>
-   </pr_pos>
-   <pr_pos name="Comm" id="1479"
-    ip_theory="Int">
-    <ip_library name="int"/>
-    <ip_qualid name="CommutativeGroup"/>
-    <ip_qualid name="Comm"/>
-    <ip_qualid name="Comm"/>
-   </pr_pos>
-   <pr_pos name="Assoc" id="1484"
-    ip_theory="Int">
-    <ip_library name="int"/>
-    <ip_qualid name="Assoc"/>
-    <ip_qualid name="Assoc"/>
-   </pr_pos>
-   <pr_pos name="Mul_distr_l" id="1491"
-    ip_theory="Int">
-    <ip_library name="int"/>
-    <ip_qualid name="Mul_distr_l"/>
-   </pr_pos>
-   <pr_pos name="Mul_distr_r" id="1498"
-    ip_theory="Int">
-    <ip_library name="int"/>
-    <ip_qualid name="Mul_distr_r"/>
-   </pr_pos>
-   <pr_pos name="Comm" id="1516"
-    ip_theory="Int">
-    <ip_library name="int"/>
-    <ip_qualid name="Comm"/>
-    <ip_qualid name="Comm"/>
-   </pr_pos>
-   <pr_pos name="Unitary" id="1521"
-    ip_theory="Int">
-    <ip_library name="int"/>
-    <ip_qualid name="Unitary"/>
-   </pr_pos>
-   <pr_pos name="NonTrivialRing" id="1524"
-    ip_theory="Int">
-    <ip_library name="int"/>
-    <ip_qualid name="NonTrivialRing"/>
-   </pr_pos>
-   <pr_pos name="Refl" id="1536"
-    ip_theory="Int">
-    <ip_library name="int"/>
-    <ip_qualid name="Refl"/>
-   </pr_pos>
-   <pr_pos name="Trans" id="1539"
-    ip_theory="Int">
-    <ip_library name="int"/>
-    <ip_qualid name="Trans"/>
-   </pr_pos>
-   <pr_pos name="Antisymm" id="1546"
-    ip_theory="Int">
-    <ip_library name="int"/>
-    <ip_qualid name="Antisymm"/>
-   </pr_pos>
-   <pr_pos name="Total" id="1551"
-    ip_theory="Int">
-    <ip_library name="int"/>
-    <ip_qualid name="Total"/>
-   </pr_pos>
-   <pr_pos name="ZeroLessOne" id="1556"
-    ip_theory="Int">
-    <ip_library name="int"/>
-    <ip_qualid name="ZeroLessOne"/>
-   </pr_pos>
-   <pr_pos name="CompatOrderMult" id="1564"
-    ip_theory="Int">
-    <ip_library name="int"/>
-    <ip_qualid name="CompatOrderMult"/>
-   </pr_pos>
-   <pr_pos name="Select_eq" id="2425"
-    ip_theory="Map">
-    <ip_library name="map"/>
-    <ip_qualid name="Select_eq"/>
-   </pr_pos>
-   <pr_pos name="Select_neq" id="2434"
-    ip_theory="Map">
-    <ip_library name="map"/>
-    <ip_qualid name="Select_neq"/>
-   </pr_pos>
-   <pr_pos name="Const" id="2445"
-    ip_theory="Map">
-    <ip_library name="map"/>
-    <ip_qualid name="Const"/>
-   </pr_pos>
-   <pr_pos name="exchange_set" id="2524"
-    ip_theory="MapExchange">
-    <ip_library name="map"/>
-    <ip_qualid name="exchange_set"/>
-   </pr_pos>
-   <pr_pos name="occ_right_no_add" id="2632"
-    ip_theory="Occ">
-    <ip_library name="map"/>
-    <ip_qualid name="occ_right_no_add"/>
-   </pr_pos>
-   <pr_pos name="occ_bounds" id="2650"
-    ip_theory="Occ">
-    <ip_library name="map"/>
-    <ip_qualid name="occ_bounds"/>
-   </pr_pos>
-   <pr_pos name="occ_append" id="2659"
-    ip_theory="Occ">
-    <ip_library name="map"/>
-    <ip_qualid name="occ_append"/>
-   </pr_pos>
-   <pr_pos name="occ_neq" id="2670"
-    ip_theory="Occ">
-    <ip_library name="map"/>
-    <ip_qualid name="occ_neq"/>
-   </pr_pos>
-   <pr_pos name="occ_exists" id="2681"
-    ip_theory="Occ">
-    <ip_library name="map"/>
-    <ip_qualid name="occ_exists"/>
-   </pr_pos>
-   <pr_pos name="occ_pos" id="2692"
-    ip_theory="Occ">
-    <ip_library name="map"/>
-    <ip_qualid name="occ_pos"/>
-   </pr_pos>
-   <meta name="remove_logic">
-    <meta_arg_ls id="286"/>
-   </meta>
-   <meta name="remove_logic">
-    <meta_arg_ls id="287"/>
-   </meta>
-   <meta name="remove_logic">
-    <meta_arg_ls id="288"/>
-   </meta>
-   <meta name="remove_logic">
-    <meta_arg_ls id="291"/>
-   </meta>
-   <meta name="remove_logic">
-    <meta_arg_ls id="1457"/>
-   </meta>
-   <meta name="remove_logic">
-    <meta_arg_ls id="1458"/>
-   </meta>
-   <meta name="remove_logic">
-    <meta_arg_ls id="1459"/>
-   </meta>
-   <meta name="remove_logic">
-    <meta_arg_ls id="2243"/>
-   </meta>
-   <meta name="remove_logic">
-    <meta_arg_ls id="2389"/>
-   </meta>
-   <meta name="remove_logic">
-    <meta_arg_ls id="2392"/>
-   </meta>
-   <meta name="remove_logic">
-    <meta_arg_ls id="2412"/>
-   </meta>
-   <meta name="remove_logic">
-    <meta_arg_ls id="2443"/>
-   </meta>
-   <meta name="remove_logic">
-    <meta_arg_ls id="2618"/>
-   </meta>
-   <meta name="remove_logic">
-    <meta_arg_ls id="2823"/>
-   </meta>
-   <meta name="remove_logic">
-    <meta_arg_ls id="2838"/>
-   </meta>
-   <meta name="remove_logic">
-    <meta_arg_ls id="2863"/>
-   </meta>
-   <meta name="remove_logic">
-    <meta_arg_ls id="2880"/>
-   </meta>
-   <meta name="remove_logic">
-    <meta_arg_ls id="2981"/>
-   </meta>
-   <meta name="remove_logic">
-    <meta_arg_ls id="3257"/>
-   </meta>
-   <meta name="remove_prop">
-    <meta_arg_pr id="1460"/>
-   </meta>
-   <meta name="remove_prop">
-    <meta_arg_pr id="1467"/>
-   </meta>
-   <meta name="remove_prop">
-    <meta_arg_pr id="1470"/>
-   </meta>
-   <meta name="remove_prop">
-    <meta_arg_pr id="1473"/>
-   </meta>
-   <meta name="remove_prop">
-    <meta_arg_pr id="1476"/>
-   </meta>
-   <meta name="remove_prop">
-    <meta_arg_pr id="1479"/>
-   </meta>
-   <meta name="remove_prop">
-    <meta_arg_pr id="1484"/>
-   </meta>
-   <meta name="remove_prop">
-    <meta_arg_pr id="1491"/>
-   </meta>
-   <meta name="remove_prop">
-    <meta_arg_pr id="1498"/>
-   </meta>
-   <meta name="remove_prop">
-    <meta_arg_pr id="1516"/>
-   </meta>
-   <meta name="remove_prop">
-    <meta_arg_pr id="1521"/>
-   </meta>
-   <meta name="remove_prop">
-    <meta_arg_pr id="1524"/>
-   </meta>
-   <meta name="remove_prop">
-    <meta_arg_pr id="1536"/>
-   </meta>
-   <meta name="remove_prop">
-    <meta_arg_pr id="1539"/>
-   </meta>
-   <meta name="remove_prop">
-    <meta_arg_pr id="1546"/>
-   </meta>
-   <meta name="remove_prop">
-    <meta_arg_pr id="1551"/>
-   </meta>
-   <meta name="remove_prop">
-    <meta_arg_pr id="1556"/>
-   </meta>
-   <meta name="remove_prop">
-    <meta_arg_pr id="1564"/>
-   </meta>
-   <meta name="remove_prop">
-    <meta_arg_pr id="2425"/>
-   </meta>
-   <meta name="remove_prop">
-    <meta_arg_pr id="2434"/>
-   </meta>
-   <meta name="remove_prop">
-    <meta_arg_pr id="2445"/>
-   </meta>
-   <meta name="remove_prop">
-    <meta_arg_pr id="2524"/>
-   </meta>
-   <meta name="remove_prop">
-    <meta_arg_pr id="2632"/>
-   </meta>
-   <meta name="remove_prop">
-    <meta_arg_pr id="2650"/>
-   </meta>
-   <meta name="remove_prop">
-    <meta_arg_pr id="2659"/>
-   </meta>
-   <meta name="remove_prop">
-    <meta_arg_pr id="2670"/>
-   </meta>
-   <meta name="remove_prop">
-    <meta_arg_pr id="2681"/>
-   </meta>
-   <meta name="remove_prop">
-    <meta_arg_pr id="2692"/>
-   </meta>
-   <meta name="remove_type">
-    <meta_arg_ts id="2237"/>
-   </meta>
-   <goal name="WP_parameter partition.4" expl="4. postcondition">
-   <transf name="eliminate_builtin">
-    <goal name="WP_parameter partition.4.1" expl="1. postcondition">
-    <proof prover="0"><result status="valid" time="1.76"/></proof>
-    <proof prover="1"><result status="valid" time="0.04"/></proof>
-    <proof prover="3"><result status="valid" time="0.02"/></proof>
-    </goal>
-   </transf>
-   </goal>
-  </metas>
+  <goal name="VC partition.1" expl="1. precondition">
+  <proof prover="4"><result status="valid" time="0.01" steps="3"/></proof>
+  </goal>
+  <goal name="VC partition.2" expl="2. postcondition">
+  <proof prover="4"><result status="valid" time="0.01" steps="8"/></proof>
+  </goal>
+  <goal name="VC partition.3" expl="3. postcondition">
+  <proof prover="4"><result status="valid" time="0.02" steps="8"/></proof>
+  </goal>
+  <goal name="VC partition.4" expl="4. postcondition">
+  <proof prover="4" timelimit="30"><result status="valid" time="19.47" steps="455"/></proof>
   </goal>
  </transf>
  </goal>
diff --git a/examples/algo63/why3shapes.gz b/examples/algo63/why3shapes.gz
index 0338d179d4bb702a682241196494711493130779..56e90735aabafe4a9670fbf558a5995cbf94453b 100644
GIT binary patch
literal 4309
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
QJATv`=pCN5^B4mI01rb{9{>OV

literal 10172
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

diff --git a/examples/algo63_fastwp/why3session.xml b/examples/algo63_fastwp/why3session.xml
new file mode 100644
index 0000000000..aa0c8c8385
--- /dev/null
+++ b/examples/algo63_fastwp/why3session.xml
@@ -0,0 +1,180 @@
+<?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="Alt-Ergo" version="0.99.1" timelimit="5" memlimit="1000"/>
+<prover id="1" name="CVC4" version="1.4" timelimit="5" memlimit="1000"/>
+<prover id="2" name="Z3" version="4.3.2" timelimit="5" memlimit="1000"/>
+<file name="../algo63.mlw" expanded="true">
+<theory name="Algo63" sum="194369664eddb4417ee380157f3a70d4" expanded="true">
+ <goal name="VC exchange" expl="VC for exchange">
+ <transf name="split_goal_wp">
+  <goal name="VC exchange.1" expl="1. index in array bounds">
+  <proof prover="0"><result status="valid" time="0.01" steps="6"/></proof>
+  </goal>
+  <goal name="VC exchange.2" expl="2. index in array bounds">
+  <proof prover="0"><result status="valid" time="0.02" steps="6"/></proof>
+  </goal>
+  <goal name="VC exchange.3" expl="3. index in array bounds">
+  <proof prover="0"><result status="valid" time="0.02" steps="6"/></proof>
+  </goal>
+  <goal name="VC exchange.4" expl="4. index in array bounds">
+  <proof prover="0"><result status="valid" time="0.01" steps="8"/></proof>
+  </goal>
+  <goal name="VC exchange.5" expl="5. assertion">
+  <proof prover="0"><result status="valid" time="0.02" steps="30"/></proof>
+  </goal>
+  <goal name="VC exchange.6" expl="6. postcondition">
+  <proof prover="0"><result status="valid" time="0.01" steps="11"/></proof>
+  </goal>
+  <goal name="VC exchange.7" expl="7. postcondition">
+  <proof prover="0"><result status="valid" time="0.02" steps="15"/></proof>
+  </goal>
+ </transf>
+ </goal>
+ <goal name="VC partition_" expl="VC for partition_">
+ <transf name="split_goal_wp">
+  <goal name="VC partition_.1" expl="1. index in array bounds">
+  <proof prover="0"><result status="valid" time="0.02" steps="5"/></proof>
+  </goal>
+  <goal name="VC partition_.2" expl="2. loop invariant init">
+  <proof prover="0"><result status="valid" time="0.02" steps="15"/></proof>
+  </goal>
+  <goal name="VC partition_.3" expl="3. loop invariant init">
+  <proof prover="0"><result status="valid" time="0.02" steps="22"/></proof>
+  </goal>
+  <goal name="VC partition_.4" expl="4. index in array bounds">
+  <proof prover="0"><result status="valid" time="0.01" steps="18"/></proof>
+  </goal>
+  <goal name="VC partition_.5" expl="5. loop invariant preservation">
+  <proof prover="0"><result status="valid" time="0.01" steps="20"/></proof>
+  </goal>
+  <goal name="VC partition_.6" expl="6. loop invariant preservation">
+  <proof prover="0"><result status="valid" time="0.03" steps="27"/></proof>
+  </goal>
+  <goal name="VC partition_.7" expl="7. loop variant decrease">
+  <proof prover="0"><result status="valid" time="0.02" steps="20"/></proof>
+  </goal>
+  <goal name="VC partition_.8" expl="8. loop invariant init">
+  <proof prover="0"><result status="valid" time="0.01" steps="17"/></proof>
+  </goal>
+  <goal name="VC partition_.9" expl="9. loop invariant init">
+  <proof prover="0"><result status="valid" time="0.02" steps="24"/></proof>
+  </goal>
+  <goal name="VC partition_.10" expl="10. index in array bounds">
+  <proof prover="0"><result status="valid" time="0.01" steps="20"/></proof>
+  </goal>
+  <goal name="VC partition_.11" expl="11. loop invariant preservation">
+  <proof prover="0"><result status="valid" time="0.02" steps="22"/></proof>
+  </goal>
+  <goal name="VC partition_.12" expl="12. loop invariant preservation">
+  <proof prover="0"><result status="valid" time="0.02" steps="29"/></proof>
+  </goal>
+  <goal name="VC partition_.13" expl="13. loop variant decrease">
+  <proof prover="0"><result status="valid" time="0.02" steps="22"/></proof>
+  </goal>
+  <goal name="VC partition_.14" expl="14. precondition">
+  <proof prover="0"><result status="valid" time="0.02" steps="22"/></proof>
+  </goal>
+  <goal name="VC partition_.15" expl="15. variant decrease">
+  <proof prover="0"><result status="valid" time="0.04" steps="87"/></proof>
+  </goal>
+  <goal name="VC partition_.16" expl="16. precondition">
+  <proof prover="0"><result status="valid" time="0.02" steps="34"/></proof>
+  </goal>
+  <goal name="VC partition_.17" expl="17. precondition">
+  <proof prover="0"><result status="valid" time="0.06" steps="128"/></proof>
+  </goal>
+  <goal name="VC partition_.18" expl="18. precondition">
+  <proof prover="0"><result status="valid" time="1.93" steps="780"/></proof>
+  </goal>
+  <goal name="VC partition_.19" expl="19. precondition">
+  <proof prover="2"><result status="valid" time="0.36"/></proof>
+  </goal>
+  <goal name="VC partition_.20" expl="20. precondition">
+  <proof prover="0"><result status="valid" time="0.08" steps="129"/></proof>
+  </goal>
+  <goal name="VC partition_.21" expl="21. postcondition">
+  <proof prover="0"><result status="valid" time="0.04" steps="55"/></proof>
+  </goal>
+  <goal name="VC partition_.22" expl="22. postcondition">
+  <proof prover="0"><result status="valid" time="0.31" steps="588"/></proof>
+  </goal>
+  <goal name="VC partition_.23" expl="23. postcondition">
+  <proof prover="0"><result status="valid" time="0.03" steps="57"/></proof>
+  </goal>
+  <goal name="VC partition_.24" expl="24. postcondition">
+  <proof prover="0"><result status="valid" time="0.02" steps="51"/></proof>
+  </goal>
+  <goal name="VC partition_.25" expl="25. postcondition">
+  <proof prover="0"><result status="valid" time="0.03" steps="52"/></proof>
+  </goal>
+  <goal name="VC partition_.26" expl="26. postcondition">
+  <proof prover="0"><result status="valid" time="0.07" steps="142"/></proof>
+  </goal>
+  <goal name="VC partition_.27" expl="27. postcondition">
+  <proof prover="0"><result status="valid" time="0.07" steps="142"/></proof>
+  </goal>
+  <goal name="VC partition_.28" expl="28. precondition">
+  <proof prover="0"><result status="valid" time="0.02" steps="8"/></proof>
+  </goal>
+  <goal name="VC partition_.29" expl="29. precondition">
+  <proof prover="0"><result status="valid" time="0.02" steps="18"/></proof>
+  </goal>
+  <goal name="VC partition_.30" expl="30. precondition">
+  <proof prover="0"><result status="valid" time="0.01" steps="9"/></proof>
+  </goal>
+  <goal name="VC partition_.31" expl="31. precondition">
+  <proof prover="0"><result status="valid" time="0.01" steps="9"/></proof>
+  </goal>
+  <goal name="VC partition_.32" expl="32. precondition">
+  <proof prover="0"><result status="valid" time="0.02" steps="0"/></proof>
+  </goal>
+  <goal name="VC partition_.33" expl="33. assertion">
+  <proof prover="0"><result status="valid" time="0.01" steps="18"/></proof>
+  </goal>
+  <goal name="VC partition_.34" expl="34. precondition">
+  <proof prover="0"><result status="valid" time="0.01" steps="15"/></proof>
+  </goal>
+  <goal name="VC partition_.35" expl="35. precondition">
+  <proof prover="0"><result status="valid" time="0.02" steps="19"/></proof>
+  </goal>
+  <goal name="VC partition_.36" expl="36. postcondition">
+  <proof prover="0"><result status="valid" time="0.03" steps="39"/></proof>
+  </goal>
+  <goal name="VC partition_.37" expl="37. postcondition">
+  <proof prover="0"><result status="valid" time="0.22" steps="673"/></proof>
+  </goal>
+  <goal name="VC partition_.38" expl="38. postcondition">
+  <proof prover="1"><result status="valid" time="0.10"/></proof>
+  <proof prover="2"><result status="valid" time="0.44"/></proof>
+  </goal>
+  <goal name="VC partition_.39" expl="39. postcondition">
+  <proof prover="1"><result status="valid" time="0.10"/></proof>
+  <proof prover="2"><result status="valid" time="1.85"/></proof>
+  </goal>
+  <goal name="VC partition_.40" expl="40. postcondition">
+  <proof prover="1"><result status="valid" time="0.11"/></proof>
+  <proof prover="2"><result status="valid" time="0.79"/></proof>
+  </goal>
+ </transf>
+ </goal>
+ <goal name="VC partition" expl="VC for partition" expanded="true">
+ <transf name="split_goal_wp" expanded="true">
+  <goal name="VC partition.1" expl="1. precondition">
+  <proof prover="0"><result status="valid" time="0.01" steps="3"/></proof>
+  </goal>
+  <goal name="VC partition.2" expl="2. postcondition">
+  <proof prover="0"><result status="valid" time="0.02" steps="8"/></proof>
+  </goal>
+  <goal name="VC partition.3" expl="3. postcondition">
+  <proof prover="0"><result status="valid" time="0.02" steps="8"/></proof>
+  </goal>
+  <goal name="VC partition.4" expl="4. postcondition" expanded="true">
+  <proof prover="0" timelimit="30"><result status="valid" time="18.04" steps="455"/></proof>
+  </goal>
+ </transf>
+ </goal>
+</theory>
+</file>
+</why3session>
diff --git a/examples/algo63_fastwp/why3shapes.gz b/examples/algo63_fastwp/why3shapes.gz
new file mode 100644
index 0000000000000000000000000000000000000000..1a620014d8d52ee8580baa2ec30186f701b00465
GIT binary patch
literal 3667
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
aQjKih^Cbm;(|0=ZpOIHqT_$%H0|NkB+&ilP

literal 0
HcmV?d00001

-- 
GitLab