Book section Open Access

The Correctness of a Code Generator for a Functional Language

Courant, Nathanaël; Séré, Antoine; Shankar, Natarajan

MARC21 XML Export

<?xml version='1.0' encoding='UTF-8'?>
<record xmlns="">
  <controlfield tag="005">20200730005924.0</controlfield>
  <controlfield tag="001">3965629</controlfield>
  <datafield tag="700" ind1=" " ind2=" ">
    <subfield code="a">Séré, Antoine</subfield>
  <datafield tag="700" ind1=" " ind2=" ">
    <subfield code="a">Shankar, Natarajan</subfield>
  <datafield tag="856" ind1="4" ind2=" ">
    <subfield code="s">351218</subfield>
    <subfield code="z">md5:b73c7d3b1dfe827954bb11fb6d017f67</subfield>
    <subfield code="u"></subfield>
  <datafield tag="542" ind1=" " ind2=" ">
    <subfield code="l">open</subfield>
  <datafield tag="260" ind1=" " ind2=" ">
    <subfield code="c">2020-01-01</subfield>
  <datafield tag="909" ind1="C" ind2="O">
    <subfield code="p">openaire</subfield>
    <subfield code="o"></subfield>
  <datafield tag="909" ind1="C" ind2="4">
    <subfield code="c">68-89</subfield>
    <subfield code="p">Lecture Notes in Computer Science</subfield>
  <datafield tag="100" ind1=" " ind2=" ">
    <subfield code="0">(orcid)0000-0002-8736-3060</subfield>
    <subfield code="a">Courant, Nathanaël</subfield>
  <datafield tag="245" ind1=" " ind2=" ">
    <subfield code="a">The Correctness of a Code Generator for a Functional Language</subfield>
  <datafield tag="540" ind1=" " ind2=" ">
    <subfield code="a">Free for private use; right holder retains other rights, including distribution</subfield>
  <datafield tag="650" ind1="1" ind2="7">
    <subfield code="a">cc-by</subfield>
    <subfield code="2"></subfield>
  <datafield tag="520" ind1=" " ind2=" ">
    <subfield code="a">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.</subfield>
  <datafield tag="024" ind1=" " ind2=" ">
    <subfield code="a">10.1007/978-3-030-39322-9_4</subfield>
    <subfield code="2">doi</subfield>
  <datafield tag="980" ind1=" " ind2=" ">
    <subfield code="a">publication</subfield>
    <subfield code="b">section</subfield>
Views 17
Downloads 3
Data volume 1.1 MB
Unique views 17
Unique downloads 3


Cite as