summaryrefslogtreecommitdiff
path: root/src/expr/node_manager.cpp
diff options
context:
space:
mode:
authorAndrew Reynolds <andrew.j.reynolds@gmail.com>2020-05-30 13:10:54 -0500
committerGitHub <noreply@github.com>2020-05-30 13:10:54 -0500
commitba659fb1b8bc2f110616ec113892f63f210a5ebb (patch)
tree9beaf9be94879a75f4c2cadf8289664b53cc1d1b /src/expr/node_manager.cpp
parentda165b9cbee366d4e77716617f2e2c794da9bd46 (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.cpp11
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;
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback