File "bench/check-ce/while.mlw", line 10, characters 25-32:
Sub-goal Loop invariant init of goal f'vc.
Prover result is: Valid (0.02s, 75 steps).

File "bench/check-ce/while.mlw", line 9, characters 14-19:
Sub-goal Loop variant decrease of goal f'vc.
Prover result is: Valid (0.02s, 519 steps).

<check-ce>Check model 0 ("bench/check-ce/while.mlw", line 10, characters 25-32)
<check-ce>Checking model:
          File while.mlw:
            Line 4:
              z = {"type": "Integer", "val": "2"}
            Line 8:
              i =
                {"type": "Record",
                 "val":
                  {"Field":
                    [{"field": "contents",
                      "value": {"type": "Integer", "val": "0"}}]}}
              i =
                {"type": "Record",
                 "val":
                  {"Field":
                    [{"field": "contents",
                      "value": {"type": "Integer", "val": "0"}}]}}
              x1 =
                {"type": "Record",
                 "val":
                  {"Field":
                    [{"field": "contents",
                      "value": {"type": "Integer", "val": "-2"}}]}}
            Line 10:
              i =
                {"type": "Record",
                 "val":
                  {"Field":
                    [{"field": "contents",
                      "value": {"type": "Integer", "val": "1"}}]}}
              x1 =
                {"type": "Record",
                 "val":
                  {"Field":
                    [{"field": "contents",
                      "value": {"type": "Integer", "val": "-1"}}]}}
              x1 =
                {"type": "Record",
                 "val":
                  {"Field":
                    [{"field": "contents",
                      "value": {"type": "Integer", "val": "-1"}}]}}
            Line 11:
              result = {"type": "Boolean", "val": true}
            Line 12:
              x1 =
                {"type": "Record",
                 "val":
                  {"Field":
                    [{"field": "contents",
                      "value": {"type": "Integer", "val": "-1"}}]}}
            Line 15:
              i =
                {"type": "Record",
                 "val":
                  {"Field":
                    [{"field": "contents",
                      "value": {"type": "Integer", "val": "1"}}]}}
<check-ce>Giant-step RAC
<rac-values>RHS evaluated for global `zero` at "WHY3DATA/stdlib/int.mlw", line 13, characters 15-19: 0
<rac-values>RHS evaluated for global `one` at "WHY3DATA/stdlib/int.mlw", line 14, characters 15-18: 1
<rac-values>Value from model for parameter `z` at "bench/check-ce/while.mlw", line 4, characters 7-8: 2
<rac-values>Value computed from postcondition for return value of call to ref at "bench/check-ce/while.mlw", line 5, characters 15-16 at "bench/check-ce/while.mlw", line 5, characters 15-16: {contents=
                                                                    2}
<rac-values>Value computed from postcondition for return value of call to ref at "bench/check-ce/while.mlw", line 6, characters 15-16 at "bench/check-ce/while.mlw", line 6, characters 15-16: {contents=
                                                                    0}
<rac-values>Value computed from postcondition for return value of call to ref at "bench/check-ce/while.mlw", line 7, characters 14-15 at "bench/check-ce/while.mlw", line 7, characters 14-15: {contents=
                                                                    0}
<rac-values>Value from model for variable `x1` at "bench/check-ce/while.mlw", line 8, characters 2-161 at "bench/check-ce/while.mlw", line 8, characters 2-161: {contents=
                                                                    (-2)}
<rac-values>Type default value for variable `x2` at "bench/check-ce/while.mlw", line 8, characters 2-161 at "bench/check-ce/while.mlw", line 8, characters 2-161: {contents=
                                                                    0}
<rac-values>Value from model for variable `i` at "bench/check-ce/while.mlw", line 8, characters 2-161 at "bench/check-ce/while.mlw", line 8, characters 2-161: {contents=
                                                                    0}
