Resource Aware ML, Version 1.4.2, July 2018

Typechecking module ...
  Typecheck successful.
  Stack-based typecheck successful.

Analyzing function assoc ...

  Trying degree: 1

== assoc :

  [int; (int * 'a) list] -> 'a

  Non-zero annotations of the argument:
     16.00  <--  (*, [::(*, *)])
      2.00  <--  (*, [])

  Non-zero annotations of result:

  Simplified bound:
     2.00 + 16.00*M
   where
     M is the number of ::-nodes of the 2nd component of the argument

--
  Mode:          upper
  Metric:        steps
  Degree:        1
  Run time:      0.01 seconds
  #Constraints:  37

====

Analyzing function rev ...

  Trying degree: 1

== rev :

  'a list -> 'a list

  Non-zero annotations of the argument:
     11.00  <--  [::(*)]
      9.00  <--  []

  Non-zero annotations of result:

  Simplified bound:
     9.00 + 11.00*M
   where
     M is the number of ::-nodes of the argument

--
  Mode:          upper
  Metric:        steps
  Degree:        1
  Run time:      0.01 seconds
  #Constraints:  42

====

Analyzing function concat ...

  Trying degree: 1

== concat :

  ['a list; 'a list] -> 'a list

  Non-zero annotations of the argument:
     11.00  <--  ([::(*)], [])
      3.00  <--  ([], [])

  Non-zero annotations of result:

  Simplified bound:
     3.00 + 11.00*M
   where
     M is the number of ::-nodes of the 1st component of the argument

--
  Mode:          upper
  Metric:        steps
  Degree:        1
  Run time:      0.01 seconds
  #Constraints:  35

====

Analyzing function eval ...

  Trying degree: 1, 2

== eval :

  [(int * bool) list; bool_expr] -> bool

  Non-zero annotations of the argument:
     16.00  <--  ([::(*, *)], [And(*)])
     16.00  <--  ([::(*, *)], [Or(*)])
     16.00  <--  ([::(*, *)], [])
     11.00  <--  ([], [Not(*)])
     20.00  <--  ([], [And(*)])
     20.00  <--  ([], [Or(*)])
     10.00  <--  ([], [])

  Non-zero annotations of result:
      5.00  <--  *

  Simplified bound:
     10.00 + 11.00*L + 16.00*M + 16.00*M*X + 16.00*M*Y
                               + 20.00*X + 20.00*Y
   where
     Y is the number of Or-nodes of the 2nd component of the argument
     X is the number of And-nodes of the 2nd component of the argument
     L is the number of Not-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:        2
  Run time:      0.34 seconds
  #Constraints:  1864

====

Analyzing function table_make ...

  Trying degree: 1, 2, 3

  A bound for table_make could not be derived. The linear program is infeasible.

--
  Mode:          upper
  Metric:        steps
  Degree:        3
  Run time:      9.72 seconds
  #Constraints:  54211

====