summaryrefslogtreecommitdiffstats
path: root/src/sat/bsat
diff options
context:
space:
mode:
authorAlan Mishchenko <alanmi@berkeley.edu>2015-03-05 23:00:30 -0800
committerAlan Mishchenko <alanmi@berkeley.edu>2015-03-05 23:00:30 -0800
commit6da21b8b884632c901ae10955e23c0c8206e7e58 (patch)
tree29e14c72c7e6e2bf2780268a7ed9390f88b56a5d /src/sat/bsat
parentddc522a0c03ead1f84e45e515105a750f84ff265 (diff)
downloadabc-6da21b8b884632c901ae10955e23c0c8206e7e58.tar.gz
abc-6da21b8b884632c901ae10955e23c0c8206e7e58.tar.bz2
abc-6da21b8b884632c901ae10955e23c0c8206e7e58.zip
Experiments with SAT-based cube enumeration.
Diffstat (limited to 'src/sat/bsat')
-rw-r--r--src/sat/bsat/satSolver.h38
1 files changed, 19 insertions, 19 deletions
diff --git a/src/sat/bsat/satSolver.h b/src/sat/bsat/satSolver.h
index c82879de..ebc555d9 100644
--- a/src/sat/bsat/satSolver.h
+++ b/src/sat/bsat/satSolver.h
@@ -374,53 +374,53 @@ static inline int sat_solver_add_xor( sat_solver * pSat, int iVarA, int iVarB, i
assert( Cid );
return 4;
}
-static inline int sat_solver_add_mux( sat_solver * pSat, int iVarC, int iVarT, int iVarE, int iVarZ )
+static inline int sat_solver_add_mux( sat_solver * pSat, int iVarZ, int iVarC, int iVarT, int iVarE, int iComplC, int iComplT, int iComplE, int iComplZ )
{
lit Lits[3];
int Cid;
assert( iVarC >= 0 && iVarT >= 0 && iVarE >= 0 && iVarZ >= 0 );
- Lits[0] = toLitCond( iVarC, 1 );
- Lits[1] = toLitCond( iVarT, 1 );
+ Lits[0] = toLitCond( iVarC, 1 ^ iComplC );
+ Lits[1] = toLitCond( iVarT, 1 ^ iComplT );
Lits[2] = toLitCond( iVarZ, 0 );
Cid = sat_solver_addclause( pSat, Lits, Lits + 3 );
assert( Cid );
- Lits[0] = toLitCond( iVarC, 1 );
- Lits[1] = toLitCond( iVarT, 0 );
- Lits[2] = toLitCond( iVarZ, 1 );
+ Lits[0] = toLitCond( iVarC, 1 ^ iComplC );
+ Lits[1] = toLitCond( iVarT, 0 ^ iComplT );
+ Lits[2] = toLitCond( iVarZ, 1 ^ iComplZ );
Cid = sat_solver_addclause( pSat, Lits, Lits + 3 );
assert( Cid );
- Lits[0] = toLitCond( iVarC, 0 );
- Lits[1] = toLitCond( iVarE, 1 );
- Lits[2] = toLitCond( iVarZ, 0 );
+ Lits[0] = toLitCond( iVarC, 0 ^ iComplC );
+ Lits[1] = toLitCond( iVarE, 1 ^ iComplE );
+ Lits[2] = toLitCond( iVarZ, 0 ^ iComplZ );
Cid = sat_solver_addclause( pSat, Lits, Lits + 3 );
assert( Cid );
- Lits[0] = toLitCond( iVarC, 0 );
- Lits[1] = toLitCond( iVarE, 0 );
- Lits[2] = toLitCond( iVarZ, 1 );
+ Lits[0] = toLitCond( iVarC, 0 ^ iComplC );
+ Lits[1] = toLitCond( iVarE, 0 ^ iComplE );
+ Lits[2] = toLitCond( iVarZ, 1 ^ iComplZ );
Cid = sat_solver_addclause( pSat, Lits, Lits + 3 );
assert( Cid );
if ( iVarT == iVarE )
return 4;
- Lits[0] = toLitCond( iVarT, 0 );
- Lits[1] = toLitCond( iVarE, 0 );
- Lits[2] = toLitCond( iVarZ, 1 );
+ Lits[0] = toLitCond( iVarT, 0 ^ iComplT );
+ Lits[1] = toLitCond( iVarE, 0 ^ iComplE );
+ Lits[2] = toLitCond( iVarZ, 1 ^ iComplZ );
Cid = sat_solver_addclause( pSat, Lits, Lits + 3 );
assert( Cid );
- Lits[0] = toLitCond( iVarT, 1 );
- Lits[1] = toLitCond( iVarE, 1 );
- Lits[2] = toLitCond( iVarZ, 0 );
+ Lits[0] = toLitCond( iVarT, 1 ^ iComplT );
+ Lits[1] = toLitCond( iVarE, 1 ^ iComplE );
+ Lits[2] = toLitCond( iVarZ, 0 ^ iComplZ );
Cid = sat_solver_addclause( pSat, Lits, Lits + 3 );
assert( Cid );
return 6;
}
-static inline int sat_solver_add_mux41( sat_solver * pSat, int iVarC0, int iVarC1, int iVarD0, int iVarD1, int iVarD2, int iVarD3, int iVarZ )
+static inline int sat_solver_add_mux41( sat_solver * pSat, int iVarZ, int iVarC0, int iVarC1, int iVarD0, int iVarD1, int iVarD2, int iVarD3 )
{
lit Lits[4];
int Cid;