Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
Axiom (computer algebra system)
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
{{Short description|Computer algebra system}} {{Infobox software | name = Axiom | developer = Independent group of people | latest release version = 20210105dp1 | latest release date = {{Start date and age|2025|05|03}}<ref>{{cite web |title=AXIOM | url=https://dl.sv.gnu.org/releases/axiom/axiom_20210105dp1.tar.gz}}</ref> | repo = https://git.sv.gnu.org/cgit/axiom.git | operating system = [[Cross-platform]] | genre = [[Computer algebra system]] | license = [[BSD licenses|Modified BSD License]] | website = {{URL|http://www.nongnu.org/axiom}} | programming language = [[Lisp (programming language)|Lisp]] }} '''Axiom''' is a [[free software|free]], general-purpose [[computer algebra system]]. It consists of an interpreter environment, a compiler and a library, which defines a [[strongly typed]] hierarchy. == History == Two computer algebra systems named '''Scratchpad''' were developed by [[IBM]]. The first one was started in 1965 by James Griesmer<ref>{{Cite journal|title=James Griesmer 1929--2011|first=John|last=Fitch|date=July 23, 2012|journal=ACM Communications in Computer Algebra|volume=46|issue=1/2|pages=10–11|doi=10.1145/2338496.2338499|s2cid=36788754 |doi-access=free}}</ref> at the request of [[Ralph E. Gomory|Ralph Gomory]], and written in [[Fortran]].<ref>{{Cite web|url=http://www.nongnu.org/axiom/|title=Axiom Computer Algebra System|website=www.nongnu.org/axiom/}}</ref> The development of this software was stopped before any public release. The second Scratchpad, originally named '''Scratchpad II''', was developed from 1977 on, at [[Thomas J. Watson Research Center]], under the direction of Richard Dimick Jenks.<ref>{{Cite web|url=https://www.eecis.udel.edu/~caviness/jenks/jenksbio/|title=Richard D. Jenks Biographical Information|website=www.eecis.udel.edu}}</ref> The design is principally due to Richard D. Jenks (IBM Research), [[James H. Davenport]] (University of Bath), Barry M. Trager (IBM Research), David Y.Y. Yun (Southern Methodist University) and [[Victor S. Miller]] (IBM Research). Early consultants on the project were David Barton (University of California, Berkeley) and [[James W. Thatcher]] (IBM Research). Implementation included Robert Sutor (IBM Research), Scott C. Morrison (University of California, Berkeley), Christine J. Sundaresan (IBM Research), Timothy Daly (IBM Research), [[Patrizia Gianni]] (University of Pisa), Albrecht Fortenbacher (Universitaet Karlsruhe), [[Stephen M. Watt]] (IBM Research and University of Waterloo), Josh Cohen (Yale University), Michael Rothstein (Kent State University), Manuel Bronstein (IBM Research), Michael Monagan (Simon Fraser University), Jonathan Steinbach (IBM Research), William Burge (IBM Research), Jim Wen (IBM Research), William Sit (City College of New York), and Clifton Williamson (IBM Research)<ref>{{Cite journal|url=https://www.springer.com/gp/book/9783540159841|title=EUROCAL '85 | SpringerLink|website=www.springer.com}}</ref> Scratchpad II was renamed '''Axiom''' when IBM decided, circa 1990, to make it a commercial product. A few years later, it was sold to [[Numerical Algorithms Group|NAG]]. In 2001, it was withdrawn from the market and re-released under the [[Modified BSD License]]. Since then, the project's lead developer has been Tim Daly. In 2007, Axiom was [[fork (software development)|forked]] twice, originating two different [[open-source software|open-source]] projects: '''OpenAxiom'''<ref>{{Cite web|url=http://www.open-axiom.org/|title=OpenAxiom: The Open Scientific Computation Platform|website=www.open-axiom.org}}</ref> and '''[[FriCAS]]''',<ref>{{Cite web|url=https://fricas.github.io/|title=FriCAS 18a5ef5d99c796a89efeac06df40043a85b3d44d — FriCAS|website=fricas.github.io}}</ref> following "serious disagreement about project goals".<ref>{{Cite web|url=https://fricas.github.io/history.html|title=History — FriCAS|website=fricas.github.io}}</ref> The Axiom project continued to be developed by Tim Daly. The current research direction is [http://icms-conference.org/2018/sessions/session14/ "Proving Axiom Sane"], that is, logical, rational, judicious, and sound. == Documentation == Axiom is a [[literate programming|literate program]].<ref>[http://www.nongnu.org/axiom/axiom-website/documentation.html Why Literate Programming?] at [http://www.nongnu.org/axiom www.nongnu.org/axiom website]</ref> The source code is becoming available in a set of volumes which are available on the <code>www.nongnu.org/axiom</code> website. These volumes contain the actual source code of the system. The currently available documents are: * [https://www.nongnu.org/axiom/axiom-website/toc.pdf Combined Table of Contents] * Volume 0: [https://www.nongnu.org/axiom/axiom-website/bookvol0.pdf Axiom Jenks and Sutor]—The main textbook * Volume 1: [https://www.nongnu.org/axiom/axiom-website/bookvol1.pdf Axiom Tutorial]—A simple introduction * Volume 2: [https://www.nongnu.org/axiom/axiom-website/bookvol2.pdf Axiom Users Guide]—Detailed examples of domain use (incomplete) * Volume 3: [https://www.nongnu.org/axiom/axiom-website/bookvol3.pdf Axiom Programmers Guide]—Guided examples of program writing (incomplete) * Volume 4: [https://www.nongnu.org/axiom/axiom-website/bookvol4.pdf Axiom Developers Guide]—Short essays on developer-specific topics (incomplete) * Volume 5: [https://www.nongnu.org/axiom/axiom-website/bookvol5.pdf Axiom Interpreter]—Source code for Axiom interpreter (incomplete) * Volume 6: [https://www.nongnu.org/axiom/axiom-website/bookvol6.pdf Axiom Command]—Source code for system commands and scripts (incomplete) * Volume 7: [https://www.nongnu.org/axiom/axiom-website/bookvol7.pdf Axiom Hyperdoc]—Source code and explanation of X11 Hyperdoc help browser ** Volume 7.1 [https://www.nongnu.org/axiom/axiom-website/bookvol7.1.pdf Axiom Hyperdoc Pages]—Source code for Hyperdoc pages * Volume 8: [https://www.nongnu.org/axiom/axiom-website/bookvol8.pdf Axiom Graphics]—Source code for X11 Graphics subsystem ** Volume 8.1 [https://www.nongnu.org/axiom/axiom-website/bookvol8.1.pdf Axiom Gallery]—A Gallery of Axiom images * Volume 9: [https://www.nongnu.org/axiom/axiom-website/bookvol9.pdf Axiom Compiler]—Source code for Spad compiler (incomplete) * Volume 10: [https://www.nongnu.org/axiom/axiom-website/bookvol10.pdf Axiom Algebra Implementation]—Essays on implementation issues (incomplete) ** Volume 10.1: [https://www.nongnu.org/axiom/axiom-website/bookvol10.1.pdf Axiom Algebra Theory]—Essays containing background theory ** Volume 10.2: [https://www.nongnu.org/axiom/axiom-website/bookvol10.2.pdf Axiom Algebra Categories]—Source code for Axiom categories ** Volume 10.3: [https://www.nongnu.org/axiom/axiom-website/bookvol10.3.pdf Axiom Algebra Domains]—Source code for Axiom domains ** Volume 10.4: [https://www.nongnu.org/axiom/axiom-website/bookvol10.4.pdf Axiom Algebra Packages]—Source code for Axiom packages ** Volume 10.5: [http://www.nongnu.org/axiom/axiom-website/bookvol10.5.pdf Axiom Algebra Numerics]—Source code for Axiom numerics * Volume 11: [https://www.nongnu.org/axiom/axiom-website/bookvol11.pdf Axiom Browser]—Source pages for Axiom Firefox browser front end * Volume 12: [https://www.nongnu.org/axiom/axiom-website/bookvol12.pdf Axiom Crystal]—Source code for Axiom Crystal front end (incomplete) * Volume 13: [https://www.nongnu.org/axiom/axiom-website/bookvol13.pdf Proving Axiom Correct]—Prove Axiom Algebra (incomplete) * Volume 15: [https://www.nongnu.org/axiom/axiom-website/bookvol15.pdf The Axiom SANE Compiler] * Bibliography: [https://www.nongnu.org/axiom/axiom-website/bookvolbib.pdf Axiom Bibliography]—Literature references * Bug List: [https://www.nongnu.org/axiom/axiom-website/bookvolbug.pdf Axiom Bug List]-Bug List * Reference Card: [https://www.nongnu.org/axiom/axiom-website/refcard.pdf Axiom Reference Card]—Useful function summary == Videos == The Axiom project has a major focus on providing documentation. Recently the project announced the first in a series of instructional videos, which are also available on the <code>www.nongnu.org/axiom</code><ref>{{Cite web|url=https://www.nongnu.org/axiom/axiom-website/videos.html|title=Axiom Computer Algebra System|website=www.nongnu.org/axiom}}</ref> website. The first video<ref name="video">{{cite web |url = https://www.youtube.com/watch?v=CV8y3UrpadY |title = Axiom Computer Algebra System Information Sources |publisher = [[YouTube]] |date = November 30, 2008 }}</ref> provides details on the Axiom information sources.<ref name="video" /> == Philosophy == The Axiom project focuses on the “30 Year Horizon”. The primary philosophy is that Axiom needs to develop several fundamental features in order to be useful to the next generation of computational mathematicians. Knuth's [[literate programming]] technique is used throughout the source code. Axiom plans to use proof technology to prove the correctness of the algorithms (such as [[Coq (software)|Coq]] and [[ACL2]]). Binary AXIOM packages are available for installation on a wide variety of platforms, such as Debian GNU/Linux.<ref>{{Cite web|url=https://tracker.debian.org/pkg/axiom|title=Debian|website=www.debian.org}}</ref> == Design == In Axiom, each object has a type. Examples of types are mathematical structures (such as [[ring (mathematics)|rings]], [[field (mathematics)|fields]], [[polynomial]]s) as well as data structures from computer science (e.g., [[list (computing)|list]]s, [[tree (data structure)|tree]]s, [[hash tables]]). A function can take a type as argument, and its return value can also be a type. For example, <code>Fraction</code> is a function, that takes an <code>IntegralDomain</code> as argument, and returns the field of fractions of its argument. As another example, the ring of <math>4\times 4</math> matrices with rational entries would be constructed as <code>SquareMatrix(4, Fraction Integer)</code>. Of course, when working in this domain, <code>1</code> is interpreted as the identity matrix and <code>A^-1</code> would give the inverse of the matrix <code>A</code>, if it exists. Several operations can have the same name, and the types of both the arguments and the result are used to determine which operation is applied (cf. [[function overloading]]). Axiom comes with an extension language called SPAD. All the mathematical knowledge of Axiom is written in this language. The interpreter accepts roughly the same language. == Features == Within the interpreter environment, Axiom uses [[type inference]] and a heuristic algorithm to make explicit type annotations mostly unnecessary. It features 'HyperDoc', an interactive browser-like help system, and can display two and three dimensional graphics, also providing interactive features like rotation and lighting. It also has a specialized interaction mode for [[Emacs]], as well as a plugin for the [[TeXmacs]] editor. <gallery> Image:AxiomHyperDoc.png|HyperDoc displaying the available operations for a domain Image:AxiomGraphics.png|Axiom displaying a surface Image:Axiomfirefox.jpg|Axiom Firefox Browser Interface Image:Heatequation.jpg|Axiom simplifying a heat equation Image:Matrixinmatrix.jpg|Axiom matrix manipulation Image:RischIntegration.jpg|Axiom computing a Risch integral </gallery> Axiom has an implementation of the [[Risch algorithm]] for elementary integration, which was done by Manuel Bronstein and Barry Trager. While this implementation can find most elementary antiderivatives and whether they exist, it does have some non-implemented branches, and raises an error when such cases are encountered during integration.<ref>{{Cite web |last=Bronstein |first=Manuel |date=September 5, 2003 |title=Manuel Bronstein on Axiom's Integration Capabilities |url=https://groups.google.com/g/sci.math.symbolic/c/YXlaU8WA2JI/m/1w1MxrSpm6IJ |access-date=2023-02-10 |website=groups.google.com}}</ref><ref>{{Cite web |date=Oct 15, 2020 |title=integration - Does there exist a complete implementation of the Risch algorithm? |url=https://mathoverflow.net/questions/374089/does-there-exist-a-complete-implementation-of-the-risch-algorithm |access-date=2023-02-10 |website=MathOverflow |language=en}}</ref> == See also == {{Portal|Free and open-source software}} * [[A Sharp (Axiom)|A# programming language]] * [[Aldor|Aldor programming language]] * [[List of computer algebra systems]] == References == {{Reflist}} == Further reading == * {{cite book |author1 = James H. Griesmer |author2 = Richard D. Jenks |title = SCRATCHPAD/1: An interactive facility for symbolic mathematics {{!}} Proceedings of the second ACM symposium on Symbolic and algebraic manipulation (SYMSAC '71) |pages = 42–58 |year = 1971 }} * {{cite book |author1 = Clemens G. Raab |author2 = Michael F. Singer |title = Integration in Finite Terms: Fundamental Sources |year = 2022 |isbn = 978-3030987664 |publisher = Springer }} * {{cite tech report |author = Richard D. Jenks |title = META/PLUS - The Syntax Extension Facility for SCRATCHPAD |type = Research report |number = RC 3259 |institution = IBM [[Thomas J. Watson Research Center]] |year = 1971 }} * {{cite book |author1 = James H. Griesmer |author2 = Richard D. Jenks |title = Experience with an online symbolic mathematics system {{!}} Proceedings of the ONLINE72 Conference |year = 1972 |institution = [[Brunel University]] |volume = 1 |pages = 457–476 }} * {{cite journal |author1 = James H. Griesmer |title = Scratchpad |journal = ACM SIGPLAN Notices |volume = 7 |issue = 10 |pages = 93–102 |author2 = Richard D. Jenks |doi=10.1145/942576.807019|year = 1972 }} * {{cite journal |author = Richard D. Jenks |title=The SCRATCHPAD language|journal=ACM SIGSAM Bulletin|volume=8|issue=2|pages=20–30|doi=10.1145/1086830.1086834|year=1974|s2cid=14537956 }} * {{cite journal |author = Arthur C. Norman |title = Computing with Formal Power Series |journal = [[ACM Transactions on Mathematical Software]] |volume = 1 |number = 4 |pages = 346–356 |year = 1975 |issn = 0098-3500 |doi=10.1145/355656.355660|s2cid = 18321863 }} * {{cite book |author = Richard D. Jenks |title = A pattern compiler {{!}} Proceedings of the third ACM symposium on Symbolic and algebraic manipulation (SYMSAC '76) |pages = 60–65 |year = 1976 }} * {{cite thesis |author = E. Lueken |title = Ueberlegungen zur Implementierung eines Formelmanipulationssystems |type = Masters thesis |publisher = [[Braunschweig University of Technology|Technischen Universitat Carolo-Wilhelmina zu Braunschweig]] |location = Germany |year = 1977 |language=de}} * {{cite book |author = George E. Andrews |title = Ramanujan and SCRATCHPAD {{!}} Proceedings of the 1984 [[Macsyma|MACSYMA]] Users' Conference |publisher = [[General Electric]] |location = Schenectady |pages = 383–408 |year = 1984 }} * {{cite book |author1 = James H. Davenport |author2 = P. Gianni |author3 = Richard D. Jenks |author4 = V. Miller |author5 = Scott Morrison |author6 = M. Rothstein |author7 = C. Sundaresan |author8 = Robert S. Sutor |author9 = Barry Trager |title = Scratchpad |institution = Mathematical Sciences Department, IBM [[Thomas J. Watson Research Center]] |year = 1984 }} * {{cite journal |author = Richard D. Jenks |title = The New SCRATCHPAD Language and System for Computer Algebra |journal = Proceedings of the 1984 MACSYMA Users' Conference |year = 1984 |pages = 409–416 }} * {{cite book |author = Richard D. Jenks |title = A primer: 11 keys to New Scratchpad {{!}} Proceedings of International Symposium on Symbolic and Algebraic Computation '84 |pages = 123–147 |year = 1984 |publisher = Springer }} * {{cite book |author = Robert S. Sutor |title = The Scratchpad II Computer Algebra Language and System {{!}} Proceedings of International Symposium on Symbolic and Algebraic Computation '85|pages = 32–33 |year = 1985 |publisher = Springer }} * {{cite book |author1 = Rüdiger Gebauer |author2 = H. Michael Möller |title = Buchberger's algorithm and staggered linear bases {{!}} Proceedings of the fifth ACM symposium on Symbolic and algebraic computation (International Symposium on Symbolic and Algebraic Computation '86) |publisher = ACM |pages = 218–221 |year = 1986 |isbn = 978-0-89791-199-3 }} * {{cite tech report |author1 = Richard D. Jenks |author2 = Robert S. Sutor |author3 = Stephen M. Watt |title = Scratchpad II: an abstract datatype system for mathematical computation |type = Research report |number = RC 12327 |institution = IBM [[Thomas J. Watson Research Center]] |year = 1986 }} * {{cite book |author1 = Michael Lucks |author2 = Bruce W. Char |title = A fast implementation of polynomial factorization {{!}} Proceedings of SYMSAC '86 |publisher = ACM |isbn = 978-0-89791-199-3 |pages = 228–232 |year = 1986 }} * {{cite book |author = J. Purtilo |title = Applications of a software interconnection system in mathematical problem solving environments {{!}} Proceedings of SYMSAC '86 |publisher = ACM |isbn = 978-0-89791-199-3 |pages = 16–23 |year = 1986 }} * {{cite tech report |author1 = William H. Burge |author2 = Stephen M. Watt |title = Infinite Structure in SCRATCHPAD II |type = Research report |number = RC 12794 |institution = IBM [[Thomas J. Watson Research Center]] |year = 1987 }} * {{cite tech report |author1 = Pascale Sénéchaud |author2 = Françoise Siebert |author3 = Gilles Villard |title = Scratchpad II: Présentation d'un nouveau langage de calcul formel |journal = TIM |number = 640-M |type = Research report |institution = [[:fr:Institut d'informatique et mathématiques appliquées de Grenoble|IMAG]], [[Grenoble Institute of Technology]] |year = 1987 |language=fr}} * {{cite book |author1 = Robert S. Sutor |title = Papers of the Symposium on Interpreters and interpretive techniques - SIGPLAN '87 |pages = 56–63 |author2 = Richard D. Jenks |isbn = 978-0-89791-235-8 |doi = 10.1145/29650.29656 |chapter = The type inference and coercion facilities in the scratchpad II interpreter |year = 1987 |s2cid = 17700911 }} * {{cite book |author = George E. Andrews |title = Application of SCRATCHPAD to problems in special functions and combinatorics {{!}} Trends in Computer Algebra |series = [[Lecture Notes in Computer Science]] |editor = R. Janssen |publisher = Springer |number = 296 |pages = 159–166 |year = 1988 }} * {{cite book |author1 = James H. Davenport |author2 = Yvon Siret |author3 = Evelyne Tournier |title = Computer Algebra: Systems and Algorithms for Algebraic Computation |isbn = 978-0122042300 |year = 1993 |orig-year = 1988 |publisher = [[Academic Press]] }} * {{cite journal |author1 = Rüdiger Gebauer |author2 = H. Michael Möller |title = On an installation of Buchberger's algorithm |journal = [[Journal of Symbolic Computation]] |volume = 6 |number = 2–3 |pages = 275–286 |year = 1988 |issn = 0747-7171 |doi=10.1016/s0747-7171(88)80048-8|doi-access = free }} * {{cite book |author = Fritz Schwarz |title = Programming with abstract data types: the symmetry package (SPDE) in Scratchpad {{!}} Trends in Computer Algebra |series = Lecture Notes in Computer Science |editor = R. Janssen |pages = 167–176 |year = 1988 |publisher = Springer }} * {{cite journal |author = David Shannon |author2 = Moss Sweedler |title = Using Gröbner bases to determine algebra membership, split surjective algebra homomorphisms determine birational equivalence |journal= [[Journal of Symbolic Computation]] |volume = 6 |number = 2–3 |pages = 267–273 |year = 1988 |doi=10.1016/s0747-7171(88)80047-6|doi-access = free }} * {{cite journal |author = Hans-J. Boehm |title=Type inference in the presence of type abstraction|journal=ACM SIGPLAN Notices|volume=24|issue=7|pages=192–206|doi=10.1145/74818.74835|year=1989}} * {{cite book |author = Manuel Bronstein |title = Simplification of real elementary functions {{!}} Proceedings of the International Symposium on Symbolic and Algebraic Computation (SIGSAM '89) |publisher = ACM |pages = 207–211 |year = 1989 }} * {{cite book |author1 = Claire Dicrescenzo |author2 = Dominique Duval |title = Algebraic extensions and algebraic closure in Scratchpad II {{!}} Symbolic and Algebraic Computation |editor = P. Gianni |pages = 440–446 |publisher = Springer |year = 1989 }} * Timothy Daly [http://daly.axiom-developer.org/TimothyDaly_files/cmutalk/index.html "Axiom -- Thirty Years of Lisp"] * Timothy Daly "Axiom" Invited Talk, Free Software Conference, Lyon, France, May, 2002 * Timothy Daly "Axiom" Invited Talk, [https://web.archive.org/web/20040308073825/http://lsm2003.abul.org/ Libre Software Meeting], Metz, France, July 9–12, 2003 == External links == {{Commonscatinline}} * [http://www.nongnu.org/axiom Axiom Homepage] * Source code repositories: [http://git.savannah.gnu.org/cgit/axiom.git GNU Savannah] * [http://www.nongnu.org/axiom/axiom-website/bookvol0.pdf Jenks, R.D. and Sutor, R. "Axiom, The Scientific Computation System"] * [http://www.nongnu.org/axiom/axiom-website/bookvol1.pdf Daly, T. "Axiom Volume 1: Tutorial"] Software forks: * [http://www.open-axiom.org OpenAxiom] ([http://sourceforge.net/projects/open-axiom/ SourceForge]) * [http://fricas.sourceforge.net FriCAS] ([http://sourceforge.net/projects/fricas/ SourceForge]) {{Computer algebra systems}} {{Authority control}} {{DEFAULTSORT:Axiom (Computer Algebra System)}} [[Category:Common Lisp (programming language) software]] [[Category:Computer algebra system software for Linux]] [[Category:Free computer algebra systems]] [[Category:Free software programmed in Lisp]]
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)
Pages transcluded onto the current version of this page
(
help
)
:
Template:Authority control
(
edit
)
Template:Cite book
(
edit
)
Template:Cite journal
(
edit
)
Template:Cite tech report
(
edit
)
Template:Cite thesis
(
edit
)
Template:Cite web
(
edit
)
Template:Commonscatinline
(
edit
)
Template:Computer algebra systems
(
edit
)
Template:Infobox software
(
edit
)
Template:Portal
(
edit
)
Template:Reflist
(
edit
)
Template:Short description
(
edit
)