Adam Bakewell

Learn More
Haskell currently lacks a standard operational semantics. We argue that such a semantics should be provided to enable reasoning about operational properties of programs, to ensure that implementations guarantee certain space and time behaviour and to help determine the source of space faults. We present a small-step deterministic semantics for the(More)
We present a new algorithm for checking the shape-safety of pointer manipulation programs. In our model, an abstract, data-less pointer structure is a graph. A shape is a language of graphs. A pointer manipulation program is modelled abstractly as a set of graph rewrite rules over such graphs where each rule corresponds to a pointer manipulation step. Each(More)
A study of properties of a rewrite system for solving constraint sets that are instances of the unification with expansion variables problem. The terms in the constraints are built from the intersection type constructors plus type variables and applied expansion variables. We show that: • Constraint set rewriting is confluent (modulo isomorphism). • There(More)
BACKGROUND There are currently no field data about the effect of implementing European Working Time Directive (EWTD)-compliant rotas in a medical setting. Surveys of doctors' subjective opinions on shift work have not provided reliable objective data with which to evaluate its efficacy. AIM We therefore studied the effects on patient's safety and doctors'(More)
This paper presents a semantic framework for data abstraction and refinement for verifying safety properties of open programs with integer types. The presentation is focused on an Algol-like programming language that incorporates data abstraction in its type system. We use a fully abstract game semantics in the style of Hyland and Ong and a more intensional(More)
Expansion generalises substitution. An expansion is a special term whose leaves can be substitutions. Substitutions map term variables to ordinary terms and expansion variables to expansions. Expansions (resp., ordinary terms) may contain expansion variables, each applied to an argument expansion (resp., ordinary term). Instances of the unification problem(More)