The Teaching Tool CalcCheck A Proof-Checker for Gries and Schneider’s “Logical Approach to Discrete Math”

  • Wolfram Kahl
Part of the Lecture Notes in Computer Science book series (LNCS, volume 7086)


Students following a first-year course based on Gries and Schneider’s LADM textbook had frequently been asking: “How can I know whether my solution is good?”

We now report on the development of a proof-checker designed to answer exactly that question, while intentionally not helping to find the solutions in the first place. CalcCheck provides detailed feedback to \({\rm L\kern-.36em\raise.3ex\hbox{\sc a}\kern-.15em T\kern-.1667em\lower.7ex\hbox{E}\kern-.125emX}\) -formatted calculational proofs, and thus helps students to develop confidence in their own skills in “rigorous mathematical writing”.

Gries and Schneider’s book emphasises rigorous development of mathematical results, while striking one particular compromise between full formality and customary, more informal, mathematical practises, and thus teaches aspects of both. This is one source of several unusual requirements for a mechanised proof-checker; other interesting aspects arise from details of their notational conventions.


Propositional Logic Abstract Syntax Correct Proof Proof Step Proof Checker 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. 1.
    Andrews, P.B., et al.: ETPS: A system to help students write formal proofs. Journal of Automated Reasoning 32, 75–92 (2004), doi:10.1023/B:JARS.0000021871.18776.94CrossRefGoogle Scholar
  2. 2.
    Abel, A., Chang, B.-Y.E., Pfenning, F.: Human-readable machine-verifiable proofs for teaching constructive logic. In: Proceedings of Workshop on Proof Transformation, Proof Presentation and Complexity of Proofs (PTP 2001). Università degli Studi Siena, Dipartimento di Ingegneria dell’Informazione, Tech. Report 13/0 (2001),
  3. 3.
    Allen, C., Hand, M.: Logic Primer, 2nd edn. MIT Press (2001),
  4. 4.
    Aldrich, J., Simmons, R.J., Shin, K.: SASyLF: An educational proof assistant for language theory. In: Huch, F., Parkin, A. (eds.) Proceedings of the 2008 International Workshop on Functional and Declarative Programming in Education, FDPE 2008, pp. 31–40. ACM (2008)Google Scholar
  5. 5.
    Borak, E., Zalewska, A.: Mizar Course in Logic and Set Theory. In: Kauers, M., Kerber, M., Miner, R., Windsteiger, W. (eds.) MKM/CALCULEMUS 2007. LNCS (LNAI), vol. 4573, pp. 191–204. Springer, Heidelberg (2007)CrossRefGoogle Scholar
  6. 6.
    Contejean, E.: A Certified AC Matching Algorithm. In: van Oostrom, V. (ed.) RTA 2004. LNCS, vol. 3091, pp. 70–84. Springer, Heidelberg (2004)CrossRefGoogle Scholar
  7. 7.
    Grabowski, A., Korniłowicz, A., Naumowicz, A.: Mizar in a nutshell. J. Formalized Reasoning 3(2), 153–245 (2010)MathSciNetzbMATHGoogle Scholar
  8. 8.
    Goldson, D., Reeves, S., Bornat, R.: A review of several programs for the teaching of logic. The Computer Journal 36, 373–386 (1993)CrossRefGoogle Scholar
  9. 9.
    Gries, D., Schneider, F.B.: A Logical Approach to Discrete Math. Monographs in Computer Science. Springer, Heidelberg (1993)CrossRefzbMATHGoogle Scholar
  10. 10.
    Heeren, B.: Top Quality Type Error Messages. PhD thesis, Universiteit Utrecht, The Netherlands (September 2005)Google Scholar
  11. 11.
    Hudak, P., Hughes, J., Jones, S.P., Wadler, P.: A history of Haskell: Being lazy with class. In: Third ACM SIGPLAN History of Programming Languages Conference (HOPL-III), pp. 12–1–12–55. ACM (2007)Google Scholar
  12. 12.
    James Hoover, H., Rudnicki, P.: Teaching freshman logic with mizar-mse. Mathesis Universalis, 3 (1996),; ISSN 1426-3513
  13. 13.
    Knuth, D.E.: Literate programming. The Computer Journal 27(2), 97–111 (1984)CrossRefzbMATHGoogle Scholar
  14. 14.
    Knuth, D.E.: Literate Programming. CSLI Lecture Notes, vol. 27. Center for the Study of Language and Information (1992)Google Scholar
  15. 15.
    Leijen, D., Meijer, E.: Parsec: Direct style monadic parser combinators for the real world. Technical Report UU-CS-2001-27, Department of Computer Science, Universiteit Utrecht (2001),
  16. 16.
    Nipkow, T.: Structured Proofs in Isar/HOL. In: Geuvers, H., Wiedijk, F. (eds.) TYPES 2002. LNCS, vol. 2646, pp. 259–278. Springer, Heidelberg (2003)CrossRefGoogle Scholar
  17. 17.
    Naumowicz, A., Korniłowicz, A.: A Brief Overview of Mizar. In: Berghofer, S., Nipkow, T., Urban, C., Wenzel, M. (eds.) TPHOLs 2009. LNCS, vol. 5674, pp. 67–72. Springer, Heidelberg (2009)CrossRefGoogle Scholar
  18. 18.
    Norell, U.: Towards a Practical Programming Language Based on Dependent Type Theory. PhD thesis, Department of Computer Science and Engineering, Chalmers University of Technology (September 2007)Google Scholar
  19. 19.
    Spivey, J.M.: The Z Notation: A Reference Manual. Prentice Hall International Series in Computer Science. Prentice Hall (1989), Out of print; available via
  20. 20.
    Spivey, M.: The fuzz type-checker for Z, Version 3.4.1, and The fuzz Manual, 2 edn. (2008), (last accessed June 17, 2011)

Copyright information

© Springer-Verlag Berlin Heidelberg 2011

Authors and Affiliations

  • Wolfram Kahl
    • 1
  1. 1.McMaster UniversityHamiltonCanada

Personalised recommendations