lean4-htt/stage0/stdlib
Leonardo de Moura 3deba604bf
feat: cache output universe parameter positions (#12285)
This PR implements a cache for the positions of class universe level
parameters that only appear in output parameter types.

During type class resolution, the cache key for a query like
`HAppend.{0, 0, ?u} (BitVec 8) (BitVec 8) ?m` should be independent of
the specific metavariable IDs in output parameter positions. To achieve
this, output parameter arguments are erased from the cache key. However,
universe levels that only appear in output parameter types (e.g., `?u`
corresponding to the result type's universe) must also be erased to
avoid cache misses when the same query is issued with different universe
metavariable IDs.

This function identifies which universe level parameter positions are
"output-only" by collecting all level param names that appear in
non-output parameter domains, then returning the positions of any level
params not in that set.

**Remark**: This PR requires a manual update stage0 because it changes
the structure of our .olean files.
2026-02-02 19:56:33 -08:00
..
Init chore: update stage0 2026-02-02 14:36:04 +00:00
Lake chore: update stage0 2026-02-01 03:54:16 +00:00
Lean feat: cache output universe parameter positions (#12285) 2026-02-02 19:56:33 -08:00
LeanChecker chore: update stage0 2026-02-01 03:54:16 +00:00
Std chore: update stage0 2026-02-01 03:54:16 +00:00
Init.c chore: update stage0 2026-01-20 12:05:41 +00:00
Lake.c chore: update stage0 2025-10-23 08:03:18 +00:00
LakeMain.c chore: update stage0 2026-01-26 18:21:01 +00:00
Lean.c chore: update stage0 2026-02-01 17:04:45 +00:00
LeanChecker.c chore: update stage0 2026-02-01 03:54:16 +00:00
Std.c chore: update stage0 2025-10-23 08:03:18 +00:00