lean4-htt/tests
Joachim Breitner dede354e77
fix: Float RecApp out of applications (#2818)
This didn't work before
```
def f (n : Nat) : Nat :=
  match n with
  | 0 => 0
  | n + 1 => (f) n
```
because the `RecApp` metadata marker gets in the way. More practically
relevant, such code is to be produced when using `rw` or `simp` in
recursive theorems (see included test case).

We can fix this by preprocessing the definitions and floating the
`.mdata` marker out of applications.

For structural recursion, there already exists a `preprocess` function;
this now also floats out `.mdata` markers.

For well-founded recursion, this introduces an analogous `preprocess`
function.

Fixes #2810.

One test case output changes: With the `.mdata` out of the way, we get a
different error message. Seems fine.

Alternative approaches are:

* Leaving the `.mdata` marker where it is, and looking around it.
  Tried in #2813, but not nice (many many places where `withApp` etc.
  need to be adjusted).
* Moving the `.mdata` _inside_ the application, so that `withApp` still
  works. Tried in #2814. Also not nice, the invariant that the `.mdata`
  is around the `.const` is tedious to maintain.
2023-11-22 14:25:09 +00:00
..
bench chore: add import Lean benchmark 2023-11-07 18:46:28 +01:00
compiler feat: allow trailing comma in tuples, lists, and tactics (#2643) 2023-11-17 13:31:41 +01:00
elabissues chore: fix more typos in comments 2023-10-08 14:37:34 -07:00
ir
lean fix: Float RecApp out of applications (#2818) 2023-11-22 14:25:09 +00:00
pkg chore: ignore forgotten Lake test artifacts 2023-11-17 21:25:41 -05:00
playground perf: Use flat ByteArrays in Trie (#2529) 2023-09-20 13:22:37 +02:00
plugin feat: profiling of linters 2023-04-18 15:30:21 +02:00
simpperf
.gitignore
common.sh fix: use -O3 for LLVM tests in common.sh 2023-11-02 23:21:47 +01:00