<check-ce>Normal RAC
<rac-values>RHS evaluated for global `zero` at "WHY3DATA/stdlib/int.mlw", line 13, characters 15-19: 0
<rac-values>RHS evaluated for global `one` at "WHY3DATA/stdlib/int.mlw", line 14, characters 15-18: 1
<rac-values>Value from model for parameter `z` at "bench/check-ce/while.mlw", line 4, characters 7-8: 2
<check-ce>Result of checking model 0: SW
            - Concrete RAC: NORMAL
              File int.mlw:
                Line 13:
                  Constant zero initialization
                  zero = 0
                Line 14:
                  Constant one initialization
                  one = 1
              File while.mlw:
                Line 4:
                  z = 2
                  z = 2
                  Execution of main function `f` with env:
                    z = 2
                    zero = 0
                    one = 1
                Line 5:
                  Normal execution of function `ref` with args:
                    contents = 2
                  Normal execution of function `ref'mk` with args:
                    contents = 2
                Line 6:
                  Normal execution of function `ref` with args:
                    contents = 0
                  Normal execution of function `ref'mk` with args:
                    contents = 0
                Line 7:
                  Normal execution of function `ref` with args:
                    contents = 0
                  Normal execution of function `ref'mk` with args:
                    contents = 0
                Line 8:
                  Normal execution of function `contents` with args:
                    arg = {contents= 0}
                  Normal execution of function `(<)` with args:
                    _ = 0
                    _ = 2
                  Normal iteration of loop
                Line 11:
                  Normal execution of function `contents` with args:
                    arg = {contents= 0}
                  Normal execution of function `(=)` with args:
                    x = 0
                    y = 0
                Line 12:
                  Normal execution of function `contents` with args:
                    arg = {contents= 2}
                  Normal execution of function `(+)` with args:
                    _ = 2
                    _ = 1
                Line 15:
                  Normal execution of function `contents` with args:
                    arg = {contents= 0}
                  Normal execution of function `(+)` with args:
                    _ = 0
                    _ = 1
                Line 8:
                  Normal execution of function `contents` with args:
                    arg = {contents= 1}
                  Normal execution of function `(<)` with args:
                    _ = 1
                    _ = 2
                  Normal iteration of loop
                Line 11:
                  Normal execution of function `contents` with args:
                    arg = {contents= 1}
                  Normal execution of function `(=)` with args:
                    x = 1
                    y = 0
                Line 14:
                  Normal execution of function `contents` with args:
                    arg = {contents= 0}
                  Normal execution of function `(+)` with args:
                    _ = 0
                    _ = 1
                Line 15:
                  Normal execution of function `contents` with args:
                    arg = {contents= 1}
                  Normal execution of function `(+)` with args:
                    _ = 1
                    _ = 1
                Line 8:
                  Normal execution of function `contents` with args:
                    arg = {contents= 2}
                  Normal execution of function `(<)` with args:
                    _ = 2
                    _ = 2
                Line 4:
                  Execution of main function terminated normally
            - Abstract RAC: FAILURE (loop invariant preservation at "bench/check-ce/while.mlw", line 10, characters 16-32)
              File int.mlw:
                Line 13:
                  Constant zero initialization
                  zero = 0
                Line 14:
                  Constant one initialization
                  one = 1
              File while.mlw:
                Line 4:
                  z = 2
                  z = 2
                  Execution of main function `f` with env:
                    z = 2
                    zero = 0
                    one = 1
                Line 5:
                  Giant-step execution of function `ref` with args:
                    contents = 2
                  result of `ref` = {contents= 2}
                Line 6:
                  Giant-step execution of function `ref` with args:
                    contents = 0
                  result of `ref` = {contents= 0}
                Line 7:
                  Giant-step execution of function `ref` with args:
                    contents = 0
                  result of `ref` = {contents= 0}
                Line 8:
                  Giant-step iteration of loop
                  x1 = {contents= (-2)}
                  x2 = {contents= 0}
                  i = {contents= 0}
                  Normal execution of function `contents` with args:
                    arg = {contents= 0}
                  Normal execution of function `(<)` with args:
                    _ = 0
                    _ = 2
                  Normal iteration of loop
                Line 11:
                  Normal execution of function `contents` with args:
                    arg = {contents= 0}
                  Normal execution of function `(=)` with args:
                    x = 0
                    y = 0
                Line 12:
                  Normal execution of function `contents` with args:
                    arg = {contents= (-2)}
                  Normal execution of function `(+)` with args:
                    _ = (-2)
                    _ = 1
                Line 15:
                  Normal execution of function `contents` with args:
                    arg = {contents= 0}
                  Normal execution of function `(+)` with args:
                    _ = 0
                    _ = 1
                Line 10:
                  Property failure at loop invariant preservation with:
                    x1 = {contents= (-1)}
                    i = {contents= 1}
<check-ce>Check model 1 ("bench/check-ce/while.mlw", line 10, characters 25-32)
<check-ce>Checking model:
          
