Resource Aware ML, Version 1.4.2, July 2018 Typechecking module ... Typecheck successful. Stack-based typecheck successful. Analyzing function plus ... Trying degree: 1 == plus : [nat; nat] -> nat Non-zero annotations of the argument: 8.00 <-- ([S(*)], []) 3.00 <-- ([], []) Non-zero annotations of result: Simplified bound: 3.00 + 8.00*M where M is the number of S-nodes of the 1st component of the argument -- Mode: upper Metric: steps Degree: 1 Run time: 0.01 seconds #Constraints: 32 ==== Analyzing function mult ... Trying degree: 1, 2 == mult : [nat; nat] -> nat Non-zero annotations of the argument: 8.00 <-- ([S(*)], [S(*)]) 12.00 <-- ([S(*)], []) 3.00 <-- ([], []) Non-zero annotations of result: Simplified bound: 3.00 + 8.00*L*M + 12.00*M where L is the number of S-nodes of the 2nd component of the argument M is the number of S-nodes of the 1st component of the argument -- Mode: upper Metric: steps Degree: 2 Run time: 0.07 seconds #Constraints: 223 ==== Analyzing function square ... Trying degree: 1, 2 == square : nat -> nat Non-zero annotations of the argument: 16.00 <-- [S(*); S(*)] 20.00 <-- [S(*)] 7.00 <-- [] Non-zero annotations of result: Simplified bound: 7.00 + 12.00*M + 8.00*M^2 where M is the number of S-nodes of the argument -- Mode: upper Metric: steps Degree: 2 Run time: 0.07 seconds #Constraints: 233 ==== Analyzing function unfoldr ... Trying degree: 1, 2, 3 A bound for unfoldr could not be derived. The linear program is infeasible. -- Mode: upper Metric: steps Degree: 3 Run time: 0.03 seconds #Constraints: 41 ==== Analyzing function countdown ... Trying degree: 1 == countdown : nat -> nat option Non-zero annotations of the argument: 4.00 <-- [] Non-zero annotations of result: Simplified bound: 4.00 -- Mode: upper Metric: steps Degree: 1 Run time: 0.01 seconds #Constraints: 17 ==== Analyzing function enum ... Trying degree: 1, 2 == enum : nat -> nat list Non-zero annotations of the argument: 17.00 <-- [S(*)] 19.00 <-- [] Non-zero annotations of result: Simplified bound: 19.00 + 17.00*M where M is the number of S-nodes of the argument -- Mode: upper Metric: steps Degree: 2 Run time: 0.06 seconds #Constraints: 218 ==== Analyzing function map ... Trying degree: 1 == map : ['a -> 'b; 'a list] -> 'b list Non-zero annotations of the argument: 11.00 <-- (*, [Cons(*)]) 3.00 <-- (*, []) Non-zero annotations of result: Simplified bound: 3.00 + 11.00*M where M is the number of Cons-nodes of the 2nd component of the argument -- Mode: upper Metric: steps Degree: 1 Run time: 0.01 seconds #Constraints: 33 ==== Analyzing function sum ... Trying degree: 1, 2 == sum : nat list -> nat Non-zero annotations of the argument: 8.00 <-- [Cons([S(*)])] 11.00 <-- [Cons([])] 3.00 <-- [] Non-zero annotations of result: Simplified bound: 3.00 + 8.00*L*M + 11.00*M where M is the number of Cons-nodes of the argument L is the maximal number of S-nodes in the Cons-nodes of the argument -- Mode: upper Metric: steps Degree: 2 Run time: 0.05 seconds #Constraints: 200 ==== Analyzing function sum_sqs ... Trying degree: 1, 2, 3 A bound for sum_sqs could not be derived. The linear program is infeasible. -- Mode: upper Metric: steps Degree: 3 Run time: 0.49 seconds #Constraints: 2407 ====