Skip to content

Authoritative DD backend: follow-ups (math residual correctness, basic-program congruence, perf) #43

Description

@oflatt-claude

Follow-ups from the authoritative DD rebuild work (branch oflatt-dd-rebuild-in-dataflow). The exact-count fixes (delete → uncounted subsume + @UF transitive-closure feedback) are landed; these are the known remaining gaps, deferred so the initial mergeable PR isn't blocked.

1. math-microbenchmark +35/+5 residual (correctness)

After the two exact-count fixes, authoritative DD still over-counts math-microbenchmark by +35 Add / +5 Mul (dd 641778/345080 vs main 641743/345075 — 0.005%). Down from the original +6562/+770.

  • Isolated to the single seed (Integral (Mul (Cos x) x) x) at (run 11); exact at runs 5–10.
  • Distinct from the union-find collision cascade we fixed (both the incremental run_epoch and the EGGLOG_DD_AUTH_RECOMPUTE paths give the same +35, so it's in the dataflow fixpoint, not the mirror reconcile).
  • A subtler congruence / re-key under-merge specific to the integration-by-parts structure. Not yet localized.
  • Proven a DD-execution bug, not the encoding: native main == bridge --term-encoding == 641135/344791 on the isolated seed; DD auth == 641283/344796 before the @UF-feedback fix.

2. Authoritative under-congruence on basic programs (correctness)

Under strict pure-native-authoritative (no fallthrough to the legacy DD engine), ~10 basic programs fail a (check) that passes on main — dd misses a union/derivation (likely the same under-congruence class as #1). Files: calc, delete, stratified, subsume-relation, repro-define, repro-noteqbug, repro-filter-bug, filter-or-bool-neq, repro-new-backend-prims, repro-small-rebuild-fail-term-encoding. Listed as unsupported in the initial PR (they error cleanly, not silently). Fixing them widens the fully-native supported set beyond the current 17.

3. math-microbenchmark performance (402s vs the #29 fast path's 70s)

Not a hang — (run 11) completes in ~402s, essentially all inside a single DD step (383s) that computes the whole 11-round fixpoint and materializes ~2.7M rows.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions