This PR adds the infrastructure for simproc and discharger DSLs used to specify `pre`/`post` simproc chains and conditional rewrite dischargers in `Sym.simp` variants. **Syntax categories** (`src/Init/Sym/Simp/SimprocDSL.lean`): - `sym_simproc` with primitives (`ground`, `telescope`, `rewrite`, `self`, `none`) and combinators (`>>`, `<|>`) - `sym_discharger` with primitives (`self`, `none`) for the `with` clause of `rewrite` **Elaboration attributes** (`src/Lean/Elab/Tactic/Grind/SimprocDSL.lean`): - `builtin_sym_simproc` / `sym_simproc` mapping syntax to `Syntax → GrindTacticM Simproc` - `builtin_sym_discharger` / `sym_discharger` mapping syntax to `Syntax → GrindTacticM Discharger` - `elabSymSimproc`, `elabSymDischarger`, and `elabWithClause` dispatchers Built-in elaborators for each primitive/combinator will follow in a subsequent PR after the stage0 update. Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| src | ||
| stdlib | ||