LOGI : INTRODUZIONE ALL'USO

Corso di Logica Matematica

Generalità

Il software didattico LOGI è stato progettato come "supplemento" al course-ware Language, Proof and Logic (LPL) utilizzato nel corso di Logica Matematica. In LPL vari esercizi devono essere risolti "a mano", dal momento che prevedono segnature e interpretazioni diverse dalla quella del mondo dei blocchi utilizzata in LPL dalla applicazione "Tarski's World", che d'ora in poi indicheremo con TW. LOGI ha lo scopo di consentire la (auto)valutazione automatica di tali esercizi. Inoltre fornisce le valutazioni boolene delle formule proposizionali e, più in generale, della forma vero-funzionale delle formule del primo ordine.

LOGI è sviluppato in SWI Prolog. Nella sezione Installazione trovate le istruzioni per installare SWI Prolog e l'applicazione LOGI.

Installazione

L'applicazione è sviluppata in SWI Prolog. Per prima cosa bisogna scaricare SWI Prolog dal sito e assicurarsi che sia funzionante. Poi si procede come segue.

Uso del sistema - uno sguardo generale.

LOGI fornisce un supporto per l’esecuzione e valutazione di esercizi che riguardano l'interpretazione di formule in contesti diversi da "Tarski's World". Lo svolgimento e controllo di un esercizio avviene in due fasi

Per acquisire un minimo di manualità con l'editor incorporato, si proceda come segue. Su uno dei fogli FORMULE o INTERPRETAZIONE si scriva un testo arbitrario e si usino Copy, Cut, Paste; si tratta di funzioni simili in tutti gli editor, per cui non le esaminiamo qui. Vediamo invece le funzioni peculiari dell'editor integrato, che riguardano:

Seguono alcuni esercizi guidati.

Esercizio 1. Interpretazioni in FOL

Si chiede di

  1. Scrivere su un foglio le due proposizioni atomiche Tet(a) e RightOf(rm(a),b).
  2. Creare un'interpretazione della segnatura del foglio appena scritto, che rappresenti il mondo di Tarski mostrato in Figura:
    Mondo tarski
    Fig.e1.1. Un mondo di tre blocchi
  3. Valutare la verità delle formule del foglio nella interpretazione creata ed esaminare le spiegazioni fornite dal sistema.
  4. Modificando solo l'interpretazione delle costanti a e b, scrivere Per ciascuna delle tre interpretazioni, si disegni un mondo corrispondete usando il tool "Tarski's World" di LPL.

(A) Svolgimento guidato

1. Scrivere le formule

Scrivere sul foglio FORMULE le due formule atomiche richieste, Tet(a) e RightOf(rm(a),b). Ogni formula deve essere preceduta da un'etichetta, usata dal sistema per indicarla nei vari messaggi. E' meglio controllare sempre quanto scritto con la voce CONTROLLA FORMULE del menù FOGLI oppure con il corrispondente acceleratore \C-f (f per "formule"). Se vi sono errori, vengono segnalati e la verifica non ha successo. Se non vi sono errori, la verifica ha successo si ha il messaggio "Fatto".

Scrittura atomiche >> save >> done
Fig.e1.2. Scrittura e controllo di formule
Selezionando Mostra segnatura ricostruita nel menù HELP, è possibile vedere la segnatura ricostruita dal sistema, formata da due simboli di costante a e b, un simbolo di funzione rm/1 unario a e b e due simboli di predicato Tet/1 unario e RightOf/2 binario.
visualizza segnatura segnatura ricostruita
Fig.e1.3. Vedere la segnatura ricostruita
La sorta u è il simbolo che indica l'universo del discorso (su LPL detto anche domain of discourse), ovvero l'insieme di individui/oggetti di cui si parla e su cui si quantifica. Nel caso di linguaggi del primo ordine monosortati la sorta u potrebbe essere lasciata sottintesa, essendo l'unica possibile. Siccome il sistema consente l'uso di linguaggi multisortati, ovvero con oggetti di diverse sorte (o tipi), si richiede di inserire sempre le sorte usate, che devono comprendere sempre almeno l'universo u.

2. Creare l'interpretazione richiesta

La prima cosa da fare per creare un'interpretazione è stabilire l'universo del discorso. Visto che non possiamo "inserire fisicamente" nel computer gli oggetti del dominio, li "inseriamo" mediante dei nomi interni con cui indicare in modo biunivoco gli oggetti reali. Stabilito l'universo, su di esso interpreteremo i simboli di costante, funzione e predicato della segnatura.

Per immettere un'interpretazione si usa il foglio INTERPRETAZIONE. Per acquisire familiarità con la sintassi delle interpretazioni, le prime volte conviene partire dalla "bozza d'interpretazione" che può essere caricata sul foglio INTERPRETAZIONE con la voce USA BOZZA d'interpretazione del menù FOGLI. Il sistema chiede di dare un nome ad ogni interpretazione, dal momento che per un stesso foglio di formule si possono avere più interpretazioni. Scegliendo, ad es., il nome i1 si ottiene il salvataggio della bozza con nome i1, come illustrato in figura:

usa bozza >> Nome >> bozza
Fig.e1.5. Usare la bozza di interpetazione
La bozza, il cui universo contiene un unico elemento di nome interno u0, esemplifica la sintassi delle interpretazioni ed è da usare come "brogliaccio". Notate che le N-uple vanno sempre indicate fra parentesi, anche nel caso N=1.

Modificando la bozza (con le usuali operazioni di editing), si può introdurre l'interpretazione desiderata, che nel nostro esempio è:

modifica bozza
Fig.e1.6. Interpretazione desiderata ottenuta modificando la bozza
Ottenuta l'interpretazione desiderata, si controllano e registrano le modifiche fatte usando la voce REGISTRA INTERPRETAZIONE del menù FOGLI.
salva >> nome >> ok
Fig.e1.7. Controllo delle modifiche e registrazione con il nome i1
Si noti che il sistema chiede sempre il nome, proponendo come prima scelta il nome attuale i1; con SALVA confermate tale nome; se lo volete cambiare digitate il nome nuovo e salvate.

3. Valutare la verità delle formule nell'interpretazione creata

Tramite la voce VERITA' del menù VALUTAZIONE si chiede al sistema di valutare la verità delle formule sul foglio FORMULE nella interpretazione mostrata sul foglio INTERPRETAZIONE i1. Si ottiene:

Verità in una intp >> Valutazione
Fig.e1.8. VERITA' nella INTERPRETAZIONE i1
Le formule vere in i1 sono colorate in verde e quelle false in rosso.

Con la voce SPIEGAZIONI del menù VALUTAZIONE si ottiene la visualizzazione delle spiegazioni della verità/falsità di una formula, selezionando una delle formule del foglio. Le spiegazioni vengono elencate su nuovi fogli di spiegazione temporanei. Il sistema inizia con la "Spiegazione 0":

comando spiegazioni >> scelta fbf >> spiegazione0
Fig.e1.9. Spiegazione della verità nella interpretazione i1 della formula f1
La spiegazione "RightOf(rm(a),b) è vera perché ('il cubo piccolo','il tetraedro') appartiene alla intp. di RightOf/2" abbrevia: "RightOf(rm(a),b) è vera in i1 perche' in i1 la coppia di termini (rm(a),b) si valuta in ('il cubo piccolo', 'il tetraedro') e ('il cubo piccolo', 'il tetraedro') appartiene alla intp. di RightOf/2".
Ad ogni spiegazione, il sistema chiede se se ne vogliono vedere altre. Nel nostro esempio, rispondendo "SI" si ottiene:
no more
Fig.e1.10. Non ci sono altre spiegazioni
perché la spiegazione data è l'unica possibile.

Per esercizio si esaminino le spiegazioni della verità della formula f2.

