Skip to content
Open
Show file tree
Hide file tree
Changes from 72 commits
Commits
Show all changes
80 commits
Select commit Hold shift + click to select a range
e00d517
Add files via upload
ido-shm-uel Oct 1, 2024
04cc0b1
Revert last change.
ido-shm-uel Oct 1, 2024
80be6dc
Added assginment, store-into-other NLR tests for every activation fun…
ido-shm-uel Oct 1, 2024
9fbca7b
Add files via upload
ido-shm-uel Oct 1, 2024
f7aee6d
Add files via upload
ido-shm-uel Oct 1, 2024
33f5d5f
Add files via upload
ido-shm-uel Oct 1, 2024
6d1c898
Add files via upload
ido-shm-uel Oct 1, 2024
ee5dd00
0-4-0: Implementing symbolic bound tightening for every activation fu…
ido-shm-uel Oct 1, 2024
85fe8f3
0-4-1: Adding symbolic bound tightening tests for all activation func…
ido-shm-uel Oct 1, 2024
32d7c52
0-5-0: Adding rounding constant for LP relaxation propagation.
ido-shm-uel Oct 1, 2024
5a7c5d8
0-5-1: Implementing forward-backward LP propagation algorithm for all…
ido-shm-uel Oct 1, 2024
79f7a84
0-5-2: Adding forward-backward LP propagation tests for all activatio…
ido-shm-uel Oct 1, 2024
9ee7609
0-6-0: Adding MILP bound types for two backpropagation of bounds algo…
ido-shm-uel Oct 1, 2024
2d9b85a
0-6-1: Adjusting in Options for two new MILP Bound types.
ido-shm-uel Oct 1, 2024
f5c7d1c
0-6-2: Introducing Polygonal Tightenings (output type of two new algo…
ido-shm-uel Oct 1, 2024
b363d05
0-6-3: Adjusting in NLR, LayerOwner for Polygonal Tightenings.
ido-shm-uel Oct 1, 2024
7993b1e
0-6-4: Introducing parameterised bounds in LPFormulator (two new algo…
ido-shm-uel Oct 1, 2024
c888160
0-6-5: Current state of PreimageApproximation + cleanup + corrections.
ido-shm-uel Oct 10, 2024
cd5f2de
0-6-6: New constants for PreimageApproximation (random seeds).
ido-shm-uel Oct 10, 2024
d86c0a3
0-6-7: TEMPORARY CHANGE - use boost v1.85 for Differential Evolution …
ido-shm-uel Oct 10, 2024
4467e09
0-6-8: Revert last change.
ido-shm-uel Oct 14, 2024
88e339a
0-6-9: Adapt DifferentialEvolution from Boost v1.85.
ido-shm-uel Oct 14, 2024
8031a41
0-6-10: Current state of PreimageApproximation (EstimateVolume implem…
ido-shm-uel Oct 14, 2024
dd584e7
0-6-11: Add constants for PreimageApproximation.
ido-shm-uel Oct 24, 2024
cd52524
0-6-12: Current state of PreimageApproximation (implement coordinate …
ido-shm-uel Oct 24, 2024
b719359
0-6-13: Timing PreimageApproximation with coordinate descent (very sl…
ido-shm-uel Oct 24, 2024
f29ccf0
0-6-14: Small Fix (same as 0-5---4).
ido-shm-uel Nov 6, 2024
3ee6903
Merge pull request #1 from NeuralNetworkVerification/master
ido-shm-uel Dec 5, 2024
0069af2
0-6--14: Current progress in PreimageApproximation (0-5--6 fixes, opt…
ido-shm-uel Dec 12, 2024
22f0eaa
Delete src/nlr/PolygonalTightening.h
ido-shm-uel Dec 12, 2024
24f2be1
Delete src/nlr/Test_NetworkLevelReasoner.h
ido-shm-uel Dec 12, 2024
8d0bf19
Delete src/nlr/GlobalConfiguration.h
ido-shm-uel Dec 12, 2024
81e28b7
Delete src/nlr/GlobalConfiguration.cpp
ido-shm-uel Dec 12, 2024
dea156a
Delete src/nlr/Engine.cpp
ido-shm-uel Dec 12, 2024
0d51b8a
Add files via upload
ido-shm-uel Dec 12, 2024
32474bc
Add files via upload
ido-shm-uel Dec 12, 2024
625a5b8
Add files via upload
ido-shm-uel Dec 12, 2024
745cc95
Add files via upload
ido-shm-uel Jan 9, 2025
2d77fb9
Delete src/nlr/GlobalConfiguration.cpp
ido-shm-uel Jan 9, 2025
304efac
Delete src/nlr/GlobalConfiguration.h
ido-shm-uel Jan 9, 2025
35cbdf5
Add files via upload
ido-shm-uel Jan 9, 2025
927302e
Add files via upload
ido-shm-uel Jan 9, 2025
73ce343
Add files via upload
ido-shm-uel Jan 9, 2025
714b4e4
Add files via upload
ido-shm-uel Jan 9, 2025
061bb57
Add files via upload
ido-shm-uel Jan 16, 2025
7d4a5a4
Add files via upload
ido-shm-uel Jan 16, 2025
9dd56fd
Merge pull request #2 from NeuralNetworkVerification/master
ido-shm-uel Feb 3, 2025
03a74a7
Delete src/nlr/AdamOptimizer.h
ido-shm-uel Feb 3, 2025
6ac31b9
Delete src/nlr/CoordinateDescent.h
ido-shm-uel Feb 3, 2025
756ca41
Delete src/nlr/DifferentialEvolution.h
ido-shm-uel Feb 3, 2025
5a3a72a
Delete src/nlr/GradientDescent.h
ido-shm-uel Feb 3, 2025
b093dac
Delete src/nlr/MILPSolverBoundTighteningType.h
ido-shm-uel Feb 3, 2025
bf8513b
Add files via upload
ido-shm-uel Feb 3, 2025
3b2fe08
Add files via upload
ido-shm-uel Feb 3, 2025
20c3577
Add files via upload
ido-shm-uel Feb 3, 2025
570eae8
Add files via upload
ido-shm-uel Feb 3, 2025
7696156
Update GlobalConfiguration.cpp
ido-shm-uel Feb 5, 2025
2c6aba8
Update CHANGELOG.md
ido-shm-uel Feb 6, 2025
2894e4f
Update OptionParser.cpp
ido-shm-uel Feb 6, 2025
5f7a24f
smal fix for bug in SumOfInfeasibilitiesManager::proposePhasePatternU…
idan0610 Feb 15, 2025
e7618fb
Sync Fork.
ido-shm-uel Feb 20, 2025
0884a78
Add files via upload
ido-shm-uel Feb 20, 2025
40f2fe2
Add files via upload
ido-shm-uel Feb 20, 2025
a95e3a1
Add files via upload
ido-shm-uel Feb 20, 2025
f7adf2b
Add files via upload
ido-shm-uel Feb 20, 2025
6e34c3f
Merge pull request #7 from idan0610/fix_soi_proposal_bug
ido-shm-uel Feb 20, 2025
c74870e
Vector<double> &coeffs passed by refrence, removed PolygonalTightening.
ido-shm-uel Feb 26, 2025
a226133
Sync Fork.
ido-shm-uel Feb 27, 2025
eb0e58f
.
ido-shm-uel Feb 27, 2025
2df9d58
.
ido-shm-uel Feb 27, 2025
eafa24c
Corrections to PreimageApproximation, parameterizes SBT.
ido-shm-uel Mar 13, 2025
b1711aa
Remove redundant setAlpha in ReLU NLR unit tests.
ido-shm-uel Mar 26, 2025
9304f52
Merge pull request #14 from NeuralNetworkVerification/master
ido-shm-uel Sep 17, 2025
f48b050
Correcting SBT, LP for Sigmoid, Bilinear, Softmax.
ido-shm-uel Sep 17, 2025
96dd1e9
Corrected Test_NLR.h, Test_LPRelaxation.h.
ido-shm-uel Sep 17, 2025
c98a278
Further fixing for Max, Softmax, Bilinear IA/SBT
ido-shm-uel Sep 18, 2025
29bfda9
Clang-Format
ido-shm-uel Sep 18, 2025
8fcd8b0
Manually Sync Fork: Towards Proof Minimization (#889).
ido-shm-uel Oct 16, 2025
ad41336
Fix merge conflict.
ido-shm-uel Oct 16, 2025
d150c12
Merge pull request #17 from ido-shm-uel/Preimage-Approximation-SBT-LP…
ido-shm-uel Oct 20, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
- Dropped support for parsing Tensorflow network format. Newest Marabou version that supports Tensorflow is at commit 190555573e4702.
- Fixed bug in the parsing of `transpose` nodes in command line C++ parser.
- Implemented forward-backward abstract interpretation, symbolic bound tightening, interval arithmetic and simulations for all activation functions.
- Implemented backward analysis using preimage-approximation algorithm for `Relu`, `LeakyRelu`, `Sign` and `Bilinear` Layers.
- Added the BaBSR heuristic as a new branching strategy for ReLU Splitting

## Version 2.0.0
Expand Down
7 changes: 7 additions & 0 deletions src/configuration/GlobalConfiguration.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,13 @@ const unsigned GlobalConfiguration::ROW_BOUND_TIGHTENER_SATURATION_ITERATIONS =
const double GlobalConfiguration::COST_FUNCTION_ERROR_THRESHOLD = 0.0000000001;

const unsigned GlobalConfiguration::SIMULATION_RANDOM_SEED = 1;
const unsigned GlobalConfiguration::VOLUME_ESTIMATION_RANDOM_SEED = 1;
const unsigned GlobalConfiguration::PREIMAGE_APPROXIMATION_OPTIMIZATION_RANDOM_SEED = 1;
const unsigned GlobalConfiguration::VOLUME_ESTIMATION_ITERATIONS = 25000;
const unsigned GlobalConfiguration::PREIMAGE_APPROXIMATION_OPTIMIZATION_MAX_ITERATIONS = 25;
const double GlobalConfiguration::PREIMAGE_APPROXIMATION_OPTIMIZATION_STEP_SIZE = 0.025;
const double GlobalConfiguration::PREIMAGE_APPROXIMATION_OPTIMIZATION_LEARNING_RATE = 0.25;
const double GlobalConfiguration::PREIMAGE_APPROXIMATION_OPTIMIZATION_WEIGHT_DECAY = 0;

const bool GlobalConfiguration::USE_HARRIS_RATIO_TEST = true;

Expand Down
21 changes: 21 additions & 0 deletions src/configuration/GlobalConfiguration.h
Original file line number Diff line number Diff line change
Expand Up @@ -151,6 +151,27 @@ class GlobalConfiguration
// Random seed for generating simulation values.
static const unsigned SIMULATION_RANDOM_SEED;

// Random seed for EstimateVolume procedure (PreimageApproximation).
static const unsigned VOLUME_ESTIMATION_RANDOM_SEED;

// Number of iterations for EstimateVolume procedure (PreimageApproximation).
static const unsigned VOLUME_ESTIMATION_ITERATIONS;

// Random seed for PreimageApproximation optimization.
static const unsigned PREIMAGE_APPROXIMATION_OPTIMIZATION_RANDOM_SEED;

// Maximum iterations for PreimageApproximation optimization.
static const unsigned PREIMAGE_APPROXIMATION_OPTIMIZATION_MAX_ITERATIONS;

// Step size for PreimageApproximation optimization.
static const double PREIMAGE_APPROXIMATION_OPTIMIZATION_STEP_SIZE;

// Learning rate for PreimageApproximation optimization.
static const double PREIMAGE_APPROXIMATION_OPTIMIZATION_LEARNING_RATE;

// Weight decay for PreimageApproximation optimization.
static const double PREIMAGE_APPROXIMATION_OPTIMIZATION_WEIGHT_DECAY;

// How often should projected steepest edge reset the reference space?
static const unsigned PSE_ITERATIONS_BEFORE_RESET;

Expand Down
3 changes: 2 additions & 1 deletion src/configuration/OptionParser.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -267,7 +267,8 @@ void OptionParser::initialize()
&( ( *_stringOptions )[Options::MILP_SOLVER_BOUND_TIGHTENING_TYPE] ) )
->default_value( ( *_stringOptions )[Options::MILP_SOLVER_BOUND_TIGHTENING_TYPE] ),
"The MILP solver bound tightening type: "
"lp/backward-once/backward-converge/lp-inc/milp/milp-inc/iter-prop/none." )
"lp/backward-once/backward-converge/backward-preimage-approx/lp-inc/milp/milp-inc/"
"iter-prop/none." )
#endif
;

Expand Down
2 changes: 2 additions & 0 deletions src/configuration/Options.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -209,6 +209,8 @@ MILPSolverBoundTighteningType Options::getMILPSolverBoundTighteningType() const
return MILPSolverBoundTighteningType::BACKWARD_ANALYSIS_ONCE;
if ( strategyString == "backward-converge" )
return MILPSolverBoundTighteningType::BACKWARD_ANALYSIS_CONVERGE;
if ( strategyString == "backward-preimage-approx" )
return MILPSolverBoundTighteningType::BACKWARD_ANALYSIS_PREIMAGE_APPROX;
else if ( strategyString == "milp" )
return MILPSolverBoundTighteningType::MILP_ENCODING;
else if ( strategyString == "milp-inc" )
Expand Down
13 changes: 12 additions & 1 deletion src/engine/Engine.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1594,6 +1594,7 @@ void Engine::performMILPSolverBoundedTightening( Query *inputQuery )
case MILPSolverBoundTighteningType::LP_RELAXATION_INCREMENTAL:
case MILPSolverBoundTighteningType::BACKWARD_ANALYSIS_ONCE:
case MILPSolverBoundTighteningType::BACKWARD_ANALYSIS_CONVERGE:
case MILPSolverBoundTighteningType::BACKWARD_ANALYSIS_PREIMAGE_APPROX:
_networkLevelReasoner->lpRelaxationPropagation();
break;
case MILPSolverBoundTighteningType::MILP_ENCODING:
Expand Down Expand Up @@ -1658,6 +1659,15 @@ void Engine::performAdditionalBackwardAnalysisIfNeeded()
printf( "Backward analysis tightened %u bounds\n", tightened );
}
}

if ( _milpSolverBoundTighteningType ==
MILPSolverBoundTighteningType::BACKWARD_ANALYSIS_PREIMAGE_APPROX )
{
performMILPSolverBoundedTightening( &( *_preprocessedQuery ) );
unsigned tightened = performSymbolicBoundTightening( &( *_preprocessedQuery ) );
if ( _verbosity > 0 )
printf( "Backward analysis tightened %u bounds\n", tightened );
}
}

void Engine::performMILPSolverBoundedTighteningForSingleLayer( unsigned targetIndex )
Expand Down Expand Up @@ -1685,6 +1695,7 @@ void Engine::performMILPSolverBoundedTighteningForSingleLayer( unsigned targetIn
return;
case MILPSolverBoundTighteningType::BACKWARD_ANALYSIS_ONCE:
case MILPSolverBoundTighteningType::BACKWARD_ANALYSIS_CONVERGE:
case MILPSolverBoundTighteningType::BACKWARD_ANALYSIS_PREIMAGE_APPROX:
case MILPSolverBoundTighteningType::ITERATIVE_PROPAGATION:
case MILPSolverBoundTighteningType::NONE:
return;
Expand Down Expand Up @@ -3879,4 +3890,4 @@ void Engine::addPLCLemma( std::shared_ptr<PLCLemma> &explanation )
ASSERT( explanation && _UNSATCertificate && _UNSATCertificateCurrentPointer )
_statistics.incUnsignedAttribute( Statistics::NUM_LEMMAS );
_UNSATCertificateCurrentPointer->get()->addPLCLemma( explanation );
}
}
3 changes: 3 additions & 0 deletions src/engine/MILPSolverBoundTighteningType.h
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,9 @@ enum class MILPSolverBoundTighteningType {
// Perform backward analysis
BACKWARD_ANALYSIS_ONCE = 5,
BACKWARD_ANALYSIS_CONVERGE = 6,
// Perform backward analysis using the PreimageApproximation Algorithm (arXiv:2305.03686v4
// [cs.SE])
BACKWARD_ANALYSIS_PREIMAGE_APPROX = 7,
// Option to have no MILP bound tightening performed
NONE = 10,
};
Expand Down
Loading
Loading