Informatique théorique Introduction à la logique La logique peut servir à formaliser le raisonnement humain, les sciences ou à démontrer des théories. Il faut cependant ce montré méfiant face à un raisonnement pouvant sembler logique, comme avec le syllogisme par exemple : Tous les hommes sont mortels. Ce qui est rare est cher. Socrate est un homme. Un 4x4 bon marché est rare. Donc Socrate est mortel. Donc un 4x4 bon marché est cher. Le problème vient du quantificateur qui n’a pas été précisé (« Ce », « tout »), le raisonnement peut également être erroné si l’assertion de départ est fausse. Rappels : ∨ OU ^ ET ⇒ IMPLICATION ¬ NEGATION Pour démontrer quelque chose on peut remplacer les axiomes (proposition indémontrable, utilisée comme base d’un raisonnement) d’un problème par des lettes et utiliser un procédé de démonstration syntaxique déductif noté |-. P ∨ T, P ⇒ Q Q∨T ou P ∨ T, P ∨ Q |- Q ⇒ T "Q∨T se déduit syntaxiquement de P ∨ T et P ⇒ Q" Si la preuve syntaxique est vraie, le raisonnement n’est vrai que si les axiomes sont vrais dans le contexte (où les preuves s’appliquent). Il faut prouver dans le monde réel une façon de raisonner (sémantique) et démontrer dans le monde logique avec des règles (syntaxe). Exemples/TD F0 : Vrai ou faux ? 1. Si x est un nombre pair alors x + 1 est un nombre impair. Soit pair(x) ⇒ impair(x+1) Vrai, si on est dans le contexte où « + » signifie addition. 2. Si x est un nombre pair alors x + 1 est un nombre pair. Faux, si dans le même contexte (incompatible avec le 1.). 3. Si la lune est verte à pois bleus alors 3 = 2. Vrai, dans le contexte où la lune n’est pas verte (voir table de vérité). Tables de vérité A B A⇒B ¬A∨B 1 1 1 1 1 0 0 0 0 1 1 1 0 0 1 1 On voit que si A est faux alors A implique B est toujours vrai. A⇒B ¬A∨B Une table de vérité « grossit » très vite, pour x axiomes on a 2x lignes. Forme normale Conjonctions ou disjonctions, avec éventuellement des négations mais uniquement sur une variable (pas d’imbrications) : Passage en forme normale de : 1. ¬ ((((A ⇒ B) ∨ C) ^ A) ∨ (D ^ ¬ C)) ^ B Illogique, donc ¬ (((¬ A ∨ B ∨ C) ^ A) ∨ (D ^ ¬ C)) ^ B Voir table de vérité on retire ¬ (((A ^ ¬ A) ∨ (A ^ B) ∨ (A ^ C) ∨ (D ^ ¬ C)) ^ B Distributivité (¬ A ∨ ¬ B) ^ (¬ A ∨ ¬ C) ^ (¬ D ∨ C) ^ B Négation On peut même simplier, vu que B est forcément vraie (^ B), ¬ B devient illogique : (¬ A ∨ ¬ B) ^ (¬ A ∨ ¬ C) ^ (¬ D ∨ C) ^ B ¬ A ^ (¬ A ∨ ¬ C) ^ (¬ D ∨ C) ^ B Vu qu’on a ¬A ¬ A ^ (¬ D ∨ C) ^ B (A B) (A ⇒ B) ^ (B ⇒ A) (¬A ∨ B) ^ (¬B ∨ A) 2. (A B) ∨ ¬((C ^ D) ∨ (¬D ∨ A)) (A B) ∨ ((¬ C ∨ ¬D) ^ (D ^ ¬ A)) ((A B) ∨ (¬ C ∨ ¬D)) ^ ((A B) ∨ (D ^ ¬ A)) (((¬A ∨ B) ^ (¬B ∨ A)) ∨ (¬ C ∨ ¬D)) ^ (((¬A ∨ B) ^ (¬B ∨ A)) ∨ (D ^ ¬ A)) ((¬A ∨ B) ∨ (¬ C ∨ ¬D)) ^ ((¬B ∨ A) ∨ (¬ C ∨ ¬D)) ^ ((¬A ∨ B) ∨ (D ^ ¬ A)) ^ (¬B ∨ A) ∨ (D ^ ¬ A)) (¬A ∨ B ∨ ¬C ∨ ¬D) ^ (¬B ∨ A ∨ ¬C ∨ ¬D) ^ (¬A ∨ B ∨ D) ^ (¬A ∨ D ∨ ¬A) ^ (¬B ∨ A ∨ D) ^ (¬B ∨ A ∨ ¬A) Chercher la princesse On a deux cellules, il faut en ouvrir une. Dans chaque cellule il y a soit un tigre, soit une princesse. Sur chaque porte de cellule il y a un écriteau (E1 sur la cellule 1 et E2 sur la cellule 2) où est inscrit : - E1 : il y a au moins une princesse - E2 : il y a une princesse dans l’autre cellule On sait que : - s’il y a une princesse dans la cellule 1 alors E1 est vrai (A1) - s’il y a un tigre dans la cellule 1 alors E1 est faux (A2) - s’il y a une princesse dans la cellule 2 alors E2 est faux (A3) - s’il y a un tigre dans la cellule 2 alors E2 est vrai (A4) Hypothèse 1 : Hypothèse 2 : Hypothèse 3 : Hypothèse 4 : C1 : T E1 est faux ⇒Il n’y a pas de princesse C1 : T E1 est faux ⇒Il n’y a pas de princesse C1 : P ≠ E1 est vrai ⇒Il y a une princesse C1 : P E1 est vrai ⇒Il y a une princesse C2 : P ≠ Contradiction ≠ C2 : T E2 est vrai ⇒Il y a une princesse dans C1 C2 : P E2 est faux ⇒Il n’y a pas une princesse dans C1 C2 : T E2 est vrai ⇒Il y a une princesse dans C1 La bonne hypothèse est la 4ème, cependant on ne peut pas gérer chaque hypothèse pour tous les problèmes, si on avait ne serait-ce que 5 cellules le nombre d’hypothèse sera colossale. Formalisation : Dans chaque cellule, il y a soit un tigre, soit une princesse correspond à : A ⇒ B ¬A ∨ B A0 : (TC1 ∨ PC1) ^ ¬(TC1 ^ PC1) ^ (TC2 ∨ PC2) ^ ¬(TC2 ^ PC2) On a alors : A1 : PC1 ⇒ PC1 ∨ PC2 ¬PC1 ∨ (PC1 ∨ PC2) ¬TC1 ∨ ¬(PC1 ∨ PC2) A2 : TC1 ⇒ ¬ (PC1 ∨ PC2) ¬PC2 ∨ ¬PC1 A3 : PC2 ⇒ ¬PC1 ¬TC2 ∨ PC1 A4 : TC2 ⇒ PC1 Si TC1 ¬PC1 et TC2 ¬PC2 : A0 : (¬PC1 ∨ PC1) ^ ¬(¬PC1 ^ PC1) ^ (¬PC2 ∨ PC2) ^ ¬(¬PC2 ^ PC2) Vrai Vrai Vrai Vrai Vu que A0 est vrai on peut considérer que TC1 ¬PC1 et TC2 ¬PC2 On remplace alors dans les axiomes : A1 : TC1 ∨ (¬TC1 ∨ ¬TC1) PC1 ∨ ¬(PC1 ∨ PC2) PC1 ∨ (¬PC1 ^ ¬PC2) A2 : (PC1 ∨ ¬PC1) ^ (PC1 ∨¬PC2) PC1 ∨¬PC2 A3 : ¬PC2 ∨ ¬PC1 ¬TC2 ∨ PC1 A4 : PC2∨ PC1 On a donc : (PC1 ∨¬PC2) ^ (¬PC2 ∨ ¬PC1) ^ (PC2∨ PC1) (PC1 ∨¬PC2) ^ (¬PC2 ∨ ¬PC1) ^ (PC2∨ PC1) PC1 ^ ¬PC2 ^ PC1 PC1 ^ ¬PC2 PC1 ^ TC2 Vrai tout le temps on peut l’ignorer Factorisation On choisit PC1 Finalement on a bien PC1 ^ TC2 soit une princesse dans la cellule 1 et un tigre dans la 2 comme dans la première résolution. On aurait très bien pu choisir ¬PC2 dans la simplification finale : (PC1 ∨¬PC2) ^ (¬PC2 ∨ ¬PC1) ^ (PC2∨ PC1) (PC1 ∨¬PC2) ^ (¬PC2 ∨ ¬PC1) ^ (PC2∨ PC1) ¬PC2 ^ ¬PC2 ^ PC1