# Bounded verification of message-passing concurrency in Go using Promela and Spin

arXiv: https://arxiv.org/abs/2004.01323 · HTML: https://mlsanity.com/paper/2004.01323/

## Key facts

- Cited by 1 papers in the map (data through 14 Oct 2026).
- First posted on arXiv 3 Apr 2020.

## Built on by (most cited first, 1 of 1)

- [Go-Oracle: Automated Test Oracle for Go Concurrency Bugs](https://mlsanity.com/paper/2412.08061/) (2024)

## Abstract (arXiv)

This paper describes a static verification framework for the message-passing fragment of the Go programming language. Our framework extracts models that over-approximate the message-passing behaviour of a program. These models, or behavioural types, are encoded in Promela, hence can be efficiently verified with Spin. We improve on previous works by verifying programs that include communication-related parameters that are unknown at compile-time, i.e., programs that spawn a parameterised number of threads or that create channels with a parameterised capacity. These programs are checked via a bounded verification approach with bounds provided by the user.
