Formal Verification of a Compiler Back-End Generic Checker Program

This paper reports on a non-trivial case-study carried out in the context on the German correct compiler construction project Verifix. The PVS system is here used as a vehicle to formally represent and verify a generic checker routine (run-time result verification) used in compiler back-ends. The checker verifies the results of a sophisticated labeling process of intermediate language expression trees with instances of compilation rule schemata. Starting from an operational specification (i.e. a set of recursive PVS functions), necessary declarative properties of the checker are formally stated and proved correct.