lean4-htt/tests/lean/guessLex.lean.expected.out
Joachim Breitner 3ab2c714ec
feat: infer mutual structural recursion (#4718)
the support for mutual structural recursion (new since #4575) is
extended so that Lean tries to infer it even without annotations.

* The error message when termination checking fails looks quite
different now. Maybe a bit better, maybe with more room for
improvements.
* If there are too many combinations (with an arbitrary cut-off) for a
given argument type, it will just give up and ask the user to use
`termination_by structural`.
* It is now legal to specify `termination_by structural` on not
necessarily all functions of a clique; this simply restricts the
combinations of arguments that Lean considers.

---------

Co-authored-by: Tobias Grosser <tobias@grosser.es>
2024-07-15 09:34:06 +00:00

62 lines
1.8 KiB
Text

Inferred termination argument:
termination_by (n, m)
Inferred termination argument:
termination_by (m, n)
Inferred termination argument:
termination_by (n, m)
Inferred termination argument:
termination_by x1 x2 => (x2, x1)
Inferred termination argument:
termination_by x1 => x1
Inferred termination argument:
termination_by x1 => x1
Inferred termination argument:
termination_by x1 => x1
Inferred termination argument:
termination_by x1 => x1
Inferred termination argument:
termination_by x1 => (x1, 0)
Inferred termination argument:
termination_by (n, 1)
Inferred termination argument:
termination_by (m, n)
Inferred termination argument:
termination_by x1 x2 x3 x4 x5 x6 x7 x8 => (x8, x7, x6, x5, x4, x3, x2, x1)
Inferred termination argument:
termination_by x1 => x1
Inferred termination argument:
termination_by x1 => sizeOf x1
Inferred termination argument:
termination_by n m => (n, sizeOf m)
Inferred termination argument:
termination_by m => m
Inferred termination argument:
termination_by (sizeOf a, 1)
Inferred termination argument:
termination_by (sizeOf a, 0)
Inferred termination argument:
termination_by x2' => x2'
Inferred termination argument:
termination_by x2 => x2
Inferred termination argument:
termination_by _ x2 => x2
Inferred termination argument:
termination_by x1 => sizeOf x1
Inferred termination argument:
termination_by x2 => SizeOf.sizeOf x2
Inferred termination argument:
termination_by x1 => SizeOf.sizeOf x1
Inferred termination argument:
termination_by x2 => SizeOf.sizeOf x2
Inferred termination argument:
termination_by x1 => x1
Inferred termination argument:
termination_by x1 => sizeOf x1
Inferred termination argument:
termination_by x1 => x1
Inferred termination argument:
termination_by sizeOf o
Inferred termination argument:
termination_by x1 => x1
Inferred termination argument:
termination_by x1 => sizeOf x1