Abstract IOA specification
of totally ordered multicast
•S: array[integer] of message
•next: integer
•deliv: array[process] of integer
•
•action Multicast(m) { S[next++] := m; }
•
•action Deliver(p, m)
•precond: deliv[p] < next && m == S[deliv[p]]
• { deliv[p]++; }
•
global
state
Specification of a reliable totally ordered network.  Formal semantics, yet easy to read and write by programmers.  Easy to see that it provides totally ordered delivery.  It doesn’t say much about how to implement it, leaving freedom to the implementer.