This PR introduces a `noConfusionType` construction that’s sub-quadratic in size, and reduces faster. The previous `noConfusion` construction with two nested `match` statements is quadratic in size and reduction behavior. Using some helper definitions, a linear size construction is possible. With this, processing the RISC-V-AST definition from https://github.com/opencompl/sail-riscv-lean takes 6s instead of 60s. The previous construction is still used when processing the early prelude, and can be enabled elsewhere using `set_option backwards.linearNoConfusionType false`. |
||
|---|---|---|
| .. | ||
| BRecOn.lean | ||
| CasesOn.lean | ||
| NoConfusion.lean | ||
| NoConfusionLinear.lean | ||
| RecOn.lean | ||