9eb4dc4a81
This commit affects different modules. I used the following approach: 1- I store the metavariable environment at unification_failure_justifications. The idea is to capture the set of instantiated metavariables at the time of failure. 2- I added a remove_detail function. It removes propagation steps from the justification tree object. I also remove the backtracking search space associated with higher-order unificiation. I keep only the search related to case-splits due to coercions and overloads. 3- I use the metavariable environment captured at step 1 when pretty printing the justification of an elaborator_exception. Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
25 lines
646 B
Text
25 lines
646 B
Text
Set: pp::colors
|
||
Set: pp::unicode
|
||
Imported 'Int'
|
||
Assumed: i
|
||
Assumed: j
|
||
Assumed: p
|
||
elaborator exception
|
||
Failed to solve
|
||
⊢ (?M::0 ≈ Nat::add) ⊕ (?M::0 ≈ Int::add)
|
||
Overloading at
|
||
(Int::add | Nat::add) i p
|
||
Failed to solve
|
||
⊢ ℤ ≺ ℕ
|
||
Type of argument 1 must be convertible to the expected type in the application of
|
||
Nat::add
|
||
with arguments:
|
||
i
|
||
p
|
||
Failed to solve
|
||
⊢ Bool ≺ ℤ
|
||
Type of argument 2 must be convertible to the expected type in the application of
|
||
Int::add
|
||
with arguments:
|
||
i
|
||
p
|