lean4-htt/tests/lean/grind/list_problems.lean
Leonardo de Moura ba1c1258d7
feat: case split on implications in grind (#7864)
This PR adds support to `grind` for case splitting on implications of
the form `p -> q` and `(h : p) -> q h`. See the new option `(splitImp :=
true)`.
2025-04-08 00:10:43 +00:00

25 lines
630 B
Text
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

reset_grind_attrs%
reset_grind_attrs%
theorem getElem?_eq_some_iff {l : List α} : l[i]? = some a ↔ ∃ h : i < l.length, l[i] = a := by
induction l
· sorry
· cases i
· -- Better support for implication and dependent implication.
-- We need inequality propagation (or case-splits)
grind
· -- Similarly
grind
---
reset_grind_attrs%
attribute [grind] List.getElem_append_left List.getElem_append_right
attribute [grind] List.length_cons List.length_nil
example {l : List α} {a : α} {i : Nat} (h : i = l.length) (w) :
(l ++ [a])[i]'w = a := by
grind -- Similar to issue above.
---