Book section Open Access
Courant, Nathanaël;
Séré, Antoine;
Shankar, Natarajan
<?xml version='1.0' encoding='utf-8'?> <resource xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://datacite.org/schema/kernel-4" xsi:schemaLocation="http://datacite.org/schema/kernel-4 http://schema.datacite.org/meta/kernel-4.1/metadata.xsd"> <identifier identifierType="URL">https://zenodo.org/record/3965629</identifier> <creators> <creator> <creatorName>Courant, Nathanaël</creatorName> <givenName>Nathanaël</givenName> <familyName>Courant</familyName> <nameIdentifier nameIdentifierScheme="ORCID" schemeURI="http://orcid.org/">0000-0002-8736-3060</nameIdentifier> </creator> <creator> <creatorName>Séré, Antoine</creatorName> <givenName>Antoine</givenName> <familyName>Séré</familyName> </creator> <creator> <creatorName>Shankar, Natarajan</creatorName> <givenName>Natarajan</givenName> <familyName>Shankar</familyName> </creator> </creators> <titles> <title>The Correctness of a Code Generator for a Functional Language</title> </titles> <publisher>Zenodo</publisher> <publicationYear>2020</publicationYear> <dates> <date dateType="Issued">2020-01-01</date> </dates> <resourceType resourceTypeGeneral="Text">Book section</resourceType> <alternateIdentifiers> <alternateIdentifier alternateIdentifierType="url">https://zenodo.org/record/3965629</alternateIdentifier> </alternateIdentifiers> <relatedIdentifiers> <relatedIdentifier relatedIdentifierType="DOI" relationType="IsIdenticalTo">10.1007/978-3-030-39322-9_4</relatedIdentifier> </relatedIdentifiers> <rightsList> <rights rightsURI="info:eu-repo/semantics/openAccess">Open Access</rights> </rightsList> <descriptions> <description descriptionType="Abstract">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.</description> </descriptions> </resource>
Views | 40 |
Downloads | 19 |
Data volume | 6.7 MB |
Unique views | 39 |
Unique downloads | 19 |