6 research outputs found
A program logic for higher-order procedural variables and non-local jumps
Relying on the formulae-as-types paradigm for classical logic, we define a
program logic for an imperative language with higher-order procedural variables
and non-local jumps. Then, we show how to derive a sound program logic for this
programming language. As a by-product, we obtain a non-dependent type system
which is more permissive than what is usually found in statically typed
imperative languages. As a generic example, we encode imperative versions of
delimited continuations operators shift and reset
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
The lambda-mu-T-calculus
Calculi with control operators have been studied as extensions of simple type
theory. Real programming languages contain datatypes, so to really understand
control operators, one should also include these in the calculus. As a first
step in that direction, we introduce lambda-mu-T, a combination of Parigot's
lambda-mu-calculus and G\"odel's T, to extend a calculus with control operators
with a datatype of natural numbers with a primitive recursor.
We consider the problem of confluence on raw terms, and that of strong
normalization for the well-typed terms. Observing some problems with extending
the proofs of Baba at al. and Parigot's original confluence proof, we provide
new, and improved, proofs of confluence (by complete developments) and strong
normalization (by reducibility and a postponement argument) for our system.
We conclude with some remarks about extensions, choices, and prospects for an
improved presentation