From 2eb4ca283e3c817b448b88ffda581d25c4820dcc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A9on=20Gondelman?= <lgondelmann@gmail.com> Date: Thu, 18 Sep 2014 17:11:18 +0200 Subject: [PATCH] Fixed and proved theory list --- examples/cursor/why3session.xml | 8 +- examples/cursor/why3shapes.gz | Bin 2055 -> 2054 bytes examples/finite_tarski/why3shapes.gz | Bin 0 -> 383 bytes examples/insertion_sort_list.mlw | 4 +- examples/insertion_sort_list/why3session.xml | 9 +- examples/insertion_sort_list/why3shapes.gz | Bin 660 -> 689 bytes examples/linked_list_rev/why3session.xml | 40 +- examples/linked_list_rev/why3shapes.gz | Bin 767 -> 774 bytes examples/mergesort_list.mlw | 3 +- examples/mergesort_list/why3session.xml | 1041 +++++++++++++---- examples/mergesort_list/why3shapes.gz | Bin 6808 -> 6872 bytes examples/mergesort_queue.mlw | 3 +- examples/mergesort_queue/why3session.xml | 213 ++-- examples/mergesort_queue/why3shapes.gz | Bin 3833 -> 3833 bytes examples/sorted_list/why3session.xml | 6 +- examples/sorted_list/why3shapes.gz | Bin 187 -> 186 bytes .../stdlib/list/list_Permut_Permut_length_1.v | 156 +++ .../stdlib/list/list_Permut_Permut_length_2.v | 175 +++ examples/stdlib/list/why3session.xml | 465 ++++++++ examples/stdlib/list/why3shapes.gz | Bin 0 -> 4102 bytes examples/tower_of_hanoi.mlw | 3 +- examples/tower_of_hanoi/why3session.xml | 380 +++--- examples/tower_of_hanoi/why3shapes.gz | Bin 2203 -> 2230 bytes .../unraveling_a_card_trick/why3session.xml | 104 +- .../unraveling_a_card_trick/why3shapes.gz | Bin 3581 -> 3594 bytes examples/vstte10_aqueue/why3session.xml | 34 +- examples/vstte10_aqueue/why3shapes.gz | Bin 539 -> 542 bytes .../why3session.xml | 26 +- .../vstte12_tree_reconstruction/why3shapes.gz | Bin 3779 -> 3774 bytes theories/list.why | 49 +- 30 files changed, 2073 insertions(+), 646 deletions(-) create mode 100644 examples/finite_tarski/why3shapes.gz create mode 100644 examples/stdlib/list/list_Permut_Permut_length_1.v create mode 100644 examples/stdlib/list/list_Permut_Permut_length_2.v create mode 100644 examples/stdlib/list/why3session.xml create mode 100644 examples/stdlib/list/why3shapes.gz diff --git a/examples/cursor/why3session.xml b/examples/cursor/why3session.xml index 1a2187b72a..4af1486860 100644 --- a/examples/cursor/why3session.xml +++ b/examples/cursor/why3session.xml @@ -41,7 +41,7 @@ </transf> </goal> </theory> -<theory name="IntListCursor" sum="6a86c159c9325e79070f5efce8debf6a"> +<theory name="IntListCursor" sum="3be4879452794a876cc462ddd755a3de"> <goal name="WP_parameter create" expl="VC for create"> <proof prover="1"><result status="valid" time="0.02"/></proof> </goal> @@ -52,7 +52,7 @@ <proof prover="1"><result status="valid" time="0.02"/></proof> </goal> </theory> -<theory name="TestListCursor" sum="650f68ba6185c1da3bf7ea3cb4c3d7e3"> +<theory name="TestListCursor" sum="c8893f4016f1f1e3c221e4142f94eed3"> <goal name="WP_parameter list_sum" expl="VC for list_sum"> <transf name="split_goal_wp"> <goal name="WP_parameter list_sum.1" expl="1. loop invariant init"> @@ -85,7 +85,7 @@ </transf> </goal> </theory> -<theory name="IntArrayCursor" sum="5e45c85fd72714bc8c3150cb7084a6c1" expanded="true"> +<theory name="IntArrayCursor" sum="c77cddb83b83b50f0453ae017ebaaabf" expanded="true"> <goal name="WP_parameter create" expl="VC for create"> <proof prover="1"><result status="valid" time="0.01"/></proof> </goal> @@ -126,7 +126,7 @@ </transf> </goal> </theory> -<theory name="TestArrayCursor" sum="6c32bfa8b7b8e063fd2046eb493d82bf"> +<theory name="TestArrayCursor" sum="1818e28aa2ccadd10a21d99b8b296439"> <goal name="WP_parameter array_sum_array_to_list" expl="VC for array_sum_array_to_list"> <proof prover="1"><result status="valid" time="0.04"/></proof> </goal> diff --git a/examples/cursor/why3shapes.gz b/examples/cursor/why3shapes.gz index 69ce22f571161d81a6825f882e56fe1e671a9f9b..e182a5d5d286695c2fe1eff201412c131a37addc 100644 GIT binary patch literal 2054 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 literal 2055 zcmb2|=3oGW|8Jwb`)|7m?fV`6LQdzx)!3{23U)k990CbHwmdLh@orsTtA*5hH?vLu z>$)#_C|OQQ%gLTpSjHze*>}^fdtYlsiVG%WJ(N<K{(?ih(jdpjQ7a*3+molObpOxU z`*y;6yZ;w&{{B4w=i)VWw`*Qp`qz;6ZTdYi;|QJY@+rEjebcQP{@UidAF6wGAXog- zqYZP{z0pr%FWWbR<JZ!Uzn>mI{B~t?Gt;jP599N~%ViUuv#$;lFB9L@_w4<T{`=`q zKmU4HwwAvn)9#Y#ojvw89*fs1{jdHTDK`1^|CurKJ)(P3=NBG6ciiO4nbpgb1K*uF z{OZfwpBd`rMw>Q&Hovk&_3#}h-<#9Lg1;=_el*GA`J*?F-@aXbv*>H<b?>;`FBv<3 zuH&^lddTg@(Ub*S(y})ljd(q$l}*Sm&tl4tjz2LIiq~x0RBpL&<I0dz5niXy7Pj16 zzIDp&(Ad0b+gHCn`b2Q8gRD%0GTZAt-<NbPVbPOVCm8iXd9B*YEkACBME^-mOI#@? z<mju`aYO24#==>%_9Wk)p>O&7s8p(knp@7JtvWgZXV@;bC-EdGR0arTJ)XN}|A%YG z#P6IJ6aRgao6jR{b}WleL=hivw{gs#uY7y?w9kk$8x_4?{eS<;Q*$#8pPIK+s_o4h zZ?nly=Ezv&{<i-AesBEJHLdTTXiq$tov}~VWTSuxBSX?_o@2{QgPKBDEaPU%{r2)( zUh$g)!XL~Go;;1bwyEslD`ritjXGyl)VD5b3Szgse$&zPaQ4qn+V#IwR^QUTJM*XX zTnCP|mR)Dmmdx?hHjAFSUGqiHqnpoqD_rdsd{7XXZSkse{k1e#o|LbB7PFt+ESP<- zAyY0$yr1)V`AM-|%17SDh=0?}5Wj34%l`SOgV;I$JJvytdrdq-Zoghs#yn-wzd#Gt zS?szFXXmvzf7{x1kg;KTZp4`_K8ODun5%VJ`Id~f@bZV|?H>;FiSw!1$>?9&_TyaF zoE;H&GxOOrcdjmZ@nOe`yA0pv6@UIISsKV|`RiP-*~iOX1&_TxRNK`1eUhv$;JV5l zcVph}Vx!+4^Xoo!?3AzF(45<*v8Pbe%DZ-*v@V<WlFuU1YlMne)8$?N+}~>bGeTjx zm}-cFW3cK`1~1kwJ;AtJe;a?SziFY)*%fG5Ec&`PdzzDrZr=jCj9dP00bhS@{3{j9 zZTfmu@l9>}fF>3;=O6(o?G?)=p5MS~E*IwS^W?MIU(;h%%>jZwOD^mQxN4_5F*ij) zwNN<g3rlRhz~+-7Vjm`G3NMvfT%<0a)waTzdvd+e=?cZU-<q!1ec@R<A!+R?>!i)B z7udq1HA5Gf`$luxtA_B~{F7SpnoZM1X^TuV%lZ%M63dH^xeH8)aX#&@tl7U{{`Cd1 z<{6eVWklvyWiMT{eaQ}ojXU_74xLM@Z`*gr`FdleeaBwCkYv@4=XW$ToiA%%*w2#k zer9m)W@YtF?oM0I&OiHhz5Mj@U2#6?U6DMOHXBEOJM!A}|Mul4yyk7vR#X%1wv=*G z3zQQu?3}mh(tP8-Uy;0K?n!2otQ0cBUUJ>*F`2Rd;x>&p0f|equhh8B-||MmBbaH? z*RmyYduOMtJ-U56Cword>9X0s|IE(0()sSn*}1zHtvJdW`Neco#tjp<^zZ-wd*5|y zPPTq!*!;D;J-76pjFa(&(5JTxyQ^j}-`qZD?_#E{EIM0%>Es-=cIMJwJLi4t{l#w| zMPKDrHQ(5Cg<<OI=^eA4-cX-nc<8AL&z+q=t$s&m>X|;4Fw_p@(@RXqb(+`h%lffI zyDIVL_6ok^0VmYV-bU3vcL+)n`gOlsC@tC8W^wYp`qig47J2(D%o32E?5`=(eThfq z^;Y$F@o!~j>GIBszO<4z&1&1@jGX0%Z^#*Zo@;0!b5H#vlbD6U-`vBplFi*O_4aLU zR$M$G$!<dZrIy(Gd0&2<)_W`zRNSJfEj;-Z^OwUnuDCSZ3!PINmpNHO-lATl_easz z%<heUUca1F)HI{9AvSMChu{C54_H@gvI=WlS@&uAzq__3r?<}!|N3sXjn$T?|E3x2 zpXVA`IhQ>v!}YcggCN`UY)8W>(lZKqZS!C0#%)@>>S+Sgvz!{!nN9w^l5@2~fAiij z$utw^`oX@{-prSs>sImV1g$rWYo2)**lh|FD`p9_{ner?c4@Kkix-D%yHEOld9W<q z&0zT%^UkQeiIYB_-M(srVORgmpvEI-`S;uJtiQ>)cSiHH?>4*z^&;+Ea^n34yP56X zemHm9mkN}3H{ZFi^l<3aDv^I{cX<A7`gNOU2gBX)f>)OkLMsz*iRa7wcXHj!QSf== ztpejeU(>cMoV#hEMVj+>b01bcwNLsxQ=k9+krz~+sPlPJ_WS#Cj~{(u-kl|Rs=U_k zoW6Ph!<u=M&;5O(psbqh)wj~+^_tbsKAw-97w>wxo;_(v{Zl{3r2ng@T;JN`=Dq(1 z`~I|k`-Y2u*RSF=n82wvGvQ>4U+r2!&(&KU)|{LFv*~fx%c9Wa2}N7CUURtl`b$RZ z+Kb7LFHAfgbbgO{|KoCXf4%ufy}!F>tnBOyIq&zddc~>#y&<|BIU&L4Gxb=$&wtK$ zbSu*g?%f*ey2?9yna_T6dZ29k_wc;w)=JC#{@Z&L@t-xzi2JRf;%vJn?9Bz9q|16A zJVM+9D|_$X7u<hHNW1f-<dTf#mnM}QRO?)$+nrl^tNZtHh5Ok#|NCx4#Rr{eT-~<q n|ABC>@9!tf@$b{RUi|)h`;EE>t@VBJ|Jax1pY_VnXJ7yTaw7p7 diff --git a/examples/finite_tarski/why3shapes.gz b/examples/finite_tarski/why3shapes.gz new file mode 100644 index 0000000000000000000000000000000000000000..1dcc90783df443af1bfe25b70772b4e17d109198 GIT binary patch literal 383 zcmb2|=3oGW|D{2vvkn^w?0K&Ji8E?1>siHi7M5kl_pZ;C<f)vZqWkyHsf|x^GKvI$ zOSl>D_HH)4^=--==7q6!Ym1XU*xp>g#+tor3A5IfiESUhzqXl|x8nP4_eEtN`6gya z94Y8HbCQKoO2DgQ+QM8mnahH*T@knR&WSF%v%7Bl^%7@ClgAA!7G8N$GUuU?qoG~E zpXv#Pj)l?-<_Cr@osrTtOQ9e>p(|tqhk$rb@6uCWnRJ@oUpgNAEV4epeR`eE#Y85Z z!iZn9{WcU${%<j_UZ{%a`+J+F$6Yez54lgKHFc_4f86Y0-+J5Yfo0?RX-sVqf(s?M z?gXr;t68_s>UA_%&;+R`3Tq8xwfFko`r^4&<!zNt`@!(fTO@b>wio`(arE`XDOYE_ zIWgtKS<{yhx7M%o3^#7m&`X{jk@){asjU5i8}-*du^ie}S9i5$L+QGQg;!HoJ-i!w qUfrXU%}e!6_LI{>rI7|J^*B1bb04Z|?U~sdR=-hby7+Tu1_l6A3Aj-J literal 0 HcmV?d00001 diff --git a/examples/insertion_sort_list.mlw b/examples/insertion_sort_list.mlw index f659c17484..098dc9588e 100644 --- a/examples/insertion_sort_list.mlw +++ b/examples/insertion_sort_list.mlw @@ -7,7 +7,9 @@ module InsertionSort predicate le elt elt clone relations.TotalPreOrder with type t = elt, predicate rel = le - clone export list.Sorted with type t = elt, predicate le = le + clone export list.Sorted with type t = elt, predicate le = le, + goal Transitive.Trans + use import list.List use import list.Permut diff --git a/examples/insertion_sort_list/why3session.xml b/examples/insertion_sort_list/why3session.xml index 7f46bc8a9a..07d6ebdf13 100644 --- a/examples/insertion_sort_list/why3session.xml +++ b/examples/insertion_sort_list/why3session.xml @@ -5,7 +5,10 @@ <prover id="0" name="Alt-Ergo" version="0.95.2" timelimit="10" memlimit="1000"/> <prover id="1" name="CVC4" version="1.3" timelimit="10" memlimit="1000"/> <file name="../insertion_sort_list.mlw" expanded="true"> -<theory name="InsertionSort" sum="a68ab62da2fba48733e0e9f8699021f8" expanded="true"> +<theory name="InsertionSort" sum="18eee291d33ec7eb040007ff367abb3c" expanded="true"> + <goal name="Transitive.Trans" expanded="true"> + <proof prover="0" timelimit="5"><result status="valid" time="0.01"/></proof> + </goal> <goal name="WP_parameter insert" expl="VC for insert" expanded="true"> <transf name="split_goal_wp" expanded="true"> <goal name="WP_parameter insert.1" expl="1. postcondition"> @@ -27,10 +30,10 @@ <proof prover="0"><result status="valid" time="0.03"/></proof> </goal> <goal name="WP_parameter insert.7" expl="7. postcondition"> - <proof prover="0"><result status="valid" time="0.50"/></proof> + <proof prover="0"><result status="valid" time="0.58"/></proof> </goal> <goal name="WP_parameter insert.8" expl="8. postcondition" expanded="true"> - <proof prover="1"><result status="valid" time="0.20"/></proof> + <proof prover="1"><result status="valid" time="0.42"/></proof> </goal> </transf> </goal> diff --git a/examples/insertion_sort_list/why3shapes.gz b/examples/insertion_sort_list/why3shapes.gz index b9e142ddee225f82b16caf4e70769b3bd21ef72e..d7988206be0cae0a01eacd6ee301e5edd0c2f096 100644 GIT binary patch literal 689 zcmb2|=3oGW|64;&XGJ^m-2JZohjX#y+3bt1oGd&GPw$@YCL|GMZSn5$=hd%|Twj@d zdCP^PPxqNznt1MFpr7Ijmt_nKQzk@ZU7VEUX%=)=``4o28IP*=9X@UAQ}Ca01q<`G zGm9iQvPhiSs`^lZWny^wmleO)-{&jYe%tPB`m!IL^U8iVpAwOe+jr^t+37!T?cvn( zE~w=63yzC#c{pYIhMN60kCt0or`^lR{apODaFwuJ|DPFZ6~QZYpWizC>Fdt(U;eyX zer@@TonP;WbZs&@ptd+@<xHv2OQ)_l#oNA{$Ctc)>e<B2x8vSc?saH>e!cjcnxuR8 zlgYk9J>L8auC6Ir=jJ4S^FGhdy{U5&+u|4_jKq%~u$3+oXGnVUvP!sO-i4}($95k3 z7(eII-`8GiZhB?iICdfA@d?%m!P#k^ffauiF09v#bW)nW{)?Q_FJ+E|lwQpzv)r~{ zEx(nYQ616QxA)TIxEHMPGv<HY^zYBTRbeOH&OE4ATvM9BsIJpIy|u$~z1;U-X^UR| z{aNkCxp3)>BH_)`G#7;l2Bu9_ysmkge|b*DPP>!lsfpiWUg;}j>RegS+QS&_+tbl( zy&<aX=clDzdOQEFzmYZR+V0d0Cc_9`mUsR!&iy<Z8!WEyq^@M;SNFI2Uz=*Q|8S4F z><f|di^rE5PThRr(8=s3<JgJSE)5pWviI7`PTaNbnpBg!&iF6SUz_QRS$F7I?_|-g zey?^oKf%FtR}x3;^ru?xpMBOX=UzHXK``spF`HGq3ofkPvXGVK|CZ>?F7MOpC(G|H z|G%p|l=s*}y~eX=Pnw2Cb2|50M1Ol<l04DxLM+GW6X~8YYadQfl~!Hlb?V(?rn7gQ zbZ!N7eQo>y_niHmX)og&8J{1?U@^WwZ_%~n<W-yPo&DZT+OF}-zo3rsb-zb|7zYCb E0IT0!K>z>% literal 660 zcmb2|=3oGW|64;&W+^-J?0v5NhjXdc%4vsXoDL)ySbmGuT6ti?#^$$?cJ-&q?v(AB zkfPAO%zWy+FJHdQso>WAp`#nV>Cnm5$D8yF!k#C7I<kJ-zn|Hs{Z~ItD`4jNH_?3c z*J~voK5t+DXHUh=*zVO2EZB~3e_(LojS>&L)Zq*(yGM_MZ>PuU+<x@_$?*wncjSK> z^AxmBIbK|8SNBx>_4a~__si3cOU$qfSail~Ym0{Igivk0Up~FQtXF*F!e{5k>XvSd zT{F$RdS36+gAcz>krl4&3!3D8GRg6q+9SiXV{@90cE1T%sTWgAKi=46^1(3cjH|-( zd)~o^f<BZ9S0rVWEjTeh`OW{IiazHjw(xcb_`PYBe$sYMSkU>^qLVT9887M;CMQgm zUAAk6R*|Qxv*?<oTAMeY%#YKr*g1E_)vX_o>3wO+pM3vi>bF0US0s3OEF#ujSfP3@ z?a8F`b8pB@R9m0DJISQRuKsKb@0?kp0;VrM6^AbEKHAx_?6&gapN7(L>-=BLHuC$% z^0jr+4W^?Lrn+AJ?zYz6TYXpHcV@T$2Xpps-R3vZg>hBGt=LXYg`Y}ZkvBxwE_QzF zCAl%7?#q(P_l+l4#xL9d+Tr+)ZackR&3P@)`r;lh<3D!6ym-4o!qwEZJD-WkwxnH2 ztxdP&Upl|yX0$_mo0j77l%^}o7uP=D<;iHWZlhq<PRqrz>f0}GeRicdK)sV8>AO~s z<6==?r&p)lcZ;&wZ>yPCbHDcc`j=l6+2_}INv^#ezc5eaT;y4uzM_<!+dYn7+AZLA zs(jLp&c<`4p+|0PXn9vI#uR9%D8JIP=waXgz4PtwOn*7Oi!uIcII|CfUh>6=PF9P= Zk5Aqf-Fw`zZ{?i&m#-)6y2H-E000(SPpbd` diff --git a/examples/linked_list_rev/why3session.xml b/examples/linked_list_rev/why3session.xml index f93c744a9f..caa1b4393b 100644 --- a/examples/linked_list_rev/why3session.xml +++ b/examples/linked_list_rev/why3session.xml @@ -4,30 +4,26 @@ <why3session shape_version="4"> <prover id="0" name="Coq" version="8.4pl4" timelimit="5" memlimit="0"/> <prover id="1" name="CVC3" version="2.4.1" timelimit="5" memlimit="4000"/> -<prover id="2" name="Alt-Ergo" version="0.95.1" timelimit="5" memlimit="0"/> -<prover id="3" name="Z3" version="2.19" timelimit="5" memlimit="0"/> -<prover id="4" name="CVC3" version="2.2" timelimit="5" memlimit="0"/> -<prover id="5" name="Z3" version="3.2" timelimit="5" memlimit="4000"/> -<prover id="6" name="Alt-Ergo" version="0.95.2" timelimit="5" memlimit="4000"/> -<prover id="7" name="CVC4" version="1.3" timelimit="5" memlimit="4000"/> +<prover id="2" name="Alt-Ergo" version="0.95.2" timelimit="5" memlimit="4000"/> +<prover id="3" name="CVC4" version="1.3" timelimit="5" memlimit="4000"/> <file name="../linked_list_rev.mlw" expanded="true"> <theory name="ListReverse" sum="d41d8cd98f00b204e9800998ecf8427e" expanded="true"> </theory> -<theory name="InPlaceRev" sum="3c1c96a3f0506ade10b9b7f2051e8742" expanded="true"> +<theory name="InPlaceRev" sum="fd2061728df4ef10ceafdbfcc7847ac8" expanded="true"> <goal name="list_seg_frame" expanded="true"> - <proof prover="0" edited="linked_list_rev_WP_InPlaceRev_list_seg_frame_1.v"><result status="valid" time="1.13"/></proof> + <proof prover="0" edited="linked_list_rev_WP_InPlaceRev_list_seg_frame_1.v" obsolete="true"><result status="valid" time="1.13"/></proof> </goal> <goal name="list_seg_functional" expanded="true"> - <proof prover="0" edited="linked_list_rev_WP_InPlaceRev_list_seg_functional_1.v"><result status="valid" time="1.08"/></proof> + <proof prover="0" edited="linked_list_rev_WP_InPlaceRev_list_seg_functional_1.v" obsolete="true"><result status="valid" time="1.08"/></proof> </goal> <goal name="list_seg_sublistl" expanded="true"> - <proof prover="0" edited="linked_list_rev_WP_InPlaceRev_list_seg_sublistl_1.v"><result status="valid" time="1.05"/></proof> + <proof prover="0" edited="linked_list_rev_WP_InPlaceRev_list_seg_sublistl_1.v" obsolete="true"><result status="valid" time="1.05"/></proof> </goal> <goal name="list_seg_no_repet" expanded="true"> - <proof prover="0" edited="linked_list_rev_WP_InPlaceRev_list_seg_no_repet_1.v"><result status="valid" time="1.07"/></proof> + <proof prover="0" edited="linked_list_rev_WP_InPlaceRev_list_seg_no_repet_1.v" obsolete="true"><result status="valid" time="1.07"/></proof> </goal> - <goal name="WP_parameter in_place_reverse" expl="VC for in_place_reverse" expanded="true"> - <transf name="split_goal_wp" expanded="true"> + <goal name="WP_parameter in_place_reverse" expl="VC for in_place_reverse"> + <transf name="split_goal_wp"> <goal name="WP_parameter in_place_reverse.1" expl="1. loop invariant init"> <proof prover="2" memlimit="1000"><result status="valid" time="0.02"/></proof> </goal> @@ -39,36 +35,28 @@ </goal> <goal name="WP_parameter in_place_reverse.4" expl="4. loop invariant init"> <proof prover="1" memlimit="0"><result status="valid" time="0.02"/></proof> - <proof prover="2"><result status="valid" time="0.01"/></proof> - <proof prover="3"><result status="valid" time="0.02"/></proof> - <proof prover="4"><result status="valid" time="0.01"/></proof> - <proof prover="5" memlimit="0"><result status="valid" time="0.02"/></proof> </goal> <goal name="WP_parameter in_place_reverse.5" expl="5. assertion"> - <proof prover="2"><result status="valid" time="0.20"/></proof> + <proof prover="2" memlimit="1000"><result status="valid" time="0.36"/></proof> </goal> <goal name="WP_parameter in_place_reverse.6" expl="6. loop invariant preservation"> - <proof prover="2" memlimit="1000"><result status="valid" time="0.19"/></proof> + <proof prover="2" memlimit="1000"><result status="valid" time="0.33"/></proof> </goal> <goal name="WP_parameter in_place_reverse.7" expl="7. loop invariant preservation"> - <proof prover="2" memlimit="1000"><result status="valid" time="0.09"/></proof> + <proof prover="2" memlimit="1000"><result status="valid" time="0.15"/></proof> </goal> <goal name="WP_parameter in_place_reverse.8" expl="8. loop invariant preservation"> <proof prover="1"><result status="valid" time="0.12"/></proof> - <proof prover="5"><result status="valid" time="0.10"/></proof> - <proof prover="7"><result status="valid" time="0.13"/></proof> + <proof prover="3"><result status="valid" time="0.13"/></proof> </goal> <goal name="WP_parameter in_place_reverse.9" expl="9. loop invariant preservation"> <proof prover="1" memlimit="1000"><result status="valid" time="0.09"/></proof> - <proof prover="2" memlimit="1000"><result status="valid" time="0.91"/></proof> </goal> <goal name="WP_parameter in_place_reverse.10" expl="10. loop variant decrease"> - <proof prover="6"><result status="valid" time="0.10"/></proof> + <proof prover="2"><result status="valid" time="0.10"/></proof> </goal> <goal name="WP_parameter in_place_reverse.11" expl="11. postcondition"> <proof prover="1" memlimit="0"><result status="valid" time="0.02"/></proof> - <proof prover="2"><result status="valid" time="0.22"/></proof> - <proof prover="4"><result status="valid" time="0.02"/></proof> </goal> </transf> </goal> diff --git a/examples/linked_list_rev/why3shapes.gz b/examples/linked_list_rev/why3shapes.gz index d1e962d89a65b4bd1f064ca916137b9e9eb641b2..2120c3a0a968545aece529dea80fa69cf4b1eebb 100644 GIT binary patch literal 774 zcmb2|=3oGW|8K)>^B-FXy#1_wW%<MB1<Q6E;z&5)>$R=>;e<0UA53LFJ$vu``Y-ND zCkuOG3fp59RxMHd+4jEhhsVs6wZ<MZdxe*B23q@sSsI+1a9(!(@51l7I{p`3WNrEF zuf4viT(5tBac|whzX8AZ@3vp`Y~!0nS&rLh^aU<AJiWWY@%f`>Wr30-OhLhhOB_Pi zuYGwg;^LZf65A4IFds{jyP}?;x-v|KiET^Dl7y#0wwY{xtQCh2x*p}9otUHVexh>T zWuABMrN6DY{fW=pd(zR)%Lmg1qiv%LJT+LK9xb=Y*_V5|SlDs>Gp0S~f|*#fm)M$Z zo0h%mTD7KHqo38}_rG4cFz284zS;NG<ln+i$@}fHQx==Gd;aU0Tw0M_Ab0ng@BIB@ zbAEqZ?`!|2PgmGi^U=Q7t(T(S9$ufdcd7ZF$91xQi-fGZj@65uyXbD68}#SO6iz`k z$E^5n&D5T6O1yHbR`GV{{rn-;TDkuFoaj%hd!lQm8O#y#Yr4?1ylb!Ot3=&(UAyuv zAInaN5`4QmJ|*b4Y-wc6^9Mzh(<QVOCi|}}2nc0dBITqlp?pf>&9&KQi?8$R?|EB! zW9#<1@A)5$e^1&{;e9nFeJM+lhumhfV;-B#KkCn{ow6k2a@npGJZ1_an<9;ZHp^x! zPGt$7eCFvNj;O>%Q}%M6v~Xc!Vb=^fp*7*$jCD@+Wxn=aQaY=$yo&Wa`C^M%m2z{k z_#K0mJ}%U`9lKxBF8<c)|9iLDC$*n=P`cG|RdU&#Gc#+iiFQwI`5NnKlkc7U`%v+| z|7+9N)VU`%2RF{;n4M#zb#mP@9v7h#S7YwwHordPr}NAEdh<Fd%L$${y^O^ZeZ8VN z_f@PFm3*4_%F3Q=zliNTtG8=1!`}9~hL;+@58L>nhLQCu=Sg2z`)b~wmwqiM4Zgba zkswpGxYLER`L|WWQd{G4jNI48Pd(?lZRy7ym7;%wzP;GK;I_Z7Q`SGPpuOs5tJI>o lMGYD5eonh{GVR3Qr-8MVALDHQ87=w8X!K3=#X4RF1^_-bca;DD literal 767 zcmb2|=3oGW|8J-H=1W`hw7vf;TKv9s$v*yS11^aVs>gSVO>rq*UU0ne`0Q`b_1{{2 z>@hdI<lL<%F#p(;FF`df6T8@WqWB`07;IW9AhnC_s6bNQvd3=?WbOPvEnO~Gef+Wg z?YGbR_MhB-?@Qj%!#CRG@5bAHQfZgFk`eydv><NtzlO83!emmO3#+RO-fS*c&}_Tp z^hz(vHdjx|&Gf~RjZsn`b>6JezL~yG(dhOSgRMF<gi|hV=$U&oq56UU?!rs`?kAVd z|IBAs7xMP#mapv5IZ0~$2WR^nOkDKpf~W7oNgU-i@9f?`jZ=J(#`z#~zCcp)d`@M{ zte8a$F7K6|KS$Hi$^4ADRE0kOruk3y{0n}(JFz-3rE1A#wf)~W7gzK>*c5f1SO0%l zO#92%c@q5n%Err9_8(svzC^I^nR?Xucb)t;In~?e-IQDS@&2K$<$GuHGu8(hE&Ohr ze5rnQ<%x~v;dzfVSC>TQUoSr&wtvpo`!lZo>=s;I`_N#H?75z}-se4gS-+Nu={wo> z#eDJen&oo*W%#@Y6^qwR{*V-teeP$(;?-MKl~W9t`Xog+y;@bA;<Nqk+jqMYYaaYP z@Yr#G+u`#ss`YpkX9_T@imZxhaqxD~T%y@&{&l@__1VrH$Ih~un3_KlSt!O6#eAhx zdBamzb?-UrJ*AWO+A|(7OSg5E-^^-qQ}SA4TKtr{*E9D$6FJZ>r8x1L#BpEFNmm*s z9CTT{zi+wcxAsKyeYRW8_uFod_w9VJNF{jn>7KAXg5o@@j%KN)J<DG5z4~H?e1+uu z^=l<(|5uJUA<7(@vhvZQID_*t!s1+0jHRojZ$x(1J+FFnYTLwbS0=GIZ;Z>YbCq6{ zAGB%ZN3-jx+BNFGBA7OKe7M9TP?cx5;IjGD^0i&xxY^A+_kET8bne#?D|QZtS({I) zckt<kX^1RbqBQH`bG|<=yS#38A1nN<`NQv<%eI?R3$m_m^<iCfB*Mqp#4t0zo9FJ| gJgX^pBidhw)&Bi(@6KOC$G_Y=4R1BA<7Hp~0D3KY1poj5 diff --git a/examples/mergesort_list.mlw b/examples/mergesort_list.mlw index 5779a6faae..26b6daa075 100644 --- a/examples/mergesort_list.mlw +++ b/examples/mergesort_list.mlw @@ -15,7 +15,8 @@ module Elt type elt predicate le elt elt clone relations.TotalPreOrder with type t = elt, predicate rel = le - clone export list.Sorted with type t = elt, predicate le = le + clone export list.Sorted with type t = elt, predicate le = le, + goal Transitive.Trans end diff --git a/examples/mergesort_list/why3session.xml b/examples/mergesort_list/why3session.xml index 6215ec61df..48ff85b06e 100644 --- a/examples/mergesort_list/why3session.xml +++ b/examples/mergesort_list/why3session.xml @@ -2,577 +2,1210 @@ <!DOCTYPE why3session PUBLIC "-//Why3//proof session v5//EN" "http://why3.lri.fr/why3session.dtd"> <why3session shape_version="4"> -<prover id="0" name="Eprover" version="1.6" timelimit="6" memlimit="1000"/> -<prover id="1" name="CVC3" version="2.4.1" timelimit="6" memlimit="1000"/> -<prover id="2" name="Z3" version="2.19" timelimit="6" memlimit="1000"/> -<prover id="3" name="CVC4" version="1.4" timelimit="6" memlimit="1000"/> -<prover id="4" name="Spass" version="3.7" timelimit="10" memlimit="1000"/> -<prover id="5" name="Z3" version="4.3.1" timelimit="10" memlimit="1000"/> -<prover id="6" name="CVC3" version="2.2" timelimit="6" memlimit="1000"/> -<prover id="7" name="Z3" version="3.2" timelimit="5" memlimit="1000"/> -<prover id="8" name="Alt-Ergo" version="0.95.2" timelimit="6" memlimit="1000"/> +<prover id="0" name="CVC3" version="2.4.1" timelimit="6" memlimit="1000"/> +<prover id="1" name="CVC4" version="1.4" timelimit="6" memlimit="1000"/> +<prover id="2" name="Z3" version="4.3.1" timelimit="10" memlimit="1000"/> +<prover id="3" name="Alt-Ergo" version="0.95.2" timelimit="6" memlimit="1000"/> <file name="../mergesort_list.mlw" expanded="true"> -<theory name="Elt" sum="d41d8cd98f00b204e9800998ecf8427e"> +<theory name="Elt" sum="f5c537c37e9fac9baf0147e1e940244b"> + <goal name="Transitive.Trans"> + <proof prover="3" timelimit="5"><result status="valid" time="0.02"/></proof> + </goal> </theory> -<theory name="Merge" sum="4da394421f517d7531b7670efde9979c" expanded="true"> +<theory name="Merge" sum="ec4620a645a6ec4bd6489df3c251bb0a"> <goal name="WP_parameter merge" expl="VC for merge"> <transf name="split_goal_wp"> <goal name="WP_parameter merge.1" expl="1. postcondition"> - <proof prover="8"><result status="valid" time="0.01"/></proof> + <proof prover="3"><result status="valid" time="0.01"/></proof> </goal> <goal name="WP_parameter merge.2" expl="2. postcondition"> - <proof prover="8"><result status="valid" time="0.02"/></proof> + <proof prover="3"><result status="valid" time="0.02"/></proof> </goal> <goal name="WP_parameter merge.3" expl="3. postcondition"> - <proof prover="1"><result status="valid" time="0.01"/></proof> - <proof prover="6"><result status="valid" time="0.01"/></proof> + <proof prover="0"><result status="valid" time="0.01"/></proof> </goal> <goal name="WP_parameter merge.4" expl="4. postcondition"> - <proof prover="3"><result status="valid" time="0.02"/></proof> + <proof prover="1"><result status="valid" time="0.02"/></proof> </goal> <goal name="WP_parameter merge.5" expl="5. postcondition"> - <proof prover="8"><result status="valid" time="0.01"/></proof> + <proof prover="3"><result status="valid" time="0.01"/></proof> </goal> <goal name="WP_parameter merge.6" expl="6. postcondition"> - <proof prover="8"><result status="valid" time="0.02"/></proof> + <proof prover="3"><result status="valid" time="0.02"/></proof> </goal> <goal name="WP_parameter merge.7" expl="7. variant decrease"> - <proof prover="8" timelimit="5"><result status="valid" time="0.01"/></proof> + <proof prover="3" timelimit="5"><result status="valid" time="0.01"/></proof> </goal> <goal name="WP_parameter merge.8" expl="8. precondition"> - <proof prover="3"><result status="valid" time="0.02"/></proof> + <proof prover="1"><result status="valid" time="0.02"/></proof> </goal> <goal name="WP_parameter merge.9" expl="9. postcondition"> - <proof prover="3" timelimit="5"><result status="valid" time="1.38"/></proof> + <proof prover="1" timelimit="5"><result status="valid" time="2.03"/></proof> </goal> <goal name="WP_parameter merge.10" expl="10. postcondition"> - <proof prover="3"><result status="valid" time="0.05"/></proof> - <proof prover="8"><result status="valid" time="0.00"/></proof> + <proof prover="1"><result status="valid" time="0.05"/></proof> + <proof prover="3"><result status="valid" time="0.00"/></proof> </goal> <goal name="WP_parameter merge.11" expl="11. variant decrease"> - <proof prover="8"><result status="valid" time="0.00"/></proof> + <proof prover="3"><result status="valid" time="0.00"/></proof> </goal> <goal name="WP_parameter merge.12" expl="12. precondition"> - <proof prover="3"><result status="valid" time="0.04"/></proof> - <proof prover="5"><result status="valid" time="0.02"/></proof> - <proof prover="8"><result status="valid" time="0.01"/></proof> + <proof prover="1"><result status="valid" time="0.04"/></proof> + <proof prover="2"><result status="valid" time="0.02"/></proof> + <proof prover="3"><result status="valid" time="0.01"/></proof> </goal> <goal name="WP_parameter merge.13" expl="13. postcondition"> - <proof prover="3" timelimit="5"><result status="valid" time="1.48"/></proof> + <proof prover="1" timelimit="5"><result status="valid" time="2.27"/></proof> </goal> <goal name="WP_parameter merge.14" expl="14. postcondition"> - <proof prover="3"><result status="valid" time="0.31"/></proof> + <proof prover="1"><result status="valid" time="0.31"/></proof> </goal> </transf> </goal> </theory> -<theory name="EfficientMerge" sum="b880335875d65fb958fdcc145ef37b26" expanded="true"> +<theory name="EfficientMerge" sum="0114e3fc05a68e58b01610126d62c13f"> <goal name="sorted_reverse_cons"> - <proof prover="1"><result status="valid" time="0.28"/></proof> - <proof prover="5" timelimit="6"><result status="valid" time="0.34"/></proof> + <proof prover="0"><result status="valid" time="0.48"/></proof> + <proof prover="2" timelimit="6"><result status="valid" time="0.34"/></proof> </goal> <goal name="WP_parameter merge_aux" expl="VC for merge_aux"> <transf name="split_goal_wp"> <goal name="WP_parameter merge_aux.1" expl="1. postcondition"> - <proof prover="8"><result status="valid" time="0.03"/></proof> + <proof prover="3"><result status="valid" time="0.03"/></proof> </goal> <goal name="WP_parameter merge_aux.2" expl="2. postcondition"> <transf name="split_goal_wp"> <goal name="WP_parameter merge_aux.2.1" expl="1. postcondition"> - <proof prover="0"><result status="valid" time="0.05"/></proof> - <proof prover="1"><result status="valid" time="0.10"/></proof> - <proof prover="3"><result status="valid" time="0.03"/></proof> - <proof prover="5" timelimit="6"><result status="valid" time="0.02"/></proof> - <proof prover="8"><result status="valid" time="0.08"/></proof> + <proof prover="0"><result status="valid" time="0.10"/></proof> + <proof prover="1"><result status="valid" time="0.03"/></proof> + <proof prover="2" timelimit="6"><result status="valid" time="0.02"/></proof> + <proof prover="3"><result status="valid" time="0.08"/></proof> </goal> </transf> </goal> <goal name="WP_parameter merge_aux.3" expl="3. postcondition"> - <proof prover="8"><result status="valid" time="0.09"/></proof> + <proof prover="3"><result status="valid" time="0.09"/></proof> </goal> <goal name="WP_parameter merge_aux.4" expl="4. postcondition"> - <proof prover="3"><result status="valid" time="0.75"/></proof> + <proof prover="1"><result status="valid" time="0.80"/></proof> </goal> <goal name="WP_parameter merge_aux.5" expl="5. postcondition"> - <proof prover="8"><result status="valid" time="0.06"/></proof> + <proof prover="3"><result status="valid" time="0.06"/></proof> </goal> <goal name="WP_parameter merge_aux.6" expl="6. postcondition"> - <proof prover="8"><result status="valid" time="0.05"/></proof> + <proof prover="3"><result status="valid" time="0.05"/></proof> </goal> <goal name="WP_parameter merge_aux.7" expl="7. variant decrease"> - <proof prover="8"><result status="valid" time="0.02"/></proof> + <proof prover="3"><result status="valid" time="0.02"/></proof> </goal> <goal name="WP_parameter merge_aux.8" expl="8. precondition"> - <proof prover="3"><result status="valid" time="0.25"/></proof> + <proof prover="1"><result status="valid" time="0.26"/></proof> <transf name="split_goal_wp"> <goal name="WP_parameter merge_aux.8.1" expl="1."> - <proof prover="4"><result status="valid" time="0.07"/></proof> - <proof prover="5"><result status="valid" time="0.44"/></proof> - <proof prover="8"><result status="valid" time="1.48"/></proof> + <proof prover="2"><result status="valid" time="0.59"/></proof> + <proof prover="3"><result status="valid" time="1.39"/></proof> </goal> <goal name="WP_parameter merge_aux.8.2" expl="2."> - <proof prover="8"><result status="valid" time="0.02"/></proof> + <proof prover="3"><result status="valid" time="0.02"/></proof> </goal> <goal name="WP_parameter merge_aux.8.3" expl="3."> - <proof prover="8"><result status="valid" time="0.03"/></proof> + <proof prover="3"><result status="valid" time="0.03"/></proof> </goal> </transf> </goal> <goal name="WP_parameter merge_aux.9" expl="9. precondition"> - <proof prover="3"><result status="valid" time="0.06"/></proof> - <proof prover="5"><result status="valid" time="2.41"/></proof> - <proof prover="8"><result status="valid" time="0.09"/></proof> + <proof prover="1"><result status="valid" time="0.06"/></proof> + <proof prover="2"><result status="valid" time="2.60"/></proof> + <proof prover="3"><result status="valid" time="0.09"/></proof> </goal> <goal name="WP_parameter merge_aux.10" expl="10. precondition"> - <proof prover="3"><result status="valid" time="0.38"/></proof> - <proof prover="5"><result status="valid" time="0.92"/></proof> + <proof prover="1"><result status="valid" time="0.40"/></proof> + <proof prover="2"><result status="valid" time="1.13"/></proof> </goal> <goal name="WP_parameter merge_aux.11" expl="11. postcondition"> - <proof prover="8"><result status="valid" time="0.01"/></proof> + <proof prover="3"><result status="valid" time="0.01"/></proof> </goal> <goal name="WP_parameter merge_aux.12" expl="12. postcondition"> - <proof prover="8"><result status="valid" time="2.14"/></proof> + <proof prover="3"><result status="valid" time="2.46"/></proof> </goal> <goal name="WP_parameter merge_aux.13" expl="13. variant decrease"> - <proof prover="1"><result status="valid" time="0.03"/></proof> - <proof prover="3"><result status="valid" time="0.02"/></proof> - <proof prover="8"><result status="valid" time="0.06"/></proof> + <proof prover="0"><result status="valid" time="0.03"/></proof> + <proof prover="1"><result status="valid" time="0.02"/></proof> + <proof prover="3"><result status="valid" time="0.06"/></proof> </goal> <goal name="WP_parameter merge_aux.14" expl="14. precondition"> - <proof prover="0"><result status="valid" time="0.55"/></proof> - <proof prover="3"><result status="valid" time="0.14"/></proof> - <proof prover="8"><result status="valid" time="4.06"/></proof> + <proof prover="1"><result status="valid" time="0.14"/></proof> + <proof prover="3"><result status="valid" time="4.06"/></proof> </goal> <goal name="WP_parameter merge_aux.15" expl="15. precondition"> - <proof prover="3"><result status="valid" time="0.47"/></proof> + <proof prover="1"><result status="valid" time="0.47"/></proof> </goal> <goal name="WP_parameter merge_aux.16" expl="16. precondition"> - <proof prover="8"><result status="valid" time="0.14"/></proof> + <proof prover="3"><result status="valid" time="0.14"/></proof> </goal> <goal name="WP_parameter merge_aux.17" expl="17. postcondition"> - <proof prover="3"><result status="valid" time="0.02"/></proof> + <proof prover="1"><result status="valid" time="0.02"/></proof> </goal> <goal name="WP_parameter merge_aux.18" expl="18. postcondition"> - <proof prover="1"><result status="valid" time="0.53"/></proof> + <proof prover="0"><result status="valid" time="0.53"/></proof> </goal> </transf> </goal> <goal name="WP_parameter merge" expl="VC for merge"> <transf name="split_goal_wp"> <goal name="WP_parameter merge.1" expl="1. precondition"> - <proof prover="8"><result status="valid" time="0.01"/></proof> + <proof prover="3"><result status="valid" time="0.01"/></proof> </goal> <goal name="WP_parameter merge.2" expl="2. precondition"> - <proof prover="3"><result status="valid" time="0.03"/></proof> - <proof prover="5"><result status="valid" time="0.02"/></proof> - <proof prover="8"><result status="valid" time="0.02"/></proof> + <proof prover="1"><result status="valid" time="0.03"/></proof> + <proof prover="2"><result status="valid" time="0.02"/></proof> + <proof prover="3"><result status="valid" time="0.02"/></proof> </goal> <goal name="WP_parameter merge.3" expl="3. precondition"> - <proof prover="3"><result status="valid" time="0.04"/></proof> - <proof prover="5"><result status="valid" time="0.03"/></proof> - <proof prover="8"><result status="valid" time="0.02"/></proof> + <proof prover="1"><result status="valid" time="0.04"/></proof> + <proof prover="2"><result status="valid" time="0.03"/></proof> + <proof prover="3"><result status="valid" time="0.02"/></proof> </goal> <goal name="WP_parameter merge.4" expl="4. postcondition"> - <proof prover="8"><result status="valid" time="0.03"/></proof> + <proof prover="3"><result status="valid" time="0.03"/></proof> </goal> </transf> </goal> </theory> -<theory name="Mergesort" sum="e0e0999cbafa269942aac80ff1eaf32b" expanded="true"> +<theory name="Mergesort" sum="0105dba18167ed706164be02a49a48f2"> <goal name="WP_parameter split" expl="VC for split"> <transf name="split_goal_wp"> <goal name="WP_parameter split.1" expl="1. postcondition"> - <proof prover="8"><result status="valid" time="0.03"/></proof> + <proof prover="3"><result status="valid" time="0.03"/></proof> </goal> <goal name="WP_parameter split.2" expl="2. variant decrease"> - <proof prover="8"><result status="valid" time="0.02"/></proof> + <proof prover="3"><result status="valid" time="0.02"/></proof> </goal> <goal name="WP_parameter split.3" expl="3. precondition"> - <proof prover="8"><result status="valid" time="0.01"/></proof> + <proof prover="3"><result status="valid" time="0.01"/></proof> </goal> <goal name="WP_parameter split.4" expl="4. postcondition"> <transf name="split_goal_wp"> <goal name="WP_parameter split.4.1" expl="1."> - <proof prover="8"><result status="valid" time="0.02"/></proof> + <proof prover="3"><result status="valid" time="0.02"/></proof> </goal> <goal name="WP_parameter split.4.2" expl="2."> - <proof prover="3"><result status="valid" time="0.81"/></proof> + <proof prover="1"><result status="valid" time="0.81"/></proof> </goal> </transf> </goal> <goal name="WP_parameter split.5" expl="5. precondition"> - <proof prover="8"><result status="valid" time="0.01"/></proof> + <proof prover="3"><result status="valid" time="0.01"/></proof> </goal> <goal name="WP_parameter split.6" expl="6. postcondition"> - <proof prover="8"><result status="valid" time="0.05"/></proof> + <proof prover="3"><result status="valid" time="0.05"/></proof> </goal> </transf> </goal> <goal name="WP_parameter mergesort" expl="VC for mergesort"> <transf name="split_goal_wp"> <goal name="WP_parameter mergesort.1" expl="1. postcondition"> - <proof prover="8"><result status="valid" time="0.00"/></proof> + <proof prover="3"><result status="valid" time="0.00"/></proof> </goal> <goal name="WP_parameter mergesort.2" expl="2. postcondition"> - <proof prover="8"><result status="valid" time="0.03"/></proof> + <proof prover="3"><result status="valid" time="0.03"/></proof> </goal> <goal name="WP_parameter mergesort.3" expl="3. precondition"> - <proof prover="8"><result status="valid" time="0.01"/></proof> + <proof prover="3"><result status="valid" time="0.01"/></proof> </goal> <goal name="WP_parameter mergesort.4" expl="4. variant decrease"> - <proof prover="8"><result status="valid" time="0.01"/></proof> + <proof prover="3"><result status="valid" time="0.01"/></proof> </goal> <goal name="WP_parameter mergesort.5" expl="5. variant decrease"> - <proof prover="8"><result status="valid" time="0.01"/></proof> + <proof prover="3"><result status="valid" time="0.01"/></proof> </goal> <goal name="WP_parameter mergesort.6" expl="6. precondition"> <transf name="split_goal_wp"> <goal name="WP_parameter mergesort.6.1" expl="1."> - <proof prover="8"><result status="valid" time="0.00"/></proof> + <proof prover="3"><result status="valid" time="0.00"/></proof> </goal> <goal name="WP_parameter mergesort.6.2" expl="2."> - <proof prover="3"><result status="valid" time="0.02"/></proof> - <proof prover="8" timelimit="5"><result status="valid" time="0.01"/></proof> + <proof prover="1"><result status="valid" time="0.02"/></proof> + <proof prover="3" timelimit="5"><result status="valid" time="0.01"/></proof> </goal> </transf> </goal> <goal name="WP_parameter mergesort.7" expl="7. postcondition"> <transf name="split_goal_wp"> <goal name="WP_parameter mergesort.7.1" expl="1."> - <proof prover="3" timelimit="5"><result status="valid" time="0.02"/></proof> - <proof prover="8" timelimit="5"><result status="valid" time="0.01"/></proof> + <proof prover="1" timelimit="5"><result status="valid" time="0.02"/></proof> + <proof prover="3" timelimit="5"><result status="valid" time="0.01"/></proof> </goal> <goal name="WP_parameter mergesort.7.2" expl="2."> - <proof prover="3" timelimit="5"><result status="valid" time="0.18"/></proof> + <proof prover="1" timelimit="5"><result status="valid" time="0.18"/></proof> </goal> </transf> </goal> </transf> </goal> </theory> -<theory name="OCamlMergesort" sum="821d5233cbffe7cb9b87614067b1d446" expanded="true"> +<theory name="OCamlMergesort" sum="3f35dbbdc9d39afb0ba6416cea2813a1" expanded="true"> <goal name="sorted_reverse_cons"> - <proof prover="1" timelimit="10"><result status="valid" time="0.38"/></proof> + <proof prover="0" timelimit="10"><result status="valid" time="0.38"/></proof> </goal> <goal name="sorted_rev_append"> - <proof prover="5" timelimit="5"><result status="valid" time="0.10"/></proof> - <proof prover="7"><result status="valid" time="0.09"/></proof> + <proof prover="2" timelimit="5"><result status="valid" time="0.10"/></proof> </goal> <goal name="WP_parameter rev_merge" expl="VC for rev_merge"> <transf name="split_goal_wp"> <goal name="WP_parameter rev_merge.1" expl="1. postcondition"> - <proof prover="8"><result status="valid" time="0.02"/></proof> + <proof prover="3"><result status="valid" time="0.02"/></proof> </goal> <goal name="WP_parameter rev_merge.2" expl="2. postcondition"> - <proof prover="8"><result status="valid" time="0.01"/></proof> + <proof prover="3"><result status="valid" time="0.01"/></proof> </goal> <goal name="WP_parameter rev_merge.3" expl="3. postcondition"> - <proof prover="8"><result status="valid" time="0.03"/></proof> + <proof prover="3"><result status="valid" time="0.03"/></proof> </goal> <goal name="WP_parameter rev_merge.4" expl="4. postcondition"> - <proof prover="3"><result status="valid" time="0.63"/></proof> + <proof prover="1"><result status="valid" time="0.89"/></proof> </goal> <goal name="WP_parameter rev_merge.5" expl="5. postcondition"> - <proof prover="8"><result status="valid" time="0.02"/></proof> + <proof prover="3"><result status="valid" time="0.02"/></proof> </goal> <goal name="WP_parameter rev_merge.6" expl="6. postcondition"> - <proof prover="8"><result status="valid" time="0.05"/></proof> + <proof prover="3"><result status="valid" time="0.16"/></proof> </goal> <goal name="WP_parameter rev_merge.7" expl="7. variant decrease"> - <proof prover="8"><result status="valid" time="0.02"/></proof> + <proof prover="3"><result status="valid" time="0.02"/></proof> </goal> <goal name="WP_parameter rev_merge.8" expl="8. precondition"> - <proof prover="8"><result status="valid" time="4.29"/></proof> + <proof prover="3"><result status="valid" time="4.29"/></proof> </goal> <goal name="WP_parameter rev_merge.9" expl="9. precondition"> - <proof prover="8"><result status="valid" time="0.09"/></proof> + <proof prover="3"><result status="valid" time="0.09"/></proof> </goal> <goal name="WP_parameter rev_merge.10" expl="10. precondition"> - <proof prover="3" timelimit="5"><result status="valid" time="0.36"/></proof> + <proof prover="1" timelimit="5"><result status="valid" time="0.36"/></proof> </goal> <goal name="WP_parameter rev_merge.11" expl="11. postcondition"> - <proof prover="8"><result status="valid" time="0.02"/></proof> + <proof prover="3"><result status="valid" time="0.02"/></proof> </goal> <goal name="WP_parameter rev_merge.12" expl="12. postcondition"> - <proof prover="8"><result status="valid" time="2.08"/></proof> + <proof prover="3"><result status="valid" time="2.55"/></proof> </goal> <goal name="WP_parameter rev_merge.13" expl="13. variant decrease"> - <proof prover="8"><result status="valid" time="0.05"/></proof> + <proof prover="3"><result status="valid" time="0.05"/></proof> </goal> <goal name="WP_parameter rev_merge.14" expl="14. precondition"> - <proof prover="8"><result status="valid" time="3.88"/></proof> + <proof prover="3"><result status="valid" time="3.88"/></proof> </goal> <goal name="WP_parameter rev_merge.15" expl="15. precondition"> - <proof prover="8"><result status="valid" time="1.00"/></proof> + <proof prover="3"><result status="valid" time="1.35"/></proof> </goal> <goal name="WP_parameter rev_merge.16" expl="16. precondition"> - <proof prover="8"><result status="valid" time="0.04"/></proof> + <proof prover="3"><result status="valid" time="0.17"/></proof> </goal> <goal name="WP_parameter rev_merge.17" expl="17. postcondition"> - <proof prover="8"><result status="valid" time="0.04"/></proof> + <proof prover="3"><result status="valid" time="0.04"/></proof> </goal> <goal name="WP_parameter rev_merge.18" expl="18. postcondition"> - <proof prover="3"><result status="valid" time="0.08"/></proof> + <proof prover="1"><result status="valid" time="0.08"/></proof> </goal> </transf> </goal> - <goal name="sorted_reverse_mem"> - <proof prover="3"><result status="valid" time="0.75"/></proof> + <goal name="sorted_reverse_mem" expanded="true"> + <metas + expanded="true"> + <ts_pos name="real" arity="0" id="2" + ip_theory="BuiltIn"> + <ip_library name="why3"/> + <ip_library name="BuiltIn"/> + <ip_qualid name="real"/> + </ts_pos> + <ts_pos name="bool" arity="0" id="3" + ip_theory="Bool"> + <ip_library name="why3"/> + <ip_library name="Bool"/> + <ip_qualid name="bool"/> + </ts_pos> + <ts_pos name="tuple0" arity="0" id="20" + ip_theory="Tuple0"> + <ip_library name="why3"/> + <ip_library name="Tuple0"/> + <ip_qualid name="tuple0"/> + </ts_pos> + <ts_pos name="unit" arity="0" id="21" + ip_theory="Unit"> + <ip_library name="why3"/> + <ip_library name="Unit"/> + <ip_qualid name="unit"/> + </ts_pos> + <ts_pos name="'mark" arity="0" id="54" + ip_theory="Mark"> + <ip_library name="why3"/> + <ip_library name="Mark"/> + <ip_qualid name="'mark"/> + </ts_pos> + <ts_pos name="tuple2" arity="2" id="1058" + ip_theory="Tuple2"> + <ip_library name="why3"/> + <ip_library name="Tuple2"/> + <ip_qualid name="tuple2"/> + </ts_pos> + <ls_pos name="infix =" id="10" + ip_theory="BuiltIn"> + <ip_library name="why3"/> + <ip_library name="BuiltIn"/> + <ip_qualid name="infix ="/> + </ls_pos> + <ls_pos name="zero" id="342" + ip_theory="Int"> + <ip_library name="int"/> + <ip_qualid name="zero"/> + </ls_pos> + <ls_pos name="one" id="343" + ip_theory="Int"> + <ip_library name="int"/> + <ip_qualid name="one"/> + </ls_pos> + <ls_pos name="infix <" id="344" + ip_theory="Int"> + <ip_library name="int"/> + <ip_qualid name="infix <"/> + </ls_pos> + <ls_pos name="infix >" id="347" + ip_theory="Int"> + <ip_library name="int"/> + <ip_qualid name="infix >"/> + </ls_pos> + <ls_pos name="infix <=" id="356" + ip_theory="Int"> + <ip_library name="int"/> + <ip_qualid name="infix <="/> + </ls_pos> + <ls_pos name="infix +" id="1513" + ip_theory="Int"> + <ip_library name="int"/> + <ip_qualid name="infix +"/> + </ls_pos> + <ls_pos name="prefix -" id="1514" + ip_theory="Int"> + <ip_library name="int"/> + <ip_qualid name="prefix -"/> + </ls_pos> + <ls_pos name="infix *" id="1515" + ip_theory="Int"> + <ip_library name="int"/> + <ip_qualid name="infix *"/> + </ls_pos> + <ls_pos name="infix -" id="1563" + ip_theory="Int"> + <ip_library name="int"/> + <ip_qualid name="infix -"/> + </ls_pos> + <ls_pos name="infix >=" id="1583" + ip_theory="Int"> + <ip_library name="int"/> + <ip_qualid name="infix >="/> + </ls_pos> + <ls_pos name="length" id="2396" + ip_theory="Length"> + <ip_library name="list"/> + <ip_qualid name="length"/> + </ls_pos> + <ls_pos name="rev_append" id="4044" + ip_theory="RevAppend"> + <ip_library name="list"/> + <ip_qualid name="rev_append"/> + </ls_pos> + <ls_pos name="num_occ" id="4333" + ip_theory="NumOcc"> + <ip_library name="list"/> + <ip_qualid name="num_occ"/> + </ls_pos> + <ls_pos name="permut" id="4375" + ip_theory="Permut"> + <ip_library name="list"/> + <ip_qualid name="permut"/> + </ls_pos> + <ls_pos name="le" id="5828" + ip_theory="OCamlMergesort"> + <ip_qualid name="le"/> + </ls_pos> + <pr_pos name="Assoc" id="1516" + ip_theory="Int"> + <ip_library name="int"/> + <ip_qualid name="CommutativeGroup"/> + <ip_qualid name="Assoc"/> + </pr_pos> + <pr_pos name="Unit_def_l" id="1523" + 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="1526" + 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="1529" + 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="1532" + ip_theory="Int"> + <ip_library name="int"/> + <ip_qualid name="CommutativeGroup"/> + <ip_qualid name="Inv_def_r"/> + </pr_pos> + <pr_pos name="Comm" id="1535" + 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="1540" + ip_theory="Int"> + <ip_library name="int"/> + <ip_qualid name="Assoc"/> + <ip_qualid name="Assoc"/> + </pr_pos> + <pr_pos name="Mul_distr_l" id="1547" + ip_theory="Int"> + <ip_library name="int"/> + <ip_qualid name="Mul_distr_l"/> + </pr_pos> + <pr_pos name="Mul_distr_r" id="1554" + ip_theory="Int"> + <ip_library name="int"/> + <ip_qualid name="Mul_distr_r"/> + </pr_pos> + <pr_pos name="Comm" id="1572" + ip_theory="Int"> + <ip_library name="int"/> + <ip_qualid name="Comm"/> + <ip_qualid name="Comm"/> + </pr_pos> + <pr_pos name="Unitary" id="1577" + ip_theory="Int"> + <ip_library name="int"/> + <ip_qualid name="Unitary"/> + </pr_pos> + <pr_pos name="NonTrivialRing" id="1580" + ip_theory="Int"> + <ip_library name="int"/> + <ip_qualid name="NonTrivialRing"/> + </pr_pos> + <pr_pos name="Refl" id="1592" + ip_theory="Int"> + <ip_library name="int"/> + <ip_qualid name="Refl"/> + </pr_pos> + <pr_pos name="Trans" id="1595" + ip_theory="Int"> + <ip_library name="int"/> + <ip_qualid name="Trans"/> + </pr_pos> + <pr_pos name="Antisymm" id="1602" + ip_theory="Int"> + <ip_library name="int"/> + <ip_qualid name="Antisymm"/> + </pr_pos> + <pr_pos name="Total" id="1607" + ip_theory="Int"> + <ip_library name="int"/> + <ip_qualid name="Total"/> + </pr_pos> + <pr_pos name="ZeroLessOne" id="1612" + ip_theory="Int"> + <ip_library name="int"/> + <ip_qualid name="ZeroLessOne"/> + </pr_pos> + <pr_pos name="CompatOrderAdd" id="1613" + ip_theory="Int"> + <ip_library name="int"/> + <ip_qualid name="CompatOrderAdd"/> + </pr_pos> + <pr_pos name="CompatOrderMult" id="1620" + ip_theory="Int"> + <ip_library name="int"/> + <ip_qualid name="CompatOrderMult"/> + </pr_pos> + <pr_pos name="Length_nonnegative" id="2406" + ip_theory="Length"> + <ip_library name="list"/> + <ip_qualid name="Length_nonnegative"/> + </pr_pos> + <pr_pos name="Length_nil" id="2409" + ip_theory="Length"> + <ip_library name="list"/> + <ip_qualid name="Length_nil"/> + </pr_pos> + <pr_pos name="Append_assoc" id="3946" + ip_theory="Append"> + <ip_library name="list"/> + <ip_qualid name="Append_assoc"/> + </pr_pos> + <pr_pos name="Append_l_nil" id="3953" + ip_theory="Append"> + <ip_library name="list"/> + <ip_qualid name="Append_l_nil"/> + </pr_pos> + <pr_pos name="Append_length" id="3956" + ip_theory="Append"> + <ip_library name="list"/> + <ip_qualid name="Append_length"/> + </pr_pos> + <pr_pos name="mem_append" id="3961" + ip_theory="Append"> + <ip_library name="list"/> + <ip_qualid name="mem_append"/> + </pr_pos> + <pr_pos name="mem_decomp" id="3968" + ip_theory="Append"> + <ip_library name="list"/> + <ip_qualid name="mem_decomp"/> + </pr_pos> + <pr_pos name="reverse_append" id="4010" + ip_theory="Reverse"> + <ip_library name="list"/> + <ip_qualid name="reverse_append"/> + </pr_pos> + <pr_pos name="reverse_cons" id="4017" + ip_theory="Reverse"> + <ip_library name="list"/> + <ip_qualid name="reverse_cons"/> + </pr_pos> + <pr_pos name="cons_reverse" id="4022" + ip_theory="Reverse"> + <ip_library name="list"/> + <ip_qualid name="cons_reverse"/> + </pr_pos> + <pr_pos name="reverse_reverse" id="4027" + ip_theory="Reverse"> + <ip_library name="list"/> + <ip_qualid name="reverse_reverse"/> + </pr_pos> + <pr_pos name="Reverse_length" id="4035" + ip_theory="Reverse"> + <ip_library name="list"/> + <ip_qualid name="Reverse_length"/> + </pr_pos> + <pr_pos name="rev_append_append_l" id="4061" + ip_theory="RevAppend"> + <ip_library name="list"/> + <ip_qualid name="rev_append_append_l"/> + </pr_pos> + <pr_pos name="rev_append_length" id="4068" + ip_theory="RevAppend"> + <ip_library name="list"/> + <ip_qualid name="rev_append_length"/> + </pr_pos> + <pr_pos name="rev_append_def" id="4073" + ip_theory="RevAppend"> + <ip_library name="list"/> + <ip_qualid name="rev_append_def"/> + </pr_pos> + <pr_pos name="rev_append_append_r" id="4078" + ip_theory="RevAppend"> + <ip_library name="list"/> + <ip_qualid name="rev_append_append_r"/> + </pr_pos> + <pr_pos name="Num_Occ_Positive" id="4352" + ip_theory="NumOcc"> + <ip_library name="list"/> + <ip_qualid name="Num_Occ_Positive"/> + </pr_pos> + <pr_pos name="Mem_Num_Occ" id="4357" + ip_theory="NumOcc"> + <ip_library name="list"/> + <ip_qualid name="Mem_Num_Occ"/> + </pr_pos> + <pr_pos name="Append_Num_Occ" id="4362" + ip_theory="NumOcc"> + <ip_library name="list"/> + <ip_qualid name="Append_Num_Occ"/> + </pr_pos> + <pr_pos name="reverse_num_occ" id="4369" + ip_theory="NumOcc"> + <ip_library name="list"/> + <ip_qualid name="reverse_num_occ"/> + </pr_pos> + <pr_pos name="Permut_refl" id="4387" + ip_theory="Permut"> + <ip_library name="list"/> + <ip_qualid name="Permut_refl"/> + </pr_pos> + <pr_pos name="Permut_sym" id="4390" + ip_theory="Permut"> + <ip_library name="list"/> + <ip_qualid name="Permut_sym"/> + </pr_pos> + <pr_pos name="Permut_trans" id="4395" + ip_theory="Permut"> + <ip_library name="list"/> + <ip_qualid name="Permut_trans"/> + </pr_pos> + <pr_pos name="Permut_cons" id="4402" + ip_theory="Permut"> + <ip_library name="list"/> + <ip_qualid name="Permut_cons"/> + </pr_pos> + <pr_pos name="Permut_swap" id="4409" + ip_theory="Permut"> + <ip_library name="list"/> + <ip_qualid name="Permut_swap"/> + </pr_pos> + <pr_pos name="Permut_cons_append" id="4416" + ip_theory="Permut"> + <ip_library name="list"/> + <ip_qualid name="Permut_cons_append"/> + </pr_pos> + <pr_pos name="Permut_assoc" id="4423" + ip_theory="Permut"> + <ip_library name="list"/> + <ip_qualid name="Permut_assoc"/> + </pr_pos> + <pr_pos name="Permut_append" id="4430" + ip_theory="Permut"> + <ip_library name="list"/> + <ip_qualid name="Permut_append"/> + </pr_pos> + <pr_pos name="Permut_append_swap" id="4439" + ip_theory="Permut"> + <ip_library name="list"/> + <ip_qualid name="Permut_append_swap"/> + </pr_pos> + <pr_pos name="Permut_mem" id="4444" + ip_theory="Permut"> + <ip_library name="list"/> + <ip_qualid name="Permut_mem"/> + </pr_pos> + <pr_pos name="Permut_length" id="4451" + ip_theory="Permut"> + <ip_library name="list"/> + <ip_qualid name="Permut_length"/> + </pr_pos> + <pr_pos name="Refl" id="5829" + ip_theory="OCamlMergesort"> + <ip_qualid name="TotalPreOrder"/> + <ip_qualid name="Refl"/> + </pr_pos> + <pr_pos name="Trans" id="5832" + ip_theory="OCamlMergesort"> + <ip_qualid name="TotalPreOrder"/> + <ip_qualid name="Trans"/> + </pr_pos> + <pr_pos name="Total" id="5839" + ip_theory="OCamlMergesort"> + <ip_qualid name="TotalPreOrder"/> + <ip_qualid name="Total"/> + </pr_pos> + <pr_pos name="sorted_mem" id="5867" + ip_theory="OCamlMergesort"> + <ip_qualid name="sorted_mem"/> + </pr_pos> + <pr_pos name="sorted_reverse_cons" id="5883" + ip_theory="OCamlMergesort"> + <ip_qualid name="sorted_reverse_cons"/> + </pr_pos> + <pr_pos name="sorted_rev_append" id="5893" + ip_theory="OCamlMergesort"> + <ip_qualid name="sorted_rev_append"/> + </pr_pos> + <meta name="remove_logic"> + <meta_arg_ls id="10"/> + </meta> + <meta name="remove_logic"> + <meta_arg_ls id="342"/> + </meta> + <meta name="remove_logic"> + <meta_arg_ls id="343"/> + </meta> + <meta name="remove_logic"> + <meta_arg_ls id="344"/> + </meta> + <meta name="remove_logic"> + <meta_arg_ls id="347"/> + </meta> + <meta name="remove_logic"> + <meta_arg_ls id="356"/> + </meta> + <meta name="remove_logic"> + <meta_arg_ls id="1513"/> + </meta> + <meta name="remove_logic"> + <meta_arg_ls id="1514"/> + </meta> + <meta name="remove_logic"> + <meta_arg_ls id="1515"/> + </meta> + <meta name="remove_logic"> + <meta_arg_ls id="1563"/> + </meta> + <meta name="remove_logic"> + <meta_arg_ls id="1583"/> + </meta> + <meta name="remove_logic"> + <meta_arg_ls id="2396"/> + </meta> + <meta name="remove_logic"> + <meta_arg_ls id="4044"/> + </meta> + <meta name="remove_logic"> + <meta_arg_ls id="4333"/> + </meta> + <meta name="remove_logic"> + <meta_arg_ls id="4375"/> + </meta> + <meta name="remove_logic"> + <meta_arg_ls id="5828"/> + </meta> + <meta name="remove_prop"> + <meta_arg_pr id="1516"/> + </meta> + <meta name="remove_prop"> + <meta_arg_pr id="1523"/> + </meta> + <meta name="remove_prop"> + <meta_arg_pr id="1526"/> + </meta> + <meta name="remove_prop"> + <meta_arg_pr id="1529"/> + </meta> + <meta name="remove_prop"> + <meta_arg_pr id="1532"/> + </meta> + <meta name="remove_prop"> + <meta_arg_pr id="1535"/> + </meta> + <meta name="remove_prop"> + <meta_arg_pr id="1540"/> + </meta> + <meta name="remove_prop"> + <meta_arg_pr id="1547"/> + </meta> + <meta name="remove_prop"> + <meta_arg_pr id="1554"/> + </meta> + <meta name="remove_prop"> + <meta_arg_pr id="1572"/> + </meta> + <meta name="remove_prop"> + <meta_arg_pr id="1577"/> + </meta> + <meta name="remove_prop"> + <meta_arg_pr id="1580"/> + </meta> + <meta name="remove_prop"> + <meta_arg_pr id="1592"/> + </meta> + <meta name="remove_prop"> + <meta_arg_pr id="1595"/> + </meta> + <meta name="remove_prop"> + <meta_arg_pr id="1602"/> + </meta> + <meta name="remove_prop"> + <meta_arg_pr id="1607"/> + </meta> + <meta name="remove_prop"> + <meta_arg_pr id="1612"/> + </meta> + <meta name="remove_prop"> + <meta_arg_pr id="1613"/> + </meta> + <meta name="remove_prop"> + <meta_arg_pr id="1620"/> + </meta> + <meta name="remove_prop"> + <meta_arg_pr id="2406"/> + </meta> + <meta name="remove_prop"> + <meta_arg_pr id="2409"/> + </meta> + <meta name="remove_prop"> + <meta_arg_pr id="3946"/> + </meta> + <meta name="remove_prop"> + <meta_arg_pr id="3953"/> + </meta> + <meta name="remove_prop"> + <meta_arg_pr id="3956"/> + </meta> + <meta name="remove_prop"> + <meta_arg_pr id="3961"/> + </meta> + <meta name="remove_prop"> + <meta_arg_pr id="3968"/> + </meta> + <meta name="remove_prop"> + <meta_arg_pr id="4010"/> + </meta> + <meta name="remove_prop"> + <meta_arg_pr id="4017"/> + </meta> + <meta name="remove_prop"> + <meta_arg_pr id="4022"/> + </meta> + <meta name="remove_prop"> + <meta_arg_pr id="4027"/> + </meta> + <meta name="remove_prop"> + <meta_arg_pr id="4035"/> + </meta> + <meta name="remove_prop"> + <meta_arg_pr id="4061"/> + </meta> + <meta name="remove_prop"> + <meta_arg_pr id="4068"/> + </meta> + <meta name="remove_prop"> + <meta_arg_pr id="4073"/> + </meta> + <meta name="remove_prop"> + <meta_arg_pr id="4078"/> + </meta> + <meta name="remove_prop"> + <meta_arg_pr id="4352"/> + </meta> + <meta name="remove_prop"> + <meta_arg_pr id="4357"/> + </meta> + <meta name="remove_prop"> + <meta_arg_pr id="4362"/> + </meta> + <meta name="remove_prop"> + <meta_arg_pr id="4369"/> + </meta> + <meta name="remove_prop"> + <meta_arg_pr id="4387"/> + </meta> + <meta name="remove_prop"> + <meta_arg_pr id="4390"/> + </meta> + <meta name="remove_prop"> + <meta_arg_pr id="4395"/> + </meta> + <meta name="remove_prop"> + <meta_arg_pr id="4402"/> + </meta> + <meta name="remove_prop"> + <meta_arg_pr id="4409"/> + </meta> + <meta name="remove_prop"> + <meta_arg_pr id="4416"/> + </meta> + <meta name="remove_prop"> + <meta_arg_pr id="4423"/> + </meta> + <meta name="remove_prop"> + <meta_arg_pr id="4430"/> + </meta> + <meta name="remove_prop"> + <meta_arg_pr id="4439"/> + </meta> + <meta name="remove_prop"> + <meta_arg_pr id="4444"/> + </meta> + <meta name="remove_prop"> + <meta_arg_pr id="4451"/> + </meta> + <meta name="remove_prop"> + <meta_arg_pr id="5829"/> + </meta> + <meta name="remove_prop"> + <meta_arg_pr id="5832"/> + </meta> + <meta name="remove_prop"> + <meta_arg_pr id="5839"/> + </meta> + <meta name="remove_prop"> + <meta_arg_pr id="5867"/> + </meta> + <meta name="remove_prop"> + <meta_arg_pr id="5883"/> + </meta> + <meta name="remove_prop"> + <meta_arg_pr id="5893"/> + </meta> + <meta name="remove_type"> + <meta_arg_ts id="2"/> + </meta> + <meta name="remove_type"> + <meta_arg_ts id="3"/> + </meta> + <meta name="remove_type"> + <meta_arg_ts id="20"/> + </meta> + <meta name="remove_type"> + <meta_arg_ts id="21"/> + </meta> + <meta name="remove_type"> + <meta_arg_ts id="54"/> + </meta> + <meta name="remove_type"> + <meta_arg_ts id="1058"/> + </meta> + <goal name="sorted_reverse_mem" expanded="true"> + <transf name="eliminate_builtin" expanded="true"> + <goal name="sorted_reverse_mem.1" expl="1." expanded="true"> + <proof prover="3" timelimit="5"><result status="valid" time="0.11"/></proof> + </goal> + </transf> + </goal> + </metas> </goal> <goal name="sorted_reverse_cons2"> - <proof prover="1"><result status="valid" time="0.02"/></proof> + <proof prover="0"><result status="valid" time="0.02"/></proof> </goal> <goal name="WP_parameter rev_merge_rev" expl="VC for rev_merge_rev"> <transf name="split_goal_wp"> <goal name="WP_parameter rev_merge_rev.1" expl="1. postcondition"> - <proof prover="8"><result status="valid" time="0.02"/></proof> + <proof prover="3"><result status="valid" time="0.02"/></proof> </goal> <goal name="WP_parameter rev_merge_rev.2" expl="2. postcondition"> <transf name="split_goal_wp"> <goal name="WP_parameter rev_merge_rev.2.1" expl="1. postcondition"> - <proof prover="1" timelimit="5"><result status="valid" time="0.10"/></proof> + <proof prover="0" timelimit="5"><result status="valid" time="0.10"/></proof> </goal> </transf> </goal> <goal name="WP_parameter rev_merge_rev.3" expl="3. postcondition"> - <proof prover="1"><result status="valid" time="0.21"/></proof> - <proof prover="3"><result status="valid" time="0.18"/></proof> + <proof prover="0"><result status="valid" time="0.21"/></proof> + <proof prover="1"><result status="valid" time="0.18"/></proof> </goal> <goal name="WP_parameter rev_merge_rev.4" expl="4. postcondition"> - <proof prover="1" timelimit="5"><result status="valid" time="0.26"/></proof> + <proof prover="0" timelimit="5"><result status="valid" time="0.42"/></proof> </goal> <goal name="WP_parameter rev_merge_rev.5" expl="5. postcondition"> - <proof prover="8"><result status="valid" time="0.16"/></proof> + <proof prover="3"><result status="valid" time="0.16"/></proof> </goal> <goal name="WP_parameter rev_merge_rev.6" expl="6. postcondition"> - <proof prover="8" timelimit="5"><result status="valid" time="0.06"/></proof> + <proof prover="3" timelimit="5"><result status="valid" time="0.06"/></proof> </goal> <goal name="WP_parameter rev_merge_rev.7" expl="7. variant decrease"> - <proof prover="8"><result status="valid" time="0.03"/></proof> + <proof prover="3"><result status="valid" time="0.03"/></proof> </goal> <goal name="WP_parameter rev_merge_rev.8" expl="8. precondition"> - <proof prover="3" timelimit="10"><result status="valid" time="0.05"/></proof> + <proof prover="1" timelimit="10"><result status="valid" time="0.05"/></proof> </goal> <goal name="WP_parameter rev_merge_rev.9" expl="9. precondition"> - <proof prover="3"><result status="valid" time="0.06"/></proof> + <proof prover="1"><result status="valid" time="0.06"/></proof> </goal> <goal name="WP_parameter rev_merge_rev.10" expl="10. precondition"> - <proof prover="3"><result status="valid" time="0.63"/></proof> + <proof prover="1"><result status="valid" time="0.59"/></proof> </goal> <goal name="WP_parameter rev_merge_rev.11" expl="11. postcondition"> - <proof prover="8"><result status="valid" time="0.02"/></proof> + <proof prover="3"><result status="valid" time="0.02"/></proof> </goal> <goal name="WP_parameter rev_merge_rev.12" expl="12. postcondition"> - <proof prover="8" timelimit="5"><result status="valid" time="2.21"/></proof> + <proof prover="3" timelimit="5"><result status="valid" time="1.86"/></proof> </goal> <goal name="WP_parameter rev_merge_rev.13" expl="13. variant decrease"> - <proof prover="8"><result status="valid" time="0.01"/></proof> + <proof prover="3"><result status="valid" time="0.01"/></proof> </goal> <goal name="WP_parameter rev_merge_rev.14" expl="14. precondition"> - <proof prover="3" timelimit="5"><result status="valid" time="0.34"/></proof> + <proof prover="1" timelimit="5"><result status="valid" time="0.34"/></proof> </goal> <goal name="WP_parameter rev_merge_rev.15" expl="15. precondition"> - <proof prover="8"><result status="valid" time="3.59"/></proof> + <proof prover="3"><result status="valid" time="3.59"/></proof> </goal> <goal name="WP_parameter rev_merge_rev.16" expl="16. precondition"> - <proof prover="8"><result status="valid" time="0.04"/></proof> + <proof prover="3"><result status="valid" time="0.04"/></proof> </goal> <goal name="WP_parameter rev_merge_rev.17" expl="17. postcondition"> - <proof prover="8"><result status="valid" time="0.02"/></proof> + <proof prover="3"><result status="valid" time="0.02"/></proof> </goal> <goal name="WP_parameter rev_merge_rev.18" expl="18. postcondition"> - <proof prover="1" timelimit="5"><result status="valid" time="0.52"/></proof> + <proof prover="0" timelimit="5"><result status="valid" time="0.52"/></proof> </goal> </transf> </goal> <goal name="WP_parameter prefix_length" expl="VC for prefix_length"> - <proof prover="8"><result status="valid" time="0.04"/></proof> + <proof prover="3"><result status="valid" time="0.04"/></proof> </goal> <goal name="WP_parameter prefix_append" expl="VC for prefix_append"> - <proof prover="8"><result status="valid" time="1.12"/></proof> + <proof prover="3"><result status="valid" time="1.12"/></proof> </goal> <goal name="WP_parameter chop" expl="VC for chop"> - <proof prover="8"><result status="valid" time="0.05"/></proof> + <proof prover="3"><result status="valid" time="0.05"/></proof> </goal> <goal name="WP_parameter sort" expl="VC for sort"> <transf name="split_goal_wp"> <goal name="WP_parameter sort.1" expl="1. postcondition"> - <proof prover="8"><result status="valid" time="0.05"/></proof> + <proof prover="3"><result status="valid" time="0.05"/></proof> </goal> <goal name="WP_parameter sort.2" expl="2. postcondition"> - <proof prover="8"><result status="valid" time="4.54"/></proof> + <proof prover="3"><result status="valid" time="5.35"/></proof> </goal> <goal name="WP_parameter sort.3" expl="3. unreachable point"> - <proof prover="8"><result status="valid" time="0.02"/></proof> + <proof prover="3"><result status="valid" time="0.02"/></proof> </goal> <goal name="WP_parameter sort.4" expl="4. unreachable point"> - <proof prover="8"><result status="valid" time="0.02"/></proof> + <proof prover="3"><result status="valid" time="0.02"/></proof> </goal> <goal name="WP_parameter sort.5" expl="5. postcondition"> - <proof prover="3"><result status="valid" time="0.03"/></proof> + <proof prover="1"><result status="valid" time="0.03"/></proof> </goal> <goal name="WP_parameter sort.6" expl="6. postcondition"> - <proof prover="3" timelimit="5"><result status="valid" time="2.54"/></proof> + <proof prover="1" timelimit="5"><result status="valid" time="2.77"/></proof> </goal> <goal name="WP_parameter sort.7" expl="7. postcondition"> - <proof prover="3"><result status="valid" time="0.14"/></proof> + <proof prover="1"><result status="valid" time="0.14"/></proof> </goal> <goal name="WP_parameter sort.8" expl="8. postcondition"> - <proof prover="3" timelimit="5"><result status="valid" time="2.95"/></proof> + <proof prover="1" timelimit="5"><result status="valid" time="2.95"/></proof> </goal> <goal name="WP_parameter sort.9" expl="9. postcondition"> - <proof prover="3"><result status="valid" time="0.11"/></proof> + <proof prover="1"><result status="valid" time="0.11"/></proof> </goal> <goal name="WP_parameter sort.10" expl="10. postcondition"> - <proof prover="3"><result status="valid" time="2.29"/></proof> + <proof prover="1"><result status="valid" time="2.29"/></proof> </goal> <goal name="WP_parameter sort.11" expl="11. postcondition"> - <proof prover="3"><result status="valid" time="0.08"/></proof> + <proof prover="1"><result status="valid" time="0.08"/></proof> </goal> <goal name="WP_parameter sort.12" expl="12. postcondition"> - <proof prover="3"><result status="valid" time="2.76"/></proof> + <proof prover="1"><result status="valid" time="3.20"/></proof> </goal> <goal name="WP_parameter sort.13" expl="13. unreachable point"> - <proof prover="8"><result status="valid" time="0.02"/></proof> + <proof prover="3"><result status="valid" time="0.02"/></proof> </goal> <goal name="WP_parameter sort.14" expl="14. unreachable point"> - <proof prover="8"><result status="valid" time="0.05"/></proof> + <proof prover="3"><result status="valid" time="0.05"/></proof> </goal> <goal name="WP_parameter sort.15" expl="15. unreachable point"> - <proof prover="1"><result status="valid" time="0.12"/></proof> - <proof prover="2"><result status="valid" time="0.03"/></proof> - <proof prover="7" timelimit="6"><result status="valid" time="0.02"/></proof> + <proof prover="0"><result status="valid" time="0.12"/></proof> </goal> <goal name="WP_parameter sort.16" expl="16. division by zero"> - <proof prover="8"><result status="valid" time="0.01"/></proof> + <proof prover="3"><result status="valid" time="0.01"/></proof> </goal> <goal name="WP_parameter sort.17" expl="17. precondition"> - <proof prover="8"><result status="valid" time="0.03"/></proof> + <proof prover="3"><result status="valid" time="0.03"/></proof> </goal> <goal name="WP_parameter sort.18" expl="18. assertion"> - <proof prover="1" timelimit="5"><result status="valid" time="0.09"/></proof> - <proof prover="7"><result status="valid" time="0.41"/></proof> + <proof prover="0" timelimit="5"><result status="valid" time="0.09"/></proof> </goal> <goal name="WP_parameter sort.19" expl="19. variant decrease"> - <proof prover="8"><result status="valid" time="0.20"/></proof> + <proof prover="3"><result status="valid" time="0.20"/></proof> </goal> <goal name="WP_parameter sort.20" expl="20. precondition"> - <proof prover="8"><result status="valid" time="0.22"/></proof> + <proof prover="3"><result status="valid" time="0.22"/></proof> </goal> <goal name="WP_parameter sort.21" expl="21. variant decrease"> - <proof prover="8"><result status="valid" time="0.03"/></proof> + <proof prover="3"><result status="valid" time="0.03"/></proof> </goal> <goal name="WP_parameter sort.22" expl="22. precondition"> - <proof prover="8"><result status="valid" time="0.24"/></proof> + <proof prover="3"><result status="valid" time="0.39"/></proof> </goal> <goal name="WP_parameter sort.23" expl="23. precondition"> - <proof prover="8"><result status="valid" time="0.03"/></proof> + <proof prover="3"><result status="valid" time="0.03"/></proof> </goal> <goal name="WP_parameter sort.24" expl="24. precondition"> - <proof prover="8"><result status="valid" time="0.06"/></proof> + <proof prover="3"><result status="valid" time="0.06"/></proof> </goal> <goal name="WP_parameter sort.25" expl="25. precondition"> - <proof prover="8" timelimit="5"><result status="valid" time="0.02"/></proof> + <proof prover="3" timelimit="5"><result status="valid" time="0.02"/></proof> </goal> <goal name="WP_parameter sort.26" expl="26. postcondition"> - <proof prover="8" timelimit="5"><result status="valid" time="0.01"/></proof> + <proof prover="3" timelimit="5"><result status="valid" time="0.01"/></proof> </goal> <goal name="WP_parameter sort.27" expl="27. postcondition"> - <proof prover="8" timelimit="5"><result status="valid" time="0.04"/></proof> + <proof prover="3" timelimit="5"><result status="valid" time="0.04"/></proof> </goal> </transf> </goal> <goal name="WP_parameter rev_sort" expl="VC for rev_sort"> <transf name="split_goal_wp"> <goal name="WP_parameter rev_sort.1" expl="1. postcondition"> - <proof prover="3"><result status="valid" time="0.10"/></proof> + <proof prover="1"><result status="valid" time="0.10"/></proof> </goal> <goal name="WP_parameter rev_sort.2" expl="2. postcondition"> - <proof prover="8"><result status="valid" time="3.09"/></proof> + <proof prover="3"><result status="valid" time="3.77"/></proof> </goal> <goal name="WP_parameter rev_sort.3" expl="3. unreachable point"> - <proof prover="8"><result status="valid" time="0.02"/></proof> + <proof prover="3"><result status="valid" time="0.02"/></proof> </goal> <goal name="WP_parameter rev_sort.4" expl="4. unreachable point"> - <proof prover="3"><result status="valid" time="0.02"/></proof> + <proof prover="1"><result status="valid" time="0.02"/></proof> </goal> <goal name="WP_parameter rev_sort.5" expl="5. postcondition"> - <proof prover="3"><result status="valid" time="0.38"/></proof> + <proof prover="1"><result status="valid" time="2.83"/></proof> </goal> <goal name="WP_parameter rev_sort.6" expl="6. postcondition"> - <proof prover="3" timelimit="5"><result status="valid" time="2.14"/></proof> + <proof prover="1" timelimit="5"><result status="valid" time="2.62"/></proof> </goal> <goal name="WP_parameter rev_sort.7" expl="7. postcondition"> - <proof prover="3"><result status="valid" time="0.49"/></proof> + <proof prover="1"><result status="valid" time="0.49"/></proof> </goal> <goal name="WP_parameter rev_sort.8" expl="8. postcondition"> - <proof prover="3"><result status="valid" time="2.99"/></proof> + <proof prover="1"><result status="valid" time="2.99"/></proof> </goal> <goal name="WP_parameter rev_sort.9" expl="9. postcondition"> - <proof prover="3"><result status="valid" time="0.42"/></proof> + <proof prover="1"><result status="valid" time="2.72"/></proof> </goal> <goal name="WP_parameter rev_sort.10" expl="10. postcondition"> - <proof prover="3" timelimit="5"><result status="valid" time="2.10"/></proof> + <proof prover="1" timelimit="5"><result status="valid" time="2.61"/></proof> </goal> <goal name="WP_parameter rev_sort.11" expl="11. postcondition"> - <proof prover="3"><result status="valid" time="0.48"/></proof> + <proof prover="1"><result status="valid" time="0.64"/></proof> </goal> <goal name="WP_parameter rev_sort.12" expl="12. postcondition"> - <proof prover="3" timelimit="5"><result status="valid" time="2.62"/></proof> + <proof prover="1" timelimit="5"><result status="valid" time="3.04"/></proof> </goal> <goal name="WP_parameter rev_sort.13" expl="13. unreachable point"> - <proof prover="8"><result status="valid" time="0.02"/></proof> + <proof prover="3"><result status="valid" time="0.02"/></proof> </goal> <goal name="WP_parameter rev_sort.14" expl="14. unreachable point"> - <proof prover="8"><result status="valid" time="0.04"/></proof> + <proof prover="3"><result status="valid" time="0.04"/></proof> </goal> <goal name="WP_parameter rev_sort.15" expl="15. unreachable point"> - <proof prover="6"><result status="valid" time="0.08"/></proof> - <proof prover="7" timelimit="6"><result status="valid" time="0.02"/></proof> + <proof prover="2" timelimit="5"><result status="valid" time="0.01"/></proof> </goal> <goal name="WP_parameter rev_sort.16" expl="16. division by zero"> - <proof prover="8"><result status="valid" time="0.01"/></proof> + <proof prover="3"><result status="valid" time="0.01"/></proof> </goal> <goal name="WP_parameter rev_sort.17" expl="17. precondition"> - <proof prover="8"><result status="valid" time="0.03"/></proof> + <proof prover="3"><result status="valid" time="0.03"/></proof> </goal> <goal name="WP_parameter rev_sort.18" expl="18. assertion"> - <proof prover="1" timelimit="5"><result status="valid" time="0.09"/></proof> - <proof prover="7"><result status="valid" time="0.41"/></proof> + <proof prover="0" timelimit="5"><result status="valid" time="0.09"/></proof> </goal> <goal name="WP_parameter rev_sort.19" expl="19. variant decrease"> - <proof prover="8"><result status="valid" time="0.31"/></proof> + <proof prover="3"><result status="valid" time="0.31"/></proof> </goal> <goal name="WP_parameter rev_sort.20" expl="20. precondition"> - <proof prover="8"><result status="valid" time="0.22"/></proof> + <proof prover="3"><result status="valid" time="0.22"/></proof> </goal> <goal name="WP_parameter rev_sort.21" expl="21. variant decrease"> - <proof prover="8"><result status="valid" time="0.02"/></proof> + <proof prover="3"><result status="valid" time="0.02"/></proof> </goal> <goal name="WP_parameter rev_sort.22" expl="22. precondition"> - <proof prover="8"><result status="valid" time="0.24"/></proof> + <proof prover="3"><result status="valid" time="0.37"/></proof> </goal> <goal name="WP_parameter rev_sort.23" expl="23. precondition"> - <proof prover="8"><result status="valid" time="0.02"/></proof> + <proof prover="3"><result status="valid" time="0.02"/></proof> </goal> <goal name="WP_parameter rev_sort.24" expl="24. precondition"> - <proof prover="8"><result status="valid" time="0.06"/></proof> + <proof prover="3"><result status="valid" time="0.06"/></proof> </goal> <goal name="WP_parameter rev_sort.25" expl="25. precondition"> - <proof prover="8" timelimit="5"><result status="valid" time="0.02"/></proof> + <proof prover="3" timelimit="5"><result status="valid" time="0.02"/></proof> </goal> <goal name="WP_parameter rev_sort.26" expl="26. postcondition"> - <proof prover="8" timelimit="5"><result status="valid" time="0.02"/></proof> + <proof prover="3" timelimit="5"><result status="valid" time="0.02"/></proof> </goal> <goal name="WP_parameter rev_sort.27" expl="27. postcondition"> - <proof prover="8" timelimit="5"><result status="valid" time="0.03"/></proof> + <proof prover="3" timelimit="5"><result status="valid" time="0.03"/></proof> </goal> </transf> </goal> <goal name="permut_prefix"> <transf name="induction_ty_lex"> <goal name="permut_prefix.1" expl="1."> - <proof prover="8" timelimit="5"><result status="valid" time="0.06"/></proof> + <proof prover="3" timelimit="5"><result status="valid" time="0.06"/></proof> </goal> </transf> </goal> @@ -583,20 +1216,20 @@ <goal name="WP_parameter mergesort.1.1" expl="1."> <transf name="induction_ty_lex"> <goal name="WP_parameter mergesort.1.1.1" expl="1."> - <proof prover="8" timelimit="5"><result status="valid" time="0.02"/></proof> + <proof prover="3" timelimit="5"><result status="valid" time="0.02"/></proof> </goal> </transf> </goal> <goal name="WP_parameter mergesort.1.2" expl="2."> - <proof prover="8" timelimit="5"><result status="valid" time="0.01"/></proof> + <proof prover="3" timelimit="5"><result status="valid" time="0.01"/></proof> </goal> </transf> </goal> <goal name="WP_parameter mergesort.2" expl="2. precondition"> - <proof prover="8" timelimit="5"><result status="valid" time="0.02"/></proof> + <proof prover="3" timelimit="5"><result status="valid" time="0.02"/></proof> </goal> <goal name="WP_parameter mergesort.3" expl="3. postcondition"> - <proof prover="8"><result status="valid" time="0.04"/></proof> + <proof prover="3"><result status="valid" time="0.04"/></proof> </goal> </transf> </goal> diff --git a/examples/mergesort_list/why3shapes.gz b/examples/mergesort_list/why3shapes.gz index 195f0ec7ae19cf4536a7bb9138d5c8ec34771bdb..ffcdcf718ff746ba65310330494341e420c90c31 100644 GIT binary patch literal 6872 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 X+qfeW`|~63|7YKN>T~|TJq!#0NE>#{ literal 6808 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 IYYzhh0H7i==l}o! diff --git a/examples/mergesort_queue.mlw b/examples/mergesort_queue.mlw index a3fe0b55fc..516f572bac 100644 --- a/examples/mergesort_queue.mlw +++ b/examples/mergesort_queue.mlw @@ -16,7 +16,8 @@ module MergesortQueue type elt predicate le elt elt clone relations.TotalPreOrder with type t = elt, predicate rel = le - clone export list.Sorted with type t = elt, predicate le = le + clone export list.Sorted with type t = elt, predicate le = le, + goal Transitive.Trans let merge (q1: t elt) (q2: t elt) (q: t elt) requires { q.elts = Nil /\ sorted q1.elts /\ sorted q2.elts } diff --git a/examples/mergesort_queue/why3session.xml b/examples/mergesort_queue/why3session.xml index 525bea63e9..62d0c18410 100644 --- a/examples/mergesort_queue/why3session.xml +++ b/examples/mergesort_queue/why3session.xml @@ -3,276 +3,265 @@ "http://why3.lri.fr/why3session.dtd"> <why3session shape_version="4"> <prover id="0" name="Coq" version="8.4pl4" timelimit="10" memlimit="0"/> -<prover id="1" name="CVC4" version="1.2" timelimit="5" memlimit="1000"/> -<prover id="2" name="Z3" version="4.2" timelimit="6" memlimit="1000"/> -<prover id="3" name="Eprover" version="1.6" timelimit="16" memlimit="1000"/> -<prover id="4" name="CVC3" version="2.4.1" timelimit="6" memlimit="1000"/> -<prover id="5" name="Alt-Ergo" version="0.95.1" timelimit="5" memlimit="1000"/> -<prover id="6" name="CVC4" version="1.0" timelimit="6" memlimit="1000"/> -<prover id="7" name="Z3" version="4.3.1" timelimit="6" memlimit="1000"/> -<prover id="8" name="CVC3" version="2.2" timelimit="6" memlimit="1000"/> -<prover id="9" name="Alt-Ergo" version="0.95.2" timelimit="6" memlimit="1000"/> -<prover id="10" name="CVC4" version="1.3" timelimit="6" memlimit="1000"/> +<prover id="1" name="CVC3" version="2.4.1" timelimit="6" memlimit="1000"/> +<prover id="2" name="CVC4" version="1.4" timelimit="5" memlimit="1000"/> +<prover id="3" name="Z3" version="4.3.1" timelimit="6" memlimit="1000"/> +<prover id="4" name="Alt-Ergo" version="0.95.2" timelimit="5" memlimit="1000"/> +<prover id="5" name="CVC4" version="1.3" timelimit="6" memlimit="1000"/> <file name="../mergesort_queue.mlw" expanded="true"> -<theory name="MergesortQueue" sum="8e2735a6f5c2c40b04a184b3e9c92fc5" expanded="true"> - <goal name="WP_parameter merge" expl="VC for merge"> - <transf name="split_goal_wp"> +<theory name="MergesortQueue" sum="8aa10354f7f83f902fb57f5fd2cf5aa4" expanded="true"> + <goal name="Transitive.Trans"> + <proof prover="4"><result status="valid" time="0.02"/></proof> + </goal> + <goal name="WP_parameter merge" expl="VC for merge" expanded="true"> + <transf name="split_goal_wp" expanded="true"> <goal name="WP_parameter merge.1" expl="1. loop invariant init"> - <proof prover="9"><result status="valid" time="0.02"/></proof> + <proof prover="4"><result status="valid" time="0.02"/></proof> </goal> <goal name="WP_parameter merge.2" expl="2. loop invariant init"> - <proof prover="9"><result status="valid" time="0.02"/></proof> + <proof prover="4"><result status="valid" time="0.02"/></proof> </goal> <goal name="WP_parameter merge.3" expl="3. loop invariant init"> - <proof prover="9"><result status="valid" time="0.02"/></proof> + <proof prover="4"><result status="valid" time="0.02"/></proof> </goal> <goal name="WP_parameter merge.4" expl="4. loop invariant init"> - <proof prover="5" timelimit="10" memlimit="0"><result status="valid" time="0.02"/></proof> + <proof prover="4"><result status="valid" time="0.02"/></proof> </goal> <goal name="WP_parameter merge.5" expl="5. precondition"> - <proof prover="5"><result status="valid" time="0.01"/></proof> + <proof prover="4"><result status="valid" time="0.01"/></proof> </goal> <goal name="WP_parameter merge.6" expl="6. loop invariant preservation"> - <proof prover="9"><result status="valid" time="0.01"/></proof> + <proof prover="4"><result status="valid" time="0.01"/></proof> </goal> <goal name="WP_parameter merge.7" expl="7. loop invariant preservation"> - <proof prover="9"><result status="valid" time="0.02"/></proof> + <proof prover="4"><result status="valid" time="0.02"/></proof> </goal> <goal name="WP_parameter merge.8" expl="8. loop invariant preservation"> - <proof prover="9"><result status="valid" time="0.02"/></proof> + <proof prover="4"><result status="valid" time="0.02"/></proof> </goal> <goal name="WP_parameter merge.9" expl="9. loop invariant preservation"> - <proof prover="4" timelimit="10" memlimit="0"><result status="valid" time="0.03"/></proof> + <proof prover="1" timelimit="10" memlimit="0"><result status="valid" time="0.03"/></proof> + <proof prover="4"><result status="valid" time="0.02"/></proof> </goal> <goal name="WP_parameter merge.10" expl="10. loop variant decrease"> - <proof prover="5" timelimit="10" memlimit="0"><result status="valid" time="0.02"/></proof> + <proof prover="4"><result status="valid" time="0.01"/></proof> </goal> <goal name="WP_parameter merge.11" expl="11. precondition"> - <proof prover="5"><result status="valid" time="0.02"/></proof> + <proof prover="4"><result status="valid" time="0.02"/></proof> </goal> <goal name="WP_parameter merge.12" expl="12. loop invariant preservation"> - <proof prover="10"><result status="valid" time="0.37"/></proof> + <proof prover="5"><result status="valid" time="0.58"/></proof> </goal> <goal name="WP_parameter merge.13" expl="13. loop invariant preservation"> - <proof prover="10"><result status="valid" time="0.53"/></proof> + <proof prover="5"><result status="valid" time="0.08"/></proof> </goal> <goal name="WP_parameter merge.14" expl="14. loop invariant preservation"> - <proof prover="9"><result status="valid" time="0.12"/></proof> + <proof prover="4"><result status="valid" time="0.12"/></proof> </goal> <goal name="WP_parameter merge.15" expl="15. loop invariant preservation"> - <proof prover="1"><result status="valid" time="0.10"/></proof> - <proof prover="4" timelimit="5"><result status="valid" time="0.09"/></proof> + <proof prover="1" timelimit="5"><result status="valid" time="0.09"/></proof> </goal> <goal name="WP_parameter merge.16" expl="16. loop variant decrease"> - <proof prover="5" timelimit="10" memlimit="0"><result status="valid" time="0.01"/></proof> + <proof prover="4"><result status="valid" time="0.01"/></proof> </goal> <goal name="WP_parameter merge.17" expl="17. precondition"> - <proof prover="5"><result status="valid" time="0.02"/></proof> + <proof prover="4"><result status="valid" time="0.02"/></proof> </goal> <goal name="WP_parameter merge.18" expl="18. precondition"> - <proof prover="5"><result status="valid" time="0.02"/></proof> + <proof prover="4"><result status="valid" time="0.02"/></proof> </goal> <goal name="WP_parameter merge.19" expl="19. precondition"> - <proof prover="5"><result status="valid" time="0.02"/></proof> + <proof prover="4"><result status="valid" time="0.02"/></proof> </goal> <goal name="WP_parameter merge.20" expl="20. loop invariant preservation"> - <proof prover="10"><result status="valid" time="0.39"/></proof> + <proof prover="5"><result status="valid" time="0.39"/></proof> </goal> <goal name="WP_parameter merge.21" expl="21. loop invariant preservation"> - <proof prover="10"><result status="valid" time="0.53"/></proof> + <proof prover="5"><result status="valid" time="0.08"/></proof> </goal> <goal name="WP_parameter merge.22" expl="22. loop invariant preservation"> - <proof prover="4"><result status="valid" time="2.48"/></proof> + <proof prover="1"><result status="valid" time="2.99"/></proof> </goal> <goal name="WP_parameter merge.23" expl="23. loop invariant preservation"> - <proof prover="1"><result status="valid" time="0.12"/></proof> - <proof prover="4" timelimit="5"><result status="valid" time="0.29"/></proof> + <proof prover="1" timelimit="5"><result status="valid" time="0.29"/></proof> </goal> <goal name="WP_parameter merge.24" expl="24. loop variant decrease"> - <proof prover="5" timelimit="10" memlimit="0"><result status="valid" time="0.02"/></proof> + <proof prover="4"><result status="valid" time="0.03"/></proof> </goal> <goal name="WP_parameter merge.25" expl="25. precondition"> - <proof prover="5"><result status="valid" time="0.02"/></proof> + <proof prover="4"><result status="valid" time="0.02"/></proof> </goal> <goal name="WP_parameter merge.26" expl="26. loop invariant preservation"> - <proof prover="10"><result status="valid" time="0.40"/></proof> + <proof prover="5"><result status="valid" time="0.40"/></proof> </goal> <goal name="WP_parameter merge.27" expl="27. loop invariant preservation"> - <proof prover="4"><result status="valid" time="2.59"/></proof> + <proof prover="1"><result status="valid" time="3.15"/></proof> </goal> <goal name="WP_parameter merge.28" expl="28. loop invariant preservation"> - <proof prover="10"><result status="valid" time="0.58"/></proof> + <proof prover="5"><result status="valid" time="0.09"/></proof> </goal> <goal name="WP_parameter merge.29" expl="29. loop invariant preservation"> - <proof prover="0" edited="mergesort_queue_MergesortQueue_WP_parameter_merge_3.v"><result status="valid" time="1.02"/></proof> + <proof prover="0" edited="mergesort_queue_MergesortQueue_WP_parameter_merge_3.v" obsolete="true"><result status="valid" time="1.02"/></proof> </goal> <goal name="WP_parameter merge.30" expl="30. loop variant decrease"> - <proof prover="5" timelimit="10" memlimit="0"><result status="valid" time="0.02"/></proof> + <proof prover="4"><result status="valid" time="0.03"/></proof> </goal> <goal name="WP_parameter merge.31" expl="31. precondition"> - <proof prover="5"><result status="valid" time="0.02"/></proof> + <proof prover="4"><result status="valid" time="0.02"/></proof> </goal> <goal name="WP_parameter merge.32" expl="32. loop invariant preservation"> - <proof prover="10"><result status="valid" time="0.54"/></proof> + <proof prover="5"><result status="valid" time="0.54"/></proof> </goal> <goal name="WP_parameter merge.33" expl="33. loop invariant preservation"> - <proof prover="9"><result status="valid" time="0.14"/></proof> + <proof prover="4"><result status="valid" time="0.14"/></proof> </goal> <goal name="WP_parameter merge.34" expl="34. loop invariant preservation"> - <proof prover="10"><result status="valid" time="0.55"/></proof> + <proof prover="5"><result status="valid" time="0.07"/></proof> </goal> <goal name="WP_parameter merge.35" expl="35. loop invariant preservation"> - <proof prover="1"><result status="valid" time="0.11"/></proof> - <proof prover="4" timelimit="5"><result status="valid" time="1.07"/></proof> + <proof prover="1" timelimit="5"><result status="valid" time="1.30"/></proof> </goal> <goal name="WP_parameter merge.36" expl="36. loop variant decrease"> - <proof prover="5" timelimit="10" memlimit="0"><result status="valid" time="0.02"/></proof> + <proof prover="4"><result status="valid" time="0.02"/></proof> </goal> <goal name="WP_parameter merge.37" expl="37. precondition"> - <proof prover="5"><result status="valid" time="0.01"/></proof> + <proof prover="4"><result status="valid" time="0.02"/></proof> </goal> <goal name="WP_parameter merge.38" expl="38. loop invariant preservation"> - <proof prover="9"><result status="valid" time="0.02"/></proof> + <proof prover="4"><result status="valid" time="0.02"/></proof> </goal> <goal name="WP_parameter merge.39" expl="39. loop invariant preservation"> - <proof prover="9"><result status="valid" time="0.02"/></proof> + <proof prover="4"><result status="valid" time="0.02"/></proof> </goal> <goal name="WP_parameter merge.40" expl="40. loop invariant preservation"> - <proof prover="9"><result status="valid" time="0.02"/></proof> - <proof prover="10"><result status="valid" time="0.02"/></proof> + <proof prover="4"><result status="valid" time="0.02"/></proof> + <proof prover="5"><result status="valid" time="0.02"/></proof> </goal> <goal name="WP_parameter merge.41" expl="41. loop invariant preservation"> - <proof prover="4" timelimit="10" memlimit="0"><result status="valid" time="0.06"/></proof> + <proof prover="1" timelimit="10" memlimit="0"><result status="valid" time="0.06"/></proof> + <proof prover="4"><result status="valid" time="0.02"/></proof> </goal> <goal name="WP_parameter merge.42" expl="42. loop variant decrease"> - <proof prover="5" timelimit="10" memlimit="0"><result status="valid" time="0.02"/></proof> + <proof prover="4"><result status="valid" time="0.02"/></proof> </goal> <goal name="WP_parameter merge.43" expl="43. precondition"> - <proof prover="5"><result status="valid" time="0.02"/></proof> + <proof prover="4"><result status="valid" time="0.02"/></proof> </goal> <goal name="WP_parameter merge.44" expl="44. precondition"> - <proof prover="5"><result status="valid" time="0.02"/></proof> + <proof prover="4"><result status="valid" time="0.01"/></proof> </goal> <goal name="WP_parameter merge.45" expl="45. precondition"> - <proof prover="5"><result status="valid" time="0.01"/></proof> + <proof prover="4"><result status="valid" time="0.01"/></proof> </goal> <goal name="WP_parameter merge.46" expl="46. loop invariant preservation"> - <proof prover="9"><result status="valid" time="0.02"/></proof> + <proof prover="4"><result status="valid" time="0.02"/></proof> </goal> <goal name="WP_parameter merge.47" expl="47. loop invariant preservation"> - <proof prover="9"><result status="valid" time="0.03"/></proof> - <proof prover="10"><result status="valid" time="0.04"/></proof> + <proof prover="4"><result status="valid" time="0.03"/></proof> + <proof prover="5"><result status="valid" time="0.04"/></proof> </goal> <goal name="WP_parameter merge.48" expl="48. loop invariant preservation"> - <proof prover="9"><result status="valid" time="0.04"/></proof> - <proof prover="10"><result status="valid" time="0.04"/></proof> + <proof prover="4"><result status="valid" time="0.04"/></proof> + <proof prover="5"><result status="valid" time="0.04"/></proof> </goal> <goal name="WP_parameter merge.49" expl="49. loop invariant preservation"> - <proof prover="4" timelimit="10" memlimit="0"><result status="valid" time="0.06"/></proof> + <proof prover="1" timelimit="10" memlimit="0"><result status="valid" time="0.06"/></proof> + <proof prover="4"><result status="valid" time="0.06"/></proof> </goal> <goal name="WP_parameter merge.50" expl="50. loop variant decrease"> - <proof prover="5" timelimit="10" memlimit="0"><result status="valid" time="0.04"/></proof> + <proof prover="4"><result status="valid" time="0.02"/></proof> </goal> <goal name="WP_parameter merge.51" expl="51. precondition"> - <proof prover="5"><result status="valid" time="0.02"/></proof> + <proof prover="4"><result status="valid" time="0.01"/></proof> </goal> <goal name="WP_parameter merge.52" expl="52. loop invariant preservation"> - <proof prover="9"><result status="valid" time="0.02"/></proof> + <proof prover="4"><result status="valid" time="0.02"/></proof> </goal> <goal name="WP_parameter merge.53" expl="53. loop invariant preservation"> - <proof prover="9"><result status="valid" time="0.03"/></proof> - <proof prover="10"><result status="valid" time="0.04"/></proof> + <proof prover="4"><result status="valid" time="0.03"/></proof> + <proof prover="5"><result status="valid" time="0.04"/></proof> </goal> <goal name="WP_parameter merge.54" expl="54. loop invariant preservation"> - <proof prover="9"><result status="valid" time="0.03"/></proof> - <proof prover="10"><result status="valid" time="0.04"/></proof> + <proof prover="4"><result status="valid" time="0.03"/></proof> + <proof prover="5"><result status="valid" time="0.04"/></proof> </goal> <goal name="WP_parameter merge.55" expl="55. loop invariant preservation"> - <proof prover="5"><result status="valid" time="0.09"/></proof> - <proof prover="9"><result status="valid" time="0.10"/></proof> + <proof prover="4"><result status="valid" time="0.10"/></proof> </goal> <goal name="WP_parameter merge.56" expl="56. loop variant decrease"> - <proof prover="5" timelimit="10" memlimit="0"><result status="valid" time="0.04"/></proof> - <proof prover="9"><result status="valid" time="0.02"/></proof> + <proof prover="4"><result status="valid" time="0.02"/></proof> </goal> <goal name="WP_parameter merge.57" expl="57. postcondition"> - <proof prover="9"><result status="valid" time="0.02"/></proof> + <proof prover="4"><result status="valid" time="0.02"/></proof> </goal> <goal name="WP_parameter merge.58" expl="58. postcondition"> - <proof prover="5" timelimit="10" memlimit="0"><result status="valid" time="2.41"/></proof> - <proof prover="9"><result status="valid" time="1.50"/></proof> + <proof prover="1" timelimit="5"><result status="valid" time="0.07"/></proof> </goal> </transf> </goal> - <goal name="WP_parameter mergesort" expl="VC for mergesort" expanded="true"> - <transf name="split_goal_wp" expanded="true"> + <goal name="WP_parameter mergesort" expl="VC for mergesort"> + <transf name="split_goal_wp"> <goal name="WP_parameter mergesort.1" expl="1. loop invariant init"> - <proof prover="9"><result status="valid" time="0.07"/></proof> + <proof prover="4" timelimit="6"><result status="valid" time="0.07"/></proof> </goal> <goal name="WP_parameter mergesort.2" expl="2. loop invariant init"> - <proof prover="9"><result status="valid" time="0.02"/></proof> + <proof prover="4" timelimit="6"><result status="valid" time="0.02"/></proof> </goal> <goal name="WP_parameter mergesort.3" expl="3. precondition"> - <proof prover="9"><result status="valid" time="0.02"/></proof> + <proof prover="4" timelimit="6"><result status="valid" time="0.02"/></proof> </goal> <goal name="WP_parameter mergesort.4" expl="4. precondition"> - <proof prover="9"><result status="valid" time="0.02"/></proof> + <proof prover="4" timelimit="6"><result status="valid" time="0.02"/></proof> </goal> <goal name="WP_parameter mergesort.5" expl="5. loop invariant preservation"> - <proof prover="1" timelimit="16"><result status="valid" time="4.68"/></proof> - <proof prover="3"><result status="valid" time="0.84"/></proof> + <proof prover="2"><result status="valid" time="3.81"/></proof> </goal> <goal name="WP_parameter mergesort.6" expl="6. loop invariant preservation"> - <proof prover="9"><result status="valid" time="0.06"/></proof> + <proof prover="4" timelimit="6"><result status="valid" time="0.06"/></proof> </goal> <goal name="WP_parameter mergesort.7" expl="7. loop variant decrease"> - <proof prover="9"><result status="valid" time="0.02"/></proof> + <proof prover="4" timelimit="6"><result status="valid" time="0.02"/></proof> </goal> <goal name="WP_parameter mergesort.8" expl="8. loop invariant preservation"> - <proof prover="1" timelimit="6"><result status="valid" time="0.50"/></proof> - <proof prover="2"><result status="valid" time="0.89"/></proof> - <proof prover="4"><result status="valid" time="0.13"/></proof> - <proof prover="6"><result status="valid" time="0.36"/></proof> - <proof prover="7"><result status="valid" time="0.85"/></proof> - <proof prover="8"><result status="valid" time="0.12"/></proof> + <proof prover="1"><result status="valid" time="0.13"/></proof> + <proof prover="3"><result status="valid" time="2.37"/></proof> </goal> <goal name="WP_parameter mergesort.9" expl="9. loop invariant preservation"> - <proof prover="9"><result status="valid" time="0.06"/></proof> + <proof prover="4" timelimit="6"><result status="valid" time="0.06"/></proof> </goal> <goal name="WP_parameter mergesort.10" expl="10. loop variant decrease"> - <proof prover="9"><result status="valid" time="0.02"/></proof> + <proof prover="4" timelimit="6"><result status="valid" time="0.02"/></proof> </goal> <goal name="WP_parameter mergesort.11" expl="11. assertion"> - <proof prover="9"><result status="valid" time="0.02"/></proof> + <proof prover="4" timelimit="6"><result status="valid" time="0.02"/></proof> </goal> <goal name="WP_parameter mergesort.12" expl="12. assertion"> - <proof prover="9"><result status="valid" time="0.03"/></proof> + <proof prover="4" timelimit="6"><result status="valid" time="0.03"/></proof> </goal> <goal name="WP_parameter mergesort.13" expl="13. variant decrease"> - <proof prover="9"><result status="valid" time="0.03"/></proof> - <proof prover="10"><result status="valid" time="0.02"/></proof> + <proof prover="4" timelimit="6"><result status="valid" time="0.03"/></proof> + <proof prover="5"><result status="valid" time="0.02"/></proof> </goal> <goal name="WP_parameter mergesort.14" expl="14. variant decrease"> - <proof prover="9"><result status="valid" time="0.04"/></proof> - <proof prover="10"><result status="valid" time="0.03"/></proof> + <proof prover="4" timelimit="6"><result status="valid" time="0.04"/></proof> + <proof prover="5"><result status="valid" time="0.03"/></proof> </goal> <goal name="WP_parameter mergesort.15" expl="15. precondition"> - <proof prover="9"><result status="valid" time="0.02"/></proof> + <proof prover="4" timelimit="6"><result status="valid" time="0.02"/></proof> </goal> <goal name="WP_parameter mergesort.16" expl="16. postcondition"> - <proof prover="9"><result status="valid" time="0.42"/></proof> + <proof prover="4" timelimit="6"><result status="valid" time="0.98"/></proof> </goal> <goal name="WP_parameter mergesort.17" expl="17. assertion"> - <proof prover="4"><result status="valid" time="0.08"/></proof> - <proof prover="9"><result status="unknown" time="0.02"/></proof> + <proof prover="1"><result status="valid" time="0.08"/></proof> </goal> <goal name="WP_parameter mergesort.18" expl="18. postcondition"> <transf name="split_goal_wp"> <goal name="WP_parameter mergesort.18.1" expl="1."> - <proof prover="9"><result status="valid" time="0.02"/></proof> + <proof prover="4" timelimit="6"><result status="valid" time="0.02"/></proof> </goal> <goal name="WP_parameter mergesort.18.2" expl="2."> - <proof prover="9"><result status="valid" time="0.02"/></proof> + <proof prover="4" timelimit="6"><result status="valid" time="0.02"/></proof> </goal> </transf> </goal> diff --git a/examples/mergesort_queue/why3shapes.gz b/examples/mergesort_queue/why3shapes.gz index 804f1a77495e27b57bebb3e38e087fb615caa15e..3efa5932ea2f57ff1967e2f9e33dfe6dbf4ea062 100644 GIT binary patch literal 3833 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 literal 3833 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 diff --git a/examples/sorted_list/why3session.xml b/examples/sorted_list/why3session.xml index e775e8cbdf..1953e05df5 100644 --- a/examples/sorted_list/why3session.xml +++ b/examples/sorted_list/why3session.xml @@ -2,11 +2,11 @@ <!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.95.1" timelimit="20" memlimit="0"/> +<prover id="0" name="Alt-Ergo" version="0.95.2" timelimit="5" memlimit="1000"/> <file name="../sorted_list.mlw" expanded="true"> -<theory name="FindInSortedList" sum="9315da3cc3b88fe0c4ad3f06aad610f4" expanded="true"> +<theory name="FindInSortedList" sum="a6b267074f636ad1d1f4475349be62a0" expanded="true"> <goal name="Sorted_not_mem" expanded="true"> - <proof prover="0"><result status="valid" time="0.01"/></proof> + <proof prover="0"><result status="valid" time="0.03"/></proof> </goal> <goal name="WP_parameter find" expl="VC for find" expanded="true"> <proof prover="0"><result status="valid" time="0.02"/></proof> diff --git a/examples/sorted_list/why3shapes.gz b/examples/sorted_list/why3shapes.gz index 55833d86b6f7b41d200ffd805c2d6a8e4065db34..d5ac3ba725ac3301519c7a2d3df3245c656272fb 100644 GIT binary patch literal 186 zcmb2|=3oGW|FQiCxta|GT;BiXvR9Pu?Yto7BCw}ItNQ*6Hm1;(+qTS)-+FP{ylHb~ z@165-3^JW#s-t@(Eh0^yatEn*t0RzBuq6?L{(T(BlX>X`L*`=<AE>s{SNIG!qA zT$B4Oim@wtrAfwWk<=?Q&ddlY2w_oTy87?c-*Vp1Vh!p(FO2MVaJB#VAMi|(`&i{e qv0Hfo66+b~TNK+rs&qT?_j+2)maQjq?yS-^y(bj+L|B56fdK$sb5Sq= literal 187 zcmb2|=3oGW|FQjNxta|GTHe=k$t%vb7tY{T;)t`Ey7%}WhXq<!r+xdl+U(Y)%bPYI z-fqmqb9LL(xGcTQ4N@)7yxR6`bt__uOt!kOX!!JkKZi%QG4JEMyX6(XDel{(EY$MK z!BO)1B(oJU5zlP`L!SCH1<A-fRMHj}JZSP!>T$X6=V=Y<Po5ds)y(C4^FKgTlY7%5 r9`0Ooj+E>J>gVqCSIiSE`M*_CJU7=!dV7|4ulbfo`&LLWGB5xD9STq> diff --git a/examples/stdlib/list/list_Permut_Permut_length_1.v b/examples/stdlib/list/list_Permut_Permut_length_1.v new file mode 100644 index 0000000000..2e2efda0cd --- /dev/null +++ b/examples/stdlib/list/list_Permut_Permut_length_1.v @@ -0,0 +1,156 @@ +(* This file is generated by Why3's Coq driver *) +(* Beware! Only edit allowed sections below *) +Require Import BuiltIn. +Require BuiltIn. +Require int.Int. + +(* Why3 assumption *) +Inductive list (a:Type) := + | Nil : list a + | Cons : a -> (list a) -> list a. +Axiom list_WhyType : forall (a:Type) {a_WT:WhyType a}, WhyType (list a). +Existing Instance list_WhyType. +Implicit Arguments Nil [[a]]. +Implicit Arguments Cons [[a]]. + +Parameter num_occ: forall {a:Type} {a_WT:WhyType a}, a -> (list a) -> Z. + +Axiom num_occ_def : forall {a:Type} {a_WT:WhyType a}, forall (x:a) (l:(list + a)), + match l with + | Nil => ((num_occ x l) = 0%Z) + | (Cons y r) => ((x = y) -> ((num_occ x l) = (1%Z + (num_occ x r))%Z)) /\ + ((~ (x = y)) -> ((num_occ x l) = (0%Z + (num_occ x r))%Z)) + end. + +(* Why3 assumption *) +Fixpoint mem {a:Type} {a_WT:WhyType a} (x:a) (l:(list a)) {struct l}: Prop := + match l with + | Nil => False + | (Cons y r) => (x = y) \/ (mem x r) + end. + +Axiom Mem_Num_Occ : forall {a:Type} {a_WT:WhyType a}, forall (x:a) (l:(list + a)), (mem x l) <-> (0%Z < (num_occ x l))%Z. + +(* Why3 assumption *) +Fixpoint infix_plpl {a:Type} {a_WT:WhyType a} (l1:(list a)) (l2:(list + a)) {struct l1}: (list a) := + match l1 with + | Nil => l2 + | (Cons x1 r1) => (Cons x1 (infix_plpl r1 l2)) + end. + +Axiom Append_assoc : forall {a:Type} {a_WT:WhyType a}, forall (l1:(list a)) + (l2:(list a)) (l3:(list a)), ((infix_plpl l1 (infix_plpl l2 + l3)) = (infix_plpl (infix_plpl l1 l2) l3)). + +Axiom Append_l_nil : forall {a:Type} {a_WT:WhyType a}, forall (l:(list a)), + ((infix_plpl l (Nil : (list a))) = l). + +(* Why3 assumption *) +Fixpoint length {a:Type} {a_WT:WhyType a} (l:(list a)) {struct l}: Z := + match l with + | Nil => 0%Z + | (Cons _ r) => (1%Z + (length r))%Z + end. + +Axiom Length_nonnegative : forall {a:Type} {a_WT:WhyType a}, forall (l:(list + a)), (0%Z <= (length l))%Z. + +Axiom Length_nil : forall {a:Type} {a_WT:WhyType a}, forall (l:(list a)), + ((length l) = 0%Z) <-> (l = (Nil : (list a))). + +Axiom Append_length : forall {a:Type} {a_WT:WhyType a}, forall (l1:(list a)) + (l2:(list a)), ((length (infix_plpl l1 + l2)) = ((length l1) + (length l2))%Z). + +Axiom mem_append : forall {a:Type} {a_WT:WhyType a}, forall (x:a) (l1:(list + a)) (l2:(list a)), (mem x (infix_plpl l1 l2)) <-> ((mem x l1) \/ (mem x + l2)). + +Axiom mem_decomp : forall {a:Type} {a_WT:WhyType a}, forall (x:a) (l:(list + a)), (mem x l) -> exists l1:(list a), exists l2:(list a), + (l = (infix_plpl l1 (Cons x l2))). + +Axiom Append_Num_Occ : forall {a:Type} {a_WT:WhyType a}, forall (x:a) + (l1:(list a)) (l2:(list a)), ((num_occ x (infix_plpl l1 l2)) = ((num_occ x + l1) + (num_occ x l2))%Z). + +(* Why3 assumption *) +Fixpoint reverse {a:Type} {a_WT:WhyType a} (l:(list a)) {struct l}: (list + a) := + match l with + | Nil => (Nil : (list a)) + | (Cons x r) => (infix_plpl (reverse r) (Cons x (Nil : (list a)))) + end. + +Axiom reverse_append : forall {a:Type} {a_WT:WhyType a}, forall (l1:(list a)) + (l2:(list a)) (x:a), ((infix_plpl (reverse (Cons x l1)) + l2) = (infix_plpl (reverse l1) (Cons x l2))). + +Axiom reverse_cons : forall {a:Type} {a_WT:WhyType a}, forall (l:(list a)) + (x:a), ((reverse (Cons x l)) = (infix_plpl (reverse l) (Cons x (Nil : (list + a))))). + +Axiom cons_reverse : forall {a:Type} {a_WT:WhyType a}, forall (l:(list a)) + (x:a), ((Cons x (reverse l)) = (reverse (infix_plpl l (Cons x (Nil : (list + a)))))). + +Axiom reverse_reverse : forall {a:Type} {a_WT:WhyType a}, forall (l:(list + a)), ((reverse (reverse l)) = l). + +Axiom reverse_mem : forall {a:Type} {a_WT:WhyType a}, forall (l:(list a)) + (x:a), (mem x l) <-> (mem x (reverse l)). + +Axiom Reverse_length : forall {a:Type} {a_WT:WhyType a}, forall (l:(list a)), + ((length (reverse l)) = (length l)). + +Axiom reverse_num_occ : forall {a:Type} {a_WT:WhyType a}, forall (x:a) + (l:(list a)), ((num_occ x l) = (num_occ x (reverse l))). + +(* Why3 assumption *) +Definition permut {a:Type} {a_WT:WhyType a} (l1:(list a)) (l2:(list + a)): Prop := forall (x:a), ((num_occ x l1) = (num_occ x l2)). + +Axiom Permut_refl : forall {a:Type} {a_WT:WhyType a}, forall (l:(list a)), + (permut l l). + +Axiom Permut_sym : forall {a:Type} {a_WT:WhyType a}, forall (l1:(list a)) + (l2:(list a)), (permut l1 l2) -> (permut l2 l1). + +Axiom Permut_trans : forall {a:Type} {a_WT:WhyType a}, forall (l1:(list a)) + (l2:(list a)) (l3:(list a)), (permut l1 l2) -> ((permut l2 l3) -> (permut + l1 l3)). + +Axiom Permut_cons : forall {a:Type} {a_WT:WhyType a}, forall (x:a) (l1:(list + a)) (l2:(list a)), (permut l1 l2) -> (permut (Cons x l1) (Cons x l2)). + +Axiom Permut_swap : forall {a:Type} {a_WT:WhyType a}, forall (x:a) (y:a) + (l:(list a)), (permut (Cons x (Cons y l)) (Cons y (Cons x l))). + +Axiom Permut_cons_append : forall {a:Type} {a_WT:WhyType a}, forall (x:a) + (l1:(list a)) (l2:(list a)), (permut (infix_plpl (Cons x l1) l2) + (infix_plpl l1 (Cons x l2))). + +Axiom Permut_assoc : forall {a:Type} {a_WT:WhyType a}, forall (l1:(list a)) + (l2:(list a)) (l3:(list a)), (permut (infix_plpl (infix_plpl l1 l2) l3) + (infix_plpl l1 (infix_plpl l2 l3))). + +Axiom Permut_append : forall {a:Type} {a_WT:WhyType a}, forall (l1:(list a)) + (l2:(list a)) (k1:(list a)) (k2:(list a)), (permut l1 k1) -> ((permut l2 + k2) -> (permut (infix_plpl l1 l2) (infix_plpl k1 k2))). + +Axiom Permut_append_swap : forall {a:Type} {a_WT:WhyType a}, forall (l1:(list + a)) (l2:(list a)), (permut (infix_plpl l1 l2) (infix_plpl l2 l1)). + +Axiom Permut_mem : forall {a:Type} {a_WT:WhyType a}, forall (x:a) (l1:(list + a)) (l2:(list a)), (permut l1 l2) -> ((mem x l1) -> (mem x l2)). + +(* Why3 goal *) +Theorem Permut_length : forall {a:Type} {a_WT:WhyType a}, forall (l1:(list + a)) (l2:(list a)), (permut l1 l2) -> ((length l1) = (length l2)). +intros a a_WT l1 l2 h1. + +Qed. + diff --git a/examples/stdlib/list/list_Permut_Permut_length_2.v b/examples/stdlib/list/list_Permut_Permut_length_2.v new file mode 100644 index 0000000000..f599e911df --- /dev/null +++ b/examples/stdlib/list/list_Permut_Permut_length_2.v @@ -0,0 +1,175 @@ +(* This file is generated by Why3's Coq driver *) +(* Beware! Only edit allowed sections below *) +Require Import BuiltIn. +Require BuiltIn. +Require int.Int. + +(* Why3 assumption *) +Inductive list (a:Type) := + | Nil : list a + | Cons : a -> (list a) -> list a. +Axiom list_WhyType : forall (a:Type) {a_WT:WhyType a}, WhyType (list a). +Existing Instance list_WhyType. +Implicit Arguments Nil [[a]]. +Implicit Arguments Cons [[a]]. + +Parameter num_occ: forall {a:Type} {a_WT:WhyType a}, a -> (list a) -> Z. + +Axiom num_occ_def : forall {a:Type} {a_WT:WhyType a}, forall (x:a) (l:(list + a)), + match l with + | Nil => ((num_occ x l) = 0%Z) + | (Cons y r) => ((x = y) -> ((num_occ x l) = (1%Z + (num_occ x r))%Z)) /\ + ((~ (x = y)) -> ((num_occ x l) = (0%Z + (num_occ x r))%Z)) + end. + +Axiom Num_Occ_Positive : forall {a:Type} {a_WT:WhyType a}, forall (x:a) + (l:(list a)), (0%Z <= (num_occ x l))%Z. + +(* Why3 assumption *) +Fixpoint mem {a:Type} {a_WT:WhyType a} (x:a) (l:(list a)) {struct l}: Prop := + match l with + | Nil => False + | (Cons y r) => (x = y) \/ (mem x r) + end. + +Axiom Mem_Num_Occ : forall {a:Type} {a_WT:WhyType a}, forall (x:a) (l:(list + a)), (mem x l) <-> (0%Z < (num_occ x l))%Z. + +(* Why3 assumption *) +Fixpoint infix_plpl {a:Type} {a_WT:WhyType a} (l1:(list a)) (l2:(list + a)) {struct l1}: (list a) := + match l1 with + | Nil => l2 + | (Cons x1 r1) => (Cons x1 (infix_plpl r1 l2)) + end. + +Axiom Append_assoc : forall {a:Type} {a_WT:WhyType a}, forall (l1:(list a)) + (l2:(list a)) (l3:(list a)), ((infix_plpl l1 (infix_plpl l2 + l3)) = (infix_plpl (infix_plpl l1 l2) l3)). + +Axiom Append_l_nil : forall {a:Type} {a_WT:WhyType a}, forall (l:(list a)), + ((infix_plpl l (Nil : (list a))) = l). + +(* Why3 assumption *) +Fixpoint length {a:Type} {a_WT:WhyType a} (l:(list a)) {struct l}: Z := + match l with + | Nil => 0%Z + | (Cons _ r) => (1%Z + (length r))%Z + end. + +Axiom Length_nonnegative : forall {a:Type} {a_WT:WhyType a}, forall (l:(list + a)), (0%Z <= (length l))%Z. + +Axiom Length_nil : forall {a:Type} {a_WT:WhyType a}, forall (l:(list a)), + ((length l) = 0%Z) <-> (l = (Nil : (list a))). + +Axiom Append_length : forall {a:Type} {a_WT:WhyType a}, forall (l1:(list a)) + (l2:(list a)), ((length (infix_plpl l1 + l2)) = ((length l1) + (length l2))%Z). + +Axiom mem_append : forall {a:Type} {a_WT:WhyType a}, forall (x:a) (l1:(list + a)) (l2:(list a)), (mem x (infix_plpl l1 l2)) <-> ((mem x l1) \/ (mem x + l2)). + +Axiom mem_decomp : forall {a:Type} {a_WT:WhyType a}, forall (x:a) (l:(list + a)), (mem x l) -> exists l1:(list a), exists l2:(list a), + (l = (infix_plpl l1 (Cons x l2))). + +Axiom Append_Num_Occ : forall {a:Type} {a_WT:WhyType a}, forall (x:a) + (l1:(list a)) (l2:(list a)), ((num_occ x (infix_plpl l1 l2)) = ((num_occ x + l1) + (num_occ x l2))%Z). + +(* Why3 assumption *) +Fixpoint reverse {a:Type} {a_WT:WhyType a} (l:(list a)) {struct l}: (list + a) := + match l with + | Nil => (Nil : (list a)) + | (Cons x r) => (infix_plpl (reverse r) (Cons x (Nil : (list a)))) + end. + +Axiom reverse_append : forall {a:Type} {a_WT:WhyType a}, forall (l1:(list a)) + (l2:(list a)) (x:a), ((infix_plpl (reverse (Cons x l1)) + l2) = (infix_plpl (reverse l1) (Cons x l2))). + +Axiom reverse_cons : forall {a:Type} {a_WT:WhyType a}, forall (l:(list a)) + (x:a), ((reverse (Cons x l)) = (infix_plpl (reverse l) (Cons x (Nil : (list + a))))). + +Axiom cons_reverse : forall {a:Type} {a_WT:WhyType a}, forall (l:(list a)) + (x:a), ((Cons x (reverse l)) = (reverse (infix_plpl l (Cons x (Nil : (list + a)))))). + +Axiom reverse_reverse : forall {a:Type} {a_WT:WhyType a}, forall (l:(list + a)), ((reverse (reverse l)) = l). + +Axiom reverse_mem : forall {a:Type} {a_WT:WhyType a}, forall (l:(list a)) + (x:a), (mem x l) <-> (mem x (reverse l)). + +Axiom Reverse_length : forall {a:Type} {a_WT:WhyType a}, forall (l:(list a)), + ((length (reverse l)) = (length l)). + +Axiom reverse_num_occ : forall {a:Type} {a_WT:WhyType a}, forall (x:a) + (l:(list a)), ((num_occ x l) = (num_occ x (reverse l))). + +(* Why3 assumption *) +Definition permut {a:Type} {a_WT:WhyType a} (l1:(list a)) (l2:(list + a)): Prop := forall (x:a), ((num_occ x l1) = (num_occ x l2)). + +Axiom Permut_refl : forall {a:Type} {a_WT:WhyType a}, forall (l:(list a)), + (permut l l). + +Axiom Permut_sym : forall {a:Type} {a_WT:WhyType a}, forall (l1:(list a)) + (l2:(list a)), (permut l1 l2) -> (permut l2 l1). + +Axiom Permut_trans : forall {a:Type} {a_WT:WhyType a}, forall (l1:(list a)) + (l2:(list a)) (l3:(list a)), (permut l1 l2) -> ((permut l2 l3) -> (permut + l1 l3)). + +Axiom Permut_cons : forall {a:Type} {a_WT:WhyType a}, forall (x:a) (l1:(list + a)) (l2:(list a)), (permut l1 l2) -> (permut (Cons x l1) (Cons x l2)). + +Axiom Permut_swap : forall {a:Type} {a_WT:WhyType a}, forall (x:a) (y:a) + (l:(list a)), (permut (Cons x (Cons y l)) (Cons y (Cons x l))). + +Axiom Permut_cons_append : forall {a:Type} {a_WT:WhyType a}, forall (x:a) + (l1:(list a)) (l2:(list a)), (permut (infix_plpl (Cons x l1) l2) + (infix_plpl l1 (Cons x l2))). + +Axiom Permut_assoc : forall {a:Type} {a_WT:WhyType a}, forall (l1:(list a)) + (l2:(list a)) (l3:(list a)), (permut (infix_plpl (infix_plpl l1 l2) l3) + (infix_plpl l1 (infix_plpl l2 l3))). + +Axiom Permut_append : forall {a:Type} {a_WT:WhyType a}, forall (l1:(list a)) + (l2:(list a)) (k1:(list a)) (k2:(list a)), (permut l1 k1) -> ((permut l2 + k2) -> (permut (infix_plpl l1 l2) (infix_plpl k1 k2))). + +Axiom Permut_append_swap : forall {a:Type} {a_WT:WhyType a}, forall (l1:(list + a)) (l2:(list a)), (permut (infix_plpl l1 l2) (infix_plpl l2 l1)). + +Axiom Permut_mem : forall {a:Type} {a_WT:WhyType a}, forall (x:a) (l1:(list + a)) (l2:(list a)), (permut l1 l2) -> ((mem x l1) -> (mem x l2)). + +(* Why3 goal *) +Theorem Permut_length : forall {a:Type} {a_WT:WhyType a}, forall (l1:(list + a)) (l2:(list a)), (permut l1 l2) -> ((length l1) = (length l2)). +intros a a_WT l1 l2 h1. +Require Import Why3. +Ltac cvc := why3 "CVC4,1.4,". +generalize dependent l2. +induction l1; intros. +destruct l2. +trivial. +cvc. +pose (h2 := h1). +clearbody h2. +specialize (h1 a0). +assert (mem a0 l2) by cvc. +apply mem_decomp in H. +destruct H as [l3 [l4 H]]. +assert (permut l1 (infix_plpl l3 l4)). +intro. +cvc. +cvc. +Qed. + diff --git a/examples/stdlib/list/why3session.xml b/examples/stdlib/list/why3session.xml new file mode 100644 index 0000000000..c7a0f64d00 --- /dev/null +++ b/examples/stdlib/list/why3session.xml @@ -0,0 +1,465 @@ +<?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="CVC3" version="2.4.1" timelimit="5" memlimit="1000"/> +<prover id="1" name="CVC4" version="1.4" timelimit="5" memlimit="1000"/> +<prover id="2" name="Spass" version="3.5" timelimit="5" memlimit="1000"/> +<prover id="3" name="Coq" version="8.4pl2" timelimit="5" memlimit="1000"/> +<prover id="4" name="Eprover" version="1.8-001" timelimit="5" memlimit="1000"/> +<prover id="5" name="Alt-Ergo" version="0.95.2" timelimit="5" memlimit="1000"/> +<prover id="6" name="CVC4" version="1.3" timelimit="5" memlimit="1000"/> +<file name="../../../theories/list.why" expanded="true"> +<theory name="List" sum="d41d8cd98f00b204e9800998ecf8427e"> +</theory> +<theory name="Length" sum="05caecc0d3ea8074e1ba80a75530a754"> + <goal name="Length_nonnegative"> + <transf name="induction_ty_lex"> + <goal name="Length_nonnegative.1" expl="1."> + <proof prover="5"><result status="valid" time="0.01"/></proof> + </goal> + </transf> + </goal> + <goal name="Length_nil"> + <transf name="split_goal_wp"> + <goal name="Length_nil.1" expl="1."> + <proof prover="2"><result status="valid" time="0.03"/></proof> + <proof prover="4"><result status="valid" time="0.01"/></proof> + </goal> + <goal name="Length_nil.2" expl="2."> + <proof prover="5"><result status="valid" time="0.00"/></proof> + </goal> + </transf> + </goal> +</theory> +<theory name="Mem" sum="d41d8cd98f00b204e9800998ecf8427e"> +</theory> +<theory name="Elements" sum="877e4f63c0bc41f63ef2cad2cb868814"> + <goal name="elements_Nil"> + <proof prover="2"><result status="valid" time="0.51"/></proof> + <proof prover="4"><result status="valid" time="0.02"/></proof> + </goal> +</theory> +<theory name="Nth" sum="d41d8cd98f00b204e9800998ecf8427e"> +</theory> +<theory name="NthNoOpt" sum="d41d8cd98f00b204e9800998ecf8427e"> +</theory> +<theory name="NthLength" sum="9df36b3cf6313d38366bfd7427521f0d"> + <goal name="nth_none_1"> + <transf name="induction_ty_lex"> + <goal name="nth_none_1.1" expl="1."> + <proof prover="5"><result status="valid" time="0.02"/></proof> + </goal> + </transf> + </goal> + <goal name="nth_none_2"> + <transf name="induction_ty_lex"> + <goal name="nth_none_2.1" expl="1."> + <proof prover="5"><result status="valid" time="0.01"/></proof> + </goal> + </transf> + </goal> + <goal name="nth_none_3"> + <transf name="induction_ty_lex"> + <goal name="nth_none_3.1" expl="1."> + <proof prover="5"><result status="valid" time="0.01"/></proof> + </goal> + </transf> + </goal> +</theory> +<theory name="HdTl" sum="d41d8cd98f00b204e9800998ecf8427e"> +</theory> +<theory name="HdTlNoOpt" sum="d41d8cd98f00b204e9800998ecf8427e"> +</theory> +<theory name="NthHdTl" sum="605b4f2f29860acc4d58392b8e6b8e95"> + <goal name="Nth_tl"> + <proof prover="5"><result status="valid" time="0.01"/></proof> + </goal> + <goal name="Nth0_head"> + <proof prover="4"><result status="valid" time="0.01"/></proof> + </goal> +</theory> +<theory name="Append" sum="23c9caac5f459c7810a5c31001d09327"> + <goal name="Append_assoc"> + <transf name="induction_ty_lex"> + <goal name="Append_assoc.1" expl="1."> + <transf name="split_goal_wp"> + <goal name="Append_assoc.1.1" expl="1."> + <proof prover="5"><result status="valid" time="0.01"/></proof> + </goal> + <goal name="Append_assoc.1.2" expl="2."> + <proof prover="5"><result status="valid" time="0.00"/></proof> + </goal> + </transf> + </goal> + </transf> + </goal> + <goal name="Append_l_nil"> + <transf name="induction_ty_lex"> + <goal name="Append_l_nil.1" expl="1."> + <proof prover="5"><result status="valid" time="0.01"/></proof> + </goal> + </transf> + </goal> + <goal name="Append_length"> + <transf name="induction_ty_lex"> + <goal name="Append_length.1" expl="1."> + <proof prover="5"><result status="valid" time="0.12"/></proof> + </goal> + </transf> + </goal> + <goal name="mem_append"> + <transf name="induction_ty_lex"> + <goal name="mem_append.1" expl="1."> + <proof prover="5"><result status="valid" time="0.21"/></proof> + </goal> + </transf> + </goal> + <goal name="mem_decomp"> + <transf name="induction_ty_lex"> + <goal name="mem_decomp.1" expl="1."> + <transf name="split_goal_wp"> + <goal name="mem_decomp.1.1" expl="1."> + <proof prover="5"><result status="valid" time="0.01"/></proof> + </goal> + <goal name="mem_decomp.1.2" expl="2."> + <proof prover="2"><result status="valid" time="0.31"/></proof> + </goal> + </transf> + </goal> + </transf> + </goal> +</theory> +<theory name="NthLengthAppend" sum="f3c686209d40076fa7f8e64ec02f92be"> + <goal name="nth_append_1"> + <transf name="induction_ty_lex"> + <goal name="nth_append_1.1" expl="1."> + <proof prover="5"><result status="valid" time="0.03"/></proof> + </goal> + </transf> + </goal> + <goal name="nth_append_2"> + <transf name="induction_ty_lex"> + <goal name="nth_append_2.1" expl="1."> + <proof prover="5"><result status="valid" time="0.11"/></proof> + </goal> + </transf> + </goal> +</theory> +<theory name="Reverse" sum="bc1b8b026b77ef2c52577c6ef9cc53d0"> + <goal name="reverse_append"> + <transf name="induction_ty_lex"> + <goal name="reverse_append.1" expl="1."> + <proof prover="5"><result status="valid" time="0.59"/></proof> + </goal> + </transf> + </goal> + <goal name="reverse_cons"> + <proof prover="5"><result status="valid" time="0.01"/></proof> + </goal> + <goal name="cons_reverse"> + <transf name="induction_ty_lex"> + <goal name="cons_reverse.1" expl="1."> + <proof prover="5"><result status="valid" time="0.01"/></proof> + </goal> + </transf> + </goal> + <goal name="reverse_reverse"> + <transf name="induction_ty_lex"> + <goal name="reverse_reverse.1" expl="1."> + <proof prover="5"><result status="valid" time="0.01"/></proof> + </goal> + </transf> + </goal> + <goal name="reverse_mem"> + <transf name="induction_ty_lex"> + <goal name="reverse_mem.1" expl="1."> + <proof prover="5"><result status="valid" time="0.08"/></proof> + </goal> + </transf> + </goal> + <goal name="Reverse_length"> + <transf name="induction_ty_lex"> + <goal name="Reverse_length.1" expl="1."> + <proof prover="5"><result status="valid" time="0.02"/></proof> + </goal> + </transf> + </goal> +</theory> +<theory name="RevAppend" sum="9da10df4b75652aa79e575c6cf846dc2"> + <goal name="rev_append_append_l"> + <transf name="induction_ty_lex"> + <goal name="rev_append_append_l.1" expl="1."> + <proof prover="5"><result status="valid" time="0.01"/></proof> + </goal> + </transf> + </goal> + <goal name="rev_append_length"> + <transf name="induction_ty_lex"> + <goal name="rev_append_length.1" expl="1."> + <proof prover="5"><result status="valid" time="0.01"/></proof> + </goal> + </transf> + </goal> + <goal name="rev_append_def"> + <transf name="induction_ty_lex"> + <goal name="rev_append_def.1" expl="1."> + <proof prover="5"><result status="valid" time="0.01"/></proof> + </goal> + </transf> + </goal> + <goal name="rev_append_append_r"> + <proof prover="5"><result status="valid" time="0.03"/></proof> + </goal> +</theory> +<theory name="Combine" sum="d41d8cd98f00b204e9800998ecf8427e"> +</theory> +<theory name="Sorted" sum="aedc51a4d5f32e1722b9b8d9b080a402"> + <goal name="sorted_mem"> + <transf name="split_goal_wp"> + <goal name="sorted_mem.1" expl="1."> + <proof prover="5"><result status="valid" time="0.07"/></proof> + </goal> + <goal name="sorted_mem.2" expl="2."> + <transf name="induction_pr"> + <goal name="sorted_mem.2.1" expl="1."> + <proof prover="6"><result status="valid" time="0.00"/></proof> + </goal> + <goal name="sorted_mem.2.2" expl="2."> + <proof prover="6"><result status="valid" time="0.01"/></proof> + </goal> + <goal name="sorted_mem.2.3" expl="3."> + <proof prover="0"><result status="valid" time="0.05"/></proof> + </goal> + </transf> + </goal> + <goal name="sorted_mem.3" expl="3."> + <proof prover="5"><result status="valid" time="0.01"/></proof> + </goal> + </transf> + </goal> + <goal name="sorted_append"> + <transf name="induction_ty_lex"> + <goal name="sorted_append.1" expl="1."> + <transf name="split_goal_wp"> + <goal name="sorted_append.1.1" expl="1."> + <proof prover="5"><result status="valid" time="0.01"/></proof> + </goal> + <goal name="sorted_append.1.2" expl="2."> + <proof prover="5"><result status="valid" time="0.01"/></proof> + </goal> + <goal name="sorted_append.1.3" expl="3."> + <proof prover="5"><result status="valid" time="0.01"/></proof> + </goal> + <goal name="sorted_append.1.4" expl="4."> + <proof prover="5"><result status="valid" time="0.00"/></proof> + </goal> + <goal name="sorted_append.1.5" expl="5."> + <proof prover="1"><result status="valid" time="0.18"/></proof> + </goal> + <goal name="sorted_append.1.6" expl="6."> + <proof prover="1"><result status="valid" time="1.88"/></proof> + </goal> + <goal name="sorted_append.1.7" expl="7."> + <proof prover="5"><result status="valid" time="0.03"/></proof> + </goal> + <goal name="sorted_append.1.8" expl="8."> + <proof prover="0"><result status="valid" time="1.89"/></proof> + </goal> + </transf> + </goal> + </transf> + </goal> +</theory> +<theory name="SortedInt" sum="06ce40f504085478e9252d4d73c60488"> + <goal name="Transitive.Trans"> + <proof prover="5"><result status="valid" time="0.00"/></proof> + </goal> +</theory> +<theory name="RevSorted" sum="19294c1c9d872edacfaf8b426b74d395"> + <goal name="Incr.Transitive.Trans"> + <proof prover="5"><result status="valid" time="0.01"/></proof> + </goal> + <goal name="Decr.Transitive.Trans"> + <proof prover="5"><result status="valid" time="0.01"/></proof> + </goal> + <goal name="rev_append_sorted_incr"> + <transf name="induction_ty_lex"> + <goal name="rev_append_sorted_incr.1" expl="1."> + <transf name="split_goal_wp"> + <goal name="rev_append_sorted_incr.1.1" expl="1."> + <proof prover="5"><result status="valid" time="0.02"/></proof> + </goal> + <goal name="rev_append_sorted_incr.1.2" expl="2."> + <proof prover="5"><result status="valid" time="0.02"/></proof> + </goal> + <goal name="rev_append_sorted_incr.1.3" expl="3."> + <proof prover="5"><result status="valid" time="0.02"/></proof> + </goal> + <goal name="rev_append_sorted_incr.1.4" expl="4."> + <proof prover="5"><result status="valid" time="0.02"/></proof> + </goal> + <goal name="rev_append_sorted_incr.1.5" expl="5."> + <proof prover="1"><result status="valid" time="0.07"/></proof> + </goal> + <goal name="rev_append_sorted_incr.1.6" expl="6."> + <proof prover="5"><result status="valid" time="0.15"/></proof> + </goal> + <goal name="rev_append_sorted_incr.1.7" expl="7."> + <proof prover="4"><result status="valid" time="0.77"/></proof> + </goal> + <goal name="rev_append_sorted_incr.1.8" expl="8."> + <proof prover="4"><result status="valid" time="1.29"/></proof> + </goal> + </transf> + </goal> + </transf> + </goal> + <goal name="rev_append_sorted_decr"> + <transf name="induction_ty_lex"> + <goal name="rev_append_sorted_decr.1" expl="1."> + <transf name="split_goal_wp"> + <goal name="rev_append_sorted_decr.1.1" expl="1."> + <proof prover="1"><result status="valid" time="0.00"/></proof> + <proof prover="5"><result status="valid" time="0.01"/></proof> + </goal> + <goal name="rev_append_sorted_decr.1.2" expl="2."> + <proof prover="1"><result status="valid" time="0.02"/></proof> + <proof prover="5"><result status="valid" time="0.02"/></proof> + </goal> + <goal name="rev_append_sorted_decr.1.3" expl="3."> + <proof prover="1"><result status="valid" time="0.02"/></proof> + <proof prover="5"><result status="valid" time="0.05"/></proof> + </goal> + <goal name="rev_append_sorted_decr.1.4" expl="4."> + <proof prover="1"><result status="valid" time="0.02"/></proof> + <proof prover="5"><result status="valid" time="0.01"/></proof> + </goal> + <goal name="rev_append_sorted_decr.1.5" expl="5."> + <proof prover="1"><result status="valid" time="0.05"/></proof> + </goal> + <goal name="rev_append_sorted_decr.1.6" expl="6."> + <proof prover="1"><result status="valid" time="0.03"/></proof> + <proof prover="5"><result status="valid" time="0.80"/></proof> + </goal> + <goal name="rev_append_sorted_decr.1.7" expl="7."> + <proof prover="1"><result status="valid" time="0.07"/></proof> + </goal> + <goal name="rev_append_sorted_decr.1.8" expl="8."> + <proof prover="1"><result status="valid" time="0.07"/></proof> + </goal> + </transf> + </goal> + </transf> + </goal> +</theory> +<theory name="NumOcc" sum="1fa86aeaf6e01c2101b90807733540ed"> + <goal name="Num_Occ_Positive"> + <transf name="induction_ty_lex"> + <goal name="Num_Occ_Positive.1" expl="1."> + <proof prover="5"><result status="valid" time="0.01"/></proof> + </goal> + </transf> + </goal> + <goal name="Mem_Num_Occ"> + <transf name="induction_ty_lex"> + <goal name="Mem_Num_Occ.1" expl="1."> + <transf name="split_goal_wp"> + <goal name="Mem_Num_Occ.1.1" expl="1."> + <proof prover="5"><result status="valid" time="0.01"/></proof> + </goal> + <goal name="Mem_Num_Occ.1.2" expl="2."> + <proof prover="5"><result status="valid" time="0.01"/></proof> + </goal> + <goal name="Mem_Num_Occ.1.3" expl="3."> + <proof prover="5"><result status="valid" time="0.03"/></proof> + </goal> + <goal name="Mem_Num_Occ.1.4" expl="4."> + <proof prover="5"><result status="valid" time="0.01"/></proof> + </goal> + </transf> + </goal> + </transf> + </goal> + <goal name="Append_Num_Occ"> + <transf name="induction_ty_lex"> + <goal name="Append_Num_Occ.1" expl="1."> + <proof prover="5"><result status="valid" time="0.11"/></proof> + </goal> + </transf> + </goal> + <goal name="reverse_num_occ"> + <transf name="induction_ty_lex"> + <goal name="reverse_num_occ.1" expl="1."> + <proof prover="5"><result status="valid" time="1.33"/></proof> + </goal> + </transf> + </goal> +</theory> +<theory name="Permut" sum="1a14fb9d73e92e6b22113b100c71c846"> + <goal name="Permut_refl"> + <proof prover="5"><result status="valid" time="0.01"/></proof> + </goal> + <goal name="Permut_sym"> + <proof prover="5"><result status="valid" time="0.02"/></proof> + </goal> + <goal name="Permut_trans"> + <proof prover="5"><result status="valid" time="0.01"/></proof> + </goal> + <goal name="Permut_cons"> + <proof prover="5"><result status="valid" time="0.02"/></proof> + </goal> + <goal name="Permut_swap"> + <proof prover="5"><result status="valid" time="0.36"/></proof> + </goal> + <goal name="Permut_cons_append"> + <proof prover="5"><result status="valid" time="0.92"/></proof> + </goal> + <goal name="Permut_assoc"> + <proof prover="5"><result status="valid" time="0.01"/></proof> + </goal> + <goal name="Permut_append"> + <proof prover="5"><result status="valid" time="0.02"/></proof> + </goal> + <goal name="Permut_append_swap"> + <proof prover="5"><result status="valid" time="0.01"/></proof> + </goal> + <goal name="Permut_mem"> + <proof prover="5"><result status="valid" time="0.01"/></proof> + </goal> + <goal name="Permut_length"> + <proof prover="3" edited="list_Permut_Permut_length_2.v"><result status="valid" time="2.30"/></proof> + </goal> +</theory> +<theory name="Distinct" sum="e56aed12f61edef3656befad5f86e1ba"> + <goal name="distinct_append"> + <transf name="induction_ty_lex"> + <goal name="distinct_append.1" expl="1."> + <transf name="split_goal_wp"> + <goal name="distinct_append.1.1" expl="1."> + <proof prover="5"><result status="valid" time="0.01"/></proof> + </goal> + <goal name="distinct_append.1.2" expl="2."> + <proof prover="1"><result status="valid" time="1.12"/></proof> + </goal> + </transf> + </goal> + </transf> + </goal> +</theory> +<theory name="Prefix" sum="d41d8cd98f00b204e9800998ecf8427e"> +</theory> +<theory name="Sum" sum="d41d8cd98f00b204e9800998ecf8427e"> +</theory> +<theory name="Induction" sum="d41d8cd98f00b204e9800998ecf8427e"> +</theory> +<theory name="Map" sum="d41d8cd98f00b204e9800998ecf8427e"> +</theory> +<theory name="FoldLeft" sum="d41d8cd98f00b204e9800998ecf8427e"> +</theory> +<theory name="FoldRight" sum="d41d8cd98f00b204e9800998ecf8427e"> +</theory> +<theory name="ListRich" sum="d41d8cd98f00b204e9800998ecf8427e"> +</theory> +</file> +</why3session> diff --git a/examples/stdlib/list/why3shapes.gz b/examples/stdlib/list/why3shapes.gz new file mode 100644 index 0000000000000000000000000000000000000000..63f07dbe5a21cb4e23f413abd929829fb4c52ba8 GIT binary patch literal 4102 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 S=l`DZUtI6G73)<~1_l6<jSXA? literal 0 HcmV?d00001 diff --git a/examples/tower_of_hanoi.mlw b/examples/tower_of_hanoi.mlw index 8af88998bd..982f7b6749 100644 --- a/examples/tower_of_hanoi.mlw +++ b/examples/tower_of_hanoi.mlw @@ -66,7 +66,8 @@ module Tower_of_Hanoi use import list.Length use import list.RevAppend - clone import list.RevSorted with type t = int, predicate le = (<) + clone import list.RevSorted with type t = int, predicate le = (<), + goal Transitive.Trans type tower = { mutable rod : list int; diff --git a/examples/tower_of_hanoi/why3session.xml b/examples/tower_of_hanoi/why3session.xml index 27d44d81b8..2f22ac0235 100644 --- a/examples/tower_of_hanoi/why3session.xml +++ b/examples/tower_of_hanoi/why3session.xml @@ -4,330 +4,334 @@ <why3session shape_version="4"> <prover id="0" name="CVC4" version="1.2" timelimit="5" memlimit="1000"/> <prover id="1" name="CVC3" version="2.4.1" timelimit="5" memlimit="1000"/> -<prover id="2" name="Alt-Ergo" version="0.95.1" timelimit="5" memlimit="1000"/> -<prover id="3" name="Eprover" version="1.6" timelimit="5" memlimit="1000"/> +<prover id="2" name="Eprover" version="1.6" timelimit="5" memlimit="1000"/> +<prover id="3" name="Alt-Ergo" version="0.95.1" timelimit="5" memlimit="1000"/> <prover id="4" name="Z3" version="4.3.1" timelimit="5" memlimit="1000"/> <prover id="5" name="Spass" version="3.7" timelimit="5" memlimit="1000"/> -<prover id="6" name="Vampire" version="0.6" timelimit="5" memlimit="1000"/> +<prover id="6" name="Alt-Ergo" version="0.95.2" timelimit="5" memlimit="1000"/> +<prover id="7" name="Vampire" version="0.6" timelimit="5" memlimit="1000"/> <file name="../tower_of_hanoi.mlw" expanded="true"> -<theory name="Hanoi" sum="3ec613d7791605b4802d060f62a972b4"> +<theory name="Hanoi" sum="527bc9a86686113d1e60c41bdc3fb9c5"> <goal name="WP_parameter move" expl="VC for move"> - <proof prover="2"><result status="valid" time="0.05"/></proof> - <proof prover="3"><result status="valid" time="0.01"/></proof> - <proof prover="5"><result status="valid" time="0.17"/></proof> - <proof prover="6"><result status="valid" time="0.02"/></proof> + <proof prover="2" obsolete="true"><result status="valid" time="0.01"/></proof> + <proof prover="3" obsolete="true"><result status="valid" time="0.05"/></proof> + <proof prover="5" obsolete="true"><result status="valid" time="0.17"/></proof> + <proof prover="7"><result status="valid" time="0.02"/></proof> </goal> <goal name="WP_parameter hanoi_rec" expl="VC for hanoi_rec"> <transf name="split_goal_wp"> <goal name="WP_parameter hanoi_rec.1" expl="1. variant decrease"> - <proof prover="0"><result status="valid" time="0.02"/></proof> - <proof prover="2"><result status="valid" time="0.01"/></proof> - <proof prover="3"><result status="valid" time="0.63"/></proof> - <proof prover="5"><result status="valid" time="0.61"/></proof> - <proof prover="6"><result status="valid" time="0.67"/></proof> + <proof prover="0" obsolete="true"><result status="valid" time="0.02"/></proof> + <proof prover="2" obsolete="true"><result status="valid" time="0.63"/></proof> + <proof prover="3" obsolete="true"><result status="valid" time="0.01"/></proof> + <proof prover="5" obsolete="true"><result status="valid" time="0.61"/></proof> + <proof prover="7"><result status="valid" time="0.67"/></proof> </goal> <goal name="WP_parameter hanoi_rec.2" expl="2. precondition"> - <proof prover="0"><result status="valid" time="0.02"/></proof> - <proof prover="2"><result status="valid" time="0.01"/></proof> - <proof prover="3"><result status="valid" time="0.00"/></proof> - <proof prover="5"><result status="valid" time="0.02"/></proof> - <proof prover="6"><result status="valid" time="0.02"/></proof> + <proof prover="0" obsolete="true"><result status="valid" time="0.02"/></proof> + <proof prover="2" obsolete="true"><result status="valid" time="0.00"/></proof> + <proof prover="3" obsolete="true"><result status="valid" time="0.01"/></proof> + <proof prover="5" obsolete="true"><result status="valid" time="0.02"/></proof> + <proof prover="7"><result status="valid" time="0.02"/></proof> </goal> <goal name="WP_parameter hanoi_rec.3" expl="3. precondition"> - <proof prover="2"><result status="valid" time="0.04"/></proof> - <proof prover="3"><result status="valid" time="0.04"/></proof> - <proof prover="5"><result status="valid" time="0.22"/></proof> - <proof prover="6"><result status="valid" time="1.12"/></proof> + <proof prover="2" obsolete="true"><result status="valid" time="0.04"/></proof> + <proof prover="3" obsolete="true"><result status="valid" time="0.04"/></proof> + <proof prover="5" obsolete="true"><result status="valid" time="0.22"/></proof> + <proof prover="7"><result status="valid" time="1.12"/></proof> </goal> <goal name="WP_parameter hanoi_rec.4" expl="4. precondition"> - <proof prover="2"><result status="valid" time="0.10"/></proof> - <proof prover="3"><result status="valid" time="0.05"/></proof> - <proof prover="5"><result status="valid" time="0.13"/></proof> - <proof prover="6"><result status="valid" time="1.34"/></proof> + <proof prover="2" obsolete="true"><result status="valid" time="0.05"/></proof> + <proof prover="3" obsolete="true"><result status="valid" time="0.10"/></proof> + <proof prover="5" obsolete="true"><result status="valid" time="0.13"/></proof> + <proof prover="7"><result status="valid" time="1.34"/></proof> </goal> <goal name="WP_parameter hanoi_rec.5" expl="5. precondition"> - <proof prover="0"><result status="valid" time="0.01"/></proof> - <proof prover="2"><result status="valid" time="0.01"/></proof> - <proof prover="3"><result status="valid" time="0.00"/></proof> - <proof prover="5"><result status="valid" time="0.02"/></proof> - <proof prover="6"><result status="valid" time="0.00"/></proof> + <proof prover="0" obsolete="true"><result status="valid" time="0.01"/></proof> + <proof prover="2" obsolete="true"><result status="valid" time="0.00"/></proof> + <proof prover="3" obsolete="true"><result status="valid" time="0.01"/></proof> + <proof prover="5" obsolete="true"><result status="valid" time="0.02"/></proof> + <proof prover="7"><result status="valid" time="0.00"/></proof> </goal> <goal name="WP_parameter hanoi_rec.6" expl="6. precondition"> - <proof prover="2"><result status="valid" time="0.03"/></proof> - <proof prover="3"><result status="valid" time="0.01"/></proof> - <proof prover="5"><result status="valid" time="0.03"/></proof> - <proof prover="6"><result status="valid" time="0.00"/></proof> + <proof prover="2" obsolete="true"><result status="valid" time="0.01"/></proof> + <proof prover="3" obsolete="true"><result status="valid" time="0.03"/></proof> + <proof prover="5" obsolete="true"><result status="valid" time="0.03"/></proof> + <proof prover="7"><result status="valid" time="0.00"/></proof> </goal> <goal name="WP_parameter hanoi_rec.7" expl="7. variant decrease"> - <proof prover="0"><result status="valid" time="0.01"/></proof> - <proof prover="2"><result status="valid" time="0.01"/></proof> - <proof prover="3"><result status="valid" time="0.13"/></proof> - <proof prover="5"><result status="valid" time="0.61"/></proof> - <proof prover="6"><result status="valid" time="1.24"/></proof> + <proof prover="0" obsolete="true"><result status="valid" time="0.01"/></proof> + <proof prover="2" obsolete="true"><result status="valid" time="0.13"/></proof> + <proof prover="3" obsolete="true"><result status="valid" time="0.01"/></proof> + <proof prover="5" obsolete="true"><result status="valid" time="0.61"/></proof> + <proof prover="7"><result status="valid" time="1.24"/></proof> </goal> <goal name="WP_parameter hanoi_rec.8" expl="8. precondition"> - <proof prover="0"><result status="valid" time="0.01"/></proof> - <proof prover="2"><result status="valid" time="0.02"/></proof> - <proof prover="3"><result status="valid" time="0.00"/></proof> - <proof prover="5"><result status="valid" time="0.03"/></proof> - <proof prover="6"><result status="valid" time="0.00"/></proof> + <proof prover="0" obsolete="true"><result status="valid" time="0.01"/></proof> + <proof prover="2" obsolete="true"><result status="valid" time="0.00"/></proof> + <proof prover="3" obsolete="true"><result status="valid" time="0.02"/></proof> + <proof prover="5" obsolete="true"><result status="valid" time="0.03"/></proof> + <proof prover="7"><result status="valid" time="0.00"/></proof> </goal> <goal name="WP_parameter hanoi_rec.9" expl="9. precondition"> - <proof prover="2"><result status="valid" time="0.10"/></proof> - <proof prover="3"><result status="valid" time="1.14"/></proof> - <proof prover="5"><result status="valid" time="1.95"/></proof> - <proof prover="6"><result status="valid" time="1.00"/></proof> + <proof prover="2" obsolete="true"><result status="valid" time="1.14"/></proof> + <proof prover="3" obsolete="true"><result status="valid" time="0.10"/></proof> + <proof prover="5" obsolete="true"><result status="valid" time="1.95"/></proof> + <proof prover="7"><result status="valid" time="1.00"/></proof> </goal> <goal name="WP_parameter hanoi_rec.10" expl="10. precondition"> <proof prover="1"><result status="valid" time="0.06"/></proof> - <proof prover="3"><result status="valid" time="1.10"/></proof> - <proof prover="6"><result status="valid" time="1.16"/></proof> + <proof prover="2" obsolete="true"><result status="valid" time="1.10"/></proof> + <proof prover="7"><result status="valid" time="1.16"/></proof> </goal> <goal name="WP_parameter hanoi_rec.11" expl="11. postcondition"> - <proof prover="0"><result status="valid" time="0.02"/></proof> - <proof prover="2"><result status="valid" time="0.02"/></proof> - <proof prover="3"><result status="valid" time="0.02"/></proof> - <proof prover="5"><result status="valid" time="0.02"/></proof> - <proof prover="6"><result status="valid" time="0.00"/></proof> + <proof prover="0" obsolete="true"><result status="valid" time="0.02"/></proof> + <proof prover="2" obsolete="true"><result status="valid" time="0.02"/></proof> + <proof prover="3" obsolete="true"><result status="valid" time="0.02"/></proof> + <proof prover="5" obsolete="true"><result status="valid" time="0.02"/></proof> + <proof prover="7"><result status="valid" time="0.00"/></proof> </goal> <goal name="WP_parameter hanoi_rec.12" expl="12. postcondition"> - <proof prover="0"><result status="valid" time="0.01"/></proof> - <proof prover="2"><result status="valid" time="0.02"/></proof> - <proof prover="3"><result status="valid" time="0.04"/></proof> - <proof prover="5"><result status="valid" time="0.02"/></proof> - <proof prover="6"><result status="valid" time="0.08"/></proof> + <proof prover="0" obsolete="true"><result status="valid" time="0.01"/></proof> + <proof prover="2" obsolete="true"><result status="valid" time="0.04"/></proof> + <proof prover="3" obsolete="true"><result status="valid" time="0.02"/></proof> + <proof prover="5" obsolete="true"><result status="valid" time="0.02"/></proof> + <proof prover="7"><result status="valid" time="0.08"/></proof> </goal> <goal name="WP_parameter hanoi_rec.13" expl="13. postcondition"> - <proof prover="0"><result status="valid" time="0.00"/></proof> - <proof prover="2"><result status="valid" time="0.01"/></proof> - <proof prover="3"><result status="valid" time="0.01"/></proof> - <proof prover="5"><result status="valid" time="0.03"/></proof> - <proof prover="6"><result status="valid" time="0.00"/></proof> + <proof prover="0" obsolete="true"><result status="valid" time="0.00"/></proof> + <proof prover="2" obsolete="true"><result status="valid" time="0.01"/></proof> + <proof prover="3" obsolete="true"><result status="valid" time="0.01"/></proof> + <proof prover="5" obsolete="true"><result status="valid" time="0.03"/></proof> + <proof prover="7"><result status="valid" time="0.00"/></proof> </goal> <goal name="WP_parameter hanoi_rec.14" expl="14. postcondition"> - <proof prover="0"><result status="valid" time="0.00"/></proof> - <proof prover="2"><result status="valid" time="0.01"/></proof> - <proof prover="3"><result status="valid" time="0.02"/></proof> - <proof prover="5"><result status="valid" time="0.03"/></proof> - <proof prover="6"><result status="valid" time="0.01"/></proof> + <proof prover="0" obsolete="true"><result status="valid" time="0.00"/></proof> + <proof prover="2" obsolete="true"><result status="valid" time="0.02"/></proof> + <proof prover="3" obsolete="true"><result status="valid" time="0.01"/></proof> + <proof prover="5" obsolete="true"><result status="valid" time="0.03"/></proof> + <proof prover="7"><result status="valid" time="0.01"/></proof> </goal> <goal name="WP_parameter hanoi_rec.15" expl="15. postcondition"> - <proof prover="0"><result status="valid" time="0.01"/></proof> - <proof prover="2"><result status="valid" time="0.01"/></proof> - <proof prover="3"><result status="valid" time="0.02"/></proof> - <proof prover="5"><result status="valid" time="0.02"/></proof> - <proof prover="6"><result status="valid" time="0.01"/></proof> + <proof prover="0" obsolete="true"><result status="valid" time="0.01"/></proof> + <proof prover="2" obsolete="true"><result status="valid" time="0.02"/></proof> + <proof prover="3" obsolete="true"><result status="valid" time="0.01"/></proof> + <proof prover="5" obsolete="true"><result status="valid" time="0.02"/></proof> + <proof prover="7"><result status="valid" time="0.01"/></proof> </goal> </transf> </goal> <goal name="WP_parameter tower_of_hanoi" expl="VC for tower_of_hanoi"> - <proof prover="0"><result status="valid" time="0.01"/></proof> - <proof prover="2"><result status="valid" time="0.08"/></proof> - <proof prover="3"><result status="valid" time="0.01"/></proof> - <proof prover="5"><result status="valid" time="0.03"/></proof> - <proof prover="6"><result status="valid" time="0.02"/></proof> + <proof prover="0" obsolete="true"><result status="valid" time="0.01"/></proof> + <proof prover="2" obsolete="true"><result status="valid" time="0.01"/></proof> + <proof prover="3" obsolete="true"><result status="valid" time="0.08"/></proof> + <proof prover="5" obsolete="true"><result status="valid" time="0.03"/></proof> + <proof prover="7"><result status="valid" time="0.02"/></proof> </goal> </theory> -<theory name="Tower_of_Hanoi" sum="e650406137f72b33da6fbcd1cb59cd6a" expanded="true"> +<theory name="Tower_of_Hanoi" sum="e14c66f0c53e98d59d95177ce8a5a413" expanded="true"> + <goal name="RevSorted.Transitive.Trans"> + <proof prover="6"><result status="valid" time="0.01"/></proof> + </goal> <goal name="WP_parameter move" expl="VC for move"> <proof prover="1"><result status="valid" time="0.03"/></proof> - <proof prover="2"><result status="valid" time="0.17"/></proof> - <proof prover="3"><result status="valid" time="0.02"/></proof> - <proof prover="6"><result status="valid" time="0.04"/></proof> + <proof prover="2" obsolete="true"><result status="valid" time="0.02"/></proof> + <proof prover="3" obsolete="true"><result status="valid" time="0.17"/></proof> + <proof prover="7"><result status="valid" time="0.04"/></proof> </goal> <goal name="WP_parameter hanoi_rec" expl="VC for hanoi_rec"> <transf name="split_goal_wp"> <goal name="WP_parameter hanoi_rec.1" expl="1. variant decrease"> - <proof prover="0"><result status="valid" time="0.01"/></proof> + <proof prover="0" obsolete="true"><result status="valid" time="0.01"/></proof> <proof prover="1"><result status="valid" time="0.02"/></proof> - <proof prover="2"><result status="valid" time="0.04"/></proof> - <proof prover="3"><result status="valid" time="1.46"/></proof> + <proof prover="2" obsolete="true"><result status="valid" time="1.46"/></proof> + <proof prover="3" obsolete="true"><result status="valid" time="0.04"/></proof> <proof prover="4"><result status="valid" time="0.00"/></proof> - <proof prover="5"><result status="valid" time="0.73"/></proof> - <proof prover="6"><result status="valid" time="1.23"/></proof> + <proof prover="5" obsolete="true"><result status="valid" time="0.73"/></proof> + <proof prover="7"><result status="valid" time="1.23"/></proof> </goal> <goal name="WP_parameter hanoi_rec.2" expl="2. precondition"> <proof prover="1"><result status="valid" time="0.00"/></proof> - <proof prover="2"><result status="valid" time="0.03"/></proof> - <proof prover="3"><result status="valid" time="0.82"/></proof> - <proof prover="5"><result status="valid" time="0.71"/></proof> - <proof prover="6"><result status="valid" time="0.37"/></proof> + <proof prover="2" obsolete="true"><result status="valid" time="0.82"/></proof> + <proof prover="3" obsolete="true"><result status="valid" time="0.03"/></proof> + <proof prover="5" obsolete="true"><result status="valid" time="0.71"/></proof> + <proof prover="7"><result status="valid" time="0.60"/></proof> </goal> <goal name="WP_parameter hanoi_rec.3" expl="3. precondition"> - <proof prover="0"><result status="valid" time="0.01"/></proof> + <proof prover="0" obsolete="true"><result status="valid" time="0.01"/></proof> <proof prover="1"><result status="valid" time="0.02"/></proof> - <proof prover="2"><result status="valid" time="0.02"/></proof> - <proof prover="3"><result status="valid" time="0.03"/></proof> - <proof prover="5"><result status="valid" time="0.08"/></proof> - <proof prover="6"><result status="valid" time="0.02"/></proof> + <proof prover="2" obsolete="true"><result status="valid" time="0.03"/></proof> + <proof prover="3" obsolete="true"><result status="valid" time="0.02"/></proof> + <proof prover="5" obsolete="true"><result status="valid" time="0.08"/></proof> + <proof prover="7"><result status="valid" time="0.02"/></proof> </goal> <goal name="WP_parameter hanoi_rec.4" expl="4. precondition"> <proof prover="1"><result status="valid" time="0.14"/></proof> - <proof prover="3"><result status="valid" time="0.05"/></proof> - <proof prover="5"><result status="valid" time="0.22"/></proof> - <proof prover="6"><result status="valid" time="0.03"/></proof> + <proof prover="2" obsolete="true"><result status="valid" time="0.05"/></proof> + <proof prover="5" obsolete="true"><result status="valid" time="0.22"/></proof> + <proof prover="7"><result status="valid" time="0.03"/></proof> </goal> <goal name="WP_parameter hanoi_rec.5" expl="5. precondition"> <proof prover="1"><result status="valid" time="0.15"/></proof> - <proof prover="3"><result status="valid" time="0.00"/></proof> - <proof prover="5" timelimit="20"><result status="valid" time="0.19"/></proof> - <proof prover="6"><result status="valid" time="0.04"/></proof> + <proof prover="2" obsolete="true"><result status="valid" time="0.00"/></proof> + <proof prover="5" timelimit="20" obsolete="true"><result status="valid" time="0.19"/></proof> + <proof prover="7"><result status="valid" time="0.04"/></proof> </goal> <goal name="WP_parameter hanoi_rec.6" expl="6. precondition"> - <proof prover="0"><result status="valid" time="0.01"/></proof> + <proof prover="0" obsolete="true"><result status="valid" time="0.01"/></proof> <proof prover="1"><result status="valid" time="0.03"/></proof> - <proof prover="2"><result status="valid" time="0.02"/></proof> - <proof prover="3"><result status="valid" time="0.05"/></proof> + <proof prover="2" obsolete="true"><result status="valid" time="0.05"/></proof> + <proof prover="3" obsolete="true"><result status="valid" time="0.02"/></proof> <proof prover="4"><result status="valid" time="0.03"/></proof> - <proof prover="5"><result status="valid" time="0.05"/></proof> - <proof prover="6"><result status="valid" time="0.01"/></proof> + <proof prover="5" obsolete="true"><result status="valid" time="0.05"/></proof> + <proof prover="7"><result status="valid" time="0.01"/></proof> </goal> <goal name="WP_parameter hanoi_rec.7" expl="7. precondition"> <proof prover="1"><result status="valid" time="0.03"/></proof> - <proof prover="3"><result status="valid" time="0.00"/></proof> - <proof prover="5"><result status="valid" time="0.05"/></proof> - <proof prover="6"><result status="valid" time="0.02"/></proof> + <proof prover="2" obsolete="true"><result status="valid" time="0.00"/></proof> + <proof prover="5" obsolete="true"><result status="valid" time="0.05"/></proof> + <proof prover="7"><result status="valid" time="0.02"/></proof> </goal> <goal name="WP_parameter hanoi_rec.8" expl="8. variant decrease"> - <proof prover="0"><result status="valid" time="0.01"/></proof> + <proof prover="0" obsolete="true"><result status="valid" time="0.01"/></proof> <proof prover="1"><result status="valid" time="0.03"/></proof> - <proof prover="2"><result status="valid" time="0.02"/></proof> - <proof prover="3"><result status="valid" time="0.06"/></proof> + <proof prover="2" obsolete="true"><result status="valid" time="0.06"/></proof> + <proof prover="3" obsolete="true"><result status="valid" time="0.02"/></proof> <proof prover="4"><result status="valid" time="0.03"/></proof> - <proof prover="6"><result status="valid" time="2.31"/></proof> + <proof prover="7"><result status="valid" time="2.31"/></proof> </goal> <goal name="WP_parameter hanoi_rec.9" expl="9. precondition"> - <proof prover="0"><result status="valid" time="0.01"/></proof> + <proof prover="0" obsolete="true"><result status="valid" time="0.01"/></proof> <proof prover="1"><result status="valid" time="0.02"/></proof> - <proof prover="2"><result status="valid" time="0.01"/></proof> - <proof prover="3"><result status="valid" time="0.06"/></proof> + <proof prover="2" obsolete="true"><result status="valid" time="0.06"/></proof> + <proof prover="3" obsolete="true"><result status="valid" time="0.01"/></proof> <proof prover="4"><result status="valid" time="0.02"/></proof> - <proof prover="5"><result status="valid" time="0.04"/></proof> - <proof prover="6"><result status="valid" time="0.00"/></proof> + <proof prover="5" obsolete="true"><result status="valid" time="0.04"/></proof> + <proof prover="7"><result status="valid" time="0.00"/></proof> </goal> <goal name="WP_parameter hanoi_rec.10" expl="10. precondition"> - <proof prover="0"><result status="valid" time="0.01"/></proof> + <proof prover="0" obsolete="true"><result status="valid" time="0.01"/></proof> <proof prover="1"><result status="valid" time="0.02"/></proof> - <proof prover="2"><result status="valid" time="0.02"/></proof> - <proof prover="3"><result status="valid" time="0.00"/></proof> + <proof prover="2" obsolete="true"><result status="valid" time="0.00"/></proof> + <proof prover="3" obsolete="true"><result status="valid" time="0.02"/></proof> <proof prover="4"><result status="valid" time="0.03"/></proof> - <proof prover="5"><result status="valid" time="0.04"/></proof> - <proof prover="6"><result status="valid" time="0.00"/></proof> + <proof prover="5" obsolete="true"><result status="valid" time="0.04"/></proof> + <proof prover="7"><result status="valid" time="0.00"/></proof> </goal> <goal name="WP_parameter hanoi_rec.11" expl="11. precondition"> <proof prover="1"><result status="valid" time="0.24"/></proof> - <proof prover="3"><result status="valid" time="0.00"/></proof> - <proof prover="5"><result status="valid" time="0.07"/></proof> - <proof prover="6"><result status="valid" time="0.05"/></proof> + <proof prover="2" obsolete="true"><result status="valid" time="0.00"/></proof> + <proof prover="5" obsolete="true"><result status="valid" time="0.07"/></proof> + <proof prover="7"><result status="valid" time="0.05"/></proof> </goal> <goal name="WP_parameter hanoi_rec.12" expl="12. precondition"> <proof prover="1"><result status="valid" time="0.26"/></proof> - <proof prover="3"><result status="valid" time="0.30"/></proof> - <proof prover="6"><result status="valid" time="1.82"/></proof> + <proof prover="2" obsolete="true"><result status="valid" time="0.30"/></proof> + <proof prover="7"><result status="valid" time="1.82"/></proof> </goal> <goal name="WP_parameter hanoi_rec.13" expl="13. postcondition"> - <proof prover="0"><result status="valid" time="0.01"/></proof> + <proof prover="0" obsolete="true"><result status="valid" time="0.01"/></proof> <proof prover="1"><result status="valid" time="0.02"/></proof> - <proof prover="2"><result status="valid" time="0.02"/></proof> - <proof prover="3"><result status="valid" time="0.00"/></proof> + <proof prover="2" obsolete="true"><result status="valid" time="0.00"/></proof> + <proof prover="3" obsolete="true"><result status="valid" time="0.02"/></proof> <proof prover="4"><result status="valid" time="0.03"/></proof> - <proof prover="5"><result status="valid" time="0.04"/></proof> - <proof prover="6"><result status="valid" time="0.00"/></proof> + <proof prover="5" obsolete="true"><result status="valid" time="0.04"/></proof> + <proof prover="7"><result status="valid" time="0.00"/></proof> </goal> <goal name="WP_parameter hanoi_rec.14" expl="14. postcondition"> <proof prover="1"><result status="valid" time="0.28"/></proof> - <proof prover="2"><result status="valid" time="0.02"/></proof> - <proof prover="3"><result status="valid" time="0.10"/></proof> + <proof prover="2" obsolete="true"><result status="valid" time="0.10"/></proof> + <proof prover="3" obsolete="true"><result status="valid" time="0.02"/></proof> <proof prover="4"><result status="valid" time="0.05"/></proof> - <proof prover="5"><result status="valid" time="0.81"/></proof> - <proof prover="6"><result status="valid" time="0.44"/></proof> + <proof prover="5" obsolete="true"><result status="valid" time="0.81"/></proof> + <proof prover="7"><result status="valid" time="0.44"/></proof> </goal> <goal name="WP_parameter hanoi_rec.15" expl="15. postcondition"> - <proof prover="0"><result status="valid" time="0.02"/></proof> + <proof prover="0" obsolete="true"><result status="valid" time="0.02"/></proof> <proof prover="1"><result status="valid" time="0.02"/></proof> - <proof prover="2"><result status="valid" time="0.01"/></proof> - <proof prover="3"><result status="valid" time="0.00"/></proof> + <proof prover="2" obsolete="true"><result status="valid" time="0.00"/></proof> + <proof prover="3" obsolete="true"><result status="valid" time="0.01"/></proof> <proof prover="4"><result status="valid" time="0.03"/></proof> - <proof prover="5"><result status="valid" time="0.05"/></proof> - <proof prover="6"><result status="valid" time="0.00"/></proof> + <proof prover="5" obsolete="true"><result status="valid" time="0.05"/></proof> + <proof prover="7"><result status="valid" time="0.00"/></proof> </goal> <goal name="WP_parameter hanoi_rec.16" expl="16. unreachable point"> - <proof prover="0"><result status="valid" time="0.01"/></proof> + <proof prover="0" obsolete="true"><result status="valid" time="0.01"/></proof> <proof prover="1"><result status="valid" time="0.01"/></proof> - <proof prover="2"><result status="valid" time="0.01"/></proof> + <proof prover="3" obsolete="true"><result status="valid" time="0.01"/></proof> <proof prover="4"><result status="valid" time="0.03"/></proof> </goal> <goal name="WP_parameter hanoi_rec.17" expl="17. postcondition"> - <proof prover="0"><result status="valid" time="0.03"/></proof> - <proof prover="2"><result status="valid" time="0.05"/></proof> - <proof prover="3"><result status="valid" time="0.04"/></proof> - <proof prover="5"><result status="valid" time="0.06"/></proof> - <proof prover="6"><result status="valid" time="0.00"/></proof> + <proof prover="0" obsolete="true"><result status="valid" time="0.03"/></proof> + <proof prover="2" obsolete="true"><result status="valid" time="0.04"/></proof> + <proof prover="3" obsolete="true"><result status="valid" time="0.05"/></proof> + <proof prover="5" obsolete="true"><result status="valid" time="0.06"/></proof> + <proof prover="7"><result status="valid" time="0.00"/></proof> </goal> <goal name="WP_parameter hanoi_rec.18" expl="18. postcondition"> - <proof prover="0"><result status="valid" time="0.02"/></proof> - <proof prover="2"><result status="valid" time="0.04"/></proof> - <proof prover="3"><result status="valid" time="0.03"/></proof> - <proof prover="5"><result status="valid" time="0.06"/></proof> - <proof prover="6"><result status="valid" time="0.01"/></proof> + <proof prover="0" obsolete="true"><result status="valid" time="0.02"/></proof> + <proof prover="2" obsolete="true"><result status="valid" time="0.03"/></proof> + <proof prover="3" obsolete="true"><result status="valid" time="0.04"/></proof> + <proof prover="5" obsolete="true"><result status="valid" time="0.06"/></proof> + <proof prover="7"><result status="valid" time="0.01"/></proof> </goal> </transf> </goal> <goal name="WP_parameter tower_of_hanoi" expl="VC for tower_of_hanoi"> <transf name="split_goal_wp"> <goal name="WP_parameter tower_of_hanoi.1" expl="1. precondition"> - <proof prover="0"><result status="valid" time="0.03"/></proof> + <proof prover="0" obsolete="true"><result status="valid" time="0.03"/></proof> <proof prover="1"><result status="valid" time="0.02"/></proof> - <proof prover="2"><result status="valid" time="0.03"/></proof> - <proof prover="3"><result status="valid" time="0.02"/></proof> + <proof prover="2" obsolete="true"><result status="valid" time="0.02"/></proof> + <proof prover="3" obsolete="true"><result status="valid" time="0.03"/></proof> <proof prover="4"><result status="valid" time="0.05"/></proof> - <proof prover="5"><result status="valid" time="0.03"/></proof> - <proof prover="6"><result status="valid" time="0.01"/></proof> + <proof prover="5" obsolete="true"><result status="valid" time="0.03"/></proof> + <proof prover="7"><result status="valid" time="0.01"/></proof> </goal> <goal name="WP_parameter tower_of_hanoi.2" expl="2. precondition"> - <proof prover="0"><result status="valid" time="0.02"/></proof> + <proof prover="0" obsolete="true"><result status="valid" time="0.02"/></proof> <proof prover="1"><result status="valid" time="0.12"/></proof> - <proof prover="2"><result status="valid" time="0.01"/></proof> - <proof prover="3"><result status="valid" time="0.02"/></proof> + <proof prover="2" obsolete="true"><result status="valid" time="0.02"/></proof> + <proof prover="3" obsolete="true"><result status="valid" time="0.01"/></proof> <proof prover="4"><result status="valid" time="0.03"/></proof> - <proof prover="5"><result status="valid" time="0.06"/></proof> - <proof prover="6"><result status="valid" time="0.00"/></proof> + <proof prover="5" obsolete="true"><result status="valid" time="0.06"/></proof> + <proof prover="7"><result status="valid" time="0.00"/></proof> </goal> <goal name="WP_parameter tower_of_hanoi.3" expl="3. precondition"> - <proof prover="0"><result status="valid" time="0.01"/></proof> + <proof prover="0" obsolete="true"><result status="valid" time="0.01"/></proof> <proof prover="1"><result status="valid" time="0.03"/></proof> - <proof prover="2"><result status="valid" time="0.02"/></proof> - <proof prover="3"><result status="valid" time="0.01"/></proof> + <proof prover="2" obsolete="true"><result status="valid" time="0.01"/></proof> + <proof prover="3" obsolete="true"><result status="valid" time="0.02"/></proof> <proof prover="4"><result status="valid" time="0.03"/></proof> - <proof prover="5"><result status="valid" time="0.03"/></proof> - <proof prover="6"><result status="valid" time="0.00"/></proof> + <proof prover="5" obsolete="true"><result status="valid" time="0.03"/></proof> + <proof prover="7"><result status="valid" time="0.00"/></proof> </goal> <goal name="WP_parameter tower_of_hanoi.4" expl="4. precondition"> - <proof prover="0"><result status="valid" time="0.01"/></proof> + <proof prover="0" obsolete="true"><result status="valid" time="0.01"/></proof> <proof prover="1"><result status="valid" time="0.02"/></proof> - <proof prover="2"><result status="valid" time="0.01"/></proof> - <proof prover="3"><result status="valid" time="0.01"/></proof> + <proof prover="2" obsolete="true"><result status="valid" time="0.01"/></proof> + <proof prover="3" obsolete="true"><result status="valid" time="0.01"/></proof> <proof prover="4"><result status="valid" time="0.03"/></proof> - <proof prover="5"><result status="valid" time="0.03"/></proof> - <proof prover="6"><result status="valid" time="0.00"/></proof> + <proof prover="5" obsolete="true"><result status="valid" time="0.03"/></proof> + <proof prover="7"><result status="valid" time="0.00"/></proof> </goal> <goal name="WP_parameter tower_of_hanoi.5" expl="5. postcondition"> - <proof prover="0"><result status="valid" time="0.01"/></proof> + <proof prover="0" obsolete="true"><result status="valid" time="0.01"/></proof> <proof prover="1"><result status="valid" time="0.02"/></proof> - <proof prover="2"><result status="valid" time="0.02"/></proof> - <proof prover="3"><result status="valid" time="0.00"/></proof> + <proof prover="2" obsolete="true"><result status="valid" time="0.00"/></proof> + <proof prover="3" obsolete="true"><result status="valid" time="0.02"/></proof> <proof prover="4"><result status="valid" time="0.03"/></proof> - <proof prover="5"><result status="valid" time="0.03"/></proof> - <proof prover="6"><result status="valid" time="0.00"/></proof> + <proof prover="5" obsolete="true"><result status="valid" time="0.03"/></proof> + <proof prover="7"><result status="valid" time="0.00"/></proof> </goal> <goal name="WP_parameter tower_of_hanoi.6" expl="6. postcondition"> - <proof prover="0"><result status="valid" time="0.01"/></proof> + <proof prover="0" obsolete="true"><result status="valid" time="0.01"/></proof> <proof prover="1"><result status="valid" time="0.03"/></proof> - <proof prover="2"><result status="valid" time="0.02"/></proof> - <proof prover="3"><result status="valid" time="0.01"/></proof> + <proof prover="2" obsolete="true"><result status="valid" time="0.01"/></proof> + <proof prover="3" obsolete="true"><result status="valid" time="0.02"/></proof> <proof prover="4"><result status="valid" time="0.03"/></proof> - <proof prover="5"><result status="valid" time="0.03"/></proof> - <proof prover="6"><result status="valid" time="0.01"/></proof> + <proof prover="5" obsolete="true"><result status="valid" time="0.03"/></proof> + <proof prover="7"><result status="valid" time="0.01"/></proof> </goal> </transf> </goal> diff --git a/examples/tower_of_hanoi/why3shapes.gz b/examples/tower_of_hanoi/why3shapes.gz index 788aff54d41f06e454fde9d5688d8f823d9d4f9e..d570ed9c4c0223ef64741105f19754751572911d 100644 GIT binary patch literal 2230 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 QFaO#71sF^}dNVKp06-mDIRF3v literal 2203 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 diff --git a/examples/unraveling_a_card_trick/why3session.xml b/examples/unraveling_a_card_trick/why3session.xml index bd6770d938..32a2c802e4 100644 --- a/examples/unraveling_a_card_trick/why3session.xml +++ b/examples/unraveling_a_card_trick/why3session.xml @@ -2,70 +2,68 @@ <!DOCTYPE why3session PUBLIC "-//Why3//proof session v5//EN" "http://why3.lri.fr/why3session.dtd"> <why3session shape_version="4"> -<prover id="0" name="CVC4" version="1.2" timelimit="5" memlimit="1000"/> -<prover id="1" name="Alt-Ergo" version="0.95.1" timelimit="5" memlimit="1000"/> -<prover id="2" name="CVC4" version="1.4" timelimit="6" memlimit="1000"/> -<prover id="3" name="Alt-Ergo" version="0.95.2" timelimit="6" memlimit="1000"/> +<prover id="0" name="CVC4" version="1.4" timelimit="6" memlimit="1000"/> +<prover id="1" name="Alt-Ergo" version="0.95.2" timelimit="5" memlimit="1000"/> <file name="../unraveling_a_card_trick.mlw"> -<theory name="GilbreathCardTrickPure" sum="9d040d8d9141fcf994350e81d3008ad1"> +<theory name="GilbreathCardTrickPure" sum="793897324c6b367f6f73306cc0d0d0b5"> <goal name="shuffle_nil_nil_nil"> - <proof prover="1" timelimit="10" memlimit="0"><result status="valid" time="0.00"/></proof> + <proof prover="1"><result status="valid" time="0.02"/></proof> </goal> <goal name="shuffle_sym"> <transf name="induction_pr"> <goal name="shuffle_sym.1" expl="1."> - <proof prover="3"><result status="valid" time="0.01"/></proof> + <proof prover="1" timelimit="6"><result status="valid" time="0.01"/></proof> </goal> <goal name="shuffle_sym.2" expl="2."> - <proof prover="3"><result status="valid" time="0.02"/></proof> + <proof prover="1" timelimit="6"><result status="valid" time="0.02"/></proof> </goal> <goal name="shuffle_sym.3" expl="3."> - <proof prover="3"><result status="valid" time="0.02"/></proof> + <proof prover="1" timelimit="6"><result status="valid" time="0.02"/></proof> </goal> <goal name="shuffle_sym.4" expl="4."> - <proof prover="3"><result status="valid" time="0.01"/></proof> + <proof prover="1" timelimit="6"><result status="valid" time="0.01"/></proof> </goal> </transf> </goal> <goal name="shuffle_length"> <transf name="induction_pr"> <goal name="shuffle_length.1" expl="1."> - <proof prover="2"><result status="valid" time="0.01"/></proof> - <proof prover="3"><result status="valid" time="0.02"/></proof> + <proof prover="0"><result status="valid" time="0.01"/></proof> + <proof prover="1" timelimit="6"><result status="valid" time="0.02"/></proof> </goal> <goal name="shuffle_length.2" expl="2."> - <proof prover="2"><result status="valid" time="0.02"/></proof> - <proof prover="3"><result status="valid" time="0.02"/></proof> + <proof prover="0"><result status="valid" time="0.02"/></proof> + <proof prover="1" timelimit="6"><result status="valid" time="0.02"/></proof> </goal> <goal name="shuffle_length.3" expl="3."> - <proof prover="2"><result status="valid" time="0.02"/></proof> + <proof prover="0"><result status="valid" time="0.02"/></proof> </goal> <goal name="shuffle_length.4" expl="4."> - <proof prover="2"><result status="valid" time="0.02"/></proof> + <proof prover="0"><result status="valid" time="0.02"/></proof> </goal> </transf> </goal> </theory> -<theory name="GilbreathCardTrick" sum="f0d0489a6b38d3973f41260f89409150"> +<theory name="GilbreathCardTrick" sum="b8144d8fe001d87398acff40a331b98f"> <goal name="WP_parameter shuffle" expl="VC for shuffle"> <transf name="split_goal_wp"> <goal name="WP_parameter shuffle.1" expl="1. loop invariant init"> - <proof prover="1"><result status="valid" time="0.02"/></proof> + <proof prover="1"><result status="valid" time="0.01"/></proof> </goal> <goal name="WP_parameter shuffle.2" expl="2. loop invariant init"> <proof prover="1"><result status="valid" time="0.01"/></proof> </goal> <goal name="WP_parameter shuffle.3" expl="3. loop invariant init"> - <proof prover="1"><result status="valid" time="0.02"/></proof> + <proof prover="1"><result status="valid" time="0.01"/></proof> </goal> <goal name="WP_parameter shuffle.4" expl="4. precondition"> - <proof prover="1"><result status="valid" time="0.01"/></proof> + <proof prover="1"><result status="valid" time="0.02"/></proof> </goal> <goal name="WP_parameter shuffle.5" expl="5. precondition"> - <proof prover="1"><result status="valid" time="0.01"/></proof> + <proof prover="1"><result status="valid" time="0.02"/></proof> </goal> <goal name="WP_parameter shuffle.6" expl="6. loop invariant preservation"> - <proof prover="1"><result status="valid" time="0.02"/></proof> + <proof prover="1"><result status="valid" time="0.01"/></proof> </goal> <goal name="WP_parameter shuffle.7" expl="7. loop invariant preservation"> <proof prover="1"><result status="valid" time="0.01"/></proof> @@ -80,34 +78,34 @@ <proof prover="1"><result status="valid" time="0.01"/></proof> </goal> <goal name="WP_parameter shuffle.11" expl="11. precondition"> - <proof prover="1"><result status="valid" time="0.02"/></proof> + <proof prover="1"><result status="valid" time="0.01"/></proof> </goal> <goal name="WP_parameter shuffle.12" expl="12. loop invariant preservation"> - <proof prover="1"><result status="valid" time="0.02"/></proof> + <proof prover="1"><result status="valid" time="0.01"/></proof> </goal> <goal name="WP_parameter shuffle.13" expl="13. loop invariant preservation"> <proof prover="1"><result status="valid" time="0.02"/></proof> </goal> <goal name="WP_parameter shuffle.14" expl="14. loop invariant preservation"> - <proof prover="1"><result status="valid" time="0.01"/></proof> + <proof prover="1"><result status="valid" time="0.00"/></proof> </goal> <goal name="WP_parameter shuffle.15" expl="15. loop variant decrease"> - <proof prover="1"><result status="valid" time="0.02"/></proof> + <proof prover="1"><result status="valid" time="0.01"/></proof> </goal> <goal name="WP_parameter shuffle.16" expl="16. precondition"> <proof prover="1"><result status="valid" time="0.01"/></proof> </goal> <goal name="WP_parameter shuffle.17" expl="17. precondition"> - <proof prover="1"><result status="valid" time="0.01"/></proof> + <proof prover="1"><result status="valid" time="0.02"/></proof> </goal> <goal name="WP_parameter shuffle.18" expl="18. loop invariant preservation"> - <proof prover="1"><result status="valid" time="0.02"/></proof> + <proof prover="1"><result status="valid" time="0.01"/></proof> </goal> <goal name="WP_parameter shuffle.19" expl="19. loop invariant preservation"> <proof prover="1"><result status="valid" time="0.02"/></proof> </goal> <goal name="WP_parameter shuffle.20" expl="20. loop invariant preservation"> - <proof prover="1"><result status="valid" time="0.00"/></proof> + <proof prover="1"><result status="valid" time="0.02"/></proof> </goal> <goal name="WP_parameter shuffle.21" expl="21. loop variant decrease"> <proof prover="1"><result status="valid" time="0.02"/></proof> @@ -125,34 +123,34 @@ <proof prover="1"><result status="valid" time="0.03"/></proof> </goal> <goal name="WP_parameter shuffle.26" expl="26. loop invariant preservation"> - <proof prover="1"><result status="valid" time="0.15"/></proof> + <proof prover="1"><result status="valid" time="0.05"/></proof> </goal> <goal name="WP_parameter shuffle.27" expl="27. loop variant decrease"> <proof prover="1"><result status="valid" time="0.01"/></proof> </goal> <goal name="WP_parameter shuffle.28" expl="28. postcondition"> - <proof prover="1"><result status="valid" time="0.11"/></proof> + <proof prover="1"><result status="valid" time="0.05"/></proof> </goal> <goal name="WP_parameter shuffle.29" expl="29. precondition"> <proof prover="1"><result status="valid" time="0.01"/></proof> </goal> <goal name="WP_parameter shuffle.30" expl="30. precondition"> - <proof prover="1"><result status="valid" time="0.02"/></proof> + <proof prover="1"><result status="valid" time="0.01"/></proof> </goal> <goal name="WP_parameter shuffle.31" expl="31. loop invariant preservation"> <proof prover="1"><result status="valid" time="0.03"/></proof> </goal> <goal name="WP_parameter shuffle.32" expl="32. loop invariant preservation"> - <proof prover="1"><result status="valid" time="0.02"/></proof> + <proof prover="1"><result status="valid" time="0.01"/></proof> </goal> <goal name="WP_parameter shuffle.33" expl="33. loop invariant preservation"> - <proof prover="1"><result status="valid" time="0.14"/></proof> + <proof prover="1"><result status="valid" time="0.16"/></proof> </goal> <goal name="WP_parameter shuffle.34" expl="34. loop variant decrease"> - <proof prover="1"><result status="valid" time="0.01"/></proof> + <proof prover="1"><result status="valid" time="0.02"/></proof> </goal> <goal name="WP_parameter shuffle.35" expl="35. precondition"> - <proof prover="1"><result status="valid" time="0.02"/></proof> + <proof prover="1"><result status="valid" time="0.01"/></proof> </goal> <goal name="WP_parameter shuffle.36" expl="36. precondition"> <proof prover="1"><result status="valid" time="0.02"/></proof> @@ -161,13 +159,13 @@ <proof prover="1"><result status="valid" time="0.03"/></proof> </goal> <goal name="WP_parameter shuffle.38" expl="38. loop invariant preservation"> - <proof prover="1"><result status="valid" time="0.01"/></proof> + <proof prover="1"><result status="valid" time="0.02"/></proof> </goal> <goal name="WP_parameter shuffle.39" expl="39. loop invariant preservation"> - <proof prover="1"><result status="valid" time="0.16"/></proof> + <proof prover="1"><result status="valid" time="0.07"/></proof> </goal> <goal name="WP_parameter shuffle.40" expl="40. loop variant decrease"> - <proof prover="1"><result status="valid" time="0.02"/></proof> + <proof prover="1"><result status="valid" time="0.01"/></proof> </goal> <goal name="WP_parameter shuffle.41" expl="41. precondition"> <proof prover="1"><result status="valid" time="0.02"/></proof> @@ -179,13 +177,13 @@ <proof prover="1"><result status="valid" time="0.02"/></proof> </goal> <goal name="WP_parameter shuffle.44" expl="44. loop invariant preservation"> - <proof prover="1"><result status="valid" time="0.04"/></proof> + <proof prover="1"><result status="valid" time="0.03"/></proof> </goal> <goal name="WP_parameter shuffle.45" expl="45. loop invariant preservation"> - <proof prover="1"><result status="valid" time="0.15"/></proof> + <proof prover="1"><result status="valid" time="0.05"/></proof> </goal> <goal name="WP_parameter shuffle.46" expl="46. loop variant decrease"> - <proof prover="1"><result status="valid" time="0.00"/></proof> + <proof prover="1"><result status="valid" time="0.02"/></proof> </goal> <goal name="WP_parameter shuffle.47" expl="47. precondition"> <proof prover="1"><result status="valid" time="0.02"/></proof> @@ -197,7 +195,7 @@ <proof prover="1"><result status="valid" time="0.02"/></proof> </goal> <goal name="WP_parameter shuffle.50" expl="50. loop invariant preservation"> - <proof prover="1"><result status="valid" time="0.02"/></proof> + <proof prover="1"><result status="valid" time="0.01"/></proof> </goal> <goal name="WP_parameter shuffle.51" expl="51. loop invariant preservation"> <proof prover="1"><result status="valid" time="0.01"/></proof> @@ -210,20 +208,20 @@ <goal name="WP_parameter card_trick" expl="VC for card_trick"> <transf name="split_goal_wp"> <goal name="WP_parameter card_trick.1" expl="1. assertion"> - <proof prover="1" timelimit="10" memlimit="0"><result status="valid" time="0.02"/></proof> + <proof prover="1"><result status="valid" time="0.01"/></proof> </goal> <goal name="WP_parameter card_trick.2" expl="2. postcondition"> <transf name="split_goal_wp"> <goal name="WP_parameter card_trick.2.1" expl="1."> - <proof prover="1" timelimit="10" memlimit="0"><result status="valid" time="0.02"/></proof> + <proof prover="1"><result status="valid" time="0.02"/></proof> </goal> <goal name="WP_parameter card_trick.2.2" expl="2."> - <proof prover="0"><result status="valid" time="0.04"/></proof> + <proof prover="0" timelimit="5"><result status="valid" time="0.04"/></proof> </goal> </transf> </goal> <goal name="WP_parameter card_trick.3" expl="3. loop invariant init"> - <proof prover="1" timelimit="10" memlimit="0"><result status="valid" time="0.02"/></proof> + <proof prover="1"><result status="valid" time="0.02"/></proof> </goal> <goal name="WP_parameter card_trick.4" expl="4. precondition"> <proof prover="1"><result status="valid" time="0.02"/></proof> @@ -231,26 +229,26 @@ <goal name="WP_parameter card_trick.5" expl="5. loop invariant preservation"> <transf name="split_goal_wp"> <goal name="WP_parameter card_trick.5.1" expl="1."> - <proof prover="1" timelimit="10" memlimit="0"><result status="valid" time="0.05"/></proof> + <proof prover="1"><result status="valid" time="0.02"/></proof> </goal> <goal name="WP_parameter card_trick.5.2" expl="2."> - <proof prover="1" timelimit="10" memlimit="0"><result status="valid" time="0.01"/></proof> + <proof prover="1"><result status="valid" time="0.02"/></proof> </goal> <goal name="WP_parameter card_trick.5.3" expl="3."> - <proof prover="1" timelimit="10" memlimit="0"><result status="valid" time="0.01"/></proof> + <proof prover="1"><result status="valid" time="0.02"/></proof> </goal> </transf> </goal> <goal name="WP_parameter card_trick.6" expl="6. assertion"> - <proof prover="1" timelimit="10" memlimit="0"><result status="valid" time="0.01"/></proof> + <proof prover="1"><result status="valid" time="0.02"/></proof> </goal> <goal name="WP_parameter card_trick.7" expl="7. postcondition"> <transf name="split_goal_wp"> <goal name="WP_parameter card_trick.7.1" expl="1."> - <proof prover="1" timelimit="10" memlimit="0"><result status="valid" time="0.04"/></proof> + <proof prover="1"><result status="valid" time="0.02"/></proof> </goal> <goal name="WP_parameter card_trick.7.2" expl="2."> - <proof prover="1" timelimit="10" memlimit="0"><result status="valid" time="0.52"/></proof> + <proof prover="1"><result status="valid" time="0.54"/></proof> </goal> </transf> </goal> diff --git a/examples/unraveling_a_card_trick/why3shapes.gz b/examples/unraveling_a_card_trick/why3shapes.gz index cf41cceabe7ef35d4625e46e37ccdaf9f7631679..e59b20e78f2905e1c49646f7ac9fe9d44a83dad3 100644 GIT binary patch literal 3594 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 F0|4FrB6a`( literal 3581 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 diff --git a/examples/vstte10_aqueue/why3session.xml b/examples/vstte10_aqueue/why3session.xml index 96f1176c4f..8c163fa3e5 100644 --- a/examples/vstte10_aqueue/why3session.xml +++ b/examples/vstte10_aqueue/why3session.xml @@ -2,33 +2,33 @@ <!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.95.1" timelimit="20" memlimit="0"/> -<file name="../vstte10_aqueue.mlw"> -<theory name="AmortizedQueue" sum="b357314754b0898c4e610c0bb61806fb"> - <goal name="WP_parameter empty" expl="VC for empty"> - <proof prover="0"><result status="valid" time="0.02"/></proof> +<prover id="0" name="Alt-Ergo" version="0.95.2" timelimit="5" memlimit="1000"/> +<file name="../vstte10_aqueue.mlw" expanded="true"> +<theory name="AmortizedQueue" sum="60e0a38eed52550859b9a34330155b5a" expanded="true"> + <goal name="WP_parameter empty" expl="VC for empty" expanded="true"> + <proof prover="0"><result status="valid" time="0.01"/></proof> </goal> - <goal name="WP_parameter head" expl="VC for head"> - <proof prover="0"><result status="valid" time="0.12"/></proof> + <goal name="WP_parameter head" expl="VC for head" expanded="true"> + <proof prover="0"><result status="valid" time="0.03"/></proof> </goal> - <goal name="WP_parameter create" expl="VC for create"> - <proof prover="0"><result status="valid" time="0.06"/></proof> + <goal name="WP_parameter create" expl="VC for create" expanded="true"> + <proof prover="0"><result status="valid" time="0.02"/></proof> </goal> - <goal name="WP_parameter tail" expl="VC for tail"> - <transf name="split_goal_wp"> - <goal name="WP_parameter tail.1" expl="1. unreachable point"> + <goal name="WP_parameter tail" expl="VC for tail" expanded="true"> + <transf name="split_goal_wp" expanded="true"> + <goal name="WP_parameter tail.1" expl="1. unreachable point" expanded="true"> <proof prover="0"><result status="valid" time="0.02"/></proof> </goal> - <goal name="WP_parameter tail.2" expl="2. precondition"> + <goal name="WP_parameter tail.2" expl="2. precondition" expanded="true"> <proof prover="0"><result status="valid" time="0.02"/></proof> </goal> - <goal name="WP_parameter tail.3" expl="3. postcondition"> - <proof prover="0"><result status="valid" time="0.12"/></proof> + <goal name="WP_parameter tail.3" expl="3. postcondition" expanded="true"> + <proof prover="0"><result status="valid" time="0.05"/></proof> </goal> </transf> </goal> - <goal name="WP_parameter enqueue" expl="VC for enqueue"> - <proof prover="0"><result status="valid" time="0.04"/></proof> + <goal name="WP_parameter enqueue" expl="VC for enqueue" expanded="true"> + <proof prover="0"><result status="valid" time="0.02"/></proof> </goal> </theory> </file> diff --git a/examples/vstte10_aqueue/why3shapes.gz b/examples/vstte10_aqueue/why3shapes.gz index 8a8cc477c8953a5e860e0e51f33ffa5868e54553..9c4a657444023c456fdd1e1b204fed0ec2ff7978 100644 GIT binary patch delta 528 zcmbQuGLL0~WPNQwJD&!Z1c$+w6}wd?uWme`Icdw?^YcF^-kg0m$Ms@j`w_;U8GFBL z7zq?BC6<<PDJQyRE&6gY?UR?Hv*_)<+wxc6KCLVkmcQkD=OXvpZzaF(*1zM*a=!ch z@MFViM+N>?%|5EKktfbl^F)=(Q`Mixr1@LoPMqM|+?cYu+D_?w{r$t*O?+zi@^{x( z=(03RykIRo$-1#_2Io)K?FY11Ff49S@UCDJalEE2Ej@A4<z?T`6>j6YU^+`=bC#55 z?bUN@W0n|wE#v&4zPWvo0&~pf+K(SH-?G1%@qlTK_x6N1lYJgnv>ys>INriE$s<FG zW!s99E=~1^j~~fOw9ZgE!dhRS^*1|W%FcaJ)@)yIulw%);0RyzA>##{+xG2FJNWdc z>WP>$7sP-4fAoxL!P7NK&#v%Cv7P_>A-PP)W0LBsdAntg{*k!cwrY9qZP|*Pl@>xj zYWkM+e4C?_t*k4x_CkZH$lPmAT4q--_kG%yeam_G+k4sDW}dRl?WtRPWxoEYqf0vL zrOO`hW~)q}%P>D!|4RDG{<Qb}u2-YC-xKqbSW@wP>wFRYvxnwbu-ON`@Ty?ja`0-n z`v3Y@EgkbBl-#E;4ejm!>k^@>>15_sFz-LFo|So8>d8Zq$1DB*ZDLH``ZI#L&U|-# srts$DYnQam_*1sfI`XzNU(>ufF<uE}n|M~m{pDmac$FR>#lgS;0G!bS;{X5v delta 525 zcmbQoGMi<BWc|cNe6j%|90Cb10?TXHu`w<8*i>p??<aNo-kUV-E<WoY%ug17y|>t9 z^&yc!#)K;!O+q&`LRmaAbf;bUu}%AJ|FdtO_U!z~|MuGZ&)@ghKlxl;e>e1sS$TYa z|MCbC=P#dgMJ69Hs#vPpd}4X^C!NKb853rh7Vw;iH2waxrDi98{rrMk3-{kIW&a+- zX=Qk!_|>H1q|XMzpSbfHrw8-7ar#~Rz@srIX1&N4y*3|9W{Ix0kWC(rM&f>E%a+ZJ z-szG0>aEZN|1^GAKdT*SzaKrie5?G1;X%tASMm<-$@nwjg)L8{$W+y~lqRo9OLUbM z>bW)>-qL&57|0Q(c<g5J>-qI}7o9nK^_Jm^`0~B+P3mO<yyqKUWYm_QZ94sV^5l)P z7V3ZbfApNMYUSdVD={^Tluo{4(y4LcQLMgO^ZMJ(<L>g?c2?fndUs=wuBbYb{CPu{ zeA_?{ujBuY7F<+I30|`(W9Nxyne!j7^M1SWZfU-$^zx!}!i(j#U-yeo)fHZ-5?Ze_ zMTAv+!vTkcHP;V0<bQh@5xRHV>y<@G>PMxw|6Nk?Qs+$P=FP&b%i7W%iqdMoKKbuI zH$gT<L`jn`$02&PP~xdMlLU_`pRI51KGz!=x%tDQ$4}?{No78kRTIx#XTDoLQ+V_7 ol}p-Y{3%*!EqU9SZ_d0mG2RK=HkD-U{l&S_l5J{r6bAzX0LoqirT_o{ diff --git a/examples/vstte12_tree_reconstruction/why3session.xml b/examples/vstte12_tree_reconstruction/why3session.xml index dd8b0b506c..2b42a0f6e4 100644 --- a/examples/vstte12_tree_reconstruction/why3session.xml +++ b/examples/vstte12_tree_reconstruction/why3session.xml @@ -11,7 +11,7 @@ <prover id="6" name="CVC4" version="1.3" timelimit="1" memlimit="1000"/> <prover id="7" name="Vampire" version="0.6" timelimit="5" memlimit="1000"/> <file name="../vstte12_tree_reconstruction.mlw" expanded="true"> -<theory name="Tree" sum="25109fe9c6cd43b2c56ee1611a503620" expanded="true"> +<theory name="Tree" sum="25109fe9c6cd43b2c56ee1611a503620"> <goal name="depths_head"> <transf name="induction_ty_lex"> <goal name="depths_head.1" expl="1."> @@ -52,7 +52,7 @@ <proof prover="3" timelimit="6"><result status="valid" time="0.01"/></proof> </goal> </theory> -<theory name="TreeReconstruction" sum="72e7136ef4b42e8bd3fa18847614a9de" expanded="true"> +<theory name="TreeReconstruction" sum="72e7136ef4b42e8bd3fa18847614a9de"> <goal name="WP_parameter build_rec" expl="VC for build_rec"> <transf name="split_goal_wp"> <goal name="WP_parameter build_rec.1" expl="1. exceptional postcondition"> @@ -95,7 +95,7 @@ </transf> </goal> </theory> -<theory name="Harness" sum="91dbfa988a6710fbdefba084b963489e" expanded="true"> +<theory name="Harness" sum="91dbfa988a6710fbdefba084b963489e"> <goal name="WP_parameter harness" expl="VC for harness"> <transf name="split_goal_wp"> <goal name="WP_parameter harness.1" expl="1. postcondition"> @@ -110,7 +110,7 @@ <proof prover="0" edited="vstte12_tree_reconstruction_WP_Harness_WP_parameter_harness2_2.v"><result status="valid" time="1.17"/></proof> </goal> </theory> -<theory name="ZipperBasedTermination" sum="a41762623057620defacca59066772e8" expanded="true"> +<theory name="ZipperBasedTermination" sum="ecdbc871d09372b90b85380073efb0c7"> <goal name="WP_parameter tc" expl="VC for tc"> <transf name="split_goal_wp"> <goal name="WP_parameter tc.1" expl="1. variant decrease"> @@ -131,18 +131,18 @@ </transf> </goal> </theory> -<theory name="ZipperBased" sum="90a70bb2ac5f01f26c58982827eb9844" expanded="true"> +<theory name="ZipperBased" sum="635fff34f68f9bb192ecae9d6130e46e" expanded="true"> <goal name="forest_depths_append"> - <proof prover="0" edited="vstte12_tree_reconstruction_WP_ZipperBased_forest_depths_append_1.v"><result status="valid" time="1.10"/></proof> + <proof prover="0" edited="vstte12_tree_reconstruction_WP_ZipperBased_forest_depths_append_1.v" obsolete="true"><result status="valid" time="1.10"/></proof> </goal> <goal name="g_append"> - <proof prover="0" timelimit="20" edited="vstte12_tree_reconstruction_WP_ZipperBased_g_append_1.v"><result status="valid" time="1.59"/></proof> + <proof prover="0" timelimit="20" edited="vstte12_tree_reconstruction_WP_ZipperBased_g_append_1.v" obsolete="true"><result status="valid" time="1.59"/></proof> </goal> <goal name="right_nil"> - <proof prover="0" timelimit="29" edited="vstte12_tree_reconstruction_WP_ZipperBased_right_nil_1.v"><result status="valid" time="6.24"/></proof> + <proof prover="0" timelimit="29" edited="vstte12_tree_reconstruction_WP_ZipperBased_right_nil_1.v" obsolete="true"><result status="valid" time="6.24"/></proof> </goal> <goal name="main_lemma"> - <proof prover="0" timelimit="20" edited="vstte12_tree_reconstruction_WP_ZipperBased_main_lemma_1.v"><result status="valid" time="1.31"/></proof> + <proof prover="0" timelimit="20" edited="vstte12_tree_reconstruction_WP_ZipperBased_main_lemma_1.v" obsolete="true"><result status="valid" time="1.31"/></proof> </goal> <goal name="WP_parameter tc" expl="VC for tc"> <transf name="split_goal_wp"> @@ -165,11 +165,11 @@ </goal> <goal name="WP_parameter tc.5" expl="5. precondition"> <proof prover="1"><result status="valid" time="0.05"/></proof> - <proof prover="3"><result status="valid" time="4.59"/></proof> + <proof prover="3"><result status="valid" time="5.30"/></proof> <proof prover="5" memlimit="1000"><result status="valid" time="0.02"/></proof> </goal> <goal name="WP_parameter tc.6" expl="6. postcondition"> - <proof prover="1"><result status="valid" time="0.22"/></proof> + <proof prover="1"><result status="valid" time="0.39"/></proof> <proof prover="3"><result status="valid" time="0.71"/></proof> </goal> <goal name="WP_parameter tc.7" expl="7. exceptional postcondition"> @@ -224,11 +224,11 @@ <proof prover="5" memlimit="1000"><result status="valid" time="0.36"/></proof> </goal> <goal name="WP_parameter tc.18" expl="18. postcondition"> - <proof prover="1"><result status="valid" time="6.09"/></proof> + <proof prover="1"><result status="valid" time="7.72"/></proof> <proof prover="3"><result status="valid" time="0.79"/></proof> </goal> <goal name="WP_parameter tc.19" expl="19. exceptional postcondition"> - <proof prover="1"><result status="valid" time="3.34"/></proof> + <proof prover="1"><result status="valid" time="5.07"/></proof> <proof prover="3"><result status="valid" time="0.47"/></proof> </goal> <goal name="WP_parameter tc.20" expl="20. variant decrease"> diff --git a/examples/vstte12_tree_reconstruction/why3shapes.gz b/examples/vstte12_tree_reconstruction/why3shapes.gz index 1b966d1a932ac7250d7caa7f39b1f85f812674f4..979205e103e6ffda5def9a3a8fc190309369a88d 100644 GIT binary patch literal 3774 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 literal 3779 zcmb2|=3oGW|8HZW^Y82utUJH{#&bE52WKY82w5z5NVw9_*!*Sbh3tdbSqi>QM{@oC z*S6o9y+wO%nfb=KOW2sKCuzo|+0}hM`{I#^I8T%_&&fu1`8ixy)!uhK_9-hBes}-+ zZ~L(NpKA~E9Xi|oeg1BJ(>*)u#fyIa_;CKbY{{!{Q}tK9aGDrvlH<&&dNm+;D;M_< znK1L`r6P6u3;AZ<I_G0*dg)8vg)^l#S9`3bOqs9#Tv@j7^7e;k+hcaE({)=qr}o=} zl+ZIXyp>klrZ8KvrGL%3{5W5>^w-yS4y6U#ZEyVf_jLMO0gd`)otqV$_j9$ZF>p0w z+uHAS{LNzC8GE`6qi*nX$e!zGG)`Vo$J66kvoJ|ROmXImg9a?GbJuFE-0}HKIM1c( z{Oi2sdHbZ_&C=&Pzbnn9@NJ#eg@Y?kHaIZ$EoZ)Q?scMjQI3B}3QN|3<Ii)g-?zQ^ zFe~=l&1C{p6ysyuzC>1EGi4RO+_U-HGwB;|zKN<G?@ZFYYCQc+Kr`P1ONq5pFYdng zE7y7X$EDlZuN-{4dQE^?xnbxZZZV<jNt-T(IvlttC6)iydzaj<o%d_%{yp02{$0Aa z+%EHX;D`F82fgCu?M7xjdii?Rg+FhV?{*f`@0Zbh@LhAJSLnw6fTDGMSsF)<Ei4V6 zUDt1Qb@nRW)&|b0zA<aw6dibAFfD@XdC+26o~72t_EV-Ud^3+FGozQ){J`}cjOlkT zT)Qzl<Un2Z?=Ge=?_*abdN-uAbYDqwytpJO@lHNp<I#Cm?%(dtE^T?fEja1aNv|VJ ztZLPwUZt8D%_4K-?(Ufx+mxkj@`UT<{rmH?j-L(LUjEs4O@#j=jywD8uJXQ^SLj!I z<xNI)$fLLSgbME5JhtzV!^~Oo0aAY7Zc2H!zdt4a@csXPKh{0CwSRZB-`{<E*9CLF z^W(|A{-^rFY=wel>nE?yuy$PZb6cmw&n5ex$eZ-9{r@F9dq3aZSmx&7rHc$Uh8|tu zpmZ!oWG2U{5ZRsUPRV=j+V%f~-Ja;$KOcT7)>h1afBU16N1K@7o)ZZH#aSJCa$8pI zV$++|{A^Y1H_bTn8Sl;{Y>1b>*RK3Mdn)J2Wrt=dX7z9>ciMf}cVkV>rh~<6?LJqW zNmYOIJ<9&YY~y7D8n@=~irs7t&Dhk|qZGL2<0+wyv47QTcJaTL4^x_EH}%8L9>K-w z7r#Gyv{Gbp(@LRC-?L^M?h+IIjJQR3Hl)=TX@#{s5|v)~^VGe%w`bOh3Qdum?zAAr z#X!#4WLJe&p!=Q!{kEzz1fQSYW+N7P>A|<oaLLve-cLeSUDzu2H9xuI$sFg4Ubkkv zF6++TQr+dZGd<NJ>cHal;nJxtt~(aFh`h>j376IgEA!IRm5AGZFRp)H)cSiZtJbqE zU6QR6+52&kGxvgUE)Vt4rqX>{`)~Ot+7<=XE;F;=x<xIh^!Kl4KQ6gFc3LGoH)`jj z(++<;4nOWYn#!Bxwq@3aMaFvVSuXq=G|W{awJi;{`s6RU_=jEO#<Sw8D_ge(J_=7= zv_ZB(eX8Z8WfH<2Q-iLiGge<u-F&`)Z?AhwX}xW_n&9M=8>-HEHD{DI+>n~AS$Xni z;PdXZqGiUaJek3(3a>>j6S>G0#3U`hx5FTMbL8HcFaLhMaLp;^^`C|R@Bb_K{y2c+ zn{hzX=d?vzj^!=7xc**ilBiGT-qnkYeMNK6YpQaJX#C#%MEFb9)j1FLSZXe8)3K4C z%%#A%IfC^;R2W-|O2pZlIXknDt}vNo>a?DTIYsy6UcFPlq;!mYb7M@eYV%cz+6nyQ z67gu^4V4xuE>dm0+O=YdM3_1M+J|S)KKuT6TC&QSef7UTobTKA|K`iz@%59B%Fnx_ znEQKr?c~Gz54`jLvi)wx=iF!3a=sbcuHO0*J@Z0Si&c#B0rPm3_rK@GK3Q<qJod@5 zoAa%wU)$~2wDzXtrlr%Y8LxMqxpAUkt9^U6hYh317s-GN{Vc7ea#vrq`Lov4AItii zyzZOCFN@2suj^cXXFWgu`GSj&8{{jx|4nng%<#W<(mr?V87p-^EM4r_6t%U~b<tv$ zG;XD)g;G;ePX1QOoP6@7g}3FB8Tt9oZEMfWuDtL}QzLDCSxa);$}`8->DEhXExLE0 zEMQ;Otfcc-nlGD7D^)(ry&&kCq4m^YE`dF(B%QA<wP1I>xTv`9n1uNW*?E`5V?2*+ z>3&nB{ba`!;h-l{8?Oj$uxZwRvq}5S<H|<{vXZjrq;_myk<wB>x4Gu4Qk&w$Cwy!U zH#B#2T~%Q*nZ&s7!^Op)1MhFsUvbXzB)6hqg=j8gw4;#C`!!E^Ze?wXxWlb)yVu|6 z)XgazlQ=eRHDu{Zne$O<r&MoNxx4Ze{`se#x7V+ky!Ne7eWp2c8T(^1qw60FcV~xB z+RCPwG(}~b!gHwxg&RwZg34BZ*e0rfukTm>_xpy%QL_!a>+&|QwQ`)8WAWQbb(*7* z#k^<BKh6L2vRLxo)Ew8B+kbPNjIX=BQ*&XD$lOg<qVl0;Gj7XzA9kB`_(_c5S!H3F zp8+{`)26PSRZuQ`uTD$#e|i3FK4Ftj+0h?QAKn$P_C23fbo?H67wz^vMUlc2onu)# zBDy{vN}pxCBWGh*d!Cw6;+(?k_Y`K|cAfO%o`1~w^w|26nYNEN-F@W~^x7wRm7BwJ zp9guby!MtX)u`XAe~V|GNqUcEs8-~jJljPo6Y|w9eu-cF*Tnn5x269B;~%S<ivRES z|F5_%zf&-5*E;=xl3!o%{cm!${JPz|U9IlNrIpv2st(Bd%1*pfW>xRC!*+Rp=bII0 znLf&Hmk&-@&AeLk&!MgVj=R37_T0GaPyh3Tyj3;ZEAFNp@qGXOv+>jg4;ifNOLqVG zo|v*pU%LO-vq1aT0rfe*SDyJKZC$cu*4??WyPJdlPndKw`G)V3SzDeh)x5uJb>PG4 z>s;ogu?AgVnDlek*N)9=9C&$`EWJ5Hl%xHF!mPyB${>ft);8HEkslP~t$%UeVDN1( zi*KCuVX@tD>B$@yx_g}Jq!@qANw8{cc>4O9@;N1k$qEk9nPm&4zjP>^d0NQG&%}K8 zGl#Fh$zaDsBa;`aJstEXF>nTd6k$6vRcAxZ-Leyx4>s=L=X<i`Z{)>=rq#Fq&-uK1 z?gwrAUCHj+QHP_%S`TwL>fDoWX<k{RQhW2oyRg1Jv+p`C3%{H8+vQ*xv!v9m3olOc zvK;1RX+Pv8G|hAO_uHO#_ieJOPViKX^1Z^cdS{hq<=pfn=}o&{$UTe9`uAYxyvoHU zVH?}kBm+;GES_V+p?{;9$Ku<GDa_(Ry4goG1VT9Cf^;@`f8U~i>DgSrSD&OV#|Y-% zo8-Iwx3hPj%kM2|_L-i6e#?C$OZE6RoI3BIcVx}tYi$8n4_O`CJnzH~jb!NwFM}he z%@zu4UsmdT`Ioj2H}|rmOIBzcJ!X(~bgPB)(W@;_HinfhimE=)Ec`2T)uHbZPk#L= zS9})BT{~?te=WCiB=_Y_-?o&Wom8IOcW*-4h68TTr?hl=re@{yXmG9WpMPpzlOKD^ z_2bF*_uiU__wGE~Q11}G^#`Z>M`5>*!s|NbZxFFJ6r3v1l$q+mK663JThYm%?S9V? zo8M@)yul#!Oyr)v>+1{l9B_VcaS4k|CZ|Lv=ME>|1C!=xcxrFDTJ6y9`g29&4qLaF z6Ov2yCx@pertZ42W5t=c3!B`#^D-VPZ<!$&^+q(K(EHKlM#dl|hrQ;eqJA<{RxYXi zq%>P?-pYBLuMGs7)bqG%U#I-|nU_%CpJ>y0t@q6o)2XJ<T5`Pf7S)Pcbzkf|^yAT= zhqG8O6fl--V5ki!3Ab-B_I-7KzvY&rE3Prrv>N|yGB%Ak&UJxRg?B+|>w%NpY%@eJ zojEP<FZf*buZ6pm?8E0WxnC|nOfP1CeL?K`odZ^#@-bd*u4mmFdznsN+%aL@TfvtL zR)4aTdVjZEnPu98Efa&>3#{C||CSVFy|kBG`rqKx|A$>n40@srO=n+(By8&|G1`^- ze@3>L@~ea_+h|Rnkns6#8aBs1hkl;-iFa$o6AjZMkr+YqjDvv}i$fW`svX55AK7Og z(zz5Lqn^3Q-k&Asl+U+EM#6jTc0RnN@^*X4+0OKeeaF9?S<=K~solXUvm!)CxcPG6 zlpRm^h+I8i`6oqbg??O`|E<$&^Y_ayNGvgzyYii}{o99MM++*p{W%@Uylk)X&3QkK z)!4(kG*dcf1`2KHZu%10ujYI7#nInw%P($RXjRR6)z;F+V@|E1%{*Q96*n77`X=3Q zT)A`G^-S-QqtlN_#IJg1@9q<zpz|PG=jy9DjJ&D2&3^<MpXyvZA6NTdurs<ygDX<? z`JS??&Rg}41nt?rP-FceZ_$4f6FxNy?s)QlX6cG3@k1B(X{lMAcN8*RcRPIEzUeA| z)ZKl5Yn?y3qH^1%-t$W}ygWB;6$-heDgEA=Z)a^WL*k>w+Qy0hm#;nbza!C3k>%x$ zNr5>B-IqO@yY7LC_Vs<WdmjDYW3|65>v!D!qkgs9Hbtyew3v29cSVDQc89_74nMzZ zt9l}B7pvB<c^i14IgfvlSUck?VeM<PZY_2*iz;b0pSf&8^#uNX5`TE?ltQx%-)1jA zu_~Zs+0>Gqvu2rUZk6(5U_afI+rL+0_Qu0+xvO<HyZ4+^Kly9M4asDgqZi~lSZC{I zJU{eGCF7Rvwu3=mpRJvg)^uC`NUV~z{<<~JtIZz<X3DyMRok;@OP}}B($&ryit5sP zbpuz59a+6%!IQPRDQ8dX-h9qg`nGzO_~R9!TLt^J{avx9_j2mn%NB>020XvO9h2kX zaM7*rZMEWpVy(DIPNfgi_r&F$-FM-#RqmFBOGON|{dQV)?CR3+-4=4f?W)1|W54zv zI{tM{NPO>_tA@qPX5}Qf3HWH8xSAX$+H<>J|Bs7#Zd$s@?&z%M+xkzw%I9tCn{$?r zNh<ze+nsq0ra~sQy|ZSpccmJfd8-}NXcB#D#S9z4BT_K}x2FBs6>`_E(XKRcf5%Gu zJHB&e{kBYS3%I7n>v%O{a^JNI*~R&(hi5IfyXf}#{KvQV&qmcmZ>pXA<A;^8$@`!A m-Cy?V?zvw0!R%Y)`_e7fwd&)&KQGMw$6i>zn7Jc?fdK%=9AUu# diff --git a/theories/list.why b/theories/list.why index 4d2b998f60..91b8b41351 100644 --- a/theories/list.why +++ b/theories/list.why @@ -168,7 +168,7 @@ theory Append end lemma Append_assoc: - forall l1 l2 l3: list 'a. + forall l1 "induction" l2 l3: list 'a. l1 ++ (l2 ++ l3) = (l1 ++ l2) ++ l3 lemma Append_l_nil: @@ -178,12 +178,12 @@ theory Append use import int.Int lemma Append_length: - forall l1 l2: list 'a. length (l1 ++ l2) = length l1 + length l2 + forall l1 "induction" l2: list 'a. length (l1 ++ l2) = length l1 + length l2 use import Mem lemma mem_append: - forall x: 'a, l1 l2: list 'a. + forall x: 'a, l1 "induction" l2: list 'a. mem x (l1 ++ l2) <-> mem x l1 \/ mem x l2 lemma mem_decomp: @@ -204,7 +204,7 @@ theory NthLengthAppend i < length l1 -> nth i (l1 ++ l2) = nth i l1 lemma nth_append_2: - forall l1 l2: list 'a, i: int. + forall l1 "induction" l2: list 'a, i: int. length l1 <= i -> nth i (l1 ++ l2) = nth (i - length l1) l2 end @@ -229,6 +229,11 @@ theory Reverse forall l: list 'a, x: 'a. reverse (Cons x l) = reverse l ++ Cons x Nil + + lemma cons_reverse: + forall l: list 'a, x: 'a. + Cons x (reverse l) = reverse (l ++ Cons x Nil) + lemma reverse_reverse: forall l: list 'a. reverse (reverse l) = l @@ -259,24 +264,27 @@ theory RevAppend use import Append lemma rev_append_append_l: - forall r s t: list 'a. + forall r "induction" s t: list 'a. rev_append (r ++ s) t = rev_append s (rev_append r t) - lemma rev_append_append_r: - forall r s t: list 'a. - rev_append r (s ++ t) = rev_append (rev_append s r) t + use import int.Int use import Length lemma rev_append_length: - forall s t: list 'a. + forall s "induction" t: list 'a. length (rev_append s t) = length s + length t use import Reverse lemma rev_append_def: - forall r s: list 'a. rev_append r s = reverse r ++ s + forall r "induction" s: list 'a. rev_append r s = reverse r ++ s + + + lemma rev_append_append_r: + forall r s t: list 'a. + rev_append r (s ++ t) = rev_append (rev_append s r) t end @@ -302,6 +310,7 @@ theory Sorted type t predicate le t t + clone relations.Transitive with type t = t, predicate rel = le inductive sorted (l: list t) = | Sorted_Nil: @@ -321,7 +330,7 @@ theory Sorted use import Append lemma sorted_append: - forall l1 l2: list t. + forall l1 "induction" l2: list t. (sorted l1 /\ sorted l2 /\ (forall x y: t. mem x l1 -> mem y l2 -> le x y)) <-> sorted (l1 ++ l2) @@ -333,7 +342,7 @@ end theory SortedInt use import int.Int - clone export Sorted with type t = int, predicate le = (<=) + clone export Sorted with type t = int, predicate le = (<=), goal Transitive.Trans end @@ -341,12 +350,13 @@ theory RevSorted type t predicate le t t + clone import relations.Transitive with type t = t, predicate rel = le predicate ge (x y: t) = le y x use import List - clone Sorted as Incr with type t = t, predicate le = le - clone Sorted as Decr with type t = t, predicate le = ge + clone Sorted as Incr with type t = t, predicate le = le, goal Transitive.Trans + clone Sorted as Decr with type t = t, predicate le = ge, goal Transitive.Trans predicate compat (s t: list t) = match s, t with @@ -357,12 +367,12 @@ theory RevSorted use import RevAppend lemma rev_append_sorted_incr: - forall s t: list t. + forall s "induction" t: list t. Incr.sorted (rev_append s t) <-> Decr.sorted s /\ Incr.sorted t /\ compat s t lemma rev_append_sorted_decr: - forall s t: list t. + forall s "induction" t: list t. Decr.sorted (rev_append s t) <-> Incr.sorted s /\ Decr.sorted t /\ compat t s @@ -382,6 +392,8 @@ theory NumOcc end (** number of occurrences of [x] in [l] *) + lemma Num_Occ_Positive: forall x:'a, l: list 'a. num_occ x l >= 0 + use import Mem lemma Mem_Num_Occ : @@ -390,7 +402,7 @@ theory NumOcc use import Append lemma Append_Num_Occ : - forall x: 'a, l1 l2: list 'a. + forall x: 'a, l1 "induction" l2: list 'a. num_occ x (l1 ++ l2) = num_occ x l1 + num_occ x l2 use import Reverse @@ -472,7 +484,7 @@ theory Distinct use import Append lemma distinct_append: - forall l1 l2: list 'a. + forall l1 "induction" l2: list 'a. distinct l1 -> distinct l2 -> (forall x:'a. mem x l1 -> not (mem x l2)) -> distinct (l1 ++ l2) @@ -586,7 +598,6 @@ theory ListRich use export Append use export Reverse use export RevAppend - use export Sorted use export NumOcc use export Permut -- GitLab