lean4-htt/tests
Joachim Breitner 3d1d8fc1de
feat: unfolding functional induction principles (#8088)
This PR adds the “unfolding” variant of the functional induction and
functional cases principles, under the name `foo.induct_unfolding` resp.
`foo.fun_cases_unfolding`. These theorems combine induction over the
structure of a recursive function with the unfolding of that function,
and should be more reliable, easier to use and more efficient than just
case-splitting and then rewriting with equational theorems.

For example  instead of
```
ackermann.induct
  (motive : Nat → Nat → Prop)
  (case1 : ∀ (m : Nat), motive 0 m)
  (case2 : ∀ (n : Nat), motive n 1 → motive (Nat.succ n) 0)
  (case3 : ∀ (n m : Nat), motive (n + 1) m → motive n (ackermann (n + 1) m) → motive (Nat.succ n) (Nat.succ m))
  (x x : Nat) : motive x x
```
one gets
```
ackermann.fun_cases_unfolding
  (motive : Nat → Nat → Nat → Prop)
  (case1 : ∀ (m : Nat), motive 0 m (m + 1))
  (case2 : ∀ (n : Nat), motive n.succ 0 (ackermann n 1))
  (case3 : ∀ (n m : Nat), motive n.succ m.succ (ackermann n (ackermann (n + 1) m)))
  (x✝ x✝¹ : Nat) : motive x✝ x✝¹ (ackermann x✝ x✝¹)
```
2025-04-29 16:43:06 +00:00
..
bench chore: robustify Nix shell (#8141) 2025-04-28 15:08:32 +00:00
compiler feat: wait on dedicated tasks after main is finished (#7958) 2025-04-14 11:53:54 +00:00
elabissues
ir
lean feat: unfolding functional induction principles (#8088) 2025-04-29 16:43:06 +00:00
pkg test: disable flaky test 2025-04-29 17:34:10 +02:00
playground chore: adjust BEq classes (#7855) 2025-04-16 13:24:23 +00:00
plugin
simpperf
.gitignore
common.sh chore: normalize URLs to the language reference in test results (#7782) 2025-04-02 06:17:31 +00:00
lean-toolchain