Compare commits

...

1 Commits

Author SHA1 Message Date
Leonardo de Moura
1dd8750a72 fix: missing propagation in grind
This PR adds a missing propagation rule to the (WIP) `grind` tactic.
2025-01-04 08:49:09 -08:00
2 changed files with 5 additions and 0 deletions

View File

@@ -99,6 +99,8 @@ builtin_grind_propagator propagateNotUp ↑Not := fun e => do
else if ( isEqTrue a) then
-- a = True → (Not a) = False
pushEqFalse e <| mkApp2 (mkConst ``Lean.Grind.not_eq_of_eq_true) a ( mkEqTrueProof a)
else if ( isEqv e a) then
closeGoal <| mkApp2 (mkConst ``Lean.Grind.false_of_not_eq_self) a ( mkEqProof e a)
/--
Propagates truth values downwards for a negation expression `Not a` based on the truth value of `Not a`.

View File

@@ -103,3 +103,6 @@ example (p q r : Prop) : p (q ↔ r) → ¬r → q → False := by
grind on_failure do
Lean.logInfo "hello world"
fallback
example (a b : Nat) : (a = b) = (b = a) := by
grind