<check-ce>Giant-step RAC
<rac-values>RHS evaluated for global `zero` at "WHY3DATA/stdlib/int.mlw", line 13, characters 15-19: 0
<rac-values>RHS evaluated for global `one` at "WHY3DATA/stdlib/int.mlw", line 14, characters 15-18: 1
<rac-values>Type default value for parameter `z` at "bench/check-ce/while.mlw", line 4, characters 7-8: 0
<rac-values>Value computed from postcondition for return value of call to ref at "bench/check-ce/while.mlw", line 5, characters 15-16 at "bench/check-ce/while.mlw", line 5, characters 15-16: {contents=
                                                                    0}
<rac-values>Value computed from postcondition for return value of call to ref at "bench/check-ce/while.mlw", line 6, characters 15-16 at "bench/check-ce/while.mlw", line 6, characters 15-16: {contents=
                                                                    0}
<rac-values>Value computed from postcondition for return value of call to ref at "bench/check-ce/while.mlw", line 7, characters 14-15 at "bench/check-ce/while.mlw", line 7, characters 14-15: {contents=
                                                                    0}
<rac-values>Type default value for variable `x1` at "bench/check-ce/while.mlw", line 8, characters 2-161 at "bench/check-ce/while.mlw", line 8, characters 2-161: {contents=
                                                                    0}
<rac-values>Type default value for variable `x2` at "bench/check-ce/while.mlw", line 8, characters 2-161 at "bench/check-ce/while.mlw", line 8, characters 2-161: {contents=
                                                                    0}
<rac-values>Type default value for variable `i` at "bench/check-ce/while.mlw", line 8, characters 2-161 at "bench/check-ce/while.mlw", line 8, characters 2-161: {contents=
                                                                    0}
<check-ce>Normal RAC
<rac-values>RHS evaluated for global `zero` at "WHY3DATA/stdlib/int.mlw", line 13, characters 15-19: 0
<rac-values>RHS evaluated for global `one` at "WHY3DATA/stdlib/int.mlw", line 14, characters 15-18: 1
<rac-values>Type default value for parameter `z` at "bench/check-ce/while.mlw", line 4, characters 7-8: 0
<check-ce>Result of checking model 1: BAD_CE
            - Concrete RAC: NORMAL
              File int.mlw:
                Line 13:
                  Constant zero initialization
                  zero = 0
                Line 14:
                  Constant one initialization
                  one = 1
              File while.mlw:
                Line 4:
                  z = 0
                  z = 0
                  Execution of main function `f` with env:
                    z = 0
                    zero = 0
                    one = 1
                Line 5:
                  Normal execution of function `ref` with args:
                    contents = 0
                  Normal execution of function `ref'mk` with args:
                    contents = 0
                Line 6:
                  Normal execution of function `ref` with args:
                    contents = 0
                  Normal execution of function `ref'mk` with args:
                    contents = 0
                Line 7:
                  Normal execution of function `ref` with args:
                    contents = 0
                  Normal execution of function `ref'mk` with args:
                    contents = 0
                Line 8:
                  Normal execution of function `contents` with args:
                    arg = {contents= 0}
                  Normal execution of function `(<)` with args:
                    _ = 0
                    _ = 2
                  Normal iteration of loop
                Line 11:
                  Normal execution of function `contents` with args:
                    arg = {contents= 0}
                  Normal execution of function `(=)` with args:
                    x = 0
                    y = 0
                Line 12:
                  Normal execution of function `contents` with args:
                    arg = {contents= 0}
                  Normal execution of function `(+)` with args:
                    _ = 0
                    _ = 1
                Line 15:
                  Normal execution of function `contents` with args:
                    arg = {contents= 0}
                  Normal execution of function `(+)` with args:
                    _ = 0
                    _ = 1
                Line 8:
                  Normal execution of function `contents` with args:
                    arg = {contents= 1}
                  Normal execution of function `(<)` with args:
                    _ = 1
                    _ = 2
                  Normal iteration of loop
                Line 11:
                  Normal execution of function `contents` with args:
                    arg = {contents= 1}
                  Normal execution of function `(=)` with args:
                    x = 1
                    y = 0
                Line 14:
                  Normal execution of function `contents` with args:
                    arg = {contents= 0}
                  Normal execution of function `(+)` with args:
                    _ = 0
                    _ = 1
                Line 15:
                  Normal execution of function `contents` with args:
                    arg = {contents= 1}
                  Normal execution of function `(+)` with args:
                    _ = 1
                    _ = 1
                Line 8:
                  Normal execution of function `contents` with args:
                    arg = {contents= 2}
                  Normal execution of function `(<)` with args:
                    _ = 2
                    _ = 2
                Line 4:
                  Execution of main function terminated normally
            - Abstract RAC: STUCK (when reaching the end of a loop iteration at "bench/check-ce/while.mlw", line 8, characters 2-161)
              File int.mlw:
                Line 13:
                  Constant zero initialization
                  zero = 0
                Line 14:
                  Constant one initialization
                  one = 1
              File while.mlw:
                Line 4:
                  z = 0
                  z = 0
                  Execution of main function `f` with env:
                    z = 0
                    zero = 0
                    one = 1
                Line 5:
                  Giant-step execution of function `ref` with args:
                    contents = 0
                  result of `ref` = {contents= 0}
                Line 6:
                  Giant-step execution of function `ref` with args:
                    contents = 0
                  result of `ref` = {contents= 0}
                Line 7:
                  Giant-step execution of function `ref` with args:
                    contents = 0
                  result of `ref` = {contents= 0}
                Line 8:
                  Giant-step iteration of loop
                  x1 = {contents= 0}
                  x2 = {contents= 0}
                  i = {contents= 0}
                  Normal execution of function `contents` with args:
                    arg = {contents= 0}
                  Normal execution of function `(<)` with args:
                    _ = 0
                    _ = 2
                  Normal iteration of loop
                Line 11:
                  Normal execution of function `contents` with args:
                    arg = {contents= 0}
                  Normal execution of function `(=)` with args:
                    x = 0
                    y = 0
                Line 12:
                  Normal execution of function `contents` with args:
                    arg = {contents= 0}
                  Normal execution of function `(+)` with args:
                    _ = 0
                    _ = 1
                Line 15:
                  Normal execution of function `contents` with args:
                    arg = {contents= 0}
                  Normal execution of function `(+)` with args:
                    _ = 0
                    _ = 1
                Line 8:
                  Execution got stuck at Cannot continue after arbitrary iteration with:
