procedure main() &trace := -1 # ensures functions print their names every (i := false | true ) & ( j := false | true) do { write("i,j := ",image(i),", ",image(j)) write("i & j:") x := i() & j() # invoke true/false write("i | j:") y := i() | j() # invoke true/false } end procedure true() #: succeeds always (returning null) return end procedure false() #: fails always fail # for clarity but not needed as running into end has the same effect end