Devoirs Hebdomadaire N°2
CDL...DH2


M. Joseph DASSE BRIKA

QUESTION 1 :

  1. Lancez l'applette "Travaux Pratiques ProPlog" en cliquant sur le lien.
  2. Vérifiez le bon fonctionnement en chargeant l'exemple Ours (menu Exemples>Ours)
    • demandez une exécution en chaînage avant (menu Semantique>chaînage avant puis menu Menu>Execute)
    • demandez une exécution en chaînage arrière pour la question ?- baleine. (menu Semantique>chaînage arrière et poser la question ?- baleine. dans  la ligne apparue en dessous des fenêtres puis 'Enter' ou menu Menu>Execute)

(Répondre par le listing complet des 2 fenêtres : copier/coller dans une table ou image des fenêtres)


Reprendre maintenant le Programme du DH01 :

destCDI_1.pl
dest :- cycle_Probatoire_CDI , uv_Approfondissement , uv_SocioEconomique.

cycle_Probatoire_CDI :- uvCDI1 , uvCDI2 , uvCDI3 , uvCDI4.

uvCDI2 :- uv16472.
uvCDI3 :- uv19339.
uvCDI4 :- uv16392.

uvCDI1 :- uv10863 , uv10872.
uvCDI1 :- uv10863 , uv16883.
uvCDI1 :- uv10863 , uv16767.
uvCDI1 :- uv10863 , uv19786.

En ProPlog les procédures (groupe de clauses ayant leurs parties gauches identiques) comportant une seule règle peuvent supprimées après avoir substitué la suite d'atomes de leur partie droite à  l'atome de leur partie gauche partout ailleurs dans le programme.

Exemple :  on peut supprimer uvCDI2 :- uv16472. à condition d'avoir remplacé

cycle_Probatoire_CDI :- uvCDI1 , uvCDI2 , uvCDI3 , uvCDI4.

par

cycle_Probatoire_CDI :- uvCDI1 , uv16472 , uvCDI3 , uvCDI4.

D'autre part l'atome uv10863 se retrouve, dans chacune des règles de la procédure uvCDI1 , alors la spécification de uvCDI1 peut être remplacée par :

uvCDI1 :- uv10863 , choix_Probatoire_CDI.

choix_Probatoire_CDI :- ... /* à définir */

QUESTION 2 : Transformer, simplifier  le programme en fonction des deux remarques précédentes (vous conserverez toutefois la règle unique cycle_Probatoire_CDI :- ...) et enregistrer ce nouveau programme dans le fichier dest_CDI_2.pl. (Ne pas oublier de définir choix_Probatoire_CDI)

(Répondre par un listing du Programme.)


QUESTION 3 : Quel est la base de Herbrand du nouveau programme ?


Relisez soigneusement les contraintes syntaxiques pour la rédaction des règles dans l'espace de travail de l'applet (fenêtre de gauche). Notamment, ATTENTION,PAS d'espace après les points (.)

Nettoyer l'espace de travail (menu Menu>Clear). Chargez le programme obtenu à la question 2 et les acquis de Bertrand (copier/coller dans la fenêtre de Gauche).

L'étudiant Bertrand  possède MOCA B2, le Projet CDI , I.A. B4 , Système et Réseaux B4. Enregistrer ces acquis dans le fichier acquis_Bertrand.pl

QUESTION 4 : demandez une exécution en chaînage avant du programme ainsi obtenu et demandez la réponse à question ?- dest. en chaînage arrière.

(Répondre par le listing  ou une image des 2 fenètres)


QUESTION 5 : modifier l'espace de travail (couper/coller) pour prendre maintenant en compte les acquis de Pierre et répondre à la question

 ?- cycle_Probatoire_CDI. et demander une exécution en chaînage avant du programme ainsi obtenu.

(Répondre par le listing ou une image des 2 fenètres)

L'étudiant Pierre  possède MOCA B2, le Projet CDI , I.A. B4 , MOCA B1 , Système et Réseaux B4 , CDL_B3. Enregistrer ces acquis dans le fichier acquis_Pierre.pl


QUESTION 1 :
Vérification du bon fonctionnement de l'applette "Travaux Pratiques ProPlog".

1°/ Exécution en chaînage avant.

% Ours.pl


% base de règles
mammifere :- allaite.
dans_foret :- fourrure.
oiseau :- a_des_plumes.
ours :- lourd, dans_foret,mammifere.
baleine :- lourd, dans_l_eau,mammifere.

% base de faits
lourd.
fourrure.
allaite.

Tp1 = {allaite,fourrure,lourd}

Tp2 = {allaite,dans_foret,mammifere,fourrure,lourd}
Tp3 = {allaite,ours,dans_foret,mammifere,fourrure,lourd}
Tp4 = {allaite,ours,dans_foret,mammifere,fourrure,lourd}

denotation: {allaite,fourrure,lourd,dans_foret,mammifere,ours}
 

2°/ Exécution en chaînage arrière pour la question ?- baleine.

% Ours.pl


% base de règles
mammifere :- allaite.
dans_foret :- fourrure.
oiseau :- a_des_plumes.
ours :- lourd, dans_foret,mammifere.
baleine :- lourd, dans_l_eau,mammifere.

% base de faits
lourd.
fourrure.
allaite.

call: baleine
call: lourd
exit: lourd
call: dans_l_eau
fail: dans_l_eau
fail: baleine
 
?- baleine.

QUESTION 2 :

