doc: Update documentation
This commit is contained in:
parent
8e373eb3b2
commit
57001bb0a3
|
@ -1,5 +1,5 @@
|
||||||
Data
|
Data
|
||||||
=============
|
=============
|
||||||
|
|
||||||
.. automodule:: pantograph.compiler
|
.. automodule:: pantograph.data
|
||||||
:members:
|
:members:
|
||||||
|
|
|
@ -214,7 +214,9 @@
|
||||||
"\n",
|
"\n",
|
||||||
"Lean has special provisions for some tactics. This includes `have`, `let`,\n",
|
"Lean has special provisions for some tactics. This includes `have`, `let`,\n",
|
||||||
"`calc`. To execute one of these tactics, create a `TacticHave`, `TacticLet`,\n",
|
"`calc`. To execute one of these tactics, create a `TacticHave`, `TacticLet`,\n",
|
||||||
"`TacticCalc` instance and feed it into `server.goal_tactic`"
|
"`TacticCalc` instance and feed it into `server.goal_tactic`.\n",
|
||||||
|
"\n",
|
||||||
|
"Technically speaking `have` and `let` are not tactics in Lean, so their execution requires special attention."
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -307,7 +309,7 @@
|
||||||
"name": "python",
|
"name": "python",
|
||||||
"nbconvert_exporter": "python",
|
"nbconvert_exporter": "python",
|
||||||
"pygments_lexer": "ipython3",
|
"pygments_lexer": "ipython3",
|
||||||
"version": "3.12.6"
|
"version": "3.12.7"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nbformat": 4,
|
"nbformat": 4,
|
||||||
|
|
|
@ -23,6 +23,38 @@ Almost all of Pantograph's business logic is written in Lean, and Pantograph
|
||||||
achieves tighter coupling between the data extraction and proof search
|
achieves tighter coupling between the data extraction and proof search
|
||||||
components.
|
components.
|
||||||
|
|
||||||
|
## Caveats and Limitations
|
||||||
|
|
||||||
|
Pantograph does not exactly mimic Lean LSP's behaviour. That would not grant the
|
||||||
|
flexibility it offers. To support tree search means Pantograph has to act
|
||||||
|
differently from Lean in some times, but never at the sacrifice of soundness.
|
||||||
|
|
||||||
|
- When Lean LSP says "don't know how to synthesize placeholder", this indicates
|
||||||
|
the human operator needs to manually move the cursor to the placeholder and
|
||||||
|
type in the correct expression. This error therefore should not halt the proof
|
||||||
|
process, and the placeholder should be turned into a goal.
|
||||||
|
- When Lean LSP says "unresolved goals", that means a proof cannot finish where
|
||||||
|
it is supposed to finish at the end of a `by` block. Pantograph will raise the
|
||||||
|
error in this case, since it indicates the termination of a proof search branch.
|
||||||
|
- `pick_goal` or `swap` will not work since they run contrary to tree search
|
||||||
|
paradigms. However, if there are tactics which perform non-trivial operations
|
||||||
|
to multiple goals at the same time, this constrain could potentially be
|
||||||
|
relaxed at a cost of great bookkeeping overhead to the user.
|
||||||
|
|
||||||
|
Pantograph cannot perform things that are inherently constrained by Lean. These
|
||||||
|
include:
|
||||||
|
|
||||||
|
- If a tactic loses track of metavariables, it will not be caught until the end
|
||||||
|
of the proof search. This is a bug in the tactic itself.
|
||||||
|
- Timeouts for executing tactics is not available. Maybe this will change in the
|
||||||
|
future.
|
||||||
|
- Interceptions of parsing errors generally cannot be turned into goals (e.g.
|
||||||
|
`def mystery : Nat := :=`) due to Lean's parsing system.
|
||||||
|
|
||||||
|
Each Pantograph version is anchored to a Lean version specified in
|
||||||
|
`src/lean-toolchain`. Features can be backported to older Lean versions upon
|
||||||
|
request.
|
||||||
|
|
||||||
## Referencing
|
## Referencing
|
||||||
|
|
||||||
[Paper Link](https://arxiv.org/abs/2410.16429)
|
[Paper Link](https://arxiv.org/abs/2410.16429)
|
||||||
|
|
Loading…
Reference in New Issue