75 Vec_Int_t * vResult = Vec_VecEntry( vClauses, Result );
76 Vec_Int_t * vClause1 = Vec_VecEntry( vClauses, Clause1 );
77 Vec_Int_t * vClause2 = Vec_VecEntry( vClauses, Clause2 );
78 int Entry1, Entry2, ResVar;
79 int i, j, Counter = 0;
83 if ( Entry1 == -Entry2 )
90 printf(
"Error: Clause %d = Resolve(%d, %d): The number of pivot vars is %d.\n",
91 Result, Clause1, Clause2, Counter );
97 assert( Vec_IntSize(vResult) == 0 );
99 if ( Entry1 != ResVar && Entry1 != -ResVar )
100 Vec_IntPushUnique( vResult, Entry1 );
101 assert( Vec_IntSize(vResult) + 1 == Vec_IntSize(vClause1) );
103 if ( Entry2 != ResVar && Entry2 != -ResVar )
104 Vec_IntPushUnique( vResult, Entry2 );
123 int c, i, Num, RetValue, Counter, Counter2, Clause1, Clause2;
126 pFile = fopen( pFileName,
"r" );
130 Counter = Counter2 = 0;
131 while ( (c = fgetc(pFile)) != EOF )
133 Counter += (c ==
'\n');
134 Counter2 += (c ==
'*');
136 vClauses = Vec_VecStart( Counter+1 );
137 printf(
"The proof contains %d roots and %d resolution steps.\n", Counter-Counter2, Counter2 );
140 for ( i = 1 ; ; i++ )
142 RetValue = RetValue = fscanf( pFile,
"%d", &Num );
146 while ( (c = fgetc( pFile )) ==
' ' );
149 RetValue = fscanf( pFile,
"%d %d", &Clause1, &Clause2 );
151 RetValue = fscanf( pFile,
"%d", &Num );
156 printf(
"Error detected in the resolution proof.\n" );
157 Vec_VecFree( vClauses );
167 RetValue = fscanf( pFile,
"%d", &Num );
171 Vec_VecPush( vClauses, i, (
void *)Num );
173 RetValue = fscanf( pFile,
"%d", &Num );
179 if ( Vec_IntSize( Vec_VecEntry(vClauses, Counter) ) != 0 )
180 printf(
"The last clause is not empty.\n" );
182 printf(
"The empty clause is derived.\n" );
183 Vec_VecFree( vClauses );