Generic, Type-Safe and Object Oriented Computer Algebra Software

  • Heinz Kredel
  • Raphael Jolly
Part of the Lecture Notes in Computer Science book series (LNCS, volume 6244)

Abstract

Advances in computer science, in particular object oriented programming, and software engineering have had little practical impact on computer algebra systems in the last 30 years. The software design of existing systems is still dominated by ad-hoc memory management, weakly typed algorithm libraries and proprietary domain specific interactive expression interpreters. We discuss a modular approach to computer algebra software: usage of state-of-the-art memory management and run-time systems (e.g. JVM) usage of strongly typed, generic, object oriented programming languages (e.g. Java) and usage of general purpose, dynamic interactive expression interpreters (e.g. Python) To illustrate the workability of this approach, we have implemented and studied computer algebra systems in Java and Scala. In this paper we report on the current state of this work by presenting new examples.

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. 1.
    Frink, A., Bauer, C., Kreckel, R.: Introduction to the GiNaC framework for symbolic computation within the C++ programming language. J. Symb. Comput. (2002)Google Scholar
  2. 2.
    Stansifer, R., Baumgartner, G.: A Proposal to Study Type Systems for Computer Algebra. Technical Report 90-07, Johannes Kepler University, Linz, Austria (1990)Google Scholar
  3. 3.
    Jenks, R., Sutor, R. (eds.): Axiom The Scientific Computation System. Springer, Heidelberg (1992)MATHGoogle Scholar
  4. 4.
    Calmet, J., Seiler, W.M.: Computer algebra and field theories. Mathematics and Computers in Simulation 45, 33–37 (1998)CrossRefMATHGoogle Scholar
  5. 5.
    Watt, S.M.: On the future of Computer Algebra Systems at the threshold of 2010. In: Proceedings ASCM-MACIS 2009, pp. 422–430. Kyushu University, Fukuoka (2009)Google Scholar
  6. 6.
    Wolfram, S.: WolframAlpha. Technical report (2009), http://www.wolframalpha.com/ (accessed January 2010)
  7. 7.
    Certik, O.: SymPy Python library for symbolic mathematics. Technical report (since 2006), http://code.google.com/p/sympy/ (accessed November 2009)
  8. 8.
    GWT Developers: Google Web Toolkit consists of a Java - to - JavaScript compiler, user interface API, and related tools. Technical report (2008), http://code.google.com/webtoolkit/ (accessed November 2009)
  9. 9.
    Eclipse Developers: Eclipse rich client platform (RCP). Technical report (2008), http://www.eclipse.org/ (accessed November 2009)
  10. 10.
    Kramer, A.C.: MathEclipse is usable as an online Java computer algebra system or Eclipse plugin. Technical report (2009, since 2002), http://www.matheclipse.org/ (accessed November 2009)
  11. 11.
    Greuel, G., Pfister, G., Schönemann, H.: Singular - A Computer Algebra System for Polynomial Computations. In: Computer Algebra Handbook, pp. 445–450. Springer, Heidelberg (2003)Google Scholar
  12. 12.
    Greuel, G., Pfister, G.: A Singular introduction to commutative algebra. Springer, Heidelberg (2007)MATHGoogle Scholar
  13. 13.
    Stein, W.: SAGE Mathematics Software (Version 2.7). The SAGE Group (since 2005), http://www.sagemath.org (accessed November 2009)
  14. 14.
    AppEngine Developers: Google App Engine enables you to build and host web apps on the same systems that power Google applications. Technical report (2010), http://code.google.com/appengine (accessed June 2010)
  15. 15.
    Android Developers: Android is a software stack for mobile devices including an operating system, middleware and key applications. Technical report (2008), http://code.google.com/android/ (accessed November 2009)
  16. 16.
    Abdali, S.K., Cherry, G.W., Soiffer, N.: An object-oriented approach to algebra system design. In: Char, B.W. (ed.) Proc. SYMSAC 1986, pp. 24–30. ACM Press, New York (1986)Google Scholar
  17. 17.
    Zippel, R.: Weyl computer algebra substrate. In: Miola, A. (ed.) DISCO 1993. LNCS, vol. 722, pp. 303–318. Springer, Heidelberg (1993)CrossRefGoogle Scholar
  18. 18.
    Parisse, B.: Giac/Xcas, a free computer algebra system. Technical report, University of Grenoble (2008)Google Scholar
  19. 19.
    Bernardin, L., Char, B., Kaltofen, E.: Symbolic computation in Java: an appraisement. In: Dooley, S. (ed.) Proc. ISSAC 1999, pp. 237–244. ACM Press, New York (1999)Google Scholar
  20. 20.
    Bernardin, L.: A Java framework for massively distributed symbolic computing. SIGSAM Bull. 33(3), 20–21 (1999)CrossRefGoogle Scholar
  21. 21.
    Norman, A.C.: Further evaluation of Java for symbolic computation. In: ISSAC 2000: Proc. International Symposium on Symbolic and Algebraic Computation 2000, pp. 258–265. ACM, New York (2000)Google Scholar
  22. 22.
    Niculescu, V.: A design proposal for an object oriented algebraic library. Technical report, Studia Universitatis “Babes-Bolyai” (2003)Google Scholar
  23. 23.
    Niculescu, V.: OOLACA: an object oriented library for abstract and computational algebra. In: OOPSLA Companion, pp. 160–161. ACM, New York (2004)Google Scholar
  24. 24.
    Whelan, C., Duffy, A., Burnett, A., Dowling, T.: A Java API for polynomial arithmetic. In: Proc. PPPJ 2003, pp. 139–144. Computer Science Press, New York (2003)Google Scholar
  25. 25.
    Platzer, A.: The Orbital library. Technical report, University of Karlsruhe (2005), http://www.functologic.com/
  26. 26.
    Jolly, R.: jscl-meditor - Java symbolic computing library and mathematical editor. Technical report (since 2003), http://jscl-meditor.sourceforge.net/ (accessed November 2009)
  27. 27.
    Kredel, H.: A systems perspective on A3L. In: Proc. A3L: Algorithmic Algebra and Logic 2005, pp. 141–146. University of Passau (April 2005)Google Scholar
  28. 28.
    Focalize Developers: Focalize is a software distribution for program certification. Technical report (2005-2010), http://focalize.inria.fr/ (accessed June 2010)
  29. 29.
    Davenport, H.J., 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
  30. 30.
    Davenport, H.J., Gianni, P., Trager, B.M.: Scratchpad’s view of algebra II: A categorical view of factorization. In: Proc. ISSAC 1991, Bonn, pp. 32–38 (1991)Google Scholar
  31. 31.
    Davenport, H.J.: Abstract data types in Computer Algebra. In: Nielsen, M., Rovan, B. (eds.) MFCS 2000. LNCS, vol. 1893, pp. 21–35. Springer, Heidelberg (2000)CrossRefGoogle Scholar
  32. 32.
    Bronstein, M.: Sigma\(^{\mbox{{it}}}\) - a strongly-typed embeddable computer algebra library. In: Limongelli, C., Calmet, J. (eds.) DISCO 1996. LNCS, vol. 1128, pp. 22–33. Springer, Heidelberg (1996)CrossRefGoogle Scholar
  33. 33.
    Musser, D., Schupp, S., Loos, R.: Requirement oriented programming - concepts, implications and algorithms. In: Jazayeri, M., Musser, D.R., Loos, R.G.K. (eds.) Dagstuhl Seminar 1998. LNCS, vol. 1766, pp. 12–24. Springer, Heidelberg (2000)CrossRefGoogle Scholar
  34. 34.
    Schupp, S., Loos, R.: SuchThat - generic programming works. In: Jazayeri, M., Musser, D.R., Loos, R.G.K. (eds.) Dagstuhl Seminar 1998. LNCS, vol. 1766, pp. 133–145. Springer, Heidelberg (2000)CrossRefGoogle Scholar
  35. 35.
    Dragan, L., Watt, S.: Performance Analysis of Generics in Scientific Computing. In: Proceedings of Seventh International Symposium on Symbolic and Numeric Algorithms for Scientific Computing, pp. 90–100. IEEE Computer Society, Los Alamitos (2005)Google Scholar
  36. 36.
    Freundt, S., Horn, P., Konovalov, A., Linton, S., Roozemond, D.: Symbolic computation software composability protocol (SCSCP) specification, version 1.3. Technical report, SCIEnce Consortium (2009)Google Scholar
  37. 37.
    OpenMath Consortium: OpenMath, version 2.0. Technical report, OpenMath Consortium (2004), http://www.openmath.org/standard/om20-2004-06-30/omstd20html-0.xml (accessed January 2010)
  38. 38.
    SCIEnce Consortium: Symbolic computation infrastructure for Europe. Technical report, SCIEnce Consortium (2009)Google Scholar
  39. 39.
    Horn, P., Roozemond, D.: The Popcorn OpenMath representation, version 1.0. Technical report, SCIEnce EU Project (2009)Google Scholar
  40. 40.
    Horn, P., Roozemond, D.: WUPSI universal Popcorn SCSCP interface, version 1.0. Technical report, SCIEnce EU Project (2009)Google Scholar
  41. 41.
    Jolly, R., Kredel, H.: How to turn a scripting language into a domain specific language for computer algebra. Technical report (2008), http://arXiv.org/abs/0811.1061
  42. 42.
    Jolly, R., Kredel, H.: Symbolic script programming for Java. Technical report (2009), http://arXiv.org/abs/0906.2315
  43. 43.
    Kredel, H.: On the Design of a Java Computer Algebra System. In: Proc. PPPJ 2006, pp. 143–152. University of Mannheim (2006)Google Scholar
  44. 44.
    Kredel, H.: Evaluation of a Java Computer Algebra System. In: Kapur, D. (ed.) ASCM 2007. LNCS (LNAI), vol. 5081, pp. 59–62. Springer, Heidelberg (2008)CrossRefGoogle Scholar
  45. 45.
    Kredel, H.: Evaluation of a Java computer algebra system. In: Kapur, D. (ed.) ASCM 2007. LNCS (LNAI), vol. 5081, pp. 121–138. Springer, Heidelberg (2008)CrossRefGoogle Scholar
  46. 46.
    Kredel, H.: Multivariate greatest common divisors in the Java Computer Algebra System. In: Proc. Automated Deduction in Geometry (ADG), pp. 41–61. East China Normal University, Shanghai (2008)Google Scholar
  47. 47.
    Kredel, H.: On a Java Computer Algebra System, its performance and applications. Science of Computer Programming 70(2-3), 185–207 (2008)MathSciNetCrossRefMATHGoogle Scholar
  48. 48.
    Kredel, H.: Comprehensive Gröbner bases in a Java Computer Algebra System. In: Proceedings ASCM 2009, pp. 77–90. Kyushu University, Fukuoka (2009)Google Scholar
  49. 49.
    Kredel, H.: Distributed parallel Gröbner bases computation. In: Proc. Workshop on Engineering Complex Distributed Systems at CISIS 2009. University of Fukuoka, Japan (2009), CD–ROMGoogle Scholar
  50. 50.
    Kredel, H.: Distributed hybrid Gröbner bases computation. In: Proc. Workshop on Engineering Complex Distributed Systems at CISIS 2010. University of Krakow, Poland (2010), CD–ROMGoogle Scholar
  51. 51.
    Kredel, H.: The Java algebra system (JAS). Technical report (since 2000), http://krum.rz.uni-mannheim.de/jas/
  52. 52.
    Geddes, K.O., Czapor, S.R., Labahn, G.: Algorithms for Computer Algebra. Kluwer Academic Publishers, Dordrecht (1993)MATHGoogle Scholar
  53. 53.
    Kramer, A.C.: Symja a symbolic math system written in Java based on the MathEclipse libraries. Technical report (since 2009), http://code.google.com/p/symja/ (accessed January 2010)
  54. 54.
    Android Scripting Developers: Android Scripting brings scripting languages to android. Technical report (2009), http://code.google.com/p/android-scripting/ (accessed June 2010)
  55. 55.
    Apache Software Foundation: Commons-Math: The Jakarta mathematics library. Technical report (2003-2010), http://commons.apache.org/ (accessed November 2009)
  56. 56.
    Keilhauer, A., Levy, S.D., Lochbihler, A., Ökmen, S., Thimm, G.L., Würzebesser, C.: JLinAlg: a Java-library for linear algebra without rounding errors. Technical report (2003-2010), http://jlinalg.sourceforge.net/ (accessed January 2010)
  57. 57.
    Sun Microsystems, Inc.: JSR 223: Scripting for the Java platform. Technical report (2003-2006), http://scripting.dev.java.net/ (accessed November 2009)
  58. 58.
    ABCL Developers: Armed bear common lisp (ABCL) - common lisp on the JVM. Technical report (2003-2010), http://common-lisp.net/project/armedbear/ (accessed January 2010)
  59. 59.
    Reduce Developers: REDUCE interactive system for general algebraic computations. Technical report (1968-2010), http://www.reduce-algebra.com/ (accessed January 2010)

Copyright information

© Springer-Verlag Berlin Heidelberg 2010

Authors and Affiliations

  • Heinz Kredel
    • 1
  • Raphael Jolly
    • 1
  1. 1.IT-CenterUniversity of MannheimParisFrance

Personalised recommendations