bool has_placeholder(expr const & e) { return (bool) find(e, [](expr const & e, unsigned) { // NOLINT if (is_placeholder(e)) return true; else if (is_sort(e)) return has_placeholder(sort_level(e)); else if (is_constant(e)) return std::any_of(const_levels(e).begin(), const_levels(e).end(), [](level const & l) { return has_placeholder(l); }); else return false; }); }
static int has_placeholder(lua_State * L) { if (is_expr(L, 1)) return push_boolean(L, has_placeholder(to_expr(L, 1))); else return push_boolean(L, has_placeholder(to_level(L, 1))); }