Release notes: call-site callee requires VCs (2e/2f)¶
Summary¶
lic build now emits Lean proof obligations for callee requires at each in-module call site, with auto-discharge when substituted preconditions are statically true (e.g. callee(5) with requires x >= 0).
Agent continuation¶
- Read
compiler/verify/vc_emit_lean.cpp(emit_call_site_requires),li-tests/contracts_verify/caller_requires_ok.li,docs/verification/provability-gaps.md(G-vc). - Run
cmake --build build && ./li-tests/tooling/discharge_caller_requires_lean.sh && ./li-tests/tooling/contracts_discharge_corpus.sh && ./li-tests/tooling/contracts_verify_lean.sh. - Then extend discharge to non-literal args (track locals/refinements), wire
LI_BUILD_VERIFY_LEAN_STRICT=1onlic buildwhen ready. - Blocked on float
ensureswithabs(sqrt_open_bound.limust stay open in corpus); full Lean kernel as defaultlic buildgate (G-lean).
Changed¶
| Path | Change |
|---|---|
compiler/verify/vc_emit_lean.cpp | Call-site callee requires → AutoVC defs; literal comparison discharge |
li-tests/contracts_verify/caller_requires_ok.li | Regression: callee(5) closes x >= 0 obligation |
li-tests/manifest.toml | Register caller_requires_ok.li |
li-tests/tooling/discharge_caller_requires_lean.sh | CI helper |
li-tests/tooling/contracts_verify_lean.sh | Invoke caller-requires discharge |
docs/verification/provability-gaps.md | G-vc row |
docs/language/contracts-and-proofs.md | Partial call-site VCs |
Not changed¶
lic buildstill does not fail on open Lean goals by default (LI_BUILD_VERIFY_LEAN_STRICTopt-in).- Typecheck does not yet prove caller args satisfy callee
requires(VC-only today). - Cross-module /
externcalls — no call-site VCs. - Benchmarks, httpd M1, 7e perf.
Breaking¶
N/A — additive VC emission; closed obligations get _proved theorems.
Security¶
N/A — proof surface extension only.
Performance¶
N/A — compile-time VC emit only.
Downstream¶
None — monorepo lic only.