Resource Aware ML, Version 1.4.2, July 2018 Typechecking module ... Typecheck successful. Stack-based typecheck successful. 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 length ... Trying degree: 1 == length : 'a list -> nat Non-zero annotations of the argument: 7.00 <-- [Cons(*)] 3.00 <-- [] Non-zero annotations of result: Simplified bound: 3.00 + 7.00*M where M is the number of Cons-nodes of the argument -- Mode: upper Metric: steps Degree: 1 Run time: 0.01 seconds #Constraints: 26 ==== Analyzing function leq ... Trying degree: 1 == leq : [nat; nat] -> bool 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.02 seconds #Constraints: 43 ==== Analyzing function const ... Trying degree: 1 == const : ['a; 'b] -> 'a Non-zero annotations of the argument: 1.00 <-- (*, *) Non-zero annotations of result: Simplified bound: 1.00 -- Mode: upper Metric: steps Degree: 1 Run time: 0.01 seconds #Constraints: 2 ==== Analyzing function halve ... Trying degree: 1 == halve : nat -> nat Non-zero annotations of the argument: 4.50 <-- [S(*)] 3.00 <-- [] Non-zero annotations of result: Simplified bound: 3.00 + 4.50*M where M is the number of S-nodes of the argument -- Mode: upper Metric: steps Degree: 1 Run time: 0.01 seconds #Constraints: 39 ==== Analyzing function tail ... Trying degree: 1 == tail : 'a list -> 'a list Non-zero annotations of the argument: 3.00 <-- [] Non-zero annotations of result: Simplified bound: 3.00 -- Mode: upper Metric: steps Degree: 1 Run time: 0.02 seconds #Constraints: 12 ==== Analyzing function head ... Trying degree: 1 == head : 'a list -> 'a Non-zero annotations of the argument: 3.00 <-- [] Non-zero annotations of result: Simplified bound: 3.00 -- Mode: upper Metric: steps Degree: 1 Run time: 0.02 seconds #Constraints: 11 ==== Analyzing function take ... Trying degree: 1 == take : [nat; 'a list] -> 'a list Non-zero annotations of the argument: 10.00 <-- ([S(*)], []) 9.00 <-- ([], [Cons(*)]) 3.00 <-- ([], []) Non-zero annotations of result: Simplified bound: 3.00 + 9.00*L + 10.00*M where L is the number of Cons-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: 1 Run time: 0.03 seconds #Constraints: 62 ==== Analyzing function drop ... Trying degree: 1 == drop : [nat; 'a list] -> 'a list Non-zero annotations of the argument: 4.00 <-- ([S(*)], []) 7.00 <-- ([], [Cons(*)]) 3.00 <-- ([], []) Non-zero annotations of result: Simplified bound: 3.00 + 7.00*L + 4.00*M where L is the number of Cons-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: 1 Run time: 0.03 seconds #Constraints: 43 ==== Analyzing function divideAndConquer ... Trying degree: 1, 2, 3 A bound for divideAndConquer could not be derived. The linear program is infeasible. -- Mode: upper Metric: steps Degree: 3 Run time: 0.12 seconds #Constraints: 432 ==== Analyzing function merge ... Trying degree: 1, 2, 3 == merge : [nat list; nat list] -> nat list Non-zero annotations of the argument: 8.00 <-- ([Cons([S(*)])], [Cons([])]) 21.00 <-- ([Cons([])], []) 15.00 <-- ([], [Cons([])]) 3.00 <-- ([], []) Non-zero annotations of result: Simplified bound: 3.00 + 8.00*L*M*Y + 21.00*M + 15.00*Y where Y is the number of Cons-nodes of the 2nd component of the argument M is the number of Cons-nodes of the 1st component of the argument L is the maximal number of S-nodes in the Cons-nodes of the 1st component of the argument -- Mode: upper Metric: steps Degree: 3 Run time: 0.89 seconds #Constraints: 4523 ==== Analyzing function mergesort ... Trying degree: 1, 2, 3 A bound for mergesort could not be derived. The linear program is infeasible. -- Mode: upper Metric: steps Degree: 3 Run time: 3.91 seconds #Constraints: 25121 ====