Remarks:
- Some tests do not produce error messages anymore because they can be
processed using the new equation compiler preprocessor.
- Some error messages got worse because of the preprocessing step.
We use metavariables in the preprocessing step. This information
may "leak" to users. Another problem is that some variable names
are lost. Example: in the following definition
def to_nat : ∀ {n}, fi n → nat
| (succ n) f0 := 0
| (succ n) (fs i) := succ (to_nat i)
The preprocessing step uses metavariables for pattern variables.
Thus, we have
def to_nat : ∀ {n}, fi n → nat
| (succ ?n) (@f0 ?x) := 0
| (succ ?n) (@fs ?x ?i) := succ (to_nat i)
when solving the constraint `succ ?n =?= succ ?x`, Lean assigns
?n := ?x
after solving these constraints, the preprocessor converts
metavariables into pattern variables again, and we have
def to_nat : ∀ {n}, fi n → nat
| (succ x) (@f0 x) := 0
| (succ x) (@fs x i) := succ (to_nat i)
So, we get the following equation lemmas:
to_nat.equations._eqn_1 : ∀ (x : ℕ), @to_nat (succ x) (@f0 x) = 0
to_nat.equations._eqn_2 : ∀ (x : ℕ) (i : fi x), @to_nat (succ x) (@fs x i) = succ (@to_nat x i)
instead of
to_nat.equations._eqn_1 : ∀ (n : ℕ), @to_nat (succ n) (@f0 n) = 0
to_nat.equations._eqn_2 : ∀ (n : ℕ) (i : fi n), @to_nat (succ n) (@fs n i) = succ (@to_nat n i)
24 lines
1.2 KiB
Text
24 lines
1.2 KiB
Text
inaccessible.lean:14:10: error: invalid application, function expected
|
|
inaccessible.lean:14:13: error: don't know how to synthesize placeholder
|
|
context:
|
|
A : Type u,
|
|
B : Type v,
|
|
f : A → B,
|
|
inv_3 : Π (b : B), imf f b → A
|
|
⊢ A
|
|
inaccessible.lean:13:11: error: equation compiler failed (use 'set_option trace.eqn_compiler.elim_match true' for additional details)
|
|
inaccessible.lean:17:12: error: invalid inaccessible annotation, it cannot be used around functions in applications
|
|
inaccessible.lean:17:16: error: don't know how to synthesize placeholder
|
|
context:
|
|
A : Type u,
|
|
B : Type v,
|
|
f : A → B,
|
|
inv_4 : Π (b : B), imf f b → A
|
|
⊢ A
|
|
inaccessible.lean:16:11: error: equation compiler failed (use 'set_option trace.eqn_compiler.elim_match true' for additional details)
|
|
inaccessible.lean:25:12: error: invalid pattern, 'a' already appeared in this pattern
|
|
inaccessible.lean:25:3: error: invalid application, function expected
|
|
inaccessible.lean:25:16: error: ill-formed match/equation expression
|
|
inaccessible.lean:28:3: error: invalid application, function expected
|
|
inaccessible.lean:28:16: error: ill-formed match/equation expression
|
|
inaccessible.lean:31:4: error: invalid pattern, 'a' already appeared in this pattern
|