Remove subtyping for sets theory (#5179)
authormudathirmahgoub <mudathirmahgoub@gmail.com>
Sun, 4 Oct 2020 20:10:24 +0000 (15:10 -0500)
committerGitHub <noreply@github.com>
Sun, 4 Oct 2020 20:10:24 +0000 (15:10 -0500)
commit13cf41801f8f2bac538cb45d53ae7427916041a7
tree78e82b56e92004991890943ba5da863e6af3538f
parentd662d3321a46aac61973f7a90341ea870c0b1171
Remove subtyping for sets theory (#5179)

This PR removes subtyping for sets theory due to issues like #4502, #4507 and #4631.
Changes:

Add SingletonOp for singletons to specify the type of the single element in the set.
Add mkSingleton to the solver to enable the user to pass the sort of the single element.
Update smt and cvc parsers to use mkSingleton when the kind is SINGLETON
31 files changed:
examples/api/python/sets.py
examples/api/sets.cpp
src/CMakeLists.txt
src/api/cvc4cpp.cpp
src/api/cvc4cpp.h
src/api/python/cvc4.pxd
src/api/python/cvc4.pxi
src/expr/node_manager.cpp
src/expr/node_manager.h
src/parser/cvc/Cvc.g
src/parser/smt2/smt2.cpp
src/printer/smt2/smt2_printer.cpp
src/theory/quantifiers/fmf/bounded_integers.cpp
src/theory/quantifiers/sygus/sygus_grammar_cons.cpp
src/theory/sep/theory_sep.cpp
src/theory/sep/theory_sep_rewriter.cpp
src/theory/sets/cardinality_extension.cpp
src/theory/sets/kinds
src/theory/sets/normal_form.h
src/theory/sets/singleton_op.cpp [new file with mode: 0644]
src/theory/sets/singleton_op.h [new file with mode: 0644]
src/theory/sets/theory_sets_private.cpp
src/theory/sets/theory_sets_rels.cpp
src/theory/sets/theory_sets_rels.h
src/theory/sets/theory_sets_rewriter.cpp
src/theory/sets/theory_sets_type_enumerator.cpp
src/theory/sets/theory_sets_type_rules.h
test/regress/regress0/sets/sets-poly-int-real.smt2
test/unit/theory/CMakeLists.txt
test/unit/theory/theory_bags_type_rules_black.h
test/unit/theory/theory_sets_type_rules_white.h [new file with mode: 0644]