Skip to main content

A package wrapping the Marabou Neural Network Verification tool.

Project description

Marabou Marabou codecov.io

Deep neural networks are revolutionizing the way complex systems are designed. Instead of spending long hours hand-crafting complex software, many engineers now opt to use deep neural networks (DNNs) - machine learning models, created by training algorithms that generalize from a finite set of examples to previously unseen inputs. Consequently, there is a pressing need for tools and techniques for network analysis and certification. To help address that need, we present Marabou, a framework for verifying deep neural networks.

Marabou is an SMT-based tool that can answer queries about a network’s properties by transforming these queries into constraint satisfaction problems. It can accommodate networks with different activation functions and topologies, and it performs high-level reasoning on the network that can curtail the search space and improve performance. It also supports parallel execution to further enhance scalability. Marabou accepts multiple input formats, including protocol buffer files generated by the popular TensorFlow framework for neural networks.

A DNN verification query consists of two parts: (i) a neural network, and (ii) a property to be checked; and its result is either a formal guarantee that the network satisfies the property, or a concrete input for which the property is violated (a counter-example). There are several types of verification queries that Marabou can answer:

  • Reachability queries: if inputs is in a given range is the output guaranteed to be in some, typically safe, range.
  • Robustness queries: test whether there exist adversarial points around a given input point that change the output of the network.

Marabou supports fully connected feed-forward and convolutional NNs with piece-wise linear activation functions, in the .nnet and TensorFlow formats. Properties can be specified using inequalites over input and output variables or via Python interface.

For more details about the features of Marabou check out the tool paper (slides) and our recent work based on Sum-of-Infeasibilities, which is now the default solving mode of Marabou.

For more information about the input formats please check the wiki.

A guide to Split and Conquer mode is available in resources/SplitAndConquerGuide.ipynb. The Jupyter Notebook gives on overview of SnC's parameters, discusses several runtime examples and a few rules of thumb to choose parameter values.

Research

More information about publications involving Marabou can be found here.

Download

The latest version of Marabou is available on https://github.com/NeuralNetworkVerification/Marabou.

Build and Dependencies

Marabou depends on the Boost library, which is automatically downloaded and built when you run make. Library CXXTEST comes included in the repository.

The marabou build process uses CMake version 3.12 (or later). You can get CMake here.

Marabou can be built for Linux, MacOS, or Windows machines.

Build Instructions for Linux or MacOS

To build marabou using CMake run:

cd path/to/marabou/repo/folder
mkdir build 
cd build
cmake ..

For configuring to build a static Marabou binary, use the following flag

cmake .. -DBUILD_STATIC_MARABOU=ON

To build, run the following:

cmake --build .

To enable multiprocess build change the last command to:

cmake --build . -j PROC_NUM

To compile in debug mode (default is release)

cmake .. -DCMAKE_BUILD_TYPE=Debug
cmake --build .

The compiled binary will be in the build directory, named Marabou

To run tests we use ctest. The tests have labels according to level (unit/system/regress0/regress1...), and the code they are testing (engine/common etc...).
For example to run all unit tests execute in the build directory:

ctest -L unit

On every build we run the unit tests, and on every pull request we run unit, system, regress0 and regress1.

Another option to build and run all of the tests is:

cd path/to/marabou/repo/folder
mkdir build 
cd build
cmake ..
make check -j PROC_NUM

Build Instructions for Windows using Visual Studio

We no longer provide Windows support. The below instructions apply to commits up to 0fc1d10.

First, install Visual Studio 2017 or later and select the "Desktop development with C++" workload. Ensure that CMake is installed and added to your PATH.

Open a command prompt and run:

cd path\to\marabou\repo\folder
mkdir build 
cd build
cmake .. -G"Visual Studio 15 2017 Win64"
cmake --build . --config Release

This process builds Marabou using the generator "Visual Studio 15 2017 Win64". For 32-bit machines, omit Win64. Other generators and older versions of Visual Studio can likely be used as well, but only "Visual Studio 15 2017 Win64" has been tested.

The Marabou executable file will be written to the build/Release folder. To build in Debug mode, simply run "cmake --build . --config Debug", and the executables will be written to build/Debug.

Python API

It may be useful to set up a Python virtual environment, see here for more information.

