lean4-htt/tests
Joachim Breitner 2f8c85af89
fix: ensure etaStruct is enabled during type inference (#12507)
This PR fixes #12495 where equational theorem generation fails for
structurally recursive definitions using a Box-like wrapper around
nested inductives.

## Root Cause

`withInferTypeConfig` (in `InferType.lean`) ensures various MetaM config
settings (`beta`, `iota`, `zeta`, `zetaHave`, `zetaDelta`, `proj`) are
enabled during type inference, but was missing `etaStruct`. When
`inferType` is called from a context where `etaStruct` is disabled —
such as inside `simpMatch` (which sets `etaStruct := .none` via
`SimpM.run` → `withSimpContext`) — `whnf` cannot eta-expand structure
values needed for recursor iota reduction.

Concretely, projecting from a type like `Rec.rec_2 ... base` (where
`base : Box Rec`) requires eta-expanding `base` to `Box.mk base.data` so
the `Box` recursor can reduce. With `etaStruct := .none`,
`toCtorWhenStructure` skips the eta-expansion, leaving `whnf` stuck and
`inferProjType` unable to recognize the resulting type as a structure.

## Fix

Add `etaStruct := .all` to the config settings ensured by
`withInferTypeConfig`, alongside the existing `beta`, `iota`, `zeta`,
`zetaHave`, `zetaDelta`, and `proj` settings. This also allows reverting
the workaround (`try/catch` around `simpMatch?`) that was added in the
first commit.

## Test plan

- [x] Existing test `tests/lean/run/issue12495.lean` passes
- [x] Full test suite (3561 tests) passes with 0 failures

🤖 Generated with [Claude Code](https://claude.com/claude-code)

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-16 20:27:57 +00:00
..
bench test: remove let handling from Sym mvcgen (#12505) 2026-02-16 15:58:36 +00:00
bench-radar chore: fail benchmarks if lakeprof upload fails (#12313) 2026-02-04 15:53:33 +00:00
compiler chore: remove orphaned *.expected.out files (#12357) 2026-02-06 17:05:43 +00:00
elabissues
ir
lake feat: support revised nightly releases (nightly-YYYY-MM-DD-revK) (#12461) 2026-02-13 00:41:04 +00:00
lean fix: ensure etaStruct is enabled during type inference (#12507) 2026-02-16 20:27:57 +00:00
pkg fix: no defeq equations for irreducible definitions (#12429) 2026-02-11 11:49:10 +00:00
playground
plugin
simpperf
.gitignore
CMakeLists.txt chore: remove outdated trust0 test (#12401) 2026-02-10 13:07:10 +00:00
common.sh
lakefile.toml
lean-toolchain