Logique pour le prototypage rapide en informatique



Documents pareils
Évaluation et implémentation des langages

Réalisabilité et extraction de programmes

Suivant les langages de programmation, modules plus avancés : modules imbriqués modules paramétrés par des modules (foncteurs)

Initiation à la Programmation en Logique avec SISCtus Prolog

Algorithmique I. Algorithmique I p.1/??

Sécurité des applications Retour d'expérience

Machines virtuelles Cours 1 : Introduction

# 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>

Baccalauréat universitaire (bachelor) en mathématiques et sciences informatiques

M é ca n ism e Pr o lo g. Ex e m p le

Etudier l informatique

Cours Informatique Master STEP

Intelligence artificielle appliquée à l automatique

Intelligence Artificielle et Robotique

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

Le génie logiciel. maintenance de logiciels.

IFT3245. Simulation et modèles

Processus d Informatisation

Exercices de dénombrement

Grandes lignes ASTRÉE. Logiciels critiques. Outils de certification classiques. Inspection manuelle. Definition. Test

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère

Jade. Projet Intelligence Artificielle «Devine à quoi je pense»

Programmation Objet - Cours II

Dans tous les cas : n'hésitez pas à contacter Wallonie Design. La théorie, c'est bien. Mais le "surmesure" adapté à votre entreprise, c'est mieux!

ALGORITHMIQUE ET PROGRAMMATION En C

Le langage SQL Rappels

I. Introduction aux fonctions : les fonctions standards

DE ENTE ET ESSENTIA L ÊTRE ET L ESSENCE

«Je pense, donc je suis» est une grande découverte

Que peut nous apporter une réflexion sur nos désirs?

1 INFORMATION - INFORMATIQUE. 11 Systèmes d'information gestion des connaissances, knowledge management

Les apports de l informatique. Aux autres disciplines

Qu'est-ce qu'un moteur de recherche. Moteur de recherche sur Internet

Logiciel Libre Cours 3 Fondements: Génie Logiciel

Intelligence Artificielle et Systèmes Multi-Agents. Badr Benmammar

SYSTÈME ARIANE Gestion des données d identification de l élève

3. SPÉCIFICATIONS DU LOGICIEL. de l'expression des besoins à la conception. Spécifications fonctionnelles Analyse fonctionnelle et méthodes

PNL & RECRUTEMENT IMPACT SUR LES ENTRETIENS Présentation du 10/06/03

Chapitre 5 : Flot maximal dans un graphe

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

ANNEXES. Evaluation de la formation à Polytech Lille Département GIS. Enseignements les plus utiles. Enseignements à renforcer

Christophe CANDILLIER Cours de DataMining mars 2004 Page 1

Eteindre. les. lumières MATH EN JEAN Mme BACHOC. Elèves de seconde, première et terminale scientifiques :

Décision Markovienne appliquée à un jeu de stop ou encore : Pickomino (Heckmeck Am Bratwurmeck)

Université du Québec à Chicoutimi. Département d informatique et de mathématique. Plan de cours. Titre : Élément de programmation.

SAP BusinessObjects Web Intelligence (WebI) BI 4

la virtualisation pour quoi faire?

Soutien technique en informatique

L apprentissage automatique

Evaluation et mise en place d un serveur de messages pour Chamilo 2.0

Langage SQL : créer et interroger une base

LA PNL. Programmation Neuro Linguistique

Présentation de la majeure ISN. ESILV - 18 avril 2013

LES CARTES À POINTS : POUR UNE MEILLEURE PERCEPTION

Une dérivation du paradigme de réécriture de multiensembles pour l'architecture de processeur graphique GPU

Chapitre 1 I:\ Soyez courageux!

INTRODUCTION AUX TECHNOLOGIES D INGENIERIE DES DONNEES DIRIGEE PAR LES MODELES

données en connaissance et en actions?

4D v11 SQL Release 5 (11.5) ADDENDUM

* Champs obligatoire. Déclarations:

Progression découverte du monde, autre que mathématiques, détails par période.

Architecture des Systèmes d Information Architecture des Systèmes d Information

Développement d un interpréteur OCL pour une machine virtuelle UML.

