Skip to main content

What Is the Difference Between Proofs and Programs?

  • Chapter
  • First Online:
Proof, Computation and Agency

Part of the book series: Synthese Library ((SYLI,volume 352))

Abstract

About the year 1900 there was just “one true logic”: classical logic. In such a logic one would expect that everything was clear. Certainly, in that logic, any statement was either true or false: there was the law of the excluded middle, (A ˅ ¬A). But how do we check an infinite number of instances? What does it mean to say that there is no largest pair of twin primes, that is to say that there is an end to such pairs such as 5 and 7; 11 and 13 or even 202 289 and 202 291?

This is a preview of subscription content, log in via an institution to check access.

Access this chapter

Chapter
USD 29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD 129.00
Price excludes VAT (USA)
  • Available as EPUB and PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD 169.99
Price excludes VAT (USA)
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info
Hardcover Book
USD 169.99
Price excludes VAT (USA)
  • Durable hardcover edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Institutional subscriptions

Notes

  1. 1.

    A formula F is a Harrop formula if it is (1) an atomic formula, (2) of the form \((A \wedge B)\) where A and B are Harrop formulae, (3) of the form \((A \rightarrow B)\) where B (but not necessarily A) is a Harrop formula, or (4) of the form \(\forall x .A\) where A is a Harrop formula. Harrop formulae, in a sense, contribute no information for the program. However, the rule (⊥-E) easily extends, through a proof by induction, to provide a proof of any formula A from the false formula ⊥ since atomic formulae are Harrop and so are their negations \((A\rightarrow\perp)\).

  2. 2.

    α-reduction refers to the simple renaming of one variable by another (without clashes).

  3. 3.

    The square brackets indicate that A can be discharged, i.e. is not needed for the proof of B, though it is for the proof of B, of course.

  4. 4.

    Here we have written \(f(a)\) to show that we think of a as being involved in f.

  5. 5.

    This process of reduction is also called cut elimination.

  6. 6.

    Some people use the term isomorphism but there are technical difficulties involved in making the correspondence one to one, so I prefer the weaker terminology.

  7. 7.

    The process can also be extended to higher order logic.

  8. 8.

    Intuitively speaking, the specification is the statement about the result of the program. See also below Section 6.4.1.

  9. 9.

    The logical system that we then have is therefore related to the labelled deduction systems of Gabbay [9].

  10. 10.

    It can be avoided by adding extra predicates, one for each sort. In this case instead of \(x:s\) meaning “x is of sort s” we have a predicate s and we write \(s(x)\rightarrow \ldots\), which can be read as “If x is of sort s, then …”.

  11. 11.

    The restriction to constructive systems of logic is essential for us.

  12. 12.

    This is a very serious issue when it comes to the control of powerful systems, in particular, the control of nuclear weapons.

  13. 13.

    This was inspired by looking at work of Helmut Schwichtenberg on program extraction in [3].

