99
Programmation logique Pascal Schreck Introduction Logique Prolog Contraintes Introduction ` a la programmation logique et par contraintes Pascal Schreck Universit´ e de Strasbourg - LSIIT, UMR CNRS 7005 Oct. 2015

Introduction à la programmation logique et par … · Programmation logique Pascal Schreck Introduction Logique Prolog Contraintes Un peu d’histoire Roots Calcul, preuves et automatisme

Embed Size (px)

Citation preview

Page 1: Introduction à la programmation logique et par … · Programmation logique Pascal Schreck Introduction Logique Prolog Contraintes Un peu d’histoire Roots Calcul, preuves et automatisme

Programmationlogique

Pascal Schreck

Introduction

Logique

Prolog

Contraintes

Introduction a la programmation logique etpar contraintes

Pascal Schreck

Universite de Strasbourg - LSIIT, UMR CNRS 7005

Oct. 2015

Page 2: Introduction à la programmation logique et par … · Programmation logique Pascal Schreck Introduction Logique Prolog Contraintes Un peu d’histoire Roots Calcul, preuves et automatisme

Programmationlogique

Pascal Schreck

Introduction

Logique

Prolog

Contraintes

Introduction

Page 3: Introduction à la programmation logique et par … · Programmation logique Pascal Schreck Introduction Logique Prolog Contraintes Un peu d’histoire Roots Calcul, preuves et automatisme

Programmationlogique

Pascal Schreck

Introduction

Logique

Prolog

Contraintes

Un peu d’histoireRoots

Calcul, preuves et automatisme

I calculs

I automates

I preuves

Page 4: Introduction à la programmation logique et par … · Programmation logique Pascal Schreck Introduction Logique Prolog Contraintes Un peu d’histoire Roots Calcul, preuves et automatisme

Programmationlogique

Pascal Schreck

Introduction

Logique

Prolog

Contraintes

Un peu d’histoireRoots

Calcul, preuves et automatisme

I calculs

O x y x+y

(cc). SolsticedHiver (source Wikipedia)

I automates

I preuves

Page 5: Introduction à la programmation logique et par … · Programmation logique Pascal Schreck Introduction Logique Prolog Contraintes Un peu d’histoire Roots Calcul, preuves et automatisme

Programmationlogique

Pascal Schreck

Introduction

Logique

Prolog

Contraintes

Un peu d’histoireRoots

Calcul, preuves et automatisme

I calculs

(cc) Roger McLassus

(source Wikipedia)

(cc). SolsticedHiver (source Wikipedia)

I automates

I preuves

Page 6: Introduction à la programmation logique et par … · Programmation logique Pascal Schreck Introduction Logique Prolog Contraintes Un peu d’histoire Roots Calcul, preuves et automatisme

Programmationlogique

Pascal Schreck

Introduction

Logique

Prolog

Contraintes

Un peu d’histoireRoots

Calcul, preuves et automatisme

I calculs

I automates

I preuves

Page 7: Introduction à la programmation logique et par … · Programmation logique Pascal Schreck Introduction Logique Prolog Contraintes Un peu d’histoire Roots Calcul, preuves et automatisme

Programmationlogique

Pascal Schreck

Introduction

Logique

Prolog

Contraintes

Un peu d’histoireRoots

Calcul, preuves et automatisme

I calculs

I automates

celebree le 13 octobre

I preuves

Page 8: Introduction à la programmation logique et par … · Programmation logique Pascal Schreck Introduction Logique Prolog Contraintes Un peu d’histoire Roots Calcul, preuves et automatisme

Programmationlogique

Pascal Schreck

Introduction

Logique

Prolog

Contraintes

Un peu d’histoireRoots

Calcul, preuves et automatisme

I calculs

I automates

I preuves

Georges Boole Jacques Herbrand

Page 9: Introduction à la programmation logique et par … · Programmation logique Pascal Schreck Introduction Logique Prolog Contraintes Un peu d’histoire Roots Calcul, preuves et automatisme

Programmationlogique

Pascal Schreck

Introduction

Logique

Prolog

Contraintes

Un peu d’histoireApres la crise des fondements

Deux questions

I que sait-on prouver ?

I que sait-on calculer ?

Page 10: Introduction à la programmation logique et par … · Programmation logique Pascal Schreck Introduction Logique Prolog Contraintes Un peu d’histoire Roots Calcul, preuves et automatisme

Programmationlogique

Pascal Schreck

Introduction

Logique

Prolog

Contraintes

Un peu d’histoireApres la crise des fondements

Deux questions

I que sait-on prouver ?I en restant a l’interieur d’un systeme formel : pas tout

ce qui est “vrai” !

I que sait-on calculer ?

Page 11: Introduction à la programmation logique et par … · Programmation logique Pascal Schreck Introduction Logique Prolog Contraintes Un peu d’histoire Roots Calcul, preuves et automatisme

Programmationlogique

Pascal Schreck

Introduction

Logique

Prolog

Contraintes

Un peu d’histoireApres la crise des fondements

Deux questions

I que sait-on prouver ?I en restant a l’interieur d’un systeme formel : pas tout

ce qui est “vrai” !I theoreme d’incompletude de Godel

Godel, Esher et BachLes brins d’une guirlandeeternelleDouglas Hofstadter

I que sait-on calculer ?

Page 12: Introduction à la programmation logique et par … · Programmation logique Pascal Schreck Introduction Logique Prolog Contraintes Un peu d’histoire Roots Calcul, preuves et automatisme

Programmationlogique

Pascal Schreck

Introduction

Logique

Prolog

Contraintes

Un peu d’histoireApres la crise des fondements

Deux questions

I que sait-on prouver ?I que sait-on calculer ?

I pas tout !

I machines de Turing, probleme de l’arret :version “automate” de la notion de calcul

I fonctions µ-recursives (Herbrand, Kleene, Church) :version “fonctionnelle” de la notion de calcul

I Thm de Kleene, et these de Church-Turing

Page 13: Introduction à la programmation logique et par … · Programmation logique Pascal Schreck Introduction Logique Prolog Contraintes Un peu d’histoire Roots Calcul, preuves et automatisme

Programmationlogique

Pascal Schreck

Introduction

Logique

Prolog

Contraintes

Un peu d’histoireApres la crise des fondements

Deux questions

I que sait-on prouver ?I que sait-on calculer ?

I pas tout !I machines de Turing, probleme de l’arret :

version “automate” de la notion de calcul

I fonctions µ-recursives (Herbrand, Kleene, Church) :version “fonctionnelle” de la notion de calcul

I Thm de Kleene, et these de Church-Turing

Page 14: Introduction à la programmation logique et par … · Programmation logique Pascal Schreck Introduction Logique Prolog Contraintes Un peu d’histoire Roots Calcul, preuves et automatisme

Programmationlogique

Pascal Schreck

Introduction

Logique

Prolog

Contraintes

Un peu d’histoireApres la crise des fondements

Deux questions

I que sait-on prouver ?I que sait-on calculer ?

I pas tout !I machines de Turing, probleme de l’arret :

version “automate” de la notion de calculI fonctions µ-recursives (Herbrand, Kleene, Church) :

version “fonctionnelle” de la notion de calcul

I Thm de Kleene, et these de Church-Turing

Page 15: Introduction à la programmation logique et par … · Programmation logique Pascal Schreck Introduction Logique Prolog Contraintes Un peu d’histoire Roots Calcul, preuves et automatisme

Programmationlogique

Pascal Schreck

Introduction

Logique

Prolog

Contraintes

Un peu d’histoireApres la crise des fondements

Deux questions

I que sait-on prouver ?I que sait-on calculer ?

I pas tout !I machines de Turing, probleme de l’arret :

version “automate” de la notion de calculI fonctions µ-recursives (Herbrand, Kleene, Church) :

version “fonctionnelle” de la notion de calculI Thm de Kleene, et these de Church-Turing

Page 16: Introduction à la programmation logique et par … · Programmation logique Pascal Schreck Introduction Logique Prolog Contraintes Un peu d’histoire Roots Calcul, preuves et automatisme

Programmationlogique

Pascal Schreck

Introduction

Logique

Prolog

Contraintes

Un peu d’histoirePourquoi des langages de haut niveau

Contexte : computers, langages de programmation

I du calculateur a l’ordinateurI representation “logique” des donneesI codage d’un enchaınement d’operations “en dur”I codage d’un enchaınement d’operations en memoire

avec des 0 et de 1 ... dur a ecrire, a lire, a debuger

I langages de “haut niveau” et paradigmes deprogrammation

I imperatif/procedural et objets (⇐ Turing)I fonctionnel (⇐ Church)I logique (⇐ Herbrand)

Page 17: Introduction à la programmation logique et par … · Programmation logique Pascal Schreck Introduction Logique Prolog Contraintes Un peu d’histoire Roots Calcul, preuves et automatisme

Programmationlogique

Pascal Schreck

Introduction

Logique

Prolog

Contraintes

Un peu d’histoire

I imperatif/procedural et objetsI Fortran (1954), Cobol (1959) Algol, SimulaI Pascal, Ada, CI Smalltalk, C++, Java, C#

I fonctionnelI Lisp (1958), Scheme, Common LispI ML, Ocaml, F#I Erlang, Scala,

I logiqueI Absys (1969)I Prolog (1972), λPrologI CLIPS, CLP(),

Page 18: Introduction à la programmation logique et par … · Programmation logique Pascal Schreck Introduction Logique Prolog Contraintes Un peu d’histoire Roots Calcul, preuves et automatisme

Programmationlogique

Pascal Schreck

Introduction

Logique

Prolog

Contraintes

Un peu d’histoireProgrammation logique

I travaux theoriques de Boole, Herbrand, Robinson,Kowalski ...

I travaux sur des prouveurs automatiques en logique du1er ordre

I travaux sur les langues naturelles (TAL) Colmerauer,Roussel

I Prolog I developpe a Marseille (72), large diffusion

I Warren : notion de machine virtuelle → Prologd’Edimbourg.

I Langages de 5eme generation, etc. (avatars actuels :langages a contraintes, ontologies ...)

I Prolog IV, Sictus : programmations par contraintes

I SWI-Prolog : dialecte d’Edimbour + beaucoup debibliotheques

Page 19: Introduction à la programmation logique et par … · Programmation logique Pascal Schreck Introduction Logique Prolog Contraintes Un peu d’histoire Roots Calcul, preuves et automatisme

Programmationlogique

Pascal Schreck

Introduction

Logique

Prolog

Contraintes

Logique et automatisationdes preuves

Page 20: Introduction à la programmation logique et par … · Programmation logique Pascal Schreck Introduction Logique Prolog Contraintes Un peu d’histoire Roots Calcul, preuves et automatisme

Programmationlogique

Pascal Schreck

Introduction

Logique

Prolog

Contraintes

Loqique des propositions

I variable propositionnelles a, b, ..., p, qI des operations (connecteurs logiques)

I et : a ∧ b, (a.b en logique combinatoire, graph. )I ou : a ∨ b, (a + b en logique combinatoire, graph. )I non : ¬a, (a en logique combinatoire graph. )I implique : a ⇒ bI equivalent : a ⇔ b

I formule et valeur de verite : une variable prop. peutprendre la valeur vrai ou faux (1 ou 0), on peut ainsiinterpreter une formule (notions de satisfaisable, valide)a ∨ ¬a est valide (tautologie), a ⇒ b est satisfaisable.¬a ∨ b et a ⇒ b sont equivalentes.

I preuve d’une formule logique ?I table de verite (“preuve” semantique et validite )I systeme axiomatique (preuves et theoremes)

Page 21: Introduction à la programmation logique et par … · Programmation logique Pascal Schreck Introduction Logique Prolog Contraintes Un peu d’histoire Roots Calcul, preuves et automatisme

Programmationlogique

Pascal Schreck

Introduction

Logique

Prolog

Contraintes

Un petit exercice

a Si Marie est a la bibliotheque (M) alors soit Jean estalle au cinema (J), soit Pierre est rentre chez lui (P)

b Soit Marie est a la bibliotheque, soit Pierre est rentrechez lui (ou les deux)

c si Jean est alle au cinema, alors Marie n’est pas a labibliotheque

d Pierre est rentre chez lui

Montrer que si a et b et c alors d .

Page 22: Introduction à la programmation logique et par … · Programmation logique Pascal Schreck Introduction Logique Prolog Contraintes Un peu d’histoire Roots Calcul, preuves et automatisme

Programmationlogique

Pascal Schreck

Introduction

Logique

Prolog

Contraintes

Un petit exercice

a M ⇒ J ∨ P

b Soit Marie est a la bibliotheque, soit Pierre est rentrechez lui (ou les deux)

c si Jean est alle au cinema, alors Marie n’est pas a labibliotheque

d Pierre est rentre chez lui

Montrer que si a et b et c alors d .

Page 23: Introduction à la programmation logique et par … · Programmation logique Pascal Schreck Introduction Logique Prolog Contraintes Un peu d’histoire Roots Calcul, preuves et automatisme

Programmationlogique

Pascal Schreck

Introduction

Logique

Prolog

Contraintes

Un petit exercice

a M ⇒ J ∨ P

b M ∨ P

c si Jean est alle au cinema, alors Marie n’est pas a labibliotheque

d Pierre est rentre chez lui

Montrer que si a et b et c alors d .

Page 24: Introduction à la programmation logique et par … · Programmation logique Pascal Schreck Introduction Logique Prolog Contraintes Un peu d’histoire Roots Calcul, preuves et automatisme

Programmationlogique

Pascal Schreck

Introduction

Logique

Prolog

Contraintes

Un petit exercice

a M ⇒ J ∨ P

b M ∨ P

c J ⇒ ¬M

d Pierre est rentre chez lui

Montrer que si a et b et c alors d .

Page 25: Introduction à la programmation logique et par … · Programmation logique Pascal Schreck Introduction Logique Prolog Contraintes Un peu d’histoire Roots Calcul, preuves et automatisme

Programmationlogique

Pascal Schreck

Introduction

Logique

Prolog

Contraintes

Un petit exercice

a M ⇒ J ∨ P

b M ∨ P

c J ⇒ ¬M

d P

Montrer que si a et b et c alors d .

Page 26: Introduction à la programmation logique et par … · Programmation logique Pascal Schreck Introduction Logique Prolog Contraintes Un peu d’histoire Roots Calcul, preuves et automatisme

Programmationlogique

Pascal Schreck

Introduction

Logique

Prolog

Contraintes

Un petit exercice

a M ⇒ J ∨ P

b M ∨ P

c J ⇒ ¬M

d P

Montrer que si a et b et c alors d .

(b) supposons que (*) M, alors(a) J ou P,supposons que (**) J, alors(c) ¬M, contradiction,reprise (**) supposons que P alors fini,reprise (*) supposons que P alors fini

Page 27: Introduction à la programmation logique et par … · Programmation logique Pascal Schreck Introduction Logique Prolog Contraintes Un peu d’histoire Roots Calcul, preuves et automatisme

Programmationlogique

Pascal Schreck

Introduction

Logique

Prolog

Contraintes

Un petit exercice

a M ⇒ J ∨ P

b M ∨ P

c J ⇒ ¬M

d P

Montrer que si a et b et c alors d .

(b) supposons que (*) M, alors(a) J ou P,supposons que (**) J, alors(c) ¬M, contradiction,reprise (**) supposons que P alors fini,reprise (*) supposons que P alors finiRegles :

I raisonnement par cas (elimination de ∨)

I modus ponens (elim/intro de ⇒)

I contradiction ex falso quod libet

Page 28: Introduction à la programmation logique et par … · Programmation logique Pascal Schreck Introduction Logique Prolog Contraintes Un peu d’histoire Roots Calcul, preuves et automatisme

Programmationlogique

Pascal Schreck

Introduction

Logique

Prolog

Contraintes

Un petit exercice

a M ⇒ J ∨ P

b M ∨ P

c J ⇒ ¬M

d P

Montrer que si a et b et c alors d .

Regles :

IHyp,A ` R Hyp,B ` R

Hyp,A ∨ B ` R

I modus ponens (elim/intro de ⇒)

I contradiction ex falso quod libet

Page 29: Introduction à la programmation logique et par … · Programmation logique Pascal Schreck Introduction Logique Prolog Contraintes Un peu d’histoire Roots Calcul, preuves et automatisme

Programmationlogique

Pascal Schreck

Introduction

Logique

Prolog

Contraintes

Un petit exercice

a M ⇒ J ∨ P

b M ∨ P

c J ⇒ ¬M

d P

Montrer que si a et b et c alors d .

Regles :

IHyp,A ` R Hyp,B ` R

Hyp,A ∨ B ` R

IHyp ` A Hyp ` A ⇒ R

Hyp ` R

Hyp,A ` R

Hyp ` A ⇒ R

I contradiction ex falso quod libet

Page 30: Introduction à la programmation logique et par … · Programmation logique Pascal Schreck Introduction Logique Prolog Contraintes Un peu d’histoire Roots Calcul, preuves et automatisme

Programmationlogique

Pascal Schreck

Introduction

Logique

Prolog

Contraintes

Un petit exercice

a M ⇒ J ∨ P

b M ∨ P

c J ⇒ ¬M

d P

Montrer que si a et b et c alors d .

Regles :

IHyp,A ` R Hyp,B ` R

Hyp,A ∨ B ` R

IHyp ` A Hyp ` A ⇒ R

Hyp ` R

