lean4-htt/tests/lean/run/issue10683.lean
Joachim Breitner 5a751d4688
fix: induction: do not allow generalizing variables occurring in the using clause (#10697)
This PR lets `induction` print a warning if a variable occurring in the
`using` clause is generalized. Fixes #10683.
2025-10-07 15:38:34 +00:00

20 lines
844 B
Text

def orderedInsert (a : Nat) : List Nat → List Nat
| [] => [a]
| b :: l => if a < b then a :: b :: l else b :: orderedInsert a l
/-- error: Variable `x` cannot be generalized because the induction principle depends on it -/
#guard_msgs in
example : orderedInsert x l = [] := by
induction l using orderedInsert.induct_unfolding (a := x) generalizing x
/-- error: Variable `x` cannot be generalized because the induction principle depends on it -/
#guard_msgs in
example : orderedInsert x l = [] := by
fun_induction orderedInsert generalizing x
axiom foo_induct (n : Nat) {motive : Nat → Prop} (h : ∀ m, n = m): ∀ m, motive m
/-- error: Variable `n` cannot be generalized because the induction principle depends on it -/
#guard_msgs in
example (n m : Nat) : n = m := by
induction m using foo_induct (n := n) generalizing n