summaryrefslogtreecommitdiffstats
path: root/src/sat/bsat
diff options
context:
space:
mode:
authorAlan Mishchenko <alanmi@berkeley.edu>2013-10-31 13:07:43 -0400
committerAlan Mishchenko <alanmi@berkeley.edu>2013-10-31 13:07:43 -0400
commitf620a857d36343b2e475e3b60537fa56fee4d65c (patch)
treeec4c7d4ee92a132a67bdd4125a1356254edae88e /src/sat/bsat
parenta457bfe1e580f646f1e02a1a1a00cde1e157353d (diff)
downloadabc-f620a857d36343b2e475e3b60537fa56fee4d65c.tar.gz
abc-f620a857d36343b2e475e3b60537fa56fee4d65c.tar.bz2
abc-f620a857d36343b2e475e3b60537fa56fee4d65c.zip
Specialized induction check.
Diffstat (limited to 'src/sat/bsat')
-rw-r--r--src/sat/bsat/satSolver.h19
1 files changed, 19 insertions, 0 deletions
diff --git a/src/sat/bsat/satSolver.h b/src/sat/bsat/satSolver.h
index 81202179..087bef8c 100644
--- a/src/sat/bsat/satSolver.h
+++ b/src/sat/bsat/satSolver.h
@@ -296,6 +296,25 @@ static inline int sat_solver_add_buffer( sat_solver * pSat, int iVarA, int iVarB
assert( Cid );
return 2;
}
+static inline int sat_solver_add_buffer_enable( sat_solver * pSat, int iVarA, int iVarB, int iVarEn, int fCompl )
+{
+ lit Lits[3];
+ int Cid;
+ assert( iVarA >= 0 && iVarB >= 0 && iVarEn >= 0 );
+
+ Lits[0] = toLitCond( iVarA, 0 );
+ Lits[1] = toLitCond( iVarB, !fCompl );
+ Lits[2] = toLitCond( iVarEn, 1 );
+ Cid = sat_solver_addclause( pSat, Lits, Lits + 3 );
+ assert( Cid );
+
+ Lits[0] = toLitCond( iVarA, 1 );
+ Lits[1] = toLitCond( iVarB, fCompl );
+ Lits[2] = toLitCond( iVarEn, 1 );
+ Cid = sat_solver_addclause( pSat, Lits, Lits + 3 );
+ assert( Cid );
+ return 2;
+}
static inline int sat_solver_add_and( sat_solver * pSat, int iVar, int iVar0, int iVar1, int fCompl0, int fCompl1 )
{
lit Lits[3];