Figure - available from: Automated Software Engineering
This content is subject to copyright. Terms and conditions apply.
Graphical representation of and statements in Promela; blocks implement guarded choices and implement a repetition construct where each branch implicitly loops back to the start state (unless a statement is reached). We use to denote an unguarded branch (equivalent to a guard that is set to )

Graphical representation of and statements in Promela; blocks implement guarded choices and implement a repetition construct where each branch implicitly loops back to the start state (unless a statement is reached). We use to denote an unguarded branch (equivalent to a guard that is set to )

Source publication
Article
Full-text available
The Go programming language offers a wide range of primitives to coordinate lightweight threads, e.g., channels, waitgroups, and mutexes—all of which may cause concurrency bugs. Static checkers that guarantee the absence of bugs are essential to help programmers avoid these costly errors before their code is executed. However existing tools either...

Citations

... Our work is reminiscent of automated software model checking which has a long history (see [9] for a survey). There are few works on inference and verification of behavioural types, i.e., [18,11,12,3]. However, Perera et al. [18] only present a prototype research language, while Lange et al. [11,12,3] propose verification procedures for Go programs that rely on external tools which are not integrated with the language nor its type system. ...
... There are few works on inference and verification of behavioural types, i.e., [18,11,12,3]. However, Perera et al. [18] only present a prototype research language, while Lange et al. [11,12,3] propose verification procedures for Go programs that rely on external tools which are not integrated with the language nor its type system. To our knowledge, ours is the first implementation of type inference for MPST and the first integration of session types compatibility checking within a programming language. ...
Preprint
Full-text available
Theories and tools based on multiparty session types offer correctness guarantees for concurrent programs that communicate using message-passing. These guarantees usually come at the cost of an intrinsically top-down approach, which requires the communication behaviour of the entire program to be specified as a global type. This paper introduces kmclib: an OCaml library that supports the development of correct message-passing programs without having to write any types. The library utilises the meta-programming facilities of OCaml to automatically infer the session types of concurrent programs and verify their compatibility (k-MC). Well-typed programs, written with kmclib, do not lead to communication errors and cannot get stuck.