21,181 research outputs found
LoopW Technical Reference v0.3
This document describes the implementation in SML of the LoopW language, an
imperative language with higher-order procedural variables and non-local jumps
equiped with a program logic. It includes the user manual along with some
implementation notes and many examples of certified imperative programs. As a
concluding example, we show the certification of an imperative program encoding
shift/reset using callcc/throw and a global meta-continuation
Reducing the Number of Annotations in a Verification-oriented Imperative Language
Automated software verification is a very active field of research which has
made enormous progress both in theoretical and practical aspects. Recently, an
important amount of research effort has been put into applying these techniques
on top of mainstream programming languages. These languages typically provide
powerful features such as reflection, aliasing and polymorphism which are handy
for practitioners but, in contrast, make verification a real challenge. In this
work we present Pest, a simple experimental, while-style, multiprocedural,
imperative programming language which was conceived with verifiability as one
of its main goals. This language forces developers to concurrently think about
both the statements needed to implement an algorithm and the assertions
required to prove its correctness. In order to aid programmers, we propose
several techniques to reduce the number and complexity of annotations required
to successfully verify their programs. In particular, we show that high-level
iteration constructs may alleviate the need for providing complex loop
annotations.Comment: 15 pages, 8 figure
C# 3.0 makes OCL redundant!
Other than its 'platform independence' the major advantages of OCL over traditional Object Oriented programming languages has been the declarative nature of the language, its powerful navigation facility via the iteration operations, and the availability of tuples as a first class concept. The recent offering from Microsoft of the "Orcas" version of Visual Studio with C# 3.0 and the Linq library provides functionality almost identical to that of OCL. This paper examines and evaluates the controversial thesis that, as a result of C# 3.0, OCL is essentially redundant, having been superseded by the incorporation of its advantageous features into a mainstream programming language
A Formally Specified Type System and Operational Semantics for Higher-Order Procedural Variables
We formally specified the type system and operational semantics of LOOPw with
Ott and Isabelle/HOL proof assistant. Moreover, both the type system and the
semantics of LOOPw have been tested using Isabelle/HOL program extraction
facility for inductively defined relations. In particular, the program that
computes the Ackermann function type checks and behaves as expected. The main
difference (apart from the choice of an Ada-like concrete syntax) with LOOPw
comes from the treatment of parameter passing. Indeed, since Ott does not
currently fully support alpha-conversion, we rephrased the operational
semantics with explicit aliasing in order to implement the out parameter
passing mode
- …