Use this page for implementation-time reminders.
- Adaptive fixpoint iteration
- Scheduled fuel
- Learned rewrite policy
- Bounded join
| Adaptive technique | Compiler role | Typical benefit |
|---|---|---|
| Adaptive fixpoint iteration | Dampen oscillation in cyclic flows | Fewer iterations in loops |
| Scheduled fuel | Allocate optimization work by phase | Less wasted rewrite effort |
| Learned rewrite policy | Pick rewrites from confidence data | Better phase-ordering behavior |
| Bounded join | Cap unstable fact growth | Better stability in hard domains |
m_t = beta1 * m_{t-1} + (1 - beta1) * fact_t
fact'_t = m_t
Use for cyclic control flow and oscillating fact updates.
fuel_t = max(minFuel, floor(fuel0 * decay^t))
Use when pass utility drops over time.
P(strategy_i) = exp(conf_i / tau) / sum_j exp(conf_j / tau)
Use when multiple rewrite options compete and profile data exists.
join(old, new) = if size(new) > threshold then top else new
Use in domains where facts can spike and destabilize convergence.
| Parameter | Starting value | Notes |
|---|---|---|
beta1 |
0.9 |
More smoothing as value increases |
beta2 |
0.999 |
Optional variance tracking for adaptive updates |
eps |
1e-8 |
Numerical guard in adaptive equations |
decay |
0.9 |
Controls fuel taper rate |
tau |
1.0 |
Lower exploits, higher explores |
threshold |
domain-specific | Set from observed fact magnitudes |
- Over-smoothing (
beta1too high) can slow convergence. - Over-aggressive fuel decay can end optimization too early.
- Extreme
tauvalues can collapse to one rewrite or randomize choices. - Low
thresholdcan destroy precision by forcingtoptoo often.
- Monotonicity still holds under your join/update strategy.
- Termination arguments are explicit for your domain.
- Adaptive behavior outperforms static baseline on at least one cyclic case.
- Metrics are labeled illustrative unless benchmark method is documented.
Any speedups in this repository are demonstration results from small examples, not production benchmark claims.