This PR improves support for `Fin n` in `grind cutsat` when `n` is not a
numeral. For example, the following goals can now be solved
automatically:
```lean
example (p d : Nat) (n : Fin (p + 1))
: 2 ≤ p → p ≤ d + 1 → d = 1 → n = 0 ∨ n = 1 ∨ n = 2 := by
grind
example (s : Nat) (i j : Fin (s + 1)) (hn : i ≠ j) (hl : ¬i < j) : j < i := by
grind
example {n : Nat} (j : Fin (n + 1)) : j ≤ j := by
grind
example {n : Nat} (x y : Fin ((n + 1) + 1)) (h₂ : ¬x = y) (h : ¬x < y) : y < x := by
grind
```
|
||
|---|---|---|
| .. | ||
| CollectAxioms.lean | ||
| CollectFVars.lean | ||
| CollectLevelMVars.lean | ||
| CollectLevelParams.lean | ||
| CollectLooseBVars.lean | ||
| CollectMVars.lean | ||
| Diff.lean | ||
| FindExpr.lean | ||
| FindLevelMVar.lean | ||
| FindMVar.lean | ||
| FoldConsts.lean | ||
| ForEachExpr.lean | ||
| ForEachExprWhere.lean | ||
| FVarSubset.lean | ||
| HasConstCache.lean | ||
| Heartbeats.lean | ||
| InstantiateLevelParams.lean | ||
| LakePath.lean | ||
| LeanOptions.lean | ||
| MonadBacktrack.lean | ||
| MonadCache.lean | ||
| NumApps.lean | ||
| NumObjs.lean | ||
| OccursCheck.lean | ||
| Path.lean | ||
| PPExt.lean | ||
| Profile.lean | ||
| Profiler.lean | ||
| PtrSet.lean | ||
| RecDepth.lean | ||
| Recognizers.lean | ||
| ReplaceExpr.lean | ||
| ReplaceLevel.lean | ||
| SafeExponentiation.lean | ||
| SCC.lean | ||
| SearchPath.lean | ||
| ShareCommon.lean | ||
| Sorry.lean | ||
| SortExprs.lean | ||
| TestExtern.lean | ||
| Trace.lean | ||