Skip to content

@enumeratio/wolfram ​

MathJSON → Wolfram Language transpiler — a compute-engine compilation target, for cross-validating the reference against a Wolfram kernel. Pure in both directions (MathJSON in, string out and back): no compute-engine dependency, so it ports cleanly into a compute-engine LanguageTarget later. oracle's emit and census's frontier tooling are its main consumers.

Entry points ​

  • . (src/index.ts)
    • toWolfram/HEADS/SYMBOLS/CONTEXT/FOREIGN/STRUCTURAL/isWolframHead — the head and symbol maps are the package's useful DATA, not just plumbing: anything that wants to know what a compute-engine head means in Wolfram reads them here rather than duplicating the correspondence. HEADS is heads that mean the same thing in both systems; FOREIGN is ours emitted into our own context to avoid colliding with a same-named but different Wolfram symbol.
    • fromWolfram — the inverse: a small recursive-descent parser over Head[args] (plus {...} list sugar) reversing the same maps, so a kernel's FullForm answer can be boxed and compared structurally. Reads precision marks and *^ exponents.
    • isSystemName/SYSTEM_NAMES — every symbol in Wolfram's `System`` context (generated; see below), for asking "is this name taken, and by what" without a kernel.
    • toWolframTeX/fromWolframTeX/TeXOptions — Wolfram's TeXForm and notatio write the same mathematics in different TeX; these translate the spelling only, so the two forms can be read side by side without a computational difference masquerading as a notational one.

Commands ​

sh
vp check
vp test
vp pack   # build dist (also: vp pack --watch)

src/wolfram-names-data.ts is generated by reference's scripts/collect-system-names.ts — do not edit it by hand; regenerate it there.

Next ​

tests/alignment.test.ts is what enforces that a name shared with Wolfram is either the same function (belongs in HEADS) or a different one emitted under FOREIGN — see Symbols for the reasoning. census's frontier scripts use this package's maps to find what Wolfram's docs call that we can't answer.