# How do symbolic math software work?

As the answer to a question of mine I was referred to a website (see here please)

How can WolframAlpha do it like humans?

• en.wikipedia.org/wiki/Computer_algebra_system – Amzoti Oct 20 '13 at 5:59
• Thank you. I got so comfortable in this website even forgot to ask Google :) – seek Oct 20 '13 at 6:01
• You are welcome. This is a relatively new science in its own right. Very fascinating pointers to some of the methods on the site. I would venture to say that most times a CAS arrives at a result is not how we do it. Regards – Amzoti Oct 20 '13 at 6:03
• @Amzoti. Relatively new means almost 55 years ! – Claude Leibovici Oct 20 '13 at 6:30
• @ClaudeLeibovici: Wow, has it been that long! Time flies when you are having fun! – Amzoti Oct 20 '13 at 12:09

For the specific system (Mathematica) that you mentioned, there are descriptions of its internals on these web pages and these. But Mathematica is a commercial system, so its internal workings are proprietary, which is why the descriptions don't provide much detail.

While these systems might appear to work "the same way as a human", they really don't. Human beings often use clever creative tricks to solve problems. Computers in general (and computer algebra systems in particular) typically use brute-force systematic methods, as described in the referenced materials. See the description of how Mathematica finds indefinite integrals, for example.

The best results are obtained by a combination of a powerful brute-force computing and intelligent guidance provided by a human being. Computer algebra systems are enormously useful, but they only do what you tell them to do :-)

A symbolic calculator basically is a fancy calculator, pretty much in line with any other calculator. You can find a whole string of calculators that basically go from your old 4-function right to mathematica and kindred programs.

For example, some of the more recent calculators allow fraction-input, like 5.1.3 for $5\frac 13$. Some allow complex numbers and matrices to be put in, by moving the cursor around the field, or whatever. A polynomial is a array of numbers.

As long at the programmer can implement some function, and communicate this to the user, you can do all sorts of fancy things by programming. Not all mathematical algorithms work here, though.

There is some fancy maths out there, that variously do and do not work in real time. A recent project i did was to seek out for which prime $p$ exists, if $p \mid F_n$, then so does $p^2$. Such ought exist, but the program found none under $20\cdot 120^4$. The trick was to see if $L_{2p}=3 \pmod{p^2}$, where $L_n$ is the nth lucas number.

It did find the Heron number $103$, where a triangle $n-1, n, n+1$ is a triangle with integer area, then if $103$ divides any of these numbers, so does $103^2$.

The internal implementation of symbolic systems are closely related to how compilers work and you can find a lot of the internal implementation details in this Wikipedia article: https://en.wikipedia.org/wiki/Computer_algebra but to really understand it or implement a simplified version of something of that caliber you will probably need to get experience with some functional programming language like Haskell and then gain a lot of knowledge of how compilers in general(and specifically for functional languages) work.