Chapitre 5 Applications en Logique

Documents pareils
Initiation à la Programmation en Logique avec SISCtus Prolog

IN Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C

Tout au long de votre cursus Quel métier futur? Dans quel secteur d activité? En fonction de vos goûts et aptitudes et du «niveau d emploi» dans ce

Cours 1 : La compilation

Cours d introduction à l informatique. Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions

STAGE IREM 0- Premiers pas en Python

TP 1. Prise en main du langage Python

Prénom : Matricule : Sigle et titre du cours Groupe Trimestre INF1101 Algorithmes et structures de données Tous H2004. Loc Jeudi 29/4/2004

TP3 : Manipulation et implantation de systèmes de fichiers 1

Rappel. Analyse de Données Structurées - Cours 12. Un langage avec des déclaration locales. Exemple d'un programme

1 Année LMD-STSM Algorithmique et Programmation. Série de TD 2

Logique. Plan du chapitre

MPI Activité.10 : Logique binaire Portes logiques

Exceptions. 1 Entrées/sorties. Objectif. Manipuler les exceptions ;

# let rec concat l1 l2 = match l1 with [] -> l2 x::l 1 -> x::(concat l 1 l2);; val concat : a list -> a list -> a list = <fun>

Présentation du langage et premières fonctions

Les indices à surplus constant

UEO11 COURS/TD 1. nombres entiers et réels codés en mémoire centrale. Caractères alphabétiques et caractères spéciaux.

Intelligence Artificielle Planification

«Dire et écrire» pour réaliser une composition en travail collaboratif en géographie. Agnès Dullin, lycée J. Racine 20 rue du Rocher, Paris

DOCM Solutions officielles = n 2 10.

length : A N add : Z Z Z (n 1, n 2 ) n 1 + n 2

Algèbre binaire et Circuits logiques ( )

2 Comment fonctionne un ordinateur, dans les grandes lignes

Chapitre 2. Eléments pour comprendre un énoncé

Fondements de l informatique Logique, modèles, et calculs

OCL - Object Constraint Language

Exercices sur les interfaces

Cours Informatique 1. Monsieur SADOUNI Salheddine

TP : Gestion d une image au format PGM

Java Licence Professionnelle CISII,

Manuel d utilisation 26 juin Tâche à effectuer : écrire un algorithme 2

Raisonnement probabiliste

Algorithmique et Programmation, IMA

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles)

Classes et Objets en Ocaml.

TD3: tableaux avancées, première classe et chaînes

Une introduction rapide à Coq

Recherche dans un tableau

ANALYSE DU BESOIN. L ANALYSE FONCTIONNELLE par Jean-Marie VIRELY & all (ENS Cachan) Cette présentation décrit l outil «Analyse du Besoin».

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Déroulement. Evaluation. Préambule. Définition. Définition. Algorithmes et structures de données 28/09/2009

Découverte de Python

Projet de programmation (IK3) : TP n 1 Correction

1 Définition et Appel d une fonction. V. Phan Luong. Cours 4 : Fonctions

Programme Compte bancaire (code)

EXCEL TUTORIEL 2012/2013

Informatique Générale

Logique binaire. Aujourd'hui, l'algèbre de Boole trouve de nombreuses applications en informatique et dans la conception des circuits électroniques.

Projet d informatique M1BI : Compression et décompression de texte. 1 Généralités sur la compression/décompression de texte

Indications pour une progression au CM1 et au CM2

Limites finies en un point

ET 24 : Modèle de comportement d un système Boucles de programmation avec Labview.

Pourquoi l apprentissage?

LE PROCESSUS ( la machine) la fonction f. ( On lit : «fonction f qui à x associe f (x)» )

ACTIVITÉ DE PROGRAMMATION

Plan du cours. Historique du langage Nouveautés de Java 7

CHOIX OPTIMAL DU CONSOMMATEUR. A - Propriétés et détermination du choix optimal

Cours 1 : Introduction Ordinateurs - Langages de haut niveau - Application

INF 232: Langages et Automates. Travaux Dirigés. Université Joseph Fourier, Université Grenoble 1 Licence Sciences et Technologies

Ecran principal à l ouverture du logiciel

Licence Bio Informatique Année Premiers pas. Exercice 1 Hello World parce qu il faut bien commencer par quelque chose...

3. Conditionnement P (B)

Initiation à Excel. Frédéric Gava (MCF)

Correction TD algorithmique

