Repository navigation
Names
Four names, and what each one governs. This page is the rule; AGENTS.md "Names" in the repo
is its short form, and the two change together.
| Name | What it is | The test |
|---|---|---|
| compute-engine | The engine and the mathematics: evaluation, numerics, compilation, the standard library, and the optional libraries kept in its repository (Rubi, Fungrim, combinatorics). It is cortex-js/compute-engine, not ours. | Would someone using compute-engine without us need it to evaluate? |
| Epsil | compute-engine's language. Every definition, cell and attribute we read or write as text is Epsil; $…$ LaTeX islands are Epsil's own. |
Is it about the text an expression is typed in? |
| enumeratio | The catalogue: a permanent address and a record for every mathematical object, and the checking that keeps the records true. | Is it a fact about an object, or the address of one? |
| notatio | How an expression is written and shown: the presentation heads, their markup, their implementations in each environment, and the notebook built from them. | Is it about showing? |
compute-engine computes, enumeratio records and addresses, notatio shows.
A resource for surfacing mathematical objects, combinatorial ones first, so they can be explored now and referenced for good. An object is anything with a name or an index:
- a head (
MajorIndex,Zeta), with its signature, definition, examples and what other systems call it; - a collection (
DyckPaths(4)), with its count, order and fields; - one element of a collection, or one specific structure (a particular Clifford algebra), down to details like its branch cuts.
Its content is data: the reference records, their tested examples, the crosswalks to Wolfram, Sage, the OEIS, FindStat and Fungrim, and the answers those systems gave. The machinery that reads and checks that data is enumeratio too: the record format, the manifest, the oracle lanes, Plausible, the census.
The catalogue does not care where a definition's code lives. IntegerPartitions has the same
record whether compute-engine's core evaluates it, an optional compute-engine library does, or
one of ours does. That is why enumeratio does not shrink as mathematics moves into
compute-engine (Roadmap).
An enumeratio library is a set of definitions compute-engine does not hold: adèles, the
Hecke and Hopf algebras, the hypercomplex units and the rest of packages/symbols/. Each
exists to feed the catalogue, is written in Epsil, and is a candidate to move into
compute-engine.
The presentation heads and everything that realizes them:
- the heads: boxes, graphics, controls, layout, the
*Formheads; - the markup: the vdom, an expression's FullForm written as JSX (Vdom);
- the implementations per environment: web elements, the terminal, native (Rendering Environments);
- what is built from them: the notebook, the worksheet, the CLI and REPL, the format registry.
notatio works over a bare compute-engine and needs no mathematics. Boxes, graphics and the markup are general layout: tables, diagrams, rich and interactive text. Someone with no interest in mathematics can still use it to mark up a document.
notatio is not a syntax. InputForm is a printer notatio owns; the text it prints is Epsil.
| Thing | Belongs to |
|---|---|
The Epsil definition of MajorIndex
|
a library: compute-engine's combinatorics once it is there, an enumeratio library until then |
MajorIndex's record: examples, its FindStat identifier, Sage's and Wolfram's answers |
enumeratio |
The address /reference/symbol/MajorIndex#example/<id>
|
enumeratio |
A fix to Zeta(0, a)
|
compute-engine, carried in packages/ce-patches/ until it lands |
Adele, HeckeAlgebra
|
an enumeratio library |
GraphicsBox, Manipulate, Grid, TraditionalForm
|
notatio |
<notatio-notebook>, the terminal renderer |
notatio |
| The InputForm printer | notatio |
| The syntax InputForm prints | Epsil |
| A library's own notation (its LaTeX triggers, its box rules) | data in that library; the machinery that applies it is notatio |
| The oracle lanes, Plausible, the census | enumeratio |
The verb says whose it is:
- defined as, evaluates to, a head compute-engine declares: compute-engine or a library. Say which library when it matters.
- recorded, catalogued, checked against, has the address: enumeratio. "The catalogue" always means enumeratio.
- written as, typed, prints as, drawn, laid out: notatio.
- parses, the syntax: Epsil.
"The library" needs its name: compute-engine's standard library, one of its optional libraries, or an enumeratio library. "The project" is the repository as a whole, when no narrower word fits.
Do not call notatio a syntax, a subset of Epsil, or the project. Do not call enumeratio "the mathematics" or "the symbol definitions": the mathematics is compute-engine's and the libraries'.
These carry a name for historical or practical reasons and say nothing about what is inside:
- The repository is
enumeratio/notatioand holds both enumeratio and notatio. - The package scope is
@enumeratio/*for every package, presentation ones included. Packages are named for what they do (Packages). A package is renamed only as part of work that already touches it, never in passing. Whether notatio's packages take a scope of their own is decided when notatio has its own domain. - The GitHub organisation is
enumeratio, and posts to compute-engine are made asenumeratio. - The domain is enumeratio.dev. The catalogue is served there, and notatio at notatio.enumeratio.dev (Sites).
In code:
- Every box primitive is its own tag, the box head in kebab case (
RowBoxisrow-box). Thenotatio-prefix stays for the notebook and the app shell (notatio-notebook,notatio-cell), and for a head written structurally that has no box tag of its own (Plot3Disnotatio-plot-3d) (Vdom). - In the reference data,
epsilkeys an example's retypeable text form andnotatiokeys its component serialisation, the vdom as markup. - A package's
enumeratio.layerin itspackage.jsonsays which side it is on:presentationis notatio;extensionis an enumeratio library;infra,baseandtoolingare the catalogue's machinery and shared plumbing.boxesis notatio although its layer isbase, becausestructuresbuilds on it.
Two earlier readings are retired, and pages or comments that still use them are wrong:
- enumeratio as "the symbol definitions and their evaluation". compute-engine supplies the core of the mathematics, and more of ours moves into it with every release. A name tied to the definitions would end up naming a set of patches. The catalogue is what stays.
- notatio as a syntax, or as the whole project. The text syntax is Epsil. The repository carries the notatio name, but the catalogue lives in it too and is not notatio.
The earlier, Postgres-era project that was also called enumeratio is "the Postgres-era project" on this wiki. Its aim, permanent realizations of specific objects, is the one enumeratio keeps.
Other Latin names were once considered for parts of the project (nucleus, aestimatio, computatio). None names a part of the project. "Nucleus" survives only as the working name of the facade the core packages put over compute-engine (Nucleus Facade). A new name earns a place only when it names something with its own entry point, its own documentation and a use apart from the rest.