File tree Expand file tree Collapse file tree 2 files changed +23
-0
lines changed
src/Lean/Meta/Tactic/Grind Expand file tree Collapse file tree 2 files changed +23
-0
lines changed Original file line number Diff line number Diff line change @@ -57,6 +57,10 @@ private def checkParents (e : Expr) : GoalM Unit := do
57
57
if (← checkChild arg) then
58
58
found := true
59
59
break
60
+ -- Recall that we have support for `Expr.forallE` propagation. See `ForallProp.lean`.
61
+ if let .forallE _ d _ _ := parent then
62
+ if (← checkChild d) then
63
+ found := true
60
64
unless found do
61
65
assert! (← checkChild parent.getAppFn)
62
66
else
Original file line number Diff line number Diff line change
1
+ grind_pattern Array.size_set => Array.set a i v h
2
+ grind_pattern Array.get_set_eq => a.set i v h
3
+ grind_pattern Array.get_set_ne => (a.set i v hi)[j]
4
+
5
+ set_option grind.debug true
6
+ set_option trace.grind.ematch.pattern true
7
+ set_option trace.grind.ematch.instance true
8
+
9
+ example (as bs cs : Array α) (v₁ v₂ : α)
10
+ (i₁ i₂ j : Nat)
11
+ (h₁ : i₁ < as.size)
12
+ (h₂ : bs = as.set i₁ v₁)
13
+ (h₃ : i₂ < bs.size)
14
+ (h₃ : cs = bs.set i₂ v₂)
15
+ (h₄ : i₁ ≠ j ∧ i₂ ≠ j)
16
+ (h₅ : j < cs.size)
17
+ (h₆ : j < as.size)
18
+ : cs[j] = as[j] := by
19
+ grind
You can’t perform that action at this time.
0 commit comments