Go to the source code of this file.
◆ Sim_SymmsGetPatternUsingSat()
| int Sim_SymmsGetPatternUsingSat |
( |
Sym_Man_t * | p, |
|
|
unsigned * | pPattern ) |
FUNCTION DEFINITIONS ///.
Function*************************************************************
Synopsis [Tries to prove the remaining pairs using SAT.]
Description [Continues to prove as long as it encounters symmetric pairs. Returns 1 if a non-symmetric pair is found (which gives a counter-example). Returns 0 if it finishes considering all pairs for all outputs.]
SideEffects []
SeeAlso []
Definition at line 51 of file simSymSat.c.
52{
55 int Index1, Index2, Index3, IndexU, IndexV;
56 int v, u, i, k, b, out;
57
58
59 for ( out =
p->iOutput; out < p->nOutputs; out++ )
60 {
63
64
65 vSupport = Vec_VecEntryInt(
p->vSupports, out );
68 {
70 continue;
72
73
74 Vec_IntClear(
p->vVarsU );
75 Vec_IntClear(
p->vVarsV );
77 {
79 Vec_IntPush(
p->vVarsU, b );
81 Vec_IntPush(
p->vVarsV, b );
82 }
83
84 if ( Sim_SymmsSatProveOne(
p, out, v, u, pPattern ) )
85 {
89 {
93 }
94 }
95 else
96 {
100 {
103 }
104
105
107 p->iVar1Old =
p->iVar1;
108 p->iVar2Old =
p->iVar2;
111 return 1;
112
113 }
114 }
115
117 }
118
119
120 p->iOutput =
p->nOutputs;
121 return 0;
122}
typedefABC_NAMESPACE_IMPL_START struct Vec_Int_t_ Vec_Int_t
DECLARATIONS ///.
#define Vec_IntForEachEntry(vVec, Entry, i)
MACRO DEFINITIONS ///.
#define Vec_IntForEachEntryStart(vVec, Entry, i, Start)