SlideShare une entreprise Scribd logo
Quelques prédicats prédéfinis de SWI-Prolog
 L’affichage du contenu du fichier chargé se fait par :
?- listing.
 L’affichage d’une clause particulière, ici toto, se fait par :
?- listing(FoncteurDeLaClause).
 La longueur d’une liste
?- length([a, b, c],3).
Yes
?- length([a, [a, b], c], N).
N = 3
 Prédicats de type integer
?- integer(3).
Yes.
?- integer(X).
No.
Utilisation: integer(X), integer(Y), Z is X+Y;
 number : est-ce un nombre?
?- number(3.14).
Yes.
 float : est-ce un flottant?
 atom : est-ce un atome?
?- atom(homme).
Yes.
?- atom(3).
No
 atomic (ou constant dans certains Prolog) : Est-ce un atome ou un nombre?
 var : est-ce une variable non instanciée?
?- var(X).
Yes.
?- X = f(Z), var(X).
No
 nonvar. Le contraire de var.
?- nonvar(X).
No
 compound. Est-ce que le terme est composé?
?- compound(X).
No.
?- compound(f(X, Y)).
Yes
Opérateurs de comparaison:
X > Y
X < Y
X >= Y
X =< Y
X =:= Y les valeurs de X et Y sont identiques
X == Y les valeurs de X et Y sont différentes
 T1 == T2 : si les termes T1 et T2 sont littéralement égaux .
i.e. ont la même structure et leur composants sont les mêmes.
 T1 == T2 : est vrai si T1 == T2 est faux
Exemples:
?- f(a,b) == f(a,b).
yes
?- f(a,b) == f(a,X).
no
?- f(a,X) == f(a,Y).
no
?- X == Y
yes
?- t(X, f(a,Y)) == t(X, f(a,Y)).
yes
 Opérateur (=)
