Fork me on GitHub

Computer algebra in pure Go.
Planned, wave 4 of the go-scikit roadmap.

go-symbolic is the planned home of computer algebra for go-scikit: expressions, polynomials, differentiation, integration, series, limits and solving, as Mathematica's core offers them, and what Maple adds on top (code generation, algebraic numbers, ODE and PDE solving, triangular decomposition, differential algebra, symbolic random variables, groups and tensors). It is in wave 4, the last of the roadmap, because nearly everything in it waits for the core: the expression DAG, polynomials, GCD and factorisation. There is no library and no release yet: this page says what is planned, in which wave, and against which references it will be validated.

planned wave 4no release yetCGO=0 pure Go
status
org      go-symbolic
domain   computer algebra
status   planned (wave 4)
release  none yet
oracles  SymPy, python-flint, PARI/GP, FriCAS, Rubi
plan     go-scikit/roadmap: PLAN.md, STATUS.md
Planned, wave 4: no library is released. The plan is PLAN.md, the state of each item STATUS.md.
What go-symbolic will cover

computer algebra, in pure Go.

go-symbolic is the planned home of computer algebra for go-scikit: expressions, polynomials, differentiation, integration, series, limits and solving, as Mathematica's core offers them, and what Maple adds on top (code generation, algebraic numbers, ODE and PDE solving, triangular decomposition, differential algebra, symbolic random variables, groups and tensors). It is in wave 4, the last of the roadmap, because nearly everything in it waits for the core: the expression DAG, polynomials, GCD and factorisation. Everything below is planned, not released.

∑

Expressions and polynomials

A hash-consed expression DAG with canonical forms, polynomials over Z, Q and F_p, rational functions, differentiation and expansion.

÷

GCD and factorisation

Modular GCD, Cantor-Zassenhaus over F_p, Hensel lifting with van Hoeij recombination over Z.

∫

Integration, series, limits

Rational integration (Hermite, Lazard-Rioboo-Trager), Risch-Norman, a rule engine with Rubi's rules, power series and Gruntz limits.

⚙

Gröbner and solving

Buchberger then F4 modulo p, and polynomial-system solving.

⌘

Code generation to Go

Expressions to Go source with common-subexpression elimination on the DAG; C and Fortran emitters only as test oracles.

∂

The Maple delta

Algebraic numbers, ODE and PDE solving, triangular decomposition and CAD, differential algebra, symbolic random variables, groups and tensors.

🧪

Validated against free oracles

SymPy, python-flint, PARI/GP, Maxima and FriCAS are run as oracles from Go; Maple is proprietary and never one.

⚖️

BSD-3-Clause

GPL and LGPL systems are compared against, never ported; SymPy, FriCAS, Reduce and Rubi are the portable references.

How it will be checked

3 kinds of check, each against a reference.

Every go-scikit library is validated against the tool that is the reference of its domain, run as an oracle from Go. These are the criteria planned for go-symbolic.

Exact algebra

Polynomials and exact linear algebra are checked by exact equality after a canonical form; factorisation by product equal to the input and irreducible factors; a reduced Gröbner basis is unique for an order, so it must equal the oracle’s.

Integration

The derivative of the result minus the integrand must simplify to zero, and the Rubi suite (72,000+ problems) gives a grade histogram: A optimal, B larger, C, F failure.

Code generation

Generated Go compiles and passes go vet, equals the expression’s interpreter on 1000 random points within a stated ULP bound, and uses no more operations after CSE than SymPy’s cse.

Repositories

What is planned, and what is here.

core

planned (wave 4)

Planned (wave 4). Expression DAG, polynomials over Z, Q and F_p, GCD and factorisation, Gröbner bases, differentiation, integration (Hermite, Risch, Rubi rules), series and limits, exact linear algebra. Repository names are provisional.

maple

planned (wave 4)

Planned (wave 4, after the core). Code generation to Go, algebraic numbers, ODE and PDE solving, triangular decomposition and CAD, differential algebra, symbolic random variables, permutation groups and tensors. Repository names are provisional.

docs

site

The documentation (Hugo + Hextra): the scope, the plan and the references of each planned library. Source →

brand

assets

Logos and icons for the organization, in SVG / PNG / JPG / ICO / ICNS across colour, white and black variants.

computer algebra for go-scikit.

go-symbolic is planned, wave 4. The documentation holds its scope, its plan and its references; the roadmap is PLAN.md.

Read the source on GitHub →