In intuitionistic logic, the Harrop formulae, named after Ronald Harrop, are the class of formulae inductively defined as follows:[1][2][3]
- Atomic formulae are Harrop, including falsity (⊥);
is Harrop provided
and
are;
is Harrop for any well-formed formula
;
is Harrop provided
is, and
is any well-formed formula;
is Harrop provided
is.
By excluding disjunction and existential quantification (except in the antecedent of implication), non-constructive predicates are avoided, which has benefits for computer implementation.
Discussion
Harrop formulae are "well-behaved" also in a constructive context. For example, in Heyting arithmetic
, Harrop formulae satisfy a classical equivalence not generally satisfied in constructive logic:[1]
![{\displaystyle \neg \neg A\leftrightarrow A.}](https://wikimedia.org/api/rest_v1/media/math/render/svg/0457a3be5ba94fbc1d741ca6a7620a26dd0c3bcd)
There are however
-statements that are
-independent, meaning these are simple
statements for which excluded middle is not
-provable. Indeed, while intuitionistic logic proves
for any
, the disjunction will not be Harrop.
A more complex definition of hereditary Harrop formulae is used in logic programming as a generalisation of Horn clauses, and forms the basis for the language λProlog. Hereditary Harrop formulae are defined in terms of two (sometimes three) recursive sets of formulae. In one formulation:[4]
- Rigid atomic formulae, i.e. constants
or formulae
, are hereditary Harrop;
is hereditary Harrop provided
and
are;
is hereditary Harrop provided
is;
is hereditary Harrop provided
is rigidly atomic, and
is a G-formula.
G-formulae are defined as follows:[4]
- Atomic formulae are G-formulae, including truth(⊤);
is a G-formula provided
and
are;
is a G-formula provided
and
are;
is a G-formula provided
is;
is a G-formula provided
is;
is a G-formula provided
is, and
is hereditary Harrop.
History
Harrop formulae were introduced around 1956 by Ronald Harrop and independently by Helena Rasiowa.[2] Variations of the fundamental concept are used in different branches of constructive mathematics and logic programming.
See also
References