@MISC{09thehol, author = {}, title = {The HOL System LOGIC Preface}, year = {2009} }

Share

OpenURL

Abstract

This volume contains the description of the HOL system’s logic. It is one of four volumes making up the documentation for HOL: (i) LOGIC: a formal description of the higher order logic implemented by the HOL system. (ii) TUTORIAL: a tutorial introduction to HOL, with case studies. (iii) DESCRIPTION: a detailed user’s guide for the HOL system; (iv) REFERENCE: the reference manual for HOL. These four documents will be referred to by the short names (in small slanted capitals) given above. This document, LOGIC, serves as a formal definition of higher order logic in terms of a set-theoretic semantics. This material was written by Andrew Pitts in 1991, and was originally part of DESCRIPTION. Because this logic is shared with other theorem-proving systems (HOL Light, ProofPower), and is similar to that implemented in Isabelle, where it is called Isabelle/HOL, it is now presented in its own manual. The HOL system is designed to support interactive theorem proving in higher order logic (hence the acronym ‘HOL’). To this end, the formal logic is interfaced to a general purpose programming language (ML, for meta-language) in which terms and theorems of the logic can be denoted, proof strategies expressed and applied, and logical theories developed. The version of higher order logic used in HOL is predicate calculus with terms from the typed lambda calculus (i.e. simple type theory). This was originally developed as a foundation for mathematics [2]. The primary application area of HOL was initially intended to be the specification and verification of hardware designs. (The use of higher order logic for this purpose was first advocated by Keith Hanna [3].) However, the logic does not restrict applications to hardware; HOL has been applied to many other areas. Thus, this document describes the theoretical underpinnings of the HOL system, and presents it abstractly. The approach to mechanizing formal proof used in HOL is due to Robin Milner [4], who also headed the team that designed and implemented the language ML. That work 3 4