Élimination des coupures.
n.f.
(
calcul des séquents*, Gentzen* et Hauptsatz*)
Élimination des quantificateurs.
n.f.
Technique qui permet de ramener des preuves dans le
calcul des prédicats à des preuves dans le calcul propositionnel.
Le théorème de Herbrand*,
le principe de résolution* de Robinson,
et les règles d'introduction du
calcul des séquents*
(quand elles sont interprétées «de bas en haut»)
décrivent des techniques d'élimination des quantificateurs.
Le théorème de Herbrand permet de se ramener à chercher une
formule prouvable parmi une suite de formules sans quantificateur ni variable.
Le principe de résolution permet de se ramener à l'application d'un
modus ponens généralisé.
Les règles du calcul des séquents permettent
de se ramener à des formules sans quantificateur.
.
[Elliott et Pfenning 91]
Le système
est la première implémentation complète de
Prolog.
C'est un interpréteur écrit en Common Lisp par Frank Pfenning de
l'université de Carnegie Mellon et Amy Felty du laboratoire
Bell Labs de
(
à l'époque de ce développement -- 1991 --,
Lucent Technologies maintenant).
Cette équivalence formalise le renommage des variables.
Par exemple,
mais
car
.
La -équivalence est automatiquement prise en compte par la
représentation des
-termes de niveau objet proposée.
Il n'y a donc pas d'expression explicite de la
-équivalence.
Cette équivalence formalise l'évaluation d'une application par substitution d'un
terme, , à un paramètre formel,
.
Par exemple,
mais
car
est libre dans elle-même et liée dans
.
Cependant,
.
Il est possible de satisfaire la précondition de
la
-équivalence pour tout terme de la forme
en utilisant la
-équivalence pour renommer les variables
liées de
.
On peut représenter cette relation en Prolog pour des
-termes de niveau objet
de la façon suivante :
type beta l_terme -> l_terme -> o .
beta (app (abs E) F) (E F) .
En fait,
on a utilisé la -équivalence du métalangage,
Prolog.
Cette équivalence
est une forme faible de la -équivalence qui s'applique
seulement lorsque le membre gauche du
-rédex est lui-même un
-rédex.
C'est une circonstance très fréquente en
Prolog
et qui permet de représenter les termes sous leur forme
-longue*
sans encourir de surcoût.
En effet,
l'implémentation de cette équivalence ne nécessite ni renommage ni recopie.
On peut représenter cette relation en Prolog pour des
-termes de niveau objet
de la façon suivante :
type beta_eta l_terme -> _terme -> o .
beta_eta (app (abs (app E)) F) (app E F) .
Cette équivalence est une forme faible de la -équivalence qui s'applique
seulement lorsque le paramètre effectif est une variable
qui n'apparaît pas libre dans la fonction.
Si
est une variable,
la
-conversion de
en
rend la condition vraie
(car
)
et trivialise le calcul de
.
La
-réduction revient donc à un renommage de variable.
La -équivalence est à la base de la définition d'un fragment de
Prolog,
appelé
*
pour lequel l´unification*
est décidable* et unitaire*.
Cette équivalence
formalise le principe d´extensionnalité des fonctions* :
deux fonctions qui rendent partout le même résultat sont les mêmes.
Il permet de montrer
.
Par exemple,
mais
car
.
Contrairement à ce qui se passe pour la
-équivalence*,
la
-équivalence* ne peut jamais rien
pour satisfaire la précondition de la
-équivalence*.
On peut représenter cette relation en Prolog pour des
-termes de niveau objet
de la façon suivante :
type eta l_terme -> l_terme -> o .
eta (abs (app E)) E .
-Équivalence.
n.f.
Plus petite relation d'équivalence définie par congruence
sur la syntaxe des
-termes*
et contenant la
-équivalence*,
la
-équivalence*,
et optionnellement la
-équivalence*.
Les équivalences
et
sont toujours adoptées
dans le
-calcul,
mais l'équivalence
est optionnelle.
Ce qui ne signifie pas qu'elle est sans effet.
Seulement,
elle n'intervient pas dans la puissance de calcul du
-calcul.
-Expansion.
n.f.
Action de réécrire un terme
en
,
où
a un type de la forme
et où
n'a pas d'occurrence libre dans
.
Combinée avec la
-réduction*, cette opération
produit la forme normale
-longue*.
Extensionnel.
adj.
(ant. intentionnel*)
Se dit d'un procédé point par point pour définir des ensembles
ou des fonctions, ou pour prouver des propositions.
La définition d'un ensemble par ses éléments est extensionnelle,
ainsi que la définition d'une fonction par son graphe.
Une démonstration extensionnelle d'une quantification universelle peut
procéder par cas.
Extensionnalité fonctionnelle.
n.f.
Voir aussi extensionnalité en
Prolog*.
Principe selon lequel deux fonctions qui rendent partout les mêmes
résultats sont égales :
Cette propriété n'est pas démontrable à l'aide des seules
équivalences * et
*.
Il faut ajouter la
-équivalence*
pour satisfaire ce principe.
Un point important à noter est que la -équivalence ne satisfait
complètement le principe d'extensionnalité que pour le
-calcul* pur (c'est-à-dire non-typé).
Dans le cas du
-calcul simplement typé*,
des fonctions décrites par des
-termes qui ne sont pas
-équivalents*
peuvent être extensionnellement égales sur les termes de leur type argument.
Cela est déjà vrai en dehors de tout typage lorsque l'on considère
pour arguments des ensembles particuliers de
-termes.
Par exemple,
l'incrémentation des
entiers de Church* peut être
réalisée par deux
-termes qui ne sont pas
-équivalents,
mais qui pourtant donnent les mêmes résultats sur tous les entiers de Church.
Prouver l'équivalence
de ces deux -termes pour un domaine de termes
donné nécessite un principe de déduction plus fort :
l'induction sur la structure des termes.