Repository navigation
Conversation
5ac8a78 to
838b47c
Compare
|
@afflom @humuhumu33 Full ready-for-review gate run 39122833578 is 25/25 green ( Whole-Gate Timing Comparison (
|
| Job | Train (39101767733) |
PR #189 (39122833578) |
Delta |
|---|---|---|---|
build and non-Lean tests (aarch64-unknown-linux-gnu) |
58m 00s |
38m 45s |
−19.2 min |
build and non-Lean tests (aarch64-apple-darwin) |
78m 00s |
45m 03s |
−33.0 min |
build and non-Lean tests (x86_64-pc-windows-msvc) |
69m 00s |
46m 44s |
−22.3 min |
build and non-Lean tests (x86_64-apple-darwin) |
100m 00s |
50m 51s |
−49.1 min |
just vv (bdd-preservation) |
93m 00s |
46m 35s |
−46.4 min |
Subtotal (4 host-matrix legs + bdd-preservation) |
398.0 min |
228.0 min |
−170.0 runner-minutes |
| Whole gate (all 25 jobs) | 730.0 min |
596.4 min |
−133.6 runner-minutes |
Precompute match arm terms and suffix lists in O(n) in certificate A's Writer::prepare_arms instead of rebuilding the arm suffix list across every arm_hit and arm_miss application. Propagate meta-cleanliness, loose-variable bounds, and minimum free-variable IDs bottom-up in Builder::push so resolve, abstract_over, lift, instantiate, instantiate_beta, substitute, and has_placeholder short-circuit closed/clean sub-DAGs in O(1). Scan match arms with a reverse cursor in Certificate B's Aligner::m, print certificate records directly via surface::core::print_module without round-tripping through canonical JSON, and reuse the cached native preservation library in correspondence_rules(). Restore the host-matrix timeout-minutes to 120.
838b47c to
eff2cd3
Compare
|
Rebased cleanly onto |
|
Maintainer: this PR's head Generated by Claude Code |
…), and the Census windows as width-100 pieces (#168) (#191) Closes #177 Closes #187 Closes #168 Members: #189 (certificate data builders linear in match arms), #188 (SPEC generation bounds, CL-17 env-read gate, member-review text and coverage), #175 (CensusCert4/CensusCert10 from width-100 pieces). Host matrix limit 240 while BS-02 runs on every host (#190). Gate: run 39145765325 on 7f2a00d, 25/25 green, 698 runner-minutes. Merged by the maintainer on the owner's rule: green gate and the linked issues' DoD met.
|
Landed through wave 3, #191, merged to Generated by Claude Code |
Closes #177
Summary
Makes the certificate A and B kernel-data builders linear in match arm count and short-circuits repeated term transformations across large modules, cutting non-Lean conformance time by 3×–10.7× across the six slowest tests (
conformance_sp_02,conformance_sp_08,conformance_sp_10,conformance_sp_12,conformance_tc_05, andcertificates(wide_match(240))) without deleting or thinning any conformance test or certificate assertion:crates/lexlean/src/production/certificate/data_a/matching.rs,structural.rs,boundary.rs):Writer::prepare_arms(PreArm), which translates each arm's(shape, binders, body)once and builds the right-to-leftList.conssuffix chain inarm_hitandarm_missnow index directly intopre: &[PreArm]inclean,loose,min_free) andcrates/lexlean/src/production/kernel.rs,crates/lexlean/src/production/kernel/ext.rs):clean(meta-free),loose(loose de Bruijn variable bound), andmin_free(minimum free-variable ID) bottom-up inBuilder::push.Builder::resolve/resolve_memoto look upmeta_id(term)directly insolved: &HashMap<usize, Term>and skip a second pass when every value insolvedis alreadymeta_clean.min_freeandloose_boundtoabstract_over,lift,instantiate,instantiate_beta,substitute, andhas_placeholder.Aligner(crates/lexlean/src/production/certificate/data_b/align.rs):Aligner::mandAligner::m_armto advance a reverse cursor acrossarmsin0on every arm.crates/lexlean/src/sdk.rs,crates/lexlean/src/production/certificate.rs) and cached correspondence rules (crates/lexlean/src/production/preserve.rs):sdk::assemble_coreand updatedrecord_sourceto printCoreModuledirectly without serializing it to a multi-MB JSON string and re-parsing it first.correspondence_rules()to reuse the cachednative()OnceLockinstead of re-parsingRustCorr.lex.texandRustSound.lex.texon every call..github/workflows/ci.yml):host-matrixtimeout-minutesfrom300back to120.Local Timings (Before vs. After on
x86_64-unknown-linux-gnu)193cd2148)5ac8a788c)certificates(wide_match(240))(--lib)59.98s11.76sconformance_sp_021374s128.88sconformance_sp_08~1600s295.36sconformance_sp_10(non-Lean)163s36.12sconformance_sp_12124s41.36sconformance_tc_05307s52.86sVerification
just fmt-checkjust lintcargo xtask verify-governancecargo xtask audit-productioncargo test --manifest-path crates/lexlean/Cargo.toml --libcargo test --manifest-path crates/conformance/Cargo.toml --test conformance conformance_sp_02 -- --exactcargo test --manifest-path crates/conformance/Cargo.toml --test conformance conformance_sp_08 -- --exactcargo test --manifest-path crates/conformance/Cargo.toml --test conformance conformance_sp_10 -- --exactcargo test --manifest-path crates/conformance/Cargo.toml --test conformance conformance_sp_12 -- --exactcargo test --manifest-path crates/conformance/Cargo.toml --test conformance conformance_tc_05 -- --exact