C, Lambda Calculus And Compiler Verification - A Study In Haskell Of Purely-Functional Techniques For A Formal Specification Of Imperative Programming Languages And An Epistemically-Sound Verification Of Their Compilers