X = Y permet d’unifier X et Y (possibilité d’instanciation de variable.
Exemples:
?- 1 + 2 = 2 + 1.
no
1 + 2 =:= 2 + 1.
yes
?- 1 + A = B + 2.
A = 2
B = 1
Prédicats de manipulation de la BD :
 Ajout et suppression de clauses (règles) en cours d’exécution :
assert(C): ajout de la clause C à la base de données.
retract(C): Suppression des clauses unifiable avec C.
asserta(C): ajout de C au début de la base de données.
assertz(C): ajout de C en fin de la base de données.
 Repeat
Le prédicat repeat est toujours vrai (succès) et à chaque fois qu’il est rencontré, une nouvelle branche
d ’exécution est générée.
 bagof and setof
› La résolution Prolog peut trouver toutes les solutions satisfaisant un ensemble de
buts.
› Mais lorsqu’ ’une nouvelle solution est générée, la solution précédente est perdue.
› Les prédicats bagof,setof et findall permettent de collecter ses solutions dans une
liste.
 bagof(X,P,L):
permet de produire la liste L de tout les objets X vérifiant P.
Utile si X et P admettent des variable en commun.
 setof(X,P,L):
idem que bagof. Les éléments de la liste sont ordonnées et sans répétitions.

Contenu connexe

Tendances

Commande optimale
Commande optimaleCommande optimale
Commande optimale
Adouane
 
TD - travaux dirigé etude de fonction ( exercice ) Soufiane MERABTI
TD - travaux dirigé etude de fonction ( exercice ) Soufiane MERABTITD - travaux dirigé etude de fonction ( exercice ) Soufiane MERABTI
TD - travaux dirigé etude de fonction ( exercice ) Soufiane MERABTI
soufiane merabti
 
TD La fonction logarithme exercices corrigés - SOUFIANE MERABTI
TD La fonction logarithme exercices corrigés -  SOUFIANE MERABTITD La fonction logarithme exercices corrigés -  SOUFIANE MERABTI
TD La fonction logarithme exercices corrigés - SOUFIANE MERABTI
soufiane merabti
 
Formulaire derivees
Formulaire deriveesFormulaire derivees
Formulaire derivees
HASSANSABRA4
 
Résumé Algorithme et Programmation
Résumé Algorithme et ProgrammationRésumé Algorithme et Programmation
Résumé Algorithme et Programmation
borhen boukthir
 
Ts cours derivation_formulaire 6
Ts cours derivation_formulaire 6Ts cours derivation_formulaire 6
Ts cours derivation_formulaire 6Mohamedlemine Sarr
 
Séries de Fourier
Séries de FourierSéries de Fourier
Séries de Fourier
Frederic Jacobs
 
124776153 td-automatique-1 a-jmd-2011
124776153 td-automatique-1 a-jmd-2011124776153 td-automatique-1 a-jmd-2011
124776153 td-automatique-1 a-jmd-2011
sunprass
 
Tableaux derivees
Tableaux deriveesTableaux derivees
Tableaux derivees
Manar Sefiane
 
Une formule de dérivation pour les fonctions exponentielles
Une formule de dérivation pour les fonctions exponentiellesUne formule de dérivation pour les fonctions exponentielles
Une formule de dérivation pour les fonctions exponentielles
Clément Boulonne
 
Pseudo code DFS (Temps d'exécution avec python)
Pseudo code DFS (Temps d'exécution avec python)Pseudo code DFS (Temps d'exécution avec python)
Pseudo code DFS (Temps d'exécution avec python)
WaelTOUMI2
 
Cours series fourier
Cours series fourierCours series fourier
Cours series fourierMehdi Maroun
 
Fonctions chaine
Fonctions chaineFonctions chaine
Fonctions chaineAfef Ilahi
 
Arma
ArmaArma

Tendances (19)

Commande optimale
Commande optimaleCommande optimale
Commande optimale
 
TD - travaux dirigé etude de fonction ( exercice ) Soufiane MERABTI
TD - travaux dirigé etude de fonction ( exercice ) Soufiane MERABTITD - travaux dirigé etude de fonction ( exercice ) Soufiane MERABTI
TD - travaux dirigé etude de fonction ( exercice ) Soufiane MERABTI
 
TD La fonction logarithme exercices corrigés - SOUFIANE MERABTI
TD La fonction logarithme exercices corrigés -  SOUFIANE MERABTITD La fonction logarithme exercices corrigés -  SOUFIANE MERABTI
TD La fonction logarithme exercices corrigés - SOUFIANE MERABTI
 
Formulaire derivees
Formulaire deriveesFormulaire derivees
Formulaire derivees
 
Résumé Algorithme et Programmation
Résumé Algorithme et ProgrammationRésumé Algorithme et Programmation
Résumé Algorithme et Programmation
 
Ts cours derivation_formulaire 6
Ts cours derivation_formulaire 6Ts cours derivation_formulaire 6
Ts cours derivation_formulaire 6
 
Séries de Fourier
Séries de FourierSéries de Fourier
Séries de Fourier
 
Sequence kolakoski python
Sequence kolakoski pythonSequence kolakoski python
Sequence kolakoski python
 
Ch33 14
Ch33 14Ch33 14
Ch33 14
 
Exercice primitives
Exercice primitivesExercice primitives
Exercice primitives
 
Ch07 15
Ch07 15Ch07 15
Ch07 15
 
124776153 td-automatique-1 a-jmd-2011
124776153 td-automatique-1 a-jmd-2011124776153 td-automatique-1 a-jmd-2011
124776153 td-automatique-1 a-jmd-2011
 
Tableaux derivees
Tableaux deriveesTableaux derivees
Tableaux derivees
 
Ch04 23
Ch04 23Ch04 23
Ch04 23
 
Une formule de dérivation pour les fonctions exponentielles
Une formule de dérivation pour les fonctions exponentiellesUne formule de dérivation pour les fonctions exponentielles
Une formule de dérivation pour les fonctions exponentielles
 
Pseudo code DFS (Temps d'exécution avec python)
Pseudo code DFS (Temps d'exécution avec python)Pseudo code DFS (Temps d'exécution avec python)
Pseudo code DFS (Temps d'exécution avec python)
 
Cours series fourier
Cours series fourierCours series fourier
Cours series fourier
 
Fonctions chaine
Fonctions chaineFonctions chaine
Fonctions chaine
 
Arma
ArmaArma
Arma
 

En vedette

Ivan Bratko - Prolog programming for artificial intelligence 3rd edition
Ivan Bratko - Prolog programming for artificial intelligence 3rd editionIvan Bratko - Prolog programming for artificial intelligence 3rd edition
Ivan Bratko - Prolog programming for artificial intelligence 3rd editionguest012a99e
 
ProLog (Artificial Intelligence) Introduction
ProLog (Artificial Intelligence) IntroductionProLog (Artificial Intelligence) Introduction
ProLog (Artificial Intelligence) Introduction
wahab khan
 
Prolog Programming : Basics
Prolog Programming : BasicsProlog Programming : Basics
Prolog Programming : Basics
Mitul Desai
 
10 chapitre 4 listes et récursivité
10 chapitre 4 listes et récursivité10 chapitre 4 listes et récursivité
10 chapitre 4 listes et récursivitéSiham Rim Boudaoud
 

En vedette (6)

11 library
11 library11 library
11 library
 
Jean Rohmer
Jean RohmerJean Rohmer
Jean Rohmer
 
Ivan Bratko - Prolog programming for artificial intelligence 3rd edition
Ivan Bratko - Prolog programming for artificial intelligence 3rd editionIvan Bratko - Prolog programming for artificial intelligence 3rd edition
Ivan Bratko - Prolog programming for artificial intelligence 3rd edition
 
ProLog (Artificial Intelligence) Introduction
ProLog (Artificial Intelligence) IntroductionProLog (Artificial Intelligence) Introduction
ProLog (Artificial Intelligence) Introduction
 
Prolog Programming : Basics
Prolog Programming : BasicsProlog Programming : Basics
Prolog Programming : Basics
 
10 chapitre 4 listes et récursivité
10 chapitre 4 listes et récursivité10 chapitre 4 listes et récursivité
10 chapitre 4 listes et récursivité
 

Similaire à 12 quelques prédicats prédéfinis de swi

Les vecteurs seconde2020.pdf
Les vecteurs seconde2020.pdfLes vecteurs seconde2020.pdf
Les vecteurs seconde2020.pdf
rezgui10
 
Cours de Matlab
Cours de MatlabCours de Matlab
Mat lab1
Mat lab1Mat lab1
Mat lab1fouadDD
 
Chapitre 3 NP-complétude
Chapitre 3 NP-complétudeChapitre 3 NP-complétude
Chapitre 3 NP-complétude
Sana Aroussi
 
Slide matlab
Slide matlab Slide matlab
Slide matlab
Smee Kaem Chann
 
Variables aléatoires continues Chapitre 5.pdf
Variables aléatoires continues Chapitre 5.pdfVariables aléatoires continues Chapitre 5.pdf
Variables aléatoires continues Chapitre 5.pdf
KOUADIOPATRICE1
 
Les vecteurs seconde2020.pptx
Les vecteurs seconde2020.pptxLes vecteurs seconde2020.pptx
Les vecteurs seconde2020.pptx
rezgui10
 
Ebook matlab
Ebook matlabEbook matlab
Ebook matlabN NASRI
 
Algorithme distribués pour big data saison 2 @DevoxxFR 2016
Algorithme distribués pour big data saison 2 @DevoxxFR 2016Algorithme distribués pour big data saison 2 @DevoxxFR 2016
Algorithme distribués pour big data saison 2 @DevoxxFR 2016
Duyhai Doan
 
syntax-matlab.pdf
syntax-matlab.pdfsyntax-matlab.pdf
syntax-matlab.pdf
YasmineChihab
 
Algorithmique et programmation en Pascal (résumé)
Algorithmique et programmation en Pascal (résumé)Algorithmique et programmation en Pascal (résumé)
Algorithmique et programmation en Pascal (résumé)
salah fenni
 
espaces vectoriels et applications linéaires
espaces vectoriels et applications linéairesespaces vectoriels et applications linéaires
espaces vectoriels et applications linéaires
AhmedELYAHYAOUI
 
Présentation Scala
Présentation ScalaPrésentation Scala
Présentation Scala
jeremy guido
 
TAD (1).pptx
TAD (1).pptxTAD (1).pptx
TAD (1).pptx
SergeOngolo
 
Cours rep etat
Cours rep etatCours rep etat
Cours rep etatLin Pepin
 
Chapitre 2 complexité
Chapitre 2 complexitéChapitre 2 complexité
Chapitre 2 complexité
Sana Aroussi
 
Mémento caml
Mémento camlMémento caml
Mémento caml
zan
 
COURS_PYTHON_22.ppt
COURS_PYTHON_22.pptCOURS_PYTHON_22.ppt
COURS_PYTHON_22.ppt
IbtissameAbbad1
 
Support matlab st
Support matlab stSupport matlab st
Support matlab st
N NASRI
 

Similaire à 12 quelques prédicats prédéfinis de swi (20)

Les vecteurs seconde2020.pdf
Les vecteurs seconde2020.pdfLes vecteurs seconde2020.pdf
Les vecteurs seconde2020.pdf
 
Cours de Matlab
Cours de MatlabCours de Matlab
Cours de Matlab
 
Mat lab1
Mat lab1Mat lab1
Mat lab1
 
Chapitre 3 NP-complétude
Chapitre 3 NP-complétudeChapitre 3 NP-complétude
Chapitre 3 NP-complétude
 
Slide matlab
Slide matlab Slide matlab
Slide matlab
 
Variables aléatoires continues Chapitre 5.pdf
Variables aléatoires continues Chapitre 5.pdfVariables aléatoires continues Chapitre 5.pdf
Variables aléatoires continues Chapitre 5.pdf
 
Les vecteurs seconde2020.pptx
Les vecteurs seconde2020.pptxLes vecteurs seconde2020.pptx
Les vecteurs seconde2020.pptx
 
Ebook matlab
Ebook matlabEbook matlab
Ebook matlab
 
Algorithme distribués pour big data saison 2 @DevoxxFR 2016
Algorithme distribués pour big data saison 2 @DevoxxFR 2016Algorithme distribués pour big data saison 2 @DevoxxFR 2016
Algorithme distribués pour big data saison 2 @DevoxxFR 2016
 
syntax-matlab.pdf
syntax-matlab.pdfsyntax-matlab.pdf
syntax-matlab.pdf
 
Algorithmique et programmation en Pascal (résumé)
Algorithmique et programmation en Pascal (résumé)Algorithmique et programmation en Pascal (résumé)
Algorithmique et programmation en Pascal (résumé)
 
espaces vectoriels et applications linéaires
espaces vectoriels et applications linéairesespaces vectoriels et applications linéaires
espaces vectoriels et applications linéaires
 
Présentation Scala
Présentation ScalaPrésentation Scala
Présentation Scala
 
TAD (1).pptx
TAD (1).pptxTAD (1).pptx
TAD (1).pptx
 
Cours rep etat
Cours rep etatCours rep etat
Cours rep etat
 
Chapitre 2 complexité
Chapitre 2 complexitéChapitre 2 complexité
Chapitre 2 complexité
 
Video
VideoVideo
Video
 
Mémento caml
Mémento camlMémento caml
Mémento caml
 
COURS_PYTHON_22.ppt
COURS_PYTHON_22.pptCOURS_PYTHON_22.ppt
COURS_PYTHON_22.ppt
 
Support matlab st
Support matlab stSupport matlab st
Support matlab st
 

Plus de Siham Rim Boudaoud

Diapo. ite web dynamique sous JEE, application aux entreprises de production ...
Diapo. ite web dynamique sous JEE, application aux entreprises de production ...Diapo. ite web dynamique sous JEE, application aux entreprises de production ...
Diapo. ite web dynamique sous JEE, application aux entreprises de production ...
Siham Rim Boudaoud
 
Mémoire de Licence, site web dynamique sous JEE, application aux entreprises ...
Mémoire de Licence, site web dynamique sous JEE, application aux entreprises ...Mémoire de Licence, site web dynamique sous JEE, application aux entreprises ...
Mémoire de Licence, site web dynamique sous JEE, application aux entreprises ...
Siham Rim Boudaoud
 

Plus de Siham Rim Boudaoud (14)

9 gl2
9 gl29 gl2
9 gl2
 
8 gl1
8 gl18 gl1
8 gl1
 
8 arbre généalogique
8 arbre généalogique8 arbre généalogique
8 arbre généalogique
 
7
77
7
 
6 unification
6 unification6 unification
6 unification
 
5 installation de prolog
5 installation de prolog5 installation de prolog
5 installation de prolog
 
4 histoir
4 histoir4 histoir
4 histoir
 
3 intro
3 intro3 intro
3 intro
 
2
2 2
2
 
2 sommaire
2  sommaire2  sommaire
2 sommaire
 
1 page de garde
1 page de garde1 page de garde
1 page de garde
 
13 conclusion
13  conclusion13  conclusion
13 conclusion
 
Diapo. ite web dynamique sous JEE, application aux entreprises de production ...
Diapo. ite web dynamique sous JEE, application aux entreprises de production ...Diapo. ite web dynamique sous JEE, application aux entreprises de production ...
Diapo. ite web dynamique sous JEE, application aux entreprises de production ...
 
Mémoire de Licence, site web dynamique sous JEE, application aux entreprises ...
Mémoire de Licence, site web dynamique sous JEE, application aux entreprises ...Mémoire de Licence, site web dynamique sous JEE, application aux entreprises ...
Mémoire de Licence, site web dynamique sous JEE, application aux entreprises ...
 

12 quelques prédicats prédéfinis de swi

  • 1. Quelques prédicats prédéfinis de SWI-Prolog  L’affichage du contenu du fichier chargé se fait par : ?- listing.  L’affichage d’une clause particulière, ici toto, se fait par : ?- listing(FoncteurDeLaClause).  La longueur d’une liste ?- length([a, b, c],3). Yes ?- length([a, [a, b], c], N). N = 3  Prédicats de type integer ?- integer(3). Yes. ?- integer(X). No. Utilisation: integer(X), integer(Y), Z is X+Y;  number : est-ce un nombre? ?- number(3.14). Yes.  float : est-ce un flottant?  atom : est-ce un atome? ?- atom(homme). Yes. ?- atom(3). No  atomic (ou constant dans certains Prolog) : Est-ce un atome ou un nombre?  var : est-ce une variable non instanciée? ?- var(X). Yes. ?- X = f(Z), var(X). No  nonvar. Le contraire de var. ?- nonvar(X). No  compound. Est-ce que le terme est composé? ?- compound(X). No. ?- compound(f(X, Y)). Yes
  • 2. Opérateurs de comparaison: X > Y X < Y X >= Y X =< Y X =:= Y les valeurs de X et Y sont identiques X == Y les valeurs de X et Y sont différentes  T1 == T2 : si les termes T1 et T2 sont littéralement égaux . i.e. ont la même structure et leur composants sont les mêmes.  T1 == T2 : est vrai si T1 == T2 est faux Exemples: ?- f(a,b) == f(a,b). yes ?- f(a,b) == f(a,X). no ?- f(a,X) == f(a,Y). no ?- X == Y yes ?- t(X, f(a,Y)) == t(X, f(a,Y)). yes  Opérateur (=) X = Y permet d’unifier X et Y (possibilité d’instanciation de variable. Exemples: ?- 1 + 2 = 2 + 1. no 1 + 2 =:= 2 + 1. yes ?- 1 + A = B + 2. A = 2 B = 1 Prédicats de manipulation de la BD :  Ajout et suppression de clauses (règles) en cours d’exécution : assert(C): ajout de la clause C à la base de données. retract(C): Suppression des clauses unifiable avec C. asserta(C): ajout de C au début de la base de données. assertz(C): ajout de C en fin de la base de données.  Repeat Le prédicat repeat est toujours vrai (succès) et à chaque fois qu’il est rencontré, une nouvelle branche d ’exécution est générée.  bagof and setof › La résolution Prolog peut trouver toutes les solutions satisfaisant un ensemble de buts. › Mais lorsqu’ ’une nouvelle solution est générée, la solution précédente est perdue. › Les prédicats bagof,setof et findall permettent de collecter ses solutions dans une liste.  bagof(X,P,L): permet de produire la liste L de tout les objets X vérifiant P. Utile si X et P admettent des variable en commun.  setof(X,P,L): idem que bagof. Les éléments de la liste sont ordonnées et sans répétitions.