4. Modificare l'interpretazione di a, b in modo da ottenere le altre combinazioni di valori di verità e disegnare i mondi corrispondenti

Costruiamo le interpretazioni richieste modificando 'interpretazione delle costanti in i1.

Esercizio 2.

Dire quali delle seguenti formule sono "verità logiche in in TW" (TW: Tarski's World del libro di testo) ma non valide in FOL, quali sono valide FOL ma non tautologie, quali tautologie.

  1. (¬∃x Tet(x) ∧ (Cube(a) → ∃x Tet(x))) → ¬Cube(a)
  2. ∀x ∀y (x ≠ y → LeftOf(x,y) ∨ LeftOf(y,x) )
  3. ∀x ∀y (¬SameCol(x,y) ↔ LeftOf(x,y) ∨ LeftOf(y,x) )
  4. ∀x ¬(Tet(x) ∨ Cube(x)) → ¬∃x (Tet(x) ∨ Cube(x))

Soluzione Guidata

Analizziamo le formule una per una, diamo una risposta e la verifichiamo.

Risposta per la formula 1

La formula 1 è una tautologia. Spiegazione: la forma vero-funzionale è l'implicazione (¬P ∧ (Q → P)) → ¬Q, con P = '∃x Tet(x)' e Q = 'Cube(a)'; abbiamo quanto segue. a) Se Q è falsa, il conseguente ¬Q è vero, per cui l'implicazione è vera. b) Se P è vera, allora ¬P è falsa, per cui l'antecedente dell'implicazione è falso e l'implicazione è vera. c) Se non siamo nei casi a),b), Q è vera e P falsa, da cui (Q → P) è falsa; quindi l'antecedente dell'implicazione è falso e l'implicazione è vera. Dunque l'implicazione è vera in tutti i casi possibili, quindi è una tautologia.

Per verificare la risposta, scriviamo la formula e controlliamo che la formula sia sintatticamente corretta:

formula 1
Fig.e2.1. La formula f1
Si osservi che non è possibile usare "1." come etichetta; il sistema richiede etichette che inizino con una lettera, quindi abbiamo usato f1.

Per esercizio si esamini la segnatura ricostruita e si carichi la bozza di interpretazione. Si provi poi ad usare la voce TAUTOLOGIE del menù VALUTAZIONE, scegliendo f1 come formula da valutare, e si noti la risposta ottenuta.

Per mostrare che f1 è una tautologia passiamo alla forma vero-funzionale. Possiamo procedere in due modi.

Risposta per la formula 2

La formula f2 non è una verità logica in TW (e quindi nemmeno in FOL e in TT). Infatti ha un contro-esempio in TW: basta prendere due blocchi diversi sulla stessa colonna.

Per controllare la risposta, disegnamo il contro-esempio (due blocchi diversi sulla stessa colonna) usando Tarski's World e verifichiamo che in tale mondo la formula 2 è falsa.

cex
Fig.e2.10. Contro-esempio in Tarski's World
Tarski's World segna come falsa la formula, dunque il mondo in Fig.e2.10 è un contro-esempio in TW. Un contro-esempio in TW è tale anche in FOL e a livello proposizionale.

L'uso di Tarski's World è molto intuitivo ma non spiega in dettaglio il modo con il quale il sistema è giunto a valutare la formula come falsa. Possiamo farlo usando LOGI e scrivendo la interpretazione corrispondente al mondo disegnato in Fig.e2.10. Abbiamo:

cex >> salvataggio ... >> cex >> ...
Fig.e2.11. Formula 2 in FOL e interpretazione cex corrispondente al contro-esempio in Fig.e2.10
Abbiamo usato u0 come nome interno per il tetraedro e u1 per il cubo. Per replicare nei dettagli il mondo disegnato in Fig.e2.10 abbiamo usato le costanti a, b, i predicati Tet/1, Cube/1 e il predicato LeftOf/2; siccome nella formula compare solo LeftOf, il sistema segnala a, b Tet/1,Cube/1 come simboli non dichiarati (non usati nelle formule), ma accetta comunque l'interpretazione. Usando, al solito, Elenca le spiegazioni, otteniamo la spiegazione che segue:
cex
Fig.e2.12. Spiegazione della falsità di f2 nell'intepretazione contro-esempio cex

