MCPcopy Create free account
hub / github.com/NeuralNetworkVerification/Marabou / certifyInfeasibility

Method certifyInfeasibility

src/engine/Engine.cpp:3378–3406  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

3376}
3377
3378bool Engine::certifyInfeasibility( unsigned var ) const
3379{
3380 ASSERT( _produceUNSATProofs );
3381
3382 Vector<double> contradiction = computeContradiction( var );
3383
3384 if ( contradiction.empty() )
3385 return FloatUtils::isNegative( _groundBoundManager.getUpperBound( var ) -
3386 _groundBoundManager.getLowerBound( var ) );
3387
3388 SparseUnsortedList sparseContradiction = SparseUnsortedList();
3389
3390 contradiction.empty()
3391 ? sparseContradiction.initializeToEmpty()
3392 : sparseContradiction.initialize( contradiction.data(), contradiction.size() );
3393
3394 // In case contradiction is a vector of zeros
3395 if ( sparseContradiction.empty() )
3396 return FloatUtils::isNegative( _groundBoundManager.getUpperBound( var ) -
3397 _groundBoundManager.getLowerBound( var ) );
3398
3399 double derivedBound =
3400 UNSATCertificateUtils::computeCombinationUpperBound( sparseContradiction,
3401 _tableau->getSparseA(),
3402 _groundBoundManager.getUpperBounds(),
3403 _groundBoundManager.getLowerBounds(),
3404 _tableau->getN() );
3405 return FloatUtils::isNegative( derivedBound );
3406}
3407
3408double Engine::explainBound( unsigned var, bool isUpper ) const
3409{

Callers

nothing calls this directly

Calls 12

SparseUnsortedListClass · 0.70
emptyMethod · 0.45
getUpperBoundMethod · 0.45
getLowerBoundMethod · 0.45
initializeToEmptyMethod · 0.45
initializeMethod · 0.45
dataMethod · 0.45
sizeMethod · 0.45
getSparseAMethod · 0.45
getUpperBoundsMethod · 0.45
getLowerBoundsMethod · 0.45
getNMethod · 0.45

Tested by

no test coverage detected