Program Transformation and Compilation
This chapter consists of two parts: The first describes how to interleave symbolic execution with partial evaluation to render the representation of proof trees more compact. Besides saving proof effort, it helps a human user to navigate and comprehend a given proof situation better. The second part is about verifiably correct compilation. Instead of verifying a compiler, we use the verification engine of KeY to prove for a given program on the fly that it is correctly compiled through a sound program transformation. Program behavior of the source code is provably preserved at the level of the target language: source and compiled program terminate in states in which the values of a user-specified region of the heap are equivalent. We give a proof-of-concept of the approach in realizing a partial evaluator, i.e., a source-to-source compiler.
KeywordsConstant Propagation Partial Evaluation Program Variable Sequent Calculus Path Condition
Unable to display preview. Download preview PDF.