Règlement de jeu CASINO JOA LUXEUIL LES BAINS «Jeu concours Egérie»

THOT - Extraction de données et de schémas d un SGBD

Intelligence Artificielle Planification

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

Jämes Ménétrey Diffusion COLLEGE DU MANAGEMENT DE LA TECHNOLOGIE

LE PROBLEME DU PLUS COURT CHEMIN

Information utiles. webpage : Google+ : digiusto/

Tapori France ATD Quart Monde /5

LES OUTILS D ALIMENTATION DU REFERENTIEL DE DB-MAIN

Présentation livre Simulation for Supply Chain Management. Chapitre 1 - Supply Chain simulation: An Overview

Le chiffre est le signe, le nombre est la valeur.

Ingénierie et gestion des connaissances

STAGE2 STAGIAIRE / NIKOLAOS TSOLAKIS. 16/02/2015 : choix des outils nécessités pour l application : Didier Kolb, le maitre de stage

Recherche dans un tableau

Programmation d'agents intelligents Vers une refonte des fils de raisonnement. Stage de fin d'études Master IAD 2006

ACCÈS AUX RESSOURCES NUMÉRIQUES

Système binaire. Algèbre booléenne

M Études et développement informatique

Comment Utiliser les Versions, les Modification, les Comparaisons, Dans les Documents

Faut-il tout démontrer?

Résumé CONCEPTEUR, INTEGRATEUR, OPERATEUR DE SYSTEMES CRITIQUES

Tutoriel QSOS. Version /02/2013

Utilisation des tableaux sémantiques dans les logiques de description

Baccalauréat technologique

Didacticiel du service cartographique en cache

Seance 2: En respectant la méthode de programmation par contrat, implémentez les autres fonctions de jeu.

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

Introduction : présentation de la Business Intelligence

1. LA GESTION DES BASES DE DONNEES RELATIONNELLES

PRÉSENTÉ PAR : NOVEMBRE 2007

Conception d'un système d'information WEB avec UML Par Ass SERGE KIKOBYA

Nouveautés CRM 2015 & Migration. By Tanguy Touzard MVP CRM

DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51

M Études et développement informatique

De même, le périmètre P d un cercle de rayon 1 vaut P = 2π (par définition de π). Mais, on peut démontrer (difficilement!) que

RÉALISATION DE GRAPHIQUES AVEC OPENOFFICE.ORG 2.3

Transcription:

Logique pour le prototypage rapide en informatique Aurélien Bénel Systèmes d'information, management des connaissances et communication, Bureau T107 aurelien.benel @ utt.fr Outils mathématiques pour la modélisation, Université de technologie de Troyes, Automne 2007

Plan 2 Programmation logique Aristote contre Prolog Prototypage rapide

Programmation logique 3 Quels langage pour implémenter facilement des spécifications algébriques? ML (CAML), Prolog, LISP

Quand les logiciens font du Prolog sans le savoir 4 SPECIFICATIONS ALGÉBRIQUES veutetreamiavec(loulou, fifi) ( x) ( y) ami(x, y) veutetreamiavec(x, y) veutetreamiavec(y, x) ( x) ( y) amiscommuns(x, y) = { z ami(z, x) ami(z, y) } PROLOG veutetreamiavec(loulou, fifi). ami(x, Y) :- veutetreamiavec(x, Y), veutetreamiavec(y, X). amicommunde(x, Y, Z) :- ami(x, Y), ami(x, Z). amiscommuns(x, Y, E) :- setof(z, amicommunde(z, X, Y), E).

