Resource Aware ML, Version 1.4.2, July 2018 Typechecking module ... Typecheck successful. Stack-based typecheck successful. Analyzing function split ... Trying degree: 1 == split : 'a list -> 'a list * 'a list Non-zero annotations of the argument: 9.50 <-- [::(*)] 5.00 <-- [] Non-zero annotations of result: Simplified bound: 5.00 + 9.50*M where M is the number of ::-nodes of the argument -- Mode: upper Metric: steps Degree: 1 Run time: 0.01 seconds #Constraints: 57 ==== Analyzing function merge ... Trying degree: 1 == merge : [['a; 'a] -> bool; 'a list; 'a list] -> 'a list Non-zero annotations of the argument: 19.00 <-- (*, [::(*)], []) 19.00 <-- (*, [], [::(*)]) 3.00 <-- (*, [], []) Non-zero annotations of result: Simplified bound: 3.00 + 19.00*L + 19.00*M where L is the number of ::-nodes of the 3rd component of the argument M is the number of ::-nodes of the 2nd component of the argument -- Mode: upper Metric: steps Degree: 1 Run time: 0.02 seconds #Constraints: 83 ==== Analyzing function mergesort ... Trying degree: 1, 2 == mergesort : [['a; 'a] -> bool; Rnat.t; 'a list] -> 'a list Non-zero annotations of the argument: 48.50 <-- (*, 1, [::(*)]) 4.00 <-- (*, 0, []) Non-zero annotations of result: 1.00 <-- [] Simplified bound: 4.00 + 48.50*K*N where K is the number of ::-nodes of the 3rd component of the argument N is the value of the 2nd component of the argument -- Mode: upper Metric: steps Degree: 2 Run time: 0.22 seconds #Constraints: 1132 ==== Analyzing function compare_list ... Trying degree: 1 == compare_list : [int list; int list] -> bool Non-zero annotations of the argument: 2.00 <-- ([::(*)], []) 12.00 <-- ([], [::(*)]) 3.00 <-- ([], []) Non-zero annotations of result: Simplified bound: 3.00 + 12.00*L + 2.00*M where L is the number of ::-nodes of the 2nd component of the argument M is the number of ::-nodes of the 1st component of the argument -- Mode: upper Metric: steps Degree: 1 Run time: 0.03 seconds #Constraints: 56 ==== Analyzing function mergesort_list ... Trying degree: 1, 2, 3 == mergesort_list : [Rnat.t; int list list] -> int list list Non-zero annotations of the argument: 7.00 <-- (0, [::([::(*)]); ::([])]) 7.00 <-- (0, [::([]); ::([::(*)])]) 36.50 <-- (1, [::([])]) 17.00 <-- (0, [::([]); ::([])]) 4.00 <-- (0, []) Non-zero annotations of result: 1.00 <-- [] Simplified bound: 4.00 - 8.50*K + 36.50*K*N - 7.00*K*X + 8.50*K^2 + 7.00*K^2*X where K is the number of ::-nodes of the 2nd component of the argument X is the maximal number of ::-nodes in the ::-nodes of the 2nd component of the argument N is the value of the 1st component of the argument -- Mode: upper Metric: steps Degree: 3 Run time: 2.54 seconds #Constraints: 14937 ====