About#
The pages in this section describe why mathspec is the way it is. They describe the background, compare choices, and argue for the rules that the reference pages only state. Read them away from a task, when you want to understand a rule before you rely on it.
- Background and history describes where mathspec comes from, from the YAML math of the energy system framework Calliope to the releases of mathspec itself.
- How mathspec works describes what mathspec decides about the specification of an optimisation model (a spec) before any data exists.
- The limits of the language describes which constructs can be added to the language, and which requests mathspec refuses and why.
- Versions describes how the version of the package and the version of the language relate, and why there are two.
- Relations as linear maps describes a sum through a table that pairs labels (a relation) as the product of a matrix and a vector.
- Understanding a spec in SQL and dataframe terms describes each declaration and operator of a spec as a table or a query, in SQL and in polars.
- What counts as language describes what the language defines for every piece of software that reads a spec (a tool), and what each tool decides.
- What counts as public API describes when a function joins the application programming interface (API) of mathspec, and why the API stays small.