Go2Pins: A framework for the LTL verification of Go programs (Extended Version)
From LRDE
- Authors
- Alexandre Kirszenberg, Antoine Martin, Hugo Moreau, Etienne Renault
- Journal
- International Journal on Software Tools for Technology Transfer (STTT)
- Type
- article
- Publisher
- Springer
- Projects
- Spot
- Date
- 2022-12-09
Abstract
We introduce Go2Pins, a tool that takes a program written in Go and links it with two model-checkers: LTSMin and Spot. Go2Pins is an effort to promote the integration of both formal verification and testing inside industrial-size projects. With this goal in mind, we introduce black-box transitions, an efficient and scalable technique for handling the Go runtime. This approach, inspired by hardware verification techniques, allows easy, automatic and efficient abstractions. Go2Pins also handles basic concurrent programs through the use of a dedicated scheduler. Moreover, in order to efficiently handle recursive programs, we introduce PSLRec, a formalism that augments PSL without changing the complexity of the underlying verification process.
Documents
Bibtex (lrde.bib)
@Article{ renault.22.sttt, author = {Alexandre Kirszenberg and Antoine Martin and Hugo Moreau and Etienne Renault}, title = {Go2{P}ins: {A} framework for the {LTL} verification of {Go} programs (Extended Version)}, journal = {International Journal on Software Tools for Technology Transfer (STTT)}, year = 2023, volume = {25}, pages = {77--94}, month = feb, publisher = {Springer}, abstract = {We introduce Go2Pins, a tool that takes a program written in Go and links it with two model-checkers: LTSMin and Spot. Go2Pins is an effort to promote the integration of both formal verification and testing inside industrial-size projects. With this goal in mind, we introduce black-box transitions, an efficient and scalable technique for handling the Go runtime. This approach, inspired by hardware verification techniques, allows easy, automatic and efficient abstractions. Go2Pins also handles basic concurrent programs through the use of a dedicated scheduler. Moreover, in order to efficiently handle recursive programs, we introduce PSL{Rec}, a formalism that augments PSL without changing the complexity of the underlying verification process.}, doi = {https://doi.org/10.1007/s10009-022-00692-w}, note = {First published online on 06 January 2023.} }