Représentation géométrique d un nombre complexe

Cours de C++ François Laroussinie. 2 novembre Dept. d Informatique, ENS de Cachan

Algorithmique et Programmation Fonctionnelle

Chapitre 1 Qu est-ce qu une expression régulière?

Calculs de probabilités avec la loi normale

Vérification formelle de la plate-forme Java Card

Cours No 3 : Identificateurs, Fonctions, Premières Structures de contrôle.

Représentation d un entier en base b

L informatique en BCPST

Synthèse «Le Plus Grand Produit»

TD d économétrie appliquée : Introduction à STATA

Machines virtuelles Cours 1 : Introduction

Table des matières. Introduction

Chapitre VI- La validation de la composition.

Algorithmique et programmation : les bases (VBA) Corrigé

TangibleData. Manipulation tangible et multitouch de bases de données

Exemples de problèmes et d applications. INF6953 Exemples de problèmes 1

HMI target Visu / PLC HMI. Pour réaliser une interface homme machine avec PLC control

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Exclusion Mutuelle. Arnaud Labourel Courriel : arnaud.labourel@lif.univ-mrs.fr. Université de Provence. 9 février 2011

Expression des contraintes. OCL : Object C o n t r a i n t L a n g u a g e

Programmation Web. Madalina Croitoru IUT Montpellier

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

Machines virtuelles fonctionnelles (suite) Compilation ML Java

Évaluation et implémentation des langages

F411 - Courbes Paramétrées, Polaires

Systèmes déductifs DEA D INFORMATIQUE UNIVERSITÉ BORDEAUX 1. Systèmes déductifs (Retoré) Plan Début Fin Préc. Suiv.

Vérification de programmes et de preuves Première partie. décrire des algorithmes

NOVEMBRE 2009 DOCUMENT FONCTIONNEL COMMUN (DOFOCO) DES APPLICATIONS BILLETTIQUES SUR MOBILE NFC

TP1. Outils Java Eléments de correction

Maple: premiers calculs et premières applications

Calculer avec Sage. Revision : 417 du 1 er juillet 2010

Premiers Pas en Programmation Objet : les Classes et les Objets

Salon Progiciels 2007 Conférence «La description visuelle des flux d information» Avec le témoignage de la société

PHP. PHP et bases de données

Transcription:

Programmation Fonctionnelle en Haskell Chapitre 5 Applications en Logique Licence «Sciences et Technologies» Parcours «Informatique» 2ème année UFR Sciences Université de Caen Patrice Enjalbert Département d Informatique Patrice.Enjalbert@info.unicaen.fr 1

Présentation Logique vue du point de vue de l Intelligence Artificielle : représentation de connaissance et raisonnemment automatique sur ces connaissances Utilisera des notions vues en «maths», dans une visée plus «pratique» Plan 1. Logique (propositionnelle) : rappels. 2. Codage de formules en Haskell. Quelques manipulations utiles. Poursuivi en TD. 3. Une méthode de décision : substitutions 4. Rappel: Formes Normales Conjonctive et Disjonctive 2

1. Logique propositionnelle 1. Syntaxe Soit V un ensemble de variables propositionnelles (notées ici: p, q,r,. ) L'ensemble des formules du Calcul Propositionnel est défini inductivement. (i) Toute variable propositionnelle est une formule. (ii) Si A et B sont des formules A B, A B, A B et A sont des formules. (iii) Toute formule est obtenue en appliquant les règles (i) et (ii) un nombre fini de fois. A B se lit "A et B". conjonction de A et B. A B se lit "A ou B". disjonction de A et B. A B se lit "A implique B". implication. A se lit "non A". négation.,,, sont des connecteurs logiques. Exemple : p p q (p q) ( r)) (((p q) ( r )) (p ( r))). 3

Remarques - Règles de priorité. En général on considérera que est prioritaire sur et, lesquels sont prioritaires sur. (((p q) ( r )) (p ( r))) peut s écrire p q r p r - Représentation comme arbre (comme toute expression «formelle») Exemple (p q) r p r - Intuitivement : - Une variable code une propriété élémentaire du «système étudié» : «il fait beau», «la porte est ouverte», «le voyant b45c est allumé» - Une formule code une propriété complexe du système : «Si il fait beau alors je vais à la plage», «si le voyant b45c est allumé alors pb type a ou pb type b» p p r q r 4

2. Vérité - Valuation Assignation de valeurs de vérité à chaque variable. Ex:v0 = {p -> 0, q -> 1, r -> 0} v1 = {p -> 1, q -> 1, r -> 0} - Valeur d une formule pour une valuation Pour une valuation v donnée, on peut évaluer la formule F (tables de vérité des conecteurs, cf cours de maths) Val(v,F) dans {0,1} Ex. F0 = p (q r) val(v0,f0) = 0 val(v1,f0) = 1 - Satisfaction d une formule pour (par) une valuation Def : v satisfait F (F vraie pour v ) si val(v,f) = 1 - Intuitivement : - Valuation = un état du «système étudié» v3 = {fait_beau -> 1, porte_ouverte -> 0, voyant b45_allumé -> 0 } - v satisfait F si F est vraie dans l état du système décrit par v v3 satisfait (fait_beau porte_ouverte) b45_allumé 5

- Satisfiabilité Definition - F (formule) est satisfiable si il existe v qui satisfait F - {F1,F2,,Fn} satisfiable si il existe v qui satisfait tous le Fi Exemples : {p, p} non satisfiable (= insatisfiable, ou "insat") {p q, p, q} non satisfiable (insat) {p q r, p, q} satisfiable (sat) - Conséquence logique Definition H = {H1 Hn} à pour conséquence A Hypothèses Conclusion ssi toute valuation v qui satisfait H, satisfait aussi A A est vraie dès que H l'est 6

Propriété : Conséquence logique peut se ramener à Satisfiabilité {H1 Hn} à pour conséquence A ssi {H1 Hn, A} insatisfiable Exemples : {p q, p} à pour conséquence q car {p q, p, q} insat {p (r q), r} à pour conséquence p car {p (r q), r, p} insat 7

3. Application : formalisation de problèmes en logique Soit «««l analyse politique»»» suivantes : (1) Si la gauche gagne les régionales, si le gouvernement s engage dans une politique de rigueur on aura une crise sociale (2) Si le PS et les écolos s unissent, la gauche sera crédible, et seulement dans ce cas (3) S il y a une crise sociale et que la gauche est crédible, la droite perdra les élections de 2012 On veut savoir : Pb1 : Si cet ensemble d analyses et cohérent Pb2 : Si elles impliquent que la Droite va perdre les élections si elle pratique la rigueur et la gauche gagne les régionales Pb3 : Si ce n est pas exact, quelle(s) autre(s) conditions sont nécessaire pour que la gauche gagne 8

(1) Si la gauche gagne les régionales, si le gouvernement s engage dans une politique de rigueur on aura une crise sociale (2) Si le PS et les écolos s unissent, la gauche sera crédible (3) S il y a une crise sociale et que la gauche est crédible, la droite perdra les élections de 2012 Formalisation et résolution Etape 1. Choisir des variables pour symboliser les «faits» mentionnés dans les énoncés et les coder en logique Exemple : g_gagne_region pour «la gauche gagne», rigueur pour «le gouvernement pratique la rigueur» etc. (G1) g_gagne_region (rigueur crise) (G2) unite_ps_ecolos g_credible (G3) g_credible unite_ps_ecolos (G4) (crise g_credible) d_perd_2012 Etape 2. Formuler le bon problème logique Pb1 : {G1,G2,G3,G4} sat? Pb2 : {G1,G2,G3,G4,rigueur,g_gagne_region} a pour conséquence d_perd_2012? Pb3 : Modèles de {G1,G2,G3,G4, rigueur,g_gagne_region, (NON d_perd_2012)} (= valuations qui satisfassent l ensemble) Etape 3. Résoudre ce problème, «à la main» ou grâce à un «démonstrateur» 9

2. Codage en Haskell data Form = VAR String ET Form Form OU Form Form IMP Form Form NON Form deriving (Show,Eq) -- Exemples -- f0 = p (q v r) -- f1 = (r p) (q v r) f0 = ET (VAR "p") (OU (VAR "q") (NON (VAR "r"))) f1 = IMP (IMP (VAR "r") (VAR "p")) (OU (VAR "q") (NON (VAR "r"))) 10

Exemple «2012» (g1) g_gagne_region (rigueur crise) (g2) unite_ps_ecolos g_credible (g3) (crise g_credible) d_perd_2012 En Haskell g_gagne_region = VAR "g_gagne_region" :: Form rigueur = VAR»rigueur" :: Form g1 = IMP g_gagne_region (IMP rigueur crise) g2 = IMP unite_ps_ecolos g_credible g3 = IMP (ET crise g_credible) d_perd_2012 11

data Form = VAR String ET Form Form OU Form Form IMP Form Form NON Form deriving (Show,Eq) Accès aux composantes d une formule et test de «forme» -- Test si une formule est une implication isimp (IMP ) = True isimp _ = False -- clause «attrape tout -- Test si une formule est réduite à une variable logique. isvar (VAR _) = True isvar _ = False -- Etc.. 12

data Form = VAR String ET Form Form OU Form Form IMP Form Form NON Form deriving (Show,Eq) Alternative : calcul du type : -- filtrage de type case.. of typeform :: Form -> String typeform f = case f of (VAR _) -> "var" (ET ) -> "conj" (OU ) -> "disj" (IMP ) -> "implic" (NON _) -> "neg" 13

data Form = VAR String ET Form Form OU Form Form IMP Form Form NON Form deriving (Show,Eq) -- Acces aux arguments arg1,arg2 :: Form -> Form arg1 (IMP a _) = a arg1 (OU a _) = a arg1 (ET a _) = a arg1 (NON a) = a arg2 (IMP _ b) = b arg2 (OU _ b) = b arg2 (ET _ b) = b NB. En fait on n utilisera pas ces fonctions, mais directement le filtrage dans la définition des fonctions visées 14

data Form = VAR String ET Form Form OU Form Form IMP Form Form NON Form deriving (Show,Eq) Pretty Print ---- Affichage infixe showform :: Form -> String showform (VAR p) = p showform (ET f g) = "(" ++ (showform f) ++ " & " ++ (showform g) ++ ")" showform (OU f g) = "(" ++ (showform f) ++ " " ++ (showform g) ++ ")" showform (IMP f g) = "(" ++ (showform f) ++ " -> " ++ (showform g) ++ ")" showform (NON f) = "~ " ++ (showform f) -- On combine avec une écriture à l écran pprint = putstrln. showform > f1 IMP (VAR "p") (IMP (VAR "q") (NON (VAR "r"))) > showform f1 "(p -> (q -> ~ r))» > pprint f1 (p -> (q -> ~ r)) 15

data Form = VAR String ET Form Form OU Form Form IMP Form Form NON Form deriving (Show,Eq) Evaluation type Valuation = [(String,Bool)] val0 = [("p",true),("q",false),("r",true)] val1 = [("p",true),("q",false),("r",false)] -- assoc x l = valeur associée au nom x dans la liste associative l -- Question : forme + robuste? assoc :: (Eq a) => a -> [(a,b)] -> b assoc x l = let [(nom,val)] = filter (\(z,t) -> (z==x)) l in val > assoc "q" val1 False 16

data Form = VAR String ET Form Form OU Form Form IMP Form Form NON Form deriving (Show,Eq) val0 = [("p",true),("q",false),("r",true)] val1 = [("p",true),("q",false),("r",false)] -- f0 = p (q v r) f0 = ET (VAR "p") (OU (VAR "q") (NON (VAR "r"))) > eval f0 val0 False > eval f0 val1 True -- eval f v = valeur de la formule f pour la valuation v eval :: Form -> Valuation -> Bool eval (VAR s) v = assoc s v eval (ET f g) v = (eval f v) && (eval g v) eval (OU f g) v = (eval f v) (eval g v) eval (IMP f g) v = (not (eval f v)) (eval g v) eval (NON f) v = not (eval f v) 17

data Form = VAR String ET Form Form OU Form Form IMP Form Form NON Form deriving (Show,Eq) Elimination de l implication On utilise l équivalence : A B = A v B -- f2 : (r v p) (q r) f2 = IMP (OU (VAR "r") (VAR "p")) (IMP (VAR "q") (NON (VAR "r"))) > elimimp f2 -- (r v p) v ( q v r) OU (NON (OU (VAR "r") (VAR "p"))) (OU (NON (VAR "q")) (NON (VAR "r"))) elimimp :: Form -> Form elimimp (VAR s) = VAR s Analyse -> f et g Construction -> ET.... elimimp (ET f g) = ET (elimimp f ) (elimimp g) elimimp (OU f g) = OU (elimimp f) (elimimp g) elimimp (IMP f g) = OU (NON (elimimp f)) (elimimp g) elimimp (NON f) = NON (elimimp f ) NB. Le filtrage permet l analyse de la formule donnée 18