A System for Axiomatic Programming

  • Gabriel Dos Reis
Part of the Lecture Notes in Computer Science book series (LNCS, volume 7362)


We present the design and implementation of a system for axiomatic programming, and its application to mathematical software construction. Key novelties include a direct support for user-defined axioms establishing local equalities between types, and overload resolution based on equational theories and user-defined local axioms. We illustrate uses of axioms, and their organization into concepts, in structured generic programming as practiced in computational mathematical systems.


Computer Algebra Function Template Intermediate Language Abelian Monoid Standard Template Library 
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.
    Augustsson, L.: Implementing Haskell Overloading. In: Functional Programming Languages and Computer Architecture, pp. 65–73 (1993)Google Scholar
  2. 2.
    Davenport, J.H.: Private communication (May 2009)Google Scholar
  3. 3.
    Davenport, J.H., Gianni, P., Trager, B.M.: Scratchpad’s View of Algebra II: A Categorical View of Factorization. In: ISSAC 1991: Proceedings of the 1991 International Symposium on Symbolic and Algebraic Computation, pp. 32–38. ACM Press, New York (1991)CrossRefGoogle Scholar
  4. 4.
    Davenport, J.H., Trager, B.M.: Scratchpad’s View of Algebra I: Basic Commutative Algebra. In: Miola, A. (ed.) DISCO 1990. LNCS, vol. 429, pp. 40–54. Springer, Heidelberg (1990)CrossRefGoogle Scholar
  5. 5.
    Dehnert, J.C., Stepanov, A.: Fundamentals of Generic Programming. In: Jazayeri, M., Musser, D.R., Loos, R.G.K. (eds.) Dagstuhl Seminar 1998. LNCS, vol. 1766, pp. 1–11. Springer, Heidelberg (2000)CrossRefGoogle Scholar
  6. 6.
    Reis, G.D.: Generic Programming in C++: The next level. In: The Association of C and C++ Users Spring Conference (April 2002)Google Scholar
  7. 7.
    Reis, G.D., Stroustrup, B.: Specifying C++ Concepts. In: Conference Record of POPL 2006: The 33th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, Charleston, South Carolina, USA, pp. 295–308 (2006)Google Scholar
  8. 8.
    Reis, G.D., Stroustrup, B.: General Constant Expressions for System Programming Languages. In: Proceedings of the 25th Symposium on Applied Computing, Sierre, Switzerland, pp. 2133–2138. ACM Press (March 2010)Google Scholar
  9. 9.
    Reis, G.D., Stroustrup, B., Meredith, A.: Axioms: Semantics Aspects of C++ Concepts. Technical Report N2887=09-0077, ISO/IEC SC22/JTC1/WG21 (June 2009),
  10. 10.
    Gregor, D., Järvi, J., Siek, J., Stroustrup, B., Reis, G.D., Lumsdaine, A.: Concepts: Linguistic Support for Generic Programming in C++. In: OOPSLA 2006: Proceedings of the 21st Annual ACM SIGPLAN Conference on Object-Oriented Programming Languages, Systems, and Applications, pp. 291–310. ACM Press, New York (2006)CrossRefGoogle Scholar
  11. 11.
    Hall, C.V., Hammond, K., Jones, S.P., Wadler, P.L.: Type classes in Haskell. ACM Transactions on Programming Languages and Systems 18(2), 109–138 (1996)CrossRefGoogle Scholar
  12. 12.
    International Organization for Standards. International Standard ISO/IEC 14882. Programming Languages — C++, 2nd edn. (2003)Google Scholar
  13. 13.
    Jenks, R.D., Sutor, R.S.: AXIOM: The Scientific Computation System. Springer (1992)Google Scholar
  14. 14.
    Jenks, R.D., Trager, B.M.: A Language for Computational Algebra. SIGPLAN Not. 16(11), 22–29 (1981)CrossRefGoogle Scholar
  15. 15.
    Musser, D.A., Stepanov, A.A.: Generic Programming. In: Gianni, P. (ed.) ISSAC 1988. LNCS, vol. 358, pp. 13–25. Springer, Heidelberg (1989)CrossRefGoogle Scholar
  16. 16.
    Musser, D.R., Stepanov, A.: Algorithm-oriented Generic Libraries. Software–Practice and Experience 24(7), 623–642 (1994)CrossRefGoogle Scholar
  17. 17.
    Jones, S.P.: Haskell 98 Language and Libraries, The Revised Report. Cambridge University Press (2003)Google Scholar
  18. 18.
    Stepanov, A., Lee, M.: The Standard Template Library. Technical Report N0482=94-0095, ISO/IEC SC22/JTC1/WG21 (May 1994)Google Scholar
  19. 19.
    Stepanov, A., McJones, P.: Elements of Programming. Addison-Wesley (2009)Google Scholar
  20. 20.
    Stroustrup, B.: The Design and Evolution of C++. Addison-Wesley (1994)Google Scholar
  21. 21.
    Stroustrup, B.: The C++ Programming Language, special edn. Addison-Wesley (2000)Google Scholar
  22. 22.
    Stroustrup, B.: Simplifying the use of concepts. Technical Report N2906, ISO/IEC SC22/JTC1/WG21 (June 2009)Google Scholar
  23. 23.
    Stroustrup, B.: The C++0x ”Remove Concepts” Decision. Dr. Dobb’s Journal (2009),, Republished with permission in Overload Journal 92 (August 2009)
  24. 24.
    Sutton, A., Stroustrup, B.: Design of Concept Libraries for C++. In: Sloane, A., Aßmann, U. (eds.) SLE 2011. LNCS, vol. 6940, pp. 97–118. Springer, Heidelberg (2012)CrossRefGoogle Scholar
  25. 25.
    Tucker Taft, S., Duff, R.A., Brukardt, R.L., Plödereder, E. (eds.): Consolidated Ada Reference Manual. LNCS, vol. 2219. Springer, Heidelberg (2001)zbMATHGoogle Scholar
  26. 26.
    Wadler, P., Blott, S.: How to make ad-hoc polymorphism less ad hoc. In: Proceedings of the 16th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, Austin, Texas, USA, pp. 60–76 (1989)Google Scholar
  27. 27.
    Watt, S.: What Happened to Languages for Symbolic Mathematical Computation? In: Proceedings of Programming Languages for Mechanized Mathematics (PLMMS), Hagenberg, Austria, June 29-30, pp. 81–90. RISC-Linz (2007)Google Scholar
  28. 28.
    Weibel, T., Gonnet, G.H.: An Assume Facility for CAS, with a Sample Implementation for Maple. In: Fitch, J. (ed.) DISCO 1992. LNCS, vol. 721, pp. 95–103. Springer, Heidelberg (1993)CrossRefGoogle Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2012

Authors and Affiliations

  • Gabriel Dos Reis
    • 1
  1. 1.Texas A&M UniversityUSA

Personalised recommendations