The TAP notation uses two types of semantics: an abstract semantics for protocol verifiers and a concrete semantics for protocol implementers. The Austin Protocol Compiler illustrates that two types of semantics of TAP are equivalent. Thus, the correctness of TAP specification of some protocol, that is established based on the abstract semantics of TAP, is maintained when this specification is implemented based on concrete semantics of TAP. The equivalence suggests the following for developing a correct implementation of a protocol:
1. Specify the protocol using the TAP notation.
2. Verify the correctness of the specification based on the abstract semantics of TAP.
3. Implement the specification based on the concrete semantics of TAP.
For step 3, this book introduces the Austin Protocol Compiler (APC) that takes as input, a TAP specification of some protocol, and produces as output C-code that implements this protocol based on the concrete semantics of TAP.