17 auto ret =
mValues.emplace(args, value);
18 assert(ret.second || ret.first->second == value);
30 assert(!ufm.
values().empty());
31 os <<
"(define-fun " << ufm.
function().name() <<
" (";
34 for (
const auto& arg : ufm.
function().domain()) {
35 if (
id > 1) os <<
" ";
36 os <<
"(x!" <<
id <<
" " << arg <<
")";
39 os <<
") " << ufm.
function().codomain() <<
" ";
41 for (
const auto& instance : ufm.
values()) {
44 for (
const auto& param : instance.first) {
45 if (iid > 0) os <<
" ";
46 os <<
"(= x!" << iid <<
" " << param <<
")";
49 os <<
") " << instance.second <<
" ";
51 os << ufm.
values().begin()->second;
52 for (std::size_t i = 0; i < ufm.
values().size(); ++i)
carl is the main namespace for the library.
std::ostream & operator<<(std::ostream &os, const BasicConstraint< Poly > &c)
Prints the given constraint on the given stream.
SortValue defaultSortValue(const Sort &sort)
Returns the default value for the given sort.
Implements a sort value, being a value of the uninterpreted domain specified by this sort.
Implements a sort value, being a value of the uninterpreted domain specified by this sort.
SortValue get(const std::vector< SortValue > &_args) const
const auto & function() const
const auto & values() const
UninterpretedFunction mFunction
std::map< std::vector< SortValue >, SortValue > mValues
bool extend(const std::vector< SortValue > &_args, const SortValue &_value)