lean4-htt/tests
Joachim Breitner 27e5e21bfe
perf: use Nat-based bitmask in sparse cases construction (#11200)
This PR changes how sparse case expressions represent the
none-of-the-above information. Instead of of many `x.ctorIdx ≠ i`
hypotheses, it introduces a single `Nat.hasNotBit mask x.ctorIdx`
hypothesis which compresses that information into a bitmask. This avoids
a quadratic overhead during splitter generation, where all n assumptions
would be refined through `.subst` and `.cases` constructions for all n
assumption of the splitter alternative.

The definition of `Nat.hasNotBit` uses `Nat.rightShift` which is fiddly
to get to reduce well, especially on open terms and with `Meta.whnf`.
Some experimentation was needed to find proof terms that work, these are
all put together in the `Lean.Meta.HasNotBit` module.

Fixes #11183

---------

Co-authored-by: Rob23oba <152706811+Rob23oba@users.noreply.github.com>
2025-11-17 10:05:18 +00:00
..
bench test: benchmark for large partial match (#11199) 2025-11-16 11:20:31 +00:00
compiler fix: consider over-applications in reduceArity compiler pass (#11185) 2025-11-17 07:51:37 +00:00
elabissues
ir
lake fix: lake: indeterminism in targets test (#11188) 2025-11-15 04:20:24 +00:00
lean perf: use Nat-based bitmask in sparse cases construction (#11200) 2025-11-17 10:05:18 +00:00
pkg chore: make compilation type mismatch error message from non-exposed defs a lot less mysterious (#11177) 2025-11-14 10:50:43 +00:00
playground
plugin chore: re-enable tests (#10923) 2025-10-23 08:38:57 +00:00
simpperf
.gitignore
common.sh chore: make workspaceSymbol benchmarks modules (#11094) 2025-11-05 18:40:39 +00:00
lakefile.toml fix: detect private references in inferred type of public def (#10762) 2025-10-15 12:51:54 +00:00
lean-toolchain