Contr le du moteur prolog
Download
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


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


La coupure cut
La coupure (cut) allons maintenant montrer qu’il est possible de le contrôler

  • 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 allons maintenant montrer qu’il est possible de le contrôler

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 allons maintenant montrer qu’il est possible de le contrôler

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 allons maintenant montrer qu’il est possible de le contrôler

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):- allons maintenant montrer qu’il est possible de le contrôler

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):- allons maintenant montrer qu’il est possible de le contrôler

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 allons maintenant montrer qu’il est possible de le contrôler

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 allons maintenant montrer qu’il est possible de le contrôler

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 allons maintenant montrer qu’il est possible de le contrôler

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 allons maintenant montrer qu’il est possible de le contrôler

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 allons maintenant montrer qu’il est possible de le contrôler(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 allons maintenant montrer qu’il est possible de le contrôler(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 allons maintenant montrer qu’il est possible de le contrôler(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 allons maintenant montrer qu’il est possible de le contrôler(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 allons maintenant montrer qu’il est possible de le contrôler

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 allons maintenant montrer qu’il est possible de le contrôler

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 allons maintenant montrer qu’il est possible de le contrôler

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 allons maintenant montrer qu’il est possible de le contrôler

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 allons maintenant montrer qu’il est possible de le contrôler

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 allons maintenant montrer qu’il est possible de le contrôler

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 allons maintenant montrer qu’il est possible de le contrôler

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 allons maintenant montrer qu’il est possible de le contrôler

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 allons maintenant montrer qu’il est possible de le contrôler

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 allons maintenant montrer qu’il est possible de le contrôler

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 allons maintenant montrer qu’il est possible de le contrôler

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 allons maintenant montrer qu’il est possible de le contrôler

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édicat allons maintenant montrer qu’il est possible de le contrôlernot/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) :- allons maintenant montrer qu’il est possible de le contrôler

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’). allons maintenant montrer qu’il est possible de le contrôler%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’). allons maintenant montrer qu’il est possible de le contrôler%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édicat allons maintenant montrer qu’il est possible de le contrôlersi/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 allons maintenant montrer qu’il est possible de le contrôler

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 allons maintenant montrer qu’il est possible de le contrôlera 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 :- allons maintenant montrer qu’il est possible de le contrôler

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