The python interface was tested only on versions >3.5 and >2.7. The build process prefers python3 but will work if there is only python 2.7 available. (To control the default change the DEFAULT_PYTHON_VERSION variable).
The Python interface requires pybind11 (which is automatically downloaded). By default Marabou builds also the python API, the BUILD_PYTHON variable controls that. This process will produce the binary file and the shared library for the Python API. The shared library will be in the maraboupy folder for Linux and MacOS. On Windows, the shared library is written to a Release subfolder in maraboupy, so you will need to move the Release/*pyd file to the maraboupy folder:

cd path\to\marabou\repo\folder\maraboupy
move Release\*pyd .

Export maraboupy folder to Python and Jupyter paths:

PYTHONPATH=PYTHONPATH:/path/to/marabou/folder
JUPYTER_PATH=JUPYTER_PATH:/path/to/marabou/folder

and Marabou is ready to be used from a Python or a Jupyter script. On Windows, edit your environmental variables so PYTHONPATH includes the marabou folder.

Troubleshooting

  • On Windows - Make sure the detected python ("Found PythonInterp: ....") is a windows python and not cygwin or something like that (if it is cygwin, use -DPYTHON_EXECUTABLE flag to override the default python, or manuialy download the linux pybind and locate it in the tools directory)

  • 32bit Python - By default we install a 64bit Marabou and consequently a 64bit python interface, the maraboupy/build_python_x86.sh file builds a 32bit version.

Getting Started

To run Marabou from Command line

After building Marabou the binary is located at build/Marabou (or build\Release\Marabou.exe for Windows). The repository contains sample networks and properties in the resources folder. For more information see resources/README.md.

To run Marabou, execute from the repo directory, for example:

./build/Marabou resources/nnet/acasxu/ACASXU_experimental_v2a_2_7.nnet resources/properties/acas_property_3.txt

on Linux or MacOS, or

build\Release\Marabou.exe resources\nnet\acasxu\ACASXU_experimental_v2a_2_7.nnet resources\properties\acas_property_3.txt

on Windows.

Using Python interface

Please see our documentation for the python interface, which contains examples, API documentation, and a developer's guide.

Using the run script (Recommended)

For ease of use, we also provide a example python script (resources/runMarabou.py). The script can take the same arguments as the Marabou binary. The difference is that the python script also supports networks in onnx format.

Moreover, instead of passing in a property file, you could define your property with the Python API calls here.

Choice of solver configurations

Currently the default configuration of Marabou is a single-threaded one that uses DeepPoly analysis for bound tightening, and the DeepSoI procedure during the complete search. For optimal runtime performance, you need to build Marabou with Gurobi enabled (See sub-section below for Gurobi installation), so that LPs are solved by Gurobi instead of the open-source native simplex engine.

You could also leverage parallelism by setting the num-workers option to N. This will spawn N threads, each solving the original verification query using the single-threaded configuration with a different random seed. This is the preferred parallelization strategy for low level of parallelism (e.g. N < 30). For example to solve a query using this mode with 4 threads spawned:

./resources/runMarabou.py resources/nnet/mnist/mnist10x10.nnet resources/properties/mnist/image3_target6_epsilon0.05.txt --num-workers=4

If you have access to a large number of threads, you could also consider the Split-and-Conquer mode (see below).

Using the Split and Conquer (SNC) mode

In the SNC mode, activated by --snc Marabou decomposes the problem into 2^n0 sub-problems, specified by --initial-divides=n0. Each sub-problem will be solved with initial timeout of t0, supplied by --initial-timeout=t0. Every sub-problem that times out will be divided into 2^n additional sub-problems, --num-online-divides=n, and the timeout is multiplied by a factor of f, --timeout-factor=f. Number of parallel threads t is specified by --num-workers=t.

So to solve a problem in SNC mode with 4 initial splits and initial timeout of 5s, 4 splits on each timeout and a timeout factor of 1.5:

build/Marabou resources/nnet/acasxu/ACASXU_experimental_v2a_2_7.nnet resources/properties/acas_property_3.txt --snc --initial-divides=4 --initial-timeout=5 --num-online-divides=4 --timeout-factor=1.5 --num-workers=4

A guide to Split and Conquer is available as a Jupyter Notebook in resources/SplitAndConquerGuide.ipynb.

Use LP Relaxation

Marabou has an option to use LP relaxation for bound tightening. For now we use Gurobi as an LP solver. Gurobi requires a license (a free academic license is available), after getting one the software can be downloaded here and here are installation steps, there is a compatibility issue that should be addressed. A quick installation reference:

export INSTALL_DIR=/opt
sudo tar xvfz gurobi9.5.1_linux64.tar.gz -C $INSTALL_DIR
cd $INSTALL_DIR/gurobi951/linux64/src/build
sudo make
sudo cp libgurobi_c++.a ../../lib/

Next it is recommended to add the following to the .bashrc (but not necessary)

export GUROBI_HOME="/opt/gurobi951/linux64"
export PATH="${PATH}:${GUROBI_HOME}/bin"
export LD_LIBRARY_PATH="${LD_LIBRARY_PATH}:${GUROBI_HOME}/lib"

After installing Gurobi compile marabou as follows:

cmake .. -DENABLE_GUROBI=ON
cmake --build . 

If you did not set the GUROBI_HOME environment variable, then use the following:

cmake .. -DENABLE_GUROBI=ON -DGUROBI_DIR=<PATH_TO_GUROBI>

Tests

We have three types of tests:

  • unit tests - test specific small components, the tests are located alongside the code in a tests folder (for example: src/engine/tests), to add a new set of tests, add a file named Test_FILENAME (where FILENAME is what you want to test), and add it to the CMakeLists.txt file (for example src/engine/CMakeLists.txt)
  • system tests - test an end to end use case but still have access to internal functionality. Those tests are located in src/system_tests. To add new set of tests create a file named Test_FILENAME, and add it also to src/system_tests/CMakeLists.txt.
  • regression tests - test end to end functionality thorugh the API, each test is defined by:
    • network_file - description of the "neural network" supporting nnet and mps formats (using the extension to decdie on the format)
    • property_file - optional, constraint on the input and output variables
    • expected_result - sat/unsat

The tests are divided into 5 levels to allow variability in running time, to add a new regression tests:

  • add the description of the network and property to the resources sub-folder
  • add the test to: regress/regressLEVEL/CMakeLists.txt (where LEVEL is within 0-5) In each build we run unit_tests and system_tests, on pull request we run regression 0 & 1, in the future we will run other levels of regression weekly / monthly. 

Acknowledgments

The Marabou project is partially supported by grants from the Binational Science Foundation (2017662), the Defense Advanced Research Projects Agency (FA8750-18-C-0099), the Semiconductor Research Corporation (2019-AU-2898), the Federal Aviation Administration, Ford Motor Company, Intel Corporation, the Israel Science Foundation (683/18), the National Science Foundation (1814369, DGE-1656518), Siemens Corporation, General Electric, and the Stanford CURIS program.

Marabou is used in a number of flagship projects at Stanford's AISafety center.

People

Authors and contributors to the Marabou project can be found in AUTHORS and THANKS files, respectively.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

maraboupy-1.0.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.4 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

maraboupy-1.0.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.4 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ ARM64

maraboupy-1.0.0-cp311-cp311-macosx_13_0_arm64.whl (1.2 MB view details)

Uploaded CPython 3.11macOS 13.0+ ARM64

maraboupy-1.0.0-cp311-cp311-macosx_10_9_x86_64.whl (1.1 MB view details)

Uploaded CPython 3.11macOS 10.9+ x86-64

maraboupy-1.0.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.4 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

maraboupy-1.0.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.4 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ ARM64

maraboupy-1.0.0-cp310-cp310-macosx_13_0_arm64.whl (1.2 MB view details)

Uploaded CPython 3.10macOS 13.0+ ARM64

maraboupy-1.0.0-cp310-cp310-macosx_10_9_x86_64.whl (1.1 MB view details)

Uploaded CPython 3.10macOS 10.9+ x86-64

maraboupy-1.0.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.4 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

maraboupy-1.0.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.4 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ ARM64

maraboupy-1.0.0-cp39-cp39-macosx_13_0_arm64.whl (1.2 MB view details)

Uploaded CPython 3.9macOS 13.0+ ARM64

maraboupy-1.0.0-cp39-cp39-macosx_10_9_x86_64.whl (1.1 MB view details)

Uploaded CPython 3.9macOS 10.9+ x86-64

maraboupy-1.0.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.4 MB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ x86-64

maraboupy-1.0.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.4 MB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ ARM64

maraboupy-1.0.0-cp38-cp38-macosx_13_0_arm64.whl (1.2 MB view details)

Uploaded CPython 3.8macOS 13.0+ ARM64

maraboupy-1.0.0-cp38-cp38-macosx_10_9_x86_64.whl (1.1 MB view details)

Uploaded CPython 3.8macOS 10.9+ x86-64

maraboupy-1.0.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.4 MB view details)

Uploaded CPython 3.7mmanylinux: glibc 2.17+ x86-64

maraboupy-1.0.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.4 MB view details)

Uploaded CPython 3.7mmanylinux: glibc 2.17+ ARM64

maraboupy-1.0.0-cp37-cp37m-macosx_13_0_arm64.whl (1.2 MB view details)

Uploaded CPython 3.7mmacOS 13.0+ ARM64

maraboupy-1.0.0-cp37-cp37m-macosx_10_9_x86_64.whl (1.1 MB view details)

Uploaded CPython 3.7mmacOS 10.9+ x86-64

File details

Details for the file maraboupy-1.0.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for maraboupy-1.0.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 2b6f537348e107a37b66e0df07c4b5c5f703318381031c930b37071a12c23f15
MD5 e34eba88dfa9ccba6b9f2faf90eb8b13
BLAKE2b-256 aac5d88a71935b61a2d33291d25e6f093af8e4087de070831ecc49b0684cb28e

See more details on using hashes here.

File details

Details for the file maraboupy-1.0.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for maraboupy-1.0.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 014ea55cbaaefbe385dcfcaf8afe63f73eac07a78c926ebd146d70aa0a51fa2d
MD5 461f3140cf4c85589b2f0f27fa63a2d4
BLAKE2b-256 fb2dccca2c9f59849f98aaa8e55e6da4c745aa3d25ea5647217b546b232b1a6b

See more details on using hashes here.

File details

Details for the file maraboupy-1.0.0-cp311-cp311-macosx_13_0_arm64.whl.

File metadata

File hashes

Hashes for maraboupy-1.0.0-cp311-cp311-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 25a588183aebbb2ead04a4b5fdcc55e5896a1204393c317bf698f52e33e2aedf
MD5 0c3324b603b46c547778140f15891e0f
BLAKE2b-256 230ceb8dc1b19e49dae9abda70b7ac844fbf320bc94727ed03a366eea4c23843

See more details on using hashes here.

File details

Details for the file maraboupy-1.0.0-cp311-cp311-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for maraboupy-1.0.0-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 79d935f8709e62e5ad81f47b46a00bfda1f3b2fde60397e57d631cf50d28a079
MD5 e633fcb3f0b152096c84a3f58141464e
BLAKE2b-256 135ec8403805054e270dda05585a2814c01cc57873bb012d7af747867ff85463

See more details on using hashes here.

File details

Details for the file maraboupy-1.0.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for maraboupy-1.0.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 9e8679dd9045ddfaf62e4eb55e48a6fb6325f502c9ee9886827b2443064312d0
MD5 a16ef491bbb43a8c1c5c0a7d4d5f68fb
BLAKE2b-256 8be372033b110573eaf70d3446aa969e2a01f188424bc283e68ed304468da5f5

See more details on using hashes here.

File details

Details for the file maraboupy-1.0.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for maraboupy-1.0.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 12601af3bb0768e7027d87634d50eec5f5435c1462e8c0edbd9845d7a43131d9
MD5 a0004a45bc3de4a6758e093f21318c5c
BLAKE2b-256 c986d744df2ac7b5b87fbd8d684c364def18fb4e7eccf378c2196df6ed0c8c3b

See more details on using hashes here.

File details

Details for the file maraboupy-1.0.0-cp310-cp310-macosx_13_0_arm64.whl.

File metadata

File hashes

Hashes for maraboupy-1.0.0-cp310-cp310-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 2a04b900e04f2c837f5611cbcbce8a1a3d2e9c0ab612849d51647bf948328cad
MD5 ff5c059edfb73354be88275e0751da11
BLAKE2b-256 143d93347183d24128cafcd442398395eef50d76b5ff79efbcd7944a7af31293

See more details on using hashes here.

File details

Details for the file maraboupy-1.0.0-cp310-cp310-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for maraboupy-1.0.0-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 b9764a323a4e00cd787b96b7b0f08680aaa8ad43970b9c8b6ac6cdc321f83fae
MD5 0f851c198d84d51f0563b608e217816a
BLAKE2b-256 fd0c47b90d5aef38e5a8528050e1cac722d10d882d256b2d04fc5dea4fe3fb56

See more details on using hashes here.

File details

Details for the file maraboupy-1.0.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for maraboupy-1.0.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 65c9e51a0fc9652fb7fbf1663fb7c089534d1dcc0f79324ff19ae3650fc8e7f1
MD5 87d31143176624e4751e8387422f52dc
BLAKE2b-256 53f9a6fe50a60a998e407668a149058c5cfd9eb1c2375adeb2c9528a0983b85d

See more details on using hashes here.

File details

Details for the file maraboupy-1.0.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for maraboupy-1.0.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 ba04c3cdaba560db2aa17dd875f1ced5bfa8346b10cbc18e996f984b98ad71c9
MD5 b9dc62441c99a90702b2fc3aae2e03a8
BLAKE2b-256 626185198863527a461ead9854c159eca53654936c848f9825ed57dc0a64d9da

See more details on using hashes here.

File details

Details for the file maraboupy-1.0.0-cp39-cp39-macosx_13_0_arm64.whl.

File metadata

File hashes

Hashes for maraboupy-1.0.0-cp39-cp39-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 948df50521f93d06aecd2b3248e225eb97a39ff9b63415008de3830cddd8e46d
MD5 d61b3cb25eabcc6a1b42ff7452849f72
BLAKE2b-256 4358f7a9cb3620a0880f42164981edf9e0b634b7239da7dd64e7efbc49115c13

See more details on using hashes here.

File details

Details for the file maraboupy-1.0.0-cp39-cp39-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for maraboupy-1.0.0-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 7b9b4c71d345922134050417c7bf5f0b0072af2e22b9c84d986efd3c53d0ab5b
MD5 26b8bcd541d18c7e7c87cf9ff0c20192
BLAKE2b-256 da74764ed3a127fa045c52b7e990e19e51d93e98c28e7004b16798b5838f9825

See more details on using hashes here.

File details

Details for the file maraboupy-1.0.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for maraboupy-1.0.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 27de03b11e0815eacb406e28011e600b46d210bf2c2d4d7529ab58c43f796634
MD5 ad71e6a78012018202a66e7c4e8153e9
BLAKE2b-256 09e95414a5a9295c152dab092230800d1b16edf18ccb6c03bef45c9b93864c81

See more details on using hashes here.

File details

Details for the file maraboupy-1.0.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for maraboupy-1.0.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 2d695e165e8351115fbf91908984b6c97cd19f1bf659a5aa8f33a9c17d5d15ce
MD5 a5e6a4d94015808d128bbea83d73ea08
BLAKE2b-256 879d92121fe6e66896c795cd91d9505d8258b29e8322d310f104c894ebae29df

See more details on using hashes here.

File details

Details for the file maraboupy-1.0.0-cp38-cp38-macosx_13_0_arm64.whl.

File metadata

File hashes

Hashes for maraboupy-1.0.0-cp38-cp38-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 a0ab9994da3e02a63370290feb30f3374cf657224bdff148553e588a478be2e3
MD5 8d849c3c5117910b3d0fc5badcba903a
BLAKE2b-256 f8d2f0d2f5dba530dcb657d3a0fc54a6a329e355cf5f92356a57e204dfb1e684

See more details on using hashes here.

File details

Details for the file maraboupy-1.0.0-cp38-cp38-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for maraboupy-1.0.0-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 435e1c1eabbaa667151feb47690689027e9afc7b7d55375f56a9f2531ead8cf2
MD5 79a6f5921ab1b283570c3b36d2d227ec
BLAKE2b-256 3b86d2863fcc22f370e61a17821bda2ad7d1d0a82a68e79bbc85830651b51d67

See more details on using hashes here.

File details

Details for the file maraboupy-1.0.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for maraboupy-1.0.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 7e291569bb4041ecc541af3e04957b446efef74bbeb9eaa3056c6167b000402d
MD5 9060b7a071d24ce4088bac57b4e077cd
BLAKE2b-256 0caec8dfb3d309b386a7d0d53a804cc4e6a47f425ab7e55b8bdabc17dc9d8ec0

See more details on using hashes here.

File details

Details for the file maraboupy-1.0.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for maraboupy-1.0.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 2a614f239790958e3116cc630d7f1eb3ad5f7c32717f5f364b255b37b5686956
MD5 b6d402f9184a3a05b354f145333b8965
BLAKE2b-256 d2629fa85c9553f6696c47a16ed13cc77326550c79f14145c110b72837594478

See more details on using hashes here.

File details

Details for the file maraboupy-1.0.0-cp37-cp37m-macosx_13_0_arm64.whl.

File metadata

File hashes

Hashes for maraboupy-1.0.0-cp37-cp37m-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 f282b90c25bb98c75585d822bfe161dacca64750d802b02ebd1fdce3be1f158b
MD5 2c089c53d79eb248a93115adbfa175b5
BLAKE2b-256 fca25242bb0b9a8c4a28cf253186a0c3fafdede45901e1cdc136f9e92b9932ad

See more details on using hashes here.

File details

Details for the file maraboupy-1.0.0-cp37-cp37m-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for maraboupy-1.0.0-cp37-cp37m-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 d44bbe3f42bcd8cadc1c6171b48946899e4d857fb329562418ba0a3d894dd65b
MD5 9dd88610a3bf99d2cdb6fc5ac8ef0474
BLAKE2b-256 a19772b07b9b1c6575605906db7a915054288b1616c0c0a53271fc5c2f7156dc

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page