Quels sont les cas qui posent problème? 5 Dans la logique classique (celle d'aristote), on trouve : Le principe d'identité, Le principe de non-contradiction, Le principe du tiers exclu, Un principe "caché". Quels problèmes résolvent-ils? Comment Prolog réagit-il en présence de ces problèmes?

1. Principe de non-contradiction 6 «Il est impossible d'affirmer et de nier [la même proposition] conformément à la vérité.» Aristote, 1011b (Métaphysique)

Prolog et la contradiction 7 % Histoire du marin (attribuée à Aristote) il_prend_la_mer. PROLOG version XYZ?- il_est_heureux. Yes il_prend_la_mer. En Prolog, si la réponse à une question est à la fois oui et non, c'est le oui qui l'emporte il_est_sans_sa_femme:- il_est_avec_son_bateau:- il_prend_la_mer. il_est_heureux:- il_est_sans_sa_femme, fail. il_est_heureux:- il_est_avec_son_bateau.

Prolog et la contradiction (suite) 8 % Histoire du marin (attribuée à Aristote) il_prend_la_mer. PROLOG version XYZ?- il_est_heureux. No il_est_sans_sa_femme:- il_prend_la_mer. il_est_avec_son_bateau:- il_prend_la_mer. il_est_heureux:- il_est_sans_sa_femme,!, fail. à moins que l'on précise à l'aide d'un coupe-choix que l'on s'en tient au premier résultat. il_est_heureux:- il_est_avec_son_bateau.

2. Principe du tiers exclu 9 «Chaque chose, nécessairement, est ou n'est pas, sera ou ne sera pas, même si on ne peut pas dire laquelle des deux est nécessaire.» Aristote, 19a (De l'interprétation)

Prolog et le tiers exclu 10 % La bataille navale de demain % (Aristote vs Diodore Chronos) En Prolog la réponse à une question est non par défaut. PROLOG version XYZ?- il_y_aura_une_bataille_navale_demain. No

3. Principe d'identité 11 «Se demander pourquoi une chose est ellemême, c'est enquêter dans le vide [ ], le fait qu'une chose est elle-même est la seule réponse et la seule cause.» Aristote, 1041a (Métaphysique)

Prolog et l'identité 12 PROLOG version XYZ?- X=socrate. X = socrate yes?- socrate=x. X = socrate yes En Prolog : - l'unification (=) n'est pas une égalité, - l'unification n'est pas non plus une affectation.?- X=socrate, X=aristote. no PROLOG version XYZ?- 2=1+1. no?- 2 is 1+1. yes?- 1+1 is 2. no En Prolog : - l'unification porte sur la structure, - l'unification à la valeur (is) ne fonctionne que dans un seul sens.

4. Principe caché : la portée existentielle 13 Pour Aristote, il y a 4 types de propositions : Tous les SUJETs sont PREDICATs Quelques SUJETs sont PREDICATs Quelques SUJETs ne sont pas PREDICATs Aucun SUJET n'est PREDICAT Or on ne peut parler que de choses qui existent, les propositions donnent donc une valeur d'existence aux sujets. Exemple : prendre "homme" comme sujet et "mortel" comme prédicat.

Prolog et la portée existentielle (formelle) 14 % Tout est substance substance( _ ). AMZI! PROLOG?- substance(x). X = H110; no GNU PROLOG?- substance(x). yes % Tous les % philosophes sont % des hommes homme(x):- philosophe(x). AMZI! PROLOG?- homme(x). no GNU PROLOG?- homme(x). existence_error philosophe

Prolog et la portée existentielle (formelle), suite 15 % Callias est un % homme homme(callias). % Socrate est un % philosophe philosophe(socrate). % Tous les % philosophes sont % des hommes homme(x):- philosophe(x). PROLOG version XYZ?- not(philosophe(callias)). yes?- not(philosophe(x)). no?- homme(x), not(philosophe(x)). X = callias ; no En Prolog, il faut "générer puis tester" : Chaque variable doit être unifiée à une instance dès sa première apparition.

Pourquoi Prolog gère-t-il mal ce cas? 16 Ces cas problématiques (et les principes associés) sont décrits par Aristote : Non dans ses livres de logique, Mais dans ses livres de métaphysique. En quoi, l'interprétation de la logique (et de la vérité), a-t-elle changée au cours de l'histoire?

Logique contemporaine 17 Voilà de la gloire pour toi! Je ne vois pas ce que vous voulez dire. Quand j utilise un mot, il signifie ce que je veux qu il signifie ni plus, ni moins. Le problème est de savoir si vous pouvez obliger les mots à avoir tant de sens différents. Bien entendu tant que je ne te l ai pas dit! Le problème est de savoir qui commande, rien de plus.

Statut des programmes 18 Intelligence artificielle au sens fort? cycle en V (très critiqué) Purement formels? jeux Modèles? cycle en spirale

