19 #ifndef __CVC4__TYPE_H
20 #define __CVC4__TYPE_H
43 template <
bool ref_count>
53 class ConstructorType;
61 class SortConstructorType;
92 friend class NodeManager;
93 friend class TypeNode;
110 Type makeType(
const TypeNode& typeNode)
const;
117 Type(NodeManager* em, TypeNode* typeNode);
150 bool isWellFounded()
const;
156 Expr mkGroundTerm()
const;
161 bool isSubtypeOf(
Type t)
const;
167 bool isComparableTo(
Type t)
const;
172 Type getBaseType()
const;
177 Type substitute(
const Type& type,
const Type& replacement)
const;
182 Type substitute(
const std::vector<Type>& types,
183 const std::vector<Type>& replacements)
const;
219 bool operator<(
const Type& t)
const;
224 bool operator<=(
const Type& t)
const;
229 bool operator>(
const Type& t)
const;
234 bool operator>=(
const Type& t)
const;
240 bool isBoolean()
const;
246 bool isInteger()
const;
258 bool isString()
const;
264 bool isBitVector()
const;
270 bool isFunction()
const;
277 bool isPredicate()
const;
283 bool isTuple()
const;
289 bool isRecord()
const;
295 bool isSExpr()
const;
301 bool isArray()
const;
307 bool isDatatype()
const;
313 bool isConstructor()
const;
319 bool isSelector()
const;
325 bool isTester()
const;
337 bool isSortConstructor()
const;
350 bool isSubrange()
const;
356 void toStream(std::ostream&
out)
const;
361 std::string toString()
const;
419 size_t getArity()
const;
422 std::vector<Type> getArgTypes()
const;
425 Type getRangeType()
const;
439 size_t getLength()
const;
442 std::vector<Type> getTypes()
const;
457 const Record& getRecord()
const;
471 std::vector<Type> getTypes()
const;
485 Type getIndexType()
const;
488 Type getConstituentType()
const;
502 std::string getName()
const;
505 bool isParameterized()
const;
508 std::vector<Type> getParamTypes()
const;
523 std::string getName()
const;
526 size_t getArity()
const;
529 SortType instantiate(
const std::vector<Type>& params)
const;
546 Expr getPredicate() const;
552 Type getParentType() const;
586 unsigned getSize()
const;
602 const Datatype& getDatatype()
const;
605 bool isParametric()
const;
611 Expr getConstructor(std::string name)
const;
619 bool isInstantiated()
const;
624 bool isParameterInstantiated(
unsigned n)
const;
627 std::vector<Type> getParamTypes()
const;
630 size_t getArity()
const;
633 DatatypeType instantiate(
const std::vector<Type>& params)
const;
651 std::vector<Type> getArgTypes()
const;
654 size_t getArity()
const;
673 Type getRangeType()
const;
Singleton class encapsulating the real type.
Class encapsulating the Selector type.
Class encapsulating CVC4 expressions and methods for constructing new expressions.
Singleton class encapsulating the integer type.
Class encapsulating a user-defined sort.
Class encapsulating a tuple type.
The representation of an inductive datatype.
A simple representation of a cardinality.
Class encapsulating CVC4 expression types.
std::ostream & operator<<(std::ostream &out, const Result &r)
static TypeNode * getTypeNode(const Type &t)
Accessor for derived classes.
TypeNode * d_typeNode
The internal expression representation.
Class encapsulating the Tester type.
Singleton class encapsulating the Boolean type.
This is CVC4 release version For build and installation please see the INSTALL file included with this distribution This first official release of CVC4 is the result of more than three years of efforts by researchers at New York University and The University of Iowa The project leaders are Clark please refer to the AUTHORS file in the source distribution CVC4 is a tool for determining the satisfiability of a first order formula modulo a first order CVC CVC3 but does not directly incorporate code from any previous version CVC4 is intended to be an open and extensible SMT engine It can be used as a stand alone tool or as a library It has been designed to increase the performance and reduce the memory overhead of its predecessors It is written entirely in C and is released under a free software see the INSTALL file that comes with this distribution We recommend that you visit our CVC4 tutorials online please write to the cvc users cs nyu edu mailing list *if you need to report a bug with CVC4
Representation of subrange bounds.
Representation of cardinality.
Class encapsulating an array type.
Class encapsulating a function type.
Class encapsulating a user-defined sort constructor.
Class encapsulating the datatype type.
Macros that should be defined everywhere during the building of the libraries and driver binary...
Class encapsulating a record type.
NodeManager * d_nodeManager
The responsible expression manager.
TypeNode exportTypeInternal(TypeNode n, NodeManager *from, NodeManager *nm, ExprManagerMapCollection &vmap)
Class encapsulating a tuple type.
Singleton class encapsulating the string type.
struct CVC4::options::out__option_t out
Class encapsulating an integer subrange type.
Class encapsulating the constructor type.
Class encapsulating the bit-vector type.
bool operator!=(enum Result::Sat s, const Result &r)
bool operator==(enum Result::Sat s, const Result &r)