@Kha This commit addresses an issue reported by Kevin. Holes and tactic blocks represent a discontinuity in the elaboration process. By introducing inaccessible variables (or "things" as Kevin calls them), we create error message that are harder to understand (see affected test), and goals where we didn't allow the user to select the variable name and/or eagerly unfolded a definition. BTW, I first considered using "reducible" setting when deciding whether to insert implicit lambdas or not. This is a bad idea. See `monotone.lean` test. The decision should not depend on reducibility status, but whether there is "discontinuity" on the elaboration process or not. As Kevin pointed out, "introducing implicits work great if you finish the job".
33 lines
855 B
Text
33 lines
855 B
Text
shadow.lean:6:0-6:1: error: type mismatch
|
||
h
|
||
has type
|
||
x✝ = x✝ : Prop
|
||
but is expected to have type
|
||
x = x : Prop
|
||
shadow.lean:10:0-10:1: error: type mismatch
|
||
h
|
||
has type
|
||
x = x : Prop
|
||
but is expected to have type
|
||
x = x : Prop
|
||
shadow.lean:13:0-13:1: error: don't know how to synthesize placeholder
|
||
context:
|
||
α : Type u_1
|
||
inst✝¹ : Inhabited α
|
||
inst✝ inst : α
|
||
⊢ {β δ : Type} → α → β → δ → α × β × δ
|
||
shadow.lean:17:0-17:1: error: don't know how to synthesize placeholder
|
||
context:
|
||
α : Type u_1
|
||
inst.66 : Inhabited α
|
||
inst inst : α
|
||
⊢ {β δ : Type} → α → β → δ → α × β × δ
|
||
shadow.lean:20:0-20:1: error: don't know how to synthesize placeholder
|
||
context:
|
||
α : Type u_1
|
||
β : Sort u_2
|
||
inst✝² : α
|
||
inst✝¹ b : β
|
||
inst : α
|
||
inst✝ : Inhabited α
|
||
⊢ {β δ : Type} → α → β → δ → α × β × δ
|