Towards verification of C# programs: A three-level approach

  • Authors:
  • V. A. Nepomniaschy;I. S. Anureev;I. V. Dubranovskii;A. V. Promsky

  • Affiliations:
  • Ershov Institute of Information Systems, Siberian Division, Russian Academy of Sciences, Novosibirsk, Russia 630090;Ershov Institute of Information Systems, Siberian Division, Russian Academy of Sciences, Novosibirsk, Russia 630090;Ershov Institute of Information Systems, Siberian Division, Russian Academy of Sciences, Novosibirsk, Russia 630090;Ershov Institute of Information Systems, Siberian Division, Russian Academy of Sciences, Novosibirsk, Russia 630090

  • Venue:
  • Programming and Computing Software
  • Year:
  • 2006

Quantified Score

Hi-index 0.01

Visualization

Abstract

In the paper, a new three-level approach to the verification of sequential object-oriented programs is presented. It is applied to an expressive subset C#-light of the C# language, which includes all basic sequential constructs of the latter. At the first stage, the C#-light language is translated into the intermediate C#-kernel language. At the second stage, lazy correctness conditions are generated by means of the axiomatic semantics developed for C#-kernel. These conditions are lazy because they may include special functional symbols representing postponed extraction of invariants of labeled statements, as well as postponed invocations of methods and delegates. At the third stage, these conditions are refined with the use of operational semantics algorithms. Such an approach simplifies the axiomatic semantics and makes it possible to uniquely derive correctness conditions. An example of verification of a C#-light program is presented.