Repository navigation
Conversation
Comment-only changes on top of cvc5#13017: - Explain each case of LambdaLift::ppRewrite, and why the APPLY_UF case can rely on the arguments having been preprocessed already. - Explain the conditional lift lemma (getLiftLemma), and why a single ordinary function of the class suffices in checkLazyLambda. - Fix the non-termination example in checkLazyLambda. - Explain why the extensionality lemma cannot rewrite to false. - Document the new behavior of computeRelevantTerms, checkExtensionality and applyExtensionality in ho_extension.h. - Update stale documentation outside the PR's files: the lambda inference ids (inference_id.h), FunctionConst::getDefinition, and the help text of --uf-lazy-ll. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
PR #13017 vs main — higher-order benchmarksAll Binaries: configure.sh unrestricted --ninja --auto-download, assertions/tracing off. 14 workers, jobs shuffled. 2812 benchmarks, both configurations. Soundness checksat/unsat disagreements: 0 Solved per family
Status breakdown
unknown = the solver answered unknown (e.g. the in-file tlimit-per fired, or incompleteness); timeout = killed at the external limit. PAR-2 charges every unsolved instance twice its family's timeout. Runtime on commonly-solved instances
Ratios below 1.00 mean the branch is faster. The median per-instance ratio ignores instances under 0.05s, where timer noise dominates. Solved only by PR #13017 (17517b5) (0)Solved only by main (053f65c) (0)
liastar7_no_lift_lambda vs liastar7 — fmcad26 benchmarks
Binaries: configure.sh unrestricted --ninja --auto-download --gpl --normaliz, assertions/tracing off. CLI binary, default options, 100s timeout, 6 workers, jobs shuffled. 509 benchmarks, both configurations. Soundness checksat/unsat disagreements: 0 Solved per family
Status breakdown
unknown = the solver answered unknown (e.g. the in-file tlimit-per fired, or incompleteness); timeout = killed at the external limit. PAR-2 charges every unsolved instance twice its family's timeout. Runtime on commonly-solved instances
Ratios below 1.00 mean the branch is faster. The median per-instance ratio ignores instances under 0.05s, where timer noise dominates. Solved only by liastar7_no_lift_lambda (c201ecf) (0)Solved only by liastar7 (046355d) (0)
Co-Authored-By: Claude Opus 5 noreply@anthropic.com |
Document the new lambda lifting policy, with review notes for cvc5#13017






This PR makes it so that lambdas are not eagerly replaced by skolems.
The motivation is to ensure that (most) lambdas are preserved for higher-order sets/relation operators. This makes it so that e.g. getOriginalForm is not necessary as a workaround, making the code more robust.
We continue to distinguish a class of lambdas (with nested functions) which require lifting and we never handle with beta reduction.
🤖 Generated with Claude Code