lean4-htt/tests
Leonardo de Moura 98bd162ad4
feat: close goals using match-expression conditions in grind (#6783)
This PR adds support for closing goals using `match`-expression
conditions that are known to be true in the `grind` tactic state.
`grind` can now solve goals such as:
```lean
def f : List Nat → List Nat → Nat
  | _, 1 :: _ :: _ => 1
  | _, _ :: _ => 2
  | _, _  => 0

example : z = a :: as → y = z → f x y > 0
```
Without `grind`, we would use the `split` tactic. The first two goals,
corresponding to the first two alternatives, are closed using `simp`,
and the the third using the `match`-expression condition produced by
`split`. The proof would proceed as follows.
```lean
example : z = a :: as → y = z → f x y > 0 := by
  intros
  unfold f
  split
  next => simp
  next => simp
  next h =>
    /-
    ...
    _ : z = a :: as
    _ : y = z
    ...
    h : ∀ (head : Nat) (tail : List Nat), y = head :: tail → False
    |- 0 > 0
    -/
    subst_vars
    /-
    ...
    h : ∀ (head : Nat) (tail : List Nat), a :: as = head :: tail → False
    |- 0 > 0
    -/
    have : False := h a as rfl
    contradiction
```
Here is the same proof using `grind`.
```lean
example : z = a :: as → y = z → f x y > 0 := by
  grind [f.eq_def]
```
2025-01-26 17:13:11 +00:00
..
bench chore: disable Elab.async on the cmdline for now (#6722) 2025-01-22 18:25:47 +00:00
compiler feat: Simp.Config.implicitDefEqProofs (#4595) 2024-11-29 22:29:27 +00:00
elabissues
ir
lean feat: close goals using match-expression conditions in grind (#6783) 2025-01-26 17:13:11 +00:00
pkg feat: Lean.loadPlugin (#6130) 2024-11-27 09:56:31 +00:00
playground
plugin
simpperf
.gitignore
common.sh test: do not filter output for non-diff tests (#6308) 2024-12-04 17:49:35 +00:00
lean-toolchain