Go2Pins: A framework for the LTL verification of Go programs (Extended Version)

From LRDE

Revision as of 08:43, 9 January 2023 by Bot (talk | contribs)

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		= 2022,
  optvolume	= {???},
  optnumber	= {???},
  optpages	= {???--???},
  optmonth	= {???},
  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.},
  optdoi	= {https://doi.org/10.1007/s10009-022-00692-w}
}