lean4-htt/tests/lean/inductionErrors.lean.expected.out
Kyle Miller 45fccc5906
feat: custom eliminators for induction and cases tactics, and beautiful eliminators for Nat (#3629)
Replaces `@[eliminator]` with two attributes `@[induction_eliminator]`
and `@[cases_eliminator]` for defining custom eliminators for the
`induction` and `cases` tactics, respectively.

Adds `Nat.recAux` and `Nat.casesAuxOn`, which are eliminators that are
defeq to `Nat.rec` and `Nat.casesOn`, but these use `0` and `n + 1`
rather than `Nat.zero` and `Nat.succ n`.

For example, using `induction` to prove that the factorial function is
positive now has the following goal states (thanks also to #3616 for the
goal state after unfolding).
```lean
example : 0 < fact x := by
  induction x with
  | zero => decide
  | succ x ih =>
    /-
    x : Nat
    ih : 0 < fact x
    ⊢ 0 < fact (x + 1)
    -/
    unfold fact
    /-
    ...
    ⊢ 0 < (x + 1) * fact x
    -/
    simpa using ih
```

Thanks to @adamtopaz for initial work on splitting the `@[eliminator]`
attribute.
2024-03-09 15:31:51 +00:00

31 lines
1.2 KiB
Text

inductionErrors.lean:11:12-11:27: error: unsolved goals
case lower.h
p d : Nat
⊢ p ≤ p + Nat.succ d
inductionErrors.lean:12:12-12:27: error: unsolved goals
case upper.h
q d : Nat
⊢ q + Nat.succ d > q
inductionErrors.lean:16:19-16:26: error: unknown identifier 'elimEx2'
inductionErrors.lean:22:2-25:45: error: insufficient number of targets for 'elimEx'
inductionErrors.lean:28:16-28:23: error: unexpected eliminator resulting type
Nat
inductionErrors.lean:35:11-35:15: error: unsolved goals
x : Nat
⊢ 0 + 0 = 0
inductionErrors.lean:36:11-36:15: error: unsolved goals
x y : Nat
⊢ 0 + (y + 1) = y + 1
inductionErrors.lean:40:14-40:18: error: unsolved goals
case zero
⊢ 0 + 0 = 0
inductionErrors.lean:41:14-41:18: error: unsolved goals
case succ
y : Nat
⊢ 0 + (y + 1) = y + 1
inductionErrors.lean:50:2-50:16: error: alternative 'cons' is not needed
inductionErrors.lean:55:2-55:16: error: alternative 'cons' is not needed
inductionErrors.lean:60:2-60:40: error: invalid alternative name 'upper2'
inductionErrors.lean:66:2-66:28: error: invalid occurrence of wildcard alternative, it must be the last alternative
inductionErrors.lean:74:2-74:34: error: unused alternative
inductionErrors.lean:80:2-80:53: error: unused alternative