Results 1  10
of
20
The IOA Language and Toolset: Support for Designing, Analyzing, and Building Distributed Systems
, 1998
"... This report describes a new language for distributed programming, the IOA language, together with a highlevel design and preliminary implementation for a suite of tools, the IOA toolset, to support the production of highquality distributed software. The language and tools are based on the I/O a ..."
Abstract

Cited by 28 (9 self)
 Add to MetaCart
This report describes a new language for distributed programming, the IOA language, together with a highlevel design and preliminary implementation for a suite of tools, the IOA toolset, to support the production of highquality distributed software. The language and tools are based on the I/O automaton model, which has been used to describe and verify distributed algorithms. The toolset supports a development process that begins with a highlevel specification, refines that specification via successively more detailed designs, and ends by automatically generating distributed programs. The toolset encourages system decomposition, which helps make distributed programs understandable and easy to modify. It also provides a variety of validation methods (theorem proving, model checking, and simulation), which can be used to ensure that the generated programs are correct, subject to assumptions about externallyprovided system services (e.g., communication services), and about the correctness of handcoded data type implementations.
Program Refinement by Theorem Prover
 In BCS FACS Sixth Refinement Workshop  Theory and Practise of Formal Software Development. 5th  7th January
, 1994
"... We describe a prototype tool for developing programs by stepwise refinement in a weakest precondition framework, based on the HOL theorem proving system. Our work is based on a mechanisation of the refinement calculus, which is a theory of correctness preserving program transformations. We also use ..."
Abstract

Cited by 21 (1 self)
 Add to MetaCart
We describe a prototype tool for developing programs by stepwise refinement in a weakest precondition framework, based on the HOL theorem proving system. Our work is based on a mechanisation of the refinement calculus, which is a theory of correctness preserving program transformations. We also use a tool for window inference that is part of the HOL system. Our tool permits subcomponents of a program to be refined separately, and the tool keeps track of the overall effects of each individual refinement. In particular, we show how specifications can be refined into code and how data refinements (i.e., replacing an abstract data structure with one that is more concrete) can be handled. All refinements are proved as theorems in the HOL logic, so our system is in fact a secure environment for program development. 1 Introduction Stepwise refinement is a methodology for developing programs from highlevel program specifications into efficient implementations. In this approach to program dev...
Program Verification using HOLUNITY
 Higher Order Logic Theorem Proving and Its Applications: HUG ’93, LNCS 780
, 1994
"... . HOLUNITY is an implementation of Chandy and Misra's UNITY theory in the HOL88 and HOL90 theorem provers. This paper shows how to verify safety and progress properties of concurrent programs using HOLUNITY. As an example it is proved that a liftcontrol program satisfies a given progress property ..."
Abstract

Cited by 16 (1 self)
 Add to MetaCart
