Skip to main content


The standard library includes a type for lists []T where T is the type of elements.

  • Length: func len(list: []T): UInt.
  • Element Access: func select(list: []T, index: UInt): T.
  • Storing elements: func store(list: []T, index: UInt, value: T): []T.


The SMT-LIB translation of lists is based on SMT-LIB's arrays, but our lists have a length associated with it. You are only supposed to access elements at indices < len(list).

Some SMT solvers also support Sequences, but we do not yet understand those well enough to say how they compare to our lists.