References

  1. Barendregt P. H. The Lambda Calculus, Its Syntax and Semantics. North Holland Publishing Company, Amsterdam, 1995.

    Google Scholar 

  2. Barendregt P. H. Lambda calculi with types. In S. Abramsky and D. Gabbay and T. Maibaum, editors, Handbook of Logic in Computer Science, vol. 2, pages 117–309 (Background: Computational Structures). Clarendon Press, Oxford, 1992.

    Google Scholar 

  3. Berger U., and Schwichtenberg H. Program extraction from classical proofs. In D. Leivant, editor, Logic and Computational Complexity, International Workshop LCC ’94, Indiapolis, IN, USA, October 1994, pages 77–97, 1995.

    Google Scholar 

  4. CoFI Language Design Task Group on Language Design. CASL, The Common Algebraic Specification Language, Summary, 25 March 2001, March 2001. Available at http://www.brics.dk/Projects/CoFI/Documents/CASL/Summary/ (accessed 3.i.05)

  5. Crossley J. N. What is mathematical logic? A survey. Tutorial at the First International Conference on Logic and and its application to other disciplines, IIT Bombay, 2005, submitted for publication.

    Google Scholar 

  6. Crossley J. N. Iman Poernomo, and Martin Wirsing. Extraction of structured programs from specification proofs. In D. Bert, C. Choppy, and P. Mosses, editors, Workshop on Algebraic Development Techniques, vol. 1827 of LNCS, pages 419–437, 1999.

    Google Scholar 

  7. Crossley, J. N., and Shepherdson J. C. Extracting programs from proofs by an extension of the Curry-Howard process. In J. N. Crossley, J. B. Remmel, R. A. Shore, and M. E. Sweedler, editors, Logical Methods: In honor of AnilNerode’s Sixtieth Birthday, pages 222–288. Birkhäuser, Boston, MA, 1993.

    Chapter  Google Scholar 

  8. Dummett M. Elements of Intuitionism. Oxford University Press, Oxford, 1977.

    Google Scholar 

  9. Gabbay D. Labelled Deductive Systems. Oxford University Press, Oxford, 1996.

    Google Scholar 

  10. Girard J. Y. Interprétation functionelle et élimination des coupures dans l’arithmétiqued’ordre supérieure. PhD thesis, Université Paris VII, Paris, 1972.

    Google Scholar 

  11. Girard J. Y., Lafont Y., and Taylor P. Proofs and Types. Cambridge University Press, Cambridge, 1989.

    Google Scholar 

  12. Hoare C. A. R. An axiomatic basis for computer programming, Commun. Assoc Comput. Machinery, 1210: 576–80, 1969.

    Google Scholar 

  13. Howard W. The formulae-as-types notion of construction. In J. R. Hindley and J. Seldin, editors, To H.B. Curry: Essays on Combinatory Logic, Lambda Calculus, and Formalism, pages 479–490. Academic Press, New York, NY, 1969.

    Google Scholar 

  14. Kleene S. C. Introduction to Metamathematics. North-Holland, Amsterdam, 1952.

    Google Scholar 

  15. Peterreins H. A natural-deduction-like calculus for structured specifications. PhD thesis, Ludwig-Maximilians-Universität, München, 1996.

    Google Scholar 

  16. Poernomo I. H., Crossley J. N., and Wirsing M. Adapting Proofs-Asprograms. Springer, New York, NY, 2005.

    Google Scholar 

  17. Wirsing M. Structured specifications: Syntax, semantics and proof calculus. In M. Broy, editor, Informatik und Mathematik, Festschrift für F. L. Bauer, pages 269–283. Springer, Berlin, 1991.

    Google Scholar 

Download references

Acknowledgements

Many years ago Georg Kreisel said that I should not work in proof theory, which is the setting of the work described here. I have not taken that advice but am grateful to him for his enthusiasm and stimulation over many decades. I was originally introduced to the area of program extraction when visiting my old friend Anil Nerode in Cornell in the 1990s where we studied Girard’s thesis [10], essentially published as [11]. Later John Shepherdson (Bristol) and I extended the Curry-Howard terms to cover all the standard logical connectives directly, that is to say, without going through what I regard as the tortuous translations of Girard into higher order logic. Martin Wirsing of Ludwig-Maximilians Universität, Munich, and I, inspired by work of Martin and his student Hannes Peterreins, began to produce elegant rules for the context of algebraic specifications. From then on, with my former student Iman Poernomo, now at King’s College, London we have extended the logical systems even further to structured specifications and then to imperative programming. The idea of the Curry-Howard protocol is due to Iman Poernomo. His thesis, part of which is the basis for Section 6.4.2, has recently been published in a revised version as [16]. I am extremely grateful to all of these colleagues for their friendship, ideas and stimulation.

Author information

Authors and Affiliations

Authors

Corresponding author

Correspondence to John N. Crossley .

Editor information

Editors and Affiliations

Rights and permissions

Reprints and permissions

Copyright information

© 2011 Springer Science+Business Media B.V.

About this chapter

Cite this chapter

Crossley, J.N. (2011). What Is the Difference Between Proofs and Programs?. In: van Benthem, J., Gupta, A., Parikh, R. (eds) Proof, Computation and Agency. Synthese Library, vol 352. Springer, Dordrecht. https://doi.org/10.1007/978-94-007-0080-2_6

Download citation

Publish with us

Policies and ethics