contr le du moteur prolog n.
Download
Skip this Video
Download Presentation
Contrôle du moteur Prolog

Loading in 2 Seconds...

play fullscreen
1 / 36

Contrôle du moteur Prolog - PowerPoint PPT Presentation


  • 88 Views
  • Uploaded on

Contrôle du moteur Prolog. Nous avons étudié le fonctionnement du moteur Prolog. Nous allons maintenant montrer qu’il est possible de le contrôler L’outil de base pour agir sur le comportement de Prolog est un prédicat prédéfini appelé le CUT (ou coupure). La coupure (cut).

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about 'Contrôle du moteur Prolog' - lita


Download Now An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
slide2
Nous avons étudié le fonctionnement du moteur Prolog. Nous allons maintenant montrer qu’il est possible de le contrôler
  • L’outil de base pour agir sur le comportement de Prolog est un prédicat prédéfini appelé le CUT (ou coupure)
la coupure cut
La coupure (cut)
  • Le cut est un prédicat déterministe qui peut toujours être effacé
  • Son effacement a pour effet de « couper » les choix en attente portant
    • sur le but qui l’a introduit dans le pile
    • ainsi que sur tous les buts introduits depuis son introduction
un premier exemple
a :- b. %0

b :- c, !, d. %1

b. %0

c. %1

c :- e , f. %0

P = a.

0

P = b.

1

P = c,!,d.

1

P = !,d.

 !

P=d.

no

Un premier exemple
effet du cut dans une question avec variables
b(1). %1

b(2). %0

c(1). %1

c(2). %0

{X=_,Y=_}P=b(X),c(Y).

1

{X=1,Y=_} P=c(Y).

1

{X=1,Y=1}P=.succès

0

{X=1,Y=2}P=.succès

{X=_,Y=_}P=b(X),c(Y).

0

{X=2,Y=_}P=c(Y).

1

{X=2,Y=1}P=.succès

0

{X=2,Y=2}P=.succès

Effet du Cut dans une questionavec variables
effet du cut dans une question avec variables1
b(1). %1

b(2). %0

c(1). %1

c(2). %0

{X=_,Y=_}P=b(X),!,c(Y).

1

{X=1,Y=_} P=!, c(Y).

 !

{X=1,Y=_} P=c(Y).

1

{X=1,Y=1}P=.succès

0

{X=1,Y=2}P=.succès

Effet du Cut dans une questionavec variables

le cut rend déterministe les prédicats qui le précèdent

effet du cut dans la queue d une r gle
a(X,Y):-

b(X),c(Y). %1

a(3,3). %0

b(1). %1

b(2). %0

c(1). %1

c(2). %0

{X=_,Y=_}P=a(X,Y).

1{X=_,Y=_}P=b(X),c(Y).

1 {X=1,Y=_}P=c(Y).

1 {X=1,Y=1} P=. succès

0 {X=1,Y=2} P=. succès

0 {X=2,Y=_}P=c(Y).

1

{X=2,Y=1} P=. succès

0

{X=2,Y=2} P=. succès

0{X=3,Y=3}P=b(3),c(3). no

Effet du Cut dans la queue d’une règle
effet du cut dans la queue d une r gle1
a(X,Y):-

b(X),!, c(Y). %1

a(3,3). %0

b(1). %1

b(2). %0

c(1). %1

c(2). %0

{X=_,Y=_}P=a(X,Y).

1

{X=_,Y=_}P=b(X), ! ,c(Y).

1

{X=1,Y=_}P= !,c(Y).

 !

{X=1,Y=_}P=c(Y).

1

{X=1,Y=1} P=. succès

0

{X=1,Y=2} P=. succès

Effet du Cut dans la queue d’une règle
effet du cut sur le r ponse succ s ou bien chec
a :- fail. %1

a . %0

P = a.

1

P = fail .

échec

0

P = .

succès

Effet du Cut sur le réponse(succès ou bien échec)
effet du cut sur le r ponse succ s ou bien chec1
a :- !, fail. %1

a . %0

P = a.

1

P = !, fail .

 !

P = fail .

échec

Effet du Cut sur le réponse(succès ou bien échec)
effet du cut sur le r ponse instanciation de variable
a(_). %1

a(1). %0

{X=_}P = a(X).

1

{X=_}P = .

succès

0

{X=1}P = .

succès

Effet du Cut sur le réponse(instanciation de variable)
effet du cut sur le r ponse instanciation de variable1
a(_):- !. %1

a(1). %0

{X=_}P = a(X).

1

{X=_}P = ! .

 !

{X=_}P = .

succès

Effet du Cut sur le réponse(instanciation de variable)
a quoi cela sert il obtenir une unique solution
chiffre(0). %9

chiffre(1). %8

chiffre(2). %7

chiffre(3). %6

chiffre(4). %5

chiffre(5). %4

chiffre(6). %3

chiffre(7). %2

chiffre(8). %1

chiffre(9). %0

Comment obtenir uniquement le premier chiffre (0) ?

?- chiffre(X).

A quoi cela sert-il ?obtenir une unique solution
a quoi cela sert il obtenir une unique solution1
chiffre(0). %9

chiffre(1). %8

chiffre(2). %7

chiffre(3). %6

chiffre(4). %5

chiffre(5). %4

chiffre(6). %3

chiffre(7). %2

chiffre(8). %1

chiffre(9). %0

Comment obtenir uniquement le premier chiffre (0) ?

?- chiffre(X), ! .

A quoi cela sert-il ?obtenir une unique solution
a quoi cela sert il obtenir une unique solution2
chiffre(0). %9

chiffre(1). %8

chiffre(2). %7

chiffre(3). %6

chiffre(4). %5

chiffre(5). %4

chiffre(6). %3

chiffre(7). %2

chiffre(8). %1

chiffre(9). %0

{X=_} P = chiffre(X) , ! .

9

{X=0} P = !.

 !

{X=0} P=. succes

A quoi cela sert-il ?obtenir une unique solution
a quoi cela sert il obtenir une unique solution3
chiffre(0). %9

chiffre(1). %8

chiffre(2). %7

chiffre(3). %6

chiffre(4). %5

chiffre(5). %4

chiffre(6). %3

chiffre(7). %2

chiffre(8). %1

chiffre(9). %0

premier_chiffre(X) :- chiffre(X), ! .

Comment obtenir uniquement le premier chiffre (0) ?

A quoi cela sert-il ?obtenir une unique solution
a quoi cela sert il obtenir une unique solution4
chiffre(0). %9

chiffre(1). %8

chiffre(2). %7

chiffre(3). %6

chiffre(4). %5

chiffre(5). %4

chiffre(6). %3

chiffre(7). %2

chiffre(8). %1

chiffre(9). %0

premier_chiffre(C) :- chiffre(C), ! . %0

{X=_} P=premier_chiffre(X).

0

{X=_} P=chiffre(X),!.

9

{X=0} P=!.

  !

{X=0} P=. succes

A quoi cela sert-il ?obtenir une unique solution
a quoi cela sert il optimiser le moteur
max(X,Y,X) :- Y =< X. %1

max(X,Y,Y) :- X < Y. %0

{X=_} P= max(2,3,X).

1

{X=2} P= 3=<2. no

0

{X=3} P= 2<3.

<

{X=3} P=. succes

A quoi cela sert-il ?optimiser le moteur
a quoi cela sert il optimiser le moteur1
max(X,Y,X) :- Y =< X. %1

max(X,Y,Y) :- X < Y. %0

{X=_} P= max(3,2,X).

1

{X=3} P= 2=<3.

=<

{X=2} P=. succes

0

{X=2} P= 3<2. no

A quoi cela sert-il ?optimiser le moteur
a quoi cela sert il optimiser le moteur2
max(X,Y,X) :- Y =< X, ! . %1

max(X,Y,Y) :- X < Y. %0

{X=_} P= max(3,2,X).

1

{X=3} P= 2=<3, !.

=<

{X=3} P= !.

  !

{X=3} P=. succes

A quoi cela sert-il ?optimiser le moteur
a quoi cela sert il optimiser le moteur3
max(X,Y,X) :- Y =< X, ! . %1

max(X,Y,Y) :- X < Y. %0

{X=_} P= max(2,3,X).

1

{X=2} P= 3=<2, !. no

0

{X=3} P= 2<3.

<

{X=3} P=. succes

A quoi cela sert-il ?optimiser le moteur
peut on encore simplifier
max(X,Y,X) :- Y =< X, ! . %1

max(_,Y,Y). %0

{X=_} P= max(3,2,X).

1

{X=3} P= 2=<3, !.

=<

{X=3} P= !.

  !

{X=3} P=. succes

Peut-on encore simplifier ?
peut on encore simplifier1
max(X,Y,X) :- Y =< X, ! . %1

max(_,Y,Y). %0

{X=_} P= max(2,3,X).

1

{X=2} P= 3=<2, !. no

0

{X=3} P=. succes

Peut-on encore simplifier ?
peut on encore simplifier2
max(X,Y,X) :- Y =< X, ! . %1

max(_,Y,Y). %0

P= max(2,3,2).

1

{X=2} P= 3=<2, !. no

Peut-on encore simplifier ?
peut on encore simplifier3
max(X,Y,X) :- Y =< X, ! . %1

max(_,Y,Y). %0

P= max(2,3,3).

0

P=. succes

Peut-on encore simplifier ?
peut on encore simplifier4
max(X,Y,X) :- Y =< X, ! . %1

max(_,Y,Y). %0

P= max(3,2,2).

0

P=. succes

Peut-on encore simplifier ?
a quoi cela sert il d finir la n gation
non_c :- c , ! , fail. %1

non_c. %0

P=non_c.

1

P= c, ! , fail.

c

P= ! , fail.

 !

P= fail. no

A quoi cela sert-il ?définir la négation
a quoi cela sert il d finir la n gation1
non_c :- c , ! , fail. %1

non_c. %0

P=non_c.

1

P= c, ! , fail. no

0

P= . succes

A quoi cela sert-il ?définir la négation
d finir un m ta pr dicat not 1
Définir un (méta) prédicatnot/1
  • prend en argument un prédicat
    • échoue si ce prédicat réussit
    • réussit dans le cas contraire

not(P) :- P , ! , fail. %1

not(_). %0

a quoi cela sert il impl menter une structure alternative
proc(X) :-

X=0, ! ,write(‘nul’). %1

proc(_):- write(‘non nul’). %0

Proc(X)

Si (X==0)ecrire(«nul»)

Sinon ecrire(«non nul»)

FinProc

A quoi cela sert-il ?implémenter une structure alternative
a quoi cela sert il impl menter une structure alternative1
proc(X) :- X=0,!,write(‘nul’). %1

proc(_):- write(‘non nul’). %0

P=proc(0).

1

P= 0=0, !, write(‘nul’).

=

P= ! , write(‘nul’).

!

P= write(‘nul’).

write

P=.succès

A quoi cela sert-il ?implémenter une structure alternative
a quoi cela sert il impl menter une structure alternative2
proc(X) :- X=0,!,write(‘nul’). %1

proc(_):- write(‘non nul’). %0

P=proc(1).

1

P= 1=0, !, write(‘nul’). no

0 P= write(‘non nul’).

write

P=.succès

A quoi cela sert-il ?implémenter une structure alternative
d finir un m ta pr dicat si 3
Définir un (méta) prédicatsi/3
  • prend en argument trois prédicats
    • Si le premier s’efface alors effacer le second
    • Sinon effacer le troisième

si(C,P,_) :- C, !, P. %1

si(_,_,Q) :- Q. %0

a quoi cela sert il impl menter une structure r p titive
repeat. %1

repeat :- repeat %0

proc :- repeat, a, b, c, !. %0

Proc

repeter

a

b

jusque c

A quoi cela sert-il ?implémenter une structure répétitive
repeat 1 repeat repeat 0 proc repeat a b c 0
On suppose que les prédicats a et b sont déterministes et s’effacent avec succès

P= repeat,a,b,c,!.

1 P= a,b,c,!.

a P= b,c,!.

b P= c,!. No

0 P= repeat,a,b,c,!.

a P= b,c,!

b P= c,!.

c P= !.

    ! P=. succes

repeat. %1repeat :- repeat %0proc :- repeat, a, b, c, !. %0
a quoi cela sert il traduire le proc dure suivante
Proc :-

repeat,

read(Note),

Si( Note>10,

write(“admis”),

write(« refuse »)

),

Note=-1, !.

Proc

Repeter

Lire(Note)

si Note>10

écrire(«admis»)

sinon

écrire(«refuse»)

Jusque Note=-1

A quoi cela sert-il ?Traduire le procédure suivante 
ad