Skip to content

Latest commit

 

History

History

implementation

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 
 
 

Experimental Grapple Model Checker

An experimental Swarm Verification model checker that leverages the GPU.

The implementation is part of my bachelor's thesis on Low-Connectivity State Space Exploration using Swarm Model Checking on the GPU and based on DeFrancisco, R. et al. "Swarm model checking on the GPU".

In particular, this model checker currently implements:

  • Multiple models, including the Waypoints Benchmark Model. See src/models/ for an overview of all available models.
  • A bitstate hashtable that uses a single bit of each 32 bit hash bucket to mark a state as visited. Hashing is done using a modified variant of Jenkins, Bob "A Hash Function for Hash Table Lookup".
  • The parallel breadth-first-search (BFS) algorithm and its corresponding queues from Holzmann, G. J. "Parallelizing the Spin Model Checker", as defined in the Swarm Model Checking paper.
  • An extension to the search strategy called start overs that can reach deeper states. See my thesis for details about it.

Only safety and reachability properties can be checked.

Please check out section 5.2 (Usage) of my thesis for a user guide.

Quick Start

Make sure to have the prerequisites installed:

Build the project using cmake:

cmake -B build
cmake --build build

The model checker can then be started using:

./build/grapple

Build Configuration

The build can be configured using text macros. Please check out section 5.2.2 (Build Configuration) of my thesis for a list of available text macros.

To specify configuration parameters, you can use an environment variable:

CUDA_FLAGS="-DGRAPPLE_MODEL=PhilosophersStateV2" cmake --build build -- -e

Development

Testing

Unit tests are written using GoogleTest.

Make sure the project is built before executing unit tests. Then, execute:

cd build
ctest

Code formatting and linting

Code is formatted using ClangFormat.