Skip to main content

How Diafunc works.

Our Ufinq technology discovers code from data through symbolic regression — at scale.

Diafunc discovers a readable model from your data

Inside the Mathematical Colosseum.

The world, observed.

It starts with your data. Tables, streams, images, text — anything observable. Diafunc takes it as ground truth.

Universal Substrate.

Most symbolic regression handles only real-valued scalars. Ufinq handles them all — bool, scalar, vector, matrix, tensor, text, image, set — first-class with 200+ operators composing across them. One substrate for regression, classification, control, vision, and more.

The Arena.

At the center sits Ufinq — a colosseum where candidate programs compete. Many branches search in parallel; all judged on accuracy and simplicity.

Evolutionary Branches.

Each branch is an independent population that evolves in isolation — its own seed, its own search direction, its own genetic material. Many run in parallel; none interfere.

Genetic Operators.

Inside each branch, new candidates come from three sources every generation: creation (a fresh expression from the search space), crossover (two parents recombined), and mutation (a single parent modified).

Evolution of Local Optima.

Each branch evolves toward its own local optimum, then stagnates. Stagnation isn't failure — it's the trigger. Two stagnated branches pair: top 10% from each merges into a tournament branch (intensification); the rest into an advanced branch (diversification). The local optima themselves become genetic material.

Algebraic Simplification.

Hundreds of rewrite rules — declarative, in a custom DSL — normalize every candidate every generation. Equivalent forms collapse; complexity stays bounded; the search converges on cleaner expressions.

Numeric Optimization.

Once a structure is found, its constants are tuned by research-grade optimizers — CMA-ES, L-BFGS, Nelder-Mead, Coordinate Descent. Symbolic structure and numeric precision, in one pipeline.

Symbolic Differentiation.

Every gradient is computed symbolically — exact, not approximated by finite differences. Inside the search, that lets numeric optimizers converge faster on the constants of every candidate.

Decomposition.

When a problem is too large for a single search, Ufinq divides and conquers. Sub-functions are searched independently, then composed back. Each part smaller, tractable, parallelizable — and the whole emerges from the parts.

Distributed at Scale.

DEBOHAC turns the colosseum into one logical arena across many machines. Branches spawn wherever capacity is found; capacity flows up the tree, budget flows down. No central bottleneck; no manual sharding.

The world, explained.

What emerges is code: a program that explains your data — readable, inspectable, executable. A readable equation when the structure is mathematical; richer programs when it isn't. Branch it, edit it, stand behind it.

Ready to discover your first model?