HOME

TheInfoList



OR:

HOL (Higher Order Logic) denotes a family of interactive theorem proving systems using similar (higher-order) logics and implementation strategies. Systems in this family follow the LCF (Logic for Computable Functions) approach as they are implemented as a library which defines an
abstract data type In computer science, an abstract data type (ADT) is a mathematical model for data types, defined by its behavior (semantics) from the point of view of a '' user'' of the data, specifically in terms of possible values, possible operations on data ...
of proven
theorem In mathematics and formal logic, a theorem is a statement (logic), statement that has been Mathematical proof, proven, or can be proven. The ''proof'' of a theorem is a logical argument that uses the inference rules of a deductive system to esta ...
s such that new objects of this type can only be created using the functions in the library which correspond to
inference rule Rules of inference are ways of deriving conclusions from premises. They are integral parts of formal logic, serving as norms of the logical structure of valid arguments. If an argument with true premises follows a rule of inference then the co ...
s in
higher-order logic In mathematics and logic, a higher-order logic (abbreviated HOL) is a form of logic that is distinguished from first-order logic by additional quantifiers and, sometimes, stronger semantics. Higher-order logics with their standard semantics are m ...
. As long as these functions are correctly implemented, all theorems proven in the system must be valid. As such, a large system can be built on top of a small trusted kernel. Systems in the HOL family use ML or its successors. ML was originally developed along with LCF as a meta-language for theorem proving systems; in fact, the name stands for "Meta-Language".


Underlying logic

HOL systems use variants of classical
higher-order logic In mathematics and logic, a higher-order logic (abbreviated HOL) is a form of logic that is distinguished from first-order logic by additional quantifiers and, sometimes, stronger semantics. Higher-order logics with their standard semantics are m ...
, which has simple axiomatic foundations with few axioms and well-understood semantics. The logic used in HOL provers is closely related to Isabelle/HOL, the most widely used logic of Isabelle.


HOL implementations

A number of HOL systems (sharing essentially the same logic) remain active and in use: # HOL4 the only presently maintained and developed system stemming from the HOL88 system, which was the culmination of the original HOL implementation effort, led by Mike Gordon. HOL88 included its own ML implementation, which was in turn implemented on top of
Common Lisp Common Lisp (CL) is a dialect of the Lisp programming language, published in American National Standards Institute (ANSI) standard document ''ANSI INCITS 226-1994 (S2018)'' (formerly ''X3.226-1994 (R1999)''). The Common Lisp HyperSpec, a hyperli ...
. The systems that followed HOL88 (HOL90, hol98 and HOL4) were all implemented in
Standard ML Standard ML (SML) is a General-purpose programming language, general-purpose, High-level programming language, high-level, Modular programming, modular, Functional programming, functional programming language with compile-time type checking and t ...
; while hol98 is
coupled ''Coupled'' is an American dating game show that aired on Fox from May 17 to August 2, 2016. It was hosted by television personality, Terrence J and created by Mark Burnett, of '' Survivor'', '' The Apprentice'', '' Are You Smarter than a 5th ...
to Moscow ML, HOL4 can be built with either Moscow ML or
Poly/ML Standard ML (SML) is a General-purpose programming language, general-purpose, High-level programming language, high-level, Modular programming, modular, Functional programming, functional programming language with compile-time type checking and t ...
. All come with large libraries of theorem proving code which implement extra automation on top of the very simple core code. HOL4 is BSD licensed. #
HOL Light HOL Light is a proof assistant for classical higher-order logic. It is a member of the HOL theorem prover family. Compared with other HOL systems, HOL Light is intended to have relatively simple foundations. HOL Light is authored and maintained ...
an experimental "minimalist" version of HOL which has since grown into another mainstream HOL variant; its logical foundations remain unusually simple. HOL Light, originally implemented in Caml Light, now uses
OCaml OCaml ( , formerly Objective Caml) is a General-purpose programming language, general-purpose, High-level programming language, high-level, Comparison of multi-paradigm programming languages, multi-paradigm programming language which extends the ...
. HOL Light is available under the new BSD license.
ProofPower
a collection of six tools designed to provide special support grounded in HOL for working with the
Z notation The Z notation is a formal specification language used for describing and modelling computing systems. It is targeted at the clear specification of computer programs and computer-based systems in general. History In 1974, Jean-Raymond Abria ...
for formal specification. The tool PPDaz supporting specification and verification of programs written in a subset of Ada was previously only supplied under a proprietary licence. All the tools are now available under the GNU GPL v2 license.
HOL Zero
a minimalist implementation focused on trustworthiness. HOL Zero is GNU GPL 3+ licensed.

An end-to-end verified HOL Light implementation on top of CakeML.


Formal proof developments

The CakeML project developed a formally proven compiler for ML. Previously, HOL was used to develop a formally proven
Lisp Lisp (historically LISP, an abbreviation of "list processing") is a family of programming languages with a long history and a distinctive, fully parenthesized Polish notation#Explanation, prefix notation. Originally specified in the late 1950s, ...
implementation running on ARM, x86 and PowerPC. HOL was also used to formalize the
semantics Semantics is the study of linguistic Meaning (philosophy), meaning. It examines what meaning is, how words get their meaning, and how the meaning of a complex expression depends on its parts. Part of this process involves the distinction betwee ...
of x86 multiprocessors as well as the
machine code In computer programming, machine code is computer code consisting of machine language instructions, which are used to control a computer's central processing unit (CPU). For conventional binary computers, machine code is the binaryOn nonb ...
for Power ISA and ARM architectures.


References


Further reading

*


External links

*
Documents specifying HOL's basic logic

HOL4 Description manual
includes system logic specification
Virtual library formal methods information
{{ML programming Proof assistants Logic in computer science Software using the BSD license