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 <" id="288" - ip_theory="Int"> - <ip_library name="int"/> - <ip_qualid name="infix <"/> - </ls_pos> - <ls_pos name="infix >" id="291" - ip_theory="Int"> - <ip_library name="int"/> - <ip_qualid name="infix >"/> - </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 [<-]" id="2412" - ip_theory="Map"> - <ip_library name="map"/> - <ip_qualid name="mixfix [<-]"/> - </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 [<-]" id="2880" - ip_theory="Array"> - <ip_library name="array"/> - <ip_qualid name="mixfix [<-]"/> - </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 zcmb2|=3oGW|8HY&=gC-3s=dGd!tX_lZY<5>33nO{BN*AlF6V#U6v0z5SMWlz^rY$w zzrUZ>@eK7;i`=!vD=fO?@Y_?|lY1U?9`5i^(`59te1E}f`2oQKj*AH)J%XW4-FM^l zKTUt#{iXWH^51{@pX^)qy8iFCx9`pO|D1bcrR<K?=YPKX-u?ehVnhGCf7||=-a7eq zrhhrB-HtD>x6htiWd8E@TmO5W-`B6cKfU|^=lxI1tnU5F{`IFn|G$p;{l5=R_m^M) z7sPdUzRjH90!Nl9*@cD3#fGYwi+=pezj0LupZe;q6_=;{;`{l**iN>utf>8Xwspkx zV}36eUH(<KY97z@{}Z?NDWzSyr@T?{)+UE5_cE1UFWt4{m(1n&PydU*`*rK@{nr1V zZa=U196Q@5s&aCw)A4hu0ZWn(ra#MZdZr<l^=XCtvT3W;s=sArt_z>%lf*A1FgH~} zHOA>@gzo&~AI@p+R9kp5yPK=%lx2lR{Yh7~#!Y{UALiv<`nr9!{`~Vt<LjAJZyL!c zbUoM`sOBZ)nc8*frOr;7)!pmk^Y*ps&wqT?A@F@f>BO9{z?ANLODFgmnl3(dAj{`q z#1gmC<;SjkU*nd)^<<aj?hZ5MNjx&mTvlmMZyc|F{$#cGwp|&Y-iL>m_y72L*o#HO zzgc$utSG+grMHV78C=?~S{PbnxygN_kELA|N3P?l)l25CJi@Bwx_Vta*VTVlR<-U} zcP-4{D0bmfzL2|2SGm^ya+*GAmr&IDRyI9#wxH>gmaW^oq9c3bS+|^@78|{fZoN~m zVx`Q-yXWVZsW~)0UB&g{YN5gE+pCwBn;Enp7GT$Q|KNPFo;T()qm>QgOLzT*3sYTr zP3txu)9)%;c7OWP4AuulElIqpGKxE<tP$+dZ7S?euzquDX>aJ>Mb{o~)DD!9ORSFF zxpMI<uV{zOs&*Uxu9NwGW`TBY@BzMEm*nI_MWZex*GI-SzMHytV*RV8g)aib_UW8* z+gx<Q^Tg^&rvq~XPAH2l5uJTK{EXkfO_LrdoIC$Dx2*Pdoc#HP`}m{Z-7edD!!2L_ zRpCdCGv~jGhHOo{-m~-a(;e$?1_gw7U9}F?4%<G>Xj-@_N3^}C`SmZySO1&f?&`HF zWufVn@|LGA@iUgbkV-f$=$NazX?3L3qm-RZ*(_5Q>jh1dUbst8YK=~L&s29)L%k$3 z-{bRkrF<+}z$dUUDBRKV%hjzSN4M@eC3sb0>W$FpGOMz82Hh0p<;mW;ag$D#@9Gy` z^8&(iW0uZZ_A+Ic$`+2;!`?xw*E8;!wn%i(sle6i?e@gE$NzEqW%XgA%?H7+FSmwR zCM{WN8uNOlwypTBhmDfci&kAK?v%?4o3tu*X;6kn)oJgmhgYPkT{_;ktN6@2d6{Xe zmsUKtnRaotRG|BJnZ2x+zJC|FeQ!5+yY?#uF2~m%0sc3dl?$t<itW1bMO}80{Hj>a zoX`!gG;F3xZWawm39W9^ex?<>@;d*0^{x&5^OJIx9Xo%kGFDFIY!t`MZ;P+Ex1Msl zy10@3`oj3N?60(v^bagw<uScXtT0EnFW1d9Q~t%|(-Rl%I44l_biLSx!mGD$urXG= z-zEQHpLU=58opQOWMeXJh4kv|vDvU{%Jp;AJ8x|1e0Za>=E$#mQf|)mqT7RQxel%P z{2(~=$z>0jRYw+<6{PL5$(42PZ(XgpR3`E4X`R*QviJTFUC8ryCU0C;Qd-_eBc*3S zTa=y^UD;OVede*@O64<|bMhp8b3R*E#}}6_Da+2%T@?SX{B7|1gii%})xu@6pFQ@* zTwLdLD7VPt=A1QwPxIT}C>Jnji)6o#vGje}uYM<f!9>qwK0VI$&JS`n1y9^#WLY7< z)xGxP>*@OO-qQcyu3LZSdH&PuSGOlmogJ~6JxHSYi`o0FY?)KPM=jdg=z90r-Y|)^ zpW=Ss;kGlbzRGg;cFL)f4exG#sJU6!Yo;c=STsnQiTkGHLZ1ZX(n|@KPuAI9bUq!p z`1#bB{`aM8s%2-#+0Wb(v%T%sH5>EvpUz*b+`CRycr{Ghq~agw(R@^VlUY?We*m9@ z{^Bh*Qd$gO+RxAPWXj3il>hpCdywoiM$-T(m&)y)S4*=~xmAD8TR25y5ld>sua=Gp z2X^LgZ0*-k?waPXFK+qllE3-e>*KGOzlmm9WAvyZK<$8*!7ITF$B#c;ui7qFU&8k1 z>Q29mqPYg=N}Z;@ezV7>;`|S0@g9FQ3)z}5kGx9JcT-9_jkvyA{IPA}%ehz>R<Nz) za#Qd;#yO=N40jre1sHWyS92_oF@11{h2cHd9M!Pil(n6mCSu3$Wdxr)G9jeE<(1f+ z?-zPBW7NwhzmqTe{$40TK46=@MC*Nq$tLQVc1+V(2$qOMrIy8UoxR5~xpmXY=PEMu z`krl5`v11SIlHRGo@>VvFFlLX+(&x2w8Xf44Bb+<K9hOKvSXgyzr8G9)YkvixNthf zgggAu%>*a6<Sn791|N@UrEl5Be{}2JnL?)*ubyM~rT7=W;VGvq(<$2=&v!ql{MB#I zHIG*)TR^K)y*Mi9(2`z0FQ+d~>Yq<M*p<sEvs`rQ{c`(ytq;*ZJ8iY%wtsCAobzbg zQI03s5{}-J*9v}+>{&3cIQVQ(OizNr^EAy!-(4%yG~Y#Uo>}sFUXR0$1C3qPUiXeX z2)%Tw^Nq>$dftWgErK?@i?%p?StC}|r7O<;@cM=c(<-951JgGM#B#5b=9WBrO!V}Z z+ojpJPZrPJx#Rr_Cnv5+7t-dI{+!%gs1W?&=wm~Lo{h^d^W?Uz{#5>q!H~UUJ70aG z*c;`hO$xfKoo2V5O!nhpjEQq=d2Ft=yy0tMbg60jF6QQ4hO6yvMIX5D=25X{<CzIb zZ6f*^I!ltfqTHQ&l%_mj+RT>D;#@Y#*mg$mzVMI++w4>4DmPbWyn6g<b_4%w{kR45 zepFQaQtZ52<LIcqf58H4?K>shveqv?@u*dIJrkcCx;}B!+m4H~*4Q<lyk=~2&_pf! zm|FJgYqzeYysb8ie4RT<!)TSzzvfFfvyyv)w6Z52Je*OJZJ*4t)9%T)tpCzmGACYE zTJCBl_R{32M5|GoGf!tw&{2ofQxh&q>SuSaxq3z7gvqYVlFKjTl1rjC2?XBgxV3Pb zM)TCTDfTXrT~B@;eh_u=if7fysKc*5v74O;zPbIV!q;qxl-Vb;c`wa5sPNi9cR^$` z!<!2Vg?}~A7G0@H)48|V(Me$9;wzSopY2v`IHT-7$?(*QB0t;aKR>59=CN_kW3%Kf zl6tcEK6AkViDF5KT7^$hT)tjX7v@;F=T@`byz#gya-RJ8d&}IdY%hs#F+X}Jd*Pl< z_gGf%dAi1l$$yrro9^tZ8-Ka%Kd$&9YV9ii#Nt_&)7g7hT+Ug!d8Nqj)jd-tEjA54 zb8k^!wt&u8d4(HyR;-r(&J_{N_BLON;W_6ot3yX+JfE_cDQ@_uvnk3i^L)Ywt|@I- zpTyqrxp&mq=ibp@dnL>!mlxVpZjUO-u*{0-_-<QyU3+P-sFBiy4{ED>#DWA)u(e)# z%=$mCeP&)>_M{ss8$FXIABpQeA~S*Yv|rls2NQw~t}T5uxAHNAa{1p)?76j@Zl-KL znKt=s+~2SEl45~u%R|IY|8^7Mypf$PJn6xmej|CMR*<~fY+tkLuV0;1ocSUXKPg%@ zPtz$hSs<a(cwBFG?#rZ0*O#pKjGw$OuJ$R5a_qT#zl1`y`lcm!c(%V;T+mr+za?j8 z+UKC9rs38<PAyYhS*H8zY3nqJ&(T}$qz|>-XXAeFUsrwlPuThi4L3eX?_=8^s;%)L zjg{5rFc;VJyH*eGev+2%RJ1&AX0UO}r7HC)yeoV;9dCXMPWLZAq_*F;ZuTFupKq@| z*NK|Xs4O|1<+RJn4N+|zoJOZQ>MT+hzr1peDb#(z*?#-~8o!<&pP%kn-x*l4Vdk3n zG_FYkPHwW1EUR1M#JDVemhBI`a^&}s-_pmeTi1Ban0H~>iqI=dineHJPd1gB@HS^! zUwS$BoT=&C8Pb{Rnf~W8-xuG&-hY6pNs;+r)%u$mnhL>OZ}+V&Z{7YPmT`YW0Z36V zbN$Wt(UsnErZ*lvO+O#_Y(`5GN7UEPn{UU>_L%Qc|JdWa7dz`AYw=b$p&%A<qg7LQ zn;w>he{O7(kNf>iW|@IF!|%U(7sF>CieY$DnODbmPvjndW3G=8*Yij&FEOt<vqS7x ze&(s0x6HuzVejlFN5P)20?KL}T2&0EUKsC?SYp0-Yty_fp`WD%Ll13|+4OB@_m;k1 z@wk)|Y(bVSOZ;^XT}s<@ugzi3T7$rJZ%x(3bDWfI8@Hazo>}s}`d8Zbcdw%JF2A{( zdymUQ)62~{?q^6{L0MGl(IuBZ9SU6DF3z`tb*=B#j&Er!qK+Lh9=DSEZYEFcEoM8d z(cGc1`&z{5$lCtDwHIHO7M)~0FsCNT>FEV2M!y>mjE-@a7f)Vyy=l$O(*5`U>aW(m zu=msSucsQ;?`D1C%p5UUc4gU1xtvR}d8@y@$lLy+?$CuRdKG_`OZ2o{KA9{wYvvr~ z*>9cF6b0HN4o!Pk#j<yneV+EZX{ok`UDvxe-CEotJomlq++$q4o-2;#PLL`IS;({3 zdmV?xjMT`Z2UkBht7pP|vwXGfj-32staIiRGK$9Vcg4KjTlv%Lgxza9PvM*T{cjSs zDDAx8(0M^kH}`;qlC-N{gn8ZB-K<YtKD&G_FSEJ1{DJVZJ@<pINt}3-=~>TpxbKm& z&|Gh&;^U?3XZtSt-0u7<(p+-3NBvJxy^{+K**3OxO<1h_)|Ndi#gkL{_vCzk#=SRh zJ)U+??VS3#{h!~oJetY!LBz@6m{?iAhAC^l%g5cke9NBNoOtn;<t*n{&adxzzlKbB zcW}px0QPhjmgg<LD?$oWEsi>JrF?$(aG}Tvi}XuN95VLCzW3?yStGZxt26k5-zM$_ zy4mYl#8*t4CdGa6oBi25m-k=8+FR>y&3wMW;H${Z^oQX`e)4GikFhu}ncAhaX=}$! z59yh6m<4-<4y=j|c)IfC#Ll;!Z{LeMxp|)n`?X|R<$e{D#r%$$a~G+bN9eq8yuRyX z;rH0r@?1YIU;J0hIA25{l2`HogWKbxj*FagMZ7efs>0qKS+`1tb&Bv;;jj03zZxBR zutZ2LBjix}VX2v08DDcdY_#Y6kvUVuy3oGx|Fwd6nev$_PIHSdI2N7in#8hcO7mlj zqT*KprP@CQbB%qCHku!hW6ogjY%RQZBS41FH|J=bTkuCSzx}cK>GS-K_#UxMl9PSL zkuoRBF8{OA?I(^akH|y__X!oxj(fiA`fT$D1wU&qM6Ca?X>P2kTk`LZLCtQnGHlMj z$z6UhrK!p0gpj7j?4_TBqB7T3xh%QbQ24)YZQ=sXqnt<G1(ctkIm!BVPLsy8?>Waf z^J6w$w0b9;oNn>tV!;mfOD>OH9xq-NyQ#l(O|aJ{lZ&rsoSHAx*WBs2XvdAeUzO^2 z?)&j--F{xim0fRsU5*ldUH0)@$!|Z=zp~y_neDcPykpCjTfNl&TItloY1T1?KjVGH zS0(a?-7h^I$~{f}t9VY>@16rUepI~eF=H(ZEwEgrA}85?>wRH_y7iN57I7hum{YC_ zZj_(jws!gR)+xIG4Vm=1v$#dq6wNE`QB2&TRI*%l&Pv_Rrr4qlmPI8_deveM9M_DU zIcHxo2&)&HS8{dtF2~7o4JX%ZOv%#V{pJ>u{qFwf@ZQB|k99n6xOkb}C#6JZveGhz zwOTq{PdHhY9(Z?!DM6YsjooHB^A_)OY4dHTFX#(e_MkN2Tq0BRJ-ejZtLEkoK574* 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 zcmb2|=3oGW|8HY&=gF80)!tu!p<19J^r&`%v_X?-Lc+$%+0&0IJunrV5Ye`T<=+1I zqLNIp-PI=BOt&SOKDu!@ZL*HodCNT}vvqkBJPcbogp>qQeAkI+GSvDpoiDSWJN5MH z&3_F4J-h#Z*5CG;ugB+`?~nN}S(dcC{DJ<x>D~S5_HPUhMc3Egw(BeVbob4vOSao1 z_k7#`{QLfUf3{uzZhz%=`-(rm&zAP?IA^}y{;J<Edp)~tC;tE0{><h1_wV~w87BV< zU%xm)!{hFM0cXc7trcl!xhBOrnt1Qm?-28OSbpO8=ZfzFw@%9X6<WUte(dz>RdAjC z#yJoF$RC}d5~L{1G-=Zz3snK%4{aw{SDx3qxBSn>f3?rnulw`=+@YuQ-(UV}ZaTAv zZ`+BUxXO5k$)0|{7IpQys(zetGW+d@%9%6gobb?iGDqa(WQ`eHMC=xvw&KXVvN6t% z_oH8A@sb<^sp(mlRq|ukG|kB6QV~#@X#4s4^`EbvJ^J)_<(Jp_50<>~@b0?BmAh3Z zVbP{zvjaBqH-*^zE~u;(*1x~JThx7T%=Mp-0y0F`PW>vsI62HS`f<z@yD155*JWR& z#&43IJLOPnVl9WIb!4Sha{!x26|cbKzXea5*T>|}`}0(<*?hgVHe;DW`6^=(Ht&sb zmh-jFPF|&#$$fB2346$TALkasmCu%5o2D9;c)?UR`_Htl{*6`I?UQzXZ@3qGCw$@E zH}}d8R(-#+YOToaqj&%Q*?7-*>JJ9)hTrkiB(uePY8zhJZ4$LAEeKA?<F`wBJnstA z_QmYXG18`SC33>df7H6I_S|~>@mJo;b?lRM#UHo*mepUj{sMFRZ<pVzcFy0e5z$w* zm49z-lTBJwQhH7Llr_D{HwxCURTo^(nw1)Lb;>sHn@)Y(7saM*+B>)R&fOEnYmB}X z$M0-kwJ-7e&VSqXu9ql%t5w|2Cc5}&(#52U(SO>GH$1-g+WW>#skpK@*BX1SJjJs< zj)q*5BGyioOSttsrOje<1pgWiw=lsZDfg+`J7OkJoAPVb6#-5^<EWBs@0~p@V$8MD z*DolE-0I~qR$((y*gE@~jeAUGlqvh=g_A!?^#&i`=dZIoL6`02!dc}@oWFnYUSAbg zbpG_k&qa4XcU8unJrjQa!slPyw)b~_+t>eRqnX1S<ug<E#=KbnA<?1Dr1|JCrBk^& z*V+Pvoue}@&R!D!b)jovqk@`1$k75<#jK!{DvR1q7>J*o>2_g_U+}@jLL1JkQgnWE zh5z2~e|C>Ks&}6~RJx{qSIwe`-RZCNI=8>A6hACoZs)U%d9C$#m;1Yxw0~Pu>Snql z;Zc>j&4Ic*9gi)lFEtk`Y|?*scfYu5L)6W?0(<qV_5?G<+ce7g=}K2D@%vj9d$w<D znE0Hjr(L~_CT2-~Rl2IjBRnCmL1lU3x+Cji(_NLyyWV)m<V>jLy|+<i^-S$J`J=Cb zz0+<?u(+1~iZ|Udd*0?W-H^#y*PINt3D_)na<xO~q*@VAO*3zsW_#j+oM*E?A2yh` zNWJXclGn`JzW?@O+3sa%o2_W~C#dOXjZCfg^~4wVrpRYi%C@ETZP<HyN$T31>jo+J zH>zaM)K2)y81^+x{+O$!*P1Qbf2+<)MxHwnvh``tn!j!(Wxq~+j(xp6YT}WE)fo+I z7nNqKZVo%QW@@s1sPNja!Q4|TTl6;j)khtCTQ&Jqqh3gLyI#oF2Y=#g4&48Gv41`L z`Das~&;4+I^7{zYJn@Jv+BYL(|LX@hHQf^3wJkw(&-&?_^*<MV6_%LEJMG104mG#X zoR3z47q%S{n8cZJu5SOHKLNRaPRGao_-_97`q8r?PjbxmvIIrU&pB8Z*mibX#QW>l zB*VfQT%y}vK3`>V?oYwCf1B;@TW!$UAnlo#{(<Eq%ZHj<Wxjf;vnL5(ieO?tx_#=i z6>CgxHk@X^{ndf{t$5vz`M(qITwHr@`LddyXYXyh+hv-Q7UkS*`ejmdtg6>7wo?s# zT}vE1J-S;i?iA6nQ?k4qrBHB@F@YiCo!xW|PJ`!9jIP_ud+nLdEVW?ErITByteL!e zA*0u3yLYONn!!$-x3naUl$_Y!cdMExYR(MkVfyq?EB^WF{eS+=JZ-cwU(n#{!swZ7 z5z-&;a$dOo_=9=Z;SPH%#(zIdx@`Yt{D_Wxm8p3%$e)+@N3gzR{e#84H{J4+G<NYZ z1YY;^@t(hO!G+@w-y4?n@K>Jm=Q<ad=T>k^xMA}7PDkDcG1dFjZZU7Y7iHU2{IBG# zYGZJt|C2esGku~TZ#s5OTQg18cH%zP=e8!nec?Cbpa1rG_b=D@HT#se%onB~Rx-PI z$K^9e%(adCiZ~l%d?brcEnT%Nr1Z=3R{{a24sYIBIaPf6TCszrUsQ6X1^>k!R6W2N zuP(}P&U($G=eAAec3oV?(&@HE?CbpJ|FdQNVix;5Zo%?aLnF6zj|g#wt=C^nZA)po zcy8A5XIpoetxxS2OZa*5P;%ELmtN;gyO)(hHu;Z_zh^x!S6k>MIzJ#YP+*b3iW64) zshXU9b7K0ZIehn6cfWGmFOPSAUDeV26CO<1_A$3kUFD$0WM$4PoE`_{|2N8cEV%A@ zK<?Jn3l2=5CwVS#+Gur3<W)~xXHZCvbl}{;r4>sIq8G&}99-@=Masqh)CA|On-Yum zu{pavl$BiMe_(>MG~e4-b%&>Y>fmkHpQd=Li9gcosmq5&e08^eGkV=v!dhAK?1Rza z9fyt{vyNupSSoN{_TN3Ri}Pl9=gz&lYr^GI-svXCX1v<5@+-&XYPt4?uVry29fu7b z94pD)l78UPy7jJ`YOX0AHCt-2D*g5{5#h)+<zBy2HtDKnPj5LVIp@$5V=d>W7q7mk zc0c+z+fqS%UG%?QM?T5M@)z&FTJ|C_&VMI=_l?QTE1zdxU$Om6<ZbpU@oMk><;&kF z&di^3HNJUMa=&5FwK)x&riI_(n-Y8TE8F4SBDy94*Y>8Ia+Bq4Q@X(Vb`L|mid3^w zv*Fv)JzM|f-nq@0qyA!ty~LGcCweDJEB7a=xLtA-{%Lha=hU@>=_Wy}xqG_zU7Bn> zX?Ny>18%!|OQc`+Db8K<dFPVS9Cjs!Q)`-i*_@`?MXh#?ddF7He)-TM@p|h;NuR9M zo*cYhTlnNqCx@lplirps>IzR5nwP$PHG9{F53BUlpZp2EJKe=YRN<AvUO~OUl_6IY zC4#qHbxZot-BMHBF=4ZxQ*O&0j-7&^GMwC|FXax*>^vtnU-5UwmPM1CR_uK$q{wdf z&HZ*wea&sRCAT}iX#P~|++;8<h*8{ViN@qmSL@a&iz5$PR;DhzZ_fVV`tO6^j&t1P zyR_ai>6^m5b6+YyOr2M;qldFLqWNJ1$LpOO{LdbLO4K^w=UrhsBl#wyLD|nYon?y? z&ELh|e0{pkXJb{}<;U~h$DDq;zWc$e?`6;a>5JLx)js!MP<!J3{FMC5@0RlIYx<^m z`)T*)*nJgEvHMQQFL=1&wD|S%pGwuQS|97h*Ie9PbNiUd+c}Ga1ZpPuEmJwUOsCmF z{PVAuRoi6^<5_NB$qU}?`_^o0^}4L-!kSMx99n!%-t387ZFQ~qqKG<&n0r-!Q03&k zzTeDl-cEUc^HdyTz_nj7>6_05^N0u}eN*B-rRKTO=3s5l=h<&^H*G(8Pp$fV*ta!X z*o+hBUJ-gRsf9PiNykk*(dLHh&DpCDE-RjWF4t=N%R8H|?p(3=vem2v&MCnw&*e2c z#wJZUnou3L<Hw&z4QyL4oNz0zt5S6Nm#8SxEU+j-+^H-__K*)pqVS<~^_D*|97h5< zK4x<$TAMSaKX-e;d9K&t-zyou=WY*v?G!w5ul(@GI~+9^pSyW{(&Xk`xkSP?VB6cf zGjcZP{^mXU!{G5|_T<?Dc}_bxAF8#S59847y5V=ulhfE`E)#<&4{J@AQA9-L)fbcP zoIm@l(o(E2QWFWyem#{}se|dL(>li!&kk72Fe}XSYz-+qq!ujmG{#zQ{l!xb59aW@ zrA?N<D}Uc^{*}PPeD_s1oo8J#Wr>rwV|z^fibuVAQ4>#kd1Zb|a=pJMd`j@vu(vlu zLR=KRR9<SydLM`~5A~{!40oI8ptot_^~t%<{~S9tNh#oI#M;1%DIHyx7V&M%>OEm~ zwf61jd&}1U(%j;F{Pg?k!%z8+zU#A$tGj1%{&#T3c^2bEr;ONEa+ap<ykHpKShm6> zX^X%$zOsr(`G0-W>@ObwXI4@t{^E?DWcZ3jm!7F~uU1N9?g%mTx}+9Ut^0e+{5^Ay zeU^?f-|;O;O4qHGal!%jm1{(fp5js2s<QaWtF*6gCvT7cbMkh+%i-qdIh|L7)7}QQ zpUE@%v!`%F$M1YK&zW18MK^wvyc8)~8nSH0$L4qJ_C9+B^Of(p?MeQ=Y2}J7SEG(^ zJCiTOw$P|mp!>4w<4?=_ZeD+qet(1fel`8`=3#chVRAO5p=;)8r1x6|<Rw2%U-#6t z#MSzXh|W|d&NW%l>tYHOrc~9ezUpwwR=u6^^|6z^lcm-B|7Qj2nQh&?=GB>i=%BCt zr!;S87&Q8vzTI@s=2o!L?t<i}$4>Q5oo`g=bJEp2EVc8{(hI+QgI|5QIOW^lgz9a- zU#^LXn_K%K+<f(sDOZJ;ZSJ;T5@x;ohTW#BOs`PptW8_YJ{n1+6sN_9@xHpa{lCmD z&vn~`4=;G9bHhG=USf>gu^o3V*XH(an#y*1ckHbPi@a|*osrCrUo!Rg;m}`9nO}~* z>E1H`b<fGB#~Z%B>_4}4^?yy4DJ+gJUTon%wdMV-#3CiVbv5%(Obhzxzr>XF%)%8H z&h2i`shz;)#j=0fnx9uHjMkK%ZBX0Hq;@;`WRb>NnNv!?OaJa|D3m$tm+~`5qP8mf z3ZrvahojikS0=YbH10jgkX`nm*ka2z(}<m>2cDZa^h^m_rFWfgiS|iWS&^d|F`cec aQjKih^Cbm;(|0=ZpOIHqT_$%H0|NkB+&ilP literal 0 HcmV?d00001 -- GitLab