web-dev-qa-db-fra.com

Implication booléenne

J'ai besoin d'aide pour cette implication booléenne.

Quelqu'un peut-il expliquer comment cela fonctionne en termes simples:

A implique B = B + A' (si A alors B). Également équivalent à A >= B

34
Tony The Lion

Implication booléenne A implies B signifie simplement "si A est vrai, alors B doit être vrai". Cela implique (jeu de mots voulu) que si A n'est pas vrai, alors B peut être n'importe quoi. Donc:

False implies False -> True
False implies True  -> True
True  implies False -> False
True  implies True  -> True

Cela peut également être lu comme (not A) or B - c'est-à-dire "soit A est faux, soit B doit être vrai".

100
Pavel Minaev

Voici comment j'y pense:

if(A)
  return B;
else
  return True;

si A est vrai, alors b est pertinent et doit être vérifié, sinon, ignorez B et retournez vrai.

20
infinitenothing

Je pense que je vois d'où vient Serge et je vais essayer d'expliquer la différence. C'est trop long pour un commentaire, je vais donc le poster comme réponse.

Serge semble aborder cette question dans la perspective de se demander si l'implication s'applique ou non. C'est un peu comme un scientifique essayant de déterminer la relation entre deux événements. Considérez l'histoire suivante:

Un scientifique visite quatre pays différents sur quatre jours différents. Dans chaque pays, elle veut déterminer si la pluie implique que les gens utilisent des parapluies. Elle génère la table de vérité suivante:

Il a plu? Est-ce que les gens pleuvaient => des parapluies? Comment 
 Utiliser des parapluies? 
Non non              ?? Il n'a pas plu, donc je n'ai pas pu observer 
 Non Oui ?? Les gens se protégeaient du chaud soleil; Je ne sais pas ce qu'ils feraient sous la pluie 
 Oui Non Non Peut-être que le gouvernement local a interdit les parapluies et personne ne peut les utiliser. Il n'y a certainement aucune implication ici. 
 Oui Oui ?? Peut-être que ces gens utilisent des parapluies quel que soit le temps qu'il fait

Dans ce qui précède, la scientifique ne connaît pas la relation entre la pluie et les parapluies et elle essaie de déterminer de quoi il s'agit. Ce n'est que l'un des jours dans l'un des pays qu'elle peut dire définitivement que cela implique que ce n'est pas la bonne relation.

De même, il semble que Serge essaie de tester si A => B, et ne peut le déterminer que dans un cas.

Cependant, lorsque nous évaluons la logique booléenne, nous connaissons la relation à l'avance et voulons tester si la relation a été respectée. Une autre histoire:

Une mère dit à son fils: "Si tu deviens sale, prends un bain" (sale => bain). Quatre jours différents, lorsque la mère rentre du travail, elle vérifie si la règle a été respectée. Elle génère la table de vérité suivante:

Devenir sale? Prendre un bain? Suivre la règle? Commentaire 
 Non Non Oui Le fils ne s'est pas sali, donc n'a pas eu besoin de prendre un bain. Donnez-lui un cookie. 
 Non Oui Oui Fils n'avait pas besoin de prendre un bain, mais il le voulait quand même. Extra propre! Donnez-lui un cookie. 
 Oui Non Non Fils n'a pas suivi la règle. Pas de biscuit et pas de télévision ce soir. 
 Oui Oui Oui Il a pris un bain pour nettoyer après s'être sali. Donnez-lui un cookie.

La mère a établi la règle à l'avance. Elle sait quelle est la relation entre la saleté et les bains, et elle veut s'assurer que la règle est respectée.

Lorsque nous travaillons avec une logique booléenne, nous sommes comme la mère: nous connaissons les opérateurs à l'avance et nous voulons travailler avec l'énoncé sous cette forme. Peut-être voulons-nous transformer l'énoncé sous une forme différente (comme c'était le cas à l'origine, il ou elle voulait savoir si deux énoncés étaient équivalents). En programmation informatique, nous voulons souvent brancher un ensemble de variables dans l'instruction et voir si l'instruction entière est évaluée à vrai ou faux.

Il ne s'agit pas de savoir si l'implication s'applique - cela n'aurait pas été écrit là-bas s'il ne devait pas l'être. Les tables de vérité ne visent pas à déterminer si une règle s'applique, elles visent à déterminer si une règle a été respectée.

18
Adam Dunn

J'aime utiliser l'exemple: s'il pleut, alors il fait nuageux.

Raining => Cloudy

