Lists
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.
Discussion
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.