lean4-htt/src/Lean/Util
Leonardo de Moura 0db795a1dc
feat: improve grind cutsat support for Fin n when n is not a numeral (#10022)
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
```
2025-08-21 17:25:52 +00:00
..
CollectAxioms.lean refactor: module-ize Lean (#9330) 2025-07-25 12:02:51 +00:00
CollectFVars.lean refactor: module-ize Lean (#9330) 2025-07-25 12:02:51 +00:00
CollectLevelMVars.lean refactor: module-ize Lean (#9330) 2025-07-25 12:02:51 +00:00
CollectLevelParams.lean refactor: module-ize Lean (#9330) 2025-07-25 12:02:51 +00:00
CollectLooseBVars.lean refactor: module-ize Lean (#9330) 2025-07-25 12:02:51 +00:00
CollectMVars.lean refactor: module-ize Lean (#9330) 2025-07-25 12:02:51 +00:00
Diff.lean refactor: module-ize Lean (#9330) 2025-07-25 12:02:51 +00:00
FindExpr.lean refactor: module-ize Lean (#9330) 2025-07-25 12:02:51 +00:00
FindLevelMVar.lean refactor: module-ize Lean (#9330) 2025-07-25 12:02:51 +00:00
FindMVar.lean refactor: module-ize Lean (#9330) 2025-07-25 12:02:51 +00:00
FoldConsts.lean refactor: module-ize Lean (#9330) 2025-07-25 12:02:51 +00:00
ForEachExpr.lean refactor: module-ize Lean (#9330) 2025-07-25 12:02:51 +00:00
ForEachExprWhere.lean refactor: module-ize Lean (#9330) 2025-07-25 12:02:51 +00:00
FVarSubset.lean refactor: module-ize Lean (#9330) 2025-07-25 12:02:51 +00:00
HasConstCache.lean refactor: module-ize Lean (#9330) 2025-07-25 12:02:51 +00:00
Heartbeats.lean refactor: module-ize Lean (#9330) 2025-07-25 12:02:51 +00:00
InstantiateLevelParams.lean refactor: module-ize Lean (#9330) 2025-07-25 12:02:51 +00:00
LakePath.lean refactor: module-ize Lean (#9330) 2025-07-25 12:02:51 +00:00
LeanOptions.lean refactor: module-ize Lean (#9330) 2025-07-25 12:02:51 +00:00
MonadBacktrack.lean refactor: module-ize Lean (#9330) 2025-07-25 12:02:51 +00:00
MonadCache.lean refactor: module-ize Lean (#9330) 2025-07-25 12:02:51 +00:00
NumApps.lean refactor: module-ize Lean (#9330) 2025-07-25 12:02:51 +00:00
NumObjs.lean refactor: module-ize Lean (#9330) 2025-07-25 12:02:51 +00:00
OccursCheck.lean refactor: module-ize Lean (#9330) 2025-07-25 12:02:51 +00:00
Path.lean refactor: module-ize Lean (#9330) 2025-07-25 12:02:51 +00:00
PPExt.lean refactor: module-ize Lean (#9330) 2025-07-25 12:02:51 +00:00
Profile.lean refactor: module-ize Lean (#9330) 2025-07-25 12:02:51 +00:00
Profiler.lean fix: trace.profiler.output with newer Firefox Profiler (#9659) 2025-08-01 09:00:15 +00:00
PtrSet.lean refactor: module-ize Lean (#9330) 2025-07-25 12:02:51 +00:00
RecDepth.lean refactor: module-ize Lean (#9330) 2025-07-25 12:02:51 +00:00
Recognizers.lean refactor: module-ize Lean (#9330) 2025-07-25 12:02:51 +00:00
ReplaceExpr.lean refactor: module-ize Lean (#9330) 2025-07-25 12:02:51 +00:00
ReplaceLevel.lean refactor: module-ize Lean (#9330) 2025-07-25 12:02:51 +00:00
SafeExponentiation.lean feat: improve grind cutsat support for Fin n when n is not a numeral (#10022) 2025-08-21 17:25:52 +00:00
SCC.lean refactor: module-ize Lean (#9330) 2025-07-25 12:02:51 +00:00
SearchPath.lean refactor: module-ize Lean (#9330) 2025-07-25 12:02:51 +00:00
ShareCommon.lean refactor: module-ize Lean (#9330) 2025-07-25 12:02:51 +00:00
Sorry.lean refactor: module-ize Lean (#9330) 2025-07-25 12:02:51 +00:00
SortExprs.lean refactor: module-ize Lean (#9330) 2025-07-25 12:02:51 +00:00
TestExtern.lean refactor: module-ize Lean (#9330) 2025-07-25 12:02:51 +00:00
Trace.lean refactor: module-ize Lean (#9330) 2025-07-25 12:02:51 +00:00