Hyp,A ` R

Hyp ` A ⇒ R

IHyp ` A Hyp ` ¬A

Hyp ` faux

Hyp ` faux

Hyp ` R

Page 31: Introduction à la programmation logique et par … · Programmation logique Pascal Schreck Introduction Logique Prolog Contraintes Un peu d’histoire Roots Calcul, preuves et automatisme

Programmationlogique

Pascal Schreck

Introduction

Logique

Prolog

Contraintes

Un petit exercice (suite)

a M ⇒ J ∨ P

b M ∨ P

c J ⇒ ¬M

d P

Montrer que si a et b et c alors d .

Page 32: Introduction à la programmation logique et par … · Programmation logique Pascal Schreck Introduction Logique Prolog Contraintes Un peu d’histoire Roots Calcul, preuves et automatisme

Programmationlogique

Pascal Schreck

Introduction

Logique

Prolog

Contraintes

Un petit exercice (suite)

a M ⇒ J ∨ P ou ¬M ∨ J ∨ P (clause)

b M ∨ P

c J ⇒ ¬M

d P

Montrer que si a et b et c alors d .

Page 33: Introduction à la programmation logique et par … · Programmation logique Pascal Schreck Introduction Logique Prolog Contraintes Un peu d’histoire Roots Calcul, preuves et automatisme

Programmationlogique

Pascal Schreck

Introduction

Logique

Prolog

Contraintes

Un petit exercice (suite)

a M ⇒ J ∨ P ou ¬M ∨ J ∨ P (1)

b M ∨ P ou M ∨ P (2)

c J ⇒ ¬M

d P

Montrer que si a et b et c alors d .

Page 34: Introduction à la programmation logique et par … · Programmation logique Pascal Schreck Introduction Logique Prolog Contraintes Un peu d’histoire Roots Calcul, preuves et automatisme

Programmationlogique

Pascal Schreck

Introduction

Logique

Prolog

Contraintes

Un petit exercice (suite)

a M ⇒ J ∨ P ou ¬M ∨ J ∨ P (1)

b M ∨ P ou M ∨ P (2)

c J ⇒ ¬M ou ¬J ∨ ¬M (3)

d P

Montrer que si a et b et c alors d .

Page 35: Introduction à la programmation logique et par … · Programmation logique Pascal Schreck Introduction Logique Prolog Contraintes Un peu d’histoire Roots Calcul, preuves et automatisme

Programmationlogique

Pascal Schreck

Introduction

Logique

Prolog

Contraintes

Un petit exercice (suite)

a M ⇒ J ∨ P ou ¬M ∨ J ∨ P (1)

b M ∨ P ou M ∨ P (2)

c J ⇒ ¬M ou ¬J ∨ ¬M (3)

d P refutation ¬P (4)

Montrer que si a et b et c alors d .

Page 36: Introduction à la programmation logique et par … · Programmation logique Pascal Schreck Introduction Logique Prolog Contraintes Un peu d’histoire Roots Calcul, preuves et automatisme

Programmationlogique

Pascal Schreck

Introduction

Logique

Prolog

Contraintes

Un petit exercice (suite)

a M ⇒ J ∨ P ou ¬M ∨ J ∨ P (1)

b M ∨ P ou M ∨ P (2)

c J ⇒ ¬M ou ¬J ∨ ¬M (3)

d P refutation ¬P (4)

Montrer que si a et b et c alors d .Preuve par refutation : on montre que {a, b, c ,¬d} mene aune contradiction.

Page 37: Introduction à la programmation logique et par … · Programmation logique Pascal Schreck Introduction Logique Prolog Contraintes Un peu d’histoire Roots Calcul, preuves et automatisme

Programmationlogique

Pascal Schreck

Introduction

Logique

Prolog

Contraintes

Un petit exercice (suite)

a M ⇒ J ∨ P ou ¬M ∨ J ∨ P (1)

b M ∨ P ou M ∨ P (2)

c J ⇒ ¬M ou ¬J ∨ ¬M (3)

d P refutation ¬P (4)

Montrer que si a et b et c alors d .Preuve par refutation : on montre que {a, b, c ,¬d} mene aune contradiction.

Regle :C1 ∨ l ∨ C2 C ′

1 ∨ ¬l ∨ C ′2

C1 ∨ C2 ∨ C ′1 ∨ c ′

2

(resolution)

Page 38: Introduction à la programmation logique et par … · Programmation logique Pascal Schreck Introduction Logique Prolog Contraintes Un peu d’histoire Roots Calcul, preuves et automatisme

Programmationlogique

Pascal Schreck

Introduction

Logique

Prolog

Contraintes

Un petit exercice (suite)

a M ⇒ J ∨ P ou ¬M ∨ J ∨ P (1)

b M ∨ P ou M ∨ P (2)

c J ⇒ ¬M ou ¬J ∨ ¬M (3)

d P refutation ¬P (4)

Montrer que si a et b et c alors d .Preuve par refutation : on montre que {a, b, c ,¬d} mene aune contradiction.

Regle :C1 ∨ l ∨ C2 C ′

1 ∨ ¬l ∨ C ′2

C1 ∨ C2 ∨ C ′1 ∨ c ′

2

(resolution)

(5) M (par 2 et 4)

(6) ¬J (par 5 et 3)

(7) J ∨ P (par 5 et 1)

(8) P (par 7 et 6)

(9) � (par 8 et 4)

Page 39: Introduction à la programmation logique et par … · Programmation logique Pascal Schreck Introduction Logique Prolog Contraintes Un peu d’histoire Roots Calcul, preuves et automatisme

Programmationlogique

Pascal Schreck

Introduction

Logique

Prolog

Contraintes

Un petit exercice (suite)

a M ⇒ J ∨ P ou ¬M ∨ J ∨ P (1)

b M ∨ P ou M ∨ P (2)

c J ⇒ ¬M ou ¬J ∨ ¬M (3)

d P refutation ¬P (4)

Montrer que si a et b et c alors d .Preuve par refutation : on montre que {a, b, c ,¬d} mene aune contradiction.

Regle :C1 ∨ l ∨ C2 C ′

1 ∨ ¬l ∨ C ′2

C1 ∨ C2 ∨ C ′1 ∨ c ′

2

(resolution)

(5) M (par 2 et 4)

(6) ¬J (par 5 et 3)

(7) J ∨ P (par 5 et 1)

(8) P (par 7 et 6)

(9) � (par 8 et 4)

Page 40: Introduction à la programmation logique et par … · Programmation logique Pascal Schreck Introduction Logique Prolog Contraintes Un peu d’histoire Roots Calcul, preuves et automatisme

Programmationlogique

Pascal Schreck

Introduction

Logique

Prolog

Contraintes

Un petit exercice (suite)

a M ⇒ J ∨ P ou ¬M ∨ J ∨ P (1)

b M ∨ P ou M ∨ P (2)

c J ⇒ ¬M ou ¬J ∨ ¬M (3)

d P refutation ¬P (4)

Montrer que si a et b et c alors d .Preuve par refutation : on montre que {a, b, c ,¬d} mene aune contradiction.

Regle :C1 ∨ l ∨ C2 C ′

1 ∨ ¬l ∨ C ′2

C1 ∨ C2 ∨ C ′1 ∨ c ′

2

(resolution)

(5) M (par 2 et 4)

(6) ¬J (par 5 et 3)

(7) J ∨ P (par 5 et 1)

(8) P (par 7 et 6)

(9) � (par 8 et 4)

Page 41: Introduction à la programmation logique et par … · Programmation logique Pascal Schreck Introduction Logique Prolog Contraintes Un peu d’histoire Roots Calcul, preuves et automatisme

Programmationlogique

Pascal Schreck

Introduction

Logique

Prolog

Contraintes

Vocabulaire

I proposition, variable propositionnelle

I connecteur logique ∧, ∨, ¬, ⇒I litteral : une variable propositionnelle ou sa negation

I litteral positif : p (p est une proposition.I litteral negatif : ¬p

I clause : une disjonction de litteraux a ∨ ¬b ∨ ¬c ∨ l

I resolution : on “efface” un litteral d’une clause avec sonoppose dans une autre clause en le remplacant par lesautres litteraux de cette derniere.

Page 42: Introduction à la programmation logique et par … · Programmation logique Pascal Schreck Introduction Logique Prolog Contraintes Un peu d’histoire Roots Calcul, preuves et automatisme

Programmationlogique

Pascal Schreck

Introduction

Logique

Prolog

Contraintes

Logique des predicats

La logique des propositions n’est pas tres descriptive

“Tout homme finit par trouver son maıtre”“le successeur d’un entier n est plus grand que n”

I variables et termes predicatifs/relationnels x un homme,y un autre homme : maitre(y , x)

I fonctions et termes fonctionnelsn est un entier s(n) designe son successeur.

I quantifications∀x∃y . maitre(y , x), ∀n. n < s(n)

Page 43: Introduction à la programmation logique et par … · Programmation logique Pascal Schreck Introduction Logique Prolog Contraintes Un peu d’histoire Roots Calcul, preuves et automatisme

Programmationlogique

Pascal Schreck

Introduction

Logique

Prolog

Contraintes

Logique des predicats

La logique des propositions n’est pas tres descriptive

“Tout homme finit par trouver son maıtre”“le successeur d’un entier n est plus grand que n”

I variables et termes predicatifs/relationnels x un homme,y un autre homme : maitre(y , x)

I fonctions et termes fonctionnelsn est un entier s(n) designe son successeur.

I quantifications∀x∃y . maitre(y , x), ∀n. n < s(n)

Page 44: Introduction à la programmation logique et par … · Programmation logique Pascal Schreck Introduction Logique Prolog Contraintes Un peu d’histoire Roots Calcul, preuves et automatisme

Programmationlogique

Pascal Schreck

Introduction

Logique

Prolog

Contraintes

Logique des predicats

La logique des propositions n’est pas tres descriptive

“Tout homme finit par trouver son maıtre”“le successeur d’un entier n est plus grand que n”

I variables et termes predicatifs/relationnels x un homme,y un autre homme : maitre(y , x)

I fonctions et termes fonctionnelsn est un entier s(n) designe son successeur.

I quantifications∀x∃y . maitre(y , x), ∀n. n < s(n)

Page 45: Introduction à la programmation logique et par … · Programmation logique Pascal Schreck Introduction Logique Prolog Contraintes Un peu d’histoire Roots Calcul, preuves et automatisme

Programmationlogique

Pascal Schreck

Introduction

Logique

Prolog

Contraintes

Logique des predicats

La logique des propositions n’est pas tres descriptive

“Tout homme finit par trouver son maıtre”“le successeur d’un entier n est plus grand que n”

I variables et termes predicatifs/relationnels x un homme,y un autre homme : maitre(y , x)

I fonctions et termes fonctionnelsn est un entier s(n) designe son successeur.

I quantifications∀x∃y . maitre(y , x), ∀n. n < s(n)

Page 46: Introduction à la programmation logique et par … · Programmation logique Pascal Schreck Introduction Logique Prolog Contraintes Un peu d’histoire Roots Calcul, preuves et automatisme

Programmationlogique

Pascal Schreck

Introduction

Logique

Prolog

Contraintes

Logique des predicats

La logique des propositions n’est pas tres descriptive

“Tout homme finit par trouver son maıtre”“le successeur d’un entier n est plus grand que n”

I variables et termes predicatifs/relationnels x un homme,y un autre homme : maitre(y , x)

I fonctions et termes fonctionnelsn est un entier s(n) designe son successeur.

I quantifications∀x∃y . maitre(y , x), ∀n. n < s(n)

Une hierarchie

I logique des propositions : logique d’ordre 0

I logique des predicats : logique d’ordre 1

I avec des variables pour les fonctions : logiques d’ordresuperieur

Page 47: Introduction à la programmation logique et par … · Programmation logique Pascal Schreck Introduction Logique Prolog Contraintes Un peu d’histoire Roots Calcul, preuves et automatisme

Programmationlogique

Pascal Schreck

Introduction

Logique

Prolog

Contraintes

Logique des predicats

I Plus question de faire des tables de verite pour voir siquelque chose est “vrai” (la notion de “vrai” est aussiplus difficile a definir)

I Il y a des regles d’inference pour faire des preuves(plusieurs systemes possibles)

I Remarque : impossibilite d’avoir des prouveurs generauxautomatiques ⇒ assistants de preuve.

I La methode par resolution marche encore (en ajoutantune regle)

I elle est complete pour la refutation, mais donne unprocede de semi decision pour savoir si une formule estun thm.

Page 48: Introduction à la programmation logique et par … · Programmation logique Pascal Schreck Introduction Logique Prolog Contraintes Un peu d’histoire Roots Calcul, preuves et automatisme

Programmationlogique

Pascal Schreck

Introduction

Logique

Prolog

Contraintes

Un exemple simple

Enonce

h1 ∀x , y , z . p(x , y) ∧ p(y , z) ⇒ g(x , z)

h2 ∀x∃y . p(x , y)

g on veut montrer ∀x∃z . g(x , z)

Page 49: Introduction à la programmation logique et par … · Programmation logique Pascal Schreck Introduction Logique Prolog Contraintes Un peu d’histoire Roots Calcul, preuves et automatisme

Programmationlogique

Pascal Schreck

Introduction

Logique

Prolog

Contraintes

Un exemple simple

Enonce

h1 ∀x , y , z . p(x , y) ∧ p(y , z) ⇒ g(x , z)

h2 ∀x∃y . p(x , y)

g on veut montrer ∀x∃z . g(x , z)

Mise en forme des formules

h1 ¬p(x , y) ∨ ¬p(y , z) ∨ g(x , z)

h2 p(x , f (x)) f fonction de Skolem

¬g

Page 50: Introduction à la programmation logique et par … · Programmation logique Pascal Schreck Introduction Logique Prolog Contraintes Un peu d’histoire Roots Calcul, preuves et automatisme

Programmationlogique

Pascal Schreck

Introduction

Logique

Prolog

Contraintes

Un exemple simple

Enonce

h1 ∀x , y , z . p(x , y) ∧ p(y , z) ⇒ g(x , z)

h2 ∀x∃y . p(x , y)

g on veut montrer ∀x∃z . g(x , z)

Mise en forme des formules

h1 ¬p(x , y) ∨ ¬p(y , z) ∨ g(x , z)

h2 p(x , f (x)) f fonction de Skolem

¬g

Page 51: Introduction à la programmation logique et par … · Programmation logique Pascal Schreck Introduction Logique Prolog Contraintes Un peu d’histoire Roots Calcul, preuves et automatisme

Programmationlogique

Pascal Schreck

Introduction

Logique

Prolog

Contraintes

Un exemple simple

Enonce

h1 ∀x , y , z . p(x , y) ∧ p(y , z) ⇒ g(x , z)

h2 ∀x∃y . p(x , y)

g on veut montrer ∀x∃z . g(x , z)

Mise en forme des formules

h1 ¬p(x , y) ∨ ¬p(y , z) ∨ g(x , z)

h2 p(x , f (x)) f fonction de Skolem

¬g

Page 52: Introduction à la programmation logique et par … · Programmation logique Pascal Schreck Introduction Logique Prolog Contraintes Un peu d’histoire Roots Calcul, preuves et automatisme

Programmationlogique

Pascal Schreck

Introduction

Logique

Prolog

Contraintes

Un exemple simple

Enonce

h1 ∀x , y , z . p(x , y) ∧ p(y , z) ⇒ g(x , z)

h2 ∀x∃y . p(x , y)

g on veut montrer ∀x∃z . g(x , z)

Mise en forme des formules

h1 ¬p(x , y) ∨ ¬p(y , z) ∨ g(x , z)

h2 p(x , f (x)) f fonction de Skolem

¬g ∃x∀z . ¬g(x , z) (negation)

Page 53: Introduction à la programmation logique et par … · Programmation logique Pascal Schreck Introduction Logique Prolog Contraintes Un peu d’histoire Roots Calcul, preuves et automatisme

Programmationlogique

Pascal Schreck

Introduction

Logique

Prolog

Contraintes

Un exemple simple

Enonce

h1 ∀x , y , z . p(x , y) ∧ p(y , z) ⇒ g(x , z)

h2 ∀x∃y . p(x , y)

g on veut montrer ∀x∃z . g(x , z)

Mise en forme des formules

h1 ¬p(x , y) ∨ ¬p(y , z) ∨ g(x , z)

h2 p(x , f (x)) f fonction de Skolem

¬g ¬g(a,Z ) constante de Skolem

Remarque : toutes les variables sont quantifieesuniversellement.

Page 54: Introduction à la programmation logique et par … · Programmation logique Pascal Schreck Introduction Logique Prolog Contraintes Un peu d’histoire Roots Calcul, preuves et automatisme

Programmationlogique

Pascal Schreck

Introduction

Logique

Prolog

Contraintes

Un exemple simple (preuve)

(1) ¬p(x , y) ∨ ¬p(y , z) ∨ g(x , z) (h1)

(2) p(x , f (x)) (h2)

(3) ¬g(a,Z ) (¬g)

(4) ¬p(a, y) ∨ ¬p(y ,Z ) (3, 1, x = a, z = Z )

(5) ¬p(f (a),Z ) (4, 2, )

(6) � (5, 2, x = a,Z = f (f (a)))

Page 55: Introduction à la programmation logique et par … · Programmation logique Pascal Schreck Introduction Logique Prolog Contraintes Un peu d’histoire Roots Calcul, preuves et automatisme

Programmationlogique

Pascal Schreck

Introduction

Logique

Prolog

Contraintes

Un exemple simple (preuve)

(1) ¬p(x , y) ∨ ¬p(y , z) ∨ g(x , z) (h1)

(2) p(x , f (x)) (h2)

(3) ¬g(a,Z ) (¬g)

(4) ¬p(a, y) ∨ ¬p(y ,Z ) (3, 1, x = a, z = Z )

(5) ¬p(f (a),Z ) (4, 2, )

(6) � (5, 2, x = a,Z = f (f (a)))

Page 56: Introduction à la programmation logique et par … · Programmation logique Pascal Schreck Introduction Logique Prolog Contraintes Un peu d’histoire Roots Calcul, preuves et automatisme

Programmationlogique

Pascal Schreck

Introduction

Logique

Prolog

Contraintes

Un exemple simple (preuve)

(1) ¬p(x , y) ∨ ¬p(y , z) ∨ g(x , z) (h1)

(2) p(x , f (x)) (h2)

(3) ¬g(a,Z ) (¬g)

(4) ¬p(a, y) ∨ ¬p(y ,Z ) (3, 1, x = a, z = Z )g(x , z) = g(a,Z ) a resoudre (unification)

(5) ¬p(f (a),Z ) (4, 2, )

(6) � (5, 2, x = a,Z = f (f (a)))

Page 57: Introduction à la programmation logique et par … · Programmation logique Pascal Schreck Introduction Logique Prolog Contraintes Un peu d’histoire Roots Calcul, preuves et automatisme

Programmationlogique

Pascal Schreck

Introduction

Logique

Prolog

Contraintes

Un exemple simple (preuve)

(1) ¬p(x , y) ∨ ¬p(y , z) ∨ g(x , z) (h1)

(2) p(x , f (x)) (h2)

(3) ¬g(a,Z ) (¬g)

(4) ¬p(a, y) ∨ ¬p(y ,Z ) (3, 1, x = a, z = Z )

(5) ¬p(f (a),Z ) (4, 2, )p(x , f (x)) = p(a, y) a resoudre

(6) � (5, 2, x = a,Z = f (f (a)))

Page 58: Introduction à la programmation logique et par … · Programmation logique Pascal Schreck Introduction Logique Prolog Contraintes Un peu d’histoire Roots Calcul, preuves et automatisme

Programmationlogique

Pascal Schreck

Introduction

Logique

Prolog

Contraintes

Un exemple simple (preuve)

(1) ¬p(x , y) ∨ ¬p(y , z) ∨ g(x , z) (h1)

(2) p(x , f (x)) (h2)

(3) ¬g(a,Z ) (¬g)

(4) ¬p(a, y) ∨ ¬p(y ,Z ) (3, 1, x = a, z = Z )

(5) ¬p(f (a),Z ) (4, 2, x = a, f (x) = y)p(x , f (x)) = p(a, y) a resoudre

(6) � (5, 2, x = a,Z = f (f (a)))

Page 59: Introduction à la programmation logique et par … · Programmation logique Pascal Schreck Introduction Logique Prolog Contraintes Un peu d’histoire Roots Calcul, preuves et automatisme

Programmationlogique

Pascal Schreck

Introduction

Logique

Prolog

Contraintes

Un exemple simple (preuve)

(1) ¬p(x , y) ∨ ¬p(y , z) ∨ g(x , z) (h1)

(2) p(x , f (x)) (h2)

(3) ¬g(a,Z ) (¬g)

(4) ¬p(a, y) ∨ ¬p(y ,Z ) (3, 1, x = a, z = Z )

(5) ¬p(f (a),Z ) (4, 2, x = a, f (x) = y)

(6) � (5, 2, x = a,Z = f (f (a)))

Page 60: Introduction à la programmation logique et par … · Programmation logique Pascal Schreck Introduction Logique Prolog Contraintes Un peu d’histoire Roots Calcul, preuves et automatisme

Programmationlogique

Pascal Schreck

Introduction

Logique

Prolog

Contraintes

Definitions

I terme fonctionnel : quelque chose de la formef (t1, ...tm) qui represente un objet (f est un symbolefonctionnel).

I terme predicatif : quelque chose de la former(t1, t2, ..., tk) qui represente une relation entre objets(r est un symbole predicatif).

I un litteral est un terme predicatif (litteral positif) ou lanegation d’un terme predicatif (litteral negatif).

I une clause est une disjonction de litteraux. Une clausede Horn est une clause qui contient au plus 1 litteralpositif :

I la regle de resolution fonctionne de la meme manierequ’en logique des propositions en considerant deslitteraux opposes et unifiables (l’unificateur le plusgeneral est applique aux clauses unifiees).

I c’est comme ca que fonctionne le langage Prolog

Page 61: Introduction à la programmation logique et par … · Programmation logique Pascal Schreck Introduction Logique Prolog Contraintes Un peu d’histoire Roots Calcul, preuves et automatisme

Programmationlogique

Pascal Schreck

Introduction

Logique

Prolog

Contraintes

Definitions

I terme fonctionnel : quelque chose de la formef (t1, ...tm) qui represente un objet (f est un symbolefonctionnel).

I terme predicatif : quelque chose de la former(t1, t2, ..., tk) qui represente une relation entre objets(r est un symbole predicatif).

I un litteral est un terme predicatif (litteral positif) ou lanegation d’un terme predicatif (litteral negatif).

I une clause est une disjonction de litteraux. Une clausede Horn est une clause qui contient au plus 1 litteralpositif :

I la regle de resolution fonctionne de la meme manierequ’en logique des propositions en considerant deslitteraux opposes et unifiables (l’unificateur le plusgeneral est applique aux clauses unifiees).

I c’est comme ca que fonctionne le langage Prolog

Page 62: Introduction à la programmation logique et par … · Programmation logique Pascal Schreck Introduction Logique Prolog Contraintes Un peu d’histoire Roots Calcul, preuves et automatisme

Programmationlogique

Pascal Schreck

Introduction

Logique

Prolog

Contraintes

Definitions

I terme fonctionnel : quelque chose de la formef (t1, ...tm) qui represente un objet (f est un symbolefonctionnel).

I terme predicatif : quelque chose de la former(t1, t2, ..., tk) qui represente une relation entre objets(r est un symbole predicatif).

I un litteral est un terme predicatif (litteral positif) ou lanegation d’un terme predicatif (litteral negatif).

I une clause est une disjonction de litteraux. Une clausede Horn est une clause qui contient au plus 1 litteralpositif :

I la regle de resolution fonctionne de la meme manierequ’en logique des propositions en considerant deslitteraux opposes et unifiables (l’unificateur le plusgeneral est applique aux clauses unifiees).

I c’est comme ca que fonctionne le langage Prolog

Page 63: Introduction à la programmation logique et par … · Programmation logique Pascal Schreck Introduction Logique Prolog Contraintes Un peu d’histoire Roots Calcul, preuves et automatisme

Programmationlogique

Pascal Schreck

Introduction

Logique

Prolog

Contraintes

Definitions

I terme fonctionnel : quelque chose de la formef (t1, ...tm) qui represente un objet (f est un symbolefonctionnel).

I terme predicatif : quelque chose de la former(t1, t2, ..., tk) qui represente une relation entre objets(r est un symbole predicatif).

I un litteral est un terme predicatif (litteral positif) ou lanegation d’un terme predicatif (litteral negatif).

I une clause est une disjonction de litteraux. Une clausede Horn est une clause qui contient au plus 1 litteralpositif :

I la regle de resolution fonctionne de la meme manierequ’en logique des propositions en considerant deslitteraux opposes et unifiables (l’unificateur le plusgeneral est applique aux clauses unifiees).

I c’est comme ca que fonctionne le langage Prolog

Page 64: Introduction à la programmation logique et par … · Programmation logique Pascal Schreck Introduction Logique Prolog Contraintes Un peu d’histoire Roots Calcul, preuves et automatisme

Programmationlogique

Pascal Schreck

Introduction

Logique

Prolog

Contraintes

Definitions

I terme fonctionnel : quelque chose de la formef (t1, ...tm) qui represente un objet (f est un symbolefonctionnel).

I terme predicatif : quelque chose de la former(t1, t2, ..., tk) qui represente une relation entre objets(r est un symbole predicatif).

I un litteral est un terme predicatif (litteral positif) ou lanegation d’un terme predicatif (litteral negatif).

I une clause est une disjonction de litteraux. Une clausede Horn est une clause qui contient au plus 1 litteralpositif :

I l (clause reduite a un litteral positif) = fait

I t ∨ ¬h1 ∨ ¬h2... ∨ ¬hk est une regle(souvenez-vous, c’est equivalent a : h1 ∧ ... ∧ hk ⇒ t)

I une clause avec que des litteraux negatifs est une “liste”de buts

I la regle de resolution fonctionne de la meme manierequ’en logique des propositions en considerant deslitteraux opposes et unifiables (l’unificateur le plusgeneral est applique aux clauses unifiees).

I c’est comme ca que fonctionne le langage Prolog

Page 65: Introduction à la programmation logique et par … · Programmation logique Pascal Schreck Introduction Logique Prolog Contraintes Un peu d’histoire Roots Calcul, preuves et automatisme

Programmationlogique

Pascal Schreck

Introduction

Logique

Prolog

Contraintes

Definitions

I terme fonctionnel : quelque chose de la formef (t1, ...tm) qui represente un objet (f est un symbolefonctionnel).

I terme predicatif : quelque chose de la former(t1, t2, ..., tk) qui represente une relation entre objets(r est un symbole predicatif).

I un litteral est un terme predicatif (litteral positif) ou lanegation d’un terme predicatif (litteral negatif).

I une clause est une disjonction de litteraux. Une clausede Horn est une clause qui contient au plus 1 litteralpositif :

I l (clause reduite a un litteral positif) = faitI t ∨ ¬h1 ∨ ¬h2... ∨ ¬hk est une regle

(souvenez-vous, c’est equivalent a : h1 ∧ ... ∧ hk ⇒ t)

I une clause avec que des litteraux negatifs est une “liste”de buts

I la regle de resolution fonctionne de la meme manierequ’en logique des propositions en considerant deslitteraux opposes et unifiables (l’unificateur le plusgeneral est applique aux clauses unifiees).

I c’est comme ca que fonctionne le langage Prolog

Page 66: Introduction à la programmation logique et par … · Programmation logique Pascal Schreck Introduction Logique Prolog Contraintes Un peu d’histoire Roots Calcul, preuves et automatisme

Programmationlogique

Pascal Schreck

Introduction

Logique

Prolog

Contraintes

Definitions

I terme fonctionnel : quelque chose de la formef (t1, ...tm) qui represente un objet (f est un symbolefonctionnel).

I terme predicatif : quelque chose de la former(t1, t2, ..., tk) qui represente une relation entre objets(r est un symbole predicatif).

I un litteral est un terme predicatif (litteral positif) ou lanegation d’un terme predicatif (litteral negatif).

I une clause est une disjonction de litteraux. Une clausede Horn est une clause qui contient au plus 1 litteralpositif :

I l (clause reduite a un litteral positif) = faitI t ∨ ¬h1 ∨ ¬h2... ∨ ¬hk est une regle

(souvenez-vous, c’est equivalent a : h1 ∧ ... ∧ hk ⇒ t)I une clause avec que des litteraux negatifs est une “liste”

de buts

I la regle de resolution fonctionne de la meme manierequ’en logique des propositions en considerant deslitteraux opposes et unifiables (l’unificateur le plusgeneral est applique aux clauses unifiees).

I c’est comme ca que fonctionne le langage Prolog

Page 67: Introduction à la programmation logique et par … · Programmation logique Pascal Schreck Introduction Logique Prolog Contraintes Un peu d’histoire Roots Calcul, preuves et automatisme

Programmationlogique

Pascal Schreck

Introduction

Logique

Prolog

Contraintes

Definitions

I terme fonctionnel : quelque chose de la formef (t1, ...tm) qui represente un objet (f est un symbolefonctionnel).

I terme predicatif : quelque chose de la former(t1, t2, ..., tk) qui represente une relation entre objets(r est un symbole predicatif).

I un litteral est un terme predicatif (litteral positif) ou lanegation d’un terme predicatif (litteral negatif).

I une clause est une disjonction de litteraux. Une clausede Horn est une clause qui contient au plus 1 litteralpositif :

I la regle de resolution fonctionne de la meme manierequ’en logique des propositions en considerant deslitteraux opposes et unifiables (l’unificateur le plusgeneral est applique aux clauses unifiees).

I c’est comme ca que fonctionne le langage Prolog

Page 68: Introduction à la programmation logique et par … · Programmation logique Pascal Schreck Introduction Logique Prolog Contraintes Un peu d’histoire Roots Calcul, preuves et automatisme

Programmationlogique

Pascal Schreck

Introduction

Logique

Prolog

Contraintes

Definitions

I terme fonctionnel : quelque chose de la formef (t1, ...tm) qui represente un objet (f est un symbolefonctionnel).

I terme predicatif : quelque chose de la former(t1, t2, ..., tk) qui represente une relation entre objets(r est un symbole predicatif).

I un litteral est un terme predicatif (litteral positif) ou lanegation d’un terme predicatif (litteral negatif).

I une clause est une disjonction de litteraux. Une clausede Horn est une clause qui contient au plus 1 litteralpositif :

I la regle de resolution fonctionne de la meme manierequ’en logique des propositions en considerant deslitteraux opposes et unifiables (l’unificateur le plusgeneral est applique aux clauses unifiees).

I c’est comme ca que fonctionne le langage Prolog

Page 69: Introduction à la programmation logique et par … · Programmation logique Pascal Schreck Introduction Logique Prolog Contraintes Un peu d’histoire Roots Calcul, preuves et automatisme

Programmationlogique

Pascal Schreck

Introduction

Logique

Prolog

Contraintes

Prolog

Page 70: Introduction à la programmation logique et par … · Programmation logique Pascal Schreck Introduction Logique Prolog Contraintes Un peu d’histoire Roots Calcul, preuves et automatisme

Programmationlogique

Pascal Schreck

Introduction

Logique

Prolog

Contraintes

Premier exemple

Programme

parent(pam,bob).

parent(tom,bob).

parent(tom, liz).

parent(bob,ann).

parent(bob,pat).

parent(pat,jim).

Questions

?- parent(tom, liz).

?- parent(pat,ben).

?- parent(X,bob).

?- parent(X,Y),parent(Y,ann).

bob liz

pam tom

ann

jim

pat

Page 71: Introduction à la programmation logique et par … · Programmation logique Pascal Schreck Introduction Logique Prolog Contraintes Un peu d’histoire Roots Calcul, preuves et automatisme

Programmationlogique

Pascal Schreck

Introduction

Logique

Prolog

Contraintes

Premier exemple complete

Programme

grand_parent(X,Y) :- parent(X,Z), parent(Z,Y).

fos(X,Y) :- parent(X,Z), parent(Y,Z).

ancetre(X,Y) :- parent(X,Y).

ancetre(X,Y) :- parent(X,Z), ancetre(Z,Y).

Questions

?- grand_parent(X,ann).

?- fos(ann, pat).

?- fos(ann, X).

Page 72: Introduction à la programmation logique et par … · Programmation logique Pascal Schreck Introduction Logique Prolog Contraintes Un peu d’histoire Roots Calcul, preuves et automatisme

Programmationlogique

Pascal Schreck

Introduction

Logique

Prolog

Contraintes

Vocabulaire

I fait

I regle

I but

I non-determinisme

Page 73: Introduction à la programmation logique et par … · Programmation logique Pascal Schreck Introduction Logique Prolog Contraintes Un peu d’histoire Roots Calcul, preuves et automatisme

Programmationlogique

Pascal Schreck

Introduction

Logique

Prolog

Contraintes

Remarque - exercice

Wissembourg

Hagenau

Strasbourg

Sarre−Union

SchirmeckMolsheim

Colmar

Sélestat

Saverne

Monswiller

Page 74: Introduction à la programmation logique et par … · Programmation logique Pascal Schreck Introduction Logique Prolog Contraintes Un peu d’histoire Roots Calcul, preuves et automatisme

Programmationlogique

Pascal Schreck

Introduction

Logique

Prolog

Contraintes

Retour sur le deuxieme exemple

Enonce

h1 ∀x , y , z . p(x , y) ∧ p(y , z) ⇒ g(x , z)

h2 ∀x∃y . p(x , y)

g on veut montrer ∀x∃z . g(x , z)

Page 75: Introduction à la programmation logique et par … · Programmation logique Pascal Schreck Introduction Logique Prolog Contraintes Un peu d’histoire Roots Calcul, preuves et automatisme

Programmationlogique

Pascal Schreck

Introduction

Logique

Prolog

Contraintes

Retour sur le deuxieme exemple

Formules mises en forme

h1 ¬p(x , y) ∨ ¬p(y , z) ∨ g(x , z)

h2 p(x , f (x)) f fonction de Skolem

¬g ¬g(a,Z ) constante de Skolem

Page 76: Introduction à la programmation logique et par … · Programmation logique Pascal Schreck Introduction Logique Prolog Contraintes Un peu d’histoire Roots Calcul, preuves et automatisme

Programmationlogique

Pascal Schreck

Introduction

Logique

Prolog

Contraintes

Retour sur le deuxieme exemple

Formules mises en forme

h1 ¬p(x , y) ∨ ¬p(y , z) ∨ g(x , z)

h2 p(x , f (x)) f fonction de Skolem

¬g ¬g(a,Z ) constante de Skolem

Programme

g(X,Z) :- p(X,Y), p(Y,Z).

p(X,f(X)).

Question?- g(a,Z).

Page 77: Introduction à la programmation logique et par … · Programmation logique Pascal Schreck Introduction Logique Prolog Contraintes Un peu d’histoire Roots Calcul, preuves et automatisme

Programmationlogique

Pascal Schreck

Introduction

Logique

Prolog

Contraintes

Retour sur le deuxieme exemple

Formules mises en forme

h1 ¬p(x , y) ∨ ¬p(y , z) ∨ g(x , z)

h2 p(x , f (x)) f fonction de Skolem

¬g ¬g(a,Z ) constante de Skolem

Programme

g(X,Z) :- p(X,Y), p(Y,Z).

p(X,f(X)).

Question?- g(a,Z).

Question : statut de f ?f ne designe pas une fonction, c’est un symbole fonctionnel,appele foncteur en Prolog

Page 78: Introduction à la programmation logique et par … · Programmation logique Pascal Schreck Introduction Logique Prolog Contraintes Un peu d’histoire Roots Calcul, preuves et automatisme

Programmationlogique

Pascal Schreck

Introduction

Logique

Prolog

Contraintes

Unification et foncteurs ?

L’operateur = designe l’unification/unificabilite en Prolog

?- X = 3.

?- X.

?- 3 = X, X = Y.

? X = 4 + 1.

? X = 3 + Y, Y = 2.

? X = truc(4, bidule).

? X = "toto".

Page 79: Introduction à la programmation logique et par … · Programmation logique Pascal Schreck Introduction Logique Prolog Contraintes Un peu d’histoire Roots Calcul, preuves et automatisme

Programmationlogique

Pascal Schreck

Introduction

Logique

Prolog

Contraintes

Exemple 3 : le singe et les bananes

le régime de bananes au centre au plafondle singe à la porte et la caisse à le fenêtre

Page 80: Introduction à la programmation logique et par … · Programmation logique Pascal Schreck Introduction Logique Prolog Contraintes Un peu d’histoire Roots Calcul, preuves et automatisme

Programmationlogique

Pascal Schreck

Introduction

Logique

Prolog

Contraintes

Exemple 2 : le singe et les bananesmove(etat(aucentre,surlaboite,aucentre,napas),

aggripper,

etat(aucentre, surlaboite,aucentre, possede)).

move(etat(P, surlesol, P, H),

grimper,

etat(P, surlaboite,P,H)).

move(etat(P1, surlesol, P1, H),

pousser(P1,P2),

etat(P2, surlesol, P2, H)).

move(etat(P1, surlesol, B, H),

marcher(P1, P2),

etat(P2, surlesol, B, H)).

peutprendre(etat(_,_,_,possede)).

peutprendre(E1) :- move(Etat1, Act, E2),peutprendre(E2).

-----

?- peutprendre(etat(alaporte, ausol, alafenetre,napas)).

Page 81: Introduction à la programmation logique et par … · Programmation logique Pascal Schreck Introduction Logique Prolog Contraintes Un peu d’histoire Roots Calcul, preuves et automatisme

Programmationlogique

Pascal Schreck

Introduction

Logique

Prolog

Contraintes

Exemple 4 : circuitsev_and(1,1,1). ev_and(X, Y, 0) :- X = 0; Y=0.

ev_or(0, 0, 0). ev_or(X,Y,1) :- X=1 ; Y=1.

ev_xor(X,Y,0) :- X=Y. ev_xor(X,Y,1) :- X\=Y.

ev_neg(1,0). ev_neg(0,1).

add(A, B, C, xor(A,xor(B,C))).

eval(0,0). eval(1,1).

eval(and(X,Y),R) :- eval(X,R1), eval(Y,R2), ev_and(R1,R2,R).

eval(or(X,Y), R) :- eval(X,R1), eval(Y,R2), ev_or(R1,R2,R).

eval(neg(X), R) :- eval(X,R1), ev_neg(R1,R).

eval(xor(X,Y), R) :- eval(X,R1), eval(Y,R2), ev_xor(R1,R2,R).

bin(0). bin(1).

--------

?- add(1,0,0, Addi), eval(Addi,R).

?- bin(A), bin(B), bin(C),add(A,B,C, Ci), eval(Ci,R).

Page 82: Introduction à la programmation logique et par … · Programmation logique Pascal Schreck Introduction Logique Prolog Contraintes Un peu d’histoire Roots Calcul, preuves et automatisme

Programmationlogique

Pascal Schreck

Introduction

Logique

Prolog

Contraintes

Listes

Principes

I liste vide : []

I liste premier element + liste des suivants :[prem | liste_suivants]

I sucre syntaxique : [7, 42, toto, f(a)]

[ 7 | [ 42 | [ toto | [ f(a) | []]]]]

Premiers predicats sur les listes

estvide([]).

premier([P|_],P).

suivants[_|L], L).

appartient(X, [X|_]).

appartient(X, [_|L]) :- appartient(X,L).

Page 83: Introduction à la programmation logique et par … · Programmation logique Pascal Schreck Introduction Logique Prolog Contraintes Un peu d’histoire Roots Calcul, preuves et automatisme

Programmationlogique

Pascal Schreck

Introduction

Logique

Prolog

Contraintes

Listes et operateurs:- op(550, xfx, in).

X in [X|_].

X in [_|L] :- X in L.

:- op(550, xfx, estdans).

:- op(500, xfx, reste).

X estdans [X|L] reste L.

X estdans [Y|L] reste [Y|L1] :- X estdans L reste L1.

:-op(550, xfx, [estinclus, >=<]).

[] estinclus _.

[X|L] estinclus L1 :- X estdans L1 reste L2,

L estinclus L2.

[] >=< [].

[X|L] >=< L1 :- X estdans L1 reste L2,

L >=< L2.

Page 84: Introduction à la programmation logique et par … · Programmation logique Pascal Schreck Introduction Logique Prolog Contraintes Un peu d’histoire Roots Calcul, preuves et automatisme

Programmationlogique

Pascal Schreck

Introduction

Logique

Prolog

Contraintes

Arithmetique

Questions

?- X = 2+3.

?- X is 2+3.

?- 1+4 = 2+3.

Programmes

somme(A,B,S) :- S is A+B. % somme(1,X,5) ?

facto(0,1).

facto(N,F) :- N1 is N-1,

facto(N1,F1),

F is N*F1.

Page 85: Introduction à la programmation logique et par … · Programmation logique Pascal Schreck Introduction Logique Prolog Contraintes Un peu d’histoire Roots Calcul, preuves et automatisme

Programmationlogique

Pascal Schreck

Introduction

Logique

Prolog

Contraintes

Exemple : Crypto-arithmetiqueTEN

TEN

TEN

TEN

FORTY

-----------

SIXTY

Page 86: Introduction à la programmation logique et par … · Programmation logique Pascal Schreck Introduction Logique Prolog Contraintes Un peu d’histoire Roots Calcul, preuves et automatisme

Programmationlogique

Pascal Schreck

Introduction

Logique

Prolog

Contraintes

Exemple : Crypto-arithmetiqueTEN

TEN

TEN

TEN

FORTY

-----------

SIXTY

ttf(T,E,N,F,O,R,Y,S,I,X) :-

[T,E,N,F,O,R,Y,S,I,X] >=< [0,1,2,3,4,5,6,7,8,9],

4*(T*100+E*10+N) + F*10000+O*1000+R*100+T*10+Y =:=

S*10000+I*1000+X*100+T*10+Y.

Page 87: Introduction à la programmation logique et par … · Programmation logique Pascal Schreck Introduction Logique Prolog Contraintes Un peu d’histoire Roots Calcul, preuves et automatisme

Programmationlogique

Pascal Schreck

Introduction

Logique

Prolog

Contraintes

Exemple : Crypto-arithmetique

ttf2 :-

[T,E,N,F,O,R,Y,S,I,X] >=< [0,1,2,3,4,5,6,7,8,9],

T1 is (T*100+E*10+N),

T2 is F*10000+O*1000+R*100+T*10+Y ,

T3 is S*10000+I*1000+X*100+T*10+Y,

4*T1+T2 =:= T3,

put(’ ’), put(’ ’),writeln(T1),

put(’ ’), put(’ ’),writeln(T1),

put(’ ’), put(’ ’),writeln(T1),

put(’ ’), put(’ ’),writeln(T1),

writeln(T2),

writeln(’-----------’),

writeln(T3).

Page 88: Introduction à la programmation logique et par … · Programmation logique Pascal Schreck Introduction Logique Prolog Contraintes Un peu d’histoire Roots Calcul, preuves et automatisme

Programmationlogique

Pascal Schreck

Introduction

Logique

Prolog

Contraintes

Comparaison avec des langages classiques

I these de Church-Turing

I programmation ? : oui

I efficacite en espace

I efficacite en temps

I efficacite en temps de developpement

Page 89: Introduction à la programmation logique et par … · Programmation logique Pascal Schreck Introduction Logique Prolog Contraintes Un peu d’histoire Roots Calcul, preuves et automatisme

Programmationlogique

Pascal Schreck

Introduction

Logique

Prolog

Contraintes

Comparaison avec des langages classiques

I these de Church-Turing

I programmation ? : oui

I efficacite en espace

I efficacite en temps

I efficacite en temps de developpement

Page 90: Introduction à la programmation logique et par … · Programmation logique Pascal Schreck Introduction Logique Prolog Contraintes Un peu d’histoire Roots Calcul, preuves et automatisme

Programmationlogique

Pascal Schreck

Introduction

Logique

Prolog

Contraintes

Comparaison avec des langages classiques

I these de Church-Turing

I programmation ? : oui

I efficacite en espace

I efficacite en temps

I efficacite en temps de developpement

Page 91: Introduction à la programmation logique et par … · Programmation logique Pascal Schreck Introduction Logique Prolog Contraintes Un peu d’histoire Roots Calcul, preuves et automatisme

Programmationlogique

Pascal Schreck

Introduction

Logique

Prolog

Contraintes

Comparaison avec des langages classiques

I these de Church-Turing

I programmation ? : oui

I efficacite en espace

I efficacite en temps

I efficacite en temps de developpement

Page 92: Introduction à la programmation logique et par … · Programmation logique Pascal Schreck Introduction Logique Prolog Contraintes Un peu d’histoire Roots Calcul, preuves et automatisme

Programmationlogique

Pascal Schreck

Introduction

Logique

Prolog

Contraintes

Comparaison avec des langages classiques

I these de Church-Turing

I programmation ? : oui

I efficacite en espace

I efficacite en temps

I efficacite en temps de developpement

Page 93: Introduction à la programmation logique et par … · Programmation logique Pascal Schreck Introduction Logique Prolog Contraintes Un peu d’histoire Roots Calcul, preuves et automatisme

Programmationlogique

Pascal Schreck

Introduction

Logique

Prolog

Contraintes

Comparaison avec des langages classiques

I these de Church-Turing

I programmation ? : oui

I efficacite en espace

I efficacite en temps

I efficacite en temps de developpement

Page 94: Introduction à la programmation logique et par … · Programmation logique Pascal Schreck Introduction Logique Prolog Contraintes Un peu d’histoire Roots Calcul, preuves et automatisme

Programmationlogique

Pascal Schreck

Introduction

Logique

Prolog

Contraintes

Programmation parcontraintes

Page 95: Introduction à la programmation logique et par … · Programmation logique Pascal Schreck Introduction Logique Prolog Contraintes Un peu d’histoire Roots Calcul, preuves et automatisme

Programmationlogique

Pascal Schreck

Introduction

Logique

Prolog

Contraintes

Programmation par contraintes

paradigme et exemples de langages

Decrire une situation avec des contraintes et employer unsolveur pour trouver toutes les instances possibles

I CHIP, ILOG, python-constraint

I Verilog

I ECLIPSe, CLP(R), SWI-Prolog, SICSTus ...

Contraintes et logiques

I l’unification est un cas particulier de resolution decontraintes

I la paradigme declaratif est celui de Prolog

I les premieres integrations des contraintes dans unlangage viennent de techniques Prolog

Page 96: Introduction à la programmation logique et par … · Programmation logique Pascal Schreck Introduction Logique Prolog Contraintes Un peu d’histoire Roots Calcul, preuves et automatisme

Programmationlogique

Pascal Schreck

Introduction

Logique

Prolog

Contraintes

Logique et contraintes

contraintes et swi-prolog

?- use_module(library(clpfd)).

?- 5 = 3 + X.

?- 5 #= 3 + X

----

somme(A,B,S) :- S #= A + B.

Techniques efficaces de resolution de contraintes dans desdomaines particuliers (par exemple, consistance d’arc etreduction d’intervalles).

Page 97: Introduction à la programmation logique et par … · Programmation logique Pascal Schreck Introduction Logique Prolog Contraintes Un peu d’histoire Roots Calcul, preuves et automatisme

Programmationlogique

Pascal Schreck

Introduction

Logique

Prolog

Contraintes

Carre magique

:- use_module(library(clpfd)).

carre(Vars) :-

Vars = [A1, A2,A3,B1,B2,B3,C1,C2,C3],

Vars ins 0..9,

all_different(Vars),

A1+A2+A3 #= B1+B2+B3,

A1+A2+A3 #= C1+C2+C3,

A1+A2+A3 #= A1+B1+C1,

A1+A2+A3 #= A2+B2+C2,

A1+A2+A3 #= A3+B3+C3,

A1+A2+A3 #= A1+B2+C3,

A1+A2+A3 #= A3+B2+C1.

% label(Vars).

Page 98: Introduction à la programmation logique et par … · Programmation logique Pascal Schreck Introduction Logique Prolog Contraintes Un peu d’histoire Roots Calcul, preuves et automatisme

Programmationlogique

Pascal Schreck

Introduction

Logique

Prolog

Contraintes

Send more money

:- use_module(library(clpfd)).

puzzle([S,E,N,D,M,O,R,Y]) :-

Vars = [S,E,N,D,M,O,R,Y],

Vars ins 0..9,

all_different(Vars),

S*1000 + E*100 + N*10 + D + M*1000

+ O*100 + R*10 + E #=

M*10000 + O*1000 + N*100 + E*10 + Y,

M #> 0, S #> 0.

% label(Vars).

Page 99: Introduction à la programmation logique et par … · Programmation logique Pascal Schreck Introduction Logique Prolog Contraintes Un peu d’histoire Roots Calcul, preuves et automatisme

Programmationlogique

Pascal Schreck

Introduction

Logique

Prolog

Contraintes

Sudoku

sudoku(Grid, Vars) :- Vars = [

A1,A2,A3,A4,A5,A6,A7,A8,A9,

B1,B2,B3,B4,B5,B6,B7,B8,B9,

C1,C2,C3,C4,C5,C6,C7,C8,C9,

D1,D2,D3,D4,D5,D6,D7,D8,D9,

E1,E2,E3,E4,E5,E6,E7,E8,E9,

F1,F2,F3,F4,F5,F6,F7,F8,F9,

G1,G2,G3,G4,G5,G6,G7,G8,G9,

H1,H2,H3,H4,H5,H6,H7,H8,H9,

I1,I2,I3,I4,I5,I6,I7,I8,I9 ],

Vars ins 1..9 ,

all_different([A1,A2,A3,A4,A5,A6,A7,A8,A9]), % lignes

...

all_different([A1,B1,C1,D1,E1,F1,G1,H1,I1]),% colonnes

...

all_different([A1,B1,C1,A2, B2, C2, A3, B3, C3]), % carres

...

grid(Grid, Vars), label(Vars),printGrid(Vars).