Transformation et simplification du programme.

En substituant les atomes  uvCDI2, uvCDI3, uvCDI4 , dans cycle_Probatoire_CDI,  par leur queue de clause, on obtient :

cycle_Probatoire_CDI :- , uv16472 , uv19339 , uv16392 , uvCDI1.

Mais uvCDI1 peut être remplacé par
- sa partie fixe uv10863.
- sa partie variable choix_Probatoire_CDI.
Ce qui donne:

cycle_Probatoire_CDI :- uv16472 , uv19339 , uv16392 , uv10863 , choix_Probatoire_CDI

fichier dest_CDI_2.pl.

cycle_Probatoire_CDI :- uv16472 , uv19339 , uv16392 , uv10863 , choix_Probatoire_CDI

% définir choix_Probatoire_CDI

choix_Probatoire_CDI :- uv10872.
choix_Probatoire_CDI :- uv16883.
choix_Probatoire_CDI :- uv16767.
choix_Probatoire_CDI :- uv19786.

QUESTION 3 :

Base d'Herbrand

{cycle_Probatoire_CDI , uv16472 , uv19339 , uv16392 , uv10863 , 
choix_Probatoire_CDI , uv10872, uv16883 , uv16767 , uv19786 }.

QUESTION 4 :

acquis_Bertrand.pl

uv19339.
uv16392.
uv10872.
uv19900.

Chaînage avant du programme avec les acquis de Bertrand.

cycle_Probatoire_CDI :- uv16472 , uv19339 , uv16392 , uv10863 , choix_Probatoire_CDI.

% définir choix_Probatoire_CDI

choix_Probatoire_CDI :- uv10872.
choix_Probatoire_CDI :- uv16883.
choix_Probatoire_CDI :- uv16767.
choix_Probatoire_CDI :- uv19786.

uv19339.
uv16392.
uv10872.
uv19900.
 
Tp1={uv10872,uv19339,uv19900,uv16392} 


Tp2 = {uv10872,uv19339,uv19900,choix_Probatoire_CDI,uv16392}


Tp3 = {uv10872,uv19339,uv19900,choix_Probatoire_CDI,uv16392}

denotation: {uv10872,uv19339,uv19900,uv16392,choix_Probatoire_CDI}


 

Chaînage arrière de la question ?- dest.

cycle_Probatoire_CDI :- uv16472 , uv19339 , uv16392 , uv10863 , choix_Probatoire_CDI.

% définir choix_Probatoire_CDI

choix_Probatoire_CDI :- uv10872.
choix_Probatoire_CDI :- uv16883.
choix_Probatoire_CDI :- uv16767.
choix_Probatoire_CDI :- uv19786.

uv19339.
uv16392.
uv10872.
uv19900.
call: dest
fail: dest

échec


 

?- dest.

QUESTION 5 :

acquis_Pierre.pl

uv10872.
uv16392.
uv19900.
uv10863.
uv19339.
uv16472.

Execution de la semantique par chaînage arrière pour la question ?- cycle_Probatoire_CDI. avec les acquis de Pièrre.

cycle_Probatoire_CDI :- uv16472 , uv19339 , uv16392 , uv10863 , choix_Probatoire_CDI.

% définir choix_Probatoire_CDI
choix_Probatoire_CDI :- uv10872.
choix_Probatoire_CDI :- uv16883.
choix_Probatoire_CDI :- uv16767.
choix_Probatoire_CDI :- uv19786.


% acquis de Pièrre.
uv10872.
uv16392.
uv19900.
uv10863.
uv19339.
uv16472.

call: cycle_Probatoire_CDI
call: uv16472
exit: uv16472
call: uv19339
exit: uv19339
call: uv16392
exit: uv16392
call: uv10863
exit: uv10863
call: choix_Probatoire_CDI
call: uv10872
exit: uv10872
exit: choix_Probatoire_CDI
exit: cycle_Probatoire_CDI

succès
 


 

?- cycle_Probatoire_CDI.

Exécution en chaînage avant du programme obtenu.

cycle_Probatoire_CDI :- uv16472 , uv19339 , uv16392 , uv10863 , choix_Probatoire_CDI.

% définir choix_Probatoire_CDI
choix_Probatoire_CDI :- uv10872.
choix_Probatoire_CDI :- uv16883.
choix_Probatoire_CDI :- uv16767.
choix_Probatoire_CDI :- uv19786.


% acquis de Pièrre.
uv10872.
uv16392.
uv19900.
uv10863.
uv19339.
uv16472.

Tp1 = {uv19339,uv10872,uv19900,uv16392,uv10863,uv16472}

Tp2 = {uv19339,uv10872,uv19900,choix_Probatoire_CDI,uv16392, uv10863,uv16472}

Tp3 = {uv19339,uv10872,uv19900,choix_Probatoire_CDI,uv16392, uv10863,uv16472,cycle_Probatoire_CDI}

Tp4 = {uv19339,uv10872,uv19900,choix_Probatoire_CDI,uv16392, uv10863,uv16472,cycle_Probatoire_CDI}

denotation: {uv19339,uv10872,uv19900,uv16392,uv10863,uv16472, choix_Probatoire_CDI,cycle_Probatoire_CDI}

FIN_dh2

ACCUEIL CONTACT FAVORIS ANNALES DH1 DH2 DH3 DH4 DH5 DH6 DH7 DH8 DH9 DH10 DH11 DH12 DH13 DH14 DH15 DH16