Risposta per la formula 3

Non possiamo dimostrare (a) in LOGI; per dimostrarlo formalmente dobbiamo ricorrere a Fitch e usare ANACON; lasciamo questa parte come esercizio non guidato. Per mostrare che la risposta (b) è corretta, scriviamo la formula e il contro-esempio in FOL.

Controesempio f3
Fig.e2.13. Interpretazione cex controesempio in FOL per la formula f3

Ora verifichiamo che si tratti di un contro-esempio, usando Valuta la verità ed Elenca le spiegazioni: l2.logi:

Verifica controesempi >>
Fig.e2.14. Spiegazione della falsità di f3 nella interpreazione contro-esempio cex

Risposta per la formula 4

In LOGI non possiamo verificare (a); dobbiamo usare Fitch (lasciato come esercizio non guidato). Per verificare (b) possiamo procedere in uno dei modi mostrati per la formula 1; lasciamo ciò come esercizio non guidato.

Esercizio 3.

Si consideri l'esercizio 5.19 del libro di testo:

Consider the following sentences.

  1. Folly was Claire's pet at 2 pm or at 2:05 pm.
  2. Folly was Max's pet at 2 pm.
  3. Folly was Claire's pet at 2:05 pm.

Does (3) follow from (1) and (2)? Does (2) follow from (1) and (3)? Does (1) follow from (2) and (3)? In each case, give either a proof of consequence, or describe a situation that makes the premises true and the conclusion false. You may assume that Folly can only be one person's pet at any given time.

Ricordiamo che una formula è conseguenza logica di un insieme di premesse in un dato contesto sse è vera in tutte le circostaze del contesto in cui sono vere le premesse. Per trovare un contro-esempio nel contesto, non basta trovare una interpretazione che renda vere le premesse e falsa la conseguenza, bisogna anche che questa interpretazione rappresenti una circostanza possibile nel contesto.

La frase "You may assume that Folly can only be one person's pet at any given time" stabilisce il contesto in cui valutare il ragionamento, ovvero l'insieme delle circostanze possibili nel contesto considerato, che chiameremo (PETS). In (PETS) non sono possibili circostanze in cui, in un dato istante, un animale appartiene a due persone distinte. Inoltre, anche se ciò non è esplicitamente detto nel testo dell'esercizio, è chiaro che in (PETS) Max e Claire sono due persone distinte, Folly è un animaletto, 2:05 pm e 2 pm sono due istanti temporali distinti.

Esaminiamo l'esercizio a 3 livelli diversi: nel contesto (PETS), nella logica del primo ordine (FOL) e nella logica proposizionale (TAUT). Per rendere l'analisi più rigorosa, ci sganciamo dal lingauggio naturale e traduciamo le frasi in 1,2,3 in formule. Usando il linguaggio introdotto dal libro di testo per i pets, traduciamo "a was b's pet at t pm" con "Owned(b,a,t)". Otteniamo:

  1. Owned(Claire, Folly, 2pm) ∨ Owned(Claire, Folly, 2:05pm)
  2. Owned(Max, Folly, 2pm)
  3. Owned(Claire, Folly, 2:05pm)

Riformuliamo in LOGI le tre domande, sotto forma di conseguenza logica, e le esaminiamo, nell'ordine.

Domanda 1. Does (3) follow from (1) and (2)?

Il ragionamento corrispondente a questa domanda è:

pets1
Fig.e3.1. I ragionamenti corrispondenti alle tre domande

