* Experiment rgf
** Original
File "bench/check-ce/petiot2018/rgf.mlw", line 11, characters 16-33:
Sub-goal Variant decrease of goal max_rgf'vc.
Prover result is: Valid.

File "bench/check-ce/petiot2018/rgf.mlw", line 11, characters 16-33:
Sub-goal Precondition of goal max_rgf'vc.
Prover result is: Valid.

File "bench/check-ce/petiot2018/rgf.mlw", line 11, characters 16-33:
Sub-goal Precondition of goal max_rgf'vc.
Prover result is: Valid.

File "bench/check-ce/petiot2018/rgf.mlw", line 9, characters 36-45:
Sub-goal Postcondition of goal max_rgf'vc.
Prover result is: Valid.

File "bench/check-ce/petiot2018/rgf.mlw", line 19, characters 16-26:
Sub-goal Loop invariant init of goal g'vc.
Prover result is: Valid.

File "bench/check-ce/petiot2018/rgf.mlw", line 20, characters 41-58:
Sub-goal Loop invariant init of goal g'vc.
Prover result is: Valid.

File "bench/check-ce/petiot2018/rgf.mlw", line 21, characters 4-13:
Sub-goal Index in array bounds of goal g'vc.
Prover result is: Valid.

File "bench/check-ce/petiot2018/rgf.mlw", line 19, characters 16-26:
Sub-goal Loop invariant preservation of goal g'vc.
Prover result is: Valid.

File "bench/check-ce/petiot2018/rgf.mlw", line 20, characters 41-58:
Sub-goal Loop invariant preservation of goal g'vc.
Prover result is: Valid.

File "bench/check-ce/petiot2018/rgf.mlw", line 16, characters 37-54:
Sub-goal Postcondition of goal g'vc.
Prover result is: Valid.

File "bench/check-ce/petiot2018/rgf.mlw", line 17, characters 12-29:
Sub-goal Postcondition of goal g'vc.
Prover result is: Valid.

File bench/check-ce/petiot2018/rgf.mlw:
Sub-goal Out of loop bounds of goal g'vc.
Prover result is: Valid.

File "bench/check-ce/petiot2018/rgf.mlw", line 34, characters 16-39:
Sub-goal Loop invariant init of goal f'vc.
Prover result is: Valid.

File "bench/check-ce/petiot2018/rgf.mlw", line 36, characters 16-23:
Sub-goal Index in array bounds of goal f'vc.
Prover result is: Valid.

File "bench/check-ce/petiot2018/rgf.mlw", line 36, characters 7-12:
Sub-goal Index in array bounds of goal f'vc.
Prover result is: Valid.

File "bench/check-ce/petiot2018/rgf.mlw", line 27, characters 12-29:
Sub-goal Postcondition of goal f'vc.
Prover result is: Valid.

File "bench/check-ce/petiot2018/rgf.mlw", line 29, characters 4-105:
Sub-goal Postcondition of goal f'vc.
Prover result is: Valid.

File "bench/check-ce/petiot2018/rgf.mlw", line 40, characters 11-16:
Sub-goal Index in array bounds of goal f'vc.
Prover result is: Valid.

File "bench/check-ce/petiot2018/rgf.mlw", line 40, characters 2-20:
Sub-goal Index in array bounds of goal f'vc.
Prover result is: Valid.

File "bench/check-ce/petiot2018/rgf.mlw", line 41, characters 2-8:
Sub-goal Precondition of goal f'vc.
Prover result is: Valid.

File "bench/check-ce/petiot2018/rgf.mlw", line 41, characters 2-8:
Sub-goal Precondition of goal f'vc.
Prover result is: Valid.

File "bench/check-ce/petiot2018/rgf.mlw", line 42, characters 36-53:
Sub-goal Assertion of goal f'vc.
Prover result is: Valid.

File "bench/check-ce/petiot2018/rgf.mlw", line 27, characters 12-29:
Sub-goal Postcondition of goal f'vc.
Prover result is: Valid.

File "bench/check-ce/petiot2018/rgf.mlw", line 29, characters 4-105:
Sub-goal Postcondition of goal f'vc.
Prover result is: Valid.

File "bench/check-ce/petiot2018/rgf.mlw", line 35, characters 14-16:
Sub-goal Loop variant decrease of goal f'vc.
Prover result is: Valid.

