1. function receive(message msg) 2. when receive an initialization i-message with t = 0 3. tl = 0 4. foreach d in D 5. send (“i”, t, Ø) to md 6. when receive a collect @-message with t = tn 7. tl = t 8. foreach m in IMM 9. send (“@”, t, Ø) to the child m 10. when receive an internal *-message with tl <= t <= tn 11. post (xb) 12. while (IMM È INF ≠ Ø) 13. foreach m in IMM È INF 14. send (“*”, t, Ø) to the child m 15. send (“y”, t, yb) to the parent 16. tl = t 17. tn = Minimum {md.tn|md Î {Md} 18. if (tn < msg.value) 19. t = tn 20. foreach m in IMM 21. send (“@”, t, Ø) to the child m 22. else if tn < t < tl return causality error 23. end receive |