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.
17 lines
510 B
Text
17 lines
510 B
Text
bad_error2.lean:8:6: error: rewrite tactic failed, did not find instance of the pattern in the target expression
|
||
?m_1 + ?m_2 + ?m_3
|
||
state:
|
||
k n m : ℕ,
|
||
h : k + n ≤ k + m,
|
||
_match : (∃ (k_1 : ℕ), k + n + k_1 = k + m) → n ≤ m,
|
||
w : ℕ,
|
||
hw : (λ (k_1 : ℕ), k + n + k_1 = k + m) w
|
||
⊢ n + w = m
|
||
bad_error2.lean:10:4: error: failed
|
||
state:
|
||
k n m : ℕ,
|
||
h : k + n ≤ k + m,
|
||
_match : (∃ (k_1 : ℕ), k + n + k_1 = k + m) → n ≤ m,
|
||
w : ℕ,
|
||
hw : (λ (k_1 : ℕ), k + n + k_1 = k + m) w
|
||
⊢ n + w = m
|