Results 1  10
of
87
Assembler to C Migration using the FermaT Transformation System
 In IEEE International Conference on Software Maintenance (ICSMâ€™99
, 1999
"... The FermaT transformation system, based on research carried out over the last twelve years at Durham University and Software Migrations Ltd., is an industrialstrength formal transformation engine with many applications in program comprehension and language migration. This paper describes one applic ..."
Abstract

Cited by 38 (7 self)
 Add to MetaCart
The FermaT transformation system, based on research carried out over the last twelve years at Durham University and Software Migrations Ltd., is an industrialstrength formal transformation engine with many applications in program comprehension and language migration. This paper describes one application of the system: the migration of IBM 370 Assembler code to equivalent, maintainable C code. We present an example of using the tool to migrate a small, but complex, assembler module to C with no manual intervention required. We briefly discuss a mass migration exercise where 1,925 assembler modules were sucessfully migrated to C code. Keywords: Assembler, Migration, Comprehension, Formal Methods, WSL, Wide Spectrum Language, Program Transformation, Legacy Systems, Restructuring.
A Weakest Precondition Semantics for an Objectoriented Language of Refinement
 Lecture Notes in Computer Science 1708
, 1999
"... We define a predicatetransformer semantics for an objectoriented language that includes specification constructs from refinement calculi. The language includes recursive classes, visibility control, dynamic binding, and recursive methods. Using the semantics, we formulate basic notions of refineme ..."
Abstract

Cited by 30 (9 self)
 Add to MetaCart
We define a predicatetransformer semantics for an objectoriented language that includes specification constructs from refinement calculi. The language includes recursive classes, visibility control, dynamic binding, and recursive methods. Using the semantics, we formulate basic notions of refinement, with respect to which the constructs are shown to be monotonic. Such results are a first step towards a refinement calculus. The step is not trivial, because of the number of features in the language and especially the complexity of dynamic binding.
Relational separation logic
, 2007
"... In this paper, we present a Hoarestyle logic for specifying and verifying how two pointer programs are related. Our logic lifts the main features of separation logic, from an assertion to a relation, and from a property about a single program to a relationship between two programs. We show the stre ..."
Abstract

Cited by 27 (1 self)
 Add to MetaCart
In this paper, we present a Hoarestyle logic for specifying and verifying how two pointer programs are related. Our logic lifts the main features of separation logic, from an assertion to a relation, and from a property about a single program to a relationship between two programs. We show the strength of the logic, by proving that the SchorrWaite graph marking algorithm is equivalent to the depthfirst traversal.
Using continuous real functions to model timed histories
 Proc. 6th Australian Software Engineering Conf. (ASWEC91
, 1991
"... Continuous real functions are an important tool in describing the evolution of physical processes through time. Using the theory of topology, this notion of continuity may be generalised to arbitrary data types. This paper demonstrates that (topological) continuity can be a useful tool in describing ..."
Abstract

Cited by 25 (11 self)
 Add to MetaCart
Continuous real functions are an important tool in describing the evolution of physical processes through time. Using the theory of topology, this notion of continuity may be generalised to arbitrary data types. This paper demonstrates that (topological) continuity can be a useful tool in describing the evolution of digital processes through time. Several examples are given of the use of continuous functions in modeling and specifying system behaviour. A digital circuit is verified to demonstrate the utility of proof techniques from real analysis. 1
A CSP Approach To Action Systems
, 1992
"... The communicating sequential processes (CSP) formalism, introduced by Hoare [Hoa85], is an eventbased approach to distributed computing. The actionsystem formalism, introduced by Back & KurkiSuonio [BKS83], is a statebased approach to distributed computing. Using weakestprecondition formula ..."
Abstract

Cited by 23 (6 self)
 Add to MetaCart
The communicating sequential processes (CSP) formalism, introduced by Hoare [Hoa85], is an eventbased approach to distributed computing. The actionsystem formalism, introduced by Back & KurkiSuonio [BKS83], is a statebased approach to distributed computing. Using weakestprecondition formulae, Morgan [Mor90a] has defined a correspondence between action systems and the failuresdivergences model for CSP. Simulation is a proof technique for showing refinement of action systems. Using the correspondence of [Mor90a], Woodcock & Morgan [WM90] have shown that simulation is sound and complete in the CSP failuresdivergences model. In this thesis, Morgan's correspondence is extended to the CSP infinitetraces model [Ros88] in order to deal more properly with unbounded nondeterminism. It is shown that simulation is sound in the infinitetraces model, though completeness is lost in certain cases. The new correspondence is then extended to include a notion of internal action. This allows the ...
Objects and classes in Algollike languages
 Information and Computation
, 2002
"... Many objectoriented languages used in practice descend from Algol. With this motivation, we study the theoretical issues underlying such languages via the theory of Algollike languages. It is shown that the basic framework of this theory extends cleanly and elegantly to the concepts of objects and ..."
Abstract

Cited by 22 (5 self)
 Add to MetaCart
Many objectoriented languages used in practice descend from Algol. With this motivation, we study the theoretical issues underlying such languages via the theory of Algollike languages. It is shown that the basic framework of this theory extends cleanly and elegantly to the concepts of objects and classes. An important idea that comes to light is that classes are abstract data types, whose theory corresponds to that of existential types. Equational and Hoarelike reasoning methods, and relational parametricity provide powerful formal tools for reasoning about Algollike objectoriented programs. 1
A RealTime Refinement Calculus That Changes Only Time
 PROC. 7TH BCS/FACS REFINEMENT WORKSHOP, ELECTRONIC WORKSHOPS IN COMPUTING
, 1996
"... The behaviour of a realtime system that interacts repeatedly with its environment is most succinctly specified by its possible traces, or histories. We present a way of using the refinement calculus for developing realtime programs from requirements expressed in this form. Our tracebased specif ..."
Abstract

Cited by 22 (12 self)
 Add to MetaCart
The behaviour of a realtime system that interacts repeatedly with its environment is most succinctly specified by its possible traces, or histories. We present a way of using the refinement calculus for developing realtime programs from requirements expressed in this form. Our tracebased specification statements and target language constructs constrain the traces of system variables, rather than updating them destructively like the usual statemachine model. The only variable that is updated is a special currenttime variable. The resulting calculus allows refinement from formal specifications with hard realtime requirements, to highlevel language programs annotated with precise timing constraints.
Foundations for a Practical Theory of Program Refinement and Transformation
, 1994
"... A wide spectrum language is presented, which is designed to facilitate the proof of the correctness of refinements and transformations. Two different proof methods are introduced and used to prove some fundamental transformations, including a general induction rule (Lemma 3.9) which enables transfor ..."
Abstract

Cited by 21 (14 self)
 Add to MetaCart
A wide spectrum language is presented, which is designed to facilitate the proof of the correctness of refinements and transformations. Two different proof methods are introduced and used to prove some fundamental transformations, including a general induction rule (Lemma 3.9) which enables transformations of recursive and iterative programs to be proved by induction on their finite truncations. A theorem for proving the correctness of recursive implementations is presented (Theorem 3.21), which provides a method for introducing a loop, without requiring the user to provide a loop invariant. A powerful, general purpose, transformation for removing or introducing recursion is described and used in a case study (Section 5) in which we take a small, but highly complex, program and apply formal transformations in order to uncover an abstract specification of the behaviour of the program. The transformation theory supports a transformation system, called FermaT, in which the applicability conditions of each transformation (and hence the correctness of the result) are mechanically verified. These results together considerably simplify the construction of viable program transformation tools; practical consequences are briefly discussed.
Procedures and Invariants in the Refinement Calculus
 Science of Computer Programming
, 1994
"... Invariants allow a rigorous treatment of types as sets in the refinement calculus, a method for developing imperative programs. The interaction of procedures and invariants is explored, resulting in a practical formalisation of existing programming practice. 1 Introduction The notion of local invar ..."
Abstract

Cited by 20 (1 self)
 Add to MetaCart
Invariants allow a rigorous treatment of types as sets in the refinement calculus, a method for developing imperative programs. The interaction of procedures and invariants is explored, resulting in a practical formalisation of existing programming practice. 1 Introduction The notion of local invariants [9] was introduced to give rigorous treatment to types in the refinement calculus [7, 6, 8, 10]. Typing is a special kind of invariant. For example, in the scope of the declaration n : N, which introduces a new local variable n of type N (the natural numbers), the invariant is n 2 N, and all commands preserve it. The exploration [9] of the interaction between invariants and statements of a simple languageDijkstra's language [2] with extensionsconsidered only language constructs including assignment, iteration, selection and recursion. We extend that work by examining a more complex language structure: the procedure. Although this paper deals only with parameterless procedures, th...