* 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, character 4 to line 31, character 45:
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, character 4 to line 31, character 45:
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, character 4 to line 31, character 45:
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, character 4 to line 31, character 45:
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=CVC5,1.0.5,counterexamples --timelimit=15 --check-ce --rac-prover=CVC5,1.0.5 --sub-goal=:41@precondition --stepslimit=10000
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 + incomplete).
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= 2;
           elts=
           fun (x:int) -> if x = 0 then (- 1) else if x = 1 then (- 1) else 0}
      zero = 0
      one = 1
  Line 32:
    Normal execution of function `length` with args:
      arg = {length= 2;
             elts=
             fun (x:int) ->
              if x = 0 then (- 1) else if x = 1 then (- 1) else 0}
    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-R1.mlw:
  Line 32:
    Normal execution of function `int_ref` with args:
      i = 1
File lib.mlw:
  Line 12:
    Normal execution of function `int_ref'mk` with args:
      contents = 1
File rgf-R1.mlw:
  Line 33:
    Normal execution of function `(!)` with args:
      r = {contents= 1}
File lib.mlw:
  Line 23:
    Normal execution of function `contents` with args:
      arg = {contents= 1}
File rgf-R1.mlw:
  Line 33:
    Normal execution of function `(>=)` with args:
      x = 1
      y = 1
    Normal iteration of loop
  Line 36:
    Normal execution of function `(!)` with args:
      r = {contents= 1}
File lib.mlw:
  Line 23:
    Normal execution of function `contents` with args:
      arg = {contents= 1}
File rgf-R1.mlw:
  Line 36:
    Normal execution of function `(-)` with args:
      x = 1
      y = 1
File int.mlw:
  Line 23:
    Normal execution of function `(-_)` with args:
      _ = 1
    Normal execution of function `(+)` with args:
      _ = 1
      _ = (-1)
File rgf-R1.mlw:
  Line 36:
    Normal execution of function `([])` with args:
      a = {length= 2;
           elts=
           fun (x:int) -> if x = 0 then (- 1) else if x = 1 then (- 1) else 0}
      i = 0
File lib.mlw:
  Line 43:
    Normal execution of function `elts` with args:
      arg = {length= 2;
             elts=
             fun (x:int) ->
              if x = 0 then (- 1) else if x = 1 then (- 1) else 0}
    Normal execution of function `(@)` with args:
      u = fun (x:int) -> if x = 0 then (- 1) else if x = 1 then (- 1) else 0
      u = 0
File rgf-R1.mlw:
  Line 36:
    Normal execution of function `(!)` with args:
      r = {contents= 1}
File lib.mlw:
  Line 23:
    Normal execution of function `contents` with args:
      arg = {contents= 1}
File rgf-R1.mlw:
  Line 36:
    Normal execution of function `([])` with args:
      a = {length= 2;
           elts=
           fun (x:int) -> if x = 0 then (- 1) else if x = 1 then (- 1) else 0}
      i = 1
File lib.mlw:
  Line 43:
    Normal execution of function `elts` with args:
      arg = {length= 2;
             elts=
             fun (x:int) ->
              if x = 0 then (- 1) else if x = 1 then (- 1) else 0}
    Normal execution of function `(@)` with args:
      u = fun (x:int) -> if x = 0 then (- 1) else if x = 1 then (- 1) else 0
      u = 1
File rgf-R1.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-R1.mlw:
  Line 39:
    Normal execution of function `(!)` with args:
      r = {contents= 1}
File lib.mlw:
  Line 23:
    Normal execution of function `contents` with args:
      arg = {contents= 1}
File rgf-R1.mlw:
  Line 39:
    Normal execution of function `(=)` with args:
      x = 1
      y = 0
    Normal execution of function `Tuple0` with args:
  Line 40:
    Normal execution of function `(!)` with args:
      r = {contents= 1}
File lib.mlw:
  Line 23:
    Normal execution of function `contents` with args:
      arg = {contents= 1}
File rgf-R1.mlw:
  Line 40:
    Normal execution of function `([])` with args:
      a = {length= 2;
           elts=
           fun (x:int) -> if x = 0 then (- 1) else if x = 1 then (- 1) else 0}
      i = 1
File lib.mlw:
  Line 43:
    Normal execution of function `elts` with args:
      arg = {length= 2;
             elts=
             fun (x:int) ->
              if x = 0 then (- 1) else if x = 1 then (- 1) else 0}
    Normal execution of function `(@)` with args:
      u = fun (x:int) -> if x = 0 then (- 1) else if x = 1 then (- 1) else 0
      u = 1
File rgf-R1.mlw:
  Line 40:
    Normal execution of function `(+)` with args:
      _ = (- 1)
      _ = 1
    Normal execution of function `(!)` with args:
      r = {contents= 1}
File lib.mlw:
  Line 23:
    Normal execution of function `contents` with args:
      arg = {contents= 1}
File rgf-R1.mlw:
  Line 40:
    Normal execution of function `([]<-)` with args:
      a = {length= 2;
           elts=
           fun (x:int) -> if x = 0 then (- 1) else if x = 1 then (- 1) else 0}
      i = 1
      v = 0
File lib.mlw:
  Line 48:
    Normal execution of function `elts` with args:
      arg = {length= 2;
             elts=
             fun (x:int) ->
              if x = 0 then (- 1) else if x = 1 then (- 1) else 0}
File rgf-R1.mlw:
  Line 41:
    Normal execution of function `(!)` with args:
      r = {contents= 1}
File lib.mlw:
  Line 23:
    Normal execution of function `contents` with args:
      arg = {contents= 1}
