Introduzione
Per logica intendiamo un linguaggio formale usato per rappresentare informazioni e derivare conseguenze.
Ogni logica è definita da una sintassi e una semantica
- Sintassi - È l’insieme delle sequenze finite di simboli ammesse dal linguaggio ovvero le formule, ogni simbolo usato nelle formule appartiene ad un insieme cioè l’alfabeto.
- Semantica - Definisce il significato di ogni formula della logica, ovvero la sua verità in diversi mondi possibili.
Esempio - Il linguaggio dell’aritmetica
Sintassi:
- è una formula ma non lo è
Semantica:
- è vero se il valore di non è minore del valore di
- è vero in un mondo dove e
- è falso in un mondo dove e
Dato mondo e la formula se è vera nel mondo si dice che è modello di
Sintassi - in breve
La sintassi definisce la struttura delle formule, per definire la sintassi dobbiamo stabilire:
- Quali simboli appartengono all’alfabeto della logica
- Quali sequenze finite di simboli compongono il linguaggio (formule)
La sintassi definisce soltanto quali sono le formule ma non il loro significato.
Semantica - in breve
Definisci il significato delle formule ovvero la sua verità nei diversi mondi. In ogni mondo possibile una formula può essere vera o falsa.
Di solito si dà significato alle formule più semplici, quelle atomiche ovvero che non possono essere ridotte ulteriormente e poi usando le regole della logica si stabilisce un significato alla altre formule.
È quindi simile alla valutazione di un’espressione algebrica.
Sintassi
L’alfabeto della FOL è dato da:
- Un insieme di variabili
- Un insieme di simboli di funzione, a ciascuno di questi è associato un numero di argomenti detto arità
- Un insieme di simboli di predicato, anche loro hanno associato un numero di argomenti detto arità
- Connettivi logici
- Quantificatori rispettivamente quantificatore universale e esistenziale
- Simboli speciali
(
,)
e,
Omettiamo di inserire ogni volta il simbolo
=
nei predicati
-
Quando ci riferiamo ad un simbolo di funzione o predicato di arità lo indichiamo con o
-
Se un simbolo di funzione ha arità zero viene detto simbolo di costante
-
Se un simbolo di predicato ha arità zero viene detto lettera preposizionale
In generale possiamo intendere i simboli di funzione come degli “oggetti” del mondo (dominio) e i predicati come delle funzioni che ci restituiscono True o False
Nei seguenti esempi diamo significato ad alcuni predicati e funzioni ma vedremo meglio avanti cosa significa.
Esempi - simboli funzione
- zero/0 è un simbolo di costante che usiamo per indicare il numero naturale 0
- succ/1, vuole un argomento quindi ad esempio succ(X) indicherà il numero X + 1
- socrate/0 è un simbolo di costante, l’individuo “Socrate”
- padre/1 prende un argomento X e restituisce il suo padre. padre(X)
Esempi - simboli di predicato
- doppio/2, lo usiamo con doppio(X, Y) e ritorna true se il numero naturale Y è il doppio del numero naturale X
- somma/3. somma(X, Y, Z) e ritorna True se il numero naturale Z è la somma dei numeri naturale X e Y.
- uomo/1. uomo(X) ritorna True se l’individuo X è un uomo
- mortale/1. mortale(X) ritorna True se l’individuo X è mortale
Formule
Grazie all’alfabeto adesso siamo in grado di definire il linguaggio della FOL, ci servono due step:
- Definire un linguaggio intermedio chiamato linguaggio dei termini
- Definire il linguaggio delle formule ovvero quello della FOL utilizzando quello dei termini
Essenzialmente utilizziamo quello delle formule su una formula e se questa è complessa useremo quello dei termini sui suoi termini, in modo induttivo.
Termini
L’insieme dei termini è definito come segue:
- Ogni variabile in è un termine
- Ogni simbolo di costante in è un termine
- Se è un simbolo di funzione di arità e sono termini, allora anche è un termine
Esempio
Abbiamo e le variabili MiaVariabile, X
. I seguenti simboli sono termini:
- zero
- MiaVariabile
- succ(zero)
- padre(padre(socrate))
- padre(succ(X))
- succ(succ(zero))
Formule
L’insieme delle formule è definito in modo induttivo usando quello dei termini:
- Se è un simbolo di predicato di arità e sono termini allora è una formula, detta formula atomica
- Se sono formule allora lo sono anche
- …
- Se è una formula e X una variabile allora sono formule anche:
Per il predicato di uguaglianza non scriveremo ma
Esempi di formule
Siano:
Le seguenti sequenze di simboli sono formule:
- doppio(succ(succ(zero)), X)
- doppio(succ(succ(zero)), X)
- somma(succ(zero), zero, succ(zero))
Mentre non sono formule:
- succ(zero)
- mortale(mortale(socrate))
- padre(mortale(X))
- padre(X)
Semantica
Per costruire la semantica dobbiamo:
- Definire la nozione di intepretazione ovvero la valutazione delle formule atomiche
- Definire come viene valutata una formula, data una particolare interpretazione
- Stabilire il significato di ogni formula senza riferimento a particolari intepretazioni
Siccome nel nostro linguaggio abbiamo sia termini che formule distinguiamo la valutazione in livello dei termini e livello delle formule. Ci servono quindi due nozioni di valutazione:
- Valutazione dei termini
- Valutazione dei termini atomici divisa in
- Pre Interpretazione che usiamo per valutare i simboli di funzione
- Assegnamento di variabili usata per valutare le variabili
- Valutazione di Funzioni complesse, si usa in modo induttivo la valutazione dei termini
- Valutazione dei termini atomici divisa in
- Valutazione delle formule
- Si valutano le formule atomiche tramite un’interpretazione
- Si valutazione le formule complesse in modo induttivo usando la valutazione di quelle atomiche
Esempio
Siano:
Vogliamo valutare la formula:
Eseguiamo l’interpretazione in modo non formale tramite un esempio, dopo con la valutazione si rivedono queste cose ma in modo formale
Dobbiamo definire, per quanto riguarda i termini:
- Un insieme di oggetti del mondo (dominio)
- Una corrispondenza dai simboli di funzione a funzioni su di opportuna arità
- socrate/0 che è un simbolo di costante è una funzione infatti non prende argomenti () e restituisce un elemento del dominio (socrate)
- padre/1 che è un simbolo di funzione 1-aria è una funzione dato che prende come argomento un elemento del dominio e restituisce sempre un elemento del dominio.
- Una corrispondenza dalle variabili a elementi di , associare quindi ad ogni variabile un elemento
Quindi una possibile interpretazione a livello dei termini è la seguente:
Per quanto riguarda il livello delle formule:
- Ci serve una corrispondenza dai simboli di predicato a relazioni su di opportuna arità
- uomo/1 è una relazione 1-aria su , è infatti un sottoinsieme del dominio che soddisfa determinate regole (in questo caso essere un uomo)
Una possibile interpretazione è la seguente:
Quindi riassumendo entrambi i livelli, otteniamo:
Adesso è possibili eseguire la valutazione
Valutazione dei Termini
Prima abbiamo detto che ci server la preinterpretazione per valutare i termini. Definiamola in modo formale e non con un esempio come prima.
Dobbiamo definire:
- Un insieme non vuoto ovvero il dominio di interpretazione che può essere sia finito che non
- Una corrispondenza che associa ad ogni simbolo di funzione di arità una funzione del tipo: che denotiamo con
preI(f)
. Se il simbolo di costante ha arità 0 allora la funzione associa al simbolo di costante un elemento di D
Diamo quindi una preinterpretazione preNAT
per come segue:
- Per dominio prendiamo l’insieme dei numeri interi non negativi
- è la funzione definita come:
- preNAT(succ)(0)=1
- preNAT(succ)(1)=2
- …
- preNAT associa quindi al simbolo unario succ/1 una funzione del tipo e quindi per noi codifica la funzione “successore” sugli interi non negativi
Passiamo poi all’assegnamento delle variabili.
Sia un insieme di variabili e sia preI
una preinterpretazione con dominio , un assegmanto delle variabili per preI
è una funzione che associa ad ogni variabile un elemento del dominio di intepretazione di preI
Esempio
Sia , consideriamo la preinterpreazione preNAT
in cui il dominio è l’insieme degli interi non negativi, definiamo la funzione tale che:
-
Questa funzione è il nostro assegmanto delle variabili per
preNAT
Adesso che abbiamo definito la preintepreazione dei termini e l’assegnamento delle variabili, possiamo valutare i termini.
Definizione - Dati e sia l’insieme di tutti i termini che possono essere generati da e e dati una pre interpretazione preI
sul dominio e un assegnamento di variabili per preI
, la funzione:
è definita in modo induttivo seguendo la struttura dei termini:
- Se troviamo un termine atomico (caso base) abbiamo due opzioni:
- Se è una variabile allora
- Se è un simbolo di costante allora
- Se troviamo un termine complesso allora siamo nel caso induttivo
- Se è un simbolo di funzione di arità e sono termini allora:
Esempio
- Usiamo la preinterpretazione vista prima
preNAT
e l’assegnazione delle variabili :
L’insieme dei termini che possiamo generare è:
Valutazione la seguente formule:
Valutazione delle Formule
Per valutare le formule ci serve un’interpretazione I che è costituita da:
- Una preinterpretazione
preI
che a sua volta definisce un dominio e una funzione su per ogni simbolo di funzione - Una funzione che associa ad ogni simbolo di predicato p/n una relazione su :
Quindi ad esempio questa funzione deve assegnare al simbolo di = la relazione , ovvero tutte le coppie di elementi del dominio uguali fra loro.
Esempio
Siano , definiamo l’interpretazione NAT in questo modo:
- Utilizza la preinterpretazione preNAT vista prima per le funzioni
- NAT(doppio) =
- NAT(somma) =
Quindi avendo un’interpretazione e un assegnamento di variabili per la preinterpretazione possiamo definire la valutazione delle formule:
Definizione - Siano dati e sia l’insieme di tutte le formule che possono essere generate da .
Sia una interpretazione su che include una preinterpretazione preI su .
Sia un assegnamento alle variabili per preI.
Definiamo la funzione:
Nel seguente modo, sempre per induzione:
- Se troviamo una formula atomica siamo nel caso base
- Se p/n è un simbolo di predicato e sono termini allora
- Se troviamo una formula complessa allora siamo nel caso induttivo
È praticamente la logica proposizionale
Quando scriviamo
S[X/d]
indichiamo che “sovrascriviamo” l’assegnamento delle variabili S e all’interno di X inseriamo d
Esempio
Utilizzando sempre la preinterpretazione preNAT su:
Utilizziamo l’assegnamento sulle variabili , definito come segue:
Quanto vale la formula
Altri Esempi
Quando troviamo dei quantificatori abbiamo delle situazioni simili
- Una formula si dice soddisfacibile se esiste un’interpretazione e un assegnamento di variabili tale che
- Una formula si dice insoddisfacibile se per ogni interpretazione e assegnamento di variabili si ha che
- Una formula si dice valida se per ogni interpretazione e assegnamento di variabili si ha che
Nelle formule chiuse ovvero dove le variabili sono quantificate, l’assegnamento non gioca alcun ruolo, inoltre per queste formule chiuse abbiamo che:
- Un’interpretazione M per cui , per ogni assegnamento S si dice modello di .
Regole di Precedenza
Nella FOL usiamo le seguenti regole di precedenza:
Ambiguità dei quantificatori
La presenza di più quantificatori che quantificano variabili omonime può creare ambiguità, ad esempio:
- A quale quantificatore fa riferimento la X in mortale(X)
- A quale quantificatore fa riferimento la X in X = padre(socrate)
Il nome di una variabile quantificata in realtà non gioca alcun ruolo, funzionano come i parametri dei linguaggi di programmazione, questo significa che la formula può essere riscritta evitando ambiguità ma stando comunque attenti alle intenzioni del progettista.
Ad esempio possiamo scrivere le seguenti formule, che sono comunque non equivalenti fra loro:
Oppure invece di riscriverla possiamo usare delle parentesi per cancellare le ambiguità: