Verified Change

We present the textual wide-spectrum modeling and programing language K, which has been designed for representing graphical SysML models, in order to provide semantics to SysML, and pave the way for analysis of SysML models. The current version is supported by the Z3 SMT theorem prover, which allows to prove consistency of constraints. The language is intended to be used by engineers for designing space missions, and in particular NASA’s proposed mission to Jupiter’s moon Europa. One of the challenges facing software development teams is the notion of change: the fact that code changes over time, and the subsequent problem of demonstrating that no harm has been done due to a change. K is in this paper being applied to demonstrate how change can be perceived as a software verification problem, and hence verified using more traditional software verification techniques.

[1]  J. Michael Spivey,et al.  Understanding Z : A specification language and its formal semantics , 1985, Cambridge tracts in theoretical computer science.

[2]  Anne Elisabeth Haxthausen,et al.  The Logic of the RAISE Specification Language , 2003, Comput. Artif. Intell..

[3]  Ofer Strichman,et al.  Regression verification , 2009, 2009 46th ACM/IEEE Design Automation Conference.

[4]  Reiner Hähnle,et al.  Fully Abstract Operation Contracts , 2014, ISoLA.

[5]  Peter Gorm Larsen,et al.  Validated Designs for Object-oriented Systems , 2004 .

[6]  Cliff B. Jones,et al.  Systematic software development using VDM , 1986, Prentice Hall International Series in Computer Science.

[7]  Daniel Jackson,et al.  Software Abstractions - Logic, Language, and Analysis , 2006 .

[8]  C. A. R. Hoare,et al.  Data Refinement Refined , 1986, ESOP.

[9]  Niklaus Wirth,et al.  Program development by stepwise refinement , 1971, CACM.

[10]  Nikolaj Bjørner,et al.  Z3: An Efficient SMT Solver , 2008, TACAS.

[11]  Wolfram Schulte,et al.  Semantic essence of AsmL , 2003, Theor. Comput. Sci..

[12]  Matthew B. Dwyer,et al.  Differential symbolic execution , 2008, SIGSOFT '08/FSE-16.

[13]  Natarajan Shankar,et al.  PVS: A Prototype Verification System , 1992, CADE.

[14]  François Bobot,et al.  Why3: Shepherd Your Herd of Provers , 2011 .

[15]  Klaus Havelund,et al.  Closing the Gap Between Specification and Programming: VDM++ and Scala , 2011, HOWARD-60.

[16]  Dines Bjørner,et al.  Formal specification and software development , 1982 .

[17]  W. Marsden I and J , 2012 .

[18]  Donald Sannella,et al.  The Definition of Extended ML: A Gentle Introduction , 1997, Theor. Comput. Sci..

[19]  Martin Odersky,et al.  Contracts for Scala , 2010, RV.

[20]  Thomas Ball,et al.  SLAM2: Static driver verification with under 4% false alarms , 2010, Formal Methods in Computer Aided Design.

[21]  Klaus Havelund,et al.  Program model checking as a new trend , 2002, International Journal on Software Tools for Technology Transfer.

[22]  Shuvendu K. Lahiri,et al.  SYMDIFF: A Language-Agnostic Semantic Diff Tool for Imperative Programs , 2012, CAV.

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

[24]  James F. Allen Towards a General Theory of Action and Time , 1984, Artif. Intell..

[25]  Carroll Morgan,et al.  Programming from specifications , 1990, Prentice Hall International Series in computer science.

[26]  Reiner Hähnle,et al.  The Abstract Behavioral Specification Language: A Tutorial Introduction , 2012, FMCO.

[27]  Anne Elisabeth Haxthausen,et al.  The Raise Specification Language , 1992 .

[28]  K. Rustan M. Leino,et al.  Dafny: An Automatic Program Verifier for Functional Correctness , 2010, LPAR.

[29]  Shin Nakajima,et al.  The SPIN Model Checker : Primer and Reference Manual , 2004 .

[30]  Jean-Raymond Abrial Modeling in Event-B: A simple file transfer protocol , 2010 .

[31]  Reiner Hähnle,et al.  An Interactive Verification Tool Meets an IDE , 2014, IFM.