File "bench/check-ce/petiot2018/rgf.mlw", line 34, characters 16-39:
Sub-goal Loop invariant preservation of goal f'vc.
Prover result is: Valid.

File "bench/check-ce/petiot2018/rgf.mlw", line 27, characters 12-29:
Sub-goal Postcondition of goal f'vc.
Prover result is: Valid.

File "bench/check-ce/petiot2018/rgf.mlw", line 29, characters 4-105:
Sub-goal Postcondition of goal f'vc.
Prover result is: Valid.

File "bench/check-ce/petiot2018/rgf.mlw", line 40, characters 11-16:
Sub-goal Index in array bounds of goal f'vc.
Prover result is: Valid.

File "bench/check-ce/petiot2018/rgf.mlw", line 40, characters 2-20:
Sub-goal Index in array bounds of goal f'vc.
Prover result is: Valid.

File "bench/check-ce/petiot2018/rgf.mlw", line 41, characters 2-8:
Sub-goal Precondition of goal f'vc.
Prover result is: Valid.

File "bench/check-ce/petiot2018/rgf.mlw", line 41, characters 2-8:
Sub-goal Precondition of goal f'vc.
Prover result is: Valid.

File "bench/check-ce/petiot2018/rgf.mlw", line 42, characters 36-53:
Sub-goal Assertion of goal f'vc.
Prover result is: Valid.

File "bench/check-ce/petiot2018/rgf.mlw", line 27, characters 12-29:
Sub-goal Postcondition of goal f'vc.
Prover result is: Valid.

File "bench/check-ce/petiot2018/rgf.mlw", line 29, characters 4-105:
Sub-goal Postcondition of goal f'vc.
Prover result is: Valid.

** rgf-R1
bin/why3 prove --library=bench/check-ce/petiot2018 bench/check-ce/petiot2018/experiments/rgf-R1.mlw --apply-transform=split_vc --prover=Z3,4.8.10,counterexamples --timelimit=15 --check-ce --rac-prover=Z3,4.8.10 --sub-goal=:41@precondition --stepslimit=500000
File "bench/check-ce/petiot2018/experiments/rgf-R1.mlw", line 41, characters 2-8:
Sub-goal Precondition of goal f'vc.
Prover result is: Valid.

File "bench/check-ce/petiot2018/experiments/rgf-R1.mlw", line 41, characters 2-8:
Sub-goal Precondition of goal f'vc.
Prover result is: Unknown (unknown).
The program does not comply to the verification goal, for example during the
  following execution:
File rgf-R1.mlw:
  Line 24:
    Execution of main function `f` with env:
      a = {length= 177; elts= [|175 -> 17869; 176 -> (-400); _ -> 5|]}
      zero = 0
      one = 1
  Line 32:
    Normal execution of function `length` with args:
      arg = {length= 177; elts= [|175 -> 17869; 176 -> (-400); _ -> 5|]}
    Normal execution of function `(-)` with args:
      x = 177
      y = 1
File int.mlw:
  Line 23:
    Normal execution of function `(-_)` with args:
      _ = 1
    Normal execution of function `(+)` with args:
      _ = 177
      _ = (-1)
File rgf-R1.mlw:
  Line 32:
    Normal execution of function `int_ref` with args:
      i = 176
File lib.mlw:
  Line 12:
    Normal execution of function `int_ref'mk` with args:
      contents = 176
File rgf-R1.mlw:
  Line 33:
    Normal execution of function `(!)` with args:
      r = {contents= 176}
File lib.mlw:
  Line 23:
    Normal execution of function `contents` with args:
      arg = {contents= 176}
File rgf-R1.mlw:
  Line 33:
    Normal execution of function `(>=)` with args:
      x = 176
      y = 1
    Normal iteration of loop
  Line 36:
    Normal execution of function `(!)` with args:
      r = {contents= 176}
File lib.mlw:
  Line 23:
    Normal execution of function `contents` with args:
      arg = {contents= 176}
File rgf-R1.mlw:
  Line 36:
    Normal execution of function `(-)` with args:
      x = 176
      y = 1
File int.mlw:
  Line 23:
    Normal execution of function `(-_)` with args:
      _ = 1
    Normal execution of function `(+)` with args:
      _ = 176
      _ = (-1)
