This page gives a perspective on how the SimianQuant library works. It is useful for those who are curious and wish to learn more, but reading and understanding it is completely unnecessary for using the library in practice.

It is assumed that the readers have some technical background, ideally in one or more of programming languages, compilers, machine learning, cognitive science, dynamical systems or abstract algebra. SimianQuant is a unique synthesis of some of the great ideas of these fields.

Fundamentally, SimianQuant defines a series of abstractions that capture the structure and interpretation of algebraic expressions. It is designed to model real world problems, not spherical cows in a vacuum, and can easily operate on (i.e. add, factorize, differentiate etc.) expressions with more than 100,000 terms. With its encoding of the syntax tree, the global optimum is expressed as an auto-recursive cascade of local optima.

By definition, solving for the global optimum is equivalent to finding a fixed point of this cascade. The *learned intelligence* of the library is in the specification of these optimisers and their interconnections.

The library exposes a **symbolic frontend** for building expressions. Symbolic algebra ensures that the models that users write are concise and easy to read. At the other end of the processing pipeline, the library uses **imperative code generator** as a backend. The generated code can be executed by the standard tooling for the target programming language and runs at the limit of the underlying hardware.