AutoVC fixes for default Lean gate (2f / open phases)¶
Date: 2026-05-21
PR: #155 (branch cursor/2i-7e-2f-57b4)
Summary¶
lic build default Lean verification no longer breaks on recursive fib, parallel-loop VCs, f64 ensures, call-site requires with locals, or Lean-reserved param names like by.
Agent continuation¶
- Read
docs/verification/provability-gaps.md(G-lean, G-vc) and master-plan tracker rows 2f / 2i / 7e / 7d. - Run
./scripts/build.sh && ./li-tests/run_all.sh --ci(needslake; OpenMP optional — link skips-fopenmpwhen/usr/include/omp.hmissing). - Then close P-loop (loop dot witness), 7d
@parallelMIR ondef, 2i broadcast policy; update gap register in same PR. - Blocked on kernel discharge for intentional open specimens (
sqrt_open_bound,linalg_dot4_int_loop_open) until G-trust semantics land.
Changed¶
| Area | Detail |
|---|---|
compiler/verify/vc_emit_lean.cpp | decreases → Nat (Int.toNat); call-site requires bind caller params + locals; parallel-for contracts use _parN suffix + loop iter param; f64/f32 → Float in Lean types; escape Lean keywords (by → by_) |
compiler/verify/CMakeLists.txt | Link li_types for lookup_numeric_scalar |
compiler/codegen/compile.cpp | Skip -fopenmp on Linux when omp.h absent (serial li_rt fallback) |
docs/superpowers/plans/2026-05-14-li-master-plan.md | Tracker: 2f default lean, 7e tier-1 advisory, 2i float @ partial |
Not changed¶
- G-lean Done — still Partial; intentional open VCs unchanged.
- 7d
@parallelMIR elaboration ondef— still parse/policy only. - 2i NumPy-style broadcast — still rejected / not implemented.
- lip/lit remote registry (8d v2) — out of scope.
Breaking¶
N/A — AutoVC naming for parallel-loop obligations gains _par0 suffix (generated Lean only).
Security¶
N/A — proof emitter only; no trusted surface change.
Performance¶
N/A — builds without system OpenMP still run parallel loops serially via li_rt.c #else branch.
Downstream¶
Agents relying on build/generated/AutoVC.lean hand-edits must regenerate; CI verify_ok entries assume default Lean when lake is installed.