a97663e63165e9e12fc71358a3b5a68440ed2b1a
The bindings could not build against the installed interpreter, so the whole workspace had to be checked with --exclude symclaw-python. Two API changes: PyObject left the prelude (now Py<PyAny>), and #[pyclass] types implementing Clone must opt in to the FromPyObject derive. Co-Authored-By: Claude Opus 5 (1M context) <[email protected]>
Merge pull request 'test(symclaw-skill): cover handlers_advanced via JSON API' (#10) from ci-doctor/coverage-20260518-201834 into master
Merge pull request 'test(symclaw-skill): cover handlers_advanced via JSON API' (#10) from ci-doctor/coverage-20260518-201834 into master
Merge pull request 'test(symclaw-skill): cover handlers_advanced via JSON API' (#10) from ci-doctor/coverage-20260518-201834 into master
Merge pull request 'test(symclaw-skill): cover handlers_advanced via JSON API' (#10) from ci-doctor/coverage-20260518-201834 into master
Merge pull request 'test(symclaw-skill): cover handlers_advanced via JSON API' (#10) from ci-doctor/coverage-20260518-201834 into master
Merge pull request 'test(symclaw-skill): cover handlers_advanced via JSON API' (#10) from ci-doctor/coverage-20260518-201834 into master
Merge pull request 'test(symclaw-skill): cover handlers_advanced via JSON API' (#10) from ci-doctor/coverage-20260518-201834 into master
Merge pull request 'test(symclaw-skill): cover handlers_advanced via JSON API' (#10) from ci-doctor/coverage-20260518-201834 into master
Merge pull request 'test(symclaw-skill): cover handlers_advanced via JSON API' (#10) from ci-doctor/coverage-20260518-201834 into master
Merge pull request 'test(symclaw-skill): cover handlers_advanced via JSON API' (#10) from ci-doctor/coverage-20260518-201834 into master
Merge pull request 'test(symclaw-skill): cover handlers_advanced via JSON API' (#10) from ci-doctor/coverage-20260518-201834 into master
Merge pull request 'test(symclaw-skill): cover handlers_advanced via JSON API' (#10) from ci-doctor/coverage-20260518-201834 into master
Merge pull request 'test(symclaw-skill): cover handlers_advanced via JSON API' (#10) from ci-doctor/coverage-20260518-201834 into master
Merge pull request 'test(symclaw-skill): cover handlers_advanced via JSON API' (#10) from ci-doctor/coverage-20260518-201834 into master
Merge pull request 'test(symclaw-skill): cover handlers_advanced via JSON API' (#10) from ci-doctor/coverage-20260518-201834 into master
Merge pull request 'test(symclaw-skill): cover handlers_advanced via JSON API' (#10) from ci-doctor/coverage-20260518-201834 into master
Merge pull request 'test(symclaw-skill): cover handlers_advanced via JSON API' (#10) from ci-doctor/coverage-20260518-201834 into master
Merge pull request 'test(symclaw-skill): cover handlers_advanced via JSON API' (#10) from ci-doctor/coverage-20260518-201834 into master
Merge pull request 'test(symclaw-skill): cover handlers_advanced via JSON API' (#10) from ci-doctor/coverage-20260518-201834 into master
Merge pull request 'test(symclaw-skill): cover handlers_advanced via JSON API' (#10) from ci-doctor/coverage-20260518-201834 into master
Merge pull request 'test(symclaw-skill): cover handlers_advanced via JSON API' (#10) from ci-doctor/coverage-20260518-201834 into master
Merge pull request 'test(symclaw-skill): cover handlers_advanced via JSON API' (#10) from ci-doctor/coverage-20260518-201834 into master
Merge pull request 'test(symclaw-skill): cover handlers_advanced via JSON API' (#10) from ci-doctor/coverage-20260518-201834 into master
Merge pull request 'test(symclaw-skill): cover handlers_advanced via JSON API' (#10) from ci-doctor/coverage-20260518-201834 into master
Merge pull request 'test(symclaw-skill): cover handlers_advanced via JSON API' (#10) from ci-doctor/coverage-20260518-201834 into master
Merge pull request 'test(symclaw-skill): cover handlers_advanced via JSON API' (#10) from ci-doctor/coverage-20260518-201834 into master
🔮 SymClaw — Symbolic Computing for the Agentic Age
A GPU-accelerated, AI-integrated computer algebra system built in Rust.
65,000+ lines of Rust · 1,808 tests (0 failures) · 12 crates · 11 GPU modules
✨ Why SymClaw?
- 🚀 GPU-Accelerated — GPU polynomial GCD (Zippel), NTT polynomial multiply, Gröbner basis row reduction, Monte Carlo integration, ODE parameter sweeps — all via CubeCL
- 🤖 AI-Native — OpenClaw skill bridge (22 JSON-RPC actions); every result includes LaTeX and confidence scores
- 🌐 Everywhere — Rust library, Python (PyO3), WASM/browser (wasm-bindgen), C FFI, CLI REPL, WebSocket collab
- 🔬 Research-Grade — Quantum computing (Pauli/ZX-calculus/UCCSD), systems biology (SIAN identifiability), quantum chemistry (Wick's theorem, Gaussian integrals), crystallography (space groups, structure factors)
- ⚡ Blazing Fast — Packed polynomial representation (FORM-inspired), AVX2 Montgomery multiplication, E-graph equality saturation
🏗️ Architecture
symclaw-core — 32 modules: the complete symbolic math engine
├── Symbolic: parser · simplify · egraph · differentiate · integrate
│ solve · series · limits · transforms · pattern · ode
├── Algebra: poly · modular_gcd · packed_poly · linalg · tensor
│ number_theory · precision (BigFloat, GF(p))
├── Novel: discover (symbolic regression) · units · proof · symbols
└── Infra: codegen · streaming · simd_arith · eval · latex · cache
symclaw-quantum — Pauli group · stabilizer tableau · circuits (30 gates)
ZX-calculus (11 rewrite rules) · OpenQASM3/Qiskit/PennyLane/Cirq
symclaw-bio — ODE models · SIAN structural identifiability
reaction networks · Hardy-Weinberg · JC69/K80 · genome reversals
symclaw-qchem — Wick's theorem (bitmask) · McMurchie-Davidson integrals
Boys function · Clebsch-Gordan (Racah) · VQE/UCCSD
symclaw-materials — 14 Bravais lattices · 32 point groups · 230 space groups
structure factors · Cromer-Mann · BVS · Madelung/Born-Landé
symclaw-gpu — NTT · FFT (Cooley-Tukey) · Gröbner (F4) · poly_gcd (Zippel)
Monte Carlo · ODE sweeps · linalg · eval · SIMD batch ops
symclaw-cli — Interactive REPL, 30+ commands (:diff, :integrate, :plot, :codegen, …)
symclaw-python — PyO3 bindings with operator overloading
symclaw-wasm — 24+ browser-ready exports via wasm-bindgen
symclaw-ffi — C FFI for embedding in any language
symclaw-skill — OpenClaw AI agent bridge (22 JSON-RPC actions)
symclaw-collab — Multi-user WebSocket real-time collaboration
🚀 Quick Start
Python
# pip install symclaw (via maturin)
from symclaw import Expression as E, S
x = S("x")
expr = (x + 1)**2
print(expr.simplify()) # x^2 + 2*x + 1
print(expr.diff("x")) # 2*x + 2
print(expr.integrate("x")) # x^3/3 + x^2 + x
print(expr.to_latex()) # x^{2} + 2 x + 1
print(expr.to_code("python")) # x**2 + 2*x + 1
CLI REPL
$ cargo run -p symclaw-cli
symclaw> (x + 1)^2
x^2 + 2·x + 1
symclaw> :derive sin(x^2) x
2·x·cos(x²)
symclaw> :integrate x^3 x
x⁴/4
symclaw> :limit sin(x)/x x 0
1
symclaw> :taylor exp(x) x 4 0
1 + x + x²/2 + x³/6 + x⁴/24
symclaw> :codegen x^2 + 2*x + 1 rust
x.powi(2) + 2.0 * x + 1.0
symclaw> :plot sin(x) x -6.28 6.28 60
[ASCII chart]
Rust
use symclaw_core::{parser, simplify, differentiate, integrate, latex};
let expr = parser::parse("sin(x)^2 + cos(x)^2").unwrap();
let simplified = simplify::simplify(&expr);
println!("{}", simplified); // 1
println!("{}", latex::to_latex(&simplified)); // 1
WASM / JavaScript
import init, { simplify, differentiate, to_latex, eval_range } from 'symclaw-wasm';
await init();
console.log(simplify("sin(x)^2 + cos(x)^2")); // "1"
console.log(differentiate("x^3 + 2*x", "x")); // "3·x² + 2"
console.log(to_latex("1/2 + 1/3")); // "\\frac{5}{6}"
// Evaluate over a range for plotting
const pts = JSON.parse(eval_range("sin(x)", "x", 0, 6.28, 100));
OpenClaw Skill (AI Agent)
// Request
{"action": "differentiate", "expr": "x^3 + sin(x)", "var": "x"}
// Response
{"success": true, "result": "3·x² + cos(x)", "latex": "3 x^{2} + \\cos(x)", "confidence": 1.0}
📦 What's Inside
symclaw-core (32 modules, 1,279 unit tests)
| Area | Modules |
|---|---|
| Parser & AST | parser, ast, interner |
| Simplification | simplify, egraph (equality saturation via egg) |
| Calculus | differentiate, integrate, series, limits, ode, transforms |
| Algebra | solve, poly, modular_gcd, packed_poly, linalg, tensor |
| Number theory | number_theory (30+ functions), precision (BigFloat, GF(p)) |
| Advanced | pattern, discover (symbolic regression), units, proof, symbols |
| Output | codegen (7 languages), latex, streaming, eval |
| Infrastructure | cache, metrics, simd_arith, confidence |
symclaw-quantum (85 tests)
- Pauli group: n-qubit operators, phase, commutators, weight, dagger
- Stabilizer tableau: SympRow binary symplectic representation, H/CNOT/S gates
- Quantum circuits: 30 gate types, depth, T-count, gate cancellation, state-vector simulator
- ZX-calculus: diagram builder, 11 rewrite rules (spider fusion, π-copy, bialgebra, …), simplifier
- Codegen: OpenQASM 3, Qiskit, PennyLane, Cirq
- Clifford gates: CliffordGate1Q as Cl(3,0) algebra elements
symclaw-bio (55 tests)
- ODE models: state/parameter/output builder, Lie derivatives, input-output equations
- Identifiability: SIAN structural identifiability via numerical Jacobian rank
- Reaction networks: stoichiometry matrix, deficiency theorem, mass-action kinetics → ODEs
- Population genetics: Hardy-Weinberg equilibrium, JC69 and K80 substitution models
- Genome algebra: signed permutation reversals, breakpoints, greedy sorting; genetic code (64 codons)
symclaw-qchem (53 tests)
- Second quantization: FermionTerm/FermionOp, number-conserving operators
- Wick's theorem: bitmask enumeration (iterative, no stack overflow), vacuum expectation values
- Molecular integrals: GaussianBasis, normalization, Boys function F_m(x), McMurchie-Davidson E coefficients, overlap and kinetic energy integrals
- Angular momentum: Pauli matrices, Clebsch-Gordan coefficients via Racah formula
- VQE: parameter-shift gradient rule, HF reference state, UCCSD single/double excitations, Ansatz builder
symclaw-materials (63 tests)
- Lattice: all 14 Bravais lattice types, 7 crystal systems, lattice parameter constructors, unit cell volumes, primitive and reciprocal lattice vectors
- Groups: all 32 crystallographic point groups (centrosymmetric=11, polar=10, chiral=11), SymOp (rotation matrix + fractional translation, compose, determinant), 230 space groups descriptor
- Structure: CrystalStructure with built-in NaCl/Si/α-Fe, Cromer-Mann scattering factors, structure factors F(hkl), Debye-Waller factors, systematic absence detection
- Bonding: Lennard-Jones 12-6 (Ar parameters), coordination environments, Bond Valence Sum (BVS) with R₀ table, Pauling electronegativity (30 elements) + ionicity, Madelung constants + Born-Landé lattice energy
symclaw-gpu (101 tests)
| Module | Algorithm | Backend |
|---|---|---|
ntt |
Number Theoretic Transform (NTT-friendly primes) | GPU/CPU |
fft |
Cooley-Tukey radix-2 FFT; poly multiply via convolution | CPU |
groebner |
Faugère F4 with sparse GF(p) matrix reduction | GPU/CPU |
poly_gcd |
Zippel modular GCD batch evaluation | GPU/CPU |
linalg |
Matrix multiply (f32 GPU), batch determinants, LU | GPU/CPU |
monte_carlo |
LCG Monte Carlo integration, n-dimensional | CPU |
ode |
RK4 parameter sweep (parallel runs) | CPU |
eval |
Bytecode expression evaluator | CPU |
simd |
Batch Horner eval, dot, norms, mat-vec, Lagrange, Welford stats | CPU |
discover |
GPU symbolic regression | GPU/CPU |
device |
Auto-detect: CUDA/ROCm/Metal/WebGPU/CPU | — |
📊 Test Coverage
| Crate | Unit | Integration | Total |
|---|---|---|---|
| symclaw-core | 1,279 | 54 | 1,333 |
| symclaw-quantum | 70 | 15 | 85 |
| symclaw-bio | 40 | 15 | 55 |
| symclaw-qchem | 38 | 15 | 53 |
| symclaw-materials | 47 | 16 | 63 |
| symclaw-gpu | 101 | — | 101 |
| symclaw-cli | 36 | — | 36 |
| symclaw-wasm | 11 | — | 11 |
| symclaw-ffi | 8 | — | 8 |
| symclaw-skill | 21 | — | 21 |
| symclaw-collab | 42 | — | 42 |
| Total | 1,693 | 115 | 1,808 |
All 1,808 tests pass. 0 failures. No files exceed 1,250 lines.
🆚 vs Competition
| Feature | SymClaw | Symbolica | Mathematica | SymPy |
|---|---|---|---|---|
| GPU acceleration | ✅ 11 modules | ❌ | ❌ | ❌ |
| E-graph simplification | ✅ | ❌ | ❌ | ❌ |
| Symbolic regression (GPU) | ✅ | ❌ | ❌ | ❌ |
| Quantum computing module | ✅ | ❌ | partial | partial |
| Systems biology module | ✅ | ❌ | ❌ | ❌ |
| Quantum chemistry module | ✅ | ❌ | partial | partial |
| Crystallography module | ✅ | ❌ | partial | ❌ |
| Dimensional type system | ✅ | ❌ | ✅ | ✅ |
| Step-by-step proof traces | ✅ | ❌ | ❌ | ❌ |
| AI agent integration | ✅ | ❌ | ❌ | ❌ |
| Multi-user collab | ✅ | ❌ | ❌ | ❌ |
| Browser / WASM | ✅ | ❌ | ❌ | ❌ |
| C FFI | ✅ | ✅ | N/A | ❌ |
| Python bindings | ✅ | ✅ | N/A | N/A |
| Open source | ✅ MIT/Apache-2 | ❌ source-avail | ❌ commercial | ✅ BSD |
🛠️ Building
git clone https://github.com/osobh/symclaw && cd symclaw
# Build & test
cargo build --release
cargo test # runs all 1,808 tests
# CLI
cargo run -p symclaw-cli
# Python wheel (requires maturin)
cd crates/symclaw-python
maturin develop
# GPU backends (choose one at build time)
cargo build -p symclaw-gpu --features cuda # NVIDIA
cargo build -p symclaw-gpu --features wgpu # WebGPU / cross-platform (default)
cargo build -p symclaw-gpu --features cpu # Software fallback (always available)
Requirements
- Rust 1.75+ (MSRV)
- Python 3.8+ (for symclaw-python)
- CUDA 12+ or WebGPU-capable GPU (optional, for GPU acceleration)
📄 License
Dual-licensed under MIT and Apache 2.0. Choose whichever suits you.
Acknowledgements
- egg — E-graph equality saturation
- CubeCL — Cross-platform GPU compute kernels
- OpenClaw — Agentic AI platform and skill bridge
- nom — Parser combinator framework
- PyO3 — Rust ↔ Python bindings
Built with 🦀 in Rust · 1,808 tests · 0 failures
Languages
Rust
93.2%
HTML
2.7%
JavaScript
1.7%
TypeScript
1.5%
Shell
0.3%
Other
0.5%