Vi è un contro-esempio in (TAUT). Per verificarlo, dobbiamo passare alla forma vero-funzionale e quindi modificare le formule. Per mantenere sia la versione orginale, sia la forma vero-funzionale, salviamo il ragionamento in due files distinti,che chiameremo ad esempio pets_fol e pets_taut:
pets1 pets1 pets1
pets1 pets1 pets1
Fig.file.1 Salvataggio su due files pets_fol e pets_taut
Ora modifichiamo fol_taut, passiamo alla forma vero-funzionale mettendo fra apici le atomiche e usiamo CONSEGUENZA TAUTOLOGICA del menù VALUTAZIONE
pets1_1
Fig.e3.2. Forma vero-funzionale e uso di CONSEGUENZA TAUTOLOGICA del menù VALUTAZIONE
Il sistema genera in automatico l'interpretazione ControEs.gen, che è un contro-esempio che dimostra che f3 non è conseguenza tautologica di f1, f2.
pets1_3 pets1_4
Fig.e3.3. Generazione di un contro-esempio ControEs.gen
La colorazione in rosso della parola chiave CONSEGUENZA indica che si tratta di un contro-esempio. Generato il contro-esempio, il sistema chiede se si vogliono passare in rassegna tutte le interpretazioni booleane.

Rispondendo SI il sistema genera la interpretazione Bool0.gen e valuta in essa il ragionamento, colorando le tre formule in rosso, dal momento che sono false in Bool0.gen, e la parola chiave CONSEGUENZA in verde, dal momento che le premesse sono false in Bool0.gen e quindi il ragionamento è corretto (da premesse false segue qualsiasi cosa). Poi il sistema chiede se si vuol proseguire con altre interpretazioni.

pets1_5 ... ...
Fig.e3.4. Generazione delle 8 interpretazioni booleane
Rispondendo sempre SI si ottengono tutte e 8 le interpretazioni booleane, che vengono salvate e possono essere ri-esaminate scegliendole con la voce Scegli un'interpretazione del menù FOGLI:
pets1_6
Fig.e3.5. Scelta di una delle interpretazioni generate
Il suffisso ".gen" indica che si tratta di interpretazioni generate in automatico. Le riportiamo qui sotto assieme alla valutazione in esse del ragionamento:
pets1_b0 pets1_b1 pets1_b2 pets1_b3 pets1_b4 pets1_b5 pets1_b6 pets1_b7
Fig.e3.6. Valutazione del ragionamento nelle 8 interpretazioni Booleane
La parola chiave CONSEGUENZA è colorata in rosso solo nella interpretazione Bool5.gen, che quindi è l'unico contro-esempio in (TAUT).

Passiamo ora a (FOL). Per recuperare le formule originali che avevamo salvato nel file pets_fol, lo riapriamo:

pets1 pets1 pets1
Fig.file.2 Viene riaperto il file pets_fol
Ora procediamo in FOL. Siccome l'unico contro-esempio proposizionale è Bool5.gen, un contro-esempio in (FOL) deve essere una interpretazione del primo ordine che porti agli stessi valori di verità, cioè che renda Owned(Max, Folly, pm_2) vero, Owned(Claire, Folly, pm_2_05) falso, Owned(Claire, Folly, pm_2) vero. Un'interpreazione siffatta è la seguente:
pets1_fol_cex_1
Fig.e3.7. Interpretazione del primo ordine corrispondente a Bool5.gen
Valutiamo il ragionamento in questa interpretazione usando VERITA' del menù VALUTAZIONE
pets1_fol_cex_2
Fig.e3.8. intp_corrispondente_a_Boole5 è un contro-esempio in (FOL)
Otteniamo che si tratta di un contro-esempio in (FOL), per cui il ragionamento non è valido in (FOL).

