Commit be95437d by Alan Mishchenko

Debugging a proof error.

parent f54bf25d
...@@ -396,13 +396,13 @@ int Sat_ProofReduce( Vec_Set_t * vProof, void * pRoots, int hProofPivot ) ...@@ -396,13 +396,13 @@ int Sat_ProofReduce( Vec_Set_t * vProof, void * pRoots, int hProofPivot )
if ( pNode->Id == 0 ) if ( pNode->Id == 0 )
continue; continue;
pNode->Id = Vec_SetAppendS( vProof, 2 + pNode->nEnts ); pNode->Id = Vec_SetAppendS( vProof, 2 + pNode->nEnts );
assert( pNode->Id > 0 ); assert( pNode->Id > 1 );
Vec_PtrPush( vUsed, pNode ); Vec_PtrPush( vUsed, pNode );
// update fanins // update fanins
Proof_NodeForeachFanin( vProof, pNode, pFanin, k ) Proof_NodeForeachFanin( vProof, pNode, pFanin, k )
if ( (pNode->pEnts[k] & 1) == 0 ) // proof node if ( (pNode->pEnts[k] & 1) == 0 ) // proof node
{ {
assert( pFanin->Id > 0 ); assert( pFanin->Id > 1 );
pNode->pEnts[k] = (pFanin->Id << 2) | (pNode->pEnts[k] & 2); pNode->pEnts[k] = (pFanin->Id << 2) | (pNode->pEnts[k] & 2);
} }
// else // problem clause // else // problem clause
...@@ -410,7 +410,10 @@ int Sat_ProofReduce( Vec_Set_t * vProof, void * pRoots, int hProofPivot ) ...@@ -410,7 +410,10 @@ int Sat_ProofReduce( Vec_Set_t * vProof, void * pRoots, int hProofPivot )
} }
// update roots // update roots
Proof_ForeachNodeVec1( vRoots, vProof, pNode, i ) Proof_ForeachNodeVec1( vRoots, vProof, pNode, i )
{
assert( pNode->Id > 1 );
Vec_IntWriteEntry( vRoots, i, pNode->Id ); Vec_IntWriteEntry( vRoots, i, pNode->Id );
}
// determine new pivot // determine new pivot
assert( hProofPivot >= 1 && hProofPivot <= Vec_SetHandCurrent(vProof) ); assert( hProofPivot >= 1 && hProofPivot <= Vec_SetHandCurrent(vProof) );
pPivot = Proof_NodeRead( vProof, hProofPivot ); pPivot = Proof_NodeRead( vProof, hProofPivot );
...@@ -420,6 +423,7 @@ int Sat_ProofReduce( Vec_Set_t * vProof, void * pRoots, int hProofPivot ) ...@@ -420,6 +423,7 @@ int Sat_ProofReduce( Vec_Set_t * vProof, void * pRoots, int hProofPivot )
Vec_PtrForEachEntry( satset *, vUsed, pNode, i ) Vec_PtrForEachEntry( satset *, vUsed, pNode, i )
{ {
hTemp = pNode->Id; pNode->Id = 0; hTemp = pNode->Id; pNode->Id = 0;
assert( hTemp > 1 );
memmove( Vec_SetEntry(vProof, hTemp), pNode, sizeof(word)*Proof_NodeWordNum(pNode->nEnts) ); memmove( Vec_SetEntry(vProof, hTemp), pNode, sizeof(word)*Proof_NodeWordNum(pNode->nEnts) );
if ( pPivot && pPivot <= pNode ) if ( pPivot && pPivot <= pNode )
{ {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment