Skip to content
Snippets Groups Projects
Marcel Vinzent's avatar
Marcel Vinzent authored
422f8a17
History
Name Last commit Last update
README.md

PPAToolset

This repository provides infrastructure used for the experimental evaluation of the following publications:

Neural Network Action Policy Verification via Predicate Abstraction (tag: icaps22)

Neural Policy Safety Verification via Predicate Abstraction: CEGAR (tag: aaai23)

Neural Policy Safety Verification via Predicate Abstraction: Applicability Filtering (tag: icaps24)

The latest commit is tailored to the latest publications. Use the respective tags for earlier publications.

Code

Our approach is implemented on top of a PlaJA distribution and a modified Marabou version.

Further dependencies are:
nlohmann JSON library v3.11.2;
z3 (used z3-z3-4.8.12 and built with cmake -DCMAKE_BUILD_TYPE=Release -DZ3_SINGLE_THREADED=True);
Boost (used 1.81.0);
OpenBLAS-0.3.19;
Gurobi 9.5.1;
CxxTest 4.4 (only for Marabou's test infrastructure.).
Please see the code base README for proper pointers.

The code base is build with -DCMAKE_BUILD_TYPE=Release (we use version 3.27.1 and GCC/G++ (https://gcc.gnu.org/) version 12.3.1).
Paths to dependencies and build options must be set in CMakeLists.txt.
For ICPAS24 experiments configuration use:

SET(BUILD_PA ON) # PREDICATE ABSTRACTION

SET(ENABLE_APPLICABILITY_FILTERING ON)
SET(ENABLE_APPLICABILITY_CACHE ON)
SET(ENABLE_TERMINAL_STATE_SUPPORT ON)
SET(REACH_MAY_BE_TERMINAL OFF)
SET(MARABOU_DIS_BASELINE_SUPPORT ON)\

Benchmarks

The benchmarks can be found in the JANIBenchmarks repository.
The models/ subdirectory contains the benchmark instances, i.e., the automata networks.
The properties/ subdirectory contains the problem instances, i.e., a safety property and a neural action policy.
The networks/ subdirectory contains the neural networks -- referenced by the properties.

Running experiments

Base configuration:

${model} --additional-properties ${properties_file} --prop 1
--max-time 43200 --print-time 3600
--engine PA_CEGAR\

Applicability-filtering:
Enabled: --applicability-filtering 1
Disabled: --applicability-filtering -1 (default)

Reach-avoid:
Enabled: --set-pa-goal-objective-terminal true
Disabled: --set-pa-goal-objective-terminal false (default)

Per-Op-Disj:
Enabled: --per-op-app-dis true (default)
Disabled: --per-op-app-dis false

Opt-Slack-Var:
Enabled: --marabou-opt-slack-for-label-sel true --marabou-options "--opt-slack-for-dis 1 --opt-equality-in-dis 1" (default)
Disabled: --marabou-opt-slack-for-label-sel false --marabou-options "--opt-slack-for-dis 0 --opt-equality-in-dis 0"

Entail-Op:
Enabled: --cache-op-app cache-feasible --check-for-pa-terminal-states true (default)
Disabled: --cache-op-app none --check-for-pa-terminal-states false

Entail-Gen:
Enabled: --marabou-pre-opt-dis true --marabou-options "--pre-opt-dis 1 --advanced-entailment-ops-for-dis 1" (default)
Disabled: --marabou-pre-opt-dis false --marabou-options "--pre-opt-dis 0 --advanced-entailment-ops-for-dis 0"

--marabou-options must be concatenated.