A Grimoire of Functions
The &quot;rewrite engine&quot; ambitions for Fungrim seem potentially misplaced. It would probably be better to contribute to an existing open source state-of-the-art CAS like Fricas, than to make another one. The article tries to justify this in a weird way:<p>&gt; Computer algebra systems can be viewed as having three components: a way to represent mathematical objects, algorithms for manipulating such objects, and user interfaces around this. The various components are usually entangled with each other without cleanly separating different levels of abstraction, so there is a lot of incidental complexity.<p>So? That is no reason to make another CAS, as opposed to helping refactor Fricas.<p>&gt; The algorithms are incorrect by design, typically for efficiency reasons. A good example is ignoring special cases and assumptions on the variables when simplifying symbolic formulas (some examples given above). Another example is pretending that floating-point numbers are the same thing as real numbers. Calculating nonrigorously is not necessarily the wrong approach; it all depends on the application. It&#x27;s sometimes better to do something fast and simple (but possibly incorrect), especially if the result can be checked afterwards. Sometimes you really want every step to be correct, even if it takes longer time and requires more complicated user input. For better or worse, current computer algebra systems are largely designed around the &quot;fast and simple&quot; principle, with optional correctness added more as an afterthought (and often not fully supported).<p>WTF! Only if one uses Wolfram Alpha exclusively!<p>Another comment [0] by fdej (the author) I just found by accident has some related misconceptions:<p>&gt; However, nothing open source currently comes close to Mathematica for symbolic and symbolic-numerical calculus (expression simplification, symbolic integration, solving PDEs, etc.).<p>Try Fricas.<p>&gt; Also, one of Mathematica&#x27;s main strengths is providing a lot of functionality in a neat package where diverse components are very easy for the user to glue together, with automagical interfaces where the user doesn&#x27;t need to know what happens behind the scenes<p>&quot;Automagical&quot; interfaces suck, they will inevitably break when you stray just a bit from the intended path. It is better to have a typed language like Fricas has.<p>[0] <a href="https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=17694483" rel="nofollow">https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=17694483</a>