File rgf-R1.mlw:
  Line 41:
    Normal execution of function `g` with args:
      a = {length= 2;
           elts=
           (fun j -> if j = i then v
              else elts1 j) with i = 1, v = 0, elts1 = fun (x:int) ->
                                                        if x = 0 then (- 1)
                                                        else if x = 1
                                                             then (- 1)
                                                             else 0}
      i = 1
    Property failure at precondition of `g` with:
      a = {length= 2;
           elts=
           (fun j -> if j = i then v
              else elts1 j) with i = 1, v = 0, elts1 = fun (x:int) ->
                                                        if x = 0 then (- 1)
                                                        else if x = 1
                                                             then (- 1)
                                                             else 0}
      i = 1

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=CVC5,1.0.5,counterexamples --timelimit=15 --check-ce --rac-prover=CVC5,1.0.5 --sub-goal=:41@precondition --stepslimit=10000
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: Step limit exceeded.
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= 2; elts= fun (x:int) -> 0}
      zero = 0
      one = 1
  Line 32:
    Normal execution of function `length` with args:
      arg = {length= 2; elts= fun (x:int) -> 0}
    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 32:
    Normal execution of function `int_ref` with args:
      i = 1
File lib.mlw:
  Line 12:
    Normal execution of function `int_ref'mk` with args:
      contents = 1
File rgf-R4.mlw:
  Line 33:
    Normal execution of function `(!)` with args:
      r = {contents= 1}
File lib.mlw:
  Line 23:
    Normal execution of function `contents` with args:
      arg = {contents= 1}
File rgf-R4.mlw:
  Line 33:
    Normal execution of function `(>=)` with args:
      x = 1
      y = 1
    Normal iteration of loop
  Line 36:
    Normal execution of function `(!)` with args:
      r = {contents= 1}
File lib.mlw:
  Line 23:
    Normal execution of function `contents` with args:
      arg = {contents= 1}
File rgf-R4.mlw:
  Line 36:
    Normal execution of function `(-)` with args:
      x = 1
      y = 1
File int.mlw:
  Line 23:
    Normal execution of function `(-_)` with args:
      _ = 1
    Normal execution of function `(+)` with args:
      _ = 1
      _ = (-1)
File rgf-R4.mlw:
  Line 36:
    Normal execution of function `([])` with args:
      a = {length= 2; elts= fun (x:int) -> 0}
      i = 0
File lib.mlw:
  Line 43:
    Normal execution of function `elts` with args:
      arg = {length= 2; elts= fun (x:int) -> 0}
    Normal execution of function `(@)` with args:
      u = fun (x:int) -> 0
      u = 0
File rgf-R4.mlw:
  Line 36:
    Normal execution of function `(!)` with args:
      r = {contents= 1}
File lib.mlw:
  Line 23:
    Normal execution of function `contents` with args:
      arg = {contents= 1}
File rgf-R4.mlw:
  Line 36:
    Normal execution of function `([])` with args:
      a = {length= 2; elts= fun (x:int) -> 0}
      i = 1
File lib.mlw:
  Line 43:
    Normal execution of function `elts` with args:
      arg = {length= 2; elts= fun (x:int) -> 0}
    Normal execution of function `(@)` with args:
      u = fun (x:int) -> 0
      u = 1
File rgf-R4.mlw:
  Line 36:
    Normal execution of function `(<=)` with args:
      x = 0
      y = 0
    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= 1}
File lib.mlw:
  Line 23:
    Normal execution of function `contents` with args:
      arg = {contents= 1}
File rgf-R4.mlw:
  Line 39:
    Normal execution of function `(=)` with args:
      x = 1
      y = 0
    Normal execution of function `Tuple0` with args:
  Line 40:
    Normal execution of function `(!)` with args:
      r = {contents= 1}
File lib.mlw:
  Line 23:
    Normal execution of function `contents` with args:
      arg = {contents= 1}
File rgf-R4.mlw:
  Line 40:
    Normal execution of function `([])` with args:
      a = {length= 2; elts= fun (x:int) -> 0}
      i = 1
File lib.mlw:
  Line 43:
    Normal execution of function `elts` with args:
      arg = {length= 2; elts= fun (x:int) -> 0}
    Normal execution of function `(@)` with args:
      u = fun (x:int) -> 0
      u = 1
File rgf-R4.mlw:
  Line 40:
    Normal execution of function `(+)` with args:
      _ = 0
      _ = 2
    Normal execution of function `(!)` with args:
      r = {contents= 1}
File lib.mlw:
  Line 23:
    Normal execution of function `contents` with args:
      arg = {contents= 1}
File rgf-R4.mlw:
  Line 40:
    Normal execution of function `([]<-)` with args:
      a = {length= 2; elts= fun (x:int) -> 0}
      i = 1
      v = 2
File lib.mlw:
  Line 48:
    Normal execution of function `elts` with args:
      arg = {length= 2; elts= fun (x:int) -> 0}
File rgf-R4.mlw:
  Line 41:
    Normal execution of function `(!)` with args:
      r = {contents= 1}
File lib.mlw:
  Line 23:
    Normal execution of function `contents` with args:
      arg = {contents= 1}
File rgf-R4.mlw:
  Line 41:
    Normal execution of function `g` with args:
      a = {length= 2;
           elts=
           (fun j -> if j = i then v
              else elts1 j) with i = 1, v = 2, elts1 = fun (x:int) -> 0}
      i = 1
    Property failure at precondition of `g` with:
      a = {length= 2;
           elts=
           (fun j -> if j = i then v
              else elts1 j) with i = 1, v = 2, elts1 = fun (x:int) -> 0}
      i = 1

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.

