After this commit, new interactice tactic classes can be added without
writing C++ code (see example: tests/lean/run/my_tac_class.lean).
The tactic_evaluator was simplified, and all the complexity has been
moved to tactic_notation, and lean code.
We can now inspect the intermediate states produced by the rewrite
tactic.
The function (@scope_trace _ line col thunk) can be used to position trace
messages produced by thunk. If line/col are not provided (i.e., we
just write (scope_trace thunk)), then line/col are filled with the
position of this term by the elaborator.
We can visualize the intermediate tactic states inside nested blocks
such as (try { ... })
The new infrastructure can be used to implement custom tactic_state
pretty printers.
15 lines
451 B
Text
15 lines
451 B
Text
1258.lean:4:19: error: failed to revert 'xs', 'foo' depends on it, and 'foo' is an auxiliary declaration introduced by the equation compiler (possible solution: use tactic 'clear' to remove 'foo' from the local context)
|
||
|
||
state:
|
||
xs : list ℕ,
|
||
foo : ∀ (ns : list ℕ), P xs ns,
|
||
n : ℕ,
|
||
ns : list ℕ
|
||
⊢ P xs (n :: ns)
|
||
1258.lean:4:54: error: failed
|
||
state:
|
||
xs : list ℕ,
|
||
foo : ∀ (ns : list ℕ), P xs ns,
|
||
n : ℕ,
|
||
ns : list ℕ
|
||
⊢ P xs (n :: ns)
|