| open Lean | |
| syntax (name := myintro) "intro" sepBy(ident, ",") : tactic | |
| macro_rules (kind := myintro) | |
| | `(tactic| intro $x,*) => pure $ mkNode `Lean.Parser.Tactic.intro #[mkAtom "intro", mkNullNode x] | |
| theorem tst1 {p q : Prop} : p → q → p := | |
| by { | |
| intro h1, h2; | |
| assumption | |
| } | |
| theorem tst2 {p q : Prop} : p → q → p := | |
| by { | |
| intro h1; -- the builtin and myintro overlap here. | |
| intro h2; -- the builtin and myintro overlap here. | |
| assumption | |
| } | |
| theorem tst3 {p q : Prop} : p → q → p := | |
| by { | |
| intro h1 h2; | |
| assumption | |
| } |