shareBindings :: forall a m . (MonadSubst Var Var m, MonadSubst Var Exp m) => AST a -> a -> m a
shareBindings VarA v        = lookupSubst VarA v VarA (return v)
shareBindings :: forall a m . (MonadSubst Var Var m, MonadSubst Var Exp m) => AST a -> a -> m a
shareBindings VarA v        = lookupSubst VarA v VarA (return v)
shareBindings VarA v        = lookupSubst VarA v VarA (return v)