data specification
using memory
data types
FOW = FO(. .tid : T) with .FO?
| W(. .val : V;. .tid : T) with .W?
;
variables
fow : FOW;
v : V;
l : L;
tid : T;
val : V;
end data specification