File rgf-R1.mlw:
  Line 36:
    Normal execution of function `([])` with args:
      a = {length= 177; elts= [|175 -> 17869; 176 -> (-400); _ -> 5|]}
      i = 175
File lib.mlw:
  Line 43:
    Normal execution of function `elts` with args:
      arg = {length= 177; elts= [|175 -> 17869; 176 -> (-400); _ -> 5|]}
    Normal execution of function `(@)` with args:
      u = [|175 -> 17869; 176 -> (-400); _ -> 5|]
      u = 175
File rgf-R1.mlw:
  Line 36:
    Normal execution of function `(!)` with args:
      r = {contents= 176}
File lib.mlw:
  Line 23:
    Normal execution of function `contents` with args:
      arg = {contents= 176}
File rgf-R1.mlw:
  Line 36:
    Normal execution of function `([])` with args:
      a = {length= 177; elts= [|175 -> 17869; 176 -> (-400); _ -> 5|]}
      i = 176
File lib.mlw:
  Line 43:
    Normal execution of function `elts` with args:
      arg = {length= 177; elts= [|175 -> 17869; 176 -> (-400); _ -> 5|]}
    Normal execution of function `(@)` with args:
      u = [|175 -> 17869; 176 -> (-400); _ -> 5|]
      u = 176
File rgf-R1.mlw:
  Line 36:
    Normal execution of function `(<=)` with args:
      x = (-400)
      y = 17869
    Normal execution of function `Tuple0` with args:
Unknown location:
    Normal execution of function `Tuple0` with args:
File rgf-R1.mlw:
  Line 39:
    Normal execution of function `(!)` with args:
      r = {contents= 176}
File lib.mlw:
  Line 23:
    Normal execution of function `contents` with args:
      arg = {contents= 176}
File rgf-R1.mlw:
  Line 39:
    Normal execution of function `(=)` with args:
      x = 176
      y = 0
    Normal execution of function `Tuple0` with args:
  Line 40:
    Normal execution of function `(!)` with args:
      r = {contents= 176}
File lib.mlw:
  Line 23:
    Normal execution of function `contents` with args:
      arg = {contents= 176}
File rgf-R1.mlw:
  Line 40:
    Normal execution of function `([])` with args:
      a = {length= 177; elts= [|175 -> 17869; 176 -> (-400); _ -> 5|]}
      i = 176
File lib.mlw:
  Line 43:
    Normal execution of function `elts` with args:
      arg = {length= 177; elts= [|175 -> 17869; 176 -> (-400); _ -> 5|]}
    Normal execution of function `(@)` with args:
      u = [|175 -> 17869; 176 -> (-400); _ -> 5|]
      u = 176
File rgf-R1.mlw:
  Line 40:
    Normal execution of function `(+)` with args:
      _ = (-400)
      _ = 1
    Normal execution of function `(!)` with args:
      r = {contents= 176}
File lib.mlw:
  Line 23:
    Normal execution of function `contents` with args:
      arg = {contents= 176}
File rgf-R1.mlw:
  Line 40:
    Normal execution of function `([]<-)` with args:
      a = {length= 177; elts= [|175 -> 17869; 176 -> (-400); _ -> 5|]}
      i = 176
      v = (-399)
File lib.mlw:
  Line 48:
    Normal execution of function `elts` with args:
      arg = {length= 177; elts= [|175 -> 17869; 176 -> (-400); _ -> 5|]}
File rgf-R1.mlw:
  Line 41:
    Normal execution of function `(!)` with args:
      r = {contents= 176}
File lib.mlw:
  Line 23:
    Normal execution of function `contents` with args:
      arg = {contents= 176}
File rgf-R1.mlw:
  Line 41:
    Normal execution of function `g` with args:
      a = {length= 177;
           elts=
           (fun j -> if j = i then v
              else elts1 j) with i = 176, v = (-399), elts1 = [|175 -> 17869;
                                                              176 -> (-400); _ -> 5|]}
      i = 176
    Property failure at precondition of `g` with:
      a = {length= 177;
           elts=
           (fun j -> if j = i then v
              else elts1 j) with i = 176, v = (-399), elts1 = [|175 -> 17869;
                                                              176 -> (-400); _ -> 5|]}
      i = 176

File "bench/check-ce/petiot2018/experiments/rgf-R1.mlw", line 41, characters 2-8:
Sub-goal Precondition of goal f'vc.
Prover result is: Valid.