Contrairement à ce que de nombreux débutants pourraient penser, cela ne signifie nullement que la pluie provoque un trouble ou que le trouble provoque la pluie. ( EDIT: Cela signifie seulement que, pour le moment , il n'est pas à la fois pluvieux et non nuageux. Voir mon récent blog sur les implications matérielles ici . Là, je développe, entre autres, une justification de la "définition" habituelle de l'implication matérielle. Le lecteur devra se familiariser avec les méthodes de preuve de base, par exemple la preuve directe et la preuve par contradiction.)

~[Raining & ~Cloudy]
10
Dan Christensen

À en juger par les tables de vérité, il est possible de déduire la valeur de a => b uniquement pour a = 1 et b = 0. Dans ce cas, la valeur de a => b est 0. Pour le reste des valeurs (a, b), la valeur de a => b n'est pas définie: les deux (a => b) = 0 ("a n'implique pas b ") et (a => b) = 1 (" a implique b ") sont possibles:

a b a=>b comment
0 0  ?   it is not possible to infer whether a implies b because a=0
0 1  ?   --"--
1 0  0   b is 0 when a is 1, so it is possible to conclude
         that a does not imply b
1 1  ?   whether a implies b is undefined because it is not known
         whether b can be 0 when a=1 .

Pour que a implique b, il est nécessaire et suffisant que b = 1 toujours lorsque a = 1, de sorte qu'il n'y ait pas de contre-exemple lorsque a = 1 et b = 0. Pour les lignes 1, 2 et 4 de la table de vérité, on ne sait pas s'il y a un contre-exemple: ces lignes ne contredisent pas (a => b) = 1, mais elles ne prouvent pas non plus (a => b) = 1 . En revanche, la ligne 3 réfute immédiatement (a => b) = 1 car elle fournit un contre-exemple lorsque a = 1 et b = 0. Je suppose que je peux choquer certains lecteurs avec ces explications, mais il semble qu'il y ait de graves erreurs quelque part dans les bases de la logique qui nous est enseignée, et c'est l'une des raisons pour lesquelles des problèmes tels que la satisfaction booléenne ne sont pas encore résolus.

0
Serge Rogatch

La meilleure contribution sur cette question est donnée par Serge Rogatch.

La logique booléenne ne s'applique que lorsque le résultat de la quantification (ou évaluation) est vrai ou faux et que la relation entre les propositions de logique booléenne est basée sur ce fait.

Il doit donc exister une relation ou un lien entre les propositions.

Dans une logique d'ordre supérieur, la relation n'est pas seulement un cas de marche/arrêt, 1/0 ou + tension/tension, l'évaluation d'une proposition formulée est plus complexe. Si aucune relation n'existe entre les propositions formulées, alors l'implication pour les propositions formulées n'est pas équivalente aux propositions logiques booléennes.

Bien que la table de vérité des implications donne toujours des résultats corrects pour les propositions binaires, ce n'est pas le cas avec les propositions formulées qui peuvent ne pas être liées du tout.

~ Table de vérité A V B:

A B Résultat/Évaluation

1 1 1

1 0 0

0 1 1

0 0 1

Proposition formulée A: La lune est faite de crème sure.
Proposition formulée B: Demain, je gagnerai le loto.

A B Résultat/Évaluation

1 ? ?

Comme vous pouvez le voir, dans ce cas, vous ne pouvez même pas déterminer l'état de B qui décidera du résultat. Est-ce que cela a du sens maintenant?

Dans cette table de vérité, la proposition ~ A est toujours évaluée à 1, par conséquent, les deux dernières lignes ne s'appliquent pas. Cependant, les deux dernières lignes s'appliquent toujours en logique booléenne.

http://thenewcalculus.weebly.com

0
John Gabriel

Voici une déclaration compacte:

Supposons que nous ayons deux déclarations, A et B, chacune pouvant être vraie ou fausse. Sans autre information, il y a 2 x 2 = 4 possibilités: "A et non B", "B et pas A", "ni A ni B", et "A et B".

Maintenant, imposez la restriction supplémentaire "si A, alors aussi B". Après avoir imposé cette restriction, l'expression "x -> y", où -> est l'opérateur "d'implication", dénote si c'est encore possible pour A == x et B == y. Le seul résultat qui n'est plus possible après cette restriction supplémentaire est A == 1 et B == 0, car cela contredit la restriction elle-même. Par conséquent, nous avons 1 -> 0 est zéro, et chaque autre paire est 1.

0
xdavidliu