Infine consideriamo il contesto (PETS). L'interpretazione intp_corrispondente_a_Boole5 non rappresenta una circostanza possibile nel contesto, in quanto nell'istante t1 abbiamo che pet appartiene contemporaneamente a due persone distinte, persona1 e persona2. Comunque si vadano a interpretare Claire, Max come due persone distinte e Folly come un animaletto come previsto nel conteto(PETS), non è possibile rendere conemporaneamente veri Owned(Max, Folly, pm_2) e Owned(Claire, Folly, pm_2) senza violare l'assunzione che un animaletto NON possa appartenere contemporante a due persone diverse. Siccome l'unico modo per ottenere un controesempio è rendere veri Owned(Max, Folly, pm_2) e Owned(Claire, Folly, pm_2) e Owned(Claire, Folly, pm_2_05) falso, non è possibile trovare contro-esempi in (PETS). Dunque in (PETS) f3 segue logicamente da f1 e f2.

Domanda 2.Does (2) follow from (1) and (3)?

Il ragionamento corrispondente a questa domanda è:
pets2
Fig.e3.9. Il ragionamento corrispondente alla domanda 2
In questo caso possiamo trovare direttamente un contro-esempio nel contesto (PETS). Essendo un contro-esempio in un contesto specifico, lo è anche in (FOL) e in (TAUT).

Per avere un contro-esempio in (PETS) cerchiamo una circostanza possibile in (PETS) in cui Owned(Max, Folly, pm_2) è falso (per cui la conseguenza f2 è falsa) e Owned(Claire, Folly, pm_2_05) è vero (per cui le premesse (1) e (3) sono vere). Siccome vogliamo una interpretazione che rappresenti una circostanza del contesto, prendiamo come nomi interni claire e max per indicare proprio le due persone di nome Claire e Max, folly per indicare il gatto di Claire che si chiama Folly e '2:00' e '2:05' per indicare i due istanti temporali considerati; supponiamo che nell'intervallo di tempo considerato Claire non venda o acquisti gatti, per cui folly le appartiene sia alle '2:00', sia alle '2:05'. Ovviamente folly non appartiene a Max. Tale interpretazione è l'interpretazione cex_domanda2 riportata in figura:

pets2_1
Fig.e3.10. Un contro-esemio in (PETS)

Valutiamo il contro-esempio con il comando valuta la verità del menù VALUTAZIONE. Otteniamo che si tratta di un contro-esempio in (FOL):

pets2_2
Fig.e3.11. Valutazione del contro-esempio in (FOL) con il comando valuta la verità
Che si tratti anche di un contro-esempio in (PETS) segue dal fatto che l'interpretazione cex_domanda2 è stata costruita come una circostanza possibile nel contesto.

Domanda 3. Does (1) follow from (2) and (3)?

Il ragionamento corrispondente a questa domanda è:
pets3
Fig.e3.12. Il ragionamento corrispondente alla domanda 3
Si osservi che f1 segue per introduzione di or da f3, quindi f1 è conseguenza tautologica delle premesse (basterebbe la sola premessa f3). Volendo, possiamo verificarlo con LOGI usando la forma vero-funzionale e il comando CONSEGUENZA TAUTOLOGICA del menù VALUTAZIONE, come già fatto in precedenza. Lasciato come esercizio non guidato.

La directory di lavoro

Nell'esercizio precedente abbiamo salvato due files. I files vengono salvati e cercati nella directory di lavoro. L'installazione assume come directory di lavoro di default la directory in cui viene lanciata l'applicazione.

Si può vedere qual'è la directory di lavoro attualmente in uso con Vedi directory di lavoro attuale del menù EDIT:

dir_1 dir_2
Fig.dir.1. Vedere ladirectory di lavoro corrente
E' possibile cambiare la directory di lavoro o crearne una nuova con Cambia directory di lavoro. Ad esempio, è possibile creare una nuova directory di lavoro di nome Esercizi con i passaggi illustrati in figura:
dir_3 dir_4
.. scrivo il nome Esempi e click so OK
dir_5 dir_6
Fig.dir.2. Creazione di una nuova directory di lavoro Esempi

Ora la directory di lavoro è Esempi e LOGI crea o apre files in essa.