[jessie3] Loading Why3 configuration...
[jessie3] Why3 environment loaded.
[jessie3] Loading Why3 theories...
[jessie3] Loading Why3 modules...
[kernel] Parsing FRAMAC_SHARE/libc/__fc_builtin_for_normalization.i (no preprocessing)
[kernel] Parsing tests/basic/rec.c (with preprocessing)
[jessie3] Loading prover drivers...
[jessie3] Translating to Why3...
[jessie3] Starting translation
[jessie3] processing function sum
[jessie3] lookup program function sum (70)
[jessie3] created program function sum (70)
[jessie3] processing function sum2
[jessie3] lookup program function sum2 (76)
[jessie3] created program function sum2 (76)
[jessie3] processing function main
[jessie3] lookup program function sum (70)
[jessie3] created program function main (82)
[jessie3] found 2 logic decl(s)
[jessie3] made 1 theory(ies)
[jessie3] made 3 function(s)
[jessie3] Running provers...
[jessie3] running theory 1:
[jessie3] theory Global_logic_declarations
            (* use why3.BuiltIn.BuiltIn *)
            
            (* use why3.Bool.Bool *)
            
            (* use why3.Unit.Unit *)
            
            (* use int.Int *)
            
            (* use int.ComputerDivision *)
            
            (* use real.Real *)
            
            (* use array.Array *)
            
            function sum_upto (n:int) : int = div (n * (n + 1)) 2
            
            lemma sum_rec :
              forall n:int. n >= 0 -> sum_upto (n + 1) = ((sum_upto n + n) + 1)
            end
[jessie3] Provers: Alt-Ergo 1.01, CVC4 1.4, Z3 4.4.1
[jessie3] Task 1 (sum_rec) (): Valid, Unknown, Valid
[jessie3] running theory 1:
[jessie3] theory C_Functions
            (* use why3.BuiltIn.BuiltIn *)
            
            (* use why3.Bool.Bool *)
            
            (* use why3.Unit.Unit *)
            
            (* use int.Int *)
            
            (* use int.ComputerDivision *)
            
            (* use real.Real *)
            
            (* use array.Array *)
            
            (* use Global_logic_declarations *)
            
            (* use ref.Ref *)
            
            (* use mach.bv.BVCheck32 *)
            
            (* use mach.int.Int64 *)
            
            goal VC_sum :
              forall x:t.
               0 <= to_uint x /\ to_uint x <= 60000 ->
                in_bounds 0 /\
                 (forall o:int64.
                   to_int o = 0 ->
                    in_bounds 0 /\
                     (forall o1:int64.
                       to_int o1 = 0 ->
                        (0 <= 0 /\ 0 < two_power_size) /\
                         (forall o2:t.
                           to_uint o2 = 0 /\ o2 = of_int 0 ->
                            (if x = o2 then (0 <= 0 /\ 0 < two_power_size) /\
                                             (forall o3:t.
                                               to_uint o3 = 0 /\ o3 = of_int 0 ->
                                                (let o4 = to_uint o3 in
                                                in_bounds o4 /\
                                                 (forall o5:int64.
                                                   to_int o5 = o4 ->
                                                    (forall us_retres:int64.
                                                      us_retres = o5 ->
                                                       to_int us_retres =
                                                        sum_upto (to_uint x + 0)))))
                            else (0 <= 1 /\ 1 < two_power_size) /\
                                  (forall o3:t.
                                    to_uint o3 = 1 /\ o3 = of_int 1 ->
                                     (0 <= (to_uint x - to_uint o3) /\
                                       (to_uint x - to_uint o3) < two_power_size) /\
                                      (let o4 = sub x o3 in
                                      to_uint o4 = (to_uint x - to_uint o3) ->
                                       ((0 <= to_uint x /\ to_uint o4 < to_uint x) /\
                                         0 <= to_uint o4 /\ to_uint o4 <= 60000) /\
                                        (forall o5:int64.
                                          to_int o5 = sum_upto (to_uint o4 + 0) ->
                                           (forall tmp:int64.
                                             tmp = o5 ->
                                              (forall us_retres:int64.
                                                us_retres = tmp ->
                                                 to_int us_retres =
                                                  sum_upto (to_uint x + 0))))))))))
            
            goal VC_sum2 :
              forall x:t.
               0 <= to_uint x /\ to_uint x <= 60000 ->
                in_bounds 0 /\
                 (forall o:int64.
                   to_int o = 0 ->
                    in_bounds 0 /\
                     (forall o1:int64.
                       to_int o1 = 0 ->
                        (0 <= 0 /\ 0 < two_power_size) /\
                         (forall o2:t.
                           to_uint o2 = 0 /\ o2 = of_int 0 ->
                            (if x = o2 then (0 <= 0 /\ 0 < two_power_size) /\
                                             (forall o3:t.
                                               to_uint o3 = 0 /\ o3 = of_int 0 ->
                                                (let o4 = to_uint o3 in
                                                in_bounds o4 /\
                                                 (forall o5:int64.
                                                   to_int o5 = o4 ->
                                                    (forall us_retres:int64.
                                                      us_retres = o5 ->
                                                       to_int us_retres =
                                                        sum_upto (to_uint x + 0)))))
                            else (0 <= 1 /\ 1 < two_power_size) /\
                                  (forall o3:t.
                                    to_uint o3 = 1 /\ o3 = of_int 1 ->
                                     (0 <= (to_uint x - to_uint o3) /\
                                       (to_uint x - to_uint o3) < two_power_size) /\
                                      (let o4 = sub x o3 in
                                      to_uint o4 = (to_uint x - to_uint o3) ->
                                       ((0 <= to_uint x /\ to_uint o4 < to_uint x) /\
                                         0 <= to_uint o4 /\ to_uint o4 <= 60000) /\
                                        (forall o5:int64.
                                          to_int o5 = sum_upto (to_uint o4 + 0) ->
                                           (forall tmp:int64.
                                             tmp = o5 ->
                                              (forall us_retres:int64.
                                                us_retres = tmp ->
                                                 to_int us_retres =
                                                  sum_upto (to_uint x + 0))))))))))
            
            goal VC_main :
              in_bounds 0 /\
               (forall o:int64.
                 to_int o = 0 ->
                  (0 <= 8 /\ 8 < two_power_size) /\
                   (forall o1:t.
                     to_uint o1 = 8 /\ o1 = of_int 8 ->
                      (0 <= to_uint o1 /\ to_uint o1 <= 60000) /\
                       (forall o2:int64.
                         to_int o2 = sum_upto (to_uint o1 + 0) ->
                          (forall i:int64. i = o2 -> to_int i = 36))))
            end