File "bench/check-ce/petiot2018/experiments/rgf-R1.mlw", line 41, characters 2-8:
Sub-goal Precondition of goal f'vc.
Prover result is: Valid.

** rgf-R4
bin/why3 prove --library=bench/check-ce/petiot2018 bench/check-ce/petiot2018/experiments/rgf-R4.mlw --apply-transform=split_vc --prover=Z3,4.8.10,counterexamples --timelimit=15 --check-ce --rac-prover=Z3,4.8.10 --sub-goal=:41@precondition --stepslimit=500000
File "bench/check-ce/petiot2018/experiments/rgf-R4.mlw", line 41, characters 2-8:
Sub-goal Precondition of goal f'vc.
Prover result is: Valid.

File "bench/check-ce/petiot2018/experiments/rgf-R4.mlw", line 41, characters 2-8:
Sub-goal Precondition of goal f'vc.
Prover result is: Unknown (unknown).
The program does not comply to the verification goal, for example during the
  following execution:
File rgf-R4.mlw:
  Line 24:
    Execution of main function `f` with env:
      a = {length= 3;
           elts=
           [|(-8907) -> 29686; (-2336) -> 26730; 0 -> 0; 1 -> 1;
           2 -> 1; _ -> 29|]}
      zero = 0
      one = 1
  Line 32:
    Normal execution of function `length` with args:
      arg = {length= 3;
             elts=
             [|(-8907) -> 29686; (-2336) -> 26730; 0 -> 0; 1 -> 1;
             2 -> 1; _ -> 29|]}
    Normal execution of function `(-)` with args:
      x = 3
      y = 1
File int.mlw:
  Line 23:
    Normal execution of function `(-_)` with args:
      _ = 1
    Normal execution of function `(+)` with args:
      _ = 3
      _ = (-1)
File rgf-R4.mlw:
  Line 32:
    Normal execution of function `int_ref` with args:
      i = 2
File lib.mlw:
  Line 12:
    Normal execution of function `int_ref'mk` with args:
      contents = 2
File rgf-R4.mlw:
  Line 33:
    Normal execution of function `(!)` with args:
      r = {contents= 2}
File lib.mlw:
  Line 23:
    Normal execution of function `contents` with args:
      arg = {contents= 2}
File rgf-R4.mlw:
  Line 33:
    Normal execution of function `(>=)` with args:
      x = 2
      y = 1
    Normal iteration of loop
  Line 36:
    Normal execution of function `(!)` with args:
      r = {contents= 2}
File lib.mlw:
  Line 23:
    Normal execution of function `contents` with args:
      arg = {contents= 2}
File rgf-R4.mlw:
  Line 36:
    Normal execution of function `(-)` with args:
      x = 2
      y = 1
File int.mlw:
  Line 23:
    Normal execution of function `(-_)` with args:
      _ = 1
    Normal execution of function `(+)` with args:
      _ = 2
      _ = (-1)
File rgf-R4.mlw:
  Line 36:
    Normal execution of function `([])` with args:
      a = {length= 3;
           elts=
           [|(-8907) -> 29686; (-2336) -> 26730; 0 -> 0; 1 -> 1;
           2 -> 1; _ -> 29|]}
      i = 1
File lib.mlw:
  Line 43:
    Normal execution of function `elts` with args:
      arg = {length= 3;
             elts=
             [|(-8907) -> 29686; (-2336) -> 26730; 0 -> 0; 1 -> 1;
             2 -> 1; _ -> 29|]}
    Normal execution of function `(@)` with args:
      u = [|(-8907) -> 29686; (-2336) -> 26730; 0 -> 0; 1 -> 1;
          2 -> 1; _ -> 29|]
      u = 1
File rgf-R4.mlw:
  Line 36:
    Normal execution of function `(!)` with args:
      r = {contents= 2}
File lib.mlw:
  Line 23:
    Normal execution of function `contents` with args:
      arg = {contents= 2}
File rgf-R4.mlw:
  Line 36:
    Normal execution of function `([])` with args:
      a = {length= 3;
           elts=
           [|(-8907) -> 29686; (-2336) -> 26730; 0 -> 0; 1 -> 1;
           2 -> 1; _ -> 29|]}
      i = 2
