const n:int = 42 node plusone(a:int) returns (o:int) let o = a+1; tel node g(a:int^n) returns (o:int^n) let o = map plusone <>(a); tel node sum_acc (a, acc_in:int) returns (acc_out:int) let acc_out = acc_in + a; tel node h(a:int^n) returns (m:int) let m = fold sum_acc <>(a, 0); tel node sum_dup (a, acc_in:int) returns (o:int; acc_out:int) let acc_out = acc_in + a; o = acc_out; tel node p(a:int^n) returns (o:int^n) var acc:int; let (o, acc) = mapfold sum_dup <>(a, 0); tel node k(a,b:int^n) returns (o:int^n) let o = map (+) <>(a,b); tel node iter_reset(a:int^n; r:bool) returns (o:int^n) let reset o = map plusone <>(a); every (r & r) tel