It is utmost important to understand that mathmaker is not a software intended to compute mathematical stuff, but to display it. For instance, the aim of mathmaker is not to resolve a first-degree equation, because we don't need any computer to do it, and because other softwares can do that certainly, no, mathmaker will determine and display the steps of this resolution. Sometimes, mathmaker will also try to mimic the pupils' way of doing things.
For instance, it won't automatically simplify a fraction to make it irreducible in one step, but will try to reproduce the steps that pupils usually need to simplify the fraction. So the GCD is only used to check when the fraction is irreducible and for the cases where there's no other choice, but not as the mean to simplify a fraction directly (not before pupils learn how to use it, at least).
Another example is the need of mathmaker to control the displaying of decimal and integer numbers perfectly. Of course, most of the time, it doesn't matter when a computer tells that 5.2×5.2 = 27.040000000000003 or 3.9×3.9 = 15.209999999999999 because everyone knows that the correct results are 27.04 and 15.21 and because the difference is not so important, so in many situations, this precision will be sufficient. But, can mathmaker display to pupils that the result of 5.2×5.2 is 27.040000000000003 ?
Also, the human rules we use to write maths are full of exceptions and strange details we don't notice usually because we're familiar to them. We would never write +2x² + 1x - 1(+5 - 1x) but instead 2x² + x - (5 - x). There are many conventions in the human way to write maths and many exceptions.
These are the reasons why the core is quite complex : re-create these writing rules and habits on a computer and let the result be readable by pupils is not always simple.