lean4-htt/tests/lean/run/grind_pattern_scoped.lean
Kim Morrison 8a4fb762f3
feat: grind use/instantiate only can activate all scoped theorems in a namespace (#11335)
This PR enables the syntax `use [ns Foo]` and `instantiate only [ns
Foo]` inside a `grind` tactic block, and has the effect of activating
all grind patterns scoped to that namespace. We can use this to
implement specialized tactics using `grind`, but only controlled subsets
of theorems.

---------

Co-authored-by: Claude <noreply@anthropic.com>
2025-11-25 02:41:08 +00:00

16 lines
555 B
Text

import Lean.Meta.Tactic.Grind.EMatchTheorem
open Lean
open Lean.Meta.Grind
/-- info: Namespace `Lean.Meta.Grind.Lia` has scoped theorems: true -/
#guard_msgs in
#eval show CoreM Unit from do
let theorems ← getEMatchTheoremsForNamespace `Lean.Meta.Grind.Lia
IO.println s!"Namespace `Lean.Meta.Grind.Lia` has scoped theorems: {decide (theorems.size > 0)}"
-- Test namespace-based theorem instantiation
example (x y : Int) (h : max x y < 7) : x + y < 13 := by
grind =>
use [namespace Lean.Meta.Grind.Lia]
repeat (first (lia) (cases_next))