This PR modifies the app elaborator to beta reduce arguments while substituting them into expected types for later arguments. This makes it consistent with `inferType` and `instantiateMVars`, which both beta reduce substitutions. In particular, this change ensures that the app elaborator behaves as if it creates metavariables for each parameter and assigns elaborated arguments to the metavariables. **Breaking change:** tactic proofs may need to be modified to remove unnecessary steps, e.g. `dsimp only` steps that were previously for beta reductions.
24 lines
378 B
Text
24 lines
378 B
Text
/--
|
|
error: Invalid projection: Type of
|
|
x✝
|
|
is not known; cannot resolve projection `1`
|
|
---
|
|
error: unsolved goals
|
|
case refine'_1
|
|
⊢ Sort ?u.4
|
|
|
|
case refine'_2
|
|
⊢ Sort ?u.3
|
|
|
|
case refine'_3
|
|
⊢ ?refine'_1
|
|
|
|
case refine'_4
|
|
⊢ ?refine'_1
|
|
|
|
case refine'_5
|
|
⊢ ¬?m.10 ?refine'_3 = ?m.10 ?refine'_4
|
|
-/
|
|
#guard_msgs in
|
|
example : False := by
|
|
refine' absurd (congrArg (·.1) sorry) _
|