The WAM - Definition and Compiler Correctness