Add the buffered inference manager (#4954)
authorAndrew Reynolds <andrew.j.reynolds@gmail.com>
Fri, 28 Aug 2020 02:24:16 +0000 (21:24 -0500)
committerGitHub <noreply@github.com>
Fri, 28 Aug 2020 02:24:16 +0000 (21:24 -0500)
commita0a969d7d65a778f2230ee920339541fdf380234
tree2e8a3436a36a487f97b3bc75e473a68259fb145b
parent31f2135ad14b12e2ee9a24f5ca0da06cf5ed7b92
Add the buffered inference manager (#4954)

This class implements a highly common pattern of buffering facts and lemmas to send on the output channel. It is planned that the inference managers of strings, sets, datatypes, (non-linear) arithmetic, sep, quantifiers will inherit from this class.

This PR adds basic calls to add lemmas on the output channel from InferenceManager.

It introduces a Lemma virtual class which arith::nl::NlLemma and strings::InferInfo will inherit from.

This is required to begin refactoring a flexible configurable strategy for non-linear arithmetic, and will make it easier to further develop towards a configurable approach for theory combination.
src/CMakeLists.txt
src/theory/inference_manager_buffered.cpp [new file with mode: 0644]
src/theory/inference_manager_buffered.h [new file with mode: 0644]
src/theory/theory_inference_manager.cpp
src/theory/theory_inference_manager.h