Vous êtes sur la page 1sur 94

Licence STS/MIPE/UE19 Informatique GEN Une initiation au gnie logiciel

Ve r s i o n 2 . 1 Dcembre 2005

D. HERMAN

96

Gnie logiciel : buts, mthodes et outils


Daniel HERMAN

Objectifs
Ce cours, qui correspond une UE1 optionnelle propos en seconde anne dune licence STS2. prolonge des cours dinitiation la programmation (mthodes de programmation : approche fonctionnelle, approche itrative) qui sont supposs acquis. Nous nous sommes donns pour but dinitier le lecteur une discipline couramment appele gnie logiciel, en anglais software engineering. Le terme initiation doit tre retenu : le public vis nest pas, a priori, engag dans des tudes professionnelles en informatique. Il sagit donc, en premier lieu, de faire comprendre que la production de logiciel pose des problmes spcifiques et, par consquent, fait appel tout un corpus de connaissances, de mthodes et doutils qui doivent tre intgrs. En second lieu il sagit de donner une trs lgre ide de ce que sont ces connaissances, mthodes et outils, sans videmment prtendre lexhaustivit. Compte tenu de ces buts, le lecteur ne stonnera pas que les outils utiliss ne soient pas des outils professionnels : la mise en uvre de tels outils est lourde et lorganisation des tudes au niveau L23 peu adapte la conduite de projet. En revanche, et cest un des paris de ce cours, nous pensons quil est possible, avec des outils simples, de faire comprendre pourquoi la production de logiciel relve de lingnierie et non de lartisanat.

Organisation pratique
Dun point de vue pratique lenseignement comporte trois pans qui peuvent sembler quelque peu htroclites : un projet ; un enseignement de thorie des langages ;

1. UE : Unit d'Enseignement 2. Licence STS : licence sciences, technologies, sant 3. Deuxime anne de licence

Licence STS/MIPE/UE19

Une initiation au gnie logiciel

un enseignement de logique. Il nest pas tonnant de trouver un projet dans cette liste : nous imaginons mal de parler de gnie logiciel sans un logiciel produire. Les deux autres items peuvent surprendre, mais toute discipline dingnierie utilise, entre autres, des outils de modlisation qui relvent des mathmatiques. Les raisons qui nous ont pouss mettre en avant ces domaines sont un caractre bien particulier quils ont en commun : il sagit de modles qualitatifs et non quantitatifs. Ils jouent en outre un rle privilgi en informatique. La forme prise par lenseignement est originale, du moins au niveau L2. La base de ce cours est le projet qui reprsente le travail de fond pendant toutes les sances de TP et une bonne partie de celles de TD. En revanche, il ne sagit pas de faire un logiciel de A Z : le produit en question a t conu et ralis par lquipe enseignante. Ltudiant doit donc matriser, comprendre la complexit des divers modules qui lui sont fournis et sa propre production se limite deux dentre eux. Les deux autres sujets, qui sont donc des mathmatiques, sont prsents comme des outils et le projet a t conu pour les utiliser. Le domaine tant vaste, nous nous contentons den donner des rudiments. La thorie des langages apporte des outils ncessaire la ralisation du second module. La logique nous sert cerner les limitations du produit livr au client.

Remerciements
La mise au point de cet enseignement a t, bien videmment, un travail dquipe. Je tiens remercier tous ceux qui y ont particip et, en particulier Philippe INGELS sur qui repose intgralement le projet qui nous sert de fil conducteur et qui assume, avec son efficacit habituelle, la charge de lorganisation induite.

Architecture gnrale du polycopi


Le cours comporte 8 chapitres, une bibliographie et une annexe ; la table des matires est la fin de louvrage. CHAPITRE 1 CHAPITRE 2 CHAPITRE 3 CHAPITRE 4 CHAPITRE 5 CHAPITRE 6 CHAPITRE 7 CHAPITRE 8 CHAPITRE 9 Gnie logiciel 5

Le logiciel Flin 9 Langages et grammaires 25 Automates dterministes nombre fini dtats 41 Langages de type 3 et automates nombre fini dtats 49 Systmes formels 59 Calcul des propositions 65 Conclusions 85 Bibliographie 87 Table des matires 91

Une initiation au gnie logiciel

Licence STS/MIPE/UE19

CHAPITRE 1

Gnie logiciel

1.1 Buts du cours


Ce cours, qui vise initier le lecteur une discipline couramment appele gnie logiciel, comporte trois volets : un projet ; un enseignement de thorie des langages ; un enseignement de logique. Malgr le caractre disparate de ces lments, le lecteur est pri dadmettre quaucune des trois parties ne joue un rle indpendant. Le projet, qui sert de toile de fond, nest que peu abord dans la partie magistrale de lenseignement ; il est cependant llment fdrateur qui doit permettre de comprendre lutilit des deux domaines mathmatiques abords. Ce serait une grossire erreur que de se dispenser de leffort quil demande car, dans lapprentissage de lart de la programmation, ce nest pas le rsultat qui compte mais ce quon a appris en le construisant.

1.2 Gnie logiciel : les problmes


Parmi les messages du cours de premire anne il en est un qui peut tre rsum par la maxime un programme est un objet dtude . Un gros programme (les anglo-saxons disent programming in large) est aussi un objet dtude, mais cest galement un produit industriel. Do, des contraintes de cot, des exigences de qualit, qui impliquent des techniques et des mthodes de production, et qui posent des problmes de gestion de production. Toutefois la production de logiciel prsente des caractristiques dsagrables : On a souvent du mal prciser ce quon veut exactement faire. Cette imprcision a deux causes diffrentes : dune part le client exprime mal ses besoins et, dautre part, on a du mal codifier ces besoins dans un document suffisamment prcis pour tre oprationnel.

Licence STS/MIPE/UE19

Une initiation au gnie logiciel

Gnie logiciel

Les outils de prvision et de suivi des dlais et des cots de production sont peu fiables. La complexit de la tche (on considre que les plus gros logiciels actuels font partie des plus grands projets jamais mens) requiert un grand nombre dintervenants alors quil sagit dune production intellectuelle difficilement mesurable donc difficilement partageable. La matrise de la qualit relve souvent de la profession de foi : quand on a du mal exprimer ce quon veut faire il nest pas tonnant davoir du mal savoir si ce quon a fait convient. En outre, il y a quelque thormes tout fait dmobilisateurs ; ainsi, par exemple, on na aucun moyen gnral de dterminer lquivalence de deux programmes suffisamment complexes. La production de logiciel ne se prte que trs imparfaitement la taylorisation : quand on a fabriqu le premier exemplaire dun logiciel la production des suivants a un cot peu prs nul (les dlinquants qui piratent des logiciels abusent de cette proprit). On se retrouve finalement dans une situation qui ressemble assez au problme de la conception de prototypes. On peut comprendre facilement que le cot du prototype de la prochaine Renault est sans commune mesure avec celui de la production dune Clio de plus Dans ces conditions leffort de rationalisation de la production se porte sur la rutilisation de composants, sur le contrle de la qualit. Les logiciels voluent aprs leur livraison au client. Cette volution est inluctable, et ceci pour deux raisons : tout logiciel contient des erreurs (cet axiome est confirm par lexprience) mais surtout les besoins changent et ce changement ncessite des adaptations.

1.3 Cycle de dveloppement et cycle de vie


Dans tout processus de production plus la dtection dune erreur est tardive plus elle cote cher. Cette constatation sapplique videmment au domaine des logiciels, et ceci dautant plus que les erreurs y sont frquentes. On dcompose donc la tche de production en diverses tapes le cycle de dveloppement chaque tape tant conue pour diminuer le risque derreur ultrieur. Dans un tel cycle tout retour arrire est coteux. Le cycle que nous prsentons est idal (sans retour arrire). Dans la pratique les choses sont souvent plus complexes. Notre cycle simple comprend les tapes suivantes : 1. 2. 3. 4. 5. 6. 7. Spcifications Conception prliminaire Conception dtaille Codage Test unitaire Intgration Validation

Spcifications Le rsultat de cette tape est une mise en forme du cahier des charges. Cette mise en forme (qui utilise parfois des langages adapts) vise tre oprationnelle pour la suite : on doit pouvoir lutiliser pour vrifier que les objectifs sont atteints mais aussi pour raliser les tapes suivantes. Pour se faire une ide, on peut admettre que donner le type dune fonction et indiquer ce que doit tre son rsultat en fonction de ses paramtres est une spcification. Toutefois, les spcifications fonctionnelles trouvent vite leurs limites (entres/sorties). Conception prliminaire En utilisant les spcifications on isole les grandes fonctions du logiciel et on les spcifie leur tour. A ce stade, des choix stratgiques ont t faits sur lesquels il sera difficile de reve-

Une initiation au gnie logiciel

Licence STS/MIPE/UE19

Outils, techniques et mthodes

nir. En revanche, les tapes ultrieures se prtent des travaux mens en parallle par des quipes diffrentes. Conception dtaille On itre le processus prcdent sur chacune des fonctions issues de ltapes prcdente jusqu obtention dun ensemble de fonctions raisonnablement programmables. Les interfaces entre toutes ces fonctions doivent videmment tre prcises et dtailles pour que leurs programmations soient indpendantes. Codage Le codage est la phase de programmation proprement dite. Test unitaire Chaque fonction ou, souvent, chaque module (un module est un ensemble de fonctions ayant des liens mutuels) est alors mis au point indpendamment des autres. Pour ce faire, on est amen construire des environnements de test. On notera quil nest pas du tout obligatoire que les phases de codage et de test unitaire soient faits par les mmes personnes. Intgration Les modules sont intgrs progressivement et il faut admettre que, malheureusement, on dcouvre des erreurs ce stade. Validation On applique ce stade des procdures visant tablir la conformit du produit avec ses spcifications, avant livraison au client. Le cycle que nous venons de prsenter est le cycle de dveloppement. Pour des raisons voques plus haut (maintenance, volution) la vie du produit de sarrte pas la livraison. Pour prparer la suite on doit intervenir trs tt dans le processus do la notion de cycle de vie, le dveloppement ntant quune des tapes du cycle de vie.

1.4 Outils, techniques et mthodes


Comme tout processus de production, la production de logiciel peut tre en partie automatise. Trois grands axes dintervention peuvent tre retenus. production automatique de code ; analyses statiques ; gestion des ressources. Production automatique de code Le simple fait dutiliser un compilateur montre que la production du code machine est en partie automatise. On peut aller plus loin et imaginer des traducteurs de spcifications en code excutable. Sans tre aussi ambitieux, de nombreux problmes restreints peuvent tre exprims laide de langages adquats et traduits de manire systmatique, voire automatique. Nous utilisons dans ce cours de tels procds. La production automatique ne se limite pas au code et on peut imaginer une production de documentation, doutils de maintenance

Licence STS/MIPE/UE19

Une initiation au gnie logiciel

Gnie logiciel

Analyses statiques Le contrle de type effectu par un compilateur est un exemple danalyse automatique permettant de dcouvrir des erreurs. On peut imaginer des extensions au niveau dun projet : cohrences mutuelles des modules, conformit partielle aux spcifications Gestion des ressources On peut imaginer des programmes daide la gestion des diverses ressources, humaines, matrielles et logicielles dun projet : gestion de bases de programmes rutilisables, suivi des cots, valuation de la complexit, outils de communication Ces divers axes dintervention ont un point commun : il supposent lusage doutils mathmatiques particuliers qui relvent, pour la plupart, des mathmatiques discrtes : logique thorie des langages combinatoire recherche oprationnelle

1.5 Suite du cours


Il nest videmment pas possible, en Deug, de faire une tude raisonnable de tous les points voqus dans les paragraphes qui prcdent. Pour ce qui concerne le dveloppement du projet, celui-ci commence lissue de la phase de conception dtaille : larchitecture complte du logiciel est dfinie et tous les modules sont spcifis. On demande donc aux tudiants une participation aux phases de codage, test unitaire et intgration pour deux des modules. Les autres sont fournis. On ne stonnera pas du fait que le source1 des programmes utiliss ne soit pas accessible : il sagit de conditions tout fait ralistes pour un travail normal. Le codage du premier module permet dapprhender le travail dintgration dans une architecture complexe. Pour le codage du second, nous utilisons un outil automatique de production de code (production dun analyseur lexical partir dune grammaire rgulire dcore dactions smantiques).

1. On appelle code source, ou plus simplement source, le texte des programmes avant compilation.

Une initiation au gnie logiciel

Licence STS/MIPE/UE19

CHAPITRE 2

Le logiciel Flin

2.1 Introduction aux systmes experts


2.1.1 Gnralits
Un systme expert est un logiciel qui vise offrir ses utilisateurs les deux fonctionnalits suivantes: modliser un sous-ensemble du monde rel, obtenir, par dduction, des informations sur ce sous-ensemble. Les domaines dapplication de ce type de produit sont divers : finance, conomie, mdecine, maintenance Il nest videmment pas raisonnable dcrire un logiciel adquat pour chaque problme rencontr : Linvestissement pour une application particulire serait trop lourd et, par consquent, ce type de produit moins rpandu. Lvolutivit du produit serait problmatique. Ce qui a assur le succs des systmes experts cest lapparition de mta-outils, les moteurs dinfrences. Un moteur dinfrence est capable deffectuer des dductions partir dune connaissance qui lui est explicitement fournie (la connaissance est externe au moteur), ce quon peut rsumer par la formule :
moteur dinfrences + connaissance = systme expert

Licence STS/MIPE/UE19

Une initiation au gnie logiciel

Le logiciel Flin

On distingue donc deux type dutilisateur, lexpert, qui dtermine les connaissances utiles au moteur, et le consommateur, qui exploite le systme expert. Saisie de la connaissance Demande dinformations

Mta-connaissances

Saisie des connaissances sur la dduction (mta-connaissances)

Moteur dinfrences

Explications

Les moteurs dinfrences travaillent en gnral sur une description du monde faite laide de faits et de rgles, qui, du moins dans le cas gnral, comportent des inconnues. La dduction est faite en slectionnant, en fonction de ltat de travail et de la base de faits, une des rgles applicables ; lapplication de cette rgle modifie ltat de travail, do le cycle de base:
rpter dterminer les rgles applicables choisir une des rgles applicables rpercuter les modifications associes finrpter

Le choix, parmi les rgles applicables, de la rgle appliquer, est dune grande importance pour les performances du moteur dinfrences. En effet, on peut voir lalgorithme ci-dessus comme un algorithme non dterministe (au niveau du choix) et une implantation exhaustive de ce choix a toutes les chances dtre intolrable au niveau du temps de rponse si la connaissance est complexe. Pour cette raison, les bons moteurs permettent au moins de slectionner une stratgie de choix parmi plusieurs possibles. Dans les bons cas, diverses stratgies peuvent tre dfinies par lexpert lui-mme. Pour illustrer le fonctionnement dun moteur dinfrences, nous prenons, dans ce chapitre, un exemple simple qui sert de guide aux diverses notions et techniques introduites. A la fin du cours (cf. Flin propositionnel page 82), la logique mathmatique, permet de donner un support conceptuel plus ferme.

2.1.2 Description du monde


Le monde est dcrit laide de faits initiaux et de rgles. Par exemple: Faits initiaux
f1: f2: tim ronronne tim est familier

10

Une initiation au gnie logiciel

Licence STS/MIPE/UE19

Consommateur

Base de connaissances Expert

Introduction aux systmes experts

f3: f4:

tim vit la maison tim est le pre de flix

Rgles
r1: r2: r3: r4: si x ronronne alors x est un chat si x ronronne et x est familier et x vit la maison alors x est un animal domestique et x est dorlot si x est un chat alors x est un mammifre et x a des griffes si x est le pre de y et x a la proprit p alors y a la proprit p

Langage Le langage laide duquel on exprime la connaissance comporte divers ingrdients : des variables, comme x, y ou p des constantes, comme tim ou flix des prdicats, comme ronronne, est un chat, est le pre de des hypothses, comme si x est un chat ou si x ronronne et x est familier et x vit la maison des conclusions comme alors x est un chat ou alors x est un mammifre et x a des griffes Anecdote Selon le type des variables quon peut utiliser, il existe une classification des moteurs dinfrence. Les moteurs sans variables sont de type 0. Les moteurs o les variables ne dsignent que des constantes sont des moteurs de type 1. Les moteurs o les variables peuvent dsigner des constantes et des proprits sont des moteurs de type 2. Termes Les rgles utilisent des noncs comme, flix est dorlot, x est dorlot, tim est le pre de flix qui ont tous la mme structure : un prdicat relie plusieurs arguments qui sont des constantes ou des variables. Pour pouvoir travailler sur ces noncs nous leur donnons une structure syntaxique plus rigide : dorlot(flix), dorlot(x), pre(tim, flix). Ce sont des cas particuliers de ce quen logique on appelle des termes. Dfinition 2.1 Les termes1 sont composs dun identificateur (la proprit) suivi, entre parenthses, des arguments (constantes ou variables) sur lesquels elle sapplique. Les arguments sont spars par des virgules. Dfinition 2.2 Un terme clos est un terme sans variable.

Le monde tant dcrit, on veut obtenir des informations, par exemple savoir si la proprit flix est un chat est vraie. Pour ce faire on distingue deux classes de mthodes, le chanage avant et le chanage arrire.

1. Attention, cette dfinition est trs restrictive par rapport aux termes de la logique.

Licence STS/MIPE/UE19

Une initiation au gnie logiciel

11

Le logiciel Flin

2.1.3 Dduction
Quun moteur fonctionne en chanage avant ou en chanage arrire, chaque tape de son calcul consiste utiliser une rgle, cest ce quon appelle faire une infrence. 2.1.3.1 Chanage avant A partir de faits prcdemment tablis, en utilisant des rgles, on cherche produire de nouveaux faits. Exemples f1 et r1 permettent de produire chat(tim) f1, f2, f3 et r2 permettent de produire domestique(tim) et dorlot(tim) Pour tablir une proprit P, on construit le monde laide de dductions lmentaires comme celle de lexemple, en itrant le procd jusqu trouver P ou jusqu saturation (le moteur se rvle incapable de produire de nouveaux faits). 2.1.3.2 Chanage arrire A partir de P (le but) on cherche une rgle dont un lment de la conclusion ressemble P (si on prend pour P la proprit Est-ce que flix est un chat ?, r1 est une telle rgle). Les prmisses de la rgle donnent alors des (sous) buts dont la dmonstration suffit pour tablir P. Ainsi r1 (si ronronne(x) alors chat(x)) peut sinterprter comme pour tablir que flix est un chat il suffit dtablir que flix ronronne . On itre le procd avec les sous-buts produits jusqu ce quils soient tous dmontrs (un but est dmontr lorsquil est un des faits du monde). 2.1.3.3 Remarque Lorsquon dcouvre ces deux mthodes on est souvent victime dune intuition errone: on pense, tort, que le chanage avant est une mthode largement pire (au plan des performances) que lautre. Ce nest pas le cas: les performances dpendent avant tout et du cas particulier et de la stratgie de slection employe. 2.1.3.4 Infrence Utiliser une rgle (faire une infrence) consiste donc descendre des hypothses aux conclusions (chanage avant) ou remonter des conclusions aux hypothses (chanage arrire). Dans les deux cas (on remarquera quhypothses et conclusions ont la mme structure) il faut dterminer si la rgle est applicable. Nous illustrons le procd dans le cas du chanage avant. 1. Considrons lhypothse de la rgle r2 :
si ronronne(x) et familier(x) et maison(x)

2. Si on substitue la variable x la valeur flix, on obtient :


si ronronne(flix) et familier(flix) et maison(flix)

3. Si on a prcdemment tabli les faits :


ronronne(flix), familier(flix), maison(flix)

4. On peut effectuer linfrence proprement dite qui consiste utiliser la conclusion et la substitution pour produire les faits qui correspondent la conclusion de r2 (domestique(x) et dorlot(x)) cest dire :
domestique(flix), dorlot(flix)

2.1.3.5 Filtrage Pour prsenter plus formellement ces notions nous introduisons les notions de termes, substitution et filtrage.

12

Une initiation au gnie logiciel

Licence STS/MIPE/UE19

Produit Flin : cahier des charges

Dfinition 2.3

Une substitution est un ensemble de couples <variable, terme>.

Ainsi S = {<x, tim>, <y, flix>} est une substitution. Dfinition 2.4 Le rsultat de lapplication dune substitution S un terme T est un terme TS obtenu en remplaant dans T les variables par les termes qui leurs sont associs dans S. Lapplication de S dorlot(x) donne dorlot(tim), de S domestique(y) donne domestique(flix). Dfinition 2.5 Filtrer 1 un ensemble de termes H sur une base de termes clos B cest calculer une substitution qui, applique tous les termes de H, ne produit que des termes B. Exemple
B = {ronronne(tim), ronronne(flix), familier(tim), maison(tim)} H1 = {ronronne(x), familier(x), maison(x)} H2 = {ronronne(y), familier(x), maison(x)}

On peut filtrer H1 sur B ; on obtient alors S = {x = tim}. On peut filtrer H2 sur B ; ce filtrage peut donner deux rsultats, S1 = {x = tim, y = tim} et S2 = {x = tim, y = flix}. Dans le cadre dans lequel nous nous plaons, le travail du moteur consiste donc faire voluer un ensemble de termes clos (ltat de travail) et lopration lmentaire qui modifie ltat de travail est ce quon appelle une infrence. Dfinition 2.6 Effectuer une infrence consiste filtrer une des deux parties dune rgle sur ltat du travail et modifier cet tat en exploitant le rsultat de lapplication de la substitution obtenue sur lautre partie de la rgle.

2.2 Produit Flin : cahier des charges


2.2.1 Prsentation gnrale
Le logiciel Flin permet deffectuer certains raisonnements sur un ensemble de connaissances pralablement dcrit. Il offre les outils permettant la fois de saisir les connaissances initiales du domaine, de spcifier les rgles de dductions utilisables, dindiquer les raisonnements effectuer. Une interface avec lutilisateur permet denchaner ces diverses activits, on peut saisir des faits connus, des rgles, demander des dductions, puis rajouter des faits ou des rgles, etc...

2.2.2 Enonc des faits initiaux


Les faits, connaissances tablies, sont des proprits portant sur des objets. Les proprits, comme les objets, sont dsignes par des noms (identificateurs). Un fait est un terme : lidentificateur de la proprit, suivi de la liste, entre parenthses, des identificateurs des objets concerns.

1. Lorsque les termes de B ne sont pas clos, on peut tendre le procd : on dit alors quon ralise une unification, ce qui est le vocable employ dans la littrature. Le filtrage est donc un cas particulier (et simple) dunification.

Licence STS/MIPE/UE19

Une initiation au gnie logiciel

13

Le logiciel Flin

Exemples
chat(tim) pre(jean,jacques) lobjet tim possde la proprit chat Les objets jean et jacques sont lis par la proprit pre

Les faits de Flin sont des cas particuliers de termes clos. En effet, la notion de terme englobe des termes comme pre(paul, pre(jean, jacques)). On se limite donc un niveau de parenthsage.

2.2.3 Enonc des rgles


Les rgles de dduction permettent dtablir de nouveaux faits, partir des faits dj connus. Une rgle nonce que, si des proprits sont vrifis (les hypothses), dautres proprits sont galement vraies (les conclusions). Comme on souhaite avoir des rgles gnrales, ces proprits peuvent porter non pas sur des objets particuliers, mais sur des variables, dsignant tout objet ayant les caractristiques requises. Un identificateur de variable commence par le caractre ?. Exemple
chat(?x) ?x dsigne tout objet ayant la proprit chat

Les hypothses et conclusions sont constitues dune suite de proprits, spares par le mot rserv et, qui signifie que ces proprits sont toutes simultanment vrifies. Exemples p(?x) et q(?x): ?p(flix) ?p(?x)

?x dsigne tout objet ayant la fois les proprits p et q ?p dsigne toute proprit vrifie par flix ?x dsigne tout objet ayant une proprit quelconque ?p

Une rgle peut porter un nom, les parties hypothses et conclusions sont introduites par les mots rservs si et alors, la rgle se termine par le mot rserv fsi. Une rgle donc une des deux formes suivantes : nom : si <hypothses> alors <conclusions> fsi si <hypothses> alors <conclusions> fsi Exemple
r2: si ronronne(?x) et familier(?x) et maison(?x) alors domestique(?x) et dorlot(?x) fsi

On apporte toutefois une limitation sur les variables utilises dans les conclusions : elles doivent imprativement apparatre dans la partie hypothses.

2.2.4 Dductions
A partir de faits initiaux et de rgles on peut demander deux types de dductions : On peut obtenir toutes les proprits dmontrables partir des faits initiaux, en utilisant les rgles donnes (saturer).

14

Une initiation au gnie logiciel

Licence STS/MIPE/UE19

Produit Flin : cahier des charges

On peut demander si une proprit particulire peut tre dmontre, partir des faits initiaux, en utilisant les rgles donnes (dmontrer).

2.2.5 Principales limitations de Flin


2.2.5.1 Caractre syntaxique des proprits Les proprits de Flin nont pas de sens particulier et Flin les traite dans chercher les interprter. Pour illustrer ce propos nous utilisons un exemple. Exemple
Faits initiaux :pre(tim, flix), pre(tim, jules) Rgle : si pre(?x, ?y) et pre(?x, ?z) alors frre(?y, ?z) et frre(?z, ?y) fsi

La saturation donne les rsultats suivants :


pre(tim, flix), pre(tim, jules), frre(flix, flix), frre(jules, jules), frre(flix, jules), frre(jules, flix)

On pourrait souhaiter changer la rgle pour avoir un rsultat plus raliste. Cependant, si on opte pour la rgle :
Rgle : si pre(?x, ?y) et pre(?x, ?z) et diffrent(?y, ?z) alors frre(?y, ?z) et frre(?z, ?y) fsi

la saturation dlivre :
pre(tim, flix), pre(tim, jules)

car aucun filtrage ne donne de rsultat. Flin est donc incapable dinterprter le prdicat diffrent (ce qui nest pas tonnant). Il existe des moteurs qui reconnaissent et interprtent correctement quelques proprits prdfinies, mais ce nest pas le cas de Flin. Remarquons quon peut toutefois tourner la difficult en donnant une connaissance plus labore. Exemple
Faits initiaux :pre(tim, flix), pre(tim, jules), diffrent(flix, jules), diffrent(flix, tim), diffrent(tim, jules) Rgle : si pre(?x, ?y) et pre(?x, ?z) et diffrent(?y, ?z) alors frre(?y, ?z) et frre(?z, ?y) fsi, si diffrent(?x, ?y) alors diffrent(?y, ?x) fsi

2.2.5.2 Usage du ou Malgr les apparences, on peut, en Flin, entrer une connaissance de la forme
si chat(?x) ou chien(?x) alors carnivore(?x) fsi

Il suffit dutiliser deux rgles.

Licence STS/MIPE/UE19

Une initiation au gnie logiciel

15

Le logiciel Flin

si chat(?x) alors carnivore(?x) fsi si chien(?x) alors carnivore(?x) fsi

En revanche, il est impossible de spcifier une connaissance comme


si chec(?x, ?y) alors mauvais(?x) ou mauvais(?y) fsi

2.2.5.3 Usage des quantificateurs Une rgle comme si chat(?x) alors pre(?y, ?x) fsi est interdite en Flin : une variable utilise les conclusions de la rgle nest pas prsente dans les hypothses. Il est toutefois clair quon pourrait donner un sens une telle rgle, par exemple tout chat a un pre 2.2.5.4 Caractre fini du monde Flin Le rsultat dune saturation comporte toujours un nombre fini de faits. Ce fait sexplique par la limitation un seul niveau des termes. Le lecteur concevra facilement quun monde dcrit par :
entier(0) si entier(?x) alors entier(suc(?x)) fsi

donnerait un nombre infini de faits.

2.2.6 Interface utilisateur


La conception dinterfaces conviviales est une tche ardue qui fait appel des techniques qui dbordent largement du cadre de ce cours. Il importe toutefois de distinguer : les possibilits de dialogue offertes par le logiciel la forme externe prise par le dialogue. Les logiciels modernes utilisent une forme externe spectaculaire (fentres, souris). Cette forme de convivialit, plus quutile certes, ne doit pas masquer une autre forme de convivialit plus fondamentale : lutilisateur devrait, tout moment, tre capable de faire ce quil a envie de faire, si toutefois cette envie a un quelconque fondement logique. Cette seconde proprit est largement indpendante de la forme externe. Le lecteur est pri dadmettre que ce nest pas la forme externe qui pose le plus de difficults. Pour ce qui est de Flin, la forme externe est fruste (pas de gestion sophistique de lcran et des divers priphriques) et les possibilits offertes sont minimales. Cependant, on insistera sur le fait que tout systme de dialogue doit prendre en compte le fait que lutilisateur fait des erreurs et que ces erreurs ne doivent pas bloquer le systme. Quand on appelle le logiciel Flin, il ne connat ni fait, ni rgle. Lutilisateur dispose de cinq commandes, quil peut utiliser quand le logiciel ly invite :
f : saisie dun fait initial. r : saisie dune rgle s : demande de saturation d : demande de dmonstration q : sortie du logiciel Flin

Chacune de ces commandes introduit un dialogue, permettant lutilisateur de fournir les informations ncessaires, et au logiciel de produire les rsultats demands.

16

Une initiation au gnie logiciel

Licence STS/MIPE/UE19

Produit Flin : cahier des charges

Commande f : saisie dun fait Lutilisateur doit fournir lnonc dun fait, le logiciel lui signale si celui-ci nest pas form correctement. Si lnonc est correct, le fait est enregistr. Commande r : saisie dune rgle Lutilisateur doit fournir lnonc dune rgle, le logiciel lui signale si celui-ci nest pas form correctement. Si lnonc est correct, la rgle est enregistre. Commande s : demande de saturation Le logiciel affiche lensemble des faits dmontrables partir de ltat courant des faits et rgles. Commande d : demande de dmonstration Lutilisateur doit fournir lnonc du fait dmontrer, si cet nonc est incorrect le logiciel le signale, sil est correct le logiciel affiche vrai ou faux, suivant que la proprit nonce peut tre dmontre ou non, partir de ltat courant des faits et rgles. Commande q : sortie Lutilisateur sort du logiciel Flin. Le lecteur est invit rflchir sur un ensemble de commandes plus raliste : visualisation de ltat de la connaissance, dition

2.2.7 Exemple dutilisation


La squence suivante dcrit un exemple de session de travail avec Flin. Les textes affichs par le logiciel sont en caractres gras.
donner une commande (f,r,s,d,q) f chat(tim) donner une commande (f,r,s,d,q) f chat(felix) donner une commande (f,r,s,d,q) r si chat(?x) alors ronronne(?x) fsi donner une commande (f,r,s,d,q) s chat(tim) chat(felix) ronronne(tim) ronronne(felix) donner une commande (f,r,s,d,q) d chat(jean) faux donner une commande (f,r,s,d,q) q

Licence STS/MIPE/UE19

Une initiation au gnie logiciel

17

Le logiciel Flin

2.3 Produit Flin : Spcifications et dcoupage modulaire


2.3.1 Conception prliminaire
2.3.1.1 Fonctionnalits Au premier stade de la conception on essaie dordinaire de rpartir les fonctionnalits du logiciel selon leur nature. Comme Flin assure trois fonctionnalits principales il est lgitime de songer trois modules : Linterface utilisateur, qui contrle lexcution, lit les commandes, dirige les dialogues complmentaires, et fait appel aux autres modules pour raliser le travail demand. Le module de traduction, qui reconnat les faits et rgles sous leur forme externe, et produit la forme interne correspondante, qui pourra tre utilise par le moteur dinfrence. Le module infrence, qui effectue les dductions par chanage avant, partir des faits et rgles sous leur forme interne. La question qui se pose ensuite porte sur la nature des communications entre ces trois modules. Dans lapplication qui nous intresse, il est clair que cest lutilisateur qui pilote lenchanement des diverses fonctions du logiciel : Il lance le produit, et donc active le module de dialogue. Le module interface doit donc offrir au moins un point dentre, exec-flin. Selon la demande de lutilisateur, le module interface va solliciter le module traduction (trad-fait ou trad-rgle) ou le module infrence (saturer ou dmontrer). Les communications entre traduction et infrence sont moins explicites : ces deux modules ne sappellent pas directement mais, manifestement, communiquent par certaines structures de donnes cres par le module traduction et exploites par le module infrence. On est donc naturellement conduit introduire un quatrime module, le module types gnraux. 2.3.1.2 Le module type gnraux On doit trouver dans le module types gnraux des structures de donnes permettant de reprsenter les objets manipuls extrieurement par le logiciel Flin. Ltat de travail courant consiste en : un ensemble de faits qui sont des termes, un ensemble de rgles. Ces objets tant des ensembles, on peut dfinir un type gnrique Ens-T qui permet dobtenir les deux types dont nous avons besoin, Ens-terme et Ens-rgle. Pour dfinir les types terme et rgle on est amen introduire des sous-types, N-uplet et Atome.

18

Une initiation au gnie logiciel

Licence STS/MIPE/UE19

Produit Flin : Spcifications et dcoupage modulaire

Les fonctions daccs des types qui le composent caractrise linterface du module, par exemple :

Type Terme
type terme dfinition Un terme est la reprsentation dun prdicat, il est constitu dun nom et dune liste darguments. Le nom, ainsi que chaque argument, sont des atomes. accs t-nom : terme atome t-nom(x) = le nom du terme x t-arg : terme n-uplet t-arg(x) = la liste des arguments de x t-cons : atome x n-uplet terme t-cons(x,y) = le terme de nom x, et dont la liste darguments est y fin dfinition

Licence STS/MIPE/UE19

Une initiation au gnie logiciel

19

Le logiciel Flin

2.3.1.3 Structure gnrale de Flin On peut donc donner le rsultat du travail de conception prliminaire, qui est rsum par la figure suivante :

Structure gnrale

exec-felin interface utilisateur


gnral/interface/ic1 page 25

trad-fait

trad-regle

saturer

demontrer

traduction
gnral/trad page 14

moteur dinfrence
gnral/inf page 7

types gnraux
gnral/types page 3

2.3.2 Conception dtaille


2.3.2.1 Gnralits Au stade de la conception dtaille on considre chaque module, on tudie ses diverses fonctionnalits afin de dfinir des sous-modules et on itre le processus jusqu obtenir un ensemble de modules dont les points dentre sont spcifis sans ambigut et qui doivent avoir une taille raisonnable. On doit galement tre en mesure de donner le graphe dappel complet.

20

Une initiation au gnie logiciel

Licence STS/MIPE/UE19

Produit Flin : Spcifications et dcoupage modulaire

Nous ntudions pas ici la conception de tout le logiciel (qui sera reprise en TD) mais nous traitons, titre dexemple, le module traduction. 2.3.2.2 Module traduction Pour des raisons qui sont explicites loccasion des chapitres traitant de la thorie des langages, un module ayant des fonctionnalits telles que le module de traduction peut tre facilement dcompos en deux parties : Lanalyse lexicale lit une suite de caractres, et la dcoupe en units lexicales (suite de caractres ayant un sens global). Lanalyse syntaxique traite cette suite dunits, en vrifiant que la suite dunits lexicales est correcte, et en produisant la structure de donne interne correspondante. Comme nous devons traduire des faits et des rgles, comme ces deux objets ont des sousstructures communes, on peut mettre en facteur lanalyse lexicale et concevoir deux sousmodules danalyse syntaxique. Enfin, il est clair que ces trois sous-modules utilisent des structures de donnes communes. On obtient donc le schma gnral qui suit.

Licence STS/MIPE/UE19

Une initiation au gnie logiciel

21

Le logiciel Flin

Intitul :

Structure gnrale de la partie traduction

La partie traduction analyse des chanes de caractres, lues par la partieinterface, et produit si possible les structures de donnes correspondantes (rgles ou faits).

trad-fait

trad-regle

traduction gnral/trad page 20 regle fait

analyse syntaxique anaLexCh gnral/trad/as1 page 17

fonctions de traduction analyse lexicale gnral/trad/lex1 page 16 gnral/trad/fctTraduction1 page 19

types pour la traduction gnral/trad/types1 page 15

22

Une initiation au gnie logiciel

Licence STS/MIPE/UE19

Produit Flin : Spcifications et dcoupage modulaire

2.3.2.3 Spcification des modules Un module est spcifi en dcrivant lensemble de ses fonctions daccs :

Intitul :

Module de traduction

Ce module effectue la traduction des chanes de caractres reprsentant les faits et les rgles lues. Pour cela on effectue dabord une analyse syntaxique qui permet de produire la reprsentation interne des faits ou des rgles, puis on vrifie certaines proprits sur ces structures, proprits non prises en compte dans la grammaire : 5. un fait doit tre totalement instanci (il ne contient pas de variable) 6. une rgle doit tre conforme (toute variable apparaissant en partie conclusion doit figurer en partie hypothses). Ce module a deux point dentre : trad-regle et trad-fait. trad-regle : chane-car rgle ou "echec" ch fournit la reprsentation interne de la rgle reconnue sil est possible de reconnaitre une rgle dans ch et si elle est conforme ; sinon rend "echec". trad-fait : chane-car terme ou "echec" ch fournit la reprsentation interne du fait reconnu, sil est possible de reconnaitre un fait dans ch et sil est totalement instanci ; sinon rend "echec". nu-sans-var? : n-uplet bool x vrai si x ne contient pas de variable, faux sinon nu-ens-var : n-uplet ens-atome x ensemble des variables figurant dans x t-sans-var? : terme bool x vrai si x ne contient pas de variable, faux sinon t-ens-var : terme ens-atome x ensemble des variables figurant dans x lt-ens-var : ens-terme ens-atome x ensemble des variables figurant dans x r-conforme? : rgle bool x vrai si x est conforme, faux sinon

Licence STS/MIPE/UE19

Une initiation au gnie logiciel

23

Le logiciel Flin

2.3.3 Le document de conception dtaille


Le document de conception dtaille est donn en annexe. Il comprend des lments trs normaliss, comme ceux que nous venons de voir : documents de structure, spcifications de types, spcifications de modules On remarquera limportance des rfrences croises.

24

Une initiation au gnie logiciel

Licence STS/MIPE/UE19

CHAPITRE 3

Langages et grammaires

Le franais est un langage, Pascal galement. Nous cherchons, dans ce chapitre, donner un modle de ce quest un langage. Pour ce faire nous utilisons loutil de base des scientifiques : les mathmatiques. Cependant, le modle que nous donnons est un modle qualitatif et non quantitatif. Enfin, il faut admettre demble le caractre rducteur, donc incomplet, de toute modlisation. Nous demandons notre modle de nous aider rsoudre deux problmes troitement lis : tre capable de dcrire un langage ; fabriquer une machine capable de reconnatre les textes qui appartiennent un langage donn. Ces deux problmes, description et reconnaissance, reclent une difficult intrinsque : il faut donner une description finie dun objet en gnral infini. Il y a en effet une infinit de textes franais, une infinit de programmes Pascal.

3.1 Dfinitions de base


3.1.1 Vocabulaire et mots
La ralit est multiple : Les mots du franais sont composs en mettant les uns derrire les autres des caractres dimprimerie. Une phrase franaise est compose en mettant les uns derrire les autres des mots du franais. Un programme Pascal est obtenu en mettant les uns derrire les autres des mots-cls du langage Pascal. Mettre les uns derrire les autres des lments semble tre une fonctionnalit de base dun langage. Do lide de retenir, dans le modle, une gnralisation.

Licence STS/MIPE/UE19

Une initiation au gnie logiciel

25

Langages et grammaires

Dfinition 3.1 Un vocabulaire V (ou alphabet, ou lexique) est un ensemble fini de symboles (ou caractres). Dfinition 3.2 ments de V. Exemples
Vocabulaire {a, b} {un, le, beau, froce, chat, rat, mange, aime, qui} {if, then, else, begin, end, :=, ;, (, ), A, B, C, 1, 2} Mots aaaa, aabb un beau chat mange un le un le aime aime if A then B := 1 else C := 2 if if if A begin

Un mot (ou phrase) sur un vocabulaire V est une squence finie dl-

Il y a un mot particulier, la squence vide ; on lappelle le mot vide et nous le notons . tant donn un mot m, on note |m| sa longueur, cest dire le nombre de symboles qui le composent. Remarque Il ne faut pas confondre la terminologie du modle (vocabulaire, mot) et la terminologie propre au langage tudi (mot, phrase, programme). Ainsi, si on sintresse au langage franais, Les misrables de Victor HUGO pourra tre considr comme : un mot sur le vocabulaire de limprimerie ; un mot sur le vocabulaire du lexique franais.

Etant donn un vocabulaire V, on note V*, lensemble des mots sur V. On peut munir V* dune loi de composition interne : en mettant deux mots la suite lun de lautre on obtient un nouveau mot. Dfinition 3.3
:

Lopration de concatnation est dfinie par :


V* le mot commenant par les symboles de a suivis des symboles de b.

V* x V* a, b

On notera souvent a b par ab. On remarque que |a b| = |a| + |b|. Lopration de concatnation est associative et admet un lment neutre, le mot vide, ce qui confre V* une structure de monode : on appelle V* le monode libre engendr par V. Le qualificatif libre tient au fait que les symboles sont considrs en dehors de toute signification Remarque Sur V = {chat, te, chatte}, il est clair que chat te est diffrent de chatte.

3.1.2 Langages
Pour un problme donn (le franais, Pascal) les mots de V* ne sont pas tous intressants (cf. les exemples de mots donns plus haut). Do la dfinition de ce quest un langage.

26

Une initiation au gnie logiciel

Licence STS/MIPE/UE19

Grammaires

Dfinition 3.4

Un langage L sur V est une partie de V*.

Un langage est donc, tout simplement, un ensemble de mots. Exemples


Vocabulaire {a, b} Langage L1 = {anbn | n >= 0} = { , ab, aabb, aaabbb, } L2 = ensemble des phrases franaises quon peut construire sur le lexique dfini par le vocabulaire considr L3 = ensemble des conditionnelles Pascal limites au lexique dfini par le vocabulaire considr

{un, le, beau, froce, chat, rat, mange, aime, qui}

{if, then, else, begin, end, :=, ;, (, ), A, B, C, 1, 2}

Pour aller plus loin, il nous faut un moyen de dcrire sans ambigut ce quest un langage ; la notion de grammaire a t introduite cette fin1.

3.2 Grammaires
3.2.1 Prsentation informelle
Reprenons les trois exemples qui prcdent. aabb un mot de L1 peut tre un a, suivi dun mot de L1, suivi dun b. le chat mange le rat une phrase peut tre un groupe nominal suivi dun groupe verbal. if A then B := 1 une conditionnelle Pascal peut tre if suivi dune expression, suivi de then, suivi dune instruction. Ces trois exemples sont des rgles de grammaire.

3.2.2 Vocabulaires
Pour donner les trois rgles qui prcdent nous avons utilis : des lments du vocabulaire du langage : if, then dautres lments (instruction, expression, groupe nominal) qui ne sont pas quelconques. Ces deux ingrdients de base sont deux vocabulaires, le vocabulaire terminal V et le vocabulaire non-terminal N. Ces deux vocabulaires sont choisis disjoints, pour viter certaines ambiguts ; en dautres termes, nous prfrons, dans les deux phrases qui suivent, la seconde.

1. On remarquera toutefois que certains langages ne peuvent pas tre dcrits par une grammaire.

Licence STS/MIPE/UE19

Une initiation au gnie logiciel

27

Langages et grammaires

verbe est un nom, nom est un nom, manger nest pas un nom mais un verbe . verbe est un <nom>, nom est un <nom>, manger nest pas un <nom> mais un <verbe> . Deux systmes de notation sont souvent utiliss. On rserve les majuscules pour N, les minuscules pour V: A N et a V. On note les non-terminaux entre chevrons : <truc> N et truc V. A laide des deux vocabulaires on peut faire des mots sur N V (on les dsigne dordinaire par une lettre grecque, (N V)*. Exemples <conditionnelle> if <expression> then <instruction> <relative> qui <groupe-verbal>

3.2.3 Rgles
Dfinition 3.5 Une rgle met en relation une partie gauche, et une partie droite, , qui sont deux lments de (N V)*. Exemples <conditionnelle> if <expression> then <instruction> <relative> qui <groupe-verbal>

3.2.4 Rcriture (drivation)


Les rgles permettent de rcrire des mots sur N V. Exemple
Rgles utilises Mots sur N V <conditionnelle> ; <conditionnelle> <conditionnelle> if <expression> then <instruction> <expression> <identificateur> <identificateur> <lettre> <lettre> A if <expression> then <instruction> ; <conditionnelle> if <identificateur> then <instruction> ; <conditionnelle> if <lettre> then <instruction> ; <conditionnelle> if A then <instruction> ; <conditionnelle>

Les rcritures peuvent aboutir des mots de V*. Si on sait de quoi partir, on sait donc produire des mots de V*. Le point de dpart est appel axiome.

28

Une initiation au gnie logiciel

Licence STS/MIPE/UE19

Grammaires

Exemple
N {S} V {a, b} Rgles S S aSb Axiome S

A partir de laxiome, on peut rcrire, laide des rgles de G, les mots , ab, aabb S G S G aSb G aaSbb G aabb On constate que tous les mots de V* ainsi produits sont de la forme anbn.

3.2.5 Rsum
Dfinition 3.6 Une grammaire est un quadruplet G = (N, V, S, P) o V est un vocabulaire dit terminal qui est le vocabulaire du langage, N est un vocabulaire dit non-terminal, NV= S, appel axiome, est un lment de N, P est un ensemble de rgles de la forme , o et appartiennent (N V)* Dfinition 3.7 Etant donn une grammaire G et deux mots 12 et 12 de (N V)*, on dit que 12 drive directement de 12 si et seulement si P. Lorsque drive directement de , on utilisera la notation G et on dira aussi (autre terminologie) que se rcrit en . Dfinition 3.8 Etant donn une grammaire G et deux mots 0 et n de (N V)*, on dira que n drive de 0 (ou encore que 0 se rcrit en n), ce quon notera 0 G* n, si et seulement si : soit 0 = n soit 0 G 1 et 1 G* n Dfinition 3.9 ni par : Etant donn une grammaire G, le langage L(G) engendr par G est dfi-

L(G) = { m V* | S G* m}

3.2.6 Exemples
3.2.6.1 Sur V = {a, b} Langage des palindromes SaSa SbSb Sa Sb S Langage des mots comportant autant de a que de b

Licence STS/MIPE/UE19

Une initiation au gnie logiciel

29

Langages et grammaires

SaB SbA S

Aa AaS AbAA

Bb BbS BaBB

Plutt que de noter in extenso toutes les rgles, on factorise dordinaire les parties gauches, en utilisant la notation qui suit. SaB|bA| A a | a S | b AA Bb|bS|aBB On remarque que plusieurs grammaires peuvent dcrire le mme langage. SaSbS|bSaS| 3.2.6.2 Sur V = {a, b, c} Langage anbncn, n 1
SaSBC SaBC CBBC aBab bBbb bCbc cCcc

3.2.6.3 Conditionnelles Pascal Le vocabulaire du langage Pascal (norme de base) comporte 95 symboles : 26 lettres 10 chiffres 24 symboles de ponctuation : + - * / < > = . , ; : ( ) [ ] { } ' >= <= <> .. := 35 mots-cls 1 : and array begin case const div do downto else end file for from function goto if in label mod nil not or packed procedure program record repeat set then type to until var while with

Laxiome du langage est le non-terminal <programme>. On a des rgles comme : <programme> program <identificateur> ; <bloc> . <programme> program <identificateur> ( <liste-identificateurs> ) ; <bloc> . On peut considrer que chaque non-terminal dcrit un sous-langage. Pour le sous-langage des contionnelles on a : <conditionnelle> if <expression> then <nonc> <conditionnelle> if <expression> then <nonc> else <nonc> <nonc> <entier-sans-signe> : <instruction> <nonc> <instruction> <instruction> <affectation> | <appel> | <bloc> | <conditionnelle> | <cas> | <boucle> | <avec> | <branchement>

1. On notera la diffrence entre mot-cl et identificateur rserv : integer et true ne sont pas des terminaux du langage. Ils peuvent tre dcrit par la grammaire.

30

Une initiation au gnie logiciel

Licence STS/MIPE/UE19

Grammaires

3.2.6.4 Bonchatbonrat On considre le vocabulaire V 1 = {un, le, beau, froce, chat, rat, mange, aime, qui}. Les rgles qui suivent dfinissent un sous-ensemble des phrases franaises.
<Phrase> <Gn> <Gv> <Gn> <Det> <Sa> <Nom> <Sa> <Relative> <Relative> qui <Gv> | <Gv> <Verbe> | <Verbe> <Gn> <Sa> <Adj> | <Det> un | le <Nom> chat | rat <Verbe> aime | mange <Adj> beau | froce

La phrase le chat froce aime un beau rat qui mange est engendre, partir de laxiome <Phrase>, par cette grammaire. On remarque quil en est de mme pour la phrase le chat qui aime le chat qui aime le chat qui aime le chat qui aime aime . Cette remarque illustre bien une des difficults de la modlisation dune langue naturelle. Cest lusage de la rcursivit qui permet de donner une description finie dun ensemble infini de mots. Il se trouve que, pour une langue naturelle, on a envie dajouter des critres esthtiques pour restreindre lusage de la rcursivit. 3.2.6.5 Scheme Le dbutant de bonne foi aura remarqu que la syntaxe de Scheme est plus simple que celle de Pascal.
<expression > <identificateur> | ( <suite-expression> ) <suite-expression> <expression> <suite-expression> |

On constate quon peut donner dautres grammaires pour le mme langage. Par exemple :
<expression > <identificateur> | <appel> | <fonction> | <conditionnelle> | <dfinition> | <notation> ( <identificateur> <suite-expression> ) ( lambda ( <suite-identificateur> ) <expression>) ( cond <suite-couple> ) ( define <identificateur> <expression> ) ( quote <expression> )

<appel> <fonction> <conditionnelle> <dfinition> <notation>

Par rapport la premire, la seconde grammaire prsente lavantage de dcrire les grandes fonctions du langage en les distinguant. Cette proprit est importante (cf. 3.5).

1. On remarquera que ce vocabulaire est conu en fonction dun seul genre et dun seul nombre. Cette proprit explique le fait que la grammaire ne comporte pas de rgle daccord.

Licence STS/MIPE/UE19

Une initiation au gnie logiciel

31

Langages et grammaires

3.3 Exploration dune grammaire


Nous nous posons ici le problme de lcriture dun programme Scheme produisant les mots dun langage. Si le langage est infini, un tel programme manque passablement dintrt pratique, aussi nous choisissons plutt dcrire un programme Scheme produisant au hasard un mot dun langage donn. Pour ce faire on dispose de la fonction prdfinie random :
random : entier n entier un entier au hasard entre 0 et n (rpartition uniforme)

On peut donc construire facilement la fonction UnSur :


UnSur : entier n bool vrai avec une probabilit de 1/n, faux avec une probabilit de (n-1)/n

(define UnSur (lambda (n) (= (random (- n 1)) 0

)))

On dcide de reprsenter un mot par une liste plate dlments de V et on se limite aux grammaires dont les rgles sont toutes de la forme A (un non-terminal en partie gauche). Lide de base consiste associer chaque non-terminal A de la grammaire une fonction Scheme sans paramtre dont le rsultat est un mot (au hasard !) qui drive de A. Pour explorer la grammaire, on utilisera videmment la fonction associe laxiome. Exemple 1 : anbn SaSb|
(define S (lambda () (cond ((Unsur 2) (t

(append '(a) (S) '(b))) nil))))

Exemple 2: Bonchatbonrat
<Phrase> <Gn> <Gv> <Gn> <Det> <Sa> <Nom> <Sa> <Relative> <Relative> qui <Gv> | <Gv> <Verbe> | <Verbe> <Gn> <Sa> <Adj> | <Det> un | le <Nom> chat | rat <Verbe> aime | mange <Adj> beau | froce (define Phrase (lambda () (append (Gn) (Gv)))) (define Gn (lambda () (append (Det) (Sa) (Nom) (Sa) (Relative)))) (define Relative (lambda () (cond

32

Une initiation au gnie logiciel

Licence STS/MIPE/UE19

Classes de langages

((UnSur 8) (#t (define Gv (lambda () (cond ((UnSur 2) (#t (define Sa (lambda () (cond ((UnSur 3) (#t (define Det (lambda () (cond ((UnSur 2) (#t (define Nom (lambda () (cond ((UnSur 2) (#t (define Verbe (lambda () (cond ((UnSur 2) (#t (define Adj (lambda () (cond ((UnSur 2) (#t

(append '(qui) (Gv))) nil))))

(Verbe)) (append (Verbe) (Gn))))))

(Adj)) nil))))

'(le)) '(un)))))

'(chat)) '(rat)))))

'(aime)) '(mange)))))

'(beau)) '(feroce)))))

3.4 Classes de langages


3.4.1 Classification des grammaires
Les grammaires peuvent tre plus ou moins compliques. Une hirarchie a t propose par CHOMSKY. Cette classification dpend de la forme des rgles. Pour des raisons difficiles expliquer ce niveau de lexpos, les drivation vides A sont exclues des types 1 3, avec une seule exception, lventuelle rgle S , ncessaire quand le langage contient le mot vide ; dans ce cas, on impose S de ne jamais apparatre en partie droite de rgle. Dfinition 3.10 Hirarchie de CHOMSKY

Toutes les grammaires sont de type 0. Si on admet la seule exception cite plus haut : Toutes les grammaires dont les rgles vrifient | | <= | | sont de type 1. Toutes les grammaires dont les rgles sont de la forme A sont de type 2. Toutes les grammaires dont les rgles sont de la forme A a ou de la forme A aB sont de type 3. On constate une inclusion de ces diverses classes. La restriction introduite sur les drivations vides nest en fait, sur les classes 2 et 3, pas gnante car on peut toujours trouver une grammaire quivalente du mme type qui respecte la

Licence STS/MIPE/UE19

Une initiation au gnie logiciel

33

Langages et grammaires

contrainte que nous avons introduite. Elle ne simplifie donc que la dmonstration de linclusion des classes. Nous utilisons donc indiffremment les dfinitions : Dfinition 3.11 Une grammaire de type 2 est une grammaire dont les rgles sont de la forme A , o est quelconque. Dfinition 3.12 Une grammaire de type 3 est une grammaire dont les rgles sont de la forme A ou A a ou encore A aB. Dfinition 3.13 Une grammaire est dite linaire droite si toutes ses rgles sont de la forme A mB ou A m, avec m V*. Etant donn une grammaire linaire droite, on peut toujours trouver une grammaire de type 3 quivalente.

3.4.2 Classes de langage


Dfinition 3.14 type i. Un langage est dit de type i sil peut tre dcrit par une grammaire de

On constate galement une inclusion de ces diverses classes de langage. Un langage de type i strict est un langage qui peut tre dcrit par une grammaire de type i et qui ne peut pas tre dcrit par une grammaire de type i + 1. Nous serons parfois amens prendre des liberts avec cette dfinition en omettant, si le contexte sy prte, le qualificatif strict.

3.4.3 Quelques paradigmes


Langages de type 3 identificateurs Pascal Flin anbn, n 6 Langages de type 2 anbn, n < k anbn, n 0 Lensemble des programmes Pascal tels que le compilateur ne signale pas derreurs dites de syntaxe . Langages de type 1 anbncn, n 0 Il est plus difficile de donner des exemples de langages de type 0 et de langages qui ne sont mme pas de type 0 (on ne peut pas les dcrire par une grammaire). Le langage des fonctions Scheme un paramtre est un langage de type 2. On peut numroter ces fonctions f0, f1(par exemple en rangeant leurs textes par tailles croissantes, lodre lexicographique tant utilis pour ordonner deux fonctions dont les textes ont la mme taille). A laide de ces fonctions on peut dfinir deux langages : L = {an | fn(n) sarrte} L = {an | fn(n) ne sarrte pas} On admettra que L est un langage de type 0 alors que L nest mme pas de type 0.

34

Une initiation au gnie logiciel

Licence STS/MIPE/UE19

Arbres syntaxiques

3.5 Arbres syntaxiques


Ce paragraphe ne concerne que les grammaires de type 2 et 3.

3.5.1 Notion darbre syntaxique Dfinition 3.15 Un arbre A est un arbre syntaxique pour une grammaire G = (N, V, P, S)
de type 2 ou 3 si et seulement si : Soit A est une feuille tiquete , et dans ce cas la rgle S est dans P. Soit ltiquette de la racine de A est S et ses descendants directs A1,, An ont pour tiquettes X1, , Xn, et dans ce cas :

la rgle S X1, , Xn P ; pour tous les Xi qui sont des non-terminaux, tous les Ai sont des arbres syntaxiques pour les grammaires Gi = (N, V, P, Xi).

Exemple 1

S aSb |

Licence STS/MIPE/UE19

Une initiation au gnie logiciel

35

Langages et grammaires

Exemple 2 <Phrase> <Gn> <Gv> <Gn> <Det> <Sa> <Nom> <Sa> <Relative> <Relative> qui <Gv> | <Gv> <Verbe> | <Verbe> <Gn> <Sa> <Adj> | <Phrase> <Gn> <Gv>

<Verbe> <Det> <Sa> <Nom> <Sa> <Relative>

<Gn>

<Det> <Sa> <Nom> <Sa> <Relative> <Gv>

<Adj>

<Adj> <Verbe>

le

chat froce

mange

le

beau

rat

qui

aime

3.5.2 Grammaires ambigus


Lorsquon numre les feuilles dun arbre syntaxique en parcours descendant gauche-droit on obtient un mot du langage. Rciproquement, on peut se poser la question de dterminer, partir dun mot, un arbre syntaxique. Dfinition 3.16 Une grammaire est dite ambigu si on peut trouver, pour un mme mot, deux arbres syntaxiques diffrents. Les deux grammaires qui suivent sont quivalentes. G1 = ({E}, {1, -}, {E E - E | (E) | 1}, E) G2 = ({E, T}, {1, -}, {E E - T | T, T (E) | 1}, E)

36

Une initiation au gnie logiciel

Licence STS/MIPE/UE19

Grammaire vs automates

G1 est ambigu, G2 ne lest pas. En effet : E E - E | (E) | 1 E E E E E

E E - T | T, T (E) | 1 E E T

Sur cet exemple on constate quune grammaire non-ambigu peut tre remarquablement porteuse dinformation : les rgles usuelles dassociativit du moins sont refltes par les arbres syntaxiques de G2.

3.5.3 Arbres syntaxiques de type 2 et de type 3


On constate, par rapport la terminologie introduite en premire anne que : Les arbres syntaxiques dune grammaire de type 2 stricte sont bien des arbres, au sens plein du terme. Les arbres syntaxiques dune grammaire de type3 stricte sont des cas particuliers darbres : des listes. Cette distinction, profonde, fait que lanalyse des langages de type 3 est relativement facile.

3.6 Grammaire vs automates


Un automate est un algorithme (une machine) prenant en entre un mot et donnant une rponse oui (lautomate accepte le mot) ou non (lautomate refuse le mot). Un automate est donc un moyen de caractriser un langage (les mots accepts). On dit quune grammaire est un procd gnratif alors quun automate fonctionne en reconnaissance.

Licence STS/MIPE/UE19

Une initiation au gnie logiciel

37

Langages et grammaires

Un des problmes lis la notion dautomate, cest celui qui consiste savoir si lautomate donne toujours une rponse oui/non en un temps fini. Si cest le cas, on dispose de ce que nous appelons un oracle.

3.6.1 Problme de loracle


Pour tout langage de type 1, 2 ou 3, on sait quon dispose dun oracle. En effet, compte tenu des restrictions imposes sur les drivations vides par la dfinition 3.10, aucune rgle autre que la rgle S ne peut raccourcir , lorsquon lutilise pour effectuer une drivation, le mot dont on part. Cette proprit permet de calculer, en un temps fini, tous les mots dune longueur donne qui drivent de laxiome. Pour les langages de type 0, il nest pas toujours possible davoir un oracle. Ainsi, pour le langage L du paragraphe 3.4.3, on dispose, du moins thoriquement, dun automate : cest la machine Scheme. Si un mot appartient L, cet automate donne une rponse positive en un temps fini. Dans le cas contraire, lautomate boucle mais on na aucun moyen de sen rendre compte ! En effet, on ne sait jamais sil ne suffirait pas dattendre un peu plus pour avoir une rponse positive. Loracle suggr plus haut pour les types 1, 2 et 3 est non praticable, car trop lent. Les types 2 et 3 se prtent la dfinition dautomates performants.

3.6.2 Automates
Les automates classiques pour les langages de type 3 (resp. 2) sont les automates nombre fini dtats (resp. automates pile). La thorie des langages permet dobtenir certains rsultats : quivalence grammaire/automate et algorithmes de traduction ; dterminisation (dans certain cas), quivalence (toujours dans certains cas) ce qui permet de produire des analyseurs performants. Lide de base, du point de vue du gnie logiciel, consiste donc donner une grammaire respectant des contraintes plus ou moins fortes et produire automatiquement un programme danalyse (gnration automatique danalyseurs). Le procd de traduction tant prouv, les programmes ainsi produits sont corrects par construction. La classe des applications qui se prtent une telle approche est vaste ; elle comprend en particulier : les programmes qui demande un dialogue homme/machine labor pour obtenir les donnes sur lesquelles ils travaillent (cest le cas de Flin) ; les traducteurs de tous ordres, donc, en particulier, les compilateurs. A titre dexemple, nous donnons la structure dun compilateur Pascal. Un tel programme comporte au moins quatre tages : la reconnaissance des terminaux du langage Pascal, cest lanalyse lexicale ; le contrle de la validit syntaxique du programme, cest lanalyse syntaxique ; le contrle de la correction du programme (dclarations, types), cest lanalyse smantique ; la gnration de code et loptimisation. Les deux premires tapes correspondent des analyseurs de type 3 (analyse lexicale) et de type 2 (analyse syntaxique) et sont donc automatisables.

38

Une initiation au gnie logiciel

Licence STS/MIPE/UE19

Grammaire vs automates

Dans la suite du cours nous donnons, pour le type 3, les lments ncessaires pour comprendre et matriser ce type de techniques que le lecteur aura loccasion dappliquer dans le cadre de Flin.

Licence STS/MIPE/UE19

Une initiation au gnie logiciel

39

Langages et grammaires

40

Une initiation au gnie logiciel

Licence STS/MIPE/UE19

CHAPITRE 4

Automates dterministes nombre fini dtats

4.1 Grammaires de type 3


Nous donnons ci-aprs quelques exemples de langages et de grammaires de type 3. Ces exemples nous servent introduire une distinction entre deux sous-classes de grammaires que nous qualifions respectivement de dterministes et dindterministes. G1. Langage des mots qui comptent un nombre impair de a
S A bS|aA bA|aS|

G2. Langage des identificateurs


S lettre S lettre S | chiffre S | _ S |

G3. Langage des mots qui se terminent par un a


S A aS|bS|aA

G4. Langage des mots de la forme m1abam2 o m1 et m2 appartiennent {a, b}*


S A B C aS|bS|aA bB aC a C | b C|

Les grammaires G1 et G2 sont dites dterministes : lorsquon fabrique larbre syntaxique dun mot du langage, le terminal le plus gauche permet de slectionner, sans ambigut une rgle et une seule. Les grammaires G3 et G4 nont pas cette proprit.

Licence STS/MIPE/UE19

Une initiation au gnie logiciel

41

Automates dterministes nombre fini dtats

4.2 Automates nombre fini dtats


4.2.1 Prsentation informelle
Le dessin qui suit reprsente un automate dterministe nombre fini dtats (ANFED) qui reconnat le langage des mots sur {a, b}* qui comptent un nombre impair de a.

b a

0 a

A tout instant, cette machine est dans un des tats (0 ou 1) et possde une tte de lecture qui repre un des caractres du mot analyser. Au dpart, la machine est dans ltat initial (repr par une flche), la tte de lecture sur le premier caractre du mot. La machine effectue une suite de transitions, gouvernes par les flches tiquetes du dessin, ltiquette dune flche devant correspondre au caractre sous la tte de lecture pour permettre une transition. A chaque transition la tte est dplace dun caractre vers la droite. Lors de larrt, la machine est dans lune des trois configurations suivantes : Le mot nest pas entirement lu mais aucune transition nest possible. Le mot est rejet. Le mot a t lu, et ltat dans lequel se trouve la machine est un tat final (les tats finaux sont nots par un double cercle). Le mot est accept. Le mot a t lu, mais ltat dans lequel se trouve la machine nest pas un tat final. Le mot est rejet. On remarque que lautomate que nous avons dessin est une traduction assez littrale de G1 : Ltat 0, tat initial, correspond laxiome S, ltat 1 A. Chaque arc correspond une rgle non terminale. Le fait que ltat 1 soit final traduit lexistence de la drivation vide partir de A.

4.2.2 Dfinition
Dfinition 4.1 Un automate dterministe M nombre fini dtats est un quintuplet M = (Q, V, , q0, F) o Q est ensemble fini dtats V est un vocabulaire une fonction de transition de Q x V dans Q q0, ltat initial est un lment de Q F, lensemble des tats finaux, est inclus dans Q

42

Une initiation au gnie logiciel

Licence STS/MIPE/UE19

Automates nombre fini dtats

La fonction de transition de lautomate qui prcde est la suivante :


0 1 a 1 0 b 0 1

4.2.3 Autres exemples


Lautomate qui correspond la grammaire G2 des identificateurs est le suivant. lettre, chiffre, _

1 lettre

Sa fonction de transition est une fonction partielle.


1 2 lettre 2 2 chiffre, _ indfinie 2

On peut la complter en introduisant un tat supplmentaire.


1 2 3 lettre 2 2 3 chiffre, _ 3 2 3

Licence STS/MIPE/UE19

Une initiation au gnie logiciel

43

Automates dterministes nombre fini dtats

On obtient alors le dessin suivant. lettre, chiffre, _

1 lettre

chiffre, _

3 lettre, chiffre, _

Ltat qui a t ajout est traditionnellement appel tat puits. 4.2.3.1 Langage accept par un automate Dfinition 4.2 Une configuration dun automate est un couple (q, w) o q est ltat courant et w le mot qui reste analyser. Dfinition 4.3 Une transition dun automate relie deux configurations successives : (q, aw) M (p, w) ssi (q, a) = p Dfinition 4.4 si et seulement si Une squence de transitions relie deux configurations : (q, w) M (p, v)

soit q = p et w = v soit (q, w) M (r, u) et (r, u) M (p, v) Dfinition 4.5 Le langage L(M) accept par un automate M est dfini par : L(M) = {w | (q0, w) M (f, ) avec f F}

4.3 Grammaires et automates 4.4 Programmation par automates


4.4.1 Un problme de programmation
On se pose le problme de programmation suivant : une liste contient des atomes qui sont des entiers ou h, mn ou s. Si elle alterne entiers et marques (h, mn, s) on peut la lire comme une dure (12 h 3 mn 2 s 3h 5 mn 5 mn) et vouloir connatre sa valeur en secondes.
Dure : liste l entier indfini un nombre de secondes si l est correcte, rsultat indfini sinon

44

Une initiation au gnie logiciel

Licence STS/MIPE/UE19

Programmation par automates

4.4.2 Reconnaissance
On ne sintresse, dans un premier temps, qu la correction. On peut modliser le problme en donnant une grammaire qui dcrit les listes correctes. Pour simplifier lexpos de la mthode, nous remplaons les entiers par le terminal e. Nous reviendrons sur le problme dans sa gnralit au paragraphe 4.4.4.
V = {e, h, mn, s} G = ({D, R}, V, D, P) P = {D e R | , R h D | mn D | s D}

G correspond directement un automate dterministe. On peut traduire G en un programme Scheme. Pour ce faire, on associe chaque non terminal de la grammaire une fonction Scheme.
D: liste l {vrai} indfini vrai si l drive de D dans G, rsultat indfini sinon {vrai} indfini vrai si l drive de R dans G, rsultat indfini sinon

R:

liste l

Pour programmer D (ou R), il suffit de remarquer que, la grammaire tant dterministe, le terminal qui est en tte de l suffit pour dcider de la rgle appliquer. Pour traiter les cas derreur (rsultat indfini) nous utilisons la fonction prdfinie Scheme Error qui sapparente ce qui, dans dautres langages, sappelle une exception : un message est affich et lexcution est interrompue.
Error : message m indfini affiche m, rend le contrle au programmeur

(define D (lambda (l) ; DeR| (cond ((null? l) #T) ((integer? (car l)) (R (cdr l))) (#T (Error "entier attendu"))))) (define R (lambda (l) ; R h D | mn D | s D (cond ((null? l) (Error "marque attendue")) ((equal? (car l) h) (D (cdr l))) ((equal? (car l) mn) (D (cdr l))) ((equal? (car l) s) (D (cdr l))) (#T (Error "marque attendue"))))

4.4.3 Calculs
Notre problme initial consistait donner un rsultat lorsque la liste est correctement crite. Il suffit de prvoir que D et R donnent un rsultat et de modifier en consquence le programme Scheme prcdent.

Licence STS/MIPE/UE19

Une initiation au gnie logiciel

45

Automates dterministes nombre fini dtats

Comme nous essayons de dfinir un procd systmatique, il convient de remarquer que ce qui suit peut tre dduit de la grammaire sans le moindre effort dimagination de la part du programmeur. Informations extraites de la grammaire D et R donnent un rsultat
D: R: liste liste rsultatD rsultatR

Pour chaque rgle de la forme X aY on a besoin dune fonction XaY qui calcule le rsultat de X partir du rsultat de Y.
DeR : Dvide: RhD : RmnD : RsD : rsultatR rsultatD rsultatD rsultatR rsultatR rsultatR

rsultatD rsultatD rsultatD

On peut donc produire automatiquement le programme :


(define D (lambda (l) ; DeR| (cond ((null? l) ((equal? (car l) e) (#T

(Dvide)) (DeR (R (cdr l)))) (Error "entier attendu")))))

(define R (lambda (l) ; R h D | mn D | s D (cond ((null? l) (Error "marque attendue")) ((equal? (car l) h) (RhD (D (cdr l)))) ((equal? (car l) mn) (RmnD (D (cdr l)))) ((equal? (car l) s) (RsD (D (cdr l)))) (#T (Error "marque attendue"))))

Expression du calcul Pour exprimer le calcul, le programmeur na donc qu judicieusement choisir les types des rsultats des fonctions et programmer les fonctions XaY. Choix des types : il est assez naturel de penser que le rsultat de D est une dure. Pour R, on constate quun mot drivant de R commence par une marque et est suivi dune dure, do lide que R rend un couple <valeur de la marque, dure en secondes>.
rsultatD :entier indfini rsultatR :doublet({3600, 60, 1}, entier) indfini

Programmation des fonctions XaY


(define DeR (lambda (r) (+ (* e (car r)) (cdr r)))) (define Dvide (lambda () 0)) (define RhD (lambda (d) (cons 3600 d))) (define RmnD (lambda (d) (cons 60 d)))

46

Une initiation au gnie logiciel

Licence STS/MIPE/UE19

Conclusions

(define RsD (lambda (d) (cons 1 d)))

Il ne reste plus qu adapter ce programme pour traiter le fait que le terminal e, en ralit, est un entier.

4.4.4 Traitement des entiers


On peut imaginer deux classes de solutions : soit passer en paramtre aux procdures XaY le terminal a, soit partir dune grammaire qui dcrit les entiers laide des chiffres. Terminaux en paramtre Le type des fonctions qui calculent le rsultat a donc la forme gnrale suivante :
XaY: RsultatY x terminal RsultatX

Il faut donc que la production automatique des fonctions D et R soit modifie en consquence. La fonction DeR peut alors scrire :
(define DeR (lambda (r e) (+ (* e (car r)) (cdr r))))

Grammaire complte On donne une dfinition de G sur un vocabulaire qui contient les dix chiffres.
V = {0,, 9, h, mn, s} G = ({D, N}, V, D, P) P = {D 1N | | 9N | , N 0N | | 9N | h D | mn D | s D}

Le lecteur est invit appliquer le procd sur G.

4.5 Conclusions
Lorsquun problme de programmation repose sur lanalyse dun langage de type 3, on dispose donc dune mthode de production du programme qui peut en partie tre automatise. 1. Donner une grammaire de type 3 dterministe dcrivant le langage en question. 2. Appliquer le procd de traduction de la grammaire en un programme qui met en uvre lautomate dterministe associ. 3. Complter lanalyseur obtenu ltape 2 en fournissant les fonctions qui ralisent le calcul pendant lanalyse. Ltape 2 est purement mcanique et il est possible de la faire raliser par un programme appel gnrateur dautomate. Si le gnrateur dautomate fonctionne correctement (il est utile dinvestir sur ce programme qui est dun usage trs gnral) il produit programme correct. Leffort du programmeur se porte donc sur ce qui est important : la description du langage et la description des calculs. De tels procds techniques (utiliser un programme pour produire des programmes partir de descriptions plus proches des problmes poss) sont dun usage frquent en gnie logiciel.

Licence STS/MIPE/UE19

Une initiation au gnie logiciel

47

Automates dterministes nombre fini dtats

Dans le cadre de Flin, nous utilisons un gnrateur dautomate, ce qui explique le caractre particulier des spcifications de lanalyseur syntaxique de Flin (Voir gnral/trad/as1 la page 109.). Cette mthode peut tre amliore au niveau de ltape 1. En effet, si le langage est complexe, la grammaire risque dtre peu lisible et la probabilit de se tromper augmente. Il convient donc de disposer de moyens de structurer la description du langage.

48

Une initiation au gnie logiciel

Licence STS/MIPE/UE19

CHAPITRE 5

Langages de type 3 et automates nombre fini dtats

5.1 Oprations sur les langages


Nous nous posons le problme de structurer la dfinition dun langage de type 3. Comme toujours en informatique, un bon moyen de matriser la complexit dun problme est de le dcomposer en sous problmes plus simples, do lide de dfinir un langage en combinant des langages dj dfinis.

5.1.1 Langages rationnels


Dfinition 5.1 La classe des langages rationnels (ou encore, selon une terminologie que certains trouvent dsuette, rguliers) ne contient que les langages obtenus partir de langages finis (ie. qui comportent un nombre fini de mots) en utilisant un nombre fini de fois trois oprations de base : lunion de deux langages le produit de deux langages la fermeture dun langage 5.1.1.1 Dfinitions Lunion et le produit correspondent des oprations assez naturelles. Dfinition 5.2 Lunion L1 + L2 de deux langages est lunion ensembliste habituelle. Elle est donc dfinie par : L1 + L2 = {m | m L1 m L2} Dfinition 5.3 Le produit L1L2 de deux langages est dfini par :

L1L2 = {m1m2 | m1 L1 m2 L2} Dfinition 5.4 Elle comprend : La fermeture L* dun langage L correspond intuitivement une itration.

le mot vide (pas 0) tous les mots de L (pas 1)

Licence STS/MIPE/UE19

Une initiation au gnie logiciel

49

Langages de type 3 et automates nombre fini dtats

tous les mots de L suivi dun mot de L (pas 2) ... Le langage Li dfini au pas i est donc LLi-1 (avec L0 = {}) et L* est lunion infinie des Li. 5.1.1.2 Exemples L1 = {a} + {b} L2 = L1* est le monode libre en entier. L3 = {a}L2{a} est lensemble des mots qui commencent et qui finissent par a. L4 = {b}L2{b} est lensemble des mots qui commencent et qui finissent par b. L5 = L3 + L4 est lensemble des mots qui soit commencent et finissent par a, soit commencent et finissent par b. L6 = L2L5L2 est lensemble des mots qui comportent au moins soit 2 a soit 2 b. 5.1.1.3 Expressions rationnelles Dfinition 5.5 Expressions rationnelles Les expressions rationnelles (ou encore rgulires) sont dfinies par :

est une expression rationnelle qui reprsente le langage . Si a V, a est une expression rationnelle qui reprsente le langage {a}. est une expression rationnelle qui reprsente le langage {}. Si a et b sont des expressions rationnelles qui reprsentent les langages A et B, (a + b) est une expression rationnelle qui reprsente le langage A + B. Si a et b sont des expressions rationnelles qui reprsentent les langages A et B, (a b) est une expression rationnelle qui reprsente le langage AB. Si a est une expression rationnelle qui reprsente le langage A, (a)* est une expression rationnelle qui reprsente le langage A*. Il ny a pas dautres expressions rationnelles.

Pour allger lcriture on adopte des conventions de parenthsage, les oprateurs tant munis dune priorit. Dans lordre dcroissant : *, produit, + Exemples (a + b)* reprsente tous les mots sur {a, b} (a + b)*aa(a + b)* reprsente tous les mots ayant au moins 2 a conscutifs lettres = A + + Z + a + + z chiffres = 0 + + 9 lettres(lettres + chiffres)* reprsente le langage des identificateurs. On peut rcrire L6 ainsi : (a + b)*(a(a +b)*a + b(a + b)*b)(a + b)* Par construction, les expressions rationnelles dcrivent les langages rationnels.

5.2 Une proprit fondamentale des langages de type 3


Proprit 5.1 Un langage rationnel est un langage de type 3 et rciproquement.

50

Une initiation au gnie logiciel

Licence STS/MIPE/UE19

Une proprit fondamentale des langages de type 3

5.2.1 Oprations sur les grammaires


Pour montrer quun langage rationnel est un langage de type 3, il suffit de constater que tout langage fini est un langage de type 3 et de montrer que les trois oprations conservent la proprit. A partir de grammaires de type 3 G1 et G2 pour des langages L1 et L2, on peut obtenir des grammaires de type 3 pour les langages L1 + L2, L1L2 et L1*. Le procd gnral est un peu long expliciter (car technique) mais assez naturel. Nous nous contentons de donner des exemples sur V = {a, b} en laissant au lecteur le soin de rflchir la gnralisation. Union
L1 = ab(ab)* G1 = ( {S1, T1}, V, {S1 a T1, T1 b S1 | b}, S1) L2 = bb(bb)* G2 = ( {S2, T2}, V, {S2 b T2, T2 b S2 | b}, S2) L = L1 + L2 G = ( {S, S1, T1, S2, T2}, V, { S a T1 | b T2, S1 a T1, T1 b S1 | b, S2 b T2, T2 b S2 | b }, S)

Produit
L1 = ab(ab)* G1 = ( {S1, T1}, V, {S1 a T1, T1 b S1 | b}, S1) L2 = bb(bb)* G2 = ( {S2, T2}, V, {S2 b T2, T2 b S2 | b}, S2) L = L1L2 G = ( {S1, T1, S2, T2}, V, { S1 a T1, T1 b S1 | b S2, S2 b T2, T2 b S2 | b }, S1)

Fermeture
L1 = ab + bb G1 = ( {S1, T1, T2}, V, {S1 a T1 | b T2, T1 b, T2 b}, S1) L = L1* G = ( {S1, T1, T2}, V, { S1 a T1 | b T2 | , T1 b S1, T2 b S1 }, S1)

Dans le cas gnral, on constate toutefois que la grammaire obtenue nest pas obligatoirement dterministe.

5.2.2 quations rationnelles


Pour la rciproque (tout langage de type 3 est rationnel) nous nous contentons de donner une ide de la dmonstration.

Licence STS/MIPE/UE19

Une initiation au gnie logiciel

51

Langages de type 3 et automates nombre fini dtats

1) Equation rationnelle une inconnue Lquation X = pX + q dont linconnue reprsente une expression rationnelle, a une plus petite solution : p*q. En effet p*q = pp*q + q. Exemple : Aux rgles S aS | bS | c | d, on peut associer lquation S = (a + b)S + (c + d). Sa solution est (a + b)*(c + d). 2) Systme dquations rationnelles plusieurs inconnues Considrons le systme :
(1) (2) X = aX + bY + c Y = aX + bY + c

(1) donne (3) X = aX + (bY +c) donc X = a*(bY + c) qui, report dans (2) donne (4) Y = aa*(bY + c) + bY + c donc, Y = (aa*b + b)Y + (aa*c + c), do la solution du systme (5) Y = (aa*b + b)*(aa*c + c) (6) X = a*(b((aa*b + b)*(aa*c + c) + c)

On peut gnraliser ce procd des systmes plus gros. Application Grammaire :


S bS | aA A bS | aF | a F aF | bF | a | b

Equations :
S = bS + aA A = bS + aF + a F = aF + bF + a + b F = (a+ b)F +(a + b) donc F = (a+ b)*(a + b) S = bS + abS + aaF + aa donc S = (b + ab)*(aaF + aa)

Donc S = (b + ab)*(aa (a+ b)*(a + b) + aa) qui peut encore scrire S = (a + b)*aa(a + b)*

5.2.3 Bilan
Nous disposons donc dun moyen de structurer la description dun langage de type 3 (unions, produits et fermetures de langages plus simples) et dun langage particulirement lisible (les expressions rationnelles) pour exprimer cette structuration. Cependant, si on sintresse aux grammaires finales ainsi obtenues, nous sommes obligs de constater quelles ne sont pas obligatoirement dterministes.

5.3 Automates indterministes


5.3.1 Dterminiser une grammaire ?
Considrons les grammaires G3 et G4 du paragraphe 4.1. G3. Langage des mots qui se terminent par un a

52

Une initiation au gnie logiciel

Licence STS/MIPE/UE19

Automates indterministes

S A

aS|bS|aA

G4. Langage des mots de la forme m1abam2 o m1 et m2 appartiennent {a, b}*


S A B C aS|bS|aA bB aC a C | b C|

Ces deux grammaires sont indterministes. On peut donner des grammaires dterministes qui dcrivent les mmes langages. G3. Langage des mots qui se terminent par un a
S A bS|aA aA|bS|

G4. Langage des mots de la forme m1abam2 o m1 et m2 appartiennent {a, b}*


S A B C bS|aA bB|aA aC|bS a C | b C|

Il serait intressant de disposer dun procd systmatique. Pour ce faire, nous allons tendre la notion dautomate dterministe de manire gnraliser lquivalence grammaire-automate, puis nous raisonnerons sur les automates.

5.3.2 Prsentation informelle


Considrons le langage L = (a + b)*(a(a +b)*a + b(a + b)*b)(a + b)* Le dessin qui suit est simple et parlant.

a,b

a,b a 0 b

1 a

a,b

3 b 2

a,b
Cest un automate indterministe (lors de certaines transitions, la machine a le choix). Un tel automate accepte un mot si parmi tous les choix possible, il y en a une squence qui aboutit un tat final.

Licence STS/MIPE/UE19

Une initiation au gnie logiciel

53

Langages de type 3 et automates nombre fini dtats

Il est difficile dimplanter pratiquement un automate indterministe. Leur intrt rside dans le fait quils sont faciles concevoir et quon dispose dun algorithme pour les dterminiser.

5.3.3 Dfinitions
Dfinition 5.6 , q0, F) o Un automate M nombre fini dtats (ANFE) est un quintuplet M = (Q, V,

Q est ensemble fini dtats V est un vocabulaire une fonction de transition de Q x V dans P(Q) q0, ltat initial est un lment de Q F, lensemble des tats finaux, est inclus dans Q La fonction de transition de lautomate qui prcde est :
0 1 2 3 a {0,1} {1, 3} {2} {3} b {0, 2} {1} {2, 3} {3}

5.3.4 quivalence grammaire-automate


Proprit 5.2 Tout langage de type 3 peut tre reconnu par un automate nombre fini dtats et rciproquement. 1) On considre une grammaire G de type 3 et on construit un ANFE M A tout non-terminal de la grammaire on associe un tat de lautomate On ajoute ventuellement un tat de plus not F Pour toute rgle A a B, on obtient a (A, B) Pour toute rgle A a, on obtient a (A, F) Les tats finaux de M sont F et tous les tats A pour lesquels on a une rgle A 2) On considre un ANFE M et on construit une grammaire G A tout tat q de M on associe un non-terminal Q On cre une rgle Q a R si (q, a) = r On cre une rgle P pour tous les tats p de F On montre par induction que toute drivation terminale de G correspond une squence gagnante de transitions et rciproquement. Exemples
G1 S bS | aT T bS | aG | a G aG | bG | a | b

54

Une initiation au gnie logiciel

Licence STS/MIPE/UE19

Dterminisation

M1
s t g f G2 S bS | aT T bS | aG G aG | bG | a {t} {g, f} {g, f} b {s} {s} {g, f}

M2
s t g a {t} {g} {g} b {s} {s} {g}

On peut videmment adapter le procd des grammaires moins strictes.


G3 S bS | aS | aaG G aG | bG |

M3
s 1 g a {s, 1} {g} {g} b {s} {g}

5.4 Dterminisation
Proprit 5.3 Soit M = (Q, V, , q0, F) un automate indterministe. Il existe au moins un automate dterministe M = (Q, V, , q0, F) tel que L(M) = L(M).

5.4.1 Algorithme de dterminisation


On peut construire M de la manire suivante : Q = P(Q) q0 = {q0} F contient tous les sous-ensembles S de Q tels que S F

Licence STS/MIPE/UE19

Une initiation au gnie logiciel

55

Langages de type 3 et automates nombre fini dtats

Pour tout S Q, (S, a) = S, o S = {p | il existe q de S, p (q, a)} Sur lexemple qui prcde
0 1 2 3 a {0,1} {1, 3} {2} {3} b {0, 2} {1} {2, 3} {3}

on obtient, en se limitant aux tats accessibles


{0} {0, 1} {0, 2} {0, 1, 3} {0, 1, 2} {0, 2, 3} {0, 1, 2, 3} a {0,1} {0, 1, 3} {0, 1, 2} {0, 1, 3} {0, 1, 2, 3} {0, 1, 2, 3} {0, 1, 2, 3} b {0, 2} {0, 1, 2} {0, 2, 3} {0, 1, 2, 3} {0, 1, 2, 3} {0, 2, 3} {0, 1, 2, 3}

Les tats finaux sont {0, 1, 3}, {0, 2, 3} et {0, 1, 2, 3}

5.4.2 Minimisation
5.4.2.1 Automate minimum Lautomate que nous venons dobtenir comporte trois tats ({0, 1, 3}, {0, 2, 3} et {0, 1, 2, 3}) qui jouent, lvidence, le mme rle. On peut facilement tablir les deux proprits suivantes : Parmi tous les automates dterministes qui dcrivent le mme langage il y en a qui ont un nombre minimum dtats. Il nest pas difficile de se convaincre que les automates minimaux sont identiques si on fait abstraction du nom des tats. Lalgorithme de dterminisation ne produit pas obligatoirement lautomate minimum (on remarquera que les ventuelles redondances ne portent pas obligatoirement sur des tats finaux). Il faut savoir quil est possible de disposer dun algorithme permettant de calculer un automate minimum quivalent un automate dterministe donn. 5.4.2.2 Obtention dun automate minimum tant donn un automate M = (Q, V, , q0, F) et deux tats p et q de Q, il se peut que les deux automates M1 = (Q, V, , p, F) et M2 = (Q, V, , q, F) reconnaissent le mme langage. Dans ce cas, si on confie M un mot m = xy et si aprs analyse de x, M est dans ltat p on peut imaginer quune opration magique force ltat courant de M q. On constate que le rsultat

56

Une initiation au gnie logiciel

Licence STS/MIPE/UE19

Mthodologie de programmation par automate

final (acceptation ou rejet de m) sera identique. En dautres termes, p et q jouent le mme rle (on dit quils sont quivalents) et doivent pouvoir tre confondus. titre dillustration, considrons lautomate M suivant (les tats finaux sont 3 et 4) :
0 1 2 3 4 a 1 1 2 2 1 b 2 3 4 4 3

Les tats 1 et 2 sont quivalents. Il en est de mme pour les tats 3 et 4. Lquivalence de deux tats est donc une proprit qui caractrise leur aptitude reconnatre les mmes fins de mots. Dfinition 5.7 tant donn un automate dterministe M = (Q, V, , q0, F) les deux tats s et t de Q sont dits quivalents si et seulement si les deux automates M1 = (Q, V, , s, F) et M2 = (Q, V, , t, F) reconnaissent le mme langage. Il est relativement facile dimaginer un algorithme permettant de dcider que deux tats s et t ne sont pas quivalents. Posons n = card(Q) et montrons que, si s et t ne sont pas quivalents, il y a un mot de longueur infrieure n2 accept par M1 et refus par M2 (ou le contraire). En effet, si s et t ne sont pas quivalents, il y a un mot x = a0ap dont lanalyse avec M1 (resp. M2) conduit un tat final (resp. non final). Les deux squences des tats parcourus lors de lanalyse de x sont s0sp+1 et t0tp+1 (avec s=s0 et t=t0). Si la longueur de x est suprieure ou gale n2, il y a, dans x un ai et un ai+k tels que si = si+k+1 et ti = ti+k+1 (il ny a que n2 couples diffrents dtats). Le mot a0ai-1ai+k+1ap est reconnu par M1 et refus par M2. Si sa longueur est encore suprieure n2, on itre le raisonnement. Par consquent, en passant en revue tous les mots de longueur infrieure n2, on peut dcider de lquivalence de deux tats donns. En pratique, on utilise un algorithme plus efficace qui construit, globalement, toutes les classes dquivalence dtats.

5.5 Mthodologie de programmation par automate


Lorsquun problme de programmation repose sur lanalyse dun langage de type 3, on dispose donc dune mthode de production du programme qui peut en partie tre automatise. 1. Exprimer le langage en question (expression rationnelle, compositions de langages) 2. Donner la grammaire (ou lautomate) globale 3. Dterminiser lautomate issu de la phase prcdente 4. Minimiser le rsultat 5. Complter lanalyseur obtenu en fournissant les fonctions qui ralisent le calcul pendant lanalyse.

Licence STS/MIPE/UE19

Une initiation au gnie logiciel

57

Langages de type 3 et automates nombre fini dtats

Les tapes 2, 3 et 4 sont purement mcaniques et peuvent tre ralises par des logiciels adquats. Leffort du programmeur se porte donc sur ce qui est important : description du langage et description des calculs.

5.6 Conclusions
5.6.1 Thorie des langages et gnie logiciel
Tout dialogue homme-machine, tout traducteur (les compilateurs sont des traducteurs particuliers) sont des logiciels complexes qui sont difficiles concevoir et difficiles entretenir. La thorie des langages vise (entre autres) fournir une aide au programmeur. Elle lui donne un cadre conceptuel pour dcrire, comprendre, spcifier ce quil y a faire. Elle lui fournit une assistance la programmation en produisant automatiquement une partie du code (lanalyse). Des gnrateurs automatiques danalyseurs sont actuellement dusage courant (lex et yacc). Nous avons trait, trs partiellement, ce qui concerne les langages de type 3 : grammaires, automates associs, dterminisation, production automatique danalyseurs. La tche tait facile car grammaires et automates sont particulirement proches. Pour ce qui concerne les langages de type 2, le travail est dun tout autre ordre de complexit, mais les rsultats sont encore plus spectaculaires.

5.6.2 La thorie des langages et linformatique fondamentale


Pour des raisons que nous voquons dans les chapitre suivants, le monode libre est au cur de linformatique. La thorie des langages reprsente donc une des parties fondamentales de cette science.

58

Une initiation au gnie logiciel

Licence STS/MIPE/UE19

CHAPITRE 6

Systmes formels

6.1 Rapports entre la forme et le fond


Dans la vie courante on sent souvent quil y a une diffrence entre la forme et le fond. Ainsi, il est frquent que des dcisions de justice, parfaitement correctes au niveau des textes de loi (la forme), se trouvent en dcalage par rapport lattente des citoyens, cest dire par rapport lide de ce qui est juste ou injuste (le fond). En revanche, sur le sujet, on constate un effort constant des socits pour que la forme et le fond ne divergent pas trop. Sil y a une diffrence entre forme et fond, cest pour une raison vidente : le fond, cest le vaste monde, avec toute sa complexit et sa diversit, physique, sociale, psychologique Pour parler du fond, on utilise un support matriel (voix, papier, images) et on code les informations quon souhaite dcrire laide dun langage. Le langage choisi, lui, obit des rgles, plus ou moins explicites, cest la forme. Pour mieux comprendre cette diffrence entre forme et fond, on peut considrer le cas o le langage est une langue comme le franais, mais cette distinction est galement valable pour dautres langages, peinture, musique, mathmatiques Certaines phrases ont une forme grammaticale parfaitement correcte et nont pas de sens : la forme est inattaquable, le fond est inexistant. A titre dexemple on peut citer une phrase de Noam CHOMSKY, De vertes ides incolores dormaient furieusement . Certaines phrases, correctes au niveau de la forme, ont un sens exactement inverse celui quon pourrait leur donner sans connatre le contexte : Cest une bonne question, je vous remercie de lavoir pose Certaines phrases ont lvidence divers sens trs diffrents : on pourra prononcer haute voix la-belle-fer-me-la-por-te et jai-a-che-t-u-ne-ser-pi-re . Certaines phrases enfin, mme trs simples comme je taime , ont un sens si mal dfini quelles ont engendr des milliers de lignes dexplications et de commentaires En informatique on utilise deux termes, syntaxe et smantique, qui correspondent intuitivement la forme (syntaxe) et au fond (smantique). Un texte, un discours, un texte de loi, une formule, une partition musicale obissent des rgles de construction assez mcaniques, la syntaxe, et ont une signification, la smantique.

Licence STS/MIPE/UE19

Une initiation au gnie logiciel

59

Systmes formels

Si on tait capable davoir une correspondance parfaite entre syntaxe et smantique, de nombreux problmes se trouveraient simplifis , puisquil suffirait de travailler au niveau de la syntaxe pour comprendre et prendre des dcisions sur le fond. Par exemple, on pourrait : donner la syntaxe du franais et la smantique associe, faire la mme chose pour langlais, dfinir des transformations syntaxiques respectant la smantique. Cette manire denvisager la traduction automatique nest pas aussi ridicule quelle en a lair : cest ainsi quon voyait les choses au dbut des annes 60. Malheureusement, une telle ambition sest rvle quelque peu utopique Cependant, les mathmaticiens, en limitant leurs ambitions des discours trs contraints, ont obtenu un certain nombre de rsultats et, surtout, ont dfini un cadre conceptuel : cest ce quon appelle un systme formel. Nous donnons, en partant dun exemple, les grandes caractristiques dun systme formel.

6.2 Le systme formel pg


Douglas Hofstadter propose un systme formel, le systme pg, qui, bien quinutilisable pratiquement, permet de saisir la terminologie et les rgles du jeu.

6.2.1 Langage
Tout systme formel suppose un langage. Nous avons vu au cours des chapitres prcdents des outils pour dcrire un langage et nous rappelons que dfinir un langage cest caractriser, parmi tous les mots possibles, un sous-ensemble. Le langage du systme pg Vocabulaire : les trois symboles p, g et -. Le langage de pg peut tre dfini par la grammaire :
S M MpMgM -M|

Il est possible dutiliser un autre formalisme en disant que tous les mots de pg sont de la forme xpygz, o x, y et z reprsentent un nombre quelconque de -. Dans ce formalisme, nous avons utilis des symboles, x, y et z, qui ne font pas partie de lalphabet. Ces trois symboles ressemblent tout fait des variables (inconnues). Les mots -p-------g--, --------------------pg, p-----------g- appartiennent au langage du systme pg. En revanche, ppp-g en est exclu.

6.2.2 Thormes, axiomes et rgles


Le but du jeu consiste caractriser un sous-ensemble des mots du langage, les thormes. Pour ce faire, on dispose, au dpart, de thormes qui sont donns a priori, ce sont les axiomes, et de rgles, qui partir de thormes permettent de produire dautres thormes. Axiomes du systme pg Tous les mots de la forme xp-gx-, sont des axiomes.

60

Une initiation au gnie logiciel

Licence STS/MIPE/UE19

Le systme formel pg

On constate donc quil y a, au dpart, une infinit daxiomes, car xp-gx-, quon appelle schma daxiomes, peut engendrer tous les axiomes p-g-, -p-g--, --p-g--- Rgle du systme pg Le systme pg ne comporte quune seule rgle : Si xpygz est un thorme, alors xpy-gz- est aussi un thorme. Il est important de remarquer le si. Si -p--g- est un thorme alors -p---g-- lest aussi ne signifie pas que -p--g- est obligatoirement un thorme. En revanche, les axiomes tant des thormes, on dispose donc du moyen de dduire des thormes. Il se trouve que --p---g----- est un thorme. On le montre de la manire suivante :
1) 2) 3) --p-g----p--g-----p---g----(axiome) (rgle partir de 1) (rgle partir de 2)

Les trois lignes prcdentes sont ce quon appelle une dmonstration (ou dduction ou preuve). A ce stade de lexpos nous pouvons revenir sur la notion de systme formel et surtout sur le sens mme du mot formel : la terminologie introduite : mot, langage, axiome, thorme, rgle, dmonstration ne sont dfinis quen utilisant la forme et non le sens. Rsumons ces notions :
Terminologie vocabulaire Usage briques de bases

mots (ou formules) langage (formules bien formes) thormes axiomes rgles dmonstration (dduction, preuve)

tous les textes possibles les textes intressants textes particuliers, quon cherche trouver on part de l le moyen de trouver de nouveaux thormes manire dtablir un thorme

6.2.3 Smantique
Pour quun systme formel puisse servir quelque chose il faut pouvoir lui associer une smantique (un sens). Pour ce faire, on dfinit une manire dinterprter (une interprtation) les mots du langage. Remarquons demble quon peut donner plusieurs interprtations dun mme systme formel. En revanche, et cela pose toujours des problmes aux dbutants, il est clair que le systme a t conu avec des ides derrire la tte et que, les interprtations retenues ont de bonnes proprits. En effet, une interprtation porte sur une partie du monde rel (?) sur lequel le systme formel est sens pouvoir dlivrer des informations : on sattend donc ce que les thormes du systme recouvrent une certaine ralit. Dfinir une interprtation, cest donner un sens chaque mot du langage.

Licence STS/MIPE/UE19

Une initiation au gnie logiciel

61

Systmes formels

Systme pg : une premire interprtation Les mots du systme ont la forme gnrale xpygz (on remarque quon ne cherche pas donner un sens tous les mots qui peuvent tre construits laide de lalphabet, mais juste ceux du langage). Si on adopte une table de correspondance comme celle qui suit :
p g --- plus gale un deux trois

On peut associer tout mot du langage pg une phrase :


-p-g-p-g- un plus un gale un un plus un gale deux

Ces phrases appartiennent au monde des mathmatiques : elles parlent dentiers et daddition. Nous appelons ces phrases des assertions. On remarque que la correspondance marche dans les deux sens : on peut traduire une assertion comme deux plus deux gale cinq par le mot --p--g-----. Parmi toutes les assertions qui sont lobjet de ltude (le monde) certaines sont vraies (un plus un gale deux) dautres sont fausses (un plus un gale trois). A partir de l on commence saisir le but poursuivi par le concepteur du systme pg ! Il sintresse des assertions mettant en jeu trois entiers et il souhaite savoir si elles sont vraies ou fausses : pour ce faire il a imagin un systme formel dont les thormes correspondent des assertions vraies. Il peut alors travailler de deux manires diffrentes.

assertion tudie: deux plus trois gale cinq

Approche smantique
Utiliser des rsultats mathmatiques pour faire une vraie dmonstration de la proprit

Approche syntaxique
Utiliser le systme pg

--p---g----- est un thorme


de pg

Pour que ces deux voies soient galement praticables, il faut videmment que le systme pg ait de bonnes proprits. La premire, indispensable, est la validit. Dfinition 6.1 assertions vraies. Un systme formel est valide si tous ses thormes correspondent des

62

Une initiation au gnie logiciel

Licence STS/MIPE/UE19

Le systme formel Flin

Une seconde proprit est la compltude. Dfinition 6.2 Un systme formel est complet si toutes les assertions vraies correspondent des thormes Si la validit est une proprit videmment indispensable, la compltude est souhaitable : son absence limite quelque peu les performances du systme. Le systme pg est valide et complet. Il a mme une proprit supplmentaire, la dcidabilit. Dfinition 6.3 Un systme formel est dcidable si on dispose dun moyen permettant de dterminer, en un temps fini, si une formule est ou nest pas un thorme. Il est facile de montrer que pg est dcidable. En effet, tous les thormes de longueur n sont soit des axiomes de longueur n, soit des thormes obtenus en appliquant lunique rgle tous les thormes de longueur n - 2. Etant donn une formule F, il est donc possible de produire, en un temps fini, tous les thormes de la mme longueur que F. Si F est dans cet ensemble, cest un thorme, dans le cas contraire, on a la certitude quelle nen est pas un. Avoir un systme valide, complet et dcidable est un cas de figure confortable : on est en mesure de fabriquer une machine dmontrer les thormes ! On comprendra sans peine que ds que le systme atteint un certaine puissance dexpression cela nest plus le cas Il nen demeure pas moins que dans certains cas simples, comme pg, on est capable de faire une machine qui dmontre des choses (sur laddition par exemple) en manipulant des symboles a priori sans signification (manipulation purement formelle).

6.3 Le systme formel Flin


Un monde Flin est un systme formel et le moteur Flin est une machine produire des dmonstrations (syntaxiques).

6.3.1 Flin, aspects syntaxiques


Langage sparateurs : ( et ) et, constantes : tim, flix symboles prdicatifs : ronronne, pre termes : <symbole prdicatif> (<liste de constantes spares par des virgules>) le langage est lensemble des termes Axiomes (faits) ronronne(tim) Rgles si ronronne(X) alors chat(X)

Licence STS/MIPE/UE19

Une initiation au gnie logiciel

63

Systmes formels

Thormes Les thormes de Flin sont tous les mots qui peuvent tre produits lors dune saturation.

6.3.2 Flin, aspects smantique


Au cours du chapitre suivant nous caractrisons plus prcisment la nature et les limites de Flin. Remarquons toutefois que Flin ne sait et ne saura jamais ce quest un chat ! Il y a l un problme de nature aussi philosophique que scientifique : y-a-t-il des limites la capacit dexpression dun systme formel ?

6.4 Conclusions
6.4.1 Mathmatiques et systmes formels
Ce sont des mathmaticiens qui, au dbut de ce sicle, ont introduit le concept de systme formel. Les raisons de cette mergence sont simples : dune part, une dmonstration utilise des enchanements darguments trs strotyps (la forme) et dautre part les mathmatiques sont, entre autres, un outil pour modliser le monde (rapport entre une forme, les mathmatiques, et le fond, le processus physique modliser). En 1931, Kurt GDEL a dmontr un thorme, le thorme dincompltude, qui dit que tout systme formel suffisamment puissant est incomplet.

6.4.2 Informatique et systmes formels


Raliser un logiciel rpondant un cahier des charges nest pas autre chose que de construire un systme formel quon voudrait valide et quon espre complet (vis vis du cahier des charges, bien sr). Cela tient au fait que les 0 et les 1 manipuls par un calculateur ne reprsentent rien de dfini. A titre dexemple, remarquons que 1 (dans le monde) peut aussi bien tre cod par son code ASCII, par un mot en binaire pur, ou par tout autre convention venant lesprit du programmeur. On peut dfinir linformatique comme la discipline des farfelus qui sobstinent essayer de faire de la smantique avec de la syntaxe !

6.4.3 Intelligence et systmes formels


Lincompltude dmontre par Gdel, nest pas forcment le signe dune impossibilit de raliser des machines intelligentes. Si par intelligent on entend comme nous , arguer de lincompltude des systmes formels pour prouver notre supriorit dfinitive supposerait, au pralable, dobtenir la preuve que notre merveilleux cerveau est, lui-mme, autre chose quun systme formel. A notre connaissance, ni cette preuve, ni son contraire, nont encore t tablies.

64

Une initiation au gnie logiciel

Licence STS/MIPE/UE19

CHAPITRE 7

Calcul des propositions

7.1 Logique mathmatique


Pendant leur travail les mathmaticiens sintressent des assertions : le triangle ABC est isocle, tout ensemble fini dentiers admet une borne infrieure Ils cherchent (cest le but de leur travail) tablir si ces assertions sont vraies ou fausses. Pour ce faire, ils donnent une suite darguments plus ou moins convaincante : une dmonstration. Se posent alors un problme et une question : comment dterminer quune dmonstration est juste (problme), la dcouverte dune dmonstration est-elle automatisable (question) ? Pour aller plus loin, on peut constater que lenchanement des arguments est assez indpendant des arguments eux-mmes, do lide dtudier ces objets bizarres que sont assertions et argumentation.

7.1.1 Argumentation, propositions et prdicats


7.1.1.1 Argumentation Si le prvenu a commis le vol, cest que le vol a t minutieusement prpar, ou alors le prvenu avait un complice. Si le vol a t minutieusement prpar, alors, si le prvenu avait un complice, un butin plus important et t emport. Or, le butin na pas t important. Donc le prvenu na pas commis le vol . Cette argumentation est-elle convaincante ? En fait, cette question, complexe, se dcompose en deux problmes trs diffrents : admet-on ses bases ? est-elle cohrente ? Seul le second problme est un objet dtude pour le logicien. 7.1.1.2 Modlisation On peut dcortiquer une argumentation en remarquant quelle comporte, en gnral, plusieurs assertions quon considre comme admises (les bases) et dautres qui en dcoulent.

Licence STS/MIPE/UE19

Une initiation au gnie logiciel

65

Calcul des propositions

une assertion (phrase vraie ou fausse) on associe une proposition (objet mathmatique) ayant une valeur boolenne. En posant p1 : Si le prvenu a commis le vol, cest que le vol a t minutieusement prpar, ou alors le prvenu avait un complice . p2 : Si le vol a t minutieusement prpar, alors, si le prvenu avait un complice, un butin plus important et t emport . p3 : Le butin na pas t important . p4 : Le prvenu na pas commis le vol . on peut donner une forme gnrale largumentation prcdente : p1, p2, p3 = p4 = Ce formalisme signifie que si on admet p1, p2 et p3, alors on estime que p4 en dcoule. Il est clair que les diverses propositions utilises ne sont pas indpendantes et on peut raffiner ltude en recherchant leurs lments communs ; si on pose : a : le prvenu a commis le vol b : le vol a t minutieusement prpar c : le prvenu avait un complice d : un butin important a t emport On peut reformuler le problme : p1 : si a alors (b ou c) p2 : si b alors (si c alors d) p3 : non d p4 : non a On constate que les quatre propositions lmentaires que nous avons distingues sont composes laide de formes relativement frquentes : sialors, ou, non, quon appelle connecteurs. Il reste donc tudier la cohrence1 de p1, p2, p3 = p4 = sans accorder une importance particulire ce que signifient a, b et c. Le domaine mathmatique de ce type dtude est la logique des propositions ou calcul des propositions. 7.1.1.3 Propositions et prdicats Une proposition est lobjet mathmatique qui sert modliser une phrase vraie ou fausse. Cest toutefois souvent insuffisant. A titre dexemple, essayons de modliser le raisonnement :

1. On verra plus tard que cette argumentation ne tient pas

66

Une initiation au gnie logiciel

Licence STS/MIPE/UE19

Logique mathmatique

Tout homme est mortel. Socrate est un homme. Donc Socrate est mortel . On peut facilement trouver trois propositions :. a : tout homme est mortel b : Socrate est un homme c : Socrate est mortel Mais largumentation a, b = c = ne se prte pas une tude convaincante : pour aller plus loin, il faut reprer des lments communs a, b et c. Le morceau de phrase est un homme nest pas une proposition car ce nest pas une assertion ayant une seule valeur (il manque une information pour conclure). Do lintrt dune nouvelle notion , le prdicat, qui permet de modliser des assertions trous. Un prdicat P(x) modlise une famille dassertions. Exemple H(x) : x est un homme M(x) : x est mortel p1 : pour tout x (si H(x) alors M(x)) p2 : H(Socrate) p3 : M(Socrate) p1, p2 = p3 est une argumentation convaincante. = Le domaine mathmatique qui permet ce type dtude est la logique des prdicats (calcul des prdicats). Remarquons toutefois que sur un monde fini on peut se ramener au cas propositionnel : Si Socrate est un homme alors Socrate est mortel. Or Socrate est un homme, donc Socrate est mortel .

7.1.2 Argumentations convaincantes ou non


{si Socrate est un homme alors Socrate est mortel, Socrate est un homme} = Socrate est mortel =
{sil pleut alors la chausse est mouille, il pleut} = la chausse est mouille =

sont deux argumentations convaincantes. Elles ont dailleurs la mme forme gnrale quon = appelle modus ponens : {a b, a} = b En revanche

Licence STS/MIPE/UE19

Une initiation au gnie logiciel

67

Calcul des propositions

{sil pleut alors la chausse est mouille, il ne pleut pas} = la chausse est sche =

est une argumentation farfelue : si on admet ses bases, il est effectivement possible que la chausse soit sche, mais de nombreuses autres possibilits existent (quelquun vient de laver sa voiture, une arroseuse vient de passer, il vient juste de pleuvoir, la rivire a dbord). Cest la possibilit de lexistence dun cas de figure o la conclusion pourrait tre fausse qui rend largumentation illgitime, que ce cas de figure soit, ou non, vrifi dans une situation particulire.

7.2 Langage du calcul des propositions


Les propositions sont construites avec des lments de dpart, les variables propositionnelles (le prvenu est coupable, il pleut, Socrate est mortel) qui peuvent prendre les valeurs vrai ou faux. On obtient des propositions plus labores en utilisant des connecteurs, cest dire des moyens de relier des propositions pour en faire dautres. Langage du calcul des propositions <proposition> ::= <s-impl> <proposition> | <s-impl> <s-impl> ::= <s-impl> <terme> | <terme> <terme> ::=<terme> <facteur> | <facteur> <facteur> ::= <facteur> | <primaire> <primaire> ::= <variable propositionnelle> | (<proposition>) <variable propositionnelle> ::= identificateur Exemples p1 : a b c p2 : b c d p3 : d p4 : a Lensemble des variables propositionnelles (dnombrable) sera not P. Les mots du langage sont souvent appeles formules bien formes 1 ou, plus simplement, formules. La grammaire que nous avons donne comporte plusieurs tages qui traduisent les rgles dutilisation du parenthsage implicite. Il est intressant de comprendre comment la grammaire permet de dcrire lassociation des oprandes un oprateur donn. Considrons une drivation qui conduit la proposition a b c.
<proposition> <s-impl> <s-impl> <terme> <terme> <terme> <facteur> <terme> <primaire> <terme> <variable propositionnelle> <terme> a <terme> loprande gauche du ou est a, le droit est

1. Les anglo-saxons utilisent le terme well formed formula, en abrg, wff.

68

Une initiation au gnie logiciel

Licence STS/MIPE/UE19

Smantique

obtenu par le rsultat de la drivation de <terme> a <terme> <facteur> abc On pourra, avec profit, faire le mme exercice pour a b c.

La grammaire traduit le fait que le connecteur le plus prioritaire est le puis, par ordre de priorit dcroissante, on trouve le , le et enfin .

7.3 Smantique
7.3.1 Interprtation
Dfinition 7.1 Une interprtation I, est la donne dune valeur boolenne pour chaque variable propositionnelle, donc dune fonction de P dans {vrai, faux} 1. Exemple
a I vrai b faux c vrai

Choisir une interprtation, cest se placer dans un monde particulier (ou dans une famille de mondes si on donne une fonction partielle). Etant donn une interprtation I, il doit tre possible de donner une valeur boolenne vI(p) toute proposition p, valeur qui doit vrifier : vI(a) = I(a) pour toutes les variables propositionnelles, les proprits attendues des connecteurs. La valeur de vI(p) donne la signification de p dans le monde (la famille de mondes) quon a choisi.

7.3.2 Dfinition des connecteurs


Dfinition 7.2 La table de vrit dun connecteur donne, pour toutes les valeurs possibles de ses oprandes, la valeur du rsultat.

1. Dordinaire on se contente videmment dune fonction partielle, dfinie sur les variables propositionnelles quon utilise.

Licence STS/MIPE/UE19

Une initiation au gnie logiciel

69

Calcul des propositions

7.3.2.1 Ngation
p vrai faux p faux vrai

En franais, la ngation correspond dordinaire ne pas . Remarquons toutefois que, souvent, cest le verbe lui-mme qui porte la ngation : har cest ne pas aimer, ignorer cest ne pas savoir Ce genre dapproximation est cependant un peu simpliste car il est difficile de ranger aimer, tre indiffrent, har en deux catgories. Il existe des logiques plus de deux valeurs qui visent offrir plus de richesse. Enfin, lusage des doubles ngations est souvent contextuel : vous ntes pas sans savoir devrait signifier vous savez mais il est souvent clair que lorsquon utilise cette phrase on veut gnralement apprendre quelque chose son interlocuteur. Les anglo-saxons utilisent trs peu la double ngation 1. 7.3.2.2 Disjonction (ou)
p vrai vrai faux faux q vrai faux vrai faux pq vrai vrai vrai faux

En franais, lusage du ou est trs souvent ambigu dans la mesure o la logique distingue deux sortes de ou : le ou disjonctif (celui qui nous intresse) qui signifie soit lun, soit lautre, soit les deux et le ou exclusif, soit lun, soit lautre, mais pas les deux . Il est clair que dans lexpression fromage ou dessert on utilise le ou exclusif. En revanche, la phrase cet t, si je vais la mer, je pourrai faire de la planche voile ou du driveur pose des problmes dinterprtation : sur la dure le ou est probablement disjonctif, mais un moment donn il est manifestement exclusif.

1. Le livre de Cavanna, Mignonne allons voir si la rose, comporte un chapitre sur la ngation qui, mon sens, explique bien pourquoi nous avons plus de difficults que les anglo-saxons reprer les tournures ngatives.

70

Une initiation au gnie logiciel

Licence STS/MIPE/UE19

Smantique

7.3.2.3 Conjonction (et)


p vrai vrai faux faux q vrai faux vrai faux pq vrai faux faux faux

Le et pose peu de problmes, si ce nest quil est parfois cach derrire des formulations dapparence restrictives : a mais b , a quoique b , a tandis que b 7.3.2.4 Implication
p vrai vrai faux faux q vrai faux vrai faux pq vrai faux vrai vrai

Le connecteur implique, qui est le plus frquemment utilis dans les argumentations, correspond des tournures comme : si a alors b , b si a , a est une condition suffisante pour b , b est une condition ncessaire pour a . Les deux dernires lignes de la table posent souvent un problme aux dbutants : a b est vrai lorsque a est faux. Nous demandons avec insistance au lecteur de rflchir cette proprit qui est bien rsume par lexpression avec des si on mettrait Paris en bouteille . Une manire de comprendre le bien fond de cette dfinition est de comparer les tables de vrit qui suivent : quivalence
p vrai vrai faux faux q vrai faux vrai faux pq vrai faux faux vrai

Conjonction
p vrai q vrai pq vrai

Licence STS/MIPE/UE19

Une initiation au gnie logiciel

71

Calcul des propositions

p vrai faux faux

q faux vrai faux

pq faux faux faux

7.3.2.5 Valeur de vrit dune formule Etant donn une interprtation I, la valeur de vrit vI(p) dune proposition p est calcule partir de I, en respectant les tables de vrit et le parenthsage de p. Pour calculer vI(p), on calcule les valeurs de vrit des sous-formules de p, en commenant par les plus imbriques, cest--dire les variables propositionnelles.

Exemple
b vrai c faux d faux cd vrai bcd vrai

Pour une formule p utilisant n variables propositionnelles, il ny a que 2n interprtations (en fait familles dinterprtations) intressantes. Dfinition 7.3 La table de vrit dune formule p donne les valeurs de vrit de p dans toutes les interprtations possibles. Dfinition 7.4 Deux propositions p et q sont quivalentes si pour toute interprtation I, vI(p) = vI(q). En dautres termes, elles ont mme table de vrit. Par abus de notation, on crira a = b lorsque les deux formules a et b sont quivalentes. Compte tenu de cette dfinition, on constate que toute formule utilisant n variables propositionnelles se range dans une des 2 gnes, il y a donc 2
2
n

classes dquivalence (les tables de vrits ont 2 li-

tables diffrentes possibles).

7.3.3 Autres connecteurs


7.3.3.1 Connecteurs unaires Il y a quatre connecteurs unaires : la ngation, lidentit, le connecteur toujours vrai et le connecteur toujours faux. 7.3.3.2 Connecteurs binaires La table de vrit dun connecteur binaire est celle dune formule deux variables propositionnelles. Il y a donc 16 connecteurs binaires diffrents. Parmi les plus frquemment utiliss, outre les trois que nous connaissons, on peut citer le ou exclusif, lquivalence, le nand et le nor.

72

Une initiation au gnie logiciel

Licence STS/MIPE/UE19

Smantique

7.3.4 Proprits des connecteurs


7.3.4.1 Proprit de la ngation Proprit 7.1 (a) et a sont des formules quivalentes. 7.3.4.2 Proprits de limplication Lusage de limplication recle deux difficults majeures : On fait souvent la confusion entre implication et quivalence. On confond facilement assertion et validit du raisonnement. La phrase si a alors b est une assertion vraie ou fausse ; en revanche, le discours si on admet a il est lgitime de dduire b est un raisonnement. Dans le cas de lassertion il faut envisager tous les possibilits pour a alors que, pour le raisonnement, on se place dlibrment dans lhypothse o a est vrai. Cette habitude (le raisonnement) explique les difficults psychologiques du dbutant qui rpugne souvent admettre que a b a un sens quand a est faux. Le thorme de la dduction (Proprit 7.9) claircit les relations entre ces deux plans dtude du discours. Proprit 7.2 a b, b a, a b, (a b) sont des formules quivalentes.

Sur lexemple bien connu de la sentinelle, on constate que les deux interjections si vous avancez alors je tire et halte ou je tire ont bien la mme signification. On constate galement quil est impossible que quelquun avance sans que la sentinelle ne tire et que si la sentinelle ne tire pas, cela entrane obligatoirement que personne navance. En revanche, a b et a b ne sont pas quivalentes. Il y a des interprtations o ces deux formules nont pas mme valeur de vrit. Ainsi, on peut concevoir que la sentinelle, devant quelquun de menaant, tire mme si le quelquun en question navance pas. 7.3.4.3 Conjonction et disjonction Proprit 7.3 Les connecteurs et sont commutatifs et associatifs. Proprit 7.4 Proprit 7.5 Proprit 7.6 Proprit 7.7 a (b c) et (a b) (a c) sont des formules quivalentes. a (b c) et (a b) (a c) sont des formules quivalentes. (a b) et a b sont des formules quivalentes. (a b) et a b sont des formules quivalentes.

7.3.5 Systmes complets de connecteurs


On peut qualifier un langage du calcul des propositions en soulignant les connecteurs quil utilise. Le langage que nous avons prsent peut tre not L(, , , ). On peut se poser la question, dans la mesure o certains connecteurs peuvent sexprimer en en utilisant dautres, de savoir sil existe dautres langages ayant la mme puissance dexpression. On montre que L(, ), L(, ) et L(, ) on la mme expressivit que L(, , , ). A titre dexercice, on montrera que L(nand) est, lui aussi, complet. En revanche, L() ne permet pas de formuler nimporte quelle assertion propositionnelle.

Licence STS/MIPE/UE19

Une initiation au gnie logiciel

73

Calcul des propositions

7.3.6 Consquence logique


7.3.6.1 Dfinitions Dfinition 7.5

Modles, tautologies, contradictions.

On dit quune interprtation I est un modle de p si et seulement si vI(p) = vrai On dit quune interprtation I est un modle de lensemble de formules A = {p1,, pn} si et seulement si vI(p1) = = vI(pn) = vrai On dit que lensemble de formules A est satisfaisable si A admet un modle On dit que lensemble de formules A est contradictoire si A nadmet aucun modle On dit que p est une tautologie si toute interprtation est un modle de p On dit que p est une contradiction si aucune interprtation nest un modle de p Dfinition 7.6 On dit que p est consquence logique de A, si et seulement si vI(p) = vrai pour tous les modles I de A. On le note A = p. = On remarquera quune tautologie (on note une tautologie p par = p) est consquence logi= que de tout ensemble de propositions. En revanche, nimporte quelle formule p est consquence logique de tout ensemble A contradictoire : A nayant pas de modle, il est impossible den exhiber un o p soit fausse. En termes imags, cela signifie qu partir du moment o on dit nimporte quoi, il ny a pas de raisons de se limiter. Puisquil ny a aucune interprtation o a et a sont vraies on peut noncer la proprit qui suit : Proprit 7.8 Si A = a et A = a alors A = b = = =

On sait maintenant tudier une argumentation : il suffit dappeler A lensemble des arguments = (les bases sur lesquelles repose largumentation) et p sa conclusion et de chercher si A = p,
a vrai vrai vrai vrai vrai vrai vrai vrai faux faux faux faux faux b vrai vrai vrai vrai faux faux faux faux vrai vrai vrai vrai faux c vrai vrai faux faux vrai vrai faux faux vrai vrai faux faux vrai d vrai faux vrai faux vrai faux vrai faux vrai faux vrai faux vrai a (bc) vrai vrai vrai vrai vrai vrai faux faux vrai vrai vrai vrai vrai bcd vrai faux vrai vrai vrai vrai vrai vrai vrai faux vrai vrai vrai d faux vrai faux vrai faux vrai faux vrai faux vrai faux vrai faux a faux faux faux faux faux faux faux faux vrai vrai vrai vrai vrai

74

Une initiation au gnie logiciel

Licence STS/MIPE/UE19

Smantique

a faux faux faux

b faux faux faux

c vrai faux faux

d faux vrai faux

a (bc) vrai vrai vrai

bcd vrai vrai vrai

d vrai faux vrai

a vrai vrai vrai

cest dire si p est vrai dans tous les modles de A, cest dire de vrifier que si on admet les bases de largumentation, p est vrai dans tous les cas de figure possibles. Exemple On constate que largumentation utilise dans lintroduction nest pas lgitime. En effet, elle peut tre traduite par :
{a (b c), b (c d), d} = a =

En construisant la table de vrit des formules de dpart, on dcouvre des interprtations o a est fausse alors que a (b c), b (c d) et d sont vraies. Par exemple, Le vol a t minutieusement prpar, le prvenu navait pas de complice, un butin important na pas t emport est un cas de figure o le prvenu a pu commettre le vol. Dfinition 7.7 comme vraies. Une thorie, en logique, est un ensemble A de formules quon considre

Etudier une thorie, cest sintresser ses consquences logiques. 7.3.6.2 Quelques rsultats Thorme de la dduction La proprit qui suit (sa dmonstration est simple) est appele thorme de la dduction. Proprit 7.9 A = (a b) si et seulement si A {a} = b = =

Ce thorme dit en particulier que pour tablir a b, il suffit de supposer a et, sous cette hypothse supplmentaire, de dmontrer b. Cest bien comme a quon procde et cest cette habitude qui fait quon a du mal, psychologiquement, admettre que a b est vrai quand a est faux. Le thorme de la dduction permet de justifier lusage de la rgle de modus ponens. Comme a b = a b est vident, il suffit dappliquer le thorme pour obtenir {a b, = = a} = b. Raisonnement par labsurde Le raisonnement par labsurde consiste supposer le contraire de ce quon cherche prouver et, sous cette hypothse complmentaire, dmontrer une contradiction. Ce raisonnement est lgitim par la proprit suivante. Proprit 7.10 Si A {f} = p et A {f} = p alors A = f = = =

La dmonstration ne pose pas de problme particulier, si ce nest de comprendre quil y a deux cas envisager. Le premier cas est celui o A est contradictoire. Daprs la Proprit 7.8, on peut dduire f de A. Le second cas est celui o A admet au moins un modle.

Licence STS/MIPE/UE19

Une initiation au gnie logiciel

75

Calcul des propositions

Proprit 7.11 Si A admet un modle et si A {f} = a et A {f} = a alors f = = est vraie dans tous les modles de A. Chaque modle de A ntant pas un modle de f est ncessairement un modle de f. Conjonction Proprit 7.12 A {a} {b} = f si et seulement si A {a b} = f = =

7.3.6.3 Limitations pratiques Sur le plan thorique, on dispose du moyen dtudier nimporte quelle argumentation (limite au calcul des propositions). Dun point de vue pratique, on se heurte rapidement certaines limitations. Ainsi, on sait que pour tudier une argumentation comportant 100 variables propositionnelles (certains systmes experts offrent de telles possibilits) on doit construire un tableau de 2100 lignes. Supposons que lexamen dune ligne demande 1 s (10-6 s) 1. Le calcul complet ncessite alors (on rappelle que 210 est peu prs gal 103) environ 1024 s, ce qui reprsente, en gros, un million de fois lge de lunivers. On cherche donc viter des calculs exhaustifs et donc prendre en compte la forme particulire des formules tudies. Ce simple argument explique lintrt dune approche syntaxique 2.

7.4 Syntaxe
Il existe de nombreuses approches syntaxiques du calcul des propositions. Nous nous limitons deux dentre elles. La premire, dun intrt historique indniable, est prsente sur un sous-ensemble du calcul des propositions. La seconde, qui se gnralise au calcul des prdicats a eu des retombes spectaculaires en informatique (langage Prolog).

7.4.1 Systmes formels pour le calcul des propositions


Un systme formel est une machine produire les thormes dune thorie A ; il sagit dun procd mcanique permettant de produire, partir de A, des formules du langage. Ces formules sont appeles thormes de A (on note la production dun thorme f par A f). On remarquera que les deux valeurs vrai et faux napparaissent jamais dans le discours (on se place sur un plan purement syntaxique), sauf, videmment, lorsquon veut relier syntaxe et smantique, cest dire lorsquon sintresse la validit et la compltude du systme formel. Un systme formel est compos daxiomes (de schmas daxiomes) et de rgles. Les formules de A sont appeles axiomes propres de la thorie. Les thormes sont : soit des axiomes du systme, soit des axiomes propres de la thorie, soit des thormes obtenus en appliquant une rgle des thormes dj obtenus.

1. Cette valeur est particulirement optimiste ! 2. Pour le calcul des prdicats il ne sagit mme plus dun intrt, mais plutt de limpossibilit de raliser un calcul sur toutes les interprtations qui sont en nombre infini.

76

Une initiation au gnie logiciel

Licence STS/MIPE/UE19

Syntaxe

Une dmonstration est une suite de thormes. Enfin, une procdure de dcision pour un systme formel est un algorithme permettant de savoir, en un temps fini, si une formule est ou non un thorme. On note quil y a des systmes formels sans procdure de dcision.

7.4.2 Le systme formel D D


Le systme formel D ne travaille que sur des formules particulires : les clauses. Dfinition 7.8 On appelle littral une formule de la forme a (littral positif) ou a (littral ngatif) o a est une variable propositionnelle. Dfinition 7.9 On appelle clause une disjonction de littraux.

Cette restriction ne limite pas la puissance du systme dans la mesure o pour tout ensemble de formules on est capable de trouver un ensemble de clauses quivalent. 7.4.2.1 Formes normales Dfinition 7.10 On dit quune formule est en forme normale conjonctive (FNC) si cest une conjonction de clauses. En permutant le rle des connecteurs et dans les deux dfinitions qui prcdent on peut dfinir une forme normale disjonctive (FND). Proprit 7.13 Pour toute formule A il est possible de trouver une formule C en FNC et une formule D en FND qui lui sont quivalentes. Pour dmontrer cette proprit (par rcurrence sur le nombre n de connecteurs que nous appelons longueur de la formule de dpart), nous utilisons les notations suivantes : partir dune formule A on note C = C1 Cp une formule en FNC quivalente et D = D1 Dq une formule en FND quivalente. Si n =1 la formule est en FNC et en FND. On suppose que la proprit 7.13 est vraie pour toutes les formules de longueur infrieure n et on considre une formule de longueur n. Si on pose comme hypothse que toute formule A ayant moins de n connecteurs peut scrire sous la forme C et sous la forme D, il suffit dexaminer tous les cas de figure pour une formule n connecteurs : Cas A. A ayant une longueur infrieure n peut scrire sous la forme D. On a donc A = (D1 Dq) = D1 Dq. Chaque Di peut tre transform en clause en prenant lunion de la ngation de ses littraux. Cas A A. A et A ayant une longueur infrieure n on a A A = C1 Cp C1 Cp Cas A A. A et A ayant une longueur infrieure n on a A A = (C1 Cp) (C1 Cp) = (C1 C1) (Ci Cj) (Cp Cp) Cas A A. On fait un travail similaire en remarquant que A A = A A Pour la FND, il suffit dinverser les rles de et dans les raisonnements qui prcdent. partir dun ensemble de formules A = {p1,,pn}, la dmarche pour construire un ensemble de clauses quivalent est la suivante : On considre la formule f = p1 pn. A et {f} sont quivalents. On effectue la mise en FNC de f et on obtient une formule g = c1 cp qui est quivalente f. Lensemble de clauses C= {c1,,cp} est donc quivalent A.

Licence STS/MIPE/UE19

Une initiation au gnie logiciel

77

Calcul des propositions

7.4.2.2 Dfinition du systme D On se limite donc au langage C des clauses (disjonctions de littraux) et on dfinit un systme formel curieux, qui na pas daxiomes. Rgles On dispose de deux rgles qui ne visent qu traduire des proprits videntes de la disjonction (la notation Perm ( l 1 ... l n ) dsigne une clause obtenue en permutant de manire arbitraire les littraux de la clause l 1 ... l n ). ----------------------------------------

l 1 ... l n Perm ( l 1 ... l n ) llC ------------------lC

Nous nous contentons, en gnral, de les appliquer de manire implicite, mais, si on souhaitait programmer le systme D, il faudrait les intgrer lalgorithme. La rgle de base de D est la suivante :

a C 1, a C 2 ------------------------------------C 1 C2

Axiomes Le systme D nayant pas daxiomes gnraux, il ne peut fonctionner qu partir des axiomes propres dune thorie. Exemple : A = {a b, a b}, on a A D b. En effet ab a b bb b 7.4.2.3 Validit et compltude Les deux proprits de base de D sont faciles dmontrer. Proprit 7.14 D est valide

La validit des rgles exprimant le travail sur une clause dcoule de proprits videntes du ou. Le seul cas intressant est donc celui de la rgle de base.

a C 1, a C 2 ------------------------------------C 1 C2

Dans toute interprtation, soit a est vraie et C2 doit tre vraie, soit a est fausse et C1 doit tre vraie. Donc, dans tous les cas, C1 C2 est ncessairement vraie. Proprit 7.15 D nest pas complet

Cest vident dans la mesure o aucune tautologie ne peut donner lieu une preuve.

78

Une initiation au gnie logiciel

Licence STS/MIPE/UE19

Syntaxe

7.4.2.4 Validit et compltude faibles Nous montrons maintenant deux proprits utiles de D qui sapparentent aux proprits de validit et compltude lorsquon se restreint la dcouverte des contradictions. Dfinition 7.11 On dit que D produit la clause vide, ce quon note par T D si et seu lement si A D a et A D a D tant valide, on a la proprit Proprit 7.16 Si A D alors A est contradictoire.

Il est intressant de montrer la rciproque Proprit 7.17 Si A est contradictoire, alors A D

On dmontre cette proprit par rcurrence sur le nombre de variables propositionnelles. Lorsque A ne contient quune seule variable propositionnelle a, on montre facilement que si A est contradictoire, D produira a et a, donc . Si on a n variables propositionnelles, deux cas doivent tre envisags1. 1) La variable propositionnelle a napparat que dans des littraux positifs (ou ngatifs)
a vrai faux b x x a C1 vrai c1 C c c

La table de vrit
b x C c

reste contradictoire 2) La variable propositionnelle a apparat dans des littraux positifs ou ngatifs.
a vrai faux b x x a C1 vrai c1 a C2 c2 vrai C c c C1 C2 y y

1. Dans les tableaux qui suivent, tant les lignes que les colonnes reprsentent des groupes (de lignes ou de colonnes). Ainsi, sur le dessin, la ligne correspondant a vrai reprsente toutes les lignes de la table de vrit o a est vrai. De la mme manire, la colonne du dessin correspondant a C1, a C2, C reprsentent respectivement toutes les colonnes des formules o a apparat comme littral positif, ngatif ou napparat pas.

Licence STS/MIPE/UE19

Une initiation au gnie logiciel

79

Calcul des propositions

La table de vrit
b x C c C1 C2 y

reste contradictoire. En effet, si ce ntait pas le cas, il y aurait une ligne o c et y sont vrais. Pour ce faire, le tableau de dpart tant contradictoire, il existe obligatoirement une ligne (pour a vrai) avec une clause C2 fausse et une ligne (pour a faux) avec une clause C1 fausse. Ces deux lignes donneraient donc dans le nouveau tableau une ligne o la clause C1 C2 devrait tre fausse, do la contradiction. Cette dmonstration nous permet de trouver un algorithme permettant de dterminer, en un temps fini, si D produit ou non la clause vide : il suffit de considrer une par une chaque variable propositionnelle. Pour chacune dentre elles on utilise au maximum la rgle de D et on supprime toutes les clauses o elle apparaissait. Exemple A = {a b, a b, a b, a b}. On a A D . En effet : 1. Variable a. On produit {b b, b b, b, b}. 2. Variable b. On produit la clause vide.

7.4.3 Systme de ROBINSON


Nous considrons un systme formel, R, que nous ne cherchons pas dcrire : nous nous contentons de donner une procdure de dcision. Dfinition 7.12 leur succs. On dit que A R f si et seulement si lalgorithme suivant produit la va

Algorithme de ROBINSON On considre un ensemble C de clauses quivalent A {f} Si A D , on retourne la valeur succs, dans le cas contraire, la valeur chec. Exemple R a a. En effet C = {a, a} est quivalent (a a) et C D . Le systme R est valide et complet; ces proprits dcoulent directement de la validit et de la compltude faible du systme D, ainsi que de lexistence, pour D, dune procdure de dcision.

7.4.4 Application
On considre un ensemble A de formules du calcul des propositions

A = {P, Q, P U, R T U, P R, P Q R S, Q R S U }
On veut montrer en effectuant une preuve par la mthode de rsolution que U est consquence logique de A.

80

Une initiation au gnie logiciel

Licence STS/MIPE/UE19

Syntaxe

Lalgorithme de Robinson consiste utiliser, partir de lensemble C = {P, Q, P U, R T U, P R, P Q R S, Q R S U, U1} le systme D pour dterminer si C D .

7.4.4.1 Utilisation intuitive Un tre humain peut parfaitement utiliser ses capacits de raisonnement et dintuition pour produire, lorsquil en existe au moins une, une squence dapplication de la rgle de base conduisant la clause vide. On peut prsenter le rsultat de cette intuition laide dun shma.
P P Q R S P R Q R S U R R T U Q S U PU

Q Q R S

RS

Q S S S

Cette manire de procder trouve rapidement ses limites lorsque le nombre de clauses crot mais surtout, et cest fondamental, lorsque la clause vide nest pas atteignable. Dans ce cas il est en effet difficile dexhiber toutes les squences posssible pour monter quaucune ne produit la clause vide. 7.4.4.2 Algorithme Une des consquence de la dmonstration donne au paragraphe 7.4.2.4 est lexistence dun algorithme pour dterminer si C D . On considre une par une les variables dans un ordre arbitraire et chaque pas de lalgorithme : pour la variable x concerne, on applique la rgle de base de D sur tous les couples de clauses contenant respectivement les littraux x et x ; on supprime, pour le pas suivant, toutes les clauses utilisant x. Si C D la clause vide est obligatoirement produite lors dun des pas du calcul et rcipro quement.

1. La mise sous forme clausale de A {f} est, dans ce cas particulier, trs simple : il suffit de transformer U (qui joue le rle de f) en U.

Licence STS/MIPE/UE19

Une initiation au gnie logiciel

81

Calcul des propositions

Application Initialisation : C = {P, Q, P U, R T U, P R, P Q R S, Q R S U, U} 1. La variable P permet de produire {R, Q R S, U R, U Q R S} do : C1 = {R, Q R S, U R, U Q R S, Q, R T U, Q R S U, U} 2. La variable Q permet de produire {R S, U R S, R S U} do : C2 = {R S, U R S, R S U, R, U R, R T U, U} 3. La variable R permet de produire {S, S U, S T U, U S, U S U, U S T U, S U, S U U, S U T U}. Aprs limination des littraux redondants et suppression des clauses en double, on obtient {S, S U, S T U, S U, S U U, S U T U}. Pour la commodit de la lecture, nous liminons les clauses contenant U U (qui seraient limines, ainsi que leurs productions potentielles1, lors du traitement de la variable U). Do la production de {S, S U, S T U, S U}, ce qui donne : C3 = {S, S U, S T U, S U, U} 4. La variable S permet de produire {U, U U, T U U} do, avec les mmes simplifications : C4 = {U, U} 5. La variable U permet de produire la clause vide. Le lecteur est invit essayer dautres ordres de prise en compte des variables. Il est galement instructif dappliquer cet algorithme sur un ensemble de clauses non contradictoire et de remarquer la diffrence entre la production de la clause vide et la production dun ensemble vide de clauses.

7.5 Flin propositionnel


7.5.1 Le moteur Flin rduit au calcul propositionnel
Les faits de Flin correspondent des assertions de nature propositionnelle : ronronne(tim) correspond tim ronronne , pre(flix, tim) flix est le pre de tim . On peut pousser un peu plus loin lanalyse en constatant que chaque terme clos (ie. sans variable) de Flin peut tre assimil une variable propositionnelle. Si on se limite des rgles qui nutilisent que des termes clos, Flin devient ce quon appelle un moteur propositionnel. Exemple
Faits : {ronronne(tim), pre(tim, flix)} Rgles : { si ronronne(tim) alors chat(tim), si ronronne(flix) alors chat(flix), si ronronne(tim) et pre(tim, flix) alors ronronne(flix), si chat(tim) et pre(tim, flix) alors chat(flix)}

Flin est alors capable de produire chat(flix).

1. Notons que la rgle de base du systme D ne produit rien dintressant lorquelle sapplique en combinant 2 littraux U U C, U U C dune mme clause --------------------------------------------------------------- . U C U C

82

Une initiation au gnie logiciel

Licence STS/MIPE/UE19

Flin propositionnel

On peut modliser cette production par {ra, pab, ra ca, rb cb, ra pab rb, ca pab cb} Flin cb Notre propos est double : montrer que Flin ne produit pas nimporte quoi, cest dire prouver que Flin est vali de, montrer que Flin a des limitations intrinsques, cest dire (1) prouver que Flin nest pas complet et (2) cerner la nature de cette incompltude. Ces deux proprits sont conserves par le moteur Flin prdicatif qui, en outre, ajoute une autre catgorie de limitations.

7.5.2 Faits, rgles et clauses


Les faits et les rgles de Flin sont des ensembles de clauses. Cest vident pour les faits, qui sont des variables propositionnelles. Pour les rgles, il suffit des les crire autrement : si a et b et c alors d et e = (a b c) (d e) = (a b c) (d e) = (a b c d) (a b c e)

7.5.3 Un pas du moteur Flin


Un pas du moteur Flin consiste en plusieurs applications de la rgle de base du systme D.

Flin
{a, b, c, si a et b et c alors d et e} Flin d, e

Systme D
{a, b, c, (a b c d), (a b c e)} D b c d D c d Dd D b c e D c e De Par consquent, Flin est valide. Il est facile de montrer que sur la mme base de clauses, Flin produit les mmes thormes que D. Quoique D ne soit pas complet, on peut esprer le rendre complet en lutilisant la Robinson , on dit parfois en rfutation . Les limitations de Flin (son incompltude pratique) sont donc lies la puissance dexpression de son langage.

7.5.4 Clauses de Horn


Dfinition 7.13 Une clause de Horn est une clause ayant au plus un littral positif.

Les clauses de Flin sont toutes des clauses de Horn. On remarque cependant que les clauses de Flin ont toujours un littral positif, ce qui lui confre une premire limitation : on ne peut

Licence STS/MIPE/UE19

Une initiation au gnie logiciel

83

Calcul des propositions

jamais driver la clause vide et par consquent, on ne peut utiliser Flin en rfutation. Cette limitation pourrait sans trop de problmes tre leve, en modifiant lgrement le logiciel de saisie de la connaissance. La seconde catgorie de limitations est plus profonde. Proprit 7.18 Il existe des ensembles de formules pour lesquelles on ne peut pas trouver un ensemble de clauses de Horn quivalent. Larchtype de ce type de formule est la formule a b c. Flin ne peut donc pas les traiter. Intuitivement, en chanage avant, il faudrait introduire, lorsquon utilise une telle rgle, une bifurcation , ce qui changerait, profondment, la nature du moteur.

84

Une initiation au gnie logiciel

Licence STS/MIPE/UE19

CHAPITRE 8

Conclusions

Linformatique est la fois une science, une technique et un outil. Si toutes les disciplines tiennent en gnral des trois aspects, dans le cas de linformatique, limbrication des trois composantes est particulirement forte ce qui explique un certain nombre de difficults et de malentendus. Pour illustrer notre propos, nous donnons les dfinitions du ROBERT de ces trois termes. SCIENCE. Tout corps de connaissances ayant un objet dtermin et reconnu et une mthode propre ; domaine du savoir en ce sens. TECHNIQUE. Ensemble de procds mthodiques, fonds sur des connaissances scientifiques, employs la production. OUTIL. Objet fabriqu qui sert agir sur la matire, faire un travail. Sil est vident que linformatique est un outil (on labore de linformatique pour assurer un service) il est important de constater que le taux dvolution de la discipline implique un changement constant et rapide des outils disponibles, ainsi dailleurs quun changement galement rapide de lattente des utilisateurs, qui cre une confusion entre lapprentissage de linformatique et lapprentissage des outils informatiques. Ces deux notions doivent tre distingues : la discipline volue plus lentement que les outils quelle est capable de produire et il est donc envisageable den apprendre les bases dans un premier cycle vocation gnrale. En revanche, il faut tre bien conscient que lapprentissage dun outil particulier procure un savoir phmre, donc potentiellement dangereux si on ne prend pas conscience du moment o ce savoir devient obsolte. Il est galement clair que linformatique est une technique, mme sil est moins clair que la technique informatique peut tre utilise pour produire de linformatique. Cest l un des buts du gnie logiciel. Enfin, linformatique est en train de se constituer en science par laboration de mthodes propres. Au plan scientifique, linformatique est en effet la science du calcul automatique, donc une branche des mathmatiques dont elle hrite de la problmatique et des mthodes. Il nous parat clair quun informaticien raisonne et fait des preuves. En outre, il est confront

Licence STS/MIPE/UE19

Une initiation au gnie logiciel

85

Conclusions

directement la complexit (des objets, des raisonnements, des preuves quil manipule). Les outils mthodologiques dvelopps pour la matrise de la complexit comptent parmi les apports originaux de la discipline. Nous avons voulu, dans ce cours, que le lecteur puisse : sentir les problmes induits par la complexit et les mthodes utilises pour la matriser ; comprendre limbrication science-technique. Il est cependant important de remarquer que, pour ce qui concerne le gnie logiciel, ce cours nest quune premire initiation : les tapes les plus difficiles du cycle de vie (la conception) nont pas t abords ; le logiciel tudi reste un petit logiciel, son interface homme-machine est particulirement fruste et ses fonctionnalits sont trs sommaires ; les outils utiliss ne sont pas des outils professionnels ; Pour terminer, il nous reste signaler que la vision de linformatique quon peut se faire aprs lenseignement dispens en Deug comporte des lacunes. Il reste en effet de vastes pans de la discipline qui nont pas t abords. Parmi ceux-ci, il convient de citer larchitecture des machines et larchitecture des systmes qui tiennent une grande place dans les formations de second cycle.

86

Une initiation au gnie logiciel

Licence STS/MIPE/UE19

CHAPITRE 9

Bibliographie

Un ouvrage rcent fait une tude trs complte de lalgorithmique et des domaines qui lui sont lis. Il englobe en particulier les divers aspects de linformatique enseigns dans le Deug Sciences de Rennes. En outre, sa qualit est indniable : il est conseiller tous ceux qui souhaitent comprendre la diversit de la discipline1. Il sagit de : Alfred V. AHO, Jeffrey D. ULLMAN, Concepts fondamentaux de linformatique, Dunod (traduction 1993). Pour ce qui concerne ce cours, il est difficile de donner, sur les sujets quil aborde, une bibliographie dun niveau accessible un tudiant de Deug. La raison en est simple : de nombreuses branches de linformatique sont voques, mais un niveau lmentaire, alors que les ouvrages disponibles traitent, en gnral, un seul domaine, mais un niveau qui correspond un deuxime ou troisime cycle.

9.1 Intelligence artificielle


Lintelligence artificielle nest aborde que trs indirectement dans le cours : le logiciel qui sert de base aux travaux pratiques en relve. En revanche, ceux dont la curiosit sur le sujet est insatisfaite trouveront dans la revue Pour la science une mine darticles tout fait accessibles aux dbutants. Un numro dj ancien prsente le domaine : Les logiciels et lintelligence artificielle. Pour la science, no 85 (Novembre 1984). Le chanage avant et ses limitations sont abords dans : Jean-Paul DELAHAYE, Chanage avant et dductions logiques, Pour la science, no 172 (Fvrier 1992).

1. Notons cependant que cet ouvrage ne traite ni de systmes, ni darchitecture et quil naborde aucun domaine applicatif.

Licence STS/MIPE/UE19

Une initiation au gnie logiciel

87

Bibliographie

Enfin les deux articles qui suivent traitent du problme philosophique de lintelligence des machines. John SEARLE, Lesprit est-il un programme dordinateur ?, Pour la science, no 149 (Mars 1990). Paul CHURCHLAND, Patricia CHURCHLAND, Les machines peuvent-elles penser ?, Pour la science, no 149 (Mars 1990).

9.2 Thorie des langages


Il y a une bible en thorie des langages, cest la version revue et amliore du livre qui a berc les premires gnrations dinformaticiens. John E. HOPCROFT, Jeffrey D. ULLMAN, Introduction to Automata Theory, Languages and Computation, Addison-Wesley (1979). Le monode libre est un objet dont la structure est pauvre mais le contenu trs riche. Il peut se prter au rve. Nous conseillons, en particulier, la lecture dune nouvelle, La bibliothque de Babel, dans : J.L. BORGES, Fiction, Gallimard (collection Folio).

9.3 Logique
Yannis DELMAS-RIGOUTSOS et Ren LALEMENT, La Logique ou lArt de raisonner, Collection Quatre Quatre , Fayard, ditions du pommier (2000).

9.4 Systmes formels


Aprs avoir conu les grande lignes du cours, nous avons dcouvert le livre de Claude BENZAKEN qui dveloppe exactement les mmes sujets. Lapproche, en revanche, est notablement diffrente et ceux qui ont du got pour les mathmatiques y trouverons une base solide pour aborder ce quon appelle linformatique fondamentale. Claude BENZAKEN, Systmes formels - Introduction la logique et la thorie des langages, Masson (1991). mon got personnel, le meilleur ouvrage traitant de systmes formels est un ouvrage de vulgarisation qui a sa place dans toute bibliographie dinformatique. Douglas HOFSTADTER, Gdel, Escher, Bach. Les Brins dune Guirlande Eternelle. InterEditions (traduction 1985, dition originale 1979). Nous avons souhait ajouter cette liste un livre qui ne traite pas dinformatique : il est consacr aux problmes philosophiques poss par lvolution de la physique moderne. Outre le fait que sa thmatique gnrale devrait intresser un tudiant en Deug Sciences, il prsente lavantage daborder les rapports entre les systmes formels et la ralit. Roland OMNS, Philosophie de la science contemporaine. Gallimard (collection Folio/Essais).

88

Une initiation au gnie logiciel

Licence STS/MIPE/UE19

Gnie logiciel

9.5 Gnie logiciel


Citons dabord un grand classique : Ren DESCARTES, Discours de la mthode, Leyde (1637). Parmi les livres techniques, nous donnons deux ouvrages qui donnent un panorama complet du domaine. Lintroduction du livre de Bertrand MEYER est, mon avis, une trs bonne prsentation de la problmatique du gnie logiciel. M-C. GAUDEL et al., Prcis de gnie logiciel, Masson, 1996. Ian SOMMERVILLE, Le gnie logiciel. Addison Wesley (1992). Bertrand MEYER, Conception et programmation par objets. InterEditions (1990).

Licence STS/MIPE/UE19

Une initiation au gnie logiciel

89

Bibliographie

90

Une initiation au gnie logiciel

Licence STS/MIPE/UE19

Table des matires

CHAPITRE 1

Gnie logiciel
1.1 Buts du cours 5

5
5

1.2 Gnie logiciel : les problmes

1.3 Cycle de dveloppement et cycle de vie 6 1.4 Outils, techniques et mthodes 7 1.5 Suite du cours 8

CHAPITRE 2

Le logiciel Flin

9
9

2.1 Introduction aux systmes experts


2.1.1 Gnralits 9 2.1.2 Description du monde 2.1.3 Dduction 12 2.2.1 2.2.2 2.2.3 2.2.4 2.2.5 2.2.6 2.2.7 10

2.2 Produit Flin : cahier des charges

13

Prsentation gnrale 13 Enonc des faits initiaux 13 Enonc des rgles 14 Dductions 14 Principales limitations de Flin Interface utilisateur 16 Exemple dutilisation 17

15

2.3 Produit Flin : Spcifications et dcoupage modulaire


2.3.1 Conception prliminaire 18 2.3.2 Conception dtaille 20 2.3.3 Le document de conception dtaille

18

24

CHAPITRE 3

Langages et grammaires
3.1 Dfinitions de base 25

25

Licence STS/MIPE/UE19

Une initiation au gnie logiciel

91

Table des matires

3.1.1 Vocabulaire et mots 3.1.2 Langages 26

25

3.2 Grammaires
3.2.1 3.2.2 3.2.3 3.2.4 3.2.5 3.2.6

27

Prsentation informelle 27 Vocabulaires 27 Rgles 28 Rcriture (drivation) 28 Rsum 29 Exemples 29

3.3 Exploration dune grammaire 32 3.4 Classes de langages 33


3.4.1 Classification des grammaires 3.4.2 Classes de langage 34 3.4.3 Quelques paradigmes 34 33

3.5 Arbres syntaxiques

35

3.5.1 Notion darbre syntaxique 35 3.5.2 Grammaires ambigus 36 3.5.3 Arbres syntaxiques de type 2 et de type 3

37

3.6 Grammaire vs automates 37


3.6.1 Problme de loracle 3.6.2 Automates 38 38

CHAPITRE 4

Automates dterministes nombre fini dtats


4.1 Grammaires de type 3 41 4.2 Automates nombre fini dtats 42
4.2.1 Prsentation informelle 4.2.2 Dfinition 42 4.2.3 Autres exemples 43 42

41

4.3 Grammaires et automates 44 4.4 Programmation par automates 44


4.4.1 4.4.2 4.4.3 4.4.4 Un problme de programmation Reconnaissance 45 Calculs 45 Traitement des entiers 47 44

4.5 Conclusions

47

CHAPITRE 5

Langages de type 3 et automates nombre fini dtats 49


5.1 Oprations sur les langages 49
5.1.1 Langages rationnels 49

5.2 Une proprit fondamentale des langages de type 3


5.2.1 Oprations sur les grammaires 5.2.2 quations rationnelles 51 5.2.3 Bilan 52 51

50

5.3 Automates indterministes


5.3.1 5.3.2 5.3.3 5.3.4

52

Dterminiser une grammaire ? 52 Prsentation informelle 53 Dfinitions 54 quivalence grammaire-automate 54

92

Une initiation au gnie logiciel

Licence STS/MIPE/UE19

5.4 Dterminisation

55
55

5.4.1 Algorithme de dterminisation 5.4.2 Minimisation 56

5.5 Mthodologie de programmation par automate 57 5.6 Conclusions 58


5.6.1 Thorie des langages et gnie logiciel 58 5.6.2 La thorie des langages et linformatique fondamentale 58

CHAPITRE 6

Systmes formels 59
6.1 Rapports entre la forme et le fond 6.2 Le systme formel pg 60
60 6.2.1 Langage 60 6.2.2 Thormes, axiomes et rgles 6.2.3 Smantique 61

59

6.3 Le systme formel Flin 63


6.3.1 Flin, aspects syntaxiques 63 6.3.2 Flin, aspects smantique 64

6.4 Conclusions 64
6.4.1 Mathmatiques et systmes formels 64 6.4.2 Informatique et systmes formels 64 6.4.3 Intelligence et systmes formels 64

CHAPITRE 7

Calcul des propositions 65


7.1 Logique mathmatique 65
7.1.1 Argumentation, propositions et prdicats 65 7.1.2 Argumentations convaincantes ou non 67

7.2 Langage du calcul des propositions 7.3 Smantique 69


7.3.1 7.3.2 7.3.3 7.3.4 7.3.5 7.3.6 7.4.1 7.4.2 7.4.3 7.4.4 7.5.1 7.5.2 7.5.3 7.5.4

68

Interprtation 69 Dfinition des connecteurs 69 Autres connecteurs 72 Proprits des connecteurs 73 Systmes complets de connecteurs Consquence logique 74

73

7.4 Syntaxe 76
Systmes formels pour le calcul des propositions Le systme formel DD 77 Systme de ROBINSON 80 Application 80 Le moteur Flin rduit au calcul propositionnel Faits, rgles et clauses 83 Un pas du moteur Flin 83 Clauses de Horn 83 82 76

7.5 Flin propositionnel 82

Licence STS/MIPE/UE19

Une initiation au gnie logiciel

93

Table des matires

CHAPITRE 8 CHAPITRE 9

Conclusions Bibliographie

85 87
87 88

9.1 Intelligence artificielle 9.2 Thorie des langages 9.3 Logique 88 9.4 Systmes formels 88 9.5 Gnie logiciel 89

Table des matires 91

94

Une initiation au gnie logiciel

Licence STS/MIPE/UE19

Vous aimerez peut-être aussi