16 languages for superintelligence
Trident is one compiler. 16 languages are std libraries — type definitions + functions that compile to nox patterns. types determine algebra. algebra determines lens. the chain is fully type-driven. zero annotations, zero configuration.
the type-driven pipeline
.tri source → Trident frontend → typed AST → NounBuilder → nox noun
↓
type of each expression
determines everything:
↓
Field → nebu → Brakedown → 1 constraint per mul
BitVec → kuro → Binius → 1 constraint per op
RingElement → jali → Ikat → batched
Tropical → trop → Assayer → witness-proportional
Curve → genies → Porphyry → 1 F_q per op
the programmer writes typed code. the types ARE the dispatch. no #[algebra(...)]. no backend selection. no prover hints. one nox noun comes out. one accumulator at the end.
16 languages × 5 arithmetics
| # | language | types | arithmetic | regime | lens | domain |
|---|---|---|---|---|---|---|
| 1 | Tri | Fp2, Fp3, Fp4 | nebu | nebu²/³/⁴ | nebu | field tower, proofs |
| 2 | Tok | UTXO, Balance, Conservation | nebu | nebu | nebu | economic transactions |
| 3 | Arc | Object, Morphism, Functor | nebu | nebu | nebu | schema, graph structure |
| 4 | Seq | Order, Timestamp, Causality | nebu | nebu | nebu | sequence, ordering |
| 5 | Inf | Term, Clause, Substitution | nebu | nebu | nebu | logic, unification |
| 6 | Bel | Distribution, Probability | nebu | nebu | nebu | belief, self-model |
| 7 | Ren | Multivector, Rotor, Blade | nebu | nebu | nebu | geometry, rendering |
| 8 | Dif | DualNumber, Manifold | nebu | nebu | nebu | continuous dynamics |
| 9 | Sym | PhaseSpace, Hamiltonian | nebu | nebu | nebu | physics simulation |
| 10 | Ten | Matrix, Tensor | nebu | nebu | nebu | neural networks |
| 11 | Rs | u32, u64, bool, BoundedVec | nebu | nebu | nebu | systems programming |
| 12 | Wav | RingElement, NTTForm | jali | jali | jali | FHE, signal processing |
| 13 | Bt | BitVec, BitMatrix, Packed128 | kuro | kuro | kuro | binary, quantized inference |
| 14 | Qu | Qubit, Gate, Amplitude | nebu | nebu² | nebu | quantum simulation |
| 15 | Opt | Tropical, CostMatrix, Graph | trop | trop | trop | optimization, decisions |
| 16 | Sec | Curve, Secret, StealthAddress | genies | genies | genies | privacy, anonymity |
every algebra has at least one language. every language has types that map to one algebra. the mapping is exhaustive — no orphan types, no orphan algebras.
what a language IS
a language is NOT a separate compiler. it is:
- types — domain-specific structs in trident/std/
- functions — operations on those types that compile to nox patterns
- jets — recognized formula compositions that accelerate execution
trident/std/
├── tri/ Fp2, Fp3, Fp4 types + tower arithmetic
├── tok/ UTXO types + conservation constraints
├── arc/ Object, Morphism + category operations
├── seq/ Order types + causality
├── inf/ Term, Clause + unification
├── bel/ Distribution types + Bayesian update
├── ren/ Multivector types + geometric product
├── dif/ DualNumber types + automatic differentiation
├── sym/ PhaseSpace types + Hamiltonian evolution
├── ten/ Matrix, Tensor types + contraction
├── rs/ u32, u64, BoundedVec + systems ops
├── wav/ RingElement types + NTT multiply
├── bt/ BitVec, BitMatrix + binary ops
├── qu/ Qubit, Gate + quantum circuit
├── opt/ Tropical types + optimization algorithms
└── sec/ Curve types + privacy protocols
each directory: ~500-2000 LOC Trident. types + functions. no separate parser, no separate compiler, no separate runtime. one Trident, 16 libraries.
cross-language composition
a single Trident program freely mixes types from different languages:
use std::ten::Matrix; // nebu regime
use std::bt::BitMatrix; // kuro regime
use std::opt::Tropical; // trop regime
fn inference_with_optimization(
weights: &BitMatrix, // kuro: binary quantized weights
input: &Matrix, // nebu: field-valued input
costs: &[Tropical], // trop: routing costs
) -> Matrix {
let quantized = bt::quantize(input); // nebu → kuro boundary
let hidden = bt::binary_matvec(weights, &quantized); // kuro regime
let output = bt::dequantize(&hidden); // kuro → nebu boundary
let route = opt::shortest_path(costs); // nebu → trop boundary
ten::gather(&output, &route) // back to nebu
}
the compiler sees type transitions and inserts hemera commitments at boundaries automatically. the programmer never thinks about regimes or lenses.
how mixing works end to end
source (typed)
↓ Trident frontend (typecheck)
typed AST (each expression tagged with type → algebra)
↓ NounBuilder (type-aware lowering)
nox noun (sub-trees correspond to different algebras)
↓ nox VM (executes uniformly, 16 patterns)
trace (each row carries operand types)
↓ zheng (partitions trace by type)
partition per algebra → prove via native lens
↓ HyperNova (folds all partitions)
one accumulator → one decider → one proof
programmer sees: types
compiler sees: types → algebra
nox VM sees: patterns (uniform)
zheng sees: trace rows → lens per partition
verifier sees: one proof (89 constraints)
the 11 nebu languages
11 of 16 languages compile to the same nebu (F_p) regime. they differ in TYPES and SEMANTICS, not in algebra:
- Arc uses cons/compose patterns for category composition
- Ten uses mul/add patterns for tensor contraction
- Bel uses mul/add/inv patterns for Bayesian update
- Ren uses mul/add/sub patterns for geometric product
- Dif uses mul/add patterns on DualNumber (automatic differentiation)
the patterns are identical. the types give them meaning. a tensor contraction and a Bayesian update are the SAME nox patterns — different types, different interpretation.
this is not redundancy. each language adds a TYPE SYSTEM that prevents errors: you cannot multiply a Distribution by a Tensor. the types enforce domain boundaries that raw field arithmetic does not.
why 16
every candidate was tested against the irreducibility criterion: removing the language creates a class of programs that cannot be conveniently expressed with the remaining 15.
- remove Opt → no native optimization types (Tropical, CostMatrix), no provable optimization
- remove Sec → no native privacy types (Curve, StealthAddress), no anonymous computation
- remove Wav → no native ring types (RingElement), no FHE
- remove Bt → no native binary types (BitVec), quantized inference forced through F_p (32× overhead)
the 11 nebu languages are individually removable in the algebraic sense — they all compile to the same regime. but they are semantically irreducible — each domain has types that prevent cross-domain errors.
discover all concepts