Application : Prototypage rapide 19 But : Comparer des algorithmes de tri. Jeu de test : liste de nombres réels. Est une liste : Une liste vide [], Une liste [E L] composée d'un élément E suivi d'une liste L.

Application : Prototypage rapide 20 Exemple : comparer des algorithmes de tri Ordonner deux réels % minmax(float1, Float2, Min, Max) % pour Float1 < Float2 minmax(x, Y, X, Y):- X<Y,!. % pour le cas général % (sauf cas précédent) minmax(x, Y, Y, X).

Prototypage rapide : Tri à bulle 21 % bulle(listeinitiale, ListeBullee) % pour un singleton bulle([x], [X]):-!. % pour une liste non vide quelconque % (sauf cas précédent) bulle([x L1], [Min, Max L2]):- bulle(l1, [Y L2]), minmax(x, Y, Min, Max). % tribulle(listeinitiale, ListeTriee) % pour une liste vide tribulle([ ], [ ]). % pour une liste non vide tribulle(l1, [Min L2]):- bulle(l1, [Min L3]), tribulle(l3, L2).

Prototypage rapide : Tri par fusion (1) 22 % fusion (ListeTriee1, ListeTriee2, % ListeTrieeFusion) % lorsque l'une des listes est vide fusion([ ], L, L):-!. fusion(l, [ ], L). % lorsque les listes sont non vides fusion([x L1], [Y L2], [X L3]):- X < Y,!, fusion(l1, [Y L2], L3). fusion(l1, [Y L2], [Y L3]):- fusion(l1, L2, L3).

Prototypage rapide : Tri par fusion (2) 23 % couper(liste, Position, Taille, % Moitie1, Moitie2) couper(l, Position, Taille, [ ], L):- Position > Taille/2,!. couper([x L], Position, Taille, [X M1], M2):- Position2 is Position+1, couper(l, Position2, Taille, M1, M2). % couper(liste, Moitie1, Moitie2) couper(liste, M1, M2):- length(liste, Taille), couper(liste, 1, Taille, M1, M2).

Prototypage rapide : Tri par fusion (3) 24 % trifusion(listeinitiale, ListeTriee) trifusion([ ], [ ]):-!. trifusion([x], [X]):-!. trifusion(initial, Triee):- couper(initial, Initial1, Initial2), trifusion(initial1, Triee1), trifusion(initial2, Triee2), fusion(triee1, Triee2, Triee).

Prototypage rapide : Comparaison sur des jeux de test 25 test1([46,2,4,46,248,5, test2([46,2,4,46,248,5, GNU PROLOG?- test1(l),length(l,x). L=[46,2,4,48,248,5,56, X=100 yes GNU PROLOG?- test2(l),length(l,x). L=[46,2,4,48,248,5,56, X=600 yes?- test1(l1),tribulle(l1, L2). L2=[-2673,-9,1,2,4,5,46,48,56 (40 ms) yes?- test1(l1),trifusion(l1, L2). L2=[-2673,-9,1,2,4,5,46,48,56 (10 ms) yes?- test2(l1),tribulle(l1, L2). L2=[-3568,-2673,-749,-245,-9, (1230 ms) yes?- test2(l1),trifusion(l1, L2). L2=[-3568,-2673,-749,-245,-9, (60 ms) yes

Pour aller plus loin 26 Amzi! Prolog, Interpréteur Prolog gratuit, Disponible sur Internet : <http://www.amzi.com/download/> Bellot P., Objectif Prolog, Paris : Masson, 1994. Blanché R., La logique et son histoire, Paris : Armand Colin, 2002. (Note : Edition originale publiée en 1970, revue et complétée en 1996). Colmerauer A., Roussel P., La naissance de Prolog, 1992. Disponible sur Internet : <http://www.lim.univ-mrs.fr/~colmer/texte.html#early> GNU Prolog, Interpréteur/Compilateur Prolog en open-source, Disponible sur Internet : <http://www.gnu.org/software/gprolog/> Sowa J.F., Knowledge Representation: Logical, Philosophical and Computational Foundations, Pacific Grove: Brooks/Cole, 2000.