Zulip Chat Archive
Stream: lean4
Topic: Instantiating MVars in decls
Jannis Limperg (Aug 19 2021 at 11:28):
I just wrote this function:
def instantiateMVarsInMVarType (mvarId : MVarId) : MetaM Expr := do
let type ← instantiateMVars (← getMVarDecl mvarId).type
setMVarType mvarId type
return type
I was wondering why this isn't defined in the stdlib (or maybe I just didn't find it). Isn't it a good idea to replace an expression with its mvar-instantiated counterpart whenever possible?
Leonardo de Moura (Aug 20 2021 at 17:00):
We have
def instantiateMVarDeclMVars (mctx : MetavarContext) (mvarId : MVarId) : MetavarContext :=
which instantiates all assigned metavariables in the MetavarDecl for mvarId.
It is not just the type, but the local context too.
We used this function in the by tac implementation. It is executed at the beginning. I can see it may be useful for tactics like the one you are building.
Jannis Limperg (Aug 20 2021 at 17:20):
Ah nice, thanks! I'll continue to do this sort of caching then.
Last updated: May 02 2025 at 03:31 UTC