File lib.mlw:
  Line 43:
    Normal execution of function `elts` with args:
      arg = {length= 3;
             elts=
             [|(-8907) -> 29686; (-2336) -> 26730; 0 -> 0; 1 -> 1;
             2 -> 1; _ -> 29|]}
    Normal execution of function `(@)` with args:
      u = [|(-8907) -> 29686; (-2336) -> 26730; 0 -> 0; 1 -> 1;
          2 -> 1; _ -> 29|]
      u = 2
File rgf-R4.mlw:
  Line 36:
    Normal execution of function `(<=)` with args:
      x = 1
      y = 1
    Normal execution of function `Tuple0` with args:
Unknown location:
    Normal execution of function `Tuple0` with args:
File rgf-R4.mlw:
  Line 39:
    Normal execution of function `(!)` with args:
      r = {contents= 2}
File lib.mlw:
  Line 23:
    Normal execution of function `contents` with args:
      arg = {contents= 2}
File rgf-R4.mlw:
  Line 39:
    Normal execution of function `(=)` with args:
      x = 2
      y = 0
    Normal execution of function `Tuple0` with args:
  Line 40:
    Normal execution of function `(!)` with args:
      r = {contents= 2}
File lib.mlw:
  Line 23:
    Normal execution of function `contents` with args:
      arg = {contents= 2}
File rgf-R4.mlw:
  Line 40:
    Normal execution of function `([])` with args:
      a = {length= 3;
           elts=
           [|(-8907) -> 29686; (-2336) -> 26730; 0 -> 0; 1 -> 1;
           2 -> 1; _ -> 29|]}
      i = 2
File lib.mlw:
  Line 43:
    Normal execution of function `elts` with args:
      arg = {length= 3;
             elts=
             [|(-8907) -> 29686; (-2336) -> 26730; 0 -> 0; 1 -> 1;
             2 -> 1; _ -> 29|]}
    Normal execution of function `(@)` with args:
      u = [|(-8907) -> 29686; (-2336) -> 26730; 0 -> 0; 1 -> 1;
          2 -> 1; _ -> 29|]
      u = 2
File rgf-R4.mlw:
  Line 40:
    Normal execution of function `(+)` with args:
      _ = 1
      _ = 2
    Normal execution of function `(!)` with args:
      r = {contents= 2}
File lib.mlw:
  Line 23:
    Normal execution of function `contents` with args:
      arg = {contents= 2}
File rgf-R4.mlw:
  Line 40:
    Normal execution of function `([]<-)` with args:
      a = {length= 3;
           elts=
           [|(-8907) -> 29686; (-2336) -> 26730; 0 -> 0; 1 -> 1;
           2 -> 1; _ -> 29|]}
      i = 2
      v = 3
File lib.mlw:
  Line 48:
    Normal execution of function `elts` with args:
      arg = {length= 3;
             elts=
             [|(-8907) -> 29686; (-2336) -> 26730; 0 -> 0; 1 -> 1;
             2 -> 1; _ -> 29|]}
File rgf-R4.mlw:
  Line 41:
    Normal execution of function `(!)` with args:
      r = {contents= 2}
File lib.mlw:
  Line 23:
    Normal execution of function `contents` with args:
      arg = {contents= 2}
File rgf-R4.mlw:
  Line 41:
    Normal execution of function `g` with args:
      a = {length= 3;
           elts=
           (fun j -> if j = i then v
              else elts1 j) with i = 2, v = 3, elts1 = [|(-8907) -> 29686;
                                                       (-2336) -> 26730;
                                                       0 -> 0; 1 -> 1;
                                                       2 -> 1; _ -> 29|]}
      i = 2
    Property failure at precondition of `g` with:
      a = {length= 3;
           elts=
           (fun j -> if j = i then v
              else elts1 j) with i = 2, v = 3, elts1 = [|(-8907) -> 29686;
                                                       (-2336) -> 26730;
                                                       0 -> 0; 1 -> 1;
                                                       2 -> 1; _ -> 29|]}
      i = 2

File "bench/check-ce/petiot2018/experiments/rgf-R4.mlw", line 41, characters 2-8:
Sub-goal Precondition of goal f'vc.
Prover result is: Valid.

File "bench/check-ce/petiot2018/experiments/rgf-R4.mlw", line 41, characters 2-8:
Sub-goal Precondition of goal f'vc.
Prover result is: Valid.