<check-ce-summary>Results:
- Selected model 0: SW
  - Concrete RAC: NORMAL
  - Abstract RAC: FAILURE (loop invariant preservation at "bench/check-ce/while.mlw", line 10, characters 16-32)
- Checked model 1: BAD_CE
  - Concrete RAC: NORMAL
  - Abstract RAC: STUCK (when reaching the end of a loop iteration at "bench/check-ce/while.mlw", line 8, characters 2-161)
File "bench/check-ce/while.mlw", line 10, characters 25-32:
Sub-goal Loop invariant preservation of goal f'vc.
Prover result is: Unknown (unknown) (0.33s, 3000118 steps).
The contracts of some function or loop are too weak, for example during the
  following execution:
File int.mlw:
  Line 13:
    Constant zero initialization
    zero = 0
  Line 14:
    Constant one initialization
    one = 1
File while.mlw:
  Line 4:
    z = 2
    z = 2
    Execution of main function `f` with env:
      z = 2
      zero = 0
      one = 1
  Line 5:
    Giant-step execution of function `ref` with args:
      contents = 2
    result of `ref` = {contents= 2}
  Line 6:
    Giant-step execution of function `ref` with args:
      contents = 0
    result of `ref` = {contents= 0}
  Line 7:
    Giant-step execution of function `ref` with args:
      contents = 0
    result of `ref` = {contents= 0}
  Line 8:
    Giant-step iteration of loop
    x1 = {contents= (-2)}
    x2 = {contents= 0}
    i = {contents= 0}
    Normal execution of function `contents` with args:
      arg = {contents= 0}
    Normal execution of function `(<)` with args:
      _ = 0
      _ = 2
    Normal iteration of loop
  Line 11:
    Normal execution of function `contents` with args:
      arg = {contents= 0}
    Normal execution of function `(=)` with args:
      x = 0
      y = 0
  Line 12:
    Normal execution of function `contents` with args:
      arg = {contents= (-2)}
    Normal execution of function `(+)` with args:
      _ = (-2)
      _ = 1
  Line 15:
    Normal execution of function `contents` with args:
      arg = {contents= 0}
    Normal execution of function `(+)` with args:
      _ = 0
      _ = 1
  Line 10:
    Property failure at loop invariant preservation with:
      x1 = {contents= (-1)}
      i = {contents= 1}

File "bench/check-ce/while.mlw", line 9, characters 14-19:
Sub-goal Loop variant decrease of goal f'vc.
Prover result is: Valid (0.01s, 3096 steps).

File "bench/check-ce/while.mlw", line 10, characters 25-32:
Sub-goal Loop invariant preservation of goal f'vc.
Prover result is: Valid (0.01s, 3087 steps).

