Migrate basic EqualityEngine management from CongruenceManager to EqSolver (#8684)
authorAndrew Reynolds <andrew.j.reynolds@gmail.com>
Tue, 3 May 2022 00:23:04 +0000 (19:23 -0500)
committerGitHub <noreply@github.com>
Tue, 3 May 2022 00:23:04 +0000 (00:23 +0000)
commit9a7f4cfbc05782b53cbff450e863247f183bba6c
treee0a53c08dda78ba333897440c82a9c13f4d6dc7b
parent4617392aad80921f49c4eb3f62a06e8ad5c710ab
Migrate basic EqualityEngine management from CongruenceManager to EqSolver (#8684)

This is work towards having the linear arithmetic solver not impose restrictions on equalities.

The linear arithmetic solver using a CongruenceManager which involves many non-standard uses of the equality engine.

The responsibilities of the CongruenceManager should be migrated to the arithmetic EqSolver, which manages the equality engine in the default way.

This PR is the first step. It makes it so that the memory management and notifications of the equality engine are now solely the responsibility of the EqSolver.

All relevant notifications from the EqSolver are directly forwarded to CongruenceManager. Thus there are no significant behavior changes in this PR.

This PR required removing the experimental option arithCongMan, which forces having the CongruenceManager and the EqSolver both use equality engines.
src/options/arith_options.toml
src/smt/set_defaults.cpp
src/theory/arith/equality_solver.cpp
src/theory/arith/equality_solver.h
src/theory/arith/linear/congruence_manager.cpp
src/theory/arith/linear/congruence_manager.h
src/theory/arith/linear/theory_arith_private.cpp
src/theory/arith/linear/theory_arith_private.h
src/theory/arith/theory_arith.cpp