Abstract
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.
Keywords
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.
This is a preview of subscription content, log in via an institution.
Buying options
Tax calculation will be finalised at checkout
Purchases are for personal use only
Learn about institutional subscriptionsPreview
Unable to display preview. Download preview PDF.
References
Augustsson, L.: Implementing Haskell Overloading. In: Functional Programming Languages and Computer Architecture, pp. 65–73 (1993)
Davenport, J.H.: Private communication (May 2009)
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)
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)
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)
Reis, G.D.: Generic Programming in C++: The next level. In: The Association of C and C++ Users Spring Conference (April 2002)
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)
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)
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), http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2009/n2887.pdf
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)
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)
International Organization for Standards. International Standard ISO/IEC 14882. Programming Languages — C++, 2nd edn. (2003)
Jenks, R.D., Sutor, R.S.: AXIOM: The Scientific Computation System. Springer (1992)
Jenks, R.D., Trager, B.M.: A Language for Computational Algebra. SIGPLAN Not. 16(11), 22–29 (1981)
Musser, D.A., Stepanov, A.A.: Generic Programming. In: Gianni, P. (ed.) ISSAC 1988. LNCS, vol. 358, pp. 13–25. Springer, Heidelberg (1989)
Musser, D.R., Stepanov, A.: Algorithm-oriented Generic Libraries. Software–Practice and Experience 24(7), 623–642 (1994)
Jones, S.P.: Haskell 98 Language and Libraries, The Revised Report. Cambridge University Press (2003)
Stepanov, A., Lee, M.: The Standard Template Library. Technical Report N0482=94-0095, ISO/IEC SC22/JTC1/WG21 (May 1994)
Stepanov, A., McJones, P.: Elements of Programming. Addison-Wesley (2009)
Stroustrup, B.: The Design and Evolution of C++. Addison-Wesley (1994)
Stroustrup, B.: The C++ Programming Language, special edn. Addison-Wesley (2000)
Stroustrup, B.: Simplifying the use of concepts. Technical Report N2906, ISO/IEC SC22/JTC1/WG21 (June 2009)
Stroustrup, B.: The C++0x ”Remove Concepts” Decision. Dr. Dobb’s Journal (2009), http://www.ddj.com/cpp/218600111?pgno=1 , Republished with permission in Overload Journal 92 (August 2009)
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)
Tucker Taft, S., Duff, R.A., Brukardt, R.L., Plödereder, E. (eds.): Consolidated Ada Reference Manual. LNCS, vol. 2219. Springer, Heidelberg (2001)
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)
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)
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)
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2012 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Dos Reis, G. (2012). A System for Axiomatic Programming. In: Jeuring, J., et al. Intelligent Computer Mathematics. CICM 2012. Lecture Notes in Computer Science(), vol 7362. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-642-31374-5_20
Download citation
DOI: https://doi.org/10.1007/978-3-642-31374-5_20
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-642-31373-8
Online ISBN: 978-3-642-31374-5
eBook Packages: Computer ScienceComputer Science (R0)