summaryrefslogtreecommitdiff
path: root/src/smt/model_blocker.h
diff options
context:
space:
mode:
authorajreynol <andrew.j.reynolds@gmail.com>2019-06-06 09:31:09 -0500
committerajreynol <andrew.j.reynolds@gmail.com>2019-06-06 09:31:09 -0500
commit4973f8d26b47ae8f67c150d7480977578fce8960 (patch)
treeac4eb066af84128d2080bab5aa77d9ae8b9b3ebd /src/smt/model_blocker.h
parent7e7ff7814e65721f955c23d8eca953cb3f0f5ad8 (diff)
Bug fix, doc
Diffstat (limited to 'src/smt/model_blocker.h')
-rw-r--r--src/smt/model_blocker.h13
1 files changed, 12 insertions, 1 deletions
diff --git a/src/smt/model_blocker.h b/src/smt/model_blocker.h
index cc667fbf0..ce80d2144 100644
--- a/src/smt/model_blocker.h
+++ b/src/smt/model_blocker.h
@@ -36,7 +36,18 @@ class ModelBlocker
* This returns a disjunction of literals ~L1 V ... V ~Ln with the following
* properties:
* (1) L1 ... Ln hold in the current model (given by argument m),
- * (2) L1 ... Ln are literals that occur in assertions.
+ * (2) L1 ... Ln are literals that occur in assertions and propositionally
+ * entail all non-unit top-level assertions.
+ *
+ * For example, if our input is:
+ * x > 0 ^ ( y < 0 V z < 0 V w < 0 )
+ * and m is { x -> 1, y -> 2, z -> -1, w -> -1 }, then this method may
+ * return ~(z < 0) or ~(w < 0).
+ *
+ * Notice that we do not require that L1...Ln entail unit top-level assertions
+ * since these literals are trivially entailed to be true in all models of
+ * our input. In other words, we do not return ~(x < 0) V ~(w < 0) since the
+ * left disjunct is always false.
*/
static Expr getModelBlocker(const std::vector<Expr>& assertions, Model* m);
}; /* class TheoryModelCoreBuilder */
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback