This modification improves the effectiveness of the process_metavar_inst procedure in the Lean elaborator.
For example, suppose we have the constraint
ctx |- ?M1[inst:0 ?M2] == a
If ?M1 and ?M2 are unassigned, then we have to consider the two possible solutions:
?M1 == a
or
?M1 == #0 and ?M2 == a
On the other hand, if ?M2 is assigned to b, then we can ignore the second case.
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
8 lines
No EOL
204 B
Text
8 lines
No EOL
204 B
Text
SetOption pp::implicit true.
|
|
SetOption pp::colors false.
|
|
Variable N : Type.
|
|
|
|
Check
|
|
fun (a : N) (f : N -> N) (H : f a == a),
|
|
let calc1 : f a == a := SubstP (fun x : N, f a == _) (Refl (f a)) H
|
|
in calc1. |