[jessie3] Provers: Alt-Ergo 1.01, CVC4 1.4, Z3 4.4.1
[jessie3] Task 1 (VC sum) (integer overflow): Valid, Timeout, Valid
[jessie3] Task 2 (VC sum) (integer overflow): Valid, Timeout, Valid
[jessie3] Task 3 (VC sum) (precondition): Valid, Valid, Valid
[jessie3] Task 4 (VC sum) (precondition): Valid, Valid, Valid
[jessie3] Task 5 (VC sum) (integer overflow): Valid, Valid, Valid
[jessie3] Task 6 (VC sum) (postcondition): Valid, Valid, Valid
[jessie3] Task 7 (VC sum) (precondition): Valid, Valid, Valid
[jessie3] Task 8 (VC sum) (precondition): Valid, Timeout, Timeout
[jessie3] Task 9 (VC sum) (variant decrease): Valid, Valid, Valid
[jessie3] Task 10 (VC sum) (precondition): Valid, Timeout, Timeout
[jessie3] Task 11 (VC sum) (postcondition): Timeout, Timeout, Timeout
[jessie3] Task 12 (VC sum2) (integer overflow): Valid, Timeout, Valid
[jessie3] Task 13 (VC sum2) (integer overflow): Valid, Timeout, Valid
[jessie3] Task 14 (VC sum2) (precondition): Valid, Valid, Valid
[jessie3] Task 15 (VC sum2) (precondition): Valid, Valid, Valid
[jessie3] Task 16 (VC sum2) (integer overflow): Valid, Valid, Valid
[jessie3] Task 17 (VC sum2) (postcondition): Valid, Valid, Valid
[jessie3] Task 18 (VC sum2) (precondition): Valid, Valid, Valid
[jessie3] Task 19 (VC sum2) (precondition): Valid, Timeout, Timeout
[jessie3] Task 20 (VC sum2) (variant decrease): Valid, Valid, Valid
[jessie3] Task 21 (VC sum2) (precondition): Valid, Timeout, Timeout
[jessie3] Task 22 (VC sum2) (postcondition): Timeout, Timeout, Timeout
[jessie3] Task 23 (VC main) (integer overflow): Valid, Valid, Valid
[jessie3] Task 24 (VC main) (precondition): Valid, Valid, Valid
[jessie3] Task 25 (VC main) (precondition): Valid, Valid, Valid
[jessie3] Task 26 (VC main) (postcondition): Valid, Valid, Valid
