Skip to main content Accessibility help
×
Home
Hostname: page-component-55597f9d44-n4bck Total loading time: 0.204 Render date: 2022-08-10T00:17:52.144Z Has data issue: true Feature Flags: { "shouldUseShareProductTool": true, "shouldUseHypothesis": true, "isUnsiloEnabled": true, "useRatesEcommerce": false, "useNewApi": true } hasContentIssue true

Compiling a 50-year journey*

Published online by Cambridge University Press:  20 September 2017

GRAHAM HUTTON
Affiliation:
School of Computer Science, University of Nottingham, Nottingham, UK (e-mail: gmh@cs.nott.ac.uk)
PATRICK BAHR
Affiliation:
Department of Computer Science, IT University of Copenhagen, Copenhagen, Denmark (e-mail: paba@itu.dk)
Rights & Permissions[Opens in a new window]

Abstract

HTML view is not available for this content. However, as you have access to this content, a full PDF is available via the ‘Save PDF’ action button.

Fifty years ago, John McCarthy and James Painter (1967) published the first paper on compiler verification, in which they showed how to formally prove the correctness of a compiler that translates arithmetic expressions into code for a register-based machine. In this article, we revisit this example in a modern context, and show how such a compiler can now be calculated directly from a specification of its correctness using simple equational reasoning techniques.

Type
Functional Pearls
Copyright
Copyright © Cambridge University Press 2017 

Footnotes

*

Graham Hutton was funded by EPSRC grant EP/P00587X/1, Unified Reasoning About Program Correctness and Efficiency.

References

Bahr, P. & Hutton, G. (2015) Calculating correct compilers. Journal of Functional Programming, 25, 47 pages.CrossRefGoogle Scholar
Hutton, G. (2016) Programming in Haskell. Cambridge University Press.Google Scholar
McCarthy, J. & Painter, J. (1967) Correctness of a compiler for arithmetic expressions. In Mathematical Aspects of Computer Science, Proceedings of Symposia in Applied Mathematics, vol. 19. American Mathematical Society.Google Scholar
Supplementary material: File

Hutton and Bahr supplementary material

Hutton and Bahr supplementary material 1

Download Hutton and Bahr supplementary material(File)
File 10 KB
Submit a response

Discussions

No Discussions have been published for this article.
You have Access
1
Cited by

Save article to Kindle

To save this article to your Kindle, first ensure coreplatform@cambridge.org is added to your Approved Personal Document E-mail List under your Personal Document Settings on the Manage Your Content and Devices page of your Amazon account. Then enter the ‘name’ part of your Kindle email address below. Find out more about saving to your Kindle.

Note you can select to save to either the @free.kindle.com or @kindle.com variations. ‘@free.kindle.com’ emails are free but can only be saved to your device when it is connected to wi-fi. ‘@kindle.com’ emails can be delivered even when you are not connected to wi-fi, but note that service fees apply.

Find out more about the Kindle Personal Document Service.

Compiling a 50-year journey*
Available formats
×

Save article to Dropbox

To save this article to your Dropbox account, please select one or more formats and confirm that you agree to abide by our usage policies. If this is the first time you used this feature, you will be asked to authorise Cambridge Core to connect with your Dropbox account. Find out more about saving content to Dropbox.

Compiling a 50-year journey*
Available formats
×

Save article to Google Drive

To save this article to your Google Drive account, please select one or more formats and confirm that you agree to abide by our usage policies. If this is the first time you used this feature, you will be asked to authorise Cambridge Core to connect with your Google Drive account. Find out more about saving content to Google Drive.

Compiling a 50-year journey*
Available formats
×
×

Reply to: Submit a response

Please enter your response.

Your details

Please enter a valid email address.

Conflicting interests

Do you have any conflicting interests? *