bool project(contains_app& x, model_ref& model, expr_ref& fml) override { model_evaluator model_eval(*model); expr_ref val_x(m); rational val(0); unsigned bv_size; model_eval(x.x(), val_x); m_bv.is_numeral(val_x, val, bv_size); subst(x, val, fml, nullptr); return true; }
tagged_pair<tag::in(I), tag::out(O)> operator()(I begin, S1 end, O result, S2 end_result, BOp bop = BOp{}, P proj = P{}) const { using X = projected<projected<I, detail::as_value_type_t<I>>, P>; coerce<value_type_t<I>> val_i; coerce<value_type_t<X>> val_x; if(begin != end && result != end_result) { auto &&cur1 = val_i(*begin); value_type_t<X> t(invoke(proj, cur1)); *result = t; for(++begin, ++result; begin != end && result != end_result; ++begin, ++result) { auto &&cur2 = val_i(*begin); t = val_x(invoke(bop, t, invoke(proj, cur2))); *result = t; } } return {begin, result}; }