Symbolic refinement
Algebraic simplification, the e-graph rewriter, and normalization: every candidate is cleaned and tuned before it enters the gene pool.
The pipeline that runs every generation
In a standard genetic-programming setup, candidates produced by mutation and crossover are dropped straight into the population. Selection pressure is the only mechanism by which structure improves. Ufinq inverts that: every candidate passes through a refinement pipeline before it is allowed into the gene pool. The pipeline runs on every individual, every generation.
A candidate is verified and then refined in five steps: simplification, linear scaling, constant optimization, normalization and validation. Simplification and normalization fall under symbolic refinement; verification and validation are the guards around them. Together they ensure that what enters the gene pool is already a local optimum: structurally clean and numerically tuned.
Three threads of work
Algebraic simplification
- Rule DSL. A declarative rule language for local simplifications: identities, absorbing elements, commutative rewrites, trigonometric and hyperbolic collapses, logical reductions, conditional and comparison laws. Hundreds of rules.
- Commutative variation. A single rule covers all argument orderings for commutative functions; operand-swapped variants are generated automatically, which removes mirror-image rule duplication.
- Constant folding. Constant sub-expressions are folded by direct evaluation before any rule fires; the rest of the pipeline only sees expressions that have no constant arithmetic left to do.
- Math leads. Rules state algebraic identities. Whether a rewrite is acceptable on the data at hand is decided afterwards by evaluating it, not by guards inside the rule.
- Open questions. Automatic rule discovery from expressions that should have collapsed and did not; rule scheduling under per-domain workload distributions.
E-graph rewriting and normalization
- E-graph rewriter. Runs at the end of the simplification chain as a safety net. Equivalent sub-expressions are unified into equivalence classes and the cheapest representative is extracted. Saturation is bounded in classes, iterations and time; when a bound trips, the candidate passes through unchanged.
- Normalization. After constants are tuned they are rounded, replaced by integers or named constants where the data supports it, and operands are put in a fixed order. Two candidates that say the same thing end up spelled the same way far more often, which is what the structural diversity check relies on.
- Open questions. Extraction cost under multi-objective pressure (small expressions are not always preferred); commutative-aware matching in the e-graph.
Verification and validation
- Structural verification. Checks that the candidate satisfies invariants on the computation graph: type compatibility, domain constraints, evaluation order, maximum complexity. Malformed candidates are rejected before they consume any further compute.
- Population validation. The refined candidate must score finitely, stay under the error bound of its search space, and behave differently from what the gene pool already holds.
- Open questions. Early-exit prediction (skipping the rest of the pipeline when a candidate is going to fail validation); refinement-budget scheduling under heterogeneous candidate cost.
Three consequences of refining every individual
Related material
A short-form note on the consequences of this design lives at Every Ufinq individual is already a local optimum. The refinement pipeline as a whole is described under Technology § 6, with a six-stage diagram (Figure 3).
No paper is yet specifically about symbolic refinement; the pipeline is described in passing in the AHISTER paper (in preparation).
Continue reading
Other research areas are listed under Research. Published work lives on Papers; short-form notes on Notes.
