Computer algebra systems materials

Announcement of Symbolics.jl bring attention of many people and starts many lively discussion on Discourse and beyond, about Computer Algebra Systems (CAS). In this discusion casual many papers, blog post, talks on YouTube, already existing CAS implementations etc., were mentioned and they links posted, but finding one of them now can be a bit of the challenge.

Since this topic is important and looks like a source of fun, for convenience for people who want to learn more about computer algebras systems, as myself, I try to collect in this post as many of this materials as I can. I hope that someone find this list useful.

I also want to mention two acronyms, that can be found in announcement thread: SCAS = Scientist’s Computer Algebra System, MCAS = Mathematician’s Computer Algebra System. As @dimpase point out such distinction is in many ways harmful, but we will probable use it a lot.

When I didn’t know how order some entries in one of the lists, I just use to them alphabetic order. In the future I will try to improve this post.

Also I apologize for all errors in my English.


Non-open access papers

Talks and presentations

Blog posts


Parts of documentations

Computer Algebra Systems

Julia wrappers for Computer Algebra Systems

Various things

People that made/recommended these materials in alphabetic order: Christoph Buchner, Jacques Carette, Fredrik Bagge Carlson, Jānis Erdmanis, Richard Fateman, Max Horn, Zdeněk Hurák, John Lapyre, Bernt Lie, Stefan Krastanov, Christopher Rackauckas, David P. Sanders, Chad Scherrer, Philip Zucker.

I apologized everyone who should be on this list, but he or she isn’t on it.


Another blog

1 Like

Maybe I am missing something, but shouldn’t mapple and mathematica be on that list? Also, why maxima.jl is mentioned? It’s a wrapper to maxima, sure, but almost all other cas from the list have Julia wrappers. May be they should be in a separate list then.


Good questions and suggestions. Answers are quite prosaic.

  1. Why Mathematica and Maple aren’t on that list? I was thinking that are famous enough, so there is no need to listing them. But on the other hand, all means all, so I will add them to the list.
  2. Why is Maxima.jl on the list? After few hours of collecting these links and putting them in order, I need to put this one somewhere and I just post it below link to Maxima. I will make new list of Julia wrappers around CAS and put this link there, thank you for the suggestion.

Wikipedia page Computer algebra system have in references @rfateman 1972 thesis Essays in algebraic simplification, but since I don’t know if reading it have in 2021 value other than historical, I didn’t put in on the list.

Update. Since @rfateman judges his thesis as relevant today, it is now on the list in OP.

For completion:

  • MuPAD, developed at University of Paderborn, Germany, and bought by MathWorks in 2008 and integrated into their Symbolic Math Toolbox

There are also various CAS systems in calculators from Texas Instruments, Hewlett Packard, and Casio. But these are relatively lightweight(??) (I think there was a PC version of Derive some years ago, though).


There is also the OSCAR system which consists of Oscar.jl and its various related packages AbstractAlgebra, Nemo, Hecke as well as wrapper packages for the external research/specialist CAS GAP, Polymake, Singular.


It was menioned in the OP :slight_smile:

Sorry somehow missed it. But Singular, Polymake, Hecke, GAP were not

1 Like

Thank you for mentioning these CAS. I have almost no knowledge about this field, outside struggling with Mathematica, so if some CAS wasn’t mentioned in discussion or I overlooked this part, which isn’t that hard, there is almost no chance that it be on the list.

1 Like

Hi All –

  1. A list of collected references without evaluating them or characterizing them is probably not adding to the knowledge already available by a pointer to Wikipedia. Perhaps if you or others can add annotations like “useful - provides fundamental insights” or “explains some hacks”. it might help.

  2. My 1972 thesis is, in my opinion, still relevant; it seems that putting it on or off your list should be based on evaluating its usefulness, not its age.

  3. I think it is important to distinguish papers and other material by their intent and context. If we were talking about automobiles, you would distinguish material about “How to drive the Ford model XXX” from “Engineering innovations in the electronic ignition for the Ford model XXX”. Similarly, a paper on CAS system XXX could be about the user-level interface, or it could be about the deep internal design decisions that represent breakthroughs in effectiveness, efficiency, etc.

To be specific, reading the user manual for some copy-cat system [ZZZ is like WWW but is written in C instead of lisp] that provides a modest symbolic mathematics capability is not likely to help understand the frontiers of the system-building challenges.

In some cases, finding and using the best state-of-the-art ideas may depend on quite the opposite end of the spectrum of available information. That is, reading the source code. Or mechanically translating the source code of some system to Julia.

It seemss I’m heading into water that has already been explored … putting together a Julia wrapper and eating the whole other system. Though, putting a wrapper on Maxima may not be the right approach – if it just gives a read-eval-print loop of Maxima. Is that it?

Instead, maybe there can be wrappers around lisp programs like solve, integrate, limit, taylor, simplify, display, plot. That’s how I’ve accessed (from Lisp/Maxima) the capabilities of FFTW, GMP and similar high-quality stuff that I was too lazy (or clever?) to reprogram.

In addition to being able invoke the lisp programs, you would also need to convert data between formats (conceptually, read/write) to/from lisp.

(I say Maxima because I know more about it. You could say the same things about Axiom or other systems.)

This approach would give you a reasonable level of capability without the need to learn all about CAS (I have online graduate course notes … but that doesn’t make you an expert…) and to spend years programming stuff that has already been programmed. Of course if you want to become educated in this area of symbolic math system building, mechanization of mathematics, and its underpinnings, that’s admirable, but it’s not everyone’s cup of tea.


I agree wholehearted that just listing all things add little to 0 knowledge. My aim was very humble, just add a little bit order to dozens of links that are casually share during discussion and can soon be, for all practical reason, lost in the threads so long that they can rival with Leo Tolstoy’s book. Evaluating them is just beyond my abilities, I can only hope that people with true expertise will comment how to change the list, which one should be added, what removed, what is introduction, what is about deep internals, etc.

Classification by intent and content is orders of magnitudes better than by type of material, no question about, but this was only thing that I was able to do in this moment. And since people keep sharing more and more materials, I decided “Better now than never”.

I never want to suggest that we should evaluate your thesis, or any other work, by its age, this would be sign of enormous hubris. I just don’t have any true knowledge about CAS field, only some practical experience, so I can’t evaluate value of anything. Every other link was posted by someone else and I’m hoping that everyone evaluated material he/she sharing and found it useful. I found your thesis on Wikipedia and I was thinking “I post it in this thread with few words of commentary, so everyone can judge if he/she want to read it.”. Paul Wang’s thesis is a year older, but since you mention it discussion about Symbolics.jl as paper that one should read (at least that how I understood it) I put it without a doubt. I apologized if my post were rude, this was not at all my intention.