Una logica è una famiglia di linguaggi formali per rappresentare informazioni e derivare conseguenze.

Ogni logica è definita da:

  • sintassi ⟶ considera il linguaggio come l’insieme delle sequenze finite di simboli ammesse dal linguaggio (formule), dove ogni simbolo appartiene ad un insieme prefissato (alfabeto)
    • definisce quindi la struttura delle formule
  • semantica ⟶ definisce il significato di ogni formula della logica, ovvero la sua verità nei diversi mondi possibili

modello

Dato un mondo e una formula , si ha è vera nel mondo .

In questo caso, si dice modello di

(concetto di conseguenza logica)

  • (conseguenza logica: significa che, in ogni interpretazione in cui tutte le formule di sono vere, anche è vera)

FOL: Logica di Primo Ordine

alfabeto

L’alfabeto della logica di primo ordine è composto da:

  • un insieme di variabili
  • un insieme di simboli di funzione, ognuno associato al suo numero di argomenti, detto arità
    • i simboli di funzione di arità 0 sono detti simboli di costante
    • (essenzialmente) i simboli di funzione ritornano valori che possono essere oggetti del dominio

esempi

  • è un simbolo di costante che rappresenta il numero naturale 0
  • è il numero naturale
  • è il padre dell’individuo
  • un insieme di simboli di predicato, ognuno associato al suo numero di argomenti, detto arità
    • i simboli di predicato di arità 0 vengono denominati lettere proposizionali (richiamo alla logica proposizonale)
    • (essenzialmente) i simboli di predicato assumono un valore di verità in base all’interpretazione

esempi

  • : il numero naturale è il doppio del numero naturale
  • : l’individuo è un uomo
  • i connettivi logici
  • i quantificatori (quantificatore universale e quantificatore esistenziale)
  • i simboli speciali: parentesi ”(”, ”)” e virgola ”,”

assunzioni/convenzioni

  • si assume che contenga il predicato di arità 2 "" (uguaglianza)
  • per riferirsi a un simbolo di funzione o di predicato di arità , si scrive e

termini e formule

A partire dall’alfabeto, si può definire il linguaggio della logica di primo ordine. La sua definizione induttiva deve essere effettuata in due passi:

  • si definisce un linguaggio intermedio dei termini
  • si definisce il linguaggio delle formule utilizzando il linguaggio dei termini

termini

L’insieme dei termini è definito induttivamente così:

  • 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.

esempi , e sia

questi sono termini:

formule

L’insieme delle formule è definito induttivamente come segue:

  • se è un simbolo di predicato di arità e sono termini, allora è una formula (detta “atomica”).

  • se e sono formule, lo sono anche

  • se è una formula e è una variabile, allora anche e sono formule

esempi e e

queste sono formule:

semantica

nella logica proposizionale

La semantica della logica proposizionale è formata da formule atomiche date dalle lettere proposizionali, un’interpretazione che assegna un valore di verità ad ogni lettera proposizionale, e una funzione di valutazione predefinita che calcola la verità di una formula rispetto a un’interpretazione delle sue lettere.

Senza fare riferimento a particolari interpretazioni, si può estendere il significato di ogni formula proposizionale categorizzandola come:

  • soddisfacibile ⟶ esiste una interpretazione che è suo modello
  • valida ⟶ ogni interpretazione è suo modello
  • insoddisfacibile ⟶ nessuna interpretazione è suo modello

Nella logica di primo ordine, si segue lo stesso itinerario concettuale:

  1. si definisce la nozione di interpretazione (valutazione delle formule atomiche)
  2. si definisce come viene valutata una formula data una particolare interpretazione
  3. si stabilisce il significato di ogni formula senza riferimento a particolari interpretazioni

Poiché ci sono due livelli sintattici (termini e formule), ci sono due nozioni di valutazione:

  • la valutazione dei termini
    • formata da valutazione dei termini atomici - pre-interpretazione (valutazione dei simboli di funzione) e assegnamento di variabili (valutazione delle variabili) - e valutazione dei termini “complessi” a partire da quelli atomici
  • la valutazione delle formule
    • formata dall’interpretazione delle formule atomiche e dalla valutazione delle formule “complesse” a partire da quelle atomiche

interpretazione

FOL e UML

  • simboli di predicato sono definiti dai nomi dei moduli e costrutti dell’UML

  • le funzioni sono definite dalle operazioni necessarie per operare sui valori dei domini

  • ogni classe definisce il simbolo di predicto unario C/1 ⟶ le istanze di C hanno

  • ogni dominio definisce il simbolo dom/1(es. Intero/1 true se intero)

    • ogni dominio specializzato definisce due simboli:
    • dom e dom_spec
    • es. Intero/1 e Intero>=0/1 (devono essere entrambi veri)\
    • ogni dominio composto definisce:
    • un simbolo unario dom/1
    • un simbolo di predicato unario per ogni dominio di ogni campo
    • un simbolo di predicato binario per ogni campo
  • ogni attributo di una classe definisce il simbolo binario attr/2 in cui i valori dell’attributo attr per l’istanza c di C sono rappresentati dagli elementi tali che

  • ogni associazione tra C1 e C2 definisce il simbolo binario assoc/2 le coppie (ruolo1: c1, ruolo2: c2) del dominio tali che

    • ORDINE DEGLI ARGOMENTI DEFINITO DALL’ORDINE LESSICOGRAFICO DEI NOMI DEI RUOLI
  • ogni attributo di una associazione definisce il simbolo di predicato ternario attr/3 (c1, c2, v) = true se v valore…

  • ogni operazione avente n argomenti definisce un simbolo di predicato (n+2)-ario (classe, argomenti…, valore di ritorno)

    • nel caso dell’overloading, in logica dobbiamo cambiare il nome di una delle due operazioni (es. op_classe1 e op_classe2)

Estendiamo la logica con

  • relazioni matematiche
  • somme tra date