summaryrefslogtreecommitdiff
path: root/src/theory/strings/inference_manager.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/theory/strings/inference_manager.h')
-rw-r--r--src/theory/strings/inference_manager.h31
1 files changed, 30 insertions, 1 deletions
diff --git a/src/theory/strings/inference_manager.h b/src/theory/strings/inference_manager.h
index 50cfdb6fb..c9d483c73 100644
--- a/src/theory/strings/inference_manager.h
+++ b/src/theory/strings/inference_manager.h
@@ -25,6 +25,7 @@
#include "expr/node.h"
#include "theory/output_channel.h"
#include "theory/strings/infer_info.h"
+#include "theory/strings/sequences_stats.h"
#include "theory/strings/skolem_cache.h"
#include "theory/strings/solver_state.h"
#include "theory/uf/equality_engine.h"
@@ -76,7 +77,8 @@ class InferenceManager
context::UserContext* u,
SolverState& s,
SkolemCache& skc,
- OutputChannel& out);
+ OutputChannel& out,
+ SequencesStatistics& statistics);
~InferenceManager() {}
/** send internal inferences
@@ -141,6 +143,28 @@ class InferenceManager
Node eq,
const char* c,
bool asLemma = false);
+
+ /**
+ * The same as `sendInference()` above but with an `Inference` instead of a
+ * string. This variant updates the statistics about the number of inferences
+ * made of each type.
+ */
+ void sendInference(const std::vector<Node>& exp,
+ const std::vector<Node>& exp_n,
+ Node eq,
+ Inference infer,
+ bool asLemma = false);
+
+ /**
+ * The same as `sendInference()` above but with an `Inference` instead of a
+ * string. This variant updates the statistics about the number of inferences
+ * made of each type.
+ */
+ void sendInference(const std::vector<Node>& exp,
+ Node eq,
+ Inference infer,
+ bool asLemma = false);
+
/** Send inference
*
* Makes the appropriate call to send inference based on the infer info
@@ -327,6 +351,10 @@ class InferenceManager
* This is a reference to the output channel of the theory of strings.
*/
OutputChannel& d_out;
+
+ /** Reference to the statistics for the theory of strings/sequences. */
+ SequencesStatistics& d_statistics;
+
/** Common constants */
Node d_emptyString;
Node d_true;
@@ -366,6 +394,7 @@ class InferenceManager
NodeNodeMap d_proxyVarToLength;
/** List of terms that we have register length for */
NodeSet d_lengthLemmaTermsCache;
+
/** infer substitution proxy vars
*
* This method attempts to (partially) convert the formula n into a
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback