Best viewed in 24pt and full-screen
next up previous contents
Next: T Up: A-Z Previous: R

S

type (s, scission) (list A) -> (list A) -> (list A) -> o .
dynamic s .
s [X|Xs] [_ , _|Cs] [X|Ls] :- s Xs Cs Ls .
scission List Left Right :- s Right [] [] => s List List Left .


Scission d'une liste de longueur paire en deux moitiés.

S. (rel. logique combinatoire*) Combinateur de la logique combinatoire régi par l'axiome suivant.

tex2html_wrap_inline56136

Il est définissable en tex2html_wrap_inline56836-calcul* : tex2html_wrap_inline56140 et en tex2html_wrap_inline56836Prolog :

type comb_S ((A->B->C)->(A->B)->A->C) -> o

comb_S S :- pi xtex2html_wrap_inline56812(pi ytex2html_wrap_inline56812(pi ztex2html_wrap_inline56812( (S x y z) = (x z (y z)) ))) .

Semi-décidable. adj. (rel. décidable*) Se dit d'un problème de décision pour lequel il n'existe au mieux que des procédures qui terminent toujours dans les cas de succès et peuvent ne pas terminer dans les cas d'échec. On appelle ces procédures des semi-algorithmes.

Séquent. n.m. (rel. calcul des séquents*) Assemblage de formules tex2html_wrap_inline56150 qui énonce que la disjonction des tex2html_wrap_inline56152 est une conséquence de la conjonction des tex2html_wrap_inline56154. Un cas particulier intéressant est celui des séquents intuitionnistes. Ce sont les séquents où tex2html_wrap_inline56156.

Un autre cas particulier est celui des séquents de type. Un séquent de type tex2html_wrap_inline56158 énonce que tex2html_wrap_inline55774 a le type tex2html_wrap_inline56804 dans le contexte tex2html_wrap_inline56164. La forme exacte du contexte dépend du système de type et de sa présentation, mais il s'agit généralement d'une collection d'assertion de typage, tex2html_wrap_inline56166. Par exemple, dans le cas des types simples*, les tex2html_wrap_inline56168 sont des tex2html_wrap_inline56836-variables*.

Dans tous les cas, on appelle conséquent la partie droite d'un séquent et antécédent, la partie gauche.

sigma. synt.progr. (rel. pi*) Notation concrète du quantificateur existentiel, tex2html_wrap_inline54298, en tex2html_wrap_inline56836Prolog.

Ce connecteur est définissable en tex2html_wrap_inline56836Prolog de la manière suivante :

type sigma (_->o) -> o .

sigma B :- (B _) .

Signature. n.f. Ensemble de constantes typées. La signature d'un programme est l'ensemble des constantes qui y figurent. Dans la pratique, elles et leurs types sont déclarés. La signature d'un séquent* dans une preuve consiste en la signature du programme plus toutes les constantes universelles* «inventées» par la règle d'introduction de la quantification universelle à droite dans des séquents situés plus près de la racine de la preuve.

Simplification. n.f. (abr. tex2html_wrap_inline54466) Une des opérations élémentaires du semi-algorithme de Huet*.

La simplification décompose un problème d'unification d'ordre supérieur tex2html_wrap_inline56180 en des problèmes tex2html_wrap_inline54468tex2html_wrap_inline53950 est flexible.

displaymath56126

La simplification s'apparente à l'unification de premier ordre mais doit prendre en compte les tex2html_wrap_inline56836-abstractions*. Dans la pratique, on la fait précéder de la procédure d'unification au premier ordre qui pourra traiter le problème efficacement si aucune tex2html_wrap_inline56836-abstraction n'est rencontrée. On peut ainsi compiler la partie premier ordre de l'unification en réutilisant les techniques connues pour Prolog* [Brisset et Ridoux 92b, Brisset et Ridoux 94].

Skolem, Albert Thoralf (Norvège, 1887-1963). Skolem établit la version définitive du théorème de Löwenheim-Skolem : tout ensemble satisfaisable d'expressions du premier ordre admet un modèle dénombrable. Il a introduit une forme d'élimination de quantificateur qui constitue un premier pas vers la théorie de Herbrand* (tex2html_wrap_inline55796 skolémisation*).

Skolémisation. n.f. Opération qui consiste à éliminer des quantificateurs existentiels en remplaçant les variables qu'ils introduisent par des termes constitués de constructeurs nouveaux appliqués aux variables universelles dont dépendent les variables existentielles éliminées.

displaymath56127

C'est la forme de skolémisation utilisée dans le cadre de la résolution* pour mettre la formule à réfuter en forme normale conjonctive*. On peut aussi la présenter sous une forme duale à utiliser pour la recherche d'une preuve.

