Published January 1, 2020 | Version v1
Book chapter Open

The Correctness of a Code Generator for a Functional Language

Description

Code generation is gaining popularity as a technique to bridge the gap between high-level models and executable code. We describe the theory underlying the PVS2C code generator that translates functional programs written using the PVS specification language to standalone, efficiently executable C code. We outline a correctness argument for the code generator. The techniques used are quite generic and can be applied to transform programs written in functional languages into imperative code. We use a formal model of reference counting to capture memory management and safe destructive updates for a simple first-order functional language with arrays. We exhibit a bisimulation between the functional execution and the imperative execution. This bisimulation shows that the generated imperative program returns the same result as the functional program.

Files

article.pdf

Files (351.2 kB)

Name Size Download all
md5:b73c7d3b1dfe827954bb11fb6d017f67
351.2 kB Preview Download