Results 1  10
of
13
A Brief Overview of HOL4
 In Theorem Proving in Higher Order Logics, TPHOLs
, 2008
"... Abstract. The HOL4 proof assistant supports specification and proof in classical higher order logic. It is the latest in a long line of similar systems. In this short overview, we give an outline of the HOL4 system and how it may be applied in formal verification. 1 ..."
Abstract

Cited by 30 (3 self)
 Add to MetaCart
Abstract. The HOL4 proof assistant supports specification and proof in classical higher order logic. It is the latest in a long line of similar systems. In this short overview, we give an outline of the HOL4 system and how it may be applied in formal verification. 1
Timing UDP: Mechanized Semantics for Sockets, Threads, and Failures
, 2002
"... This paper studies the semantics of failure in distributed programming. We present a semantic model for distributed programs that use the standard sockets interface; it covers message loss, host failure and temporary disconnection, and supports reasoning about distributed infrastructure. We cons ..."
Abstract

Cited by 21 (13 self)
 Add to MetaCart
This paper studies the semantics of failure in distributed programming. We present a semantic model for distributed programs that use the standard sockets interface; it covers message loss, host failure and temporary disconnection, and supports reasoning about distributed infrastructure. We consider interaction via the UDP and ICMP protocols.
Rigour is good for you and feasible: reflections on formal treatments of C and UDP sockets
, 2002
"... Introduction We summarise two projects that formalised complex real world systems: UDP and its sockets API, and the C programming language. We describe their goals and the techniques used in both. We conclude by discussing how such techniques might be applied to other system software and by describ ..."
Abstract

Cited by 14 (12 self)
 Add to MetaCart
Introduction We summarise two projects that formalised complex real world systems: UDP and its sockets API, and the C programming language. We describe their goals and the techniques used in both. We conclude by discussing how such techniques might be applied to other system software and by describing the benefits this may bring. 2. Specifying UDP and the sockets API We recently formalised a substantial behavioural specification, that for the Internet protocol UDP, as presented to programmers through the sockets interface [12, 10, 1, 5, 11]. Our aim was to make clear the behavioural subtleties of the widely used  but poorly documented  sockets API. This clarification of the interface should ease the production of robust software that uses it. The specification was necessarily developed post hoc; we developed it by referring to existing documentation (RFCs and source code, for example), and by experimentally checking existing implementations, using automated tools. We produced th
Complete integer decision procedures as derived rules in HOL
 Theorem Proving in Higher Order Logics, TPHOLs 2003, volume 2758 of Lect. Notes in Comp. Sci
, 2003
"... Abstract. I describe the implementation of two complete decision procedures for integer Presburger arithmetic in the HOL theoremproving system. The first procedure is Cooper’s algorithm, the second, the Omega Test. Between them, the algorithms illustrate three different implementation techniques in ..."
Abstract

Cited by 9 (0 self)
 Add to MetaCart
Abstract. I describe the implementation of two complete decision procedures for integer Presburger arithmetic in the HOL theoremproving system. The first procedure is Cooper’s algorithm, the second, the Omega Test. Between them, the algorithms illustrate three different implementation techniques in a fully expansive system. 1
Compilation as Rewriting in Higher Order Logic
"... Abstract. We present an approach based on the use of deductive rewriting to construct a trusted compiler for a subset of the native functions of higher order logic. Program transformations are specified by equality theorems that characterize the transformations; the mechanical application of these r ..."
Abstract

Cited by 9 (5 self)
 Add to MetaCart
Abstract. We present an approach based on the use of deductive rewriting to construct a trusted compiler for a subset of the native functions of higher order logic. Program transformations are specified by equality theorems that characterize the transformations; the mechanical application of these rules is directed by programs written in the metalanguage of the logical framework. Each application of a rule ensures that the transformed code is equivalent to the original one, thus warranting the correctness of the entire compiler. 1
A proofproducing software compiler for a subset of higher order logic
, 2006
"... We discuss a proofproducing compiler which translates first order recursion equations, defined in higher order logic, to assembly language. The front end of the compiler is based on a series of sourcetosource translations, starting with a semantic CPS translation and culminating in graphcolouri ..."
Abstract

Cited by 7 (1 self)
 Add to MetaCart
