Esercizio - Tabelle di verità, equivalenze e model checking (slide del corso)
In questa pagina 3
Testo (esercizi ricavati dalle slide "Logical agents" del corso di Intelligenza Artificiale, Ing. dell'Informazione UniPD; teoria in Agenti logici e logica proposizionale - inferenza e risoluzioneAgenti basati sulla conoscenza (KB, Tell e Ask), mondo del Wumpus come banco di prova, sintassi e semantica della logica proposizionale, conseguenza logica, equivalenze, inferenza per model checking (7 simboli, 128 modelli, 3 modelli della KB) e per risoluzione (CNF, regola di risoluzione, dimostrazione per assurdo). Limite: poca espressività, da cui la logica del primo ordine.Agenti logici e logica proposizionale - inferenza e risoluzione →).
- Verificare con le tavole di verità le leggi di De Morgan, e , e dire se equivale a .
- Stabilire se sono valide e .
- Mondo del Wumpus: la KB è con , , , , . Per model checking, stabilire se e se .
Punto 1: De Morgan e implicazione
Le due variabili danno righe. Si calcola ogni colonna dalla definizione dei connettivi.
| V | V | V | F | F | V | F | F | V | V |
| V | F | F | V | V | V | F | F | F | V |
| F | V | F | V | V | V | F | F | V | F |
| F | F | F | V | V | F | V | V | V | V |
- Le colonne e sono uguali riga per riga: equivalenti. Lo stesso per e .
- e differiscono nelle righe e : non equivalenti. L'implicazione non è simmetrica.
Punto 2: validità
Sillogismo ipotetico . Una formula è falsa solo se è vera e falsa. Qui falsa richiede vero e falso. Con vero, vera richiede vero; ma con vero e falso è falsa, quindi l'antecedente non è vero. Non esiste riga falsa: la formula è valida (controllate tutte le righe).
Affermazione del conseguente . Con falso e vero: vero, vero (antecedente falso), quindi l'antecedente è vero e il conseguente è falso. La formula è falsa in quel modello: non valida (è il ragionamento sbagliato "piove implica pavimento bagnato, il pavimento è bagnato, dunque piove").
Punto 3: model checking sulla KB del Wumpus
I simboli sono (): modelli. Si scrive la KB come funzione e si enumerano.
from itertools import product
syms = ["B11", "B21", "P11", "P12", "P21", "P22", "P31"]
def kb(m):
return (not m["P11"] # R1
and m["B11"] == (m["P12"] or m["P21"]) # R2
and m["B21"] == (m["P11"] or m["P22"] or m["P31"]) # R3
and not m["B11"] and m["B21"]) # R4, R5
modelli = [dict(zip(syms, v)) for v in product([False, True], repeat=7)]
buoni = [m for m in modelli if kb(m)]
print(len(modelli), len(buoni)) # 128 3
print(all(not m["P12"] for m in buoni)) # True
print(all(not m["P22"] for m in buoni)) # FalseOutput atteso: 128 3, True, False. I modelli della KB si trovano anche a mano (vedi la nota): , , , falsi, vero, e .
- è falso nei modelli: , sì.
- è vero nel secondo e nel terzo: , no.
L'agente può quindi andare in senza rischio, ma non può escludere un pozzo in né in .
Versione ripasso
- De Morgan verificate su righe: ha colonna F,V,V,V come ; ha F,F,F,V come . (V,F,V,V) non equivale a (V,V,F,V).
- Validità: il sillogismo è valido (per essere falso servirebbe vero, falso, ma allora uno tra e è falso). L'affermazione del conseguente no: controesempio falso, vero.
- Model checking del Wumpus: simboli, modelli, KB vera in (con vero e , il resto falso). sì; no. Codice:
product([False,True], repeat=7), filtrokb(m), controlloall(not m["P12"] ...). - Errore tipico: concludere dal fatto che sia vera che anche lo sia.