lean4-htt/tests/lean/run/7638.lean
Parth Shastri 5d50433e6a
fix: allow arbitrary sorts in structural recursion over reflexive inductive types (#7639)
This PR changes the generated `below` and `brecOn` implementations for
reflexive inductive types to support motives in `Sort u` rather than
`Type u`.

Closes #7638
2025-06-13 21:51:09 +00:00

24 lines
654 B
Text
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

inductive Foo : Type
| mk : Foo → Foo
inductive Bar : Type
| mk : (Unit → Bar) → Bar
def Foo.elim {α : Sort u} : Foo → α
| ⟨foo⟩ => elim foo
termination_by structural foo => foo
def Bar.elim {α : Sort u} : Bar → α
| ⟨bar⟩ => elim (bar ())
termination_by structural bar => bar
inductive StressTest : Type 5
| f (x : Type 4 → StressTest)
| g (x : Type 3 → StressTest)
| h (x : Type 4 → StressTest) (y : Type 3 → StressTest)
def StressTest.elim {α : Sort u} : StressTest → α
| f x => elim (x (Type 3))
| g x => elim (x (Type 2))
| h x _y => elim (x (Type 3))
termination_by structural t => t