From dd6cf3a5c5bd3c4501d4fa9363c5670a2ab7c213 Mon Sep 17 00:00:00 2001
From: Guillaume Petiot <guillaume.petiot@cea.fr>
Date: Fri, 22 Feb 2013 12:12:42 +0000
Subject: [PATCH] [e-acsl] article in progress

---
 .../e-acsl/doc/memory_model/article.pdf       | Bin 111672 -> 111682 bytes
 .../e-acsl/doc/memory_model/article.tex       |  10 +--
 .../experiments/Bsearch/bsearch.c             |  65 +++++++++++++++
 .../Bsearch/test_parameters_Bsearch.pl        |  29 +++++++
 .../memory_model/experiments/Bsort/bsort.c    |  50 ++++++++++++
 .../Bsort/test_parameters_bsort.pl            |  24 ++++++
 .../experiments/BubbleSort/bubblesort.c       |  44 ++++++++++
 .../experiments/BubbleSort/test_parameters.pl |  21 +++++
 .../memory_model/experiments/Merge/merge.c    |  63 ++++++++++++++
 .../Merge/test_parameters_Merge.pl            |  77 ++++++++++++++++++
 .../memory_model/experiments/fibonacci/fibo.c |  23 ++++++
 .../fibonacci/test_parameters_fibo.pl         |  19 +++++
 12 files changed, 418 insertions(+), 7 deletions(-)
 create mode 100644 src/plugins/e-acsl/doc/memory_model/experiments/Bsearch/bsearch.c
 create mode 100644 src/plugins/e-acsl/doc/memory_model/experiments/Bsearch/test_parameters_Bsearch.pl
 create mode 100644 src/plugins/e-acsl/doc/memory_model/experiments/Bsort/bsort.c
 create mode 100644 src/plugins/e-acsl/doc/memory_model/experiments/Bsort/test_parameters_bsort.pl
 create mode 100644 src/plugins/e-acsl/doc/memory_model/experiments/BubbleSort/bubblesort.c
 create mode 100644 src/plugins/e-acsl/doc/memory_model/experiments/BubbleSort/test_parameters.pl
 create mode 100644 src/plugins/e-acsl/doc/memory_model/experiments/Merge/merge.c
 create mode 100644 src/plugins/e-acsl/doc/memory_model/experiments/Merge/test_parameters_Merge.pl
 create mode 100644 src/plugins/e-acsl/doc/memory_model/experiments/fibonacci/fibo.c
 create mode 100644 src/plugins/e-acsl/doc/memory_model/experiments/fibonacci/test_parameters_fibo.pl

