git-svn-id: https://stp-fast-prover.svn.sourceforge.net/svnroot/stp-fast-prover/trunk/stp@900
e59a4935-1847-0410-ae03-
e826735625c1
return output;
}
+ if (XOR == k)
+ {
+ if (a.Degree() !=2)
+ return output;
+
+ int to = TermOrder(a[0],a[1]);
+ if (0 == to)
+ return output;
+
+ ASTNode symbol,rhs;
+ if (to==1)
+ {
+ symbol = a[0];
+ rhs = a[1];
+ }
+ else
+ {
+ symbol = a[0];
+ rhs = a[1];
+ }
+
+ assert(symbol.GetKind() == SYMBOL);
+
+ // If either side is already solved for.
+ if (CheckSubstitutionMap(symbol) || CheckSubstitutionMap(rhs))
+ return output;
+
+ (*SolverMap)[symbol] = bm->CreateNode(NOT,rhs);
+ return ASTTrue;
+ }
+
+
if (AND == k)
{
ASTVec o;
stp --simplifying-minisat --output-CNF $f
cnf=`cat output_*.cnf | wc -l`
if [ $cnf -gt 3 ] ; then
+ echo --fail
exit 10
fi
--- /dev/null
+
+(set-logic QF_BV)
+(set-info :smt-lib-version 2.0)
+(set-info :category "check")
+(set-info :status sat)
+(declare-fun v0 () Bool )
+(declare-fun v1 () Bool )
+(declare-fun v2 () Bool )
+
+; This should be simplifed to v_0 <=> -v_1 before bitblasing.
+(assert (xor v0 v1))
+
+(check-sat)
+(exit)
+
+