| 3568 | } |
| 3569 | |
| 3570 | bool Engine::explainAndCheckContradiction( unsigned var, bool isUpper, const TableauRow *row ) |
| 3571 | { |
| 3572 | ASSERT( _produceUNSATProofs ); |
| 3573 | |
| 3574 | SparseUnsortedList backup( 0 ); |
| 3575 | backup = _boundManager.getExplanation( var, isUpper ); |
| 3576 | |
| 3577 | _boundManager.updateBoundExplanation( *row, isUpper, var ); |
| 3578 | |
| 3579 | // Ensure the proof is correct |
| 3580 | if ( certifyInfeasibility( var ) ) |
| 3581 | return true; |
| 3582 | |
| 3583 | // If not, restores previous certificate if the proof is wrong |
| 3584 | _boundManager.setExplanation( backup, var, isUpper ); |
| 3585 | |
| 3586 | return false; |
| 3587 | } |
| 3588 | |
| 3589 | bool Engine::explainAndCheckContradiction( unsigned var, |
| 3590 | bool isUpper, |
nothing calls this directly
no test coverage detected