diff --git a/src/plugins/e-acsl/doc/memory_model/article.pdf b/src/plugins/e-acsl/doc/memory_model/article.pdf
index 720206c4d5bcd748d1d07a4975dd6fe038e610aa..b00f251e110513423e61ce008e590bc54554c3cb 100644
GIT binary patch
delta 6887
zcma)8c|28X+ioL-LZ%{Rh|KmH_S$=kWS%1=GL*5*84{_sD3l>(o}xA~&mlCBS!5m?
zk%&S{WvF*`zH`odTKoO|zO(+Z*W-Df`?|0Dy6$_`%rG|2Fvf(?tLdM;5h_VJW{W7W
zWu}j(JtB2xypQtpJI#;0ENIv{lJ+X?LiL7SSmhCBVfO{Uz{QXy=fEiW25J2GySfLx
zPIyhv;~!VP@t!wMu$eq5yt<>RI=~CeJ9pvPGtJS`2W`g{1YWGzUc8X0<tT!mb8eO`
z8&HEi)`E}LOesFD3H|=6pMOX2Fl9Wo5e~XOE})~Wy(m{g-2GlmW`7@(l5WVIIf-ny
z5v1{M=A8s7j$^BD);%3qs~cYIeFu+<Gz&|O%x{(Ji$UHEp9(2CyMC43c8zgQ)Jk{E
z!M0AaQK?e#0h=D`r68;3lSG+=1Bdrl?Ph>iR#F91kQ_S^$JoBHDfi$@;eiLZ=07?$
z+HH0}$xd%>Ah2nFQk;<I>jLY65aY3-DfyFmA2;t4E*uHAQkhl_a0e}uj)u1yF4OVl
zZ+5vjuuP4e#Ys?_BHJ^Onv>~ON7o|{2GcFp*DmVad}ZTG4AM<iI+tr_%JGD<aA&7m
z<YNT-Hs83iFElkmJ8Gw8{Nw0urr!N^7Yv^9*6Wm=qtvO@Y28)q2)ScH?P*Y^wr0k8
zx#_txsmpkzFInh+m#Huu%KX}E6RUNb;VhVZ7+?tIzr90=(h^l4qH*$KU5K_#{0?o$
zqRho><~1tKdo4^|Ef_yPdx}#k>@fto7l!h<{MdFLDJib+QZV44S9{6OX6xM7r!e{?
ztM10->n+r}>k&HHS=wy$smqTt(v=H*la;lMB9B)b&i+!)(4iLR_9}c(?+mL+pdiZ@
z!Sowu+by|LbB|C|SAwSAj`Lagr^D0X>$zI$<tvxtCLpu$p-t44^V%9|>&QZ5K<d<r
z)(1{Dz77HLw?&GM`=F$kco7Tsd52t1wuTvp%a={h>o0K3UTf@MDcP&8t-kITRyGn?
zqSwRT!t+>Qb4TnU{Mk$`>5ho`aR4_>CB9XbI+0s9*7b~X^N<eLj@;m`JcfQrez_+H
zzjFsm?th$C6q<EY&bHnBq^9F~NJV9TnZI(9gJdG-(MX$Z>)Ow4ndJjmxL80{%E8WU
zEH9Q+W$tfxn5x+OGi7V8v*ARUO+%Blm*eE)P*OR&mwv{TcLp};a0H#?32R$slT&gf
z!3Df~Jjjm8uPG6#kW%}`t?-(Lyn&CmMuc(-1Yhx52%45;mwx&lJR(}#pR1zo`Sr=W
zfUANV<0p9D%ylVq=M~CzTt4LzY!T9ut;!CheTjLi`Ew)q0+ZghOg3%li6knJv0ato
zkZrL5DjHO7Y3pUSXN01wg6;{`g{;rpC_WN3BFhMsawt-svq;HD2z8jgiq1t85}8F)
zm4>3alZ_|ObF8c|&av|Gt~8Bt@*E4981dowe!#v{+-x@|acii})UZuS#peZfVUaK%
zyXLo1k2}<IilP>nKXrDKWx&#o`1<Q%b0XZD8z})|Uz^@#`~OtrsxDe96^c0*xW~F*
zQ6w%0v2T7v*&-$Vqw7?MSvf!TYyyKVM=r++221t&a?#+5i@;``r%r4MS0YthSsBHK
z<P@B8>C<nw?b*TbITy(C6}fFX=R9!fidXBd%<R3NHdI_9D%qV+CtdeWI(S%oZIR{v
z)k(DkqFq}p@4{RDtMO{|9QL_sMH}xQrM-z0BXxc?&f7}4b#nErAby*hS(I7RvAU}}
zOwag#%1CLo*6LN>QXXa>D=waGEVJYh4(O=q-Y?l<%2~EyZz15Kl|((O^ZbzbM|Jnh
z1X1-zPA?ILw;gh&$KeSt!uP;ypG-0nc<VcLmpBfI@gK7jG*!rp1)0PL#^f9GncBl2
zFUVF$cFpOOP##pCAGE001WON}c_C&g;;)vFw6`YrYR{U(;X0-pM<5NheIq})Bcux-
zsRzg3F-lrWa!b|zOx3;+Ha0V&pyE6s@z5w;GxS_@$H1u{=5^dI9F`Le{HN^eqMRQ~
zRmr-F*B8eb52Yydu?n%*U1<F5dPBr7E=W)e?>-UTn6Zh{By;5I@D9C#VburEDxMF?
zZU-0oay)!5%q+$+T3!v?dEjUh0<NS69fY>I+DDl3_N|Ta+U>bnI}jT8t-Z`j+&VPA
z$(VIx%RTcJa-2<=#OAur(e5VU%lEtuR4bl<cN_F?M;Cyt+^U@Wb<E5kb5EYP6b&~h
z(F(SCA#Bn9g)+r1Y`nJYpm)=wapi;6rajTE>$|_o>PFr&7jZ52)vccr?>E_3DCadM
zx-2)xSxPuQ`)n_rck%o0O?eCkV-cNnMJ%LCA`y~OdO1TQj@f{j=anqIOQn<HY_E8K
zq}8{wNT1CYyO6WFDy8(6-D?$&6Yc_gOukVCi*Y+jzwVl(2rS3xDJ&H+B}mP~8**iR
zGop|3iyJ-Tm-iGE+l}_vz4FZ97}eb<GBz+)T@OHvSZtk#H8^7Ycr-LhzJ9y7FY|Ih
zC;$5l_xNfO3*B~lrO<}Lgy(yvUKH#wC=AXI&$2goa?s;kgn}tAvQf<A?%BZhP%~j5
z$m)V@jKA>quas>6XVF(yvu}KrG}J6$jPw`zc0|Zh=b-+yaZG#RiN&GwCr+mttc`js
z;Odl*3at1K-?;srqk<%%e)meDpTEn|SdEH7L8mSH`9rl0$i0HN4L?b~R;9dDHLr$E
zMog`fOV*sPvZndOt~A7rmb>xM<+1xnvzlZqT9s~(Nl&$)SREr)?BNA^Tk&bjD%Y~@
zRVe&HR~henHw{x|?#s`o*9dRq(O<RU>}AN(8o#c;PlCsKWt3D?nKWs-M(rmRN@>lF
z_6YJst{pV|@!@nQc+Qcx>ymAcuf4u=j7)X@sP-|0?9CuCNo_i#LTzzzlOog&N`=k_
z*(zif=dajNp6ez51d4WP7v-HBiMKm(@xW(Z>%^<-l}9uJj)sDM{1+D!&rlofV`2^+
zd7v&ZFY2G7t1dFr^Wf*flG!%mXiLpzjYIoy5F8J!iymXW7qYX&J-lV(^SQuT)<L(b
zVK{2sr}*59&Nq55BxPC>?=9O+_-1_H%eGZ%IM2DH>}kJlrr#Z7gRq>%uVNYD43UlF
zN+uBv!pqNQ=X+gaL=(<;XQ`IMI*K2MH08|f%iJcXaFb~g$;j!&Z(`Z63Pbnvh@PSg
znNCo+=`a=By+x8TPsyBIJJGJ;U*17qw7bKBv=Fr=dh}S8+29@NrwTWE7Z!EoTQlCj
z+_`gxul1#ji@crML*(|0Ac<4?dKLtox{e}3QO#D<H>q5CBjtAVQHJjLkg}eLX!}iX
zzRE9qI~ps6n<pBzG)*&v<*I*~;@tXi-~EfC()L!+lp^5O7VF2d6UQAJ!{Wr-D0znK
zr91B?Uzb+dZ)V?roOr<E&R!YI#tKl5O>%u36lDvG0;eY>*VVXwxHl#(kfv@Tm8|8b
z<HL{poh;{R+x;n__^~;?YqF?GK>WQOhi=iC(&I8MZ^{wQxb<6mrJpo8^3sgS%fR)Z
z1v{npOi0J4g(k1yq$MBsVBedTx44<K)Yt+HGfhlvxffqkj%#PG4({?lFz=S1LTNjk
z(y1%9`I}MeEENvdzYFU5fP0JHFXha65`PqHUYayu*<R~$OZN_L;cilujJbo}KA-em
zc&lr=QzL#S!xtMWD;OTWZvHYR>Ky2iy#3xo>BNh?UPt_&@^4qNmP{&dE6IItIGAZZ
zXvw^M=F+QsElK%7h7}KI9!`GBX}Gh8Qrlfnbmo+HN{`6w`8-aY8Q=UUs#s7E`Ez&k
zt9Ksyk=G?MeR5rArZ=|<o1KBj>3xn62-n&@@KP;ZVFe6JkuHuoA;nt;A0%YZOH@@c
zkLQCi_G4w-{mxze$y3}G1qES~SDu{br(2GH;`!ZVF71wcuk`cyrGdJqL<TL+35st7
zM{uv>gKNAaT=#$W@b~YodVWb44yeE%w;mYrUhGk!R_hm6*Vwl`2(LMv$2VBhrdaZc
z<@)|_POWzny0(;>2igT`@>y)pNm1@kLiU6!rXE!+Hie|W951Z*7B+F2_b|(<>5%+#
zV77N45pHgNy8e|Z+|;vHYPu;Gn9ZjI#OUkou4B->$zyij_45|S)gHY}kD%A@>BGw|
z1GYdu|J=6qnDRU6+v0ie`CG)gRcCIfhmMGk^xl<{nHI8=OEumqk!ep?J0M_UkbLNd
zP_MODzo3gCYa+wK1>D5&E{^htzVElX=dWqVB)AC5J@Sx~`0RJK=GokZ#lgIyLP}~u
zcnbR<-Y67-J{{XxQ=%azTrgX^WVPk_TWwh=Prf}Z>4}dKBZ*K@RMo}RYHr=Wf8DU~
z#@z7S>r7x%?&qZrcKxtbQPcVwuhqI(!)qoEB@;76t3+kxA(_nt{N>zXr_tG_w5+ph
zIiK#<H=KA&sx?8{j@|ZQ_LkWa`Qwm~TKC*1@5m=P;|HfD3LbcPe6OS)NFjZz8SNK7
z9BI4SNuT`kp`!BIz8`DK8(J+Bjvfv^zTS?u?kwmpPdgVD5D>x({rUkR0I}lowp4S<
z85Irah;(S<WEZoP7n!b=V@CSw_#!Os8EP6(CmttkEu|+No!n;W1&?{}nhv&b-|J4|
zzg|6Ys!;H?c47QGb4#zM@GUR6FGc9wf~A5&pNmnE&%?#o*zpzn9n69!bh+=yedvx&
zc+n=I$n%BO=|ioCRySkC%`adF>(rD4g)F!(MV1a#9qeL`F%)s1=gb9y3$Bip5~e*u
z`93(jpxZ5~!MAC~C#xvQiPy7vK)Vx2269aLkX=#DD5$<|r}y@)qW>j1@jfH*JD2IN
zDupLkW>ZCFHzL*FITHkbcrI6dcHdTiG`YR!4X$V=L((pqD@j47S=v%Qz=hJzlonIf
zP`LMD<R?03vTmU5Psjj;^9H5EnM_CaJ8r$U%UPhRWuj{_|EzTg-!sm86G_Q+JX)gf
z$27N6mpeK`slZw3Xw3m!wEDp5=v<!Gr_Xn4iAq@sZiIH|5A^kN9wGGy9<9}_?W%KG
zZRbu=F_H?Lu>OAiR(*bAEycY@Fyv9QzjDB&)^2lGN;iFVcHFb0g;R9N-*t=i+@wR-
zo%aXpIz<No4ko$JO9!JrEao#!FE+m2^d@eE$7F6KGLJLWeq#4XnyBBC!~2oRQ%$>H
zYd0b9!mYh3w}nzUElGoculveuMQ4S~M+GmuZB$rmf4ARCgQCWlIF+T%iBRI_)@=H+
zwJ*Mv|2ZEV6;UF4=G7G|Nm63RZEvT0@M=;)IM6ZZ+ARH5aL=%7-fURDP_sR3QmE`Q
z#aR2LF7+p4c1x{%>@nwEbO;pU?_BNgj8jn9i`d!|9AP^rSvvxN$O3?)gDf6>WC<h^
z$%$l#5Fj#`I7G$Wm;X0A_X+vCyLtF1_`9D@^rGT;6SwBzm=m98;RIMfQ-GiVfC>OP
z5toev{`sz$jl1^mfV|JfX^H<UAo7XVsW{Ppb!+vl9Go5<69^Ch5Jk6`ixc?!WqTej
zoPrR9esO{q@(^PA^%uaChyeWi8Xf{5JPEso#}km>*8n^W0;s=#J%8PYo`vybnl%JZ
z{9}#s&y5I~_Art3e;fa~k3_~}F9h*q3>Y*pnT$ye4}l2rx8x`&R0sqSh~`4*f2_g3
zAO7PkfkXouBmo$<P-XxSn+SRwNaQQPaZ`SS^vA7a5DOg!NB|ZknMj5(k?<(nFcuLR
zAV64pU_65SSr^LR#UkVJL~LM)Ou&N}dWa;1gk6Kk0EjI#5kg>^T9E)ua%d3<Bm|+k
zkVwK~!4MDv2^$0g$q1HP2m(+IqE!A<i4aJ`0)#4pM8R&vgAg_d9wK5;qgRs=Jhmhd
z5u#Zmpbxf85JD#W6$AX!dw2qbM`*NwkZ9;9fQg(XI4;z@WbC~J0H!4p0kAg5!)O7q
z<U#~8ja6Y7q=f`Q$S*nlGSA=Afgp$m41}r?t3{MF5St^4nHDrez`6*J#{DOezv83z
zg^09$gMiRT0tN}Rnnfo7jZ9EyU_nDLNRtQzQy?0rK`>0)4`2d~bJ0T61V&jPVdVsn
z2((QMMxa0Tq51!pewawaqDH$hR*R@B@GzEs_!s{e50D86tv+D#Z|(gL{vntQV^O2i
z0*?&>kWdw3f`A|`gJ`3qaX1;R9X2_LfTs{>S_T16!Ul#=#r==KG=c*WGMT205CAew
zas=>CW_}x9C~RzYL_Dp6QN7aGj*J!=bCv|+X*xSZfPSC2zxanp#J}43-&#OOFztjS
zps+DPpkIv%vj&4CTIaw7nqdeN0fd4@O#p~Av=TsCfCLEsbN>HVz-Wv7r?-DO8~wl_
z(O8>62LBT9f9DoLB0*Sz5YgU))dG=>2e2%leUN5Gk?|0M?F(d7!N0GWq7winKv>bB
zjh%$0l}rM$bw{lTk+A?F<d4p7LPUta$NE)i<gdj4t~88Ngxv>&FjmI^o`@$UrdHq%
z94CU1I{K=qhKJNhct{0MS4D@kimDnyBqK1QdO-32-C@mg-~fw{udTPQzqg|k3;M-~
Oeyy;GiD?*Wvit{oM)U;$

delta 6457
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
H=%W7x<CT}l

diff --git a/src/plugins/e-acsl/doc/memory_model/article.tex b/src/plugins/e-acsl/doc/memory_model/article.tex
index 67e401ee44a..3f635e815f5 100644
--- a/src/plugins/e-acsl/doc/memory_model/article.tex
+++ b/src/plugins/e-acsl/doc/memory_model/article.tex
@@ -692,18 +692,14 @@ $ptr$ are initialized, 0 otherwise.
   \begin{tabular}{|c|c|c|c|c|c|c|}
     \hline
     & alarms & time & test cases & mutants & mutants killed \\
-    %\hline
-    %$p_1$ & 5 & 22s & 27 & 2 & 2 \\ % sorted
-    %\hline
-    %$p_2$ & 19 & 34s & 31 & 6 & 6 \\ % f
     \hline
     $fibonacci$ & 31 & 54s & 38 & 20 & 20 \\
     \hline
-    $Bsearch$ & 25 & 65s & 20 & 43 & 43 \\
+    $Bsearch$ & 28 & 63s & 20 & 41 & 41 \\
     \hline
-    $Bsort$ & 32 & 200s & 153 & 50 & 50 \\
+    $Bsort$ & 37 & 273s & 153 & 45 & 47 \\
     \hline
-    $Merge$ & 52 & 106s & 19 & 63 & 63 \\
+    $Merge$ & 55 & 100s & 19 & 58 & 58 \\
     \hline
     $BubbleSort$ & 31 & 963s & 873 & 44 & 44 \\
     \hline
diff --git a/src/plugins/e-acsl/doc/memory_model/experiments/Bsearch/bsearch.c b/src/plugins/e-acsl/doc/memory_model/experiments/Bsearch/bsearch.c
new file mode 100644
index 00000000000..12938539bbf
--- /dev/null
+++ b/src/plugins/e-acsl/doc/memory_model/experiments/Bsearch/bsearch.c
@@ -0,0 +1,65 @@
+/* run.config
+   COMMENT: BsearchPrecond
+   OPT: -pc -pc-trace -pc-tests -kernel-debug 0 -verbose 0 -pc-deter -pc-trace-preconds -pc-trace-simpred -pc-trace-result -main Bsearch
+*/
+/* Binary search of a given element in a given ordered array
+   returning 1 if the element is present and 0 if not.
+   This example is like Bsearch
+   but gives an example of 
+   a precondition coded in C */
+
+/*@ ensures (\exists int i; 0 <= i < 10 && A[i] == elem) <==> \result;
+  @*/
+int Bsearch( int A[10], int elem)
+{
+  int low, high, mid, found ;
+  
+  low = 0 ;
+  high = 9 ;
+  found = 0 ;
+  while( ( high > low ) )
+    { 
+      //@ assert high > low;
+      mid = (low + high) / 2 ;
+      //@ assert mid == (low+high) / 2;
+      if( elem == A[mid] )  {
+	//@ assert elem == A[mid];
+	found = 1;
+	//@ assert found == 1;
+      }
+      if( elem > A[mid] ) {
+	//@ assert elem > A[mid];
+        low = mid + 1 ;
+	//@ assert low == mid + 1;
+      }
+      else {
+	//@ assert elem <= A[mid];
+        high = mid - 1;
+	//@ assert high == mid - 1;
+      }
+    }  
+  //@ assert high <= low;
+  mid = (low + high) / 2 ;
+  //@ assert mid == (low+high) / 2;
+  
+  if( ( found != 1)  && ( elem == A[mid]) ) {
+    //@ assert found != 1 && elem == A[mid];
+    found = 1; 
+    //@ assert found == 1;
+  }
+  
+  return found ;
+}
+
+/* C precondition of function Bsearch
+   This must have the name of the tested function suffixed with _precond
+   and have the same number of arguments with the same types.
+   It must return 1 if the parameter values satisfy the precondition and 0 if not */
+int Bsearch_precond( int A[10], int elem) {
+  int i;
+  for (i = 0; i < 9; i++){
+    if (A[i]>A[i+1])
+      return 0 ;             /* not ordered by increasing value */
+  }
+  return 1;
+}
diff --git a/src/plugins/e-acsl/doc/memory_model/experiments/Bsearch/test_parameters_Bsearch.pl b/src/plugins/e-acsl/doc/memory_model/experiments/Bsearch/test_parameters_Bsearch.pl
new file mode 100644
index 00000000000..a06b2298d3a
--- /dev/null
+++ b/src/plugins/e-acsl/doc/memory_model/experiments/Bsearch/test_parameters_Bsearch.pl
@@ -0,0 +1,29 @@
+:- module(test_parameters).
+
+:- import create_input_val/3 from substitution.
+
+:- export dom/4.
+:- export create_input_vals/2.
+:- export unquantif_preconds/2.
+:- export quantif_preconds/2.
+:- export strategy/2.
+:- export precondition_of/2.
+
+dom('Bsearch',cont('A',_),[],int([0..100])).
+dom('pathcrawler__Bsearch_precond',A,B,C):-
+  dom('Bsearch',A,B,C).
+
+create_input_vals('Bsearch',Ins):-
+  create_input_val('elem',int([0..100]),Ins),
+  create_input_val(dim('A'),int([10]),Ins),
+  true.
+create_input_vals('Bsearch',Ins):-
+  create_input_vals('pathcrawler__Bsearch_precond',Ins).
+
+unquantif_preconds('Bsearch',[]).
+quantif_preconds('Bsearch',[]).
+
+strategy('Bsearch',[]).
+strategy('pathcrawler__Bsearch_precond',[]).
+
+precondition_of('Bsearch','pathcrawler__Bsearch_precond').
diff --git a/src/plugins/e-acsl/doc/memory_model/experiments/Bsort/bsort.c b/src/plugins/e-acsl/doc/memory_model/experiments/Bsort/bsort.c
new file mode 100644
index 00000000000..007fede5caf
--- /dev/null
+++ b/src/plugins/e-acsl/doc/memory_model/experiments/Bsort/bsort.c
@@ -0,0 +1,50 @@
+/* run.config
+   COMMENT: Bsort
+   OPT: -pc -pc-trace -pc-tests -kernel-debug 0 -verbose 0 -pc-deter -pc-trace-preconds -pc-trace-simpred -pc-trace-result -main bsort
+*/
+/* Bubble sort of a given array 'table' of a given length 'l' in descending order. This example is interesting because of its
+   - variable dimension input array
+   - loop with a variable number of iterations,
+     which is limited by limiting the array dimension
+   - oracle which does not sort but checks the result is ordered */
+
+/*@ ensures \forall int k; 0 <= k < l-1 ==> table[k] >= table[k+1];
+  @*/
+void bsort (int * table, int l) 
+{
+  int i, temp, nb;
+  char fini;
+  fini = 0;
+  nb = 0;
+  //@ assert l >= 0;
+  //@ assert fini == 0;
+  //@ assert nb == 0;
+  while ( !fini && (nb < l-1)){
+    //@ assert fini == 0;
+    //@ assert nb < l-1;
+    fini = 1;
+    //@ assert fini == 1;
+    for (i=0 ; i<l-1 ; )   {
+      //@ assert 0 <= i < l-1;
+      if (table[i] < table[i+1]){
+	//@ assert table[i] < table[i+1];
+	fini = 0;
+	//@ assert fini == 0;
+	temp = table[i];
+	//@ assert temp == table[i];
+	table[i] = table[i + 1];
+	//@ assert table[i] == table[i+1];
+	table[i + 1] = temp;
+	//@ assert table[i+1] == temp;
+      }
+      //@ ghost int old_i = i;
+      i++;
+      //@ assert old_i + 1 == i;
+    }
+    //@ assert i >= l-1;
+    //@ ghost int old_nb = nb;
+    nb++;
+    //@ assert old_nb + 1 == nb;
+  }
+  //@ assert fini == 1 || nb >= l-1;
+}
diff --git a/src/plugins/e-acsl/doc/memory_model/experiments/Bsort/test_parameters_bsort.pl b/src/plugins/e-acsl/doc/memory_model/experiments/Bsort/test_parameters_bsort.pl
new file mode 100644
index 00000000000..ad41d5bb9f4
--- /dev/null
+++ b/src/plugins/e-acsl/doc/memory_model/experiments/Bsort/test_parameters_bsort.pl
@@ -0,0 +1,24 @@
+:- module(test_parameters).
+
+:- import create_input_val/3 from substitution.
+
+:- export dom/4.
+:- export create_input_vals/2.
+:- export unquantif_preconds/2.
+:- export quantif_preconds/2.
+:- export strategy/2.
+:- export precondition_of/2.
+
+dom('bsort',cont('table',_),[],int([-100..100])).
+
+create_input_vals('bsort',Ins):-
+  create_input_val(dim('table'),int([0..5]),Ins),
+  create_input_val('l',int([0..5]),Ins),
+  true.
+
+unquantif_preconds('bsort',[cond(egal,dim('table'),'l',pre)]).
+quantif_preconds('bsort',[]).
+
+strategy('bsort',[]).
+
+precondition_of(0,0).
diff --git a/src/plugins/e-acsl/doc/memory_model/experiments/BubbleSort/bubblesort.c b/src/plugins/e-acsl/doc/memory_model/experiments/BubbleSort/bubblesort.c
new file mode 100644
index 00000000000..415b567a1d4
--- /dev/null
+++ b/src/plugins/e-acsl/doc/memory_model/experiments/BubbleSort/bubblesort.c
@@ -0,0 +1,44 @@
+
+/*@ ensures \forall int i; 0 <= i < length-1 ==> a[i] <= a[i+1];
+  @*/
+void bubble_sort(int* a, int length)
+{
+ int auf = 1;
+ int ab;
+ int fixed_auf = 1;
+ 
+
+ for (; auf < length; )  
+ {  
+   //@ assert auf < length;
+  fixed_auf = auf;
+  ab=auf;
+ 
+  while (0 < ab && a[ab] < a[ab-1])
+  {   
+    //@ assert 0 < ab;
+    //@ assert a[ab] < a[ab-1];
+    //@ ghost int old_1 = a[ab];
+    //@ ghost int old_2 = a[ab-1];
+    int temp = a[ab];
+    a[ab] = a[ab-1];
+    a[ab-1] = temp;
+
+    //@ assert old_1 == a[ab-1];
+    //@ assert old_2 == a[ab];
+ 
+    //@ ghost int old_ab = ab;
+    ab = ab-1;            
+    //@ assert old_ab - 1 == ab;
+  }
+  //@ assert 0 >= ab || a[ab] >= a[ab-1];
+
+ //@ ghost int old_auf = auf;
+ auf++;
+ //@ assert old_auf + 1 == auf;
+
+ fixed_auf = auf;
+ }
+ //@ assert auf >= length;
+}
+
diff --git a/src/plugins/e-acsl/doc/memory_model/experiments/BubbleSort/test_parameters.pl b/src/plugins/e-acsl/doc/memory_model/experiments/BubbleSort/test_parameters.pl
new file mode 100644
index 00000000000..0ae92b1c264
--- /dev/null
+++ b/src/plugins/e-acsl/doc/memory_model/experiments/BubbleSort/test_parameters.pl
@@ -0,0 +1,21 @@
+:- module(test_parameters).
+:- import create_input_val/3 from substitution.
+:- export dom/4.
+:- export create_input_vals/2.
+:- export unquantif_preconds/2.
+:- export quantif_preconds/2.
+:- export strategy/2.
+:- export precondition_of/2.
+
+dom('bubble_sort',cont('a',_),[],int([-20..20])).
+
+create_input_vals('bubble_sort',Ins):-
+  create_input_val(dim('a'),int([0..6]),Ins),
+  create_input_val('length',int([0..6]),Ins),
+  true.
+
+unquantif_preconds('bubble_sort',[cond(egal,dim('a'),'length',pre)]).
+
+quantif_preconds('bubble_sort',[]).
+strategy('bubble_sort',[]).
+precondition_of(0,0).
diff --git a/src/plugins/e-acsl/doc/memory_model/experiments/Merge/merge.c b/src/plugins/e-acsl/doc/memory_model/experiments/Merge/merge.c
new file mode 100644
index 00000000000..2787cc569d1
--- /dev/null
+++ b/src/plugins/e-acsl/doc/memory_model/experiments/Merge/merge.c
@@ -0,0 +1,63 @@
+/* run.config
+   OPT: -pc -pc-trace -pc-tests -kernel-debug 0 -verbose 0 -pc-deter -pc-trace-preconds -pc-trace-simpred -pc-trace-result -pc-k-path 2 -main Merge
+*/
+
+
+
+
+/*@ ensures \forall int i; 0 <= i < (l1+l2-1) ==> t3[i] <= t3[i+1];
+  @*/
+void Merge (int t1[], int t2[], int t3[], int l1, int l2) {
+  int i = 0;
+  int j = 0;
+  int k = 0;
+
+  while (i < l1 && j < l2) {
+    //@ assert i < l1;
+    //@ assert j < l2;
+    if (t1[i] < t2[j]) {
+      //@ assert t1[i] < t2[j];
+      t3[k] = t1[i];
+      //@ assert t3[k] == t1[i];
+      //@ ghost int tmp = i;
+      i++;
+      //@ assert tmp + 1 == i;
+    }
+    else {
+      //@ assert t1[i] >= t2[j];
+      t3[k] = t2[j];
+      //@ assert t3[k] == t2[j];
+      //@ ghost int tmp = j;
+      j++;
+      //@ assert tmp + 1 == j;
+    }
+    //@ ghost int tmp = k;
+    k++;
+    //@ assert tmp + 1 == k;
+  }
+  //@ assert i >= l1 || j >= l2;
+  while (i < l1) {
+    //@ assert i < l1;
+    t3[k] = t1[i];
+    //@ assert t3[k] == t1[i];
+    //@ ghost int tmp1 = i;
+    //@ ghost int tmp2 = k;
+    i++;
+    //@ assert tmp1 + 1 == i;
+    k++;
+    //@ assert tmp2 + 1 == k;
+  }
+  //@ assert i >= l1;
+  while (j < l2) {
+    //@ assert j < l2;
+    t3[k] = t2[j];
+    //@ assert t3[k] == t2[j];
+    //@ ghost int tmp1 = j;
+    //@ ghost int tmp2 = k;
+    j++;
+    //@ assert tmp1 + 1 == j;
+    k++;
+    //@ assert tmp2 + 1 == k;
+  }
+  //@ assert j >= l2;
+}
diff --git a/src/plugins/e-acsl/doc/memory_model/experiments/Merge/test_parameters_Merge.pl b/src/plugins/e-acsl/doc/memory_model/experiments/Merge/test_parameters_Merge.pl
new file mode 100644
index 00000000000..44c0551ba13
--- /dev/null
+++ b/src/plugins/e-acsl/doc/memory_model/experiments/Merge/test_parameters_Merge.pl
@@ -0,0 +1,77 @@
+:- module(test_parameters).
+
+:- import create_input_val/3 from substitution.
+
+:- export dom/4.
+:- export create_input_vals/2.
+:- export unquantif_preconds/2.
+:- export quantif_preconds/2.
+:- export strategy/2.
+:- export precondition_of/2.
+
+dom('Merge',cont('t1',_),[],int([-10..10])).
+dom('Merge',cont('t2',_),[],int([-10..10])).
+
+create_input_vals('Merge',Ins):-
+  create_input_val(dim('t1'),int([0..10]),Ins),
+  create_input_val(dim('t2'),int([0..10]),Ins),
+  create_input_val(dim('t3'),int([0..20]),Ins),
+  create_input_val('l1',int([0..10]),Ins),
+  create_input_val('l2',int([0..10]),Ins),
+  true.
+
+unquantif_preconds('Merge',
+                   [cond(supegal,dim('t1'),'l1',pre),
+                    cond(supegal,dim('t2'),'l2',pre),
+                    cond(supegal,dim('t3'),+(int(math),'l1','l2'),pre)]).
+quantif_preconds('Merge',[uq_cond([UQV3],
+             [cond(supegal,UQV3,1,pre)],
+             supegal,
+             cont('t1',UQV3),
+             cont('t1',-(int(math),UQV3,1))),
+      uq_cond([UQV4],
+              [cond(supegal,UQV4,1,pre)],
+              supegal,
+              cont('t2',UQV4),
+              cont('t2',-(int(math),UQV4,1)))]).
+
+strategy('Merge',[kpath(2)]).
+
+precondition_of(0,0).
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/plugins/e-acsl/doc/memory_model/experiments/fibonacci/fibo.c b/src/plugins/e-acsl/doc/memory_model/experiments/fibonacci/fibo.c
new file mode 100644
index 00000000000..7d841734de9
--- /dev/null
+++ b/src/plugins/e-acsl/doc/memory_model/experiments/fibonacci/fibo.c
@@ -0,0 +1,23 @@
+
+/*@ requires n >= 3;
+  @ ensures t[0] == 1;
+  @ ensures t[1] == 1;
+  @ ensures \forall int i; 2 <= i < n ==> t[i-2] + t[i-1] == t[i];
+  @*/
+void fibo(int *t, int n) {
+  int i;
+  t[0] = t[1] = 1;
+  //@ assert t[0] == 1;
+  //@ assert t[1] == 1;
+
+  //@ assert n >= 3;
+  for(i = 2; i < n; ) {
+    //@ assert 2 <= i < n;
+    t[i] = t[i-1] + t[i-2];
+    //@ assert t[i] == t[i-1] + t[i-2];
+    //@ ghost int old_i = i;
+    i++;
+    //@ assert old_i + 1 == i;
+  }
+  //@ assert i >= n;
+}
diff --git a/src/plugins/e-acsl/doc/memory_model/experiments/fibonacci/test_parameters_fibo.pl b/src/plugins/e-acsl/doc/memory_model/experiments/fibonacci/test_parameters_fibo.pl
new file mode 100644
index 00000000000..04fefca54bd
--- /dev/null
+++ b/src/plugins/e-acsl/doc/memory_model/experiments/fibonacci/test_parameters_fibo.pl
@@ -0,0 +1,19 @@
+:- module(test_parameters).
+:- import create_input_val/3 from substitution.
+:- export dom/4.
+:- export create_input_vals/2.
+:- export unquantif_preconds/2.
+:- export quantif_preconds/2.
+:- export strategy/2.
+:- export precondition_of/2.
+
+dom('fibo', cont('t',_), [], int([-10..10])).
+create_input_vals('fibo', Ins):-
+  create_input_val('n', int([3..40]),Ins),
+  create_input_val(dim('t'), int([3..40]),Ins),
+  true.
+
+quantif_preconds('fibo',[]).
+unquantif_preconds('fibo',[cond(egal,dim('t'),'n',pre)]).
+strategy('fibo',[]).
+precondition_of(0,0).
-- 
GitLab