diff options
author | Andrew Reynolds <andrew.j.reynolds@gmail.com> | 2020-05-30 13:10:54 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-05-30 13:10:54 -0500 |
commit | ba659fb1b8bc2f110616ec113892f63f210a5ebb (patch) | |
tree | 9beaf9be94879a75f4c2cadf8289664b53cc1d1b /src/expr/node_manager.cpp | |
parent | da165b9cbee366d4e77716617f2e2c794da9bd46 (diff) |
Add the sequence type (#4539)
This adds basic infrastructure for the sequence type, including its type rules, type enumerator and extensions to type functions.
The next step will be to finalize the support in TheoryStrings for sequences and then add front end support for sequences in the API/parsers.
Diffstat (limited to 'src/expr/node_manager.cpp')
-rw-r--r-- | src/expr/node_manager.cpp | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/src/expr/node_manager.cpp b/src/expr/node_manager.cpp index feec9b782..7bc98f65d 100644 --- a/src/expr/node_manager.cpp +++ b/src/expr/node_manager.cpp @@ -495,6 +495,17 @@ Node NodeManager::mkSkolem(const std::string& prefix, const TypeNode& type, cons return n; } +TypeNode NodeManager::mkSequenceType(TypeNode elementType) +{ + CheckArgument( + !elementType.isNull(), elementType, "unexpected NULL element type"); + CheckArgument(elementType.isFirstClass(), + elementType, + "cannot store types that are not first-class in sequences. Try " + "option --uf-ho."); + return mkTypeNode(kind::SEQUENCE_TYPE, elementType); +} + TypeNode NodeManager::mkConstructorType(const DatatypeConstructor& constructor, TypeNode range) { vector<TypeNode> sorts; |