summaryrefslogtreecommitdiff
path: root/src/printer
diff options
context:
space:
mode:
authormudathirmahgoub <mudathir-mahgoubyahia@uiowa.edu>2020-04-08 18:24:16 -0500
committerGitHub <noreply@github.com>2020-04-08 18:24:16 -0500
commitdf1ea6b9cdc1f424073151d0f7fda639d4405622 (patch)
treef28bd734c6f78e7399f91e92d517343a779c09c3 /src/printer
parenta48cafdd09c3ff8cb9984bad930343958c30ce56 (diff)
Added CHOOSE operator for sets (#4211)
This PR enables THEORY_UF by default for sets and adds the operator CHOOSE for sets which returns an element from a given set. The semantics is as follows: If a set A = {x}, then the term (choose A) is equivalent to the term x. If the set is empty, then (choose A) is an arbitrary value. If the set has cardinality > 1, then (choose A) will deterministically return an element in A.
Diffstat (limited to 'src/printer')
-rw-r--r--src/printer/smt2/smt2_printer.cpp4
1 files changed, 3 insertions, 1 deletions
diff --git a/src/printer/smt2/smt2_printer.cpp b/src/printer/smt2/smt2_printer.cpp
index b5e137b4d..4013cbd08 100644
--- a/src/printer/smt2/smt2_printer.cpp
+++ b/src/printer/smt2/smt2_printer.cpp
@@ -741,7 +741,8 @@ void Smt2Printer::toStream(std::ostream& out,
case kind::INSERT:
case kind::SET_TYPE:
case kind::SINGLETON:
- case kind::COMPLEMENT: out << smtKindString(k, d_variant) << " "; break;
+ case kind::COMPLEMENT:
+ case kind::CHOOSE: out << smtKindString(k, d_variant) << " "; break;
case kind::UNIVERSE_SET:out << "(as univset " << n.getType() << ")";break;
// fp theory
@@ -1134,6 +1135,7 @@ static string smtKindString(Kind k, Variant v)
case kind::COMPLEMENT: return "complement";
case kind::CARD: return "card";
case kind::COMPREHENSION: return "comprehension";
+ case kind::CHOOSE: return "choose";
case kind::JOIN: return "join";
case kind::PRODUCT: return "product";
case kind::TRANSPOSE: return "transpose";
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback