def Lean.Meta.Sym.withLocalDeclS {n : Type → Type u_1} {α : Type} [Monad n] [MonadControlT MetaM n] [MonadLiftT SymM n] (name : Name) (bi : BinderInfo) (type : Expr) (k : Expr → n α) :
n α
Similar to withLocalDecl, but the free variable passed to k is registered in the
SymM share set. Use it when the free variable is substituted into maximally shared
terms, e.g. via instantiateRevS.
Instances For
def Lean.Meta.Sym.withLetDeclS {n : Type → Type u_1} {α : Type} [Monad n] [MonadControlT MetaM n] [MonadLiftT SymM n] (name : Name) (type val : Expr) (k : Expr → n α) (nondep : Bool := false) :
n α
withLetDecl variant that registers the free variable in the share set. See withLocalDeclS.
Instances For
Instantiates metavariables and applies shareCommon, which maintains the SymM
invariants enabled in the current configuration (see Sym.Config).
Instances For
Instantiates assigned metavariables, applies shareCommon, and eliminates holes (aka none cells)
in the local context.
Instances For
Normalizes universe levels in constants and sorts.