43template <
bool ref_count>
62class SortConstructorType;
93 friend class NodeManager;
94 friend class TypeNode;
118 Type(NodeManager* em, TypeNode* typeNode);
184 const std::vector<Type>& replacements)
const;
426 size_t getArity() const;
446 size_t getLength() const;
495 Type getConstituentType() const;
523 std::
string getName() const;
526 bool isParameterized() const;
544 std::
string getName() const;
547 size_t getArity() const;
567 Expr getPredicate()
const;
573 Type getParentType()
const;
607 unsigned getSize() const;
626 bool isParametric() const;
640 bool isInstantiated() const;
645 bool isParameterInstantiated(
unsigned n) const;
651 size_t getArity() const;
675 size_t getArity() const;
Representation of cardinality.
Class encapsulating an array type.
ArrayType(const Type &type=Type())
Construct from the base type.
Class encapsulating the bit-vector type.
BitVectorType(const Type &type=Type())
Construct from the base type.
Singleton class encapsulating the Boolean type.
BooleanType(const Type &type=Type())
Construct from the base type.
A simple representation of a cardinality.
Class encapsulating the constructor type.
ConstructorType(const Type &type=Type())
Construct from the base type.
Class encapsulating the datatype type.
DatatypeType(const Type &type=Type())
Construct from the base type.
The representation of an inductive datatype.
Class encapsulating CVC4 expressions and methods for constructing new expressions.
Class encapsulating a function type.
FunctionType(const Type &type=Type())
Construct from the base type.
Singleton class encapsulating the integer type.
IntegerType(const Type &type=Type())
Construct from the base type.
Singleton class encapsulating the real type.
RealType(const Type &type=Type())
Construct from the base type.
Class encapsulating a record type.
RecordType(const Type &type=Type())
Construct from the base type.
Class encapsulating a tuple type.
SExprType(const Type &type=Type())
Construct from the base type.
Class encapsulating the Selector type.
SelectorType(const Type &type=Type())
Construct from the base type.
Class encapsulating an set type.
SetType(const Type &type=Type())
Construct from the base type.
Class encapsulating a user-defined sort constructor.
SortConstructorType(const Type &type=Type())
Construct from the base type.
Class encapsulating a user-defined sort.
SortType(const Type &type=Type())
Construct from the base type.
Singleton class encapsulating the string type.
StringType(const Type &type)
Construct from the base type.
Class encapsulating an integer subrange type.
SubrangeType(const Type &type=Type())
Construct from the base type.
Class encapsulating the Tester type.
TesterType(const Type &type=Type())
Construct from the base type.
Class encapsulating a tuple type.
TupleType(const Type &type=Type())
Construct from the base type.
Class encapsulating CVC4 expression types.
Cardinality getCardinality() const
Return the cardinality of this type.
bool operator>(const Type &t) const
An ordering on Types so they can be stored in maps, etc.
ExprManager * getExprManager() const
Get this type's ExprManager.
Type()
Default constructor.
bool isTuple() const
Is this a tuple type?
Type getBaseType() const
Get the most general base type of this type.
bool isSubtypeOf(Type t) const
Is this type a subtype of the given type?
bool isWellFounded() const
Is this a well-founded type?
bool isTester() const
Is this a tester type?
Type substitute(const Type &type, const Type &replacement) const
Substitution of Types.
bool isSet() const
Is this a Set type?
bool isReal() const
Is this the real type?
bool isArray() const
Is this an array type?
bool isBitVector() const
Is this the bit-vector type?
bool isInteger() const
Is this the integer type?
bool operator<=(const Type &t) const
An ordering on Types so they can be stored in maps, etc.
bool isNull() const
Check whether this is a null type.
bool isDatatype() const
Is this a datatype type?
bool operator!=(const Type &t) const
Comparison for structural disequality.
Type substitute(const std::vector< Type > &types, const std::vector< Type > &replacements) const
Simultaneous substitution of Types.
bool operator>=(const Type &t) const
An ordering on Types so they can be stored in maps, etc.
bool isSortConstructor() const
Is this a sort constructor kind?
bool operator==(const Type &t) const
Comparison for structural equality.
static TypeNode * getTypeNode(const Type &t)
Accessor for derived classes.
bool isSelector() const
Is this a selector type?
NodeManager * d_nodeManager
The responsible expression manager.
bool isSubrange() const
Is this a predicate subtype?
bool operator<(const Type &t) const
An ordering on Types so they can be stored in maps, etc.
Type(const Type &t)
Copy constructor.
void toStream(std::ostream &out) const
Outputs a string representation of this type to the stream.
bool isFunction() const
Is this a function type?
bool isRecord() const
Is this a record type?
bool isComparableTo(Type t) const
Is this type comparable to the given type (i.e., do they share a common ancestor in the subtype tree)...
bool isSExpr() const
Is this a symbolic expression type?
bool isString() const
Is this the string type?
bool isPredicate() const
Is this a predicate type, i.e.
Type & operator=(const Type &t)
Assignment operator.
std::string toString() const
Constructs a string representation of this type.
Type makeType(const TypeNode &typeNode) const
Construct a new type given the typeNode, for internal use only.
virtual ~Type()
Force a virtual destructor for safety.
bool isSort() const
Is this a sort kind?
bool isBoolean() const
Is this the Boolean type?
Expr mkGroundTerm() const
Construct and return a ground term for this Type.
Type exportTo(ExprManager *exprManager, ExprManagerMapCollection &vmap) const
Exports this type into a different ExprManager.
bool isConstructor() const
Is this a constructor type?
Type(NodeManager *em, TypeNode *typeNode)
Constructor for internal purposes.
TypeNode * d_typeNode
The internal expression representation.
Macros that should be defined everywhere during the building of the libraries and driver binary,...
TypeNode exportTypeInternal(TypeNode n, NodeManager *from, NodeManager *nm, ExprManagerMapCollection &vmap)
std::ostream & operator<<(std::ostream &out, const TypeCheckingException &e)
size_t operator()(const CVC4::Type &t) const
Return a hash code for type t.
Representation of subrange bounds.