Implicazione booleana

Ho bisogno di aiuto con questa implicazione booleana.

Qualcuno può spiegare come funziona in termini semplici:

A implica B = B + A' (se A poi B). Equivalente anche ad A >= B

Implicazione booleana A implies B semplicemente significa “se A è vero, allora B deve essere vero”. Ciò implica (gioco di parole) che se A non è vero, allora B può essere qualsiasi cosa. Così:

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

Questo può anche essere letto come (not A) or B – cioè “o A è falso, o B deve essere vero”.

Penso di vedere da dove viene Serge, e cercherò di spiegare la differenza. Questo è troppo lungo per un commento, quindi lo posterò come risposta.

Serge sembra avvicinarsi a questo dalla prospettiva di mettere in dubbio se l’implicazione si applica o no. Questo è un po ‘come uno scienziato che cerca di determinare la relazione tra due eventi. Considera la seguente storia:

Uno scienziato visita quattro paesi diversi in quattro giorni diversi. In ogni paese lei vuole determinare se la pioggia implica che la gente userà gli ombrelli. Lei genera la seguente tabella di verità:

  Ha piovuto?  La gente ha piovuto => ombrelli?  Commento
               usare gli ombrelli?  
 No No ??  Non pioveva, quindi non ho potuto osservare
 No sì ??  Le persone si proteggevano dal sole caldo;  Non so cosa farebbero sotto la pioggia
 Sì No No Forse il governo locale ha vietato gli ombrelli e nessuno può usarli.  Non c'è sicuramente alcuna implicazione qui.
 Si si ??  Forse queste persone usano ombrelli, non importa che tempo sia 

In quanto sopra, lo scienziato non conosce la relazione tra pioggia e ombrelli e sta cercando di determinare di cosa si tratta. Solo in uno dei giorni in uno dei paesi può dire in modo definitivo che ciò implica che non è la relazione corretta.

Allo stesso modo, sembra che Serge stia cercando di verificare se A => B, ed è in grado di determinarlo solo in un caso.

Tuttavia, quando stiamo valutando la logica booleana, conosciamo la relazione prima del tempo e vogliamo verificare se la relazione è stata rispettata. Un’altra storia:

Una madre dice a suo figlio: “Se ti sporchi, fai il bagno” (sporco => bagno). In quattro giorni separati, quando la madre torna a casa dal lavoro, controlla se la regola è stata seguita. Lei genera la seguente tabella di verità:

  Sporcarsi?  Fare un bagno?  Segui la regola?  Commento
 No No Sì. Il figlio non si sporcava, quindi non aveva bisogno di fare il bagno.  Dagli un biscotto.
 No Sì Sì Il figlio non aveva bisogno di fare il bagno, ma voleva comunque.  Extra pulito!  Dagli un biscotto.
 Sì No No Il figlio non ha seguito la regola.  Nessun cookie e nessuna TV stasera.
 Sì Sì Sì Ha fatto il bagno per pulire dopo essersi sporcato.  Dagli un biscotto. 

La madre ha fissato la regola in anticipo. Sa qual è il rapporto tra lo sporco e i bagni e vuole assicurarsi che la regola venga seguita.

Quando lavoriamo con la logica booleana, siamo come la madre: conosciamo gli operatori prima del tempo e vogliamo lavorare con la dichiarazione in quella forma. Forse vogliamo trasformare l’affermazione in una forma diversa (come era la domanda originale, lui o lei voleva sapere se due affermazioni sono equivalenti). Nella programmazione dei computer spesso vogliamo colbind un insieme di variabili all’istruzione e vedere se l’intera istruzione è vera o falsa.

Non si tratta di sapere se l’implicazione si applica – non sarebbe stato scritto lì se non dovesse esserlo. Le tabelle di verità non riguardano la determinazione dell’applicazione di una regola, ma la determinazione dell’aderenza di una regola.

Ecco come ci penso:

 if(A) return B; else return True; 

se A è vero, allora b è rilevante e dovrebbe essere controllato, altrimenti, ignora B e restituisce true.

Mi piace usare l’esempio: se piove, allora è nuvoloso.

 Raining => Cloudy 

Contrariamente a ciò che molti principianti potrebbero pensare, ciò non suggerisce in alcun modo che la pioggia causi nuvolosità o che la nuvolosità causi la pioggia. Significa solo che non può piovere e non essere nuvoloso.

 ~[Raining & ~Cloudy] 

A giudicare dalle tabelle di verità, è ansible dedurre il valore di a => b solo per a = 1 eb = 0. In questo caso il valore di a => b è 0. Per il resto dei valori (a, b), il valore di a => b non è definito: entrambi (a => b) = 0 (“a non implica b “) e (a => b) = 1 (” a implica b “) sono possibili:

 aba=>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 . 

Perché a implicare b è necessario e sufficiente che b = 1 sempre quando a = 1, in modo che non ci sia controesempio quando a = 1 eb = 0. Per le righe 1, 2 e 4 nella tabella di verità non è noto se esiste un controesempio: queste righe non sono in contraddizione con (a => b) = 1, ma non dimostrano (a => b) = 1 . Al contrario, la riga 3 smentisce immediatamente (a => b) = 1 perché fornisce un controesempio quando a = 1 eb = 0. Credo che potrei scioccare alcuni lettori con queste spiegazioni, ma sembra che ci siano degli errori severi da qualche parte nelle basi della logica che ci viene insegnata, e questo è uno dei motivi per cui problemi come Boolean Satisfiability non sono ancora stati risolti.

Il miglior contributo a questa domanda è dato da Serge Rogatch.

La logica booleana si applica solo dove il risultato della quantificazione (o della valutazione) è vero o falso e la relazione tra le proposizioni logiche booleane si basa su questo fatto.

Quindi deve esistere una relazione o una connessione tra le proposizioni.

Nella logica di ordine superiore, la relazione non è solo un caso di on / off, 1/0 o + tensione / -voltage, la valutazione di una proposizione formulata è più complessa. Se non esiste alcuna relazione tra le proposizioni formulate, allora l’implicazione per proposizioni formulate non è equivalente alle proposizioni logiche booleane.

Mentre la tabella di verità dell’implicazione produce sempre risultati corretti per proposizioni binarie, questo non è il caso di proposizioni formulate che potrebbero non essere affatto correlate.

~ Tabella di verità di AVB:

Risultato AB / Valutazione

1 1 1

1 0 0

0 1 1

0 0 1

Proposta formulata A: La luna è fatta di panna acida.
Proposta scritta B: Domani vincerò il lotto.

Risultato AB / Valutazione

1? ?

Come puoi vedere, in questo caso, non puoi nemmeno determinare lo stato di B che deciderà il risultato. Ha senso ora?

In questa tabella di verità, proposizione ~ A valuta sempre 1, quindi le ultime due righe non si applicano. Tuttavia, le ultime due righe si applicano sempre nella logica booleana.

http://thenewcalculus.weebly.com