Introduction à la programmation Logique
{La logique est au coeur du raisonnement et le
raisonnement au coeur de l’intelligence ..}
Le raisonnement est un passage, une transition provoquant un changement d’état obtenu par
une application successive de règles logiques (raisonnement). La logique classique dite aussi
logique des propositions ou encore logique d'ordre zéro, date de l'antiquité, elle est bien connue
notamment par application des tables de vérité, donc sous sa forme sémantique et rarement
sous sa forme formelle contemporaine comme théorie de la preuve.
La logique classique est le système formel le plus simple qui possède les bonnes propriétés
qu'on attend d'un tel système. Il est complet, décidable et non contradictoire. Une situation
inédite qui ne se reproduira pas pour des systèmes plus évolués et plus utiles.
Avant d’introduire la notion d’interprétation et de sémantique, nous présenterons brièvement
les systèmes formels et leurs propriétés, puis traiterons de la logique (théorie de la preuve) et
de ses liens avec les systèmes axiomatico-déductifs.
Introduction aux systèmes formels
Les systèmes Axiomatico-Déductifs ou systèmes formels (SF) fournissent un cadre général
pour exprimer et étudier de façon rigoureuse et mathématique les notions d’axiomatique et de
mécanismes déductifs.
Un système formel est donc un procédé mécanique de construction des phrases d'un langage,
une entité idéale qui engendre sous forme de théorèmes toutes les conséquences qui découlent
selon des critères déterminés (règles) d'un ensemble de propositions initiales considérées
comme vérités premières (axiomes). Les expressions qui figurent dans un système formel n'ont
aucun sens et résultent des possibilités opératoires précisées dans les règles de maniement du
système. Lorsqu'on construit un système formel c'est en général avec l'intention de représenter
dans ce système une théorie non formalisée. Le but de la formalisation est alors de permettre
une étude précise et systématique des aspects structuraux des théories scientifiques.
1) Définition et composants
Un système formel S est composé d’un triplet {Langage, Axiomes, Règles Inférences}.
• Le langage est composé d’un vocabulaire ou alphabet fini de symboles, avec un procédé
de construction de mots (formules bien formées),
• un ensemble d’axiomes,
• un ensemble fini de règles d’inférences, dites encore règles de déduction ou de dérivation.
Notion de démonstration :
Etablir une démonstration dans S revient à trouver une suite finie de fbf, f1, f2, .., fk tel que
fi (1≤ i ≤ n) est soit un axiome de S, soit une fbf obtenue d’une autre fbf par application d’une
Règle d’inférence Ri
Notion de théorème
Une formule d’un système formel est dite un théorème si c’est un axiome, ou bien si la
formule est obtenue par application d’une règle d’inférence à un théorème.
Programmation logique : Introduction aux systèmes formels M. Sellami
1
Une preuve d’un système formel est une suite de formules qui sont soit des axiomes, soit des
formules déduites des formules précédentes.
Si f1, f2, .., fk sont des fbf et Ri une règle d’inférence, on peut déduire la formule fr1 par
application de Ri. Notation : Ri |- fr1 par Ri
Exemple1 : le système PEU
• Alphabet : A = {p, e, u}
• La construction de formules (bien formées) se fait pas concaténation des symboles de
l’alphabet: pp, peepppeeeu, eeppu ...
• Un axiome : upueuu (qui est le seul théorème à l’initialisation).
• Deux règles d’inférence :
R1 : si une expression de la forme AeB est un théorème alors uAeBu est un théorème.
R2 : si une expression de la forme AeB est un théorème alors AueuB est un théorème.
Exemples de problèmes à résoudre dans ce système formel
• Q1 : est-ce que uupuueuuuu est un théorème ?
• Q2 : est-ce que uupueuuuu est un théorème ?
• Q3 : est-ce que upupueuuu est un théorème ?
Les solutions (exemple1)
• Q1 : uupuueuuuu est un théorème, avec construction de l’arbre de dérivation.
• Q2 : uupueuuuu n’est pas un théorème, car un théorème ne peut pas contenir un nombre
impair de u (démonstration par récurrence).
• Q3 : upupueuuu n’est pas un théorème, car un théorème ne peut pas contenir plus d’un
symbole p (démonstration par récurrence).
Exemple2 : le système Lukasiewicz
Le vocabulaire terminal : {C,N,a,b,c,d,.....,p,q,r,s,t,.......} les points représentant une
infinité éventuellement non dénombrable de termes.
Les axiomes
1. CCpqCCqrCpr
2. CCNppp
3. CpCNpq
Ce sont les trois axiomes de Lukasiewicz.
Les règles de déduction
1. Règle de substitution [R1]
Si dans une thèse du système on substitue à une variable, à chacune de ses occurences, une
EBF, on obtient une nouvelle thèse.
2. Règle de modus ponens (ou de détachement) [R2]
Si on a comme thèse du système d'une part l'expression g et d'autre part l'expression Cgh,
alors on peut admettre également h comme thèse du système.
Démontrer : Cpp ( (p) (p) ):
Programmation logique : Introduction aux systèmes formels M. Sellami
2
[1] CpCNpq axiome 3 de Lukasiewicz
[2] CpCNpp règle [R1], p remplace q dans [1]
[3] CCpqCCqrCpr axiome 1 de Lukasiewicz
[4] CCpqCCqpCpp règle [R1], p remplace r dans [3]
[5] CCpCNppCCCNpppCpp règle [R1],CNpp remplace q dans [4]
[6] CCCNpppCpp règle [R2], détachement C[2] - [6]
[7] CCNppp axiome 2 de Lukasiewicz
[8] Cpp règle [R2], détachement C[7] - [8]
Exemple3 : Le système MIU de POST (1920)
– Alphabet V = { M, I, U }
– Langage : ensemble des mots commençant par M suivi par des U et de I
– Axiome MI
– Régles :
• [R1] mI mIU règle de production
• [R2] Mm Mmm règle de production
• [R3] III U règle de récriture
• [R4] UU règle de récriture
Par définition, tout mot produit dans ce système sera dit théorème. Toute suite de mots
(discours) qui conduit depuis MI (l’axiome) jusqu’au mot X sera dite preuve formelle de X.
Problème 1 : MU est-il un théorème du système de POST? ( |- MU )?
Problème 2 : Peut-on produire tous les théorèmes du système ?
Problème 3 : Étant donné un mot, peut-on savoir s’il est un théorème ?
MI MIU (regle 1)
MIUIU MIUIUIUIU (regle 2)
MUMU MUMUUMU (regle 2)
MIIIM MUM (regle 3)
Etc ..
On peut schématiser ces déductions à l’aide d’un graphe comme le montre la figure suivante :
Exemple4 : Soit le système formel, que nous appellerons ADD, défini par :
Programmation logique : Introduction aux systèmes formels M. Sellami
3
- un alphabet : V = {0, 1,p,e},
- un langage L sur V dont les formules bien formées sont de la forme 0{l}*p0{l}*e0{l}*1
- un unique axiome : 0p0e0.
- les règles : soit m = 0α11p0α2e0α3 un mot de ADD tel que α1, α2 , α3 {1}*
- [r1] : m 0α11p0α2e0α31
- [r2] : m 0α1p0α21e0α31
Les premiers théorèmes sont : 0p0e0, 0lp0e0l, 0p0le0l, 0lp0le0ll, ...
Convenons à présent de donner une signification à notre système. Substituons p par + et e par =. Une
suite de n chiffres 1 précédée par un 0 sera remplacée par le nombre n correspondant dans l'ensemble
des entiers naturels. Ainsi, 0 sera remplacé par 0, 01 par 1, 011 par 2, etc. Les théorèmes obtenus
précédemment se réécrivent alors :
0 + 0 = 0, 1+0=1,0 + 1 = 1, 1 + 1 = 2,
II semble alors évident que le système formel ADD modélise le comportement de l'addition pour les
entiers naturels. Les théorèmes qu'il engendre sont des assertions vraies au sens de l'arithmétique.
2°) Propriétés des systèmes formels :
A-t-on besoin de propriétés particulières d’un système purement mécanique dont l’objectif est
de combiner à l’infini axiomes et règles d’inférences pour obtenir de nouvelles formules, tout
en ignorant l’aspect sémantique. Comment savoir si la réponse produite appartient ou non
l’ensemble des solutions éligibles ? En informatique théorique, il y a deux manières de définir
un ensemble précis.
- Soit par une machinerie algorithmique de reconnaissance qui, pour chaque objet candidat à
l’entrée de l’algorithme, fournit une réponse « oui » ou « non » selon que ce candidat
appartienne ou non à cet ensemble,
- Soit par une machinerie algorithmique de production, qui produit des objets les uns après les
autres avec répétition et sans ordre précis, un objet appartenant à l’ensemble des solutions si et
seulement si, il est produit en un temps fini par ce mécanisme.
Il semble alors nécessaire de définir quelques propriétés auxquelles devra répondre le système
formel, pour se prémunir contre les solutions fortuites, incohérentes et contradictoires. Nous
énonçons les propriétés fondamentales :
- Propriété de consistance - Un système formel est consistant (ou non contradictoire) si on
ne peut prouver à la fois que A un théorème et son contraire. |- A et
¬
|- A
Un système non consistant est dit inconsistant.
- Propriété de complétude - Un système formel est dit complet s’il fournit une stratégie
permettant d’atteindre la solution si celle-ci existe. Nous reviendrons sur cette définition qui
prête souvent à équivoque
- Propriété de décidabilité - On dit qu'un système formel est décidable s'il existe une
procédure mécanique permettant d'établir en un temps fini si un mot du langage est ,ou n'est
pas, un théorème.
Il est important de comprendre la notion de coopération ou d’hybridation de systèmes permettant de tirer profit des avantages fournis par
certaines théories, mais faisant défaut à d’autres. Pour démontrer par exemple si MU est ou n’est pas un théorème du SF, il faut chercher
dans les théories de l’arithmétique. En effet, le nombre de I dans MI est 1, dans MU il est de 0. Si X est le nombre de I dans un mot,
l’application de la règle 1 ne change pas X, la règle 2 multiplie par 2 et donne 2X lettres I, la règle 3 diminue de 3 le nombre de I. Si X
contient 3k + 1 lettres I, tous les mots produits dans MIU à partir de X auront 3k’ + 1 lettres I. Ces exemples sont courants dans les
théories de la programmation.
1 Cette notation courante dans les systèmes formels est utilisée pour désignée une suite éventuellement vide
de chiffres
Programmation logique : Introduction aux systèmes formels M. Sellami
4
1 / 4 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !