Lazy Evaluation: From natural semantics to a machine-checked compiler transformation: Dissertationsschrift