displaymath56128

Dans les deux cas, l'objectif est de n'avoir plus qu'une sorte de quantificateur dans des formules prénexes*. La forme sans quantifications existentielles (forme normale de Skolem pour la réfutation) est utilisée pour la résolution*. Dans ce cas, c'est le test d´occurrence* de l´unification* qui va rétablir l'effet des quantifications éliminées.

Au lieu d'inventer une constante, on peut la laisser introduire par une quantification universelle. La skolémisation devient alors permutation de quantificateurs.

displaymath56129

Dans ces trois cas, il faut bien noter que la formule skolémisée n'est pas équivalente à la formule originale. C'est le cas même pour la troisième version, car le type de tex2html_wrap_inline53952 qui pouvait être vide dans l'original a le constructeur tex2html_wrap_inline54124 dans le résultat.

On peut aussi définir une forme d'antiskolémisation qui a pour effet la permutation inverse.

displaymath56130

Il faut noter que cette transformation préserve l'équivalence. Elle a été étudiée par Miller [Miller 92], et elle ou son inverse peuvent être employées par l'interpréteur tex2html_wrap_inline56836Prolog (tex2html_wrap_inline55796 partage de représentation*), ou par le programmeur.

Les relations tex2html_wrap_inline56206 et tex2html_wrap_inline56208 peuvent être définies en tex2html_wrap_inline56836Prolog de la manière suivantes :

skolem (existe Ytex2html_wrap_inline56812(qqsoit xtex2html_wrap_inline56812(F Y x))) (qqsoit ftex2html_wrap_inline56812(existe Ytex2html_wrap_inline56812(F Y (f Y)))) .

askolem (qqsoit xtex2html_wrap_inline56812(existe Ytex2html_wrap_inline56812(F x Y))) (existe ftex2html_wrap_inline56812(qqsoit xtex2html_wrap_inline56812(F x (f x)))) .

Standard Prolog. Forme normalisée de Prolog*.

Substitution. n.f. (rel. unification*) Opération qui consiste à remplacer dans un terme toutes les occurrences libres* d'une variable par un autre terme. On la note tex2html_wrap_inline56228 (tex2html_wrap_inline53952 est remplacée par tex2html_wrap_inline55774). L'opération s'étend au remplacement simultané de plusieurs variables. On appelle domaine de la substitution les variables remplacées, et codomaine les termes qui les remplacent.

Une substitution peut être spécifiée par des paires <variable,terme>, ou bien par un problème d'unification dont elle est la solution la plus générale, ou par une requête* à un programme logique* dont elle est la substitution solution*.

Substitution explicite. n.f. Dans la présentation classique du tex2html_wrap_inline56836-calcul*, l'expression de la tex2html_wrap_inline53988-équivalence* utilise la notion de substitution du métalangage. Il en résulte que la substitution, qui n'est pas une opération triviale, échappe à la formalisation du tex2html_wrap_inline56836-calcul. D'où l'idée d'une présentation du tex2html_wrap_inline56836-calcul dans laquelle les substitutions sont des objets du langage, et leurs lois sont décrites dans la formalisation du tex2html_wrap_inline56836-calcul.

Les points de vue implicite et explicite ont aussi un impact sur l'implémentation du tex2html_wrap_inline56836-calcul. Selon le point de vue implicite, la substitution est implémentée par une procédure qui est appelée à chaque tex2html_wrap_inline53988-réduction*. Avec le point de vue explicite, la substitution est implémentée par une structure de donnée et des règles de réécriture spécifiques ont la charge de la propager.

Les substitutions explicites peuvent faire l'objet d'une étude de principe sous la forme de tex2html_wrap_inline56836-calculs avec substitutions explicites [Abadi et al. 91] ou d'une étude plus technologique qui montre comment appliquer cette technique à un tex2html_wrap_inline56836-calcul implicite [Revesz 88]. Nous avons suivi la seconde voie (tex2html_wrap_inline55796 tex2html_wrap_inline56490*), mais il faut noter qu'il est possible de présenter l´unification des termes d´ordre supérieur* dans un tex2html_wrap_inline56836-calcul avec substitutions explicites [Dowek et al. 95].

Substitution solution. n.f. Le point de vue classique de la programmation logique sur la notion de résultat est que le résultat d'un calcul (donc de la recherche d'une preuve) est une substitution qui appliquée à la requête, la rend tautologique. Un interpréteur calcule les plus générales d'entre elles qu'on appelle substitutions solutions.


next up previous contents
Next: T Up: A-Z Previous: R

Olivier Ridoux
Mon Apr 27 11:10:23 MET DST 1998