Split term registry from theory state in sets (#5037)
authorAndrew Reynolds <andrew.j.reynolds@gmail.com>
Wed, 9 Sep 2020 01:36:08 +0000 (20:36 -0500)
committerGitHub <noreply@github.com>
Wed, 9 Sep 2020 01:36:08 +0000 (20:36 -0500)
commit1d3bb6048085342e2d85bf5193367afcd96885fa
treeb09c504cf13862f6286133130063bcfb57050556
parent2786ba1efc7d420b5eda5389edffe72b676de32b
Split term registry from theory state in sets (#5037)

Currently, the theory state object SolverState in sets sends lemmas and has a reference to the parent theory. This PR is work towards eliminating these dependencies.

This adds a TermRegistry object which is responsible for some of the tasks currently done by SolverState, including all those involving lemmas.

Notice this also makes a bug fix in getUnivSetEqClass where the universe set was being returned instead of its representative.

A followup PR will make SolverState maintain SAT-context-dependent membership lists which is also required for breaking the dependence on the parent theory.
13 files changed:
src/CMakeLists.txt
src/theory/sets/cardinality_extension.cpp
src/theory/sets/cardinality_extension.h
src/theory/sets/solver_state.cpp
src/theory/sets/solver_state.h
src/theory/sets/term_registry.cpp [new file with mode: 0644]
src/theory/sets/term_registry.h [new file with mode: 0644]
src/theory/sets/theory_sets.cpp
src/theory/sets/theory_sets.h
src/theory/sets/theory_sets_private.cpp
src/theory/sets/theory_sets_private.h
src/theory/sets/theory_sets_rels.cpp
src/theory/sets/theory_sets_rels.h