//Only Direct implementatino defined import raw ("scripts/dfa/propagation.lp"). import raw ("scripts/dfa/polymorphism.lp"). import raw ("scripts/effects-communication/communication.lp"). import raw ("scripts/effects-communication/config.lp"). CommGuard = type variant{Invalid, Valid, Outdated}. CommDirect = type { value:: int }. guard:: commDirect { init = function:: CommDirect { {value = 0} } read = function(vault1:: CommDirect):: int { (vault1:: *;commop(receive))["value"] } write = function(vault2:: CommDirect, valueNew:: int)::CommDirect { (vault2:: *; dfa_pseudo(vault2)) + {value = valueNew}:: int; commop(send); dfa_uppy(vault2) } } main=function::int; entry { x1 = init()::*; dfa_polym(ret). x2 = write(x1, 1)::*; dfa_polym(arg). a = read(x2)::int; dfa_polym(arg). a }