This PR makes the automatic first token detection in tactic docs much more robust, in addition to making it work in modules and other contexts where builtin tactics are not in the environment. It also adds the ability to override the tactic's first token as the user-visible name. Previously, first token detection would look up the parser descriptor in the environment and process its syntax. This would be incorrect for builtin parsers, as well as for modules in which the definition is not loaded. Now, it instead consults the Pratt parsing table for the `tactic` syntax category. Tests are added that ensure this keeps working in modules, and also that the first token of all tactics that ship with Lean are either detected unambiguously or annotated to remove ambiguity. Closes #12038.
1569 lines
71 KiB
Text
1569 lines
71 KiB
Text
{"textDocument": {"uri": "file:///completionTactics.lean"},
|
|
"position": {"line": 20, "character": 20}}
|
|
{"items": [], "isIncomplete": true}
|
|
{"textDocument": {"uri": "file:///completionTactics.lean"},
|
|
"position": {"line": 23, "character": 21}}
|
|
{"items":
|
|
[{"label": "open",
|
|
"kind": 14,
|
|
"documentation":
|
|
{"value":
|
|
"`open Foo in tacs` (the tactic) acts like `open Foo` at command level,\nbut it opens a namespace only within the tactics `tacs`. ",
|
|
"kind": "markdown"},
|
|
"data": ["«external:file:///completionTactics.lean»", 23, 21, 0]},
|
|
{"label": "match",
|
|
"kind": 14,
|
|
"documentation":
|
|
{"value":
|
|
"`match` performs case analysis on one or more expressions.\nSee [Induction and Recursion][tpil4].\nThe syntax for the `match` tactic is the same as term-mode `match`, except that\nthe match arms are tactics instead of expressions.\n```\nexample (n : Nat) : n = n := by\n match n with\n | 0 => rfl\n | i+1 => simp\n```\n\n[tpil4]: https://lean-lang.org/theorem_proving_in_lean4/induction_and_recursion.html\n",
|
|
"kind": "markdown"},
|
|
"data": ["«external:file:///completionTactics.lean»", 23, 21, 0]},
|
|
{"label": "set_option",
|
|
"kind": 14,
|
|
"documentation":
|
|
{"value":
|
|
"`set_option opt val in tacs` (the tactic) acts like `set_option opt val` at the command level,\nbut it sets the option only within the tactics `tacs`. ",
|
|
"kind": "markdown"},
|
|
"data": ["«external:file:///completionTactics.lean»", 23, 21, 0]},
|
|
{"label": "skip",
|
|
"kind": 14,
|
|
"documentation": {"value": "A docstring ", "kind": "markdown"},
|
|
"data": ["«external:file:///completionTactics.lean»", 23, 21, 0]},
|
|
{"label": "ident",
|
|
"kind": 14,
|
|
"data": ["«external:file:///completionTactics.lean»", 23, 21, 0]},
|
|
{"label": "exact",
|
|
"kind": 14,
|
|
"documentation": {"value": "Another docstring ", "kind": "markdown"},
|
|
"data": ["«external:file:///completionTactics.lean»", 23, 21, 0]},
|
|
{"label": "intro",
|
|
"kind": 14,
|
|
"data": ["«external:file:///completionTactics.lean»", 23, 21, 0]}],
|
|
"isIncomplete": true}
|
|
Resolution of open:
|
|
{"label": "open",
|
|
"kind": 14,
|
|
"documentation":
|
|
{"value":
|
|
"`open Foo in tacs` (the tactic) acts like `open Foo` at command level,\nbut it opens a namespace only within the tactics `tacs`. ",
|
|
"kind": "markdown"},
|
|
"data": ["«external:file:///completionTactics.lean»", 23, 21, 0]}
|
|
Resolution of match:
|
|
{"label": "match",
|
|
"kind": 14,
|
|
"documentation":
|
|
{"value":
|
|
"`match` performs case analysis on one or more expressions.\nSee [Induction and Recursion][tpil4].\nThe syntax for the `match` tactic is the same as term-mode `match`, except that\nthe match arms are tactics instead of expressions.\n```\nexample (n : Nat) : n = n := by\n match n with\n | 0 => rfl\n | i+1 => simp\n```\n\n[tpil4]: https://lean-lang.org/theorem_proving_in_lean4/induction_and_recursion.html\n",
|
|
"kind": "markdown"},
|
|
"data": ["«external:file:///completionTactics.lean»", 23, 21, 0]}
|
|
Resolution of set_option:
|
|
{"label": "set_option",
|
|
"kind": 14,
|
|
"documentation":
|
|
{"value":
|
|
"`set_option opt val in tacs` (the tactic) acts like `set_option opt val` at the command level,\nbut it sets the option only within the tactics `tacs`. ",
|
|
"kind": "markdown"},
|
|
"data": ["«external:file:///completionTactics.lean»", 23, 21, 0]}
|
|
Resolution of skip:
|
|
{"label": "skip",
|
|
"kind": 14,
|
|
"documentation": {"value": "A docstring ", "kind": "markdown"},
|
|
"data": ["«external:file:///completionTactics.lean»", 23, 21, 0]}
|
|
Resolution of ident:
|
|
{"label": "ident",
|
|
"kind": 14,
|
|
"data": ["«external:file:///completionTactics.lean»", 23, 21, 0]}
|
|
Resolution of exact:
|
|
{"label": "exact",
|
|
"kind": 14,
|
|
"documentation": {"value": "Another docstring ", "kind": "markdown"},
|
|
"data": ["«external:file:///completionTactics.lean»", 23, 21, 0]}
|
|
Resolution of intro:
|
|
{"label": "intro",
|
|
"kind": 14,
|
|
"data": ["«external:file:///completionTactics.lean»", 23, 21, 0]}
|
|
{"textDocument": {"uri": "file:///completionTactics.lean"},
|
|
"position": {"line": 26, "character": 24}}
|
|
{"items":
|
|
[{"label": "open",
|
|
"kind": 14,
|
|
"documentation":
|
|
{"value":
|
|
"`open Foo in tacs` (the tactic) acts like `open Foo` at command level,\nbut it opens a namespace only within the tactics `tacs`. ",
|
|
"kind": "markdown"},
|
|
"data": ["«external:file:///completionTactics.lean»", 26, 24, 0]},
|
|
{"label": "match",
|
|
"kind": 14,
|
|
"documentation":
|
|
{"value":
|
|
"`match` performs case analysis on one or more expressions.\nSee [Induction and Recursion][tpil4].\nThe syntax for the `match` tactic is the same as term-mode `match`, except that\nthe match arms are tactics instead of expressions.\n```\nexample (n : Nat) : n = n := by\n match n with\n | 0 => rfl\n | i+1 => simp\n```\n\n[tpil4]: https://lean-lang.org/theorem_proving_in_lean4/induction_and_recursion.html\n",
|
|
"kind": "markdown"},
|
|
"data": ["«external:file:///completionTactics.lean»", 26, 24, 0]},
|
|
{"label": "set_option",
|
|
"kind": 14,
|
|
"documentation":
|
|
{"value":
|
|
"`set_option opt val in tacs` (the tactic) acts like `set_option opt val` at the command level,\nbut it sets the option only within the tactics `tacs`. ",
|
|
"kind": "markdown"},
|
|
"data": ["«external:file:///completionTactics.lean»", 26, 24, 0]},
|
|
{"label": "skip",
|
|
"kind": 14,
|
|
"documentation": {"value": "A docstring ", "kind": "markdown"},
|
|
"data": ["«external:file:///completionTactics.lean»", 26, 24, 0]},
|
|
{"label": "ident",
|
|
"kind": 14,
|
|
"data": ["«external:file:///completionTactics.lean»", 26, 24, 0]},
|
|
{"label": "exact",
|
|
"kind": 14,
|
|
"documentation": {"value": "Another docstring ", "kind": "markdown"},
|
|
"data": ["«external:file:///completionTactics.lean»", 26, 24, 0]},
|
|
{"label": "intro",
|
|
"kind": 14,
|
|
"data": ["«external:file:///completionTactics.lean»", 26, 24, 0]}],
|
|
"isIncomplete": false}
|
|
Resolution of open:
|
|
{"label": "open",
|
|
"kind": 14,
|
|
"documentation":
|
|
{"value":
|
|
"`open Foo in tacs` (the tactic) acts like `open Foo` at command level,\nbut it opens a namespace only within the tactics `tacs`. ",
|
|
"kind": "markdown"},
|
|
"data": ["«external:file:///completionTactics.lean»", 26, 24, 0]}
|
|
Resolution of match:
|
|
{"label": "match",
|
|
"kind": 14,
|
|
"documentation":
|
|
{"value":
|
|
"`match` performs case analysis on one or more expressions.\nSee [Induction and Recursion][tpil4].\nThe syntax for the `match` tactic is the same as term-mode `match`, except that\nthe match arms are tactics instead of expressions.\n```\nexample (n : Nat) : n = n := by\n match n with\n | 0 => rfl\n | i+1 => simp\n```\n\n[tpil4]: https://lean-lang.org/theorem_proving_in_lean4/induction_and_recursion.html\n",
|
|
"kind": "markdown"},
|
|
"data": ["«external:file:///completionTactics.lean»", 26, 24, 0]}
|
|
Resolution of set_option:
|
|
{"label": "set_option",
|
|
"kind": 14,
|
|
"documentation":
|
|
{"value":
|
|
"`set_option opt val in tacs` (the tactic) acts like `set_option opt val` at the command level,\nbut it sets the option only within the tactics `tacs`. ",
|
|
"kind": "markdown"},
|
|
"data": ["«external:file:///completionTactics.lean»", 26, 24, 0]}
|
|
Resolution of skip:
|
|
{"label": "skip",
|
|
"kind": 14,
|
|
"documentation": {"value": "A docstring ", "kind": "markdown"},
|
|
"data": ["«external:file:///completionTactics.lean»", 26, 24, 0]}
|
|
Resolution of ident:
|
|
{"label": "ident",
|
|
"kind": 14,
|
|
"data": ["«external:file:///completionTactics.lean»", 26, 24, 0]}
|
|
Resolution of exact:
|
|
{"label": "exact",
|
|
"kind": 14,
|
|
"documentation": {"value": "Another docstring ", "kind": "markdown"},
|
|
"data": ["«external:file:///completionTactics.lean»", 26, 24, 0]}
|
|
Resolution of intro:
|
|
{"label": "intro",
|
|
"kind": 14,
|
|
"data": ["«external:file:///completionTactics.lean»", 26, 24, 0]}
|
|
{"textDocument": {"uri": "file:///completionTactics.lean"},
|
|
"position": {"line": 29, "character": 25}}
|
|
{"items": [], "isIncomplete": true}
|
|
{"textDocument": {"uri": "file:///completionTactics.lean"},
|
|
"position": {"line": 32, "character": 26}}
|
|
{"items":
|
|
[{"label": "open",
|
|
"kind": 14,
|
|
"documentation":
|
|
{"value":
|
|
"`open Foo in tacs` (the tactic) acts like `open Foo` at command level,\nbut it opens a namespace only within the tactics `tacs`. ",
|
|
"kind": "markdown"},
|
|
"data": ["«external:file:///completionTactics.lean»", 32, 26, 0]},
|
|
{"label": "match",
|
|
"kind": 14,
|
|
"documentation":
|
|
{"value":
|
|
"`match` performs case analysis on one or more expressions.\nSee [Induction and Recursion][tpil4].\nThe syntax for the `match` tactic is the same as term-mode `match`, except that\nthe match arms are tactics instead of expressions.\n```\nexample (n : Nat) : n = n := by\n match n with\n | 0 => rfl\n | i+1 => simp\n```\n\n[tpil4]: https://lean-lang.org/theorem_proving_in_lean4/induction_and_recursion.html\n",
|
|
"kind": "markdown"},
|
|
"data": ["«external:file:///completionTactics.lean»", 32, 26, 0]},
|
|
{"label": "set_option",
|
|
"kind": 14,
|
|
"documentation":
|
|
{"value":
|
|
"`set_option opt val in tacs` (the tactic) acts like `set_option opt val` at the command level,\nbut it sets the option only within the tactics `tacs`. ",
|
|
"kind": "markdown"},
|
|
"data": ["«external:file:///completionTactics.lean»", 32, 26, 0]},
|
|
{"label": "skip",
|
|
"kind": 14,
|
|
"documentation": {"value": "A docstring ", "kind": "markdown"},
|
|
"data": ["«external:file:///completionTactics.lean»", 32, 26, 0]},
|
|
{"label": "ident",
|
|
"kind": 14,
|
|
"data": ["«external:file:///completionTactics.lean»", 32, 26, 0]},
|
|
{"label": "exact",
|
|
"kind": 14,
|
|
"documentation": {"value": "Another docstring ", "kind": "markdown"},
|
|
"data": ["«external:file:///completionTactics.lean»", 32, 26, 0]},
|
|
{"label": "intro",
|
|
"kind": 14,
|
|
"data": ["«external:file:///completionTactics.lean»", 32, 26, 0]}],
|
|
"isIncomplete": true}
|
|
Resolution of open:
|
|
{"label": "open",
|
|
"kind": 14,
|
|
"documentation":
|
|
{"value":
|
|
"`open Foo in tacs` (the tactic) acts like `open Foo` at command level,\nbut it opens a namespace only within the tactics `tacs`. ",
|
|
"kind": "markdown"},
|
|
"data": ["«external:file:///completionTactics.lean»", 32, 26, 0]}
|
|
Resolution of match:
|
|
{"label": "match",
|
|
"kind": 14,
|
|
"documentation":
|
|
{"value":
|
|
"`match` performs case analysis on one or more expressions.\nSee [Induction and Recursion][tpil4].\nThe syntax for the `match` tactic is the same as term-mode `match`, except that\nthe match arms are tactics instead of expressions.\n```\nexample (n : Nat) : n = n := by\n match n with\n | 0 => rfl\n | i+1 => simp\n```\n\n[tpil4]: https://lean-lang.org/theorem_proving_in_lean4/induction_and_recursion.html\n",
|
|
"kind": "markdown"},
|
|
"data": ["«external:file:///completionTactics.lean»", 32, 26, 0]}
|
|
Resolution of set_option:
|
|
{"label": "set_option",
|
|
"kind": 14,
|
|
"documentation":
|
|
{"value":
|
|
"`set_option opt val in tacs` (the tactic) acts like `set_option opt val` at the command level,\nbut it sets the option only within the tactics `tacs`. ",
|
|
"kind": "markdown"},
|
|
"data": ["«external:file:///completionTactics.lean»", 32, 26, 0]}
|
|
Resolution of skip:
|
|
{"label": "skip",
|
|
"kind": 14,
|
|
"documentation": {"value": "A docstring ", "kind": "markdown"},
|
|
"data": ["«external:file:///completionTactics.lean»", 32, 26, 0]}
|
|
Resolution of ident:
|
|
{"label": "ident",
|
|
"kind": 14,
|
|
"data": ["«external:file:///completionTactics.lean»", 32, 26, 0]}
|
|
Resolution of exact:
|
|
{"label": "exact",
|
|
"kind": 14,
|
|
"documentation": {"value": "Another docstring ", "kind": "markdown"},
|
|
"data": ["«external:file:///completionTactics.lean»", 32, 26, 0]}
|
|
Resolution of intro:
|
|
{"label": "intro",
|
|
"kind": 14,
|
|
"data": ["«external:file:///completionTactics.lean»", 32, 26, 0]}
|
|
{"textDocument": {"uri": "file:///completionTactics.lean"},
|
|
"position": {"line": 35, "character": 27}}
|
|
{"items":
|
|
[{"label": "open",
|
|
"kind": 14,
|
|
"documentation":
|
|
{"value":
|
|
"`open Foo in tacs` (the tactic) acts like `open Foo` at command level,\nbut it opens a namespace only within the tactics `tacs`. ",
|
|
"kind": "markdown"},
|
|
"data": ["«external:file:///completionTactics.lean»", 35, 27, 0]},
|
|
{"label": "match",
|
|
"kind": 14,
|
|
"documentation":
|
|
{"value":
|
|
"`match` performs case analysis on one or more expressions.\nSee [Induction and Recursion][tpil4].\nThe syntax for the `match` tactic is the same as term-mode `match`, except that\nthe match arms are tactics instead of expressions.\n```\nexample (n : Nat) : n = n := by\n match n with\n | 0 => rfl\n | i+1 => simp\n```\n\n[tpil4]: https://lean-lang.org/theorem_proving_in_lean4/induction_and_recursion.html\n",
|
|
"kind": "markdown"},
|
|
"data": ["«external:file:///completionTactics.lean»", 35, 27, 0]},
|
|
{"label": "set_option",
|
|
"kind": 14,
|
|
"documentation":
|
|
{"value":
|
|
"`set_option opt val in tacs` (the tactic) acts like `set_option opt val` at the command level,\nbut it sets the option only within the tactics `tacs`. ",
|
|
"kind": "markdown"},
|
|
"data": ["«external:file:///completionTactics.lean»", 35, 27, 0]},
|
|
{"label": "skip",
|
|
"kind": 14,
|
|
"documentation": {"value": "A docstring ", "kind": "markdown"},
|
|
"data": ["«external:file:///completionTactics.lean»", 35, 27, 0]},
|
|
{"label": "ident",
|
|
"kind": 14,
|
|
"data": ["«external:file:///completionTactics.lean»", 35, 27, 0]},
|
|
{"label": "exact",
|
|
"kind": 14,
|
|
"documentation": {"value": "Another docstring ", "kind": "markdown"},
|
|
"data": ["«external:file:///completionTactics.lean»", 35, 27, 0]},
|
|
{"label": "intro",
|
|
"kind": 14,
|
|
"data": ["«external:file:///completionTactics.lean»", 35, 27, 0]}],
|
|
"isIncomplete": true}
|
|
Resolution of open:
|
|
{"label": "open",
|
|
"kind": 14,
|
|
"documentation":
|
|
{"value":
|
|
"`open Foo in tacs` (the tactic) acts like `open Foo` at command level,\nbut it opens a namespace only within the tactics `tacs`. ",
|
|
"kind": "markdown"},
|
|
"data": ["«external:file:///completionTactics.lean»", 35, 27, 0]}
|
|
Resolution of match:
|
|
{"label": "match",
|
|
"kind": 14,
|
|
"documentation":
|
|
{"value":
|
|
"`match` performs case analysis on one or more expressions.\nSee [Induction and Recursion][tpil4].\nThe syntax for the `match` tactic is the same as term-mode `match`, except that\nthe match arms are tactics instead of expressions.\n```\nexample (n : Nat) : n = n := by\n match n with\n | 0 => rfl\n | i+1 => simp\n```\n\n[tpil4]: https://lean-lang.org/theorem_proving_in_lean4/induction_and_recursion.html\n",
|
|
"kind": "markdown"},
|
|
"data": ["«external:file:///completionTactics.lean»", 35, 27, 0]}
|
|
Resolution of set_option:
|
|
{"label": "set_option",
|
|
"kind": 14,
|
|
"documentation":
|
|
{"value":
|
|
"`set_option opt val in tacs` (the tactic) acts like `set_option opt val` at the command level,\nbut it sets the option only within the tactics `tacs`. ",
|
|
"kind": "markdown"},
|
|
"data": ["«external:file:///completionTactics.lean»", 35, 27, 0]}
|
|
Resolution of skip:
|
|
{"label": "skip",
|
|
"kind": 14,
|
|
"documentation": {"value": "A docstring ", "kind": "markdown"},
|
|
"data": ["«external:file:///completionTactics.lean»", 35, 27, 0]}
|
|
Resolution of ident:
|
|
{"label": "ident",
|
|
"kind": 14,
|
|
"data": ["«external:file:///completionTactics.lean»", 35, 27, 0]}
|
|
Resolution of exact:
|
|
{"label": "exact",
|
|
"kind": 14,
|
|
"documentation": {"value": "Another docstring ", "kind": "markdown"},
|
|
"data": ["«external:file:///completionTactics.lean»", 35, 27, 0]}
|
|
Resolution of intro:
|
|
{"label": "intro",
|
|
"kind": 14,
|
|
"data": ["«external:file:///completionTactics.lean»", 35, 27, 0]}
|
|
{"textDocument": {"uri": "file:///completionTactics.lean"},
|
|
"position": {"line": 40, "character": 7}}
|
|
{"items":
|
|
[{"label": "open",
|
|
"kind": 14,
|
|
"documentation":
|
|
{"value":
|
|
"`open Foo in tacs` (the tactic) acts like `open Foo` at command level,\nbut it opens a namespace only within the tactics `tacs`. ",
|
|
"kind": "markdown"},
|
|
"data": ["«external:file:///completionTactics.lean»", 40, 7, 0]},
|
|
{"label": "match",
|
|
"kind": 14,
|
|
"documentation":
|
|
{"value":
|
|
"`match` performs case analysis on one or more expressions.\nSee [Induction and Recursion][tpil4].\nThe syntax for the `match` tactic is the same as term-mode `match`, except that\nthe match arms are tactics instead of expressions.\n```\nexample (n : Nat) : n = n := by\n match n with\n | 0 => rfl\n | i+1 => simp\n```\n\n[tpil4]: https://lean-lang.org/theorem_proving_in_lean4/induction_and_recursion.html\n",
|
|
"kind": "markdown"},
|
|
"data": ["«external:file:///completionTactics.lean»", 40, 7, 0]},
|
|
{"label": "set_option",
|
|
"kind": 14,
|
|
"documentation":
|
|
{"value":
|
|
"`set_option opt val in tacs` (the tactic) acts like `set_option opt val` at the command level,\nbut it sets the option only within the tactics `tacs`. ",
|
|
"kind": "markdown"},
|
|
"data": ["«external:file:///completionTactics.lean»", 40, 7, 0]},
|
|
{"label": "skip",
|
|
"kind": 14,
|
|
"documentation": {"value": "A docstring ", "kind": "markdown"},
|
|
"data": ["«external:file:///completionTactics.lean»", 40, 7, 0]},
|
|
{"label": "ident",
|
|
"kind": 14,
|
|
"data": ["«external:file:///completionTactics.lean»", 40, 7, 0]},
|
|
{"label": "exact",
|
|
"kind": 14,
|
|
"documentation": {"value": "Another docstring ", "kind": "markdown"},
|
|
"data": ["«external:file:///completionTactics.lean»", 40, 7, 0]},
|
|
{"label": "intro",
|
|
"kind": 14,
|
|
"data": ["«external:file:///completionTactics.lean»", 40, 7, 0]}],
|
|
"isIncomplete": true}
|
|
Resolution of open:
|
|
{"label": "open",
|
|
"kind": 14,
|
|
"documentation":
|
|
{"value":
|
|
"`open Foo in tacs` (the tactic) acts like `open Foo` at command level,\nbut it opens a namespace only within the tactics `tacs`. ",
|
|
"kind": "markdown"},
|
|
"data": ["«external:file:///completionTactics.lean»", 40, 7, 0]}
|
|
Resolution of match:
|
|
{"label": "match",
|
|
"kind": 14,
|
|
"documentation":
|
|
{"value":
|
|
"`match` performs case analysis on one or more expressions.\nSee [Induction and Recursion][tpil4].\nThe syntax for the `match` tactic is the same as term-mode `match`, except that\nthe match arms are tactics instead of expressions.\n```\nexample (n : Nat) : n = n := by\n match n with\n | 0 => rfl\n | i+1 => simp\n```\n\n[tpil4]: https://lean-lang.org/theorem_proving_in_lean4/induction_and_recursion.html\n",
|
|
"kind": "markdown"},
|
|
"data": ["«external:file:///completionTactics.lean»", 40, 7, 0]}
|
|
Resolution of set_option:
|
|
{"label": "set_option",
|
|
"kind": 14,
|
|
"documentation":
|
|
{"value":
|
|
"`set_option opt val in tacs` (the tactic) acts like `set_option opt val` at the command level,\nbut it sets the option only within the tactics `tacs`. ",
|
|
"kind": "markdown"},
|
|
"data": ["«external:file:///completionTactics.lean»", 40, 7, 0]}
|
|
Resolution of skip:
|
|
{"label": "skip",
|
|
"kind": 14,
|
|
"documentation": {"value": "A docstring ", "kind": "markdown"},
|
|
"data": ["«external:file:///completionTactics.lean»", 40, 7, 0]}
|
|
Resolution of ident:
|
|
{"label": "ident",
|
|
"kind": 14,
|
|
"data": ["«external:file:///completionTactics.lean»", 40, 7, 0]}
|
|
Resolution of exact:
|
|
{"label": "exact",
|
|
"kind": 14,
|
|
"documentation": {"value": "Another docstring ", "kind": "markdown"},
|
|
"data": ["«external:file:///completionTactics.lean»", 40, 7, 0]}
|
|
Resolution of intro:
|
|
{"label": "intro",
|
|
"kind": 14,
|
|
"data": ["«external:file:///completionTactics.lean»", 40, 7, 0]}
|
|
{"textDocument": {"uri": "file:///completionTactics.lean"},
|
|
"position": {"line": 44, "character": 2}}
|
|
{"items":
|
|
[{"label": "open",
|
|
"kind": 14,
|
|
"documentation":
|
|
{"value":
|
|
"`open Foo in tacs` (the tactic) acts like `open Foo` at command level,\nbut it opens a namespace only within the tactics `tacs`. ",
|
|
"kind": "markdown"},
|
|
"data": ["«external:file:///completionTactics.lean»", 44, 2, 0]},
|
|
{"label": "match",
|
|
"kind": 14,
|
|
"documentation":
|
|
{"value":
|
|
"`match` performs case analysis on one or more expressions.\nSee [Induction and Recursion][tpil4].\nThe syntax for the `match` tactic is the same as term-mode `match`, except that\nthe match arms are tactics instead of expressions.\n```\nexample (n : Nat) : n = n := by\n match n with\n | 0 => rfl\n | i+1 => simp\n```\n\n[tpil4]: https://lean-lang.org/theorem_proving_in_lean4/induction_and_recursion.html\n",
|
|
"kind": "markdown"},
|
|
"data": ["«external:file:///completionTactics.lean»", 44, 2, 0]},
|
|
{"label": "set_option",
|
|
"kind": 14,
|
|
"documentation":
|
|
{"value":
|
|
"`set_option opt val in tacs` (the tactic) acts like `set_option opt val` at the command level,\nbut it sets the option only within the tactics `tacs`. ",
|
|
"kind": "markdown"},
|
|
"data": ["«external:file:///completionTactics.lean»", 44, 2, 0]},
|
|
{"label": "skip",
|
|
"kind": 14,
|
|
"documentation": {"value": "A docstring ", "kind": "markdown"},
|
|
"data": ["«external:file:///completionTactics.lean»", 44, 2, 0]},
|
|
{"label": "ident",
|
|
"kind": 14,
|
|
"data": ["«external:file:///completionTactics.lean»", 44, 2, 0]},
|
|
{"label": "exact",
|
|
"kind": 14,
|
|
"documentation": {"value": "Another docstring ", "kind": "markdown"},
|
|
"data": ["«external:file:///completionTactics.lean»", 44, 2, 0]},
|
|
{"label": "intro",
|
|
"kind": 14,
|
|
"data": ["«external:file:///completionTactics.lean»", 44, 2, 0]}],
|
|
"isIncomplete": true}
|
|
Resolution of open:
|
|
{"label": "open",
|
|
"kind": 14,
|
|
"documentation":
|
|
{"value":
|
|
"`open Foo in tacs` (the tactic) acts like `open Foo` at command level,\nbut it opens a namespace only within the tactics `tacs`. ",
|
|
"kind": "markdown"},
|
|
"data": ["«external:file:///completionTactics.lean»", 44, 2, 0]}
|
|
Resolution of match:
|
|
{"label": "match",
|
|
"kind": 14,
|
|
"documentation":
|
|
{"value":
|
|
"`match` performs case analysis on one or more expressions.\nSee [Induction and Recursion][tpil4].\nThe syntax for the `match` tactic is the same as term-mode `match`, except that\nthe match arms are tactics instead of expressions.\n```\nexample (n : Nat) : n = n := by\n match n with\n | 0 => rfl\n | i+1 => simp\n```\n\n[tpil4]: https://lean-lang.org/theorem_proving_in_lean4/induction_and_recursion.html\n",
|
|
"kind": "markdown"},
|
|
"data": ["«external:file:///completionTactics.lean»", 44, 2, 0]}
|
|
Resolution of set_option:
|
|
{"label": "set_option",
|
|
"kind": 14,
|
|
"documentation":
|
|
{"value":
|
|
"`set_option opt val in tacs` (the tactic) acts like `set_option opt val` at the command level,\nbut it sets the option only within the tactics `tacs`. ",
|
|
"kind": "markdown"},
|
|
"data": ["«external:file:///completionTactics.lean»", 44, 2, 0]}
|
|
Resolution of skip:
|
|
{"label": "skip",
|
|
"kind": 14,
|
|
"documentation": {"value": "A docstring ", "kind": "markdown"},
|
|
"data": ["«external:file:///completionTactics.lean»", 44, 2, 0]}
|
|
Resolution of ident:
|
|
{"label": "ident",
|
|
"kind": 14,
|
|
"data": ["«external:file:///completionTactics.lean»", 44, 2, 0]}
|
|
Resolution of exact:
|
|
{"label": "exact",
|
|
"kind": 14,
|
|
"documentation": {"value": "Another docstring ", "kind": "markdown"},
|
|
"data": ["«external:file:///completionTactics.lean»", 44, 2, 0]}
|
|
Resolution of intro:
|
|
{"label": "intro",
|
|
"kind": 14,
|
|
"data": ["«external:file:///completionTactics.lean»", 44, 2, 0]}
|
|
{"textDocument": {"uri": "file:///completionTactics.lean"},
|
|
"position": {"line": 49, "character": 2}}
|
|
{"items":
|
|
[{"label": "open",
|
|
"kind": 14,
|
|
"documentation":
|
|
{"value":
|
|
"`open Foo in tacs` (the tactic) acts like `open Foo` at command level,\nbut it opens a namespace only within the tactics `tacs`. ",
|
|
"kind": "markdown"},
|
|
"data": ["«external:file:///completionTactics.lean»", 49, 2, 0]},
|
|
{"label": "match",
|
|
"kind": 14,
|
|
"documentation":
|
|
{"value":
|
|
"`match` performs case analysis on one or more expressions.\nSee [Induction and Recursion][tpil4].\nThe syntax for the `match` tactic is the same as term-mode `match`, except that\nthe match arms are tactics instead of expressions.\n```\nexample (n : Nat) : n = n := by\n match n with\n | 0 => rfl\n | i+1 => simp\n```\n\n[tpil4]: https://lean-lang.org/theorem_proving_in_lean4/induction_and_recursion.html\n",
|
|
"kind": "markdown"},
|
|
"data": ["«external:file:///completionTactics.lean»", 49, 2, 0]},
|
|
{"label": "set_option",
|
|
"kind": 14,
|
|
"documentation":
|
|
{"value":
|
|
"`set_option opt val in tacs` (the tactic) acts like `set_option opt val` at the command level,\nbut it sets the option only within the tactics `tacs`. ",
|
|
"kind": "markdown"},
|
|
"data": ["«external:file:///completionTactics.lean»", 49, 2, 0]},
|
|
{"label": "skip",
|
|
"kind": 14,
|
|
"documentation": {"value": "A docstring ", "kind": "markdown"},
|
|
"data": ["«external:file:///completionTactics.lean»", 49, 2, 0]},
|
|
{"label": "ident",
|
|
"kind": 14,
|
|
"data": ["«external:file:///completionTactics.lean»", 49, 2, 0]},
|
|
{"label": "exact",
|
|
"kind": 14,
|
|
"documentation": {"value": "Another docstring ", "kind": "markdown"},
|
|
"data": ["«external:file:///completionTactics.lean»", 49, 2, 0]},
|
|
{"label": "intro",
|
|
"kind": 14,
|
|
"data": ["«external:file:///completionTactics.lean»", 49, 2, 0]}],
|
|
"isIncomplete": true}
|
|
Resolution of open:
|
|
{"label": "open",
|
|
"kind": 14,
|
|
"documentation":
|
|
{"value":
|
|
"`open Foo in tacs` (the tactic) acts like `open Foo` at command level,\nbut it opens a namespace only within the tactics `tacs`. ",
|
|
"kind": "markdown"},
|
|
"data": ["«external:file:///completionTactics.lean»", 49, 2, 0]}
|
|
Resolution of match:
|
|
{"label": "match",
|
|
"kind": 14,
|
|
"documentation":
|
|
{"value":
|
|
"`match` performs case analysis on one or more expressions.\nSee [Induction and Recursion][tpil4].\nThe syntax for the `match` tactic is the same as term-mode `match`, except that\nthe match arms are tactics instead of expressions.\n```\nexample (n : Nat) : n = n := by\n match n with\n | 0 => rfl\n | i+1 => simp\n```\n\n[tpil4]: https://lean-lang.org/theorem_proving_in_lean4/induction_and_recursion.html\n",
|
|
"kind": "markdown"},
|
|
"data": ["«external:file:///completionTactics.lean»", 49, 2, 0]}
|
|
Resolution of set_option:
|
|
{"label": "set_option",
|
|
"kind": 14,
|
|
"documentation":
|
|
{"value":
|
|
"`set_option opt val in tacs` (the tactic) acts like `set_option opt val` at the command level,\nbut it sets the option only within the tactics `tacs`. ",
|
|
"kind": "markdown"},
|
|
"data": ["«external:file:///completionTactics.lean»", 49, 2, 0]}
|
|
Resolution of skip:
|
|
{"label": "skip",
|
|
"kind": 14,
|
|
"documentation": {"value": "A docstring ", "kind": "markdown"},
|
|
"data": ["«external:file:///completionTactics.lean»", 49, 2, 0]}
|
|
Resolution of ident:
|
|
{"label": "ident",
|
|
"kind": 14,
|
|
"data": ["«external:file:///completionTactics.lean»", 49, 2, 0]}
|
|
Resolution of exact:
|
|
{"label": "exact",
|
|
"kind": 14,
|
|
"documentation": {"value": "Another docstring ", "kind": "markdown"},
|
|
"data": ["«external:file:///completionTactics.lean»", 49, 2, 0]}
|
|
Resolution of intro:
|
|
{"label": "intro",
|
|
"kind": 14,
|
|
"data": ["«external:file:///completionTactics.lean»", 49, 2, 0]}
|
|
{"textDocument": {"uri": "file:///completionTactics.lean"},
|
|
"position": {"line": 53, "character": 2}}
|
|
{"items":
|
|
[{"label": "open",
|
|
"kind": 14,
|
|
"documentation":
|
|
{"value":
|
|
"`open Foo in tacs` (the tactic) acts like `open Foo` at command level,\nbut it opens a namespace only within the tactics `tacs`. ",
|
|
"kind": "markdown"},
|
|
"data": ["«external:file:///completionTactics.lean»", 53, 2, 0]},
|
|
{"label": "match",
|
|
"kind": 14,
|
|
"documentation":
|
|
{"value":
|
|
"`match` performs case analysis on one or more expressions.\nSee [Induction and Recursion][tpil4].\nThe syntax for the `match` tactic is the same as term-mode `match`, except that\nthe match arms are tactics instead of expressions.\n```\nexample (n : Nat) : n = n := by\n match n with\n | 0 => rfl\n | i+1 => simp\n```\n\n[tpil4]: https://lean-lang.org/theorem_proving_in_lean4/induction_and_recursion.html\n",
|
|
"kind": "markdown"},
|
|
"data": ["«external:file:///completionTactics.lean»", 53, 2, 0]},
|
|
{"label": "set_option",
|
|
"kind": 14,
|
|
"documentation":
|
|
{"value":
|
|
"`set_option opt val in tacs` (the tactic) acts like `set_option opt val` at the command level,\nbut it sets the option only within the tactics `tacs`. ",
|
|
"kind": "markdown"},
|
|
"data": ["«external:file:///completionTactics.lean»", 53, 2, 0]},
|
|
{"label": "skip",
|
|
"kind": 14,
|
|
"documentation": {"value": "A docstring ", "kind": "markdown"},
|
|
"data": ["«external:file:///completionTactics.lean»", 53, 2, 0]},
|
|
{"label": "ident",
|
|
"kind": 14,
|
|
"data": ["«external:file:///completionTactics.lean»", 53, 2, 0]},
|
|
{"label": "exact",
|
|
"kind": 14,
|
|
"documentation": {"value": "Another docstring ", "kind": "markdown"},
|
|
"data": ["«external:file:///completionTactics.lean»", 53, 2, 0]},
|
|
{"label": "intro",
|
|
"kind": 14,
|
|
"data": ["«external:file:///completionTactics.lean»", 53, 2, 0]}],
|
|
"isIncomplete": true}
|
|
Resolution of open:
|
|
{"label": "open",
|
|
"kind": 14,
|
|
"documentation":
|
|
{"value":
|
|
"`open Foo in tacs` (the tactic) acts like `open Foo` at command level,\nbut it opens a namespace only within the tactics `tacs`. ",
|
|
"kind": "markdown"},
|
|
"data": ["«external:file:///completionTactics.lean»", 53, 2, 0]}
|
|
Resolution of match:
|
|
{"label": "match",
|
|
"kind": 14,
|
|
"documentation":
|
|
{"value":
|
|
"`match` performs case analysis on one or more expressions.\nSee [Induction and Recursion][tpil4].\nThe syntax for the `match` tactic is the same as term-mode `match`, except that\nthe match arms are tactics instead of expressions.\n```\nexample (n : Nat) : n = n := by\n match n with\n | 0 => rfl\n | i+1 => simp\n```\n\n[tpil4]: https://lean-lang.org/theorem_proving_in_lean4/induction_and_recursion.html\n",
|
|
"kind": "markdown"},
|
|
"data": ["«external:file:///completionTactics.lean»", 53, 2, 0]}
|
|
Resolution of set_option:
|
|
{"label": "set_option",
|
|
"kind": 14,
|
|
"documentation":
|
|
{"value":
|
|
"`set_option opt val in tacs` (the tactic) acts like `set_option opt val` at the command level,\nbut it sets the option only within the tactics `tacs`. ",
|
|
"kind": "markdown"},
|
|
"data": ["«external:file:///completionTactics.lean»", 53, 2, 0]}
|
|
Resolution of skip:
|
|
{"label": "skip",
|
|
"kind": 14,
|
|
"documentation": {"value": "A docstring ", "kind": "markdown"},
|
|
"data": ["«external:file:///completionTactics.lean»", 53, 2, 0]}
|
|
Resolution of ident:
|
|
{"label": "ident",
|
|
"kind": 14,
|
|
"data": ["«external:file:///completionTactics.lean»", 53, 2, 0]}
|
|
Resolution of exact:
|
|
{"label": "exact",
|
|
"kind": 14,
|
|
"documentation": {"value": "Another docstring ", "kind": "markdown"},
|
|
"data": ["«external:file:///completionTactics.lean»", 53, 2, 0]}
|
|
Resolution of intro:
|
|
{"label": "intro",
|
|
"kind": 14,
|
|
"data": ["«external:file:///completionTactics.lean»", 53, 2, 0]}
|
|
{"textDocument": {"uri": "file:///completionTactics.lean"},
|
|
"position": {"line": 59, "character": 4}}
|
|
{"items":
|
|
[{"label": "open",
|
|
"kind": 14,
|
|
"documentation":
|
|
{"value":
|
|
"`open Foo in tacs` (the tactic) acts like `open Foo` at command level,\nbut it opens a namespace only within the tactics `tacs`. ",
|
|
"kind": "markdown"},
|
|
"data": ["«external:file:///completionTactics.lean»", 59, 4, 0]},
|
|
{"label": "match",
|
|
"kind": 14,
|
|
"documentation":
|
|
{"value":
|
|
"`match` performs case analysis on one or more expressions.\nSee [Induction and Recursion][tpil4].\nThe syntax for the `match` tactic is the same as term-mode `match`, except that\nthe match arms are tactics instead of expressions.\n```\nexample (n : Nat) : n = n := by\n match n with\n | 0 => rfl\n | i+1 => simp\n```\n\n[tpil4]: https://lean-lang.org/theorem_proving_in_lean4/induction_and_recursion.html\n",
|
|
"kind": "markdown"},
|
|
"data": ["«external:file:///completionTactics.lean»", 59, 4, 0]},
|
|
{"label": "set_option",
|
|
"kind": 14,
|
|
"documentation":
|
|
{"value":
|
|
"`set_option opt val in tacs` (the tactic) acts like `set_option opt val` at the command level,\nbut it sets the option only within the tactics `tacs`. ",
|
|
"kind": "markdown"},
|
|
"data": ["«external:file:///completionTactics.lean»", 59, 4, 0]},
|
|
{"label": "skip",
|
|
"kind": 14,
|
|
"documentation": {"value": "A docstring ", "kind": "markdown"},
|
|
"data": ["«external:file:///completionTactics.lean»", 59, 4, 0]},
|
|
{"label": "ident",
|
|
"kind": 14,
|
|
"data": ["«external:file:///completionTactics.lean»", 59, 4, 0]},
|
|
{"label": "exact",
|
|
"kind": 14,
|
|
"documentation": {"value": "Another docstring ", "kind": "markdown"},
|
|
"data": ["«external:file:///completionTactics.lean»", 59, 4, 0]},
|
|
{"label": "intro",
|
|
"kind": 14,
|
|
"data": ["«external:file:///completionTactics.lean»", 59, 4, 0]}],
|
|
"isIncomplete": true}
|
|
Resolution of open:
|
|
{"label": "open",
|
|
"kind": 14,
|
|
"documentation":
|
|
{"value":
|
|
"`open Foo in tacs` (the tactic) acts like `open Foo` at command level,\nbut it opens a namespace only within the tactics `tacs`. ",
|
|
"kind": "markdown"},
|
|
"data": ["«external:file:///completionTactics.lean»", 59, 4, 0]}
|
|
Resolution of match:
|
|
{"label": "match",
|
|
"kind": 14,
|
|
"documentation":
|
|
{"value":
|
|
"`match` performs case analysis on one or more expressions.\nSee [Induction and Recursion][tpil4].\nThe syntax for the `match` tactic is the same as term-mode `match`, except that\nthe match arms are tactics instead of expressions.\n```\nexample (n : Nat) : n = n := by\n match n with\n | 0 => rfl\n | i+1 => simp\n```\n\n[tpil4]: https://lean-lang.org/theorem_proving_in_lean4/induction_and_recursion.html\n",
|
|
"kind": "markdown"},
|
|
"data": ["«external:file:///completionTactics.lean»", 59, 4, 0]}
|
|
Resolution of set_option:
|
|
{"label": "set_option",
|
|
"kind": 14,
|
|
"documentation":
|
|
{"value":
|
|
"`set_option opt val in tacs` (the tactic) acts like `set_option opt val` at the command level,\nbut it sets the option only within the tactics `tacs`. ",
|
|
"kind": "markdown"},
|
|
"data": ["«external:file:///completionTactics.lean»", 59, 4, 0]}
|
|
Resolution of skip:
|
|
{"label": "skip",
|
|
"kind": 14,
|
|
"documentation": {"value": "A docstring ", "kind": "markdown"},
|
|
"data": ["«external:file:///completionTactics.lean»", 59, 4, 0]}
|
|
Resolution of ident:
|
|
{"label": "ident",
|
|
"kind": 14,
|
|
"data": ["«external:file:///completionTactics.lean»", 59, 4, 0]}
|
|
Resolution of exact:
|
|
{"label": "exact",
|
|
"kind": 14,
|
|
"documentation": {"value": "Another docstring ", "kind": "markdown"},
|
|
"data": ["«external:file:///completionTactics.lean»", 59, 4, 0]}
|
|
Resolution of intro:
|
|
{"label": "intro",
|
|
"kind": 14,
|
|
"data": ["«external:file:///completionTactics.lean»", 59, 4, 0]}
|
|
{"textDocument": {"uri": "file:///completionTactics.lean"},
|
|
"position": {"line": 64, "character": 2}}
|
|
{"items":
|
|
[{"label": "open",
|
|
"kind": 14,
|
|
"documentation":
|
|
{"value":
|
|
"`open Foo in tacs` (the tactic) acts like `open Foo` at command level,\nbut it opens a namespace only within the tactics `tacs`. ",
|
|
"kind": "markdown"},
|
|
"data": ["«external:file:///completionTactics.lean»", 64, 2, 0]},
|
|
{"label": "match",
|
|
"kind": 14,
|
|
"documentation":
|
|
{"value":
|
|
"`match` performs case analysis on one or more expressions.\nSee [Induction and Recursion][tpil4].\nThe syntax for the `match` tactic is the same as term-mode `match`, except that\nthe match arms are tactics instead of expressions.\n```\nexample (n : Nat) : n = n := by\n match n with\n | 0 => rfl\n | i+1 => simp\n```\n\n[tpil4]: https://lean-lang.org/theorem_proving_in_lean4/induction_and_recursion.html\n",
|
|
"kind": "markdown"},
|
|
"data": ["«external:file:///completionTactics.lean»", 64, 2, 0]},
|
|
{"label": "set_option",
|
|
"kind": 14,
|
|
"documentation":
|
|
{"value":
|
|
"`set_option opt val in tacs` (the tactic) acts like `set_option opt val` at the command level,\nbut it sets the option only within the tactics `tacs`. ",
|
|
"kind": "markdown"},
|
|
"data": ["«external:file:///completionTactics.lean»", 64, 2, 0]},
|
|
{"label": "skip",
|
|
"kind": 14,
|
|
"documentation": {"value": "A docstring ", "kind": "markdown"},
|
|
"data": ["«external:file:///completionTactics.lean»", 64, 2, 0]},
|
|
{"label": "ident",
|
|
"kind": 14,
|
|
"data": ["«external:file:///completionTactics.lean»", 64, 2, 0]},
|
|
{"label": "exact",
|
|
"kind": 14,
|
|
"documentation": {"value": "Another docstring ", "kind": "markdown"},
|
|
"data": ["«external:file:///completionTactics.lean»", 64, 2, 0]},
|
|
{"label": "intro",
|
|
"kind": 14,
|
|
"data": ["«external:file:///completionTactics.lean»", 64, 2, 0]}],
|
|
"isIncomplete": true}
|
|
Resolution of open:
|
|
{"label": "open",
|
|
"kind": 14,
|
|
"documentation":
|
|
{"value":
|
|
"`open Foo in tacs` (the tactic) acts like `open Foo` at command level,\nbut it opens a namespace only within the tactics `tacs`. ",
|
|
"kind": "markdown"},
|
|
"data": ["«external:file:///completionTactics.lean»", 64, 2, 0]}
|
|
Resolution of match:
|
|
{"label": "match",
|
|
"kind": 14,
|
|
"documentation":
|
|
{"value":
|
|
"`match` performs case analysis on one or more expressions.\nSee [Induction and Recursion][tpil4].\nThe syntax for the `match` tactic is the same as term-mode `match`, except that\nthe match arms are tactics instead of expressions.\n```\nexample (n : Nat) : n = n := by\n match n with\n | 0 => rfl\n | i+1 => simp\n```\n\n[tpil4]: https://lean-lang.org/theorem_proving_in_lean4/induction_and_recursion.html\n",
|
|
"kind": "markdown"},
|
|
"data": ["«external:file:///completionTactics.lean»", 64, 2, 0]}
|
|
Resolution of set_option:
|
|
{"label": "set_option",
|
|
"kind": 14,
|
|
"documentation":
|
|
{"value":
|
|
"`set_option opt val in tacs` (the tactic) acts like `set_option opt val` at the command level,\nbut it sets the option only within the tactics `tacs`. ",
|
|
"kind": "markdown"},
|
|
"data": ["«external:file:///completionTactics.lean»", 64, 2, 0]}
|
|
Resolution of skip:
|
|
{"label": "skip",
|
|
"kind": 14,
|
|
"documentation": {"value": "A docstring ", "kind": "markdown"},
|
|
"data": ["«external:file:///completionTactics.lean»", 64, 2, 0]}
|
|
Resolution of ident:
|
|
{"label": "ident",
|
|
"kind": 14,
|
|
"data": ["«external:file:///completionTactics.lean»", 64, 2, 0]}
|
|
Resolution of exact:
|
|
{"label": "exact",
|
|
"kind": 14,
|
|
"documentation": {"value": "Another docstring ", "kind": "markdown"},
|
|
"data": ["«external:file:///completionTactics.lean»", 64, 2, 0]}
|
|
Resolution of intro:
|
|
{"label": "intro",
|
|
"kind": 14,
|
|
"data": ["«external:file:///completionTactics.lean»", 64, 2, 0]}
|
|
{"textDocument": {"uri": "file:///completionTactics.lean"},
|
|
"position": {"line": 70, "character": 4}}
|
|
{"items":
|
|
[{"label": "open",
|
|
"kind": 14,
|
|
"documentation":
|
|
{"value":
|
|
"`open Foo in tacs` (the tactic) acts like `open Foo` at command level,\nbut it opens a namespace only within the tactics `tacs`. ",
|
|
"kind": "markdown"},
|
|
"data": ["«external:file:///completionTactics.lean»", 70, 4, 0]},
|
|
{"label": "match",
|
|
"kind": 14,
|
|
"documentation":
|
|
{"value":
|
|
"`match` performs case analysis on one or more expressions.\nSee [Induction and Recursion][tpil4].\nThe syntax for the `match` tactic is the same as term-mode `match`, except that\nthe match arms are tactics instead of expressions.\n```\nexample (n : Nat) : n = n := by\n match n with\n | 0 => rfl\n | i+1 => simp\n```\n\n[tpil4]: https://lean-lang.org/theorem_proving_in_lean4/induction_and_recursion.html\n",
|
|
"kind": "markdown"},
|
|
"data": ["«external:file:///completionTactics.lean»", 70, 4, 0]},
|
|
{"label": "set_option",
|
|
"kind": 14,
|
|
"documentation":
|
|
{"value":
|
|
"`set_option opt val in tacs` (the tactic) acts like `set_option opt val` at the command level,\nbut it sets the option only within the tactics `tacs`. ",
|
|
"kind": "markdown"},
|
|
"data": ["«external:file:///completionTactics.lean»", 70, 4, 0]},
|
|
{"label": "skip",
|
|
"kind": 14,
|
|
"documentation": {"value": "A docstring ", "kind": "markdown"},
|
|
"data": ["«external:file:///completionTactics.lean»", 70, 4, 0]},
|
|
{"label": "ident",
|
|
"kind": 14,
|
|
"data": ["«external:file:///completionTactics.lean»", 70, 4, 0]},
|
|
{"label": "exact",
|
|
"kind": 14,
|
|
"documentation": {"value": "Another docstring ", "kind": "markdown"},
|
|
"data": ["«external:file:///completionTactics.lean»", 70, 4, 0]},
|
|
{"label": "intro",
|
|
"kind": 14,
|
|
"data": ["«external:file:///completionTactics.lean»", 70, 4, 0]}],
|
|
"isIncomplete": true}
|
|
Resolution of open:
|
|
{"label": "open",
|
|
"kind": 14,
|
|
"documentation":
|
|
{"value":
|
|
"`open Foo in tacs` (the tactic) acts like `open Foo` at command level,\nbut it opens a namespace only within the tactics `tacs`. ",
|
|
"kind": "markdown"},
|
|
"data": ["«external:file:///completionTactics.lean»", 70, 4, 0]}
|
|
Resolution of match:
|
|
{"label": "match",
|
|
"kind": 14,
|
|
"documentation":
|
|
{"value":
|
|
"`match` performs case analysis on one or more expressions.\nSee [Induction and Recursion][tpil4].\nThe syntax for the `match` tactic is the same as term-mode `match`, except that\nthe match arms are tactics instead of expressions.\n```\nexample (n : Nat) : n = n := by\n match n with\n | 0 => rfl\n | i+1 => simp\n```\n\n[tpil4]: https://lean-lang.org/theorem_proving_in_lean4/induction_and_recursion.html\n",
|
|
"kind": "markdown"},
|
|
"data": ["«external:file:///completionTactics.lean»", 70, 4, 0]}
|
|
Resolution of set_option:
|
|
{"label": "set_option",
|
|
"kind": 14,
|
|
"documentation":
|
|
{"value":
|
|
"`set_option opt val in tacs` (the tactic) acts like `set_option opt val` at the command level,\nbut it sets the option only within the tactics `tacs`. ",
|
|
"kind": "markdown"},
|
|
"data": ["«external:file:///completionTactics.lean»", 70, 4, 0]}
|
|
Resolution of skip:
|
|
{"label": "skip",
|
|
"kind": 14,
|
|
"documentation": {"value": "A docstring ", "kind": "markdown"},
|
|
"data": ["«external:file:///completionTactics.lean»", 70, 4, 0]}
|
|
Resolution of ident:
|
|
{"label": "ident",
|
|
"kind": 14,
|
|
"data": ["«external:file:///completionTactics.lean»", 70, 4, 0]}
|
|
Resolution of exact:
|
|
{"label": "exact",
|
|
"kind": 14,
|
|
"documentation": {"value": "Another docstring ", "kind": "markdown"},
|
|
"data": ["«external:file:///completionTactics.lean»", 70, 4, 0]}
|
|
Resolution of intro:
|
|
{"label": "intro",
|
|
"kind": 14,
|
|
"data": ["«external:file:///completionTactics.lean»", 70, 4, 0]}
|
|
{"textDocument": {"uri": "file:///completionTactics.lean"},
|
|
"position": {"line": 76, "character": 2}}
|
|
{"items":
|
|
[{"label": "open",
|
|
"kind": 14,
|
|
"documentation":
|
|
{"value":
|
|
"`open Foo in tacs` (the tactic) acts like `open Foo` at command level,\nbut it opens a namespace only within the tactics `tacs`. ",
|
|
"kind": "markdown"},
|
|
"data": ["«external:file:///completionTactics.lean»", 76, 2, 0]},
|
|
{"label": "match",
|
|
"kind": 14,
|
|
"documentation":
|
|
{"value":
|
|
"`match` performs case analysis on one or more expressions.\nSee [Induction and Recursion][tpil4].\nThe syntax for the `match` tactic is the same as term-mode `match`, except that\nthe match arms are tactics instead of expressions.\n```\nexample (n : Nat) : n = n := by\n match n with\n | 0 => rfl\n | i+1 => simp\n```\n\n[tpil4]: https://lean-lang.org/theorem_proving_in_lean4/induction_and_recursion.html\n",
|
|
"kind": "markdown"},
|
|
"data": ["«external:file:///completionTactics.lean»", 76, 2, 0]},
|
|
{"label": "set_option",
|
|
"kind": 14,
|
|
"documentation":
|
|
{"value":
|
|
"`set_option opt val in tacs` (the tactic) acts like `set_option opt val` at the command level,\nbut it sets the option only within the tactics `tacs`. ",
|
|
"kind": "markdown"},
|
|
"data": ["«external:file:///completionTactics.lean»", 76, 2, 0]},
|
|
{"label": "skip",
|
|
"kind": 14,
|
|
"documentation": {"value": "A docstring ", "kind": "markdown"},
|
|
"data": ["«external:file:///completionTactics.lean»", 76, 2, 0]},
|
|
{"label": "ident",
|
|
"kind": 14,
|
|
"data": ["«external:file:///completionTactics.lean»", 76, 2, 0]},
|
|
{"label": "exact",
|
|
"kind": 14,
|
|
"documentation": {"value": "Another docstring ", "kind": "markdown"},
|
|
"data": ["«external:file:///completionTactics.lean»", 76, 2, 0]},
|
|
{"label": "intro",
|
|
"kind": 14,
|
|
"data": ["«external:file:///completionTactics.lean»", 76, 2, 0]}],
|
|
"isIncomplete": true}
|
|
Resolution of open:
|
|
{"label": "open",
|
|
"kind": 14,
|
|
"documentation":
|
|
{"value":
|
|
"`open Foo in tacs` (the tactic) acts like `open Foo` at command level,\nbut it opens a namespace only within the tactics `tacs`. ",
|
|
"kind": "markdown"},
|
|
"data": ["«external:file:///completionTactics.lean»", 76, 2, 0]}
|
|
Resolution of match:
|
|
{"label": "match",
|
|
"kind": 14,
|
|
"documentation":
|
|
{"value":
|
|
"`match` performs case analysis on one or more expressions.\nSee [Induction and Recursion][tpil4].\nThe syntax for the `match` tactic is the same as term-mode `match`, except that\nthe match arms are tactics instead of expressions.\n```\nexample (n : Nat) : n = n := by\n match n with\n | 0 => rfl\n | i+1 => simp\n```\n\n[tpil4]: https://lean-lang.org/theorem_proving_in_lean4/induction_and_recursion.html\n",
|
|
"kind": "markdown"},
|
|
"data": ["«external:file:///completionTactics.lean»", 76, 2, 0]}
|
|
Resolution of set_option:
|
|
{"label": "set_option",
|
|
"kind": 14,
|
|
"documentation":
|
|
{"value":
|
|
"`set_option opt val in tacs` (the tactic) acts like `set_option opt val` at the command level,\nbut it sets the option only within the tactics `tacs`. ",
|
|
"kind": "markdown"},
|
|
"data": ["«external:file:///completionTactics.lean»", 76, 2, 0]}
|
|
Resolution of skip:
|
|
{"label": "skip",
|
|
"kind": 14,
|
|
"documentation": {"value": "A docstring ", "kind": "markdown"},
|
|
"data": ["«external:file:///completionTactics.lean»", 76, 2, 0]}
|
|
Resolution of ident:
|
|
{"label": "ident",
|
|
"kind": 14,
|
|
"data": ["«external:file:///completionTactics.lean»", 76, 2, 0]}
|
|
Resolution of exact:
|
|
{"label": "exact",
|
|
"kind": 14,
|
|
"documentation": {"value": "Another docstring ", "kind": "markdown"},
|
|
"data": ["«external:file:///completionTactics.lean»", 76, 2, 0]}
|
|
Resolution of intro:
|
|
{"label": "intro",
|
|
"kind": 14,
|
|
"data": ["«external:file:///completionTactics.lean»", 76, 2, 0]}
|
|
{"textDocument": {"uri": "file:///completionTactics.lean"},
|
|
"position": {"line": 81, "character": 4}}
|
|
{"items": [], "isIncomplete": true}
|
|
{"textDocument": {"uri": "file:///completionTactics.lean"},
|
|
"position": {"line": 86, "character": 2}}
|
|
{"items":
|
|
[{"label": "open",
|
|
"kind": 14,
|
|
"documentation":
|
|
{"value":
|
|
"`open Foo in tacs` (the tactic) acts like `open Foo` at command level,\nbut it opens a namespace only within the tactics `tacs`. ",
|
|
"kind": "markdown"},
|
|
"data": ["«external:file:///completionTactics.lean»", 86, 2, 0]},
|
|
{"label": "match",
|
|
"kind": 14,
|
|
"documentation":
|
|
{"value":
|
|
"`match` performs case analysis on one or more expressions.\nSee [Induction and Recursion][tpil4].\nThe syntax for the `match` tactic is the same as term-mode `match`, except that\nthe match arms are tactics instead of expressions.\n```\nexample (n : Nat) : n = n := by\n match n with\n | 0 => rfl\n | i+1 => simp\n```\n\n[tpil4]: https://lean-lang.org/theorem_proving_in_lean4/induction_and_recursion.html\n",
|
|
"kind": "markdown"},
|
|
"data": ["«external:file:///completionTactics.lean»", 86, 2, 0]},
|
|
{"label": "set_option",
|
|
"kind": 14,
|
|
"documentation":
|
|
{"value":
|
|
"`set_option opt val in tacs` (the tactic) acts like `set_option opt val` at the command level,\nbut it sets the option only within the tactics `tacs`. ",
|
|
"kind": "markdown"},
|
|
"data": ["«external:file:///completionTactics.lean»", 86, 2, 0]},
|
|
{"label": "skip",
|
|
"kind": 14,
|
|
"documentation": {"value": "A docstring ", "kind": "markdown"},
|
|
"data": ["«external:file:///completionTactics.lean»", 86, 2, 0]},
|
|
{"label": "ident",
|
|
"kind": 14,
|
|
"data": ["«external:file:///completionTactics.lean»", 86, 2, 0]},
|
|
{"label": "exact",
|
|
"kind": 14,
|
|
"documentation": {"value": "Another docstring ", "kind": "markdown"},
|
|
"data": ["«external:file:///completionTactics.lean»", 86, 2, 0]},
|
|
{"label": "intro",
|
|
"kind": 14,
|
|
"data": ["«external:file:///completionTactics.lean»", 86, 2, 0]}],
|
|
"isIncomplete": true}
|
|
Resolution of open:
|
|
{"label": "open",
|
|
"kind": 14,
|
|
"documentation":
|
|
{"value":
|
|
"`open Foo in tacs` (the tactic) acts like `open Foo` at command level,\nbut it opens a namespace only within the tactics `tacs`. ",
|
|
"kind": "markdown"},
|
|
"data": ["«external:file:///completionTactics.lean»", 86, 2, 0]}
|
|
Resolution of match:
|
|
{"label": "match",
|
|
"kind": 14,
|
|
"documentation":
|
|
{"value":
|
|
"`match` performs case analysis on one or more expressions.\nSee [Induction and Recursion][tpil4].\nThe syntax for the `match` tactic is the same as term-mode `match`, except that\nthe match arms are tactics instead of expressions.\n```\nexample (n : Nat) : n = n := by\n match n with\n | 0 => rfl\n | i+1 => simp\n```\n\n[tpil4]: https://lean-lang.org/theorem_proving_in_lean4/induction_and_recursion.html\n",
|
|
"kind": "markdown"},
|
|
"data": ["«external:file:///completionTactics.lean»", 86, 2, 0]}
|
|
Resolution of set_option:
|
|
{"label": "set_option",
|
|
"kind": 14,
|
|
"documentation":
|
|
{"value":
|
|
"`set_option opt val in tacs` (the tactic) acts like `set_option opt val` at the command level,\nbut it sets the option only within the tactics `tacs`. ",
|
|
"kind": "markdown"},
|
|
"data": ["«external:file:///completionTactics.lean»", 86, 2, 0]}
|
|
Resolution of skip:
|
|
{"label": "skip",
|
|
"kind": 14,
|
|
"documentation": {"value": "A docstring ", "kind": "markdown"},
|
|
"data": ["«external:file:///completionTactics.lean»", 86, 2, 0]}
|
|
Resolution of ident:
|
|
{"label": "ident",
|
|
"kind": 14,
|
|
"data": ["«external:file:///completionTactics.lean»", 86, 2, 0]}
|
|
Resolution of exact:
|
|
{"label": "exact",
|
|
"kind": 14,
|
|
"documentation": {"value": "Another docstring ", "kind": "markdown"},
|
|
"data": ["«external:file:///completionTactics.lean»", 86, 2, 0]}
|
|
Resolution of intro:
|
|
{"label": "intro",
|
|
"kind": 14,
|
|
"data": ["«external:file:///completionTactics.lean»", 86, 2, 0]}
|
|
{"textDocument": {"uri": "file:///completionTactics.lean"},
|
|
"position": {"line": 91, "character": 4}}
|
|
{"items":
|
|
[{"label": "open",
|
|
"kind": 14,
|
|
"documentation":
|
|
{"value":
|
|
"`open Foo in tacs` (the tactic) acts like `open Foo` at command level,\nbut it opens a namespace only within the tactics `tacs`. ",
|
|
"kind": "markdown"},
|
|
"data": ["«external:file:///completionTactics.lean»", 91, 4, 0]},
|
|
{"label": "match",
|
|
"kind": 14,
|
|
"documentation":
|
|
{"value":
|
|
"`match` performs case analysis on one or more expressions.\nSee [Induction and Recursion][tpil4].\nThe syntax for the `match` tactic is the same as term-mode `match`, except that\nthe match arms are tactics instead of expressions.\n```\nexample (n : Nat) : n = n := by\n match n with\n | 0 => rfl\n | i+1 => simp\n```\n\n[tpil4]: https://lean-lang.org/theorem_proving_in_lean4/induction_and_recursion.html\n",
|
|
"kind": "markdown"},
|
|
"data": ["«external:file:///completionTactics.lean»", 91, 4, 0]},
|
|
{"label": "set_option",
|
|
"kind": 14,
|
|
"documentation":
|
|
{"value":
|
|
"`set_option opt val in tacs` (the tactic) acts like `set_option opt val` at the command level,\nbut it sets the option only within the tactics `tacs`. ",
|
|
"kind": "markdown"},
|
|
"data": ["«external:file:///completionTactics.lean»", 91, 4, 0]},
|
|
{"label": "skip",
|
|
"kind": 14,
|
|
"documentation": {"value": "A docstring ", "kind": "markdown"},
|
|
"data": ["«external:file:///completionTactics.lean»", 91, 4, 0]},
|
|
{"label": "ident",
|
|
"kind": 14,
|
|
"data": ["«external:file:///completionTactics.lean»", 91, 4, 0]},
|
|
{"label": "exact",
|
|
"kind": 14,
|
|
"documentation": {"value": "Another docstring ", "kind": "markdown"},
|
|
"data": ["«external:file:///completionTactics.lean»", 91, 4, 0]},
|
|
{"label": "intro",
|
|
"kind": 14,
|
|
"data": ["«external:file:///completionTactics.lean»", 91, 4, 0]}],
|
|
"isIncomplete": true}
|
|
Resolution of open:
|
|
{"label": "open",
|
|
"kind": 14,
|
|
"documentation":
|
|
{"value":
|
|
"`open Foo in tacs` (the tactic) acts like `open Foo` at command level,\nbut it opens a namespace only within the tactics `tacs`. ",
|
|
"kind": "markdown"},
|
|
"data": ["«external:file:///completionTactics.lean»", 91, 4, 0]}
|
|
Resolution of match:
|
|
{"label": "match",
|
|
"kind": 14,
|
|
"documentation":
|
|
{"value":
|
|
"`match` performs case analysis on one or more expressions.\nSee [Induction and Recursion][tpil4].\nThe syntax for the `match` tactic is the same as term-mode `match`, except that\nthe match arms are tactics instead of expressions.\n```\nexample (n : Nat) : n = n := by\n match n with\n | 0 => rfl\n | i+1 => simp\n```\n\n[tpil4]: https://lean-lang.org/theorem_proving_in_lean4/induction_and_recursion.html\n",
|
|
"kind": "markdown"},
|
|
"data": ["«external:file:///completionTactics.lean»", 91, 4, 0]}
|
|
Resolution of set_option:
|
|
{"label": "set_option",
|
|
"kind": 14,
|
|
"documentation":
|
|
{"value":
|
|
"`set_option opt val in tacs` (the tactic) acts like `set_option opt val` at the command level,\nbut it sets the option only within the tactics `tacs`. ",
|
|
"kind": "markdown"},
|
|
"data": ["«external:file:///completionTactics.lean»", 91, 4, 0]}
|
|
Resolution of skip:
|
|
{"label": "skip",
|
|
"kind": 14,
|
|
"documentation": {"value": "A docstring ", "kind": "markdown"},
|
|
"data": ["«external:file:///completionTactics.lean»", 91, 4, 0]}
|
|
Resolution of ident:
|
|
{"label": "ident",
|
|
"kind": 14,
|
|
"data": ["«external:file:///completionTactics.lean»", 91, 4, 0]}
|
|
Resolution of exact:
|
|
{"label": "exact",
|
|
"kind": 14,
|
|
"documentation": {"value": "Another docstring ", "kind": "markdown"},
|
|
"data": ["«external:file:///completionTactics.lean»", 91, 4, 0]}
|
|
Resolution of intro:
|
|
{"label": "intro",
|
|
"kind": 14,
|
|
"data": ["«external:file:///completionTactics.lean»", 91, 4, 0]}
|
|
{"textDocument": {"uri": "file:///completionTactics.lean"},
|
|
"position": {"line": 96, "character": 2}}
|
|
{"items":
|
|
[{"label": "open",
|
|
"kind": 14,
|
|
"documentation":
|
|
{"value":
|
|
"`open Foo in tacs` (the tactic) acts like `open Foo` at command level,\nbut it opens a namespace only within the tactics `tacs`. ",
|
|
"kind": "markdown"},
|
|
"data": ["«external:file:///completionTactics.lean»", 96, 2, 0]},
|
|
{"label": "match",
|
|
"kind": 14,
|
|
"documentation":
|
|
{"value":
|
|
"`match` performs case analysis on one or more expressions.\nSee [Induction and Recursion][tpil4].\nThe syntax for the `match` tactic is the same as term-mode `match`, except that\nthe match arms are tactics instead of expressions.\n```\nexample (n : Nat) : n = n := by\n match n with\n | 0 => rfl\n | i+1 => simp\n```\n\n[tpil4]: https://lean-lang.org/theorem_proving_in_lean4/induction_and_recursion.html\n",
|
|
"kind": "markdown"},
|
|
"data": ["«external:file:///completionTactics.lean»", 96, 2, 0]},
|
|
{"label": "set_option",
|
|
"kind": 14,
|
|
"documentation":
|
|
{"value":
|
|
"`set_option opt val in tacs` (the tactic) acts like `set_option opt val` at the command level,\nbut it sets the option only within the tactics `tacs`. ",
|
|
"kind": "markdown"},
|
|
"data": ["«external:file:///completionTactics.lean»", 96, 2, 0]},
|
|
{"label": "skip",
|
|
"kind": 14,
|
|
"documentation": {"value": "A docstring ", "kind": "markdown"},
|
|
"data": ["«external:file:///completionTactics.lean»", 96, 2, 0]},
|
|
{"label": "ident",
|
|
"kind": 14,
|
|
"data": ["«external:file:///completionTactics.lean»", 96, 2, 0]},
|
|
{"label": "exact",
|
|
"kind": 14,
|
|
"documentation": {"value": "Another docstring ", "kind": "markdown"},
|
|
"data": ["«external:file:///completionTactics.lean»", 96, 2, 0]},
|
|
{"label": "intro",
|
|
"kind": 14,
|
|
"data": ["«external:file:///completionTactics.lean»", 96, 2, 0]}],
|
|
"isIncomplete": true}
|
|
Resolution of open:
|
|
{"label": "open",
|
|
"kind": 14,
|
|
"documentation":
|
|
{"value":
|
|
"`open Foo in tacs` (the tactic) acts like `open Foo` at command level,\nbut it opens a namespace only within the tactics `tacs`. ",
|
|
"kind": "markdown"},
|
|
"data": ["«external:file:///completionTactics.lean»", 96, 2, 0]}
|
|
Resolution of match:
|
|
{"label": "match",
|
|
"kind": 14,
|
|
"documentation":
|
|
{"value":
|
|
"`match` performs case analysis on one or more expressions.\nSee [Induction and Recursion][tpil4].\nThe syntax for the `match` tactic is the same as term-mode `match`, except that\nthe match arms are tactics instead of expressions.\n```\nexample (n : Nat) : n = n := by\n match n with\n | 0 => rfl\n | i+1 => simp\n```\n\n[tpil4]: https://lean-lang.org/theorem_proving_in_lean4/induction_and_recursion.html\n",
|
|
"kind": "markdown"},
|
|
"data": ["«external:file:///completionTactics.lean»", 96, 2, 0]}
|
|
Resolution of set_option:
|
|
{"label": "set_option",
|
|
"kind": 14,
|
|
"documentation":
|
|
{"value":
|
|
"`set_option opt val in tacs` (the tactic) acts like `set_option opt val` at the command level,\nbut it sets the option only within the tactics `tacs`. ",
|
|
"kind": "markdown"},
|
|
"data": ["«external:file:///completionTactics.lean»", 96, 2, 0]}
|
|
Resolution of skip:
|
|
{"label": "skip",
|
|
"kind": 14,
|
|
"documentation": {"value": "A docstring ", "kind": "markdown"},
|
|
"data": ["«external:file:///completionTactics.lean»", 96, 2, 0]}
|
|
Resolution of ident:
|
|
{"label": "ident",
|
|
"kind": 14,
|
|
"data": ["«external:file:///completionTactics.lean»", 96, 2, 0]}
|
|
Resolution of exact:
|
|
{"label": "exact",
|
|
"kind": 14,
|
|
"documentation": {"value": "Another docstring ", "kind": "markdown"},
|
|
"data": ["«external:file:///completionTactics.lean»", 96, 2, 0]}
|
|
Resolution of intro:
|
|
{"label": "intro",
|
|
"kind": 14,
|
|
"data": ["«external:file:///completionTactics.lean»", 96, 2, 0]}
|
|
{"textDocument": {"uri": "file:///completionTactics.lean"},
|
|
"position": {"line": 102, "character": 4}}
|
|
{"items":
|
|
[{"label": "open",
|
|
"kind": 14,
|
|
"documentation":
|
|
{"value":
|
|
"`open Foo in tacs` (the tactic) acts like `open Foo` at command level,\nbut it opens a namespace only within the tactics `tacs`. ",
|
|
"kind": "markdown"},
|
|
"data": ["«external:file:///completionTactics.lean»", 102, 4, 0]},
|
|
{"label": "match",
|
|
"kind": 14,
|
|
"documentation":
|
|
{"value":
|
|
"`match` performs case analysis on one or more expressions.\nSee [Induction and Recursion][tpil4].\nThe syntax for the `match` tactic is the same as term-mode `match`, except that\nthe match arms are tactics instead of expressions.\n```\nexample (n : Nat) : n = n := by\n match n with\n | 0 => rfl\n | i+1 => simp\n```\n\n[tpil4]: https://lean-lang.org/theorem_proving_in_lean4/induction_and_recursion.html\n",
|
|
"kind": "markdown"},
|
|
"data": ["«external:file:///completionTactics.lean»", 102, 4, 0]},
|
|
{"label": "set_option",
|
|
"kind": 14,
|
|
"documentation":
|
|
{"value":
|
|
"`set_option opt val in tacs` (the tactic) acts like `set_option opt val` at the command level,\nbut it sets the option only within the tactics `tacs`. ",
|
|
"kind": "markdown"},
|
|
"data": ["«external:file:///completionTactics.lean»", 102, 4, 0]},
|
|
{"label": "skip",
|
|
"kind": 14,
|
|
"documentation": {"value": "A docstring ", "kind": "markdown"},
|
|
"data": ["«external:file:///completionTactics.lean»", 102, 4, 0]},
|
|
{"label": "ident",
|
|
"kind": 14,
|
|
"data": ["«external:file:///completionTactics.lean»", 102, 4, 0]},
|
|
{"label": "exact",
|
|
"kind": 14,
|
|
"documentation": {"value": "Another docstring ", "kind": "markdown"},
|
|
"data": ["«external:file:///completionTactics.lean»", 102, 4, 0]},
|
|
{"label": "intro",
|
|
"kind": 14,
|
|
"data": ["«external:file:///completionTactics.lean»", 102, 4, 0]}],
|
|
"isIncomplete": true}
|
|
Resolution of open:
|
|
{"label": "open",
|
|
"kind": 14,
|
|
"documentation":
|
|
{"value":
|
|
"`open Foo in tacs` (the tactic) acts like `open Foo` at command level,\nbut it opens a namespace only within the tactics `tacs`. ",
|
|
"kind": "markdown"},
|
|
"data": ["«external:file:///completionTactics.lean»", 102, 4, 0]}
|
|
Resolution of match:
|
|
{"label": "match",
|
|
"kind": 14,
|
|
"documentation":
|
|
{"value":
|
|
"`match` performs case analysis on one or more expressions.\nSee [Induction and Recursion][tpil4].\nThe syntax for the `match` tactic is the same as term-mode `match`, except that\nthe match arms are tactics instead of expressions.\n```\nexample (n : Nat) : n = n := by\n match n with\n | 0 => rfl\n | i+1 => simp\n```\n\n[tpil4]: https://lean-lang.org/theorem_proving_in_lean4/induction_and_recursion.html\n",
|
|
"kind": "markdown"},
|
|
"data": ["«external:file:///completionTactics.lean»", 102, 4, 0]}
|
|
Resolution of set_option:
|
|
{"label": "set_option",
|
|
"kind": 14,
|
|
"documentation":
|
|
{"value":
|
|
"`set_option opt val in tacs` (the tactic) acts like `set_option opt val` at the command level,\nbut it sets the option only within the tactics `tacs`. ",
|
|
"kind": "markdown"},
|
|
"data": ["«external:file:///completionTactics.lean»", 102, 4, 0]}
|
|
Resolution of skip:
|
|
{"label": "skip",
|
|
"kind": 14,
|
|
"documentation": {"value": "A docstring ", "kind": "markdown"},
|
|
"data": ["«external:file:///completionTactics.lean»", 102, 4, 0]}
|
|
Resolution of ident:
|
|
{"label": "ident",
|
|
"kind": 14,
|
|
"data": ["«external:file:///completionTactics.lean»", 102, 4, 0]}
|
|
Resolution of exact:
|
|
{"label": "exact",
|
|
"kind": 14,
|
|
"documentation": {"value": "Another docstring ", "kind": "markdown"},
|
|
"data": ["«external:file:///completionTactics.lean»", 102, 4, 0]}
|
|
Resolution of intro:
|
|
{"label": "intro",
|
|
"kind": 14,
|
|
"data": ["«external:file:///completionTactics.lean»", 102, 4, 0]}
|
|
{"textDocument": {"uri": "file:///completionTactics.lean"},
|
|
"position": {"line": 108, "character": 2}}
|
|
{"items": [], "isIncomplete": true}
|
|
{"textDocument": {"uri": "file:///completionTactics.lean"},
|
|
"position": {"line": 112, "character": 2}}
|
|
{"items":
|
|
[{"label": "open",
|
|
"kind": 14,
|
|
"documentation":
|
|
{"value":
|
|
"`open Foo in tacs` (the tactic) acts like `open Foo` at command level,\nbut it opens a namespace only within the tactics `tacs`. ",
|
|
"kind": "markdown"},
|
|
"data": ["«external:file:///completionTactics.lean»", 112, 2, 0]},
|
|
{"label": "match",
|
|
"kind": 14,
|
|
"documentation":
|
|
{"value":
|
|
"`match` performs case analysis on one or more expressions.\nSee [Induction and Recursion][tpil4].\nThe syntax for the `match` tactic is the same as term-mode `match`, except that\nthe match arms are tactics instead of expressions.\n```\nexample (n : Nat) : n = n := by\n match n with\n | 0 => rfl\n | i+1 => simp\n```\n\n[tpil4]: https://lean-lang.org/theorem_proving_in_lean4/induction_and_recursion.html\n",
|
|
"kind": "markdown"},
|
|
"data": ["«external:file:///completionTactics.lean»", 112, 2, 0]},
|
|
{"label": "set_option",
|
|
"kind": 14,
|
|
"documentation":
|
|
{"value":
|
|
"`set_option opt val in tacs` (the tactic) acts like `set_option opt val` at the command level,\nbut it sets the option only within the tactics `tacs`. ",
|
|
"kind": "markdown"},
|
|
"data": ["«external:file:///completionTactics.lean»", 112, 2, 0]},
|
|
{"label": "skip",
|
|
"kind": 14,
|
|
"documentation": {"value": "A docstring ", "kind": "markdown"},
|
|
"data": ["«external:file:///completionTactics.lean»", 112, 2, 0]},
|
|
{"label": "ident",
|
|
"kind": 14,
|
|
"data": ["«external:file:///completionTactics.lean»", 112, 2, 0]},
|
|
{"label": "exact",
|
|
"kind": 14,
|
|
"documentation": {"value": "Another docstring ", "kind": "markdown"},
|
|
"data": ["«external:file:///completionTactics.lean»", 112, 2, 0]},
|
|
{"label": "intro",
|
|
"kind": 14,
|
|
"data": ["«external:file:///completionTactics.lean»", 112, 2, 0]}],
|
|
"isIncomplete": true}
|
|
Resolution of open:
|
|
{"label": "open",
|
|
"kind": 14,
|
|
"documentation":
|
|
{"value":
|
|
"`open Foo in tacs` (the tactic) acts like `open Foo` at command level,\nbut it opens a namespace only within the tactics `tacs`. ",
|
|
"kind": "markdown"},
|
|
"data": ["«external:file:///completionTactics.lean»", 112, 2, 0]}
|
|
Resolution of match:
|
|
{"label": "match",
|
|
"kind": 14,
|
|
"documentation":
|
|
{"value":
|
|
"`match` performs case analysis on one or more expressions.\nSee [Induction and Recursion][tpil4].\nThe syntax for the `match` tactic is the same as term-mode `match`, except that\nthe match arms are tactics instead of expressions.\n```\nexample (n : Nat) : n = n := by\n match n with\n | 0 => rfl\n | i+1 => simp\n```\n\n[tpil4]: https://lean-lang.org/theorem_proving_in_lean4/induction_and_recursion.html\n",
|
|
"kind": "markdown"},
|
|
"data": ["«external:file:///completionTactics.lean»", 112, 2, 0]}
|
|
Resolution of set_option:
|
|
{"label": "set_option",
|
|
"kind": 14,
|
|
"documentation":
|
|
{"value":
|
|
"`set_option opt val in tacs` (the tactic) acts like `set_option opt val` at the command level,\nbut it sets the option only within the tactics `tacs`. ",
|
|
"kind": "markdown"},
|
|
"data": ["«external:file:///completionTactics.lean»", 112, 2, 0]}
|
|
Resolution of skip:
|
|
{"label": "skip",
|
|
"kind": 14,
|
|
"documentation": {"value": "A docstring ", "kind": "markdown"},
|
|
"data": ["«external:file:///completionTactics.lean»", 112, 2, 0]}
|
|
Resolution of ident:
|
|
{"label": "ident",
|
|
"kind": 14,
|
|
"data": ["«external:file:///completionTactics.lean»", 112, 2, 0]}
|
|
Resolution of exact:
|
|
{"label": "exact",
|
|
"kind": 14,
|
|
"documentation": {"value": "Another docstring ", "kind": "markdown"},
|
|
"data": ["«external:file:///completionTactics.lean»", 112, 2, 0]}
|
|
Resolution of intro:
|
|
{"label": "intro",
|
|
"kind": 14,
|
|
"data": ["«external:file:///completionTactics.lean»", 112, 2, 0]}
|
|
{"textDocument": {"uri": "file:///completionTactics.lean"},
|
|
"position": {"line": 118, "character": 4}}
|
|
{"items":
|
|
[{"label": "open",
|
|
"kind": 14,
|
|
"documentation":
|
|
{"value":
|
|
"`open Foo in tacs` (the tactic) acts like `open Foo` at command level,\nbut it opens a namespace only within the tactics `tacs`. ",
|
|
"kind": "markdown"},
|
|
"data": ["«external:file:///completionTactics.lean»", 118, 4, 0]},
|
|
{"label": "match",
|
|
"kind": 14,
|
|
"documentation":
|
|
{"value":
|
|
"`match` performs case analysis on one or more expressions.\nSee [Induction and Recursion][tpil4].\nThe syntax for the `match` tactic is the same as term-mode `match`, except that\nthe match arms are tactics instead of expressions.\n```\nexample (n : Nat) : n = n := by\n match n with\n | 0 => rfl\n | i+1 => simp\n```\n\n[tpil4]: https://lean-lang.org/theorem_proving_in_lean4/induction_and_recursion.html\n",
|
|
"kind": "markdown"},
|
|
"data": ["«external:file:///completionTactics.lean»", 118, 4, 0]},
|
|
{"label": "set_option",
|
|
"kind": 14,
|
|
"documentation":
|
|
{"value":
|
|
"`set_option opt val in tacs` (the tactic) acts like `set_option opt val` at the command level,\nbut it sets the option only within the tactics `tacs`. ",
|
|
"kind": "markdown"},
|
|
"data": ["«external:file:///completionTactics.lean»", 118, 4, 0]},
|
|
{"label": "skip",
|
|
"kind": 14,
|
|
"documentation": {"value": "A docstring ", "kind": "markdown"},
|
|
"data": ["«external:file:///completionTactics.lean»", 118, 4, 0]},
|
|
{"label": "ident",
|
|
"kind": 14,
|
|
"data": ["«external:file:///completionTactics.lean»", 118, 4, 0]},
|
|
{"label": "exact",
|
|
"kind": 14,
|
|
"documentation": {"value": "Another docstring ", "kind": "markdown"},
|
|
"data": ["«external:file:///completionTactics.lean»", 118, 4, 0]},
|
|
{"label": "intro",
|
|
"kind": 14,
|
|
"data": ["«external:file:///completionTactics.lean»", 118, 4, 0]}],
|
|
"isIncomplete": true}
|
|
Resolution of open:
|
|
{"label": "open",
|
|
"kind": 14,
|
|
"documentation":
|
|
{"value":
|
|
"`open Foo in tacs` (the tactic) acts like `open Foo` at command level,\nbut it opens a namespace only within the tactics `tacs`. ",
|
|
"kind": "markdown"},
|
|
"data": ["«external:file:///completionTactics.lean»", 118, 4, 0]}
|
|
Resolution of match:
|
|
{"label": "match",
|
|
"kind": 14,
|
|
"documentation":
|
|
{"value":
|
|
"`match` performs case analysis on one or more expressions.\nSee [Induction and Recursion][tpil4].\nThe syntax for the `match` tactic is the same as term-mode `match`, except that\nthe match arms are tactics instead of expressions.\n```\nexample (n : Nat) : n = n := by\n match n with\n | 0 => rfl\n | i+1 => simp\n```\n\n[tpil4]: https://lean-lang.org/theorem_proving_in_lean4/induction_and_recursion.html\n",
|
|
"kind": "markdown"},
|
|
"data": ["«external:file:///completionTactics.lean»", 118, 4, 0]}
|
|
Resolution of set_option:
|
|
{"label": "set_option",
|
|
"kind": 14,
|
|
"documentation":
|
|
{"value":
|
|
"`set_option opt val in tacs` (the tactic) acts like `set_option opt val` at the command level,\nbut it sets the option only within the tactics `tacs`. ",
|
|
"kind": "markdown"},
|
|
"data": ["«external:file:///completionTactics.lean»", 118, 4, 0]}
|
|
Resolution of skip:
|
|
{"label": "skip",
|
|
"kind": 14,
|
|
"documentation": {"value": "A docstring ", "kind": "markdown"},
|
|
"data": ["«external:file:///completionTactics.lean»", 118, 4, 0]}
|
|
Resolution of ident:
|
|
{"label": "ident",
|
|
"kind": 14,
|
|
"data": ["«external:file:///completionTactics.lean»", 118, 4, 0]}
|
|
Resolution of exact:
|
|
{"label": "exact",
|
|
"kind": 14,
|
|
"documentation": {"value": "Another docstring ", "kind": "markdown"},
|
|
"data": ["«external:file:///completionTactics.lean»", 118, 4, 0]}
|
|
Resolution of intro:
|
|
{"label": "intro",
|
|
"kind": 14,
|
|
"data": ["«external:file:///completionTactics.lean»", 118, 4, 0]}
|
|
{"textDocument": {"uri": "file:///completionTactics.lean"},
|
|
"position": {"line": 132, "character": 21}}
|
|
{"items":
|
|
[{"label": "open",
|
|
"kind": 14,
|
|
"documentation":
|
|
{"value":
|
|
"`open Foo in tacs` (the tactic) acts like `open Foo` at command level,\nbut it opens a namespace only within the tactics `tacs`. ",
|
|
"kind": "markdown"},
|
|
"data": ["«external:file:///completionTactics.lean»", 132, 21, 0]},
|
|
{"label": "match",
|
|
"kind": 14,
|
|
"documentation":
|
|
{"value":
|
|
"`match` performs case analysis on one or more expressions.\nSee [Induction and Recursion][tpil4].\nThe syntax for the `match` tactic is the same as term-mode `match`, except that\nthe match arms are tactics instead of expressions.\n```\nexample (n : Nat) : n = n := by\n match n with\n | 0 => rfl\n | i+1 => simp\n```\n\n[tpil4]: https://lean-lang.org/theorem_proving_in_lean4/induction_and_recursion.html\n",
|
|
"kind": "markdown"},
|
|
"data": ["«external:file:///completionTactics.lean»", 132, 21, 0]},
|
|
{"label": "set_option",
|
|
"kind": 14,
|
|
"documentation":
|
|
{"value":
|
|
"`set_option opt val in tacs` (the tactic) acts like `set_option opt val` at the command level,\nbut it sets the option only within the tactics `tacs`. ",
|
|
"kind": "markdown"},
|
|
"data": ["«external:file:///completionTactics.lean»", 132, 21, 0]},
|
|
{"label": "skip",
|
|
"kind": 14,
|
|
"documentation": {"value": "A docstring ", "kind": "markdown"},
|
|
"data": ["«external:file:///completionTactics.lean»", 132, 21, 0]},
|
|
{"label": "ident",
|
|
"kind": 14,
|
|
"data": ["«external:file:///completionTactics.lean»", 132, 21, 0]},
|
|
{"label": "let rec",
|
|
"kind": 14,
|
|
"documentation": {"value": "Local recursive def ", "kind": "markdown"},
|
|
"data": ["«external:file:///completionTactics.lean»", 132, 21, 0]},
|
|
{"label": "exact",
|
|
"kind": 14,
|
|
"documentation": {"value": "Another docstring ", "kind": "markdown"},
|
|
"data": ["«external:file:///completionTactics.lean»", 132, 21, 0]},
|
|
{"label": "intro",
|
|
"kind": 14,
|
|
"data": ["«external:file:///completionTactics.lean»", 132, 21, 0]},
|
|
{"label": "let",
|
|
"kind": 14,
|
|
"documentation": {"value": "Local def ", "kind": "markdown"},
|
|
"data": ["«external:file:///completionTactics.lean»", 132, 21, 0]}],
|
|
"isIncomplete": true}
|
|
Resolution of open:
|
|
{"label": "open",
|
|
"kind": 14,
|
|
"documentation":
|
|
{"value":
|
|
"`open Foo in tacs` (the tactic) acts like `open Foo` at command level,\nbut it opens a namespace only within the tactics `tacs`. ",
|
|
"kind": "markdown"},
|
|
"data": ["«external:file:///completionTactics.lean»", 132, 21, 0]}
|
|
Resolution of match:
|
|
{"label": "match",
|
|
"kind": 14,
|
|
"documentation":
|
|
{"value":
|
|
"`match` performs case analysis on one or more expressions.\nSee [Induction and Recursion][tpil4].\nThe syntax for the `match` tactic is the same as term-mode `match`, except that\nthe match arms are tactics instead of expressions.\n```\nexample (n : Nat) : n = n := by\n match n with\n | 0 => rfl\n | i+1 => simp\n```\n\n[tpil4]: https://lean-lang.org/theorem_proving_in_lean4/induction_and_recursion.html\n",
|
|
"kind": "markdown"},
|
|
"data": ["«external:file:///completionTactics.lean»", 132, 21, 0]}
|
|
Resolution of set_option:
|
|
{"label": "set_option",
|
|
"kind": 14,
|
|
"documentation":
|
|
{"value":
|
|
"`set_option opt val in tacs` (the tactic) acts like `set_option opt val` at the command level,\nbut it sets the option only within the tactics `tacs`. ",
|
|
"kind": "markdown"},
|
|
"data": ["«external:file:///completionTactics.lean»", 132, 21, 0]}
|
|
Resolution of skip:
|
|
{"label": "skip",
|
|
"kind": 14,
|
|
"documentation": {"value": "A docstring ", "kind": "markdown"},
|
|
"data": ["«external:file:///completionTactics.lean»", 132, 21, 0]}
|
|
Resolution of ident:
|
|
{"label": "ident",
|
|
"kind": 14,
|
|
"data": ["«external:file:///completionTactics.lean»", 132, 21, 0]}
|
|
Resolution of let rec:
|
|
{"label": "let rec",
|
|
"kind": 14,
|
|
"documentation": {"value": "Local recursive def ", "kind": "markdown"},
|
|
"data": ["«external:file:///completionTactics.lean»", 132, 21, 0]}
|
|
Resolution of exact:
|
|
{"label": "exact",
|
|
"kind": 14,
|
|
"documentation": {"value": "Another docstring ", "kind": "markdown"},
|
|
"data": ["«external:file:///completionTactics.lean»", 132, 21, 0]}
|
|
Resolution of intro:
|
|
{"label": "intro",
|
|
"kind": 14,
|
|
"data": ["«external:file:///completionTactics.lean»", 132, 21, 0]}
|
|
Resolution of let:
|
|
{"label": "let",
|
|
"kind": 14,
|
|
"documentation": {"value": "Local def ", "kind": "markdown"},
|
|
"data": ["«external:file:///completionTactics.lean»", 132, 21, 0]}
|