diff options
author | mudathirmahgoub <mudathirmahgoub@gmail.com> | 2020-09-22 16:59:41 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-09-22 16:59:41 -0500 |
commit | e4a29a6033ecc7ba5ec266f37e8f151f09ead020 (patch) | |
tree | 26dff55bd5121dc311185dcd3071a6e8751f9f5e /src/expr/node_manager.cpp | |
parent | 524c879720779abc3bc529459da8734f2eb3e3ad (diff) |
Add skeleton for theory of bags (multisets) (#5100)
This PR adds initial headers and mostly empty source files for the theory of bags (multisets).
It acts as a basis for future commits.
It includes straightforward implementation for typing rules an enumerator for bags.
Diffstat (limited to 'src/expr/node_manager.cpp')
-rw-r--r-- | src/expr/node_manager.cpp | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/src/expr/node_manager.cpp b/src/expr/node_manager.cpp index 6ac26fbee..3c3d6df4a 100644 --- a/src/expr/node_manager.cpp +++ b/src/expr/node_manager.cpp @@ -455,6 +455,18 @@ Node NodeManager::mkSkolem(const std::string& prefix, const TypeNode& type, cons return n; } +TypeNode NodeManager::mkBagType(TypeNode elementType) +{ + CheckArgument( + !elementType.isNull(), elementType, "unexpected NULL element type"); + CheckArgument(elementType.isFirstClass(), + elementType, + "cannot store types that are not first-class in bags. Try " + "option --uf-ho."); + Debug("bags") << "making bags type " << elementType << std::endl; + return mkTypeNode(kind::BAG_TYPE, elementType); +} + TypeNode NodeManager::mkSequenceType(TypeNode elementType) { CheckArgument( |