. HOLUNITY is an implementation of Chandy and Misra's UNITY theory in the HOL88 and HOL90 theorem provers. This paper shows how to verify safety and progress properties of concurrent programs using HOLUNITY. As an example it is proved that a liftcontrol program satisfies a given progress property. The proof is compositional and partly automated. The progress property is decomposed into basic safety and progress properties, which are proved automatically by a developed tactic based on a combination of Gentzenlike proof methods and Pressburger decision procedures. The proof of the decomposition which includes induction is done mechanically using the inference rules of the UNITY logic implemented as theorems in HOL. The paper also contains some empirical results of running the developed tactic in HOL88 and HOL90, respectively. It turns out that HOL90 in average is about 9 times faster than HOL88. Finally, we discuss various ways of improving the tactic. 1 Introduction This paper pres...
A HOL Formalisation of the Temporal Logic of Actions
 Higher Order Logic Theorem Proving and Its Applications, volume 859 of Lecture Notes in Computer Science (LNCS
, 1994
"... . We describe an attempt to formalise the semantics of the ..."
Abstract

Cited by 11 (0 self)
 Add to MetaCart
. We describe an attempt to formalise the semantics of the
A Survey on Embedding Programming Logics in a Theorem Prover
 Institute of Information and Computing Sciences Utrecht University
, 2002
"... Theorem provers were also called 'proof checkers' because that is what they were in the beginning. They have grown powerful, however, capable in many cases to automatically produce complicated proofs. In particular, higher order logic based theorem provers such as HOL and PVS became popular because ..."
Abstract

Cited by 8 (2 self)
 Add to MetaCart
Theorem provers were also called 'proof checkers' because that is what they were in the beginning. They have grown powerful, however, capable in many cases to automatically produce complicated proofs. In particular, higher order logic based theorem provers such as HOL and PVS became popular because the logic is well known and very expressive. They are generally considered to be potential platforms to embed a programming logic for the purpose of formal verification. In this paper we investigate a number of most commonly used methods of embedding programming logics in such theorem provers and expose problems we discover. We will also propose an alternative approach: hybrid embedding.
Program Derivation Using the Refinement Calculator
 Theorem Proving in Higher Order Logics: 9th International Conference, volume 1125 of Lecture Notes in Computer Science
, 1996
"... . The refinement calculus provides a theory for the stepwise refinement ..."
Abstract

Cited by 6 (3 self)
 Add to MetaCart
. The refinement calculus provides a theory for the stepwise refinement
RealTime Unity
, 1994
"... We propose RealTime Unity in which the Unity operators co and 7! are generalized to the bounded forms cok and 7!k , where k is a time value. This is done in such a way that for k = 1 the bounded forms specialize to the unbounded forms. Hence RealTime Unity includes Unity as a subtheory. Real ..."
Abstract

Cited by 4 (0 self)
 Add to MetaCart
We propose RealTime Unity in which the Unity operators co and 7! are generalized to the bounded forms cok and 7!k , where k is a time value. This is done in such a way that for k = 1 the bounded forms specialize to the unbounded forms. Hence RealTime Unity includes Unity as a subtheory. RealTime Unity appears to be especially appropriate for reasoning about the interplay of realtime progress and safety properties. We argue that this sort of interplay is fundamental to the development of realtime programs and give a number of examples of the application of the theory to programs which require such an interplay. We then propose topics for further research. Keywords: Realtime, Unity, program refinement, concurrency. 1 Introduction The problem of specifying and proving properties of realtime programs has received much attention over the last ten years. This attention is due to the critical function which many of these programs provide. Since many realtime programs are ...
TkWinHOL: A Tool for Doing Window Inference in HOL
 In Proc. 1995 International Workshop on Higher Order Logic Theorem Proving and its Applications, Lecture
, 1995
"... Window inference is a method for contextual rewriting and refinement, supported by the HOL Window Inference Library. This paper describes a userfriendly interface for window inference. The interface permits the user to select subexpressions by pointing and clicking and to select transformations fro ..."
Abstract

Cited by 4 (2 self)
 Add to MetaCart
Window inference is a method for contextual rewriting and refinement, supported by the HOL Window Inference Library. This paper describes a userfriendly interface for window inference. The interface permits the user to select subexpressions by pointing and clicking and to select transformations from menus. The correctness of each transformation step is proved automatically by the HOL system. The interface can be tailored to particular userdefined theories. One such extension, for program refinement, is described. 1 Introduction Though the original purpose of the HOL system [8] was as a tool for hardware verification, it has become popular also as a basis for software verification (see for example [1, 5, 7]). However, the theories built for supporting the software development process are normally difficult to use, especially if one does not have any previous detailed knowledge of the HOL system. In order to make such theories available to a general audience, it is essential that user...
A UNITYbased Algorithm Design Assistant
, 1995
"... We address the problem of the automatic verification of reactive systems. For such algorithms, parallelism, nondeterminism and distribution, lead to frequent design flaws and make debugging difficult. Proving programs with respect to their specification may solve both these problems. In this fr ..."
Abstract

Cited by 3 (3 self)
 Add to MetaCart
We address the problem of the automatic verification of reactive systems. For such algorithms, parallelism, nondeterminism and distribution, lead to frequent design flaws and make debugging difficult. Proving programs with respect to their specification may solve both these problems. In this framework, we describe the implementation of an algorithm design assistant based upon the UNITY formalism. A theorem prover and a Presburger formulas calculator are used to perform the underlying proofs. We illustrate the main difficulties encountered with representative examples. Key words: Program verification, reactive programs, UNITY formalism, parallelism, distribution, theorem proving. I Introduction Concurrency and distribution generate two further difficulties with respect to sequential programming. Concurrency leads to a drastic increase in program states and distribution results in a knowledge loss of both any global state and time. Therefore, program debugging becomes especia...