Loading…

Certifying compilers using higher-order theorem provers as certificate checkers

Correct software requires compilers to work correctly. Especially code generation can be an error prone task, since it potentially uses sophisticated algorithms to produce efficient code. In this paper we present an approach to guarantee the correctness of compiler transformations with respect to a...

Full description

Saved in:
Bibliographic Details
Published in:Formal methods in system design 2011-02, Vol.38 (1), p.33-61
Main Authors: Blech, Jan Olaf, Grégoire, Benjamin
Format: Article
Language:English
Subjects:
Citations: Items that this one cites
Items that cite this one
Online Access:Get full text
Tags: Add Tag
No Tags, Be the first to tag this record!
cited_by cdi_FETCH-LOGICAL-c321t-ba9bbf2e18478ce8540403b50bde3cf6978513d0fc743c7cbf15b45791ac19473
cites cdi_FETCH-LOGICAL-c321t-ba9bbf2e18478ce8540403b50bde3cf6978513d0fc743c7cbf15b45791ac19473
container_end_page 61
container_issue 1
container_start_page 33
container_title Formal methods in system design
container_volume 38
creator Blech, Jan Olaf
Grégoire, Benjamin
description Correct software requires compilers to work correctly. Especially code generation can be an error prone task, since it potentially uses sophisticated algorithms to produce efficient code. In this paper we present an approach to guarantee the correctness of compiler transformations with respect to a formal notion of correctness. We certify the results of each compilation run. With the help of a compiler generated certificate and a certificate checker, we verify the results of each compilation run automatically. Thereby we ensure the correctness of the compilation run without having to look at concrete compilation algorithms. We use higher-order theorem provers to check the certificates and to formally define syntax, and semantics of the involved languages as well as a criterion under which we regard a compilation as correct. The use of higher-order theorem provers ensures a small and well understood trusted computing base. The task of efficient certificate checking is especially crucial for the acceptance of certifying compilation. We present methods to facilitate this task, most notably by using computational reflection: We present small—in an executable way specified—evaluators that solve certain properties appearing in our certificates and are used to speed up certain subtasks in the checking process. We discuss an implemented prototype performing code generation. Using Coq and Isabelle/HOL as certificate checkers we highlight typical challenges and their solutions
doi_str_mv 10.1007/s10703-010-0108-7
format article
fullrecord <record><control><sourceid>proquest_cross</sourceid><recordid>TN_cdi_proquest_miscellaneous_1671335539</recordid><sourceformat>XML</sourceformat><sourcesystem>PC</sourcesystem><sourcerecordid>1671335539</sourcerecordid><originalsourceid>FETCH-LOGICAL-c321t-ba9bbf2e18478ce8540403b50bde3cf6978513d0fc743c7cbf15b45791ac19473</originalsourceid><addsrcrecordid>eNp9kE1PwzAMhiMEEmPwA7j1yCVgN02THtHElzRpFzhHaeauHf0iaZH272kpZw6WZet5X9kvY7cI9wigHgKCAsEBYS7N1RlboVQx1wjxOVtBFkueaZlesqsQjgCgMRUrttuQH6riVLWHyHVNX9XkQzSGeS6rQ0med35PPhpK6jw1Ue-77xmxIXK_0srZgSJXkvuc9tfsorB1oJu_vmYfz0_vm1e-3b28bR633IkYB57bLM-LmFAnSjvSMoEERC4h35NwRZopLVHsoXAqEU65vECZJ1JlaB1miRJrdrf4Tvd8jRQG01TBUV3blroxGEwVCiGlyCYUF9T5LgRPhel91Vh_MghmDs8s4ZkpuLm0me3jRRMmtj2QN8du9O300T-iH8HKcqM</addsrcrecordid><sourcetype>Aggregation Database</sourcetype><iscdi>true</iscdi><recordtype>article</recordtype><pqid>1671335539</pqid></control><display><type>article</type><title>Certifying compilers using higher-order theorem provers as certificate checkers</title><source>Springer Nature</source><creator>Blech, Jan Olaf ; Grégoire, Benjamin</creator><creatorcontrib>Blech, Jan Olaf ; Grégoire, Benjamin</creatorcontrib><description>Correct software requires compilers to work correctly. Especially code generation can be an error prone task, since it potentially uses sophisticated algorithms to produce efficient code. In this paper we present an approach to guarantee the correctness of compiler transformations with respect to a formal notion of correctness. We certify the results of each compilation run. With the help of a compiler generated certificate and a certificate checker, we verify the results of each compilation run automatically. Thereby we ensure the correctness of the compilation run without having to look at concrete compilation algorithms. We use higher-order theorem provers to check the certificates and to formally define syntax, and semantics of the involved languages as well as a criterion under which we regard a compilation as correct. The use of higher-order theorem provers ensures a small and well understood trusted computing base. The task of efficient certificate checking is especially crucial for the acceptance of certifying compilation. We present methods to facilitate this task, most notably by using computational reflection: We present small—in an executable way specified—evaluators that solve certain properties appearing in our certificates and are used to speed up certain subtasks in the checking process. We discuss an implemented prototype performing code generation. Using Coq and Isabelle/HOL as certificate checkers we highlight typical challenges and their solutions</description><identifier>ISSN: 0925-9856</identifier><identifier>EISSN: 1572-8102</identifier><identifier>DOI: 10.1007/s10703-010-0108-7</identifier><language>eng</language><publisher>Boston: Springer US</publisher><subject>CAE) and Design ; Checkers ; Circuits and Systems ; Compilers ; Computer programs ; Computer-Aided Engineering (CAD ; Electrical Engineering ; Engineering ; Formal method ; Software ; Software Engineering/Programming and Operating Systems ; Systems design ; Tasks ; Theorem proving</subject><ispartof>Formal methods in system design, 2011-02, Vol.38 (1), p.33-61</ispartof><rights>Springer Science+Business Media, LLC 2010</rights><lds50>peer_reviewed</lds50><woscitedreferencessubscribed>false</woscitedreferencessubscribed><citedby>FETCH-LOGICAL-c321t-ba9bbf2e18478ce8540403b50bde3cf6978513d0fc743c7cbf15b45791ac19473</citedby><cites>FETCH-LOGICAL-c321t-ba9bbf2e18478ce8540403b50bde3cf6978513d0fc743c7cbf15b45791ac19473</cites></display><links><openurl>$$Topenurl_article</openurl><openurlfulltext>$$Topenurlfull_article</openurlfulltext><thumbnail>$$Tsyndetics_thumb_exl</thumbnail><link.rule.ids>314,776,780,27903,27904</link.rule.ids></links><search><creatorcontrib>Blech, Jan Olaf</creatorcontrib><creatorcontrib>Grégoire, Benjamin</creatorcontrib><title>Certifying compilers using higher-order theorem provers as certificate checkers</title><title>Formal methods in system design</title><addtitle>Form Methods Syst Des</addtitle><description>Correct software requires compilers to work correctly. Especially code generation can be an error prone task, since it potentially uses sophisticated algorithms to produce efficient code. In this paper we present an approach to guarantee the correctness of compiler transformations with respect to a formal notion of correctness. We certify the results of each compilation run. With the help of a compiler generated certificate and a certificate checker, we verify the results of each compilation run automatically. Thereby we ensure the correctness of the compilation run without having to look at concrete compilation algorithms. We use higher-order theorem provers to check the certificates and to formally define syntax, and semantics of the involved languages as well as a criterion under which we regard a compilation as correct. The use of higher-order theorem provers ensures a small and well understood trusted computing base. The task of efficient certificate checking is especially crucial for the acceptance of certifying compilation. We present methods to facilitate this task, most notably by using computational reflection: We present small—in an executable way specified—evaluators that solve certain properties appearing in our certificates and are used to speed up certain subtasks in the checking process. We discuss an implemented prototype performing code generation. Using Coq and Isabelle/HOL as certificate checkers we highlight typical challenges and their solutions</description><subject>CAE) and Design</subject><subject>Checkers</subject><subject>Circuits and Systems</subject><subject>Compilers</subject><subject>Computer programs</subject><subject>Computer-Aided Engineering (CAD</subject><subject>Electrical Engineering</subject><subject>Engineering</subject><subject>Formal method</subject><subject>Software</subject><subject>Software Engineering/Programming and Operating Systems</subject><subject>Systems design</subject><subject>Tasks</subject><subject>Theorem proving</subject><issn>0925-9856</issn><issn>1572-8102</issn><fulltext>true</fulltext><rsrctype>article</rsrctype><creationdate>2011</creationdate><recordtype>article</recordtype><recordid>eNp9kE1PwzAMhiMEEmPwA7j1yCVgN02THtHElzRpFzhHaeauHf0iaZH272kpZw6WZet5X9kvY7cI9wigHgKCAsEBYS7N1RlboVQx1wjxOVtBFkueaZlesqsQjgCgMRUrttuQH6riVLWHyHVNX9XkQzSGeS6rQ0med35PPhpK6jw1Ue-77xmxIXK_0srZgSJXkvuc9tfsorB1oJu_vmYfz0_vm1e-3b28bR633IkYB57bLM-LmFAnSjvSMoEERC4h35NwRZopLVHsoXAqEU65vECZJ1JlaB1miRJrdrf4Tvd8jRQG01TBUV3blroxGEwVCiGlyCYUF9T5LgRPhel91Vh_MghmDs8s4ZkpuLm0me3jRRMmtj2QN8du9O300T-iH8HKcqM</recordid><startdate>20110201</startdate><enddate>20110201</enddate><creator>Blech, Jan Olaf</creator><creator>Grégoire, Benjamin</creator><general>Springer US</general><scope>AAYXX</scope><scope>CITATION</scope><scope>7SP</scope><scope>8FD</scope><scope>L7M</scope></search><sort><creationdate>20110201</creationdate><title>Certifying compilers using higher-order theorem provers as certificate checkers</title><author>Blech, Jan Olaf ; Grégoire, Benjamin</author></sort><facets><frbrtype>5</frbrtype><frbrgroupid>cdi_FETCH-LOGICAL-c321t-ba9bbf2e18478ce8540403b50bde3cf6978513d0fc743c7cbf15b45791ac19473</frbrgroupid><rsrctype>articles</rsrctype><prefilter>articles</prefilter><language>eng</language><creationdate>2011</creationdate><topic>CAE) and Design</topic><topic>Checkers</topic><topic>Circuits and Systems</topic><topic>Compilers</topic><topic>Computer programs</topic><topic>Computer-Aided Engineering (CAD</topic><topic>Electrical Engineering</topic><topic>Engineering</topic><topic>Formal method</topic><topic>Software</topic><topic>Software Engineering/Programming and Operating Systems</topic><topic>Systems design</topic><topic>Tasks</topic><topic>Theorem proving</topic><toplevel>peer_reviewed</toplevel><toplevel>online_resources</toplevel><creatorcontrib>Blech, Jan Olaf</creatorcontrib><creatorcontrib>Grégoire, Benjamin</creatorcontrib><collection>CrossRef</collection><collection>Electronics &amp; Communications Abstracts</collection><collection>Technology Research Database</collection><collection>Advanced Technologies Database with Aerospace</collection><jtitle>Formal methods in system design</jtitle></facets><delivery><delcategory>Remote Search Resource</delcategory><fulltext>fulltext</fulltext></delivery><addata><au>Blech, Jan Olaf</au><au>Grégoire, Benjamin</au><format>journal</format><genre>article</genre><ristype>JOUR</ristype><atitle>Certifying compilers using higher-order theorem provers as certificate checkers</atitle><jtitle>Formal methods in system design</jtitle><stitle>Form Methods Syst Des</stitle><date>2011-02-01</date><risdate>2011</risdate><volume>38</volume><issue>1</issue><spage>33</spage><epage>61</epage><pages>33-61</pages><issn>0925-9856</issn><eissn>1572-8102</eissn><abstract>Correct software requires compilers to work correctly. Especially code generation can be an error prone task, since it potentially uses sophisticated algorithms to produce efficient code. In this paper we present an approach to guarantee the correctness of compiler transformations with respect to a formal notion of correctness. We certify the results of each compilation run. With the help of a compiler generated certificate and a certificate checker, we verify the results of each compilation run automatically. Thereby we ensure the correctness of the compilation run without having to look at concrete compilation algorithms. We use higher-order theorem provers to check the certificates and to formally define syntax, and semantics of the involved languages as well as a criterion under which we regard a compilation as correct. The use of higher-order theorem provers ensures a small and well understood trusted computing base. The task of efficient certificate checking is especially crucial for the acceptance of certifying compilation. We present methods to facilitate this task, most notably by using computational reflection: We present small—in an executable way specified—evaluators that solve certain properties appearing in our certificates and are used to speed up certain subtasks in the checking process. We discuss an implemented prototype performing code generation. Using Coq and Isabelle/HOL as certificate checkers we highlight typical challenges and their solutions</abstract><cop>Boston</cop><pub>Springer US</pub><doi>10.1007/s10703-010-0108-7</doi><tpages>29</tpages></addata></record>
fulltext fulltext
identifier ISSN: 0925-9856
ispartof Formal methods in system design, 2011-02, Vol.38 (1), p.33-61
issn 0925-9856
1572-8102
language eng
recordid cdi_proquest_miscellaneous_1671335539
source Springer Nature
subjects CAE) and Design
Checkers
Circuits and Systems
Compilers
Computer programs
Computer-Aided Engineering (CAD
Electrical Engineering
Engineering
Formal method
Software
Software Engineering/Programming and Operating Systems
Systems design
Tasks
Theorem proving
title Certifying compilers using higher-order theorem provers as certificate checkers
url http://sfxeu10.hosted.exlibrisgroup.com/loughborough?ctx_ver=Z39.88-2004&ctx_enc=info:ofi/enc:UTF-8&ctx_tim=2025-01-25T23%3A43%3A25IST&url_ver=Z39.88-2004&url_ctx_fmt=infofi/fmt:kev:mtx:ctx&rfr_id=info:sid/primo.exlibrisgroup.com:primo3-Article-proquest_cross&rft_val_fmt=info:ofi/fmt:kev:mtx:journal&rft.genre=article&rft.atitle=Certifying%20compilers%20using%20higher-order%20theorem%20provers%20as%20certificate%20checkers&rft.jtitle=Formal%20methods%20in%20system%20design&rft.au=Blech,%20Jan%20Olaf&rft.date=2011-02-01&rft.volume=38&rft.issue=1&rft.spage=33&rft.epage=61&rft.pages=33-61&rft.issn=0925-9856&rft.eissn=1572-8102&rft_id=info:doi/10.1007/s10703-010-0108-7&rft_dat=%3Cproquest_cross%3E1671335539%3C/proquest_cross%3E%3Cgrp_id%3Ecdi_FETCH-LOGICAL-c321t-ba9bbf2e18478ce8540403b50bde3cf6978513d0fc743c7cbf15b45791ac19473%3C/grp_id%3E%3Coa%3E%3C/oa%3E%3Curl%3E%3C/url%3E&rft_id=info:oai/&rft_pqid=1671335539&rft_id=info:pmid/&rfr_iscdi=true