We discuss a proofproducing compiler which translates first order recursion equations, defined in higher order logic, to assembly language. The front end of the compiler is based on a series of sourcetosource translations, starting with a semantic CPS translation and culminating in graphcolouring register allocation. Equality of the original program and the result of register allocation is proved automatically. A translation validation assertion is then generated, relating values of the original function to the result of running the compiled code on a subset of the ARM machine. Approaches to the automatic proof of this formula are also discussed.
S.: Proofproducing synthesis of ML from higherorder logic
 International Conference on Functional Programming (ICFP). ACM (2012
"... The higherorder logic found in proof assistants such as Coq and various HOL systems provides a convenient setting for the development and verification of pure functional programs. However, to efficiently run these programs, they must be converted (or “extracted”) to functional programs in a program ..."
Abstract

Cited by 4 (3 self)
 Add to MetaCart
The higherorder logic found in proof assistants such as Coq and various HOL systems provides a convenient setting for the development and verification of pure functional programs. However, to efficiently run these programs, they must be converted (or “extracted”) to functional programs in a programming language such as ML or Haskell. With current techniques, this step, which must be trusted, relates similar looking objects that have very different semantic definitions, such as the settheoretic model of a logic and the operational semantics of a programming language. In this paper, we show how to increase the trustworthiness of this step with an automated technique. Given a functional program expressed in higherorder logic, our technique provides the corresponding program for a functional language defined with an operational semantics, and it provides a mechanically checked theorem relating the two. This theorem can then be used to transfer verified properties of the logical function to the program. We have implemented our technique in the HOL4 theorem prover, translating functions to a core subset of Standard ML, and have applied it to examples including functional data structures, a parser generator, cryptographic algorithms, and a garbage collector.
OpenTheory: Package Management for Higher Order Logic Theories
"... Interactive theorem proving has grown from toy examples to major projects formalizing mathematics and verifying software, and there is now a critical need for theory engineering techniques to support these efforts. This paper introduces the OpenTheory project, which aims to provide an effective pack ..."
Abstract

Cited by 4 (3 self)
 Add to MetaCart
Interactive theorem proving has grown from toy examples to major projects formalizing mathematics and verifying software, and there is now a critical need for theory engineering techniques to support these efforts. This paper introduces the OpenTheory project, which aims to provide an effective package management system for logical theories. The OpenTheory article format allows higher order logic theories to be exported from one theorem prover, compressed by a standalone tool, and imported into a different theorem prover. Articles naturally support theory interpretations, which is the mechanism by which theories can be cleanly transferred from one theorem prover context to another, and which also leads to more efficient developments of standard theories.
Composable Packages for Higher Order Logic Theories
"... Interactive theorem proving is tackling ever larger formalization and verification projects, and there is a critical need for theory engineering techniques to support these efforts. One such technique is effective package management, which has the potential to simplify the development of logical the ..."
Abstract
 Add to MetaCart
Interactive theorem proving is tackling ever larger formalization and verification projects, and there is a critical need for theory engineering techniques to support these efforts. One such technique is effective package management, which has the potential to simplify the development of logical theories by precisely checking dependencies and promoting reuse. This paper introduces a domainspecific language for defining composable packages of higher order logic theories, which is designed to naturally handle the complex dependency structures that often arise in theory development. The package composition language functions as a module system for theories, and the paper presents a welldefined semantics for the supported operations. Preliminary tests of the package language and its toolset have been made by packaging the theories distributed with the HOL Light theorem prover. This experience is described, leading to some initial theory engineering discussion on the ideal properties of a reusable theory. 1
Proving as Programming with DrHOL: A Preliminary Design
"... Abstract. We discuss the design of a new implementation of the HOL system aimed at improved graphical user interface support for formal proof. We call our approach Proving as Programming, since we believe that metalanguage programming is a central aspect of proof construction. Thus we look to contem ..."
Abstract
 Add to MetaCart
Abstract. We discuss the design of a new implementation of the HOL system aimed at improved graphical user interface support for formal proof. We call our approach Proving as Programming, since we believe that metalanguage programming is a central aspect of proof construction. Thus we look to contemporary programming environments for inspiration on how to provide graphical support for proof. In particular, our implementation builds upon DrScheme, a popular programming environment for Scheme. 1 Proving as Programming We have begun work on DrHOL, a new implementation of the HOL logic. DrHOL is systematically derived from HOL4 [8] and aims at improving user interfaces in many aspects of work in HOL: development of proof procedures, construction of terms and definitions, interactive proof, and embedding of object languages are seen as candidates for better interface support. We believe that programmability is an essential part of all these activities. To support our view, we will discuss the