Objective/MC: A high-level model checking language

Among model checking tools, the behaviour of a system is often formalized as a transition system with atomic propositions associated with states (Kripke structure). In current modeling languages, transitions are usually specified as updates of the system’s variables to be performed when certain conditions are satisfied. However, such a low-level representation makes the description of complex transformations difficult, in particular in the presence of structured data. We present Objective/MC, a high-level language with imperative semantics for modeling finite-state systems. The language features are selected with the aim of enabling the translation of models into compact transition systems, amenable to efficient verification via model checking. To this end, we have developed a compiler of our high-level language into the modeling language of the PRISM probabilistic model checker. One of the main characteristics of the language is that it makes a very different treatment of global and local variables. It is assumed that global variables are actually the variables that describe the state of the modeled system, whereas local variables are only used to ease the specification of the system’s internal mechanisms. In this paper, we give a complete formal definition of the language, its type system and static analyses, of the transformations to be performed at the level of the Control Flow Graph for the pruning of local variables, and of the PRISM code generation.

[1]  Narciso Martí-Oliet,et al.  Maude: specification and programming in rewriting logic , 2002, Theor. Comput. Sci..

[2]  Wang Yi,et al.  Uppaal in a nutshell , 1997, International Journal on Software Tools for Technology Transfer.

[3]  Martín Abadi,et al.  A Theory of Objects , 1996, Monographs in Computer Science.

[4]  Frank S. de Boer,et al.  Modeling and Verification of Reactive Systems using Rebeca , 2004, Fundam. Informaticae.

[5]  Stephanie Weirich,et al.  Type Systems , 2014, Computing Handbook, 3rd ed..

[6]  Wolfgang Reif,et al.  Unified Simulation, Visualization, and Formal Analysis of Safety-Critical Systems with , 2016, FMICS-AVoCS.

[7]  Marco Pistore,et al.  NuSMV 2: An OpenSource Tool for Symbolic Model Checking , 2002, CAV.

[8]  Marjan Sirjani,et al.  ReUML: a UML Profile for Modeling and Verification of Reactive Systems , 2007, International Conference on Software Engineering Advances (ICSEA 2007).

[9]  Paolo Milazzo,et al.  A High-Level Model Checking Language with Compile-Time Pruning of Local Variables , 2016, STAF Workshops.

[10]  Klaus Havelund,et al.  Model checking JAVA programs using JAVA PathFinder , 2000, International Journal on Software Tools for Technology Transfer.

[11]  Marta Z. Kwiatkowska,et al.  PRISM 4.0: Verification of Probabilistic Real-Time Systems , 2011, CAV.

[12]  Gerard J. Holzmann,et al.  The Model Checker SPIN , 1997, IEEE Trans. Software Eng..

[13]  Daniel Kroening,et al.  A Tool for Checking ANSI-C Programs , 2004, TACAS.