3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-07-19 10:52:02 +00:00

tested network sorting

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
Nikolaj Bjorner 2013-11-07 10:47:12 -08:00
parent 31e2d823c9
commit c57594d463
3 changed files with 140 additions and 42 deletions

View file

@ -15,11 +15,29 @@ Author:
Notes:
- count number of clauses per cardinality constraint.
- when number of conflicts exceeds n^2 or n*log(n), then create a sorting circuit.
where n is the arity of the cardinality constraint.
- extra: do clauses get re-created? keep track of gc status of created clauses.
- Uses cutting plane simplification on 'k' for repeated literals.
In other words, if the gcd of the multiplicity of literals in c3
is g, then divide through by g and truncate k.
Example:
((_ at-most 3) x1 x1 x2 x2) == ((_ at-most 1) x1 x2)
- count number of clauses per cardinality constraint.
- TBD: when number of conflicts exceeds n^2 or n*log(n),
then create a sorting circuit.
where n is the arity of the cardinality constraint.
- TBD: do clauses get re-created? keep track of gc
status of created clauses.
- TBD: add conflict resolution
The idea is that if cardinality constraints c1, c2
are repeatedly asserted together, then
resolve them into combined cardinality constraint c3
c1 /\ c2 -> c3
--*/
#include "theory_card.h"