Harrop,
Ronald (1926)
[Harrop 56, Harrop 60].
Après avoir montré que des énoncés de la forme
(ou
) ne sont démontrables que si
soit
soit
l'est (ou
l'est
pour un terme
),
Harrop a recherché des résultats similaires pour des
énoncés de la forme
(ou
).
La question est donc de savoir si on peut se contenter de
preuves constructives* pour démontrer ces énoncés.
Harrop a montré que pour que la démontrabilité de ces formules
puisse se réduire à la démontrabilité constructive,
il fallait que les occurrences de
et
dans la formule
soient contraintes.
Cette contrainte aboutit à la notion de formule de Harrop,
et à celle de formule héréditaire de Harrop*
si on veut que toutes les étapes de
la démonstration de
ou
(ou
)
soit constructives.
C'est cette propriété de constructivité
qui permet de conserver en Prolog la notion de réponse qui existe en Prolog
(voir la section
«Prolog -- clauses de Horn et programmation logique»*).
Ronald Harrop est actuellement (1998) professeur émérite à l'université Simon Fraser de Vancouver, où il étudie les applications médicales de l'informatique (radiothérapie, tomographie).
Harrop (formules héréditaires de).
n.f.
Formule engendrée par le non-terminal
de
la grammaire suivante :
Les non-terminaux ,
et
engendrent respectivement les clauses, les buts
et les formules atomiques* (ou atomes).
Par convention,
ces dernières sont des
-termes simplement typés* de
type o*
(
).
Les catégories et
sont souvent notées
et
pour goal (but*)
et definite clause (clause définie*).
Malheureusement,
ce
et ce
deviennent perturbants quand on
considère l'habitude,
venant de la théorie des preuves en calcul des séquents,
d'appeler les formules analogues à celles de
des formules de
droite,
et formules analogues à celles de
des formules de gauche.
On peut spécifier en Prolog la structure des formules héréditaires de Harrop
de la façon suivante.
Plutôt que d'utiliser deux règles pour les clauses et les buts,
on n'utilise qu'une règle munie d'une
polarité*.
type harrop formule -> (A->A->A) -> o .
harrop (A /
harrop (qqsoit F) Pol :- pi x
harrop (A => B) Pol :- harrop A (INV Pol) , harrop B Pol .
harrop (A
harrop (existe F) PLUS :- pi x B) Pol :- harrop A Pol , harrop B Pol .
( harrop (F x) Pol ) .
/ B) PLUS :- harrop A PLUS , harrop B PLUS .
( harrop (F x) PLUS ) .
On peut aussi proposer la définition suivante qui véhicule mieux l'intuition que les formules de Harrop sont des formules de Horn «augmentées».
harrop F Pol :-
( pi F( horn (qqsoit F) PLUS :- pi x
( horn (F x) PLUS ) )
=> pi A(pi B
( horn (A => B) PLUS :- horn A MOINS , horn B PLUS ))
=> horn F Pol ) .
Hauptsatz.
n.m.
(rel. Gentzen*, calcul des séquents* et coupure*)
(allemand pour «théorème fondamental»).
La règle de coupure est redondante et peut être éliminée.
Dans le cas où des axiomes sont ajoutés au calcul des séquents pour
représenter une théorie par rapport à laquelle se font les preuves,
les applications de la règle de coupure qui concernent ces axiomes
ne peuvent être éliminées.
La redondance concerne les théorèmes, mais pas les preuves. Les mêmes théorèmes peuvent être prouvés avec ou sans règles de coupure, mais pas nécessairement avec les mêmes preuves.
Il est heureux que la règle de coupure soit redondante car c'est la seule
du calcul des séquents qui n'a pas la propriété de la sous-formule.
En effet,
la formule qui est partagée par les prémisses ne figure pas
dans la conclusion.
Cela pose problème pour une procédure de recherche de preuve qui
utilise les règles de déduction de bas en haut.
On peut alors se demander pourquoi la règle de coupure figure dans le système déductif initial. D'une part, elle a un contenu intuitif évident, celui de démontrer des lemmes séparément et de les utiliser dans une preuve. Elle a donc sa place à côté des autres règles qui elles aussi ont un contenu intuitif évident. D'autre part, elle résume des propriétés métalogiques du calcul des séquents : beaucoup de métathéorèmes se démontrent avec son aide. En fait, elle résume tellement bien le calcul des séquents qu'elle possède une variante qui est complète pour une présentation appropriée du calcul des prédicats : la règle de résolution*. Dans ce cas, la théorie est entièrement représentée par des axiomes, les clauses*, et la règle de coupure ne peut pas du tout être éliminée.
Herbrand,
Jacques (Paris, 1908-La Bérarde, 1931)
[Herbrand 68].
En étudiant l'Entscheidungsproblem
(le problème de reconnaître si une proposition est vraie ou non
dans une théorie du calcul des prédicats),
Herbrand a montré qu'il n'était pas nécessaire de considérer
un univers arbitraire d'interprétation des formules,
mais qu'il suffisait de considérer
une suite croissante d'interprétations par des termes
construits à l'aide des symboles de la théorie et de symboles
représentant l'imbrication des quantificateurs.
Une formule est valide si et seulement si
elle est validée par l'une de ces interprétations.
L'argument de croissance de la suite est
la taille des termes des interprétations.
Le théorème de Herbrand conduit à une syntaxisation de la sémantique. On peut y voir aussi un passage du calcul des prédicats au calcul propositionnel puisque l'interprétation des formules donne des formules sans variables ; Herbrand propose donc une technique d'élimination des quantificateurs.
L'application la plus connue du théorème de Herbrand est le principe de
résolution* de Robinson.
Ce principe permet de calculer le modèle de Herbrand qui invalide
la théorie augmentée de la négation du théorème
(preuve par réfutation)
à l'aide d'une combinaison de l'opération
d´unification*
et de la règle de coupure*.
Une spécialisation de la résolution est au cur de la
sémantique opérationnelle de Prolog.
Un trait important des travaux de Herbrand est l'approche constructive :
les définitions sont conçues comme des algorithmes qui construisent
des objets et les propriétés sont décrites avec les algorithmes qui
permettent de les vérifier.
C'est ainsi que, ayant à résoudre des systèmes d'équations sur les termes
de ses interprétations,
Herbrand décrit ce qui passe pour être la première expression de la procédure
d'unification.
- Si une des égalités à satisfaire égale une variable restreinte [essentiellement existentielle*]
à un autre individu, ou bien cet individu contient
, et on ne peut y satisfaire [test d´occurrence*], ou bien il ne contient pas
; cette égalité sera alors une des égalités associées cherchées [une substitution solution*] et on remplacera
par cette fonction dans les autres égalités à satisfaire.
- Si une des égalités à satisfaire égale une variable générale [essentiellement universelle*] à un autre individu, qui ne soit pas une variable restreinte, il est impossible d'y satisfaire.
- Si une des égalités à satisfaire égale
à
, ou bien les fonctions élémentaires
et
sont différentes, auquel cas il est impossible d'y satisfaire, ou bien les fonctions
et
sont les mêmes, auquel cas on remplace l'égalité par celles obtenues en égalant
à
.
En proposant des définitions constructives de fonctions de plus en plus complexes, Jacques Herbrand a aussi contribué à l'émergence de la notion de fonction récursive générale [Herbrand 68, Kleene 71, Chabert et al. 94].
Herbrand (base de).
n.f.
(rel. Herbrand*)
Ensemble des formules atomiques* finies
qui peuvent être construites avec les
symboles de prédicat et les constructeurs de termes d'un programme.
La sémantique déclarative de Prolog*
fait correspondre à tout programme une partie de sa base de Herbrand,
qui est un modèle du programme.
Herbrand (univers de).
n.m.
(rel. Herbrand*)
Ensemble des termes finis qui peuvent être formés avec les
constructeurs de termes d'un programme.
En Prolog,
on étend cette notion en considérant l'ensemble des combinateurs
-normaux qui peuvent être formés avec
les constructeurs de termes d'un programme.
.
n.f.
Higher-order Hereditary Harrop Grammar
ou grammaire en formules héréditaires de Harrop*
d'ordre
supérieur [Le Huitouze et al. 93a].
Résulte de la transposition à
Prolog* du
principe des
*
(voir section «
Prolog et grammaires logiques»*).
Horn,
Alfred [Horn 51].
En étudiant les relations entre des structures
, ...,
et
vis-à-vis de la satisfaction d'une
axiomatisation
,
Horn a montré les deux théorèmes suivants (entre autres) :
(a) si
a une
forme conjonctive prénexe* dont les facteurs de la
matrice* contiennent au plus un
littéral* positif*
(en termes modernes, une théorie de Horn),
et si
est vraie de chacune des
,
alors
est vraie de
,
(b) si les
sont les mêmes pour chaque
,
si
a une forme prénexe sans quantificateur existentiel,
et si
est vraie de
,
alors
est vraie de
.
Une conséquence importante est que si deux structures et
satisfont une théorie de Horn,
alors leur intersection la satisfait aussi.
Par (a),
la satisfait,
et puisque il n'y a pas de quantification existentielle,
la restriction
de
à
la satisfait,
et enfin, par (b),
la satisfait.
Les exemples suivants montrent le rôle des hypothèses des
théorèmes (a) et (b).
Les structures
et
satisfont l'axiome
,
mais la structure
ne la satisfait pas.
Inversement,
la structure satisfait l'axiome
,
alors qu'aucune des structures
ou
ne le satisfait.
En terme de modèle, les théorèmes de Horn permettent d'isoler un unique plus petit modèle de Herbrand* pour les théories de Horn, et donc de donner la sémantique des programmes Prolog*. Par définition, la sémantique d'un programme Prolog est son unique plus petit modèle de Herbrand*.
Horn (clause de).
n.f.
(rel. Horn*)
Clause* qui ne contient pas plus d'un
littéral* positif*.
On appelle tête l'éventuel littéral positif et corps les littéraux
négatifs*.
En général,
on note la clause
comme une implication
.
On appelle clause définie une clause de Horn qui a exactement un littéral positif. On appelle clause unitaire ou fait* une clause définie dont le corps est vide.
Un programme Prolog* est un ensemble fini de clauses de Horn. Les modèles des théories décrites par des clauses de Horn ont la propriété de constituer une collection fermée par intersections : l'intersection de deux modèles est encore un modèle.
Huet (semi-algorithme de).
n.m.
Procédure qui calcule les préunificateurs* d'un problème
d´unification d´ordre supérieur*.
La procédure parcourt un arbre de recherche dont les n
uds sont
étiquetés par des problèmes d'unification d'ordre
supérieur et les arcs sont étiquetés par des substitutions*.
Un invariant est que tout préunificateur du problème d'unification d'ordre
supérieur qui étiquette la racine de l'arbre est
la composition des substitutions trouvées sur l'arête de l'arbre
qui mène à un n
ud et d'un préunificateur du problème d'unification
qui étiquette ce n
ud.
Les n
uds feuilles peuvent être soit en échec
si on a détecté une contradiction dans le problème associé,
soit en succès si on a détecté que le problème associé a une solution triviale,
soit ouverts dans les autres cas.
L'objectif du développement de l'arbre est de n'avoir plus
que des n
uds en échec ou en succès.
Le développement de l'arbre se fait à l'aide de plusieurs opérations élémentaires qui terminent toujours. Que l'unification ne termine pas se traduit donc exclusivement par le développement d'un arbre infini.
Huet présente une version de l'algorithme qui résoud les problèmes
d'unification modulo
-équivalence
et des commentaires qui explique comment cet algorithme se spécialise pour
la
-équivalence.
C'est cette dernière version qui est utilisée en
Prolog et c'est la seule que nous décrivons.
L'opération élémentaire de simplification
* permet de
détecter les contradictions dans un n
ud ouvert ou,
en leur absence,
de ramener tout problème à des sous-problèmes de la forme
où
est flexible.
Elle vérifie aussi que les constantes ou variables essentiellement
universelles qui apparaissent en tête des termes d'une même paire
sont compatibles.
Quand ce n'est pas le cas,
le n
ud est déclaré en échec.
L'opération élémentaire
* s'applique à des paires
flexibles*
et permet de détecter les problèmes résolus.
Elle reconnaît des formes particulières de problème qui peuvent
être résolues sans utiliser la procédure générale.
Elle a un rôle heuristique important et il faut que les formes reconnues
couvrent effectivement les cas «triviaux».
L'opération élémentaire
* s'applique à des paires
flexible-rigide*
non-résolues et dérive de nouveaux n
uds fils du n
ud ouvert
en inventant de
nouvelles substitutions dont le domaine
est la variable en tête* de
.