original.name="RecursiveType_Valid_31"
======
>>> main.whiley
type Node is { int data, List next }
type List is null | Node
function cons(int item, List list) -> (List r)
ensures r is Node && r.next == list && r.data == item:
return { data: item, next: list }
public export method test():
List l = null
//
l = cons(1,l)
assert l is Node && l.data == 1
assert l is Node && l.next is null
//
l = cons(2,l)
assert l is Node && l.data == 2
assert l is Node && l.next is Node && l.next.next is null
---