47 CheckArgument(type.isArray(), type,
"array store-all constants can only be created for array types, not `%s'", type.toString().c_str());
49 CheckArgument(expr.getType().isSubtypeOf(type.getConstituentType()), expr,
"expr type `%s' does not match constituent type of array type `%s'", expr.getType().toString().c_str(), type.toString().c_str());
50 CheckArgument(expr.isConst(), expr,
"ArrayStoreAll requires a constant expression");
64 return d_type == asa.d_type && d_expr == asa.d_expr;
67 return !(*
this == asa);
71 return d_type < asa.d_type ||
72 (d_type == asa.d_type && d_expr < asa.d_expr);
75 return d_type < asa.d_type ||
76 (d_type == asa.d_type && d_expr <= asa.d_expr);
79 return !(*
this <= asa);
82 return !(*
this < asa);
bool operator<=(const ArrayStoreAll &asa) const
ArrayStoreAll(ArrayType type, Expr expr)
bool operator!=(const ArrayStoreAll &asa) const
bool operator==(const ArrayStoreAll &asa) const
ArrayType getType() const
bool operator<(const ArrayStoreAll &asa) const
bool operator>(const ArrayStoreAll &asa) const
bool operator>=(const ArrayStoreAll &asa) const
Class encapsulating an array type.
Class encapsulating CVC4 expressions and methods for constructing new expressions.
Macros that should be defined everywhere during the building of the libraries and driver binary,...
std::ostream & operator<<(std::ostream &out, const TypeCheckingException &e)
void CheckArgument(bool cond, const T &arg, const char *fmt,...)
Hash function for the ArrayStoreAll constants.
size_t operator()(const ArrayStoreAll &asa) const
Interface for expression types.