Sort
The Sort
class represents the sort of a
Term
.
Its kind is represented as enum class cvc5.SortKind
.
A Sort
can be hashed (using
std.hash<cvc5.Sort>
) and represented as a string
(using cvc5.Sort.__str__()
).
Class cvc5.Sort
only provides the default constructor
to create a null Sort. Class TermManager
provides factory functions for all other sorts, e.g.,
cvc5.TermManager.getBooleanSort()
for the Boolean sort and
cvc5.TermManager.mkBitVectorSort()
for bit-vector
sorts.
Sorts are defined as standardized in the SMT-LIB standard for standardized theories. Additionally, we introduce the following sorts for non-standardized theories:
Bag (Theory of Bags)
Created with
cvc5.TermManager.mkBagSort()
Set (Theory of Sets and Relations)
Created with
cvc5.TermManager.mkSetSort()
Relation (Theory of Sets and Relations)
Created with
cvc5.TermManager.mkSetSort()
as a set of tuple sorts
Table
Created with
cvc5.TermManager.mkBagSort()
as a bag of tuple sorts
- class cvc5.Sort
The sort of a cvc5 term.
Wrapper class for
cvc5::Sort
.- getAbstractedKind()
- Returns:
The sort kind of an abstract sort, which denotes the kind
of sorts that this abstract sort denotes.
Warning
This function is experimental and may change in future versions.
- getArrayElementSort()
- Returns:
The array element sort of an array sort.
- getArrayIndexSort()
- Returns:
The array index sort of an array sort.
- getBagElementSort()
- Returns:
The element sort of a bag sort.
- getBitVectorSize()
- Returns:
The bit-width of the bit-vector sort.
- getDatatype()
- Returns:
The underlying datatype of a datatype sort
- getDatatypeArity()
- Returns:
The arity of a datatype sort.
- getDatatypeConstructorArity()
- Returns:
The arity of a datatype constructor sort.
- getDatatypeConstructorCodomainSort()
- Returns:
The codomain sort of a datatype constructor sort.
- getDatatypeConstructorDomainSorts()
- Returns:
The domain sorts of a datatype constructor sort.
- getDatatypeSelectorCodomainSort()
- Returns:
The codomain sort of a datatype selector sort.
- getDatatypeSelectorDomainSort()
- Returns:
The domain sort of a datatype selector sort.
- getDatatypeTesterCodomainSort()
- Returns:
the codomain sort of a datatype tester sort, which is the Boolean sort
- getDatatypeTesterDomainSort()
- Returns:
The domain sort of a datatype tester sort.
- getFiniteFieldSize()
- Returns:
The size of the finite field sort.
- getFloatingPointExponentSize()
- Returns:
The bit-width of the exponent of the floating-point sort.
- getFloatingPointSignificandSize()
- Returns:
The width of the significand of the floating-point sort.
- getFunctionArity()
- Returns:
The arity of a function sort.
- getFunctionCodomainSort()
- Returns:
The codomain sort of a function sort.
- getFunctionDomainSorts()
- Returns:
The domain sorts of a function sort.
- getInstantiatedParameters()
Get the sorts used to instantiate the sort parameters of a parametric sort (parametric datatype or uninterpreted sort constructor sort, see
instantiate()
).- Returns:
The sorts used to instantiate the sort parameters of a parametric sort
- getKind()
Warning
This function is experimental and may change in future versions.
- Returns:
The
SortKind
of this sort.
- getNullableElementSort()
- Returns:
The element sort of a nullable sort.
- getSequenceElementSort()
- Returns:
The element sort of a sequence sort.
- getSetElementSort()
- Returns:
The element sort of a set sort.
- getSymbol()
Note
Asserts
hasSymbol()
.- Returns:
The raw symbol of the sort.
- getTupleLength()
- Returns:
The length of a tuple sort.
- getTupleSorts()
- Returns:
The element sorts of a tuple sort.
- getUninterpretedSortConstructor()
Get the associated uninterpreted sort constructor of an instantiated uninterpreted sort.
- Returns:
The uninterpreted sort constructor sort
- getUninterpretedSortConstructorArity()
- Returns:
The arity of a sort constructor sort.
- hasSymbol()
- Returns:
True iff this sort has a symbol.
- instantiate()
Instantiate a parameterized datatype sort or uninterpreted sort constructor sort.
Create sorts parameter with
TermManager.mkParamSort()
Warning
This function is experimental and may change in future versions.
- Parameters:
params – The list of sort parameters to instantiate with
- Returns:
The instantiated sort
- isAbstract()
Determine if this is an abstract sort.
- Returns:
True if the sort is an abstract sort.
Warning
This function is experimental and may change in future versions.
- isArray()
Determine if this is an array sort.
- Returns:
True if the sort is an array sort.
- isBag()
Determine if this is a bag sort.
- Returns:
True if the sort is a bag sort.
- isBitVector()
Determine if this is a bit-vector sort (SMT-LIB:
(_ BitVec i)
).- Returns:
True if the sort is a bit-vector sort.
- isBoolean()
Determine if this is the Boolean sort (SMT-LIB:
Bool
).- Returns:
True if the sort is the Boolean sort.
- isDatatype()
Determine if this is a datatype sort.
- Returns:
True if the sort is a datatype sort.
- isDatatypeConstructor()
Determine if this is a datatype constructor sort.
- Returns:
True if the sort is a datatype constructor sort.
- isDatatypeSelector()
Determine if this is a datatype selector sort.
- Returns:
True if the sort is a datatype selector sort.
- isDatatypeTester()
Determine if this is a tester sort.
- Returns:
True if the sort is a selector sort.
- isDatatypeUpdater()
Determine if this is a datatype updater sort.
- Returns:
True if the sort is a datatype updater sort.
- isFiniteField()
Determine if this is a finite field sort.
- Returns:
True if the sort is an array sort.
- isFloatingPoint()
Determine if this is a floatingpoint sort (SMT-LIB:
(_ FloatingPoint eb sb)
).- Returns:
True if the sort is a bit-vector sort.
- isFunction()
Determine if this is a function sort.
- Returns:
True if the sort is a function sort.
- isInstantiated()
Determine if this is an instantiated (parametric datatype or uninterpreted sort constructor) sort.
An instantiated sort is a sort that has been constructed from instantiating a sort parameters with sort arguments (see
instantiate()
).- Returns:
True if this is an instantiated sort.
- isInteger()
Determine if this is the integer sort (SMT-LIB:
Int
).- Returns:
True if the sort is the integer sort.
- isNull()
- Returns:
True if this Sort is a null sort.
- isNullable()
Determine if this is a nullable sort.
- Returns:
True if the sort is a nullable sort.
- isPredicate()
Determine if this is a predicate sort.
A predicate sort is a function sort that maps to the Boolean sort. All predicate sorts are also function sorts.
- Returns:
True if the sort is a predicate sort.
- isReal()
Determine if this is the real sort (SMT-LIB: Real).
- Returns:
True if the sort is the real sort.
- isRecord()
Determine if this is a record sort.
Warning
This function is experimental and may change in future versions.
- Returns:
True if the sort is a record sort.
- isRegExp()
Determine if this is the regular expression sort (SMT-LIB:
RegLan
).- Returns:
True if the sort is the regexp sort.
- isRoundingMode()
Determine if this is the rounding mode sort (SMT-LIB:
RoundingMode
).- Returns:
True if the sort is the rounding mode sort.
- isSequence()
Determine if this is a sequence sort.
- Returns:
True if the sort is a sequence sort.
- isSet()
Determine if this is a set sort.
- Returns:
True if the sort is a set sort.
- isString()
Determine if this is the string sort (SMT-LIB: String).
- Returns:
True if the sort is the string sort.
- isTuple()
Determine if this is a tuple sort.
- Returns:
True if the sort is a tuple sort.
- isUninterpretedSort()
Determine if this is a sort uninterpreted.
- Returns:
True if the sort is uninterpreted.
- isUninterpretedSortConstructor()
Determine if this is a sort constructor kind.
An uninterpreted sort constructor is an uninterpreted sort with arity > 0.
- Returns:
True if this a sort constructor kind.
- substitute()
Substitution of Sorts.
Note that this replacement is applied during a pre-order traversal and only once to the sort. It is not run until fix point. In the case that sort_or_list_1 contains duplicates, the replacement earliest in the list takes priority.
For example,
(Array A B) .substitute([A, C], [(Array C D), (Array A B)])
will return(Array (Array C D) B)
.Warning
This function is experimental and may change in future versions.
- Parameters:
sort_or_list_1 – The subsort or subsorts to be substituted within this sort.
sort_or_list_2 – The sort or list of sorts replacing the substituted subsort.