lean4-htt/tests/lean/run/grind_11690.lean
Kim Morrison 0708024c46
fix: support dot notation on declarations in grind lemma list (#11691)
This PR fixes `grind` to support dot notation on declarations in the
lemma list.

When using `grind only [foo.le]` where `foo.le` is dot notation applying
`LT.lt.le` to a theorem `foo`, grind previously failed with "Unknown
constant `foo.le`" because it tried to look up `foo.le` as a constant
name rather than elaborating it as a term.

The fix adds a fallback in `processParam`: when constant lookup fails,
it now falls back to `processTermParam` which elaborates the identifier
as a term. This allows dot notation expressions like `log_two_lt_d9.le`
to work correctly.

Closes #11690

🤖 Prepared with Claude Code

---------

Co-authored-by: Claude <noreply@anthropic.com>
2025-12-17 03:17:46 +00:00

26 lines
640 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.

/-!
# Test for issue #11690: grind should support dot notation on declarations
When using `grind only [foo.le]` where `foo.le` is dot notation applying
`LT.lt.le` to a theorem `foo`, grind should elaborate it as a term rather
than failing with "Unknown constant `foo.le`".
-/
class Preorder (α : Type) extends LE α, LT α where
theorem le_of_lt [Preorder α] {a b : α} (hab : a < b) : a ≤ b := sorry
variable [Preorder α]
def LT.lt.le := @le_of_lt
axiom α : Type
axiom a : α
axiom b : α
axiom bar : a < b
example : a ≤ b := bar.le -- works (term elaboration)
#guard_msgs in
example : a ≤ b := by
grind only [bar.le]