Corso di Logica Computazionale Laurea Magistrale in Informatica Anno Accademico 2011/12 Docente: Marianna Nicolosi Asmundo 1 Logica Computazionale La parola “logica” viene dal greco λóγoς che significa discorso La logica è dunque la scienza del discorso, definita come lo studio dei principi del ragionamento. Aristotele, che può dirsi il padre della logica, la considerava una scienza “formale”: • non si occupa del contenuto • si occupa della forma 2 Logica Computazionale La logica costruisce modelli di oggetti o situazioni del mondo reale allo scopo di ragionare su questi ultimi. I modelli sono astrazioni della realtà in cui solo alcune caratteristiche vengono rappresentate mentre altre, considerate irrilevanti, vengono ignorate Essere in grado di esprimere la conoscenza rispetto ad un dominio richiede non soltanto la modellazione, ma anche il ragionamento. Esempi: • Basi di conoscenza, logiche descrittive • Programmi, logiche temporali 3 Esempio Woman Man Mother Father Parent Grandmother MotherwithManyChildren MotherwithoutDaughter ≡ ≡ ≡ ≡ ≡ ≡ ≡ ≡ Person ⊓ Female ¬ Woman Woman ⊓ ∃hasChild. Person Man ⊓ ∃hasChild. Person Father ⊔ Mother Mother ⊓ ∃hasChild. Parent Mother ⊓ ≥ 3hasChild Mother ⊓ ∀hasChild.¬ Woman 4 Logica Computazionale Insieme alla parola “logica” abbiamo l’attributo “computazionale”. Cosa si può calcolare? Quali problemi sono risolvibili meccanicamente? Esiste un procedimento effettivo per stabilire se una proposizione è conseguenza o no di altre? L’ambito è molto vasto. Esistono diverse logiche (modali, descrittive,...) applicabili per ragionare in svariati contesti. Dedicheremo la prima parte del corso alla logica classica e ai principali strumenti di ragionamenti di cui è dotata 5 Logica classica del primo ordine E’ fra le logiche più usate e studiate Su di essa sono modellate svariate teorie matematiche (es. teoria dell’uguaglianza, delle liste, degli array) E’ la piattaforma comune di diverse logiche non-classiche (es. logiche modali proposizionali) E’ fornita di svariate procedure di dimostrazione dotate a loro volta di euristiche che le rendono adatte per l’automazione La logica classica viene usata per ragionare su asserzioni 6 Verità e dimostrazione In particolare ci interessa studiare la verità delle asserzioni. Ma come possiamo noi esseri umani sapere cosa è vero? Per questo abbiamo un dispositivo chiamato dimostrazione Sono state sviluppate molte procedure meccaniche per la dimostrazione formale: sistemi assiomatici, deduzione naturale, tableaux e risoluzione Bisogna stabilire la connessione fra queste procedure di dimostrazione e la verità (correttezza e completezza) 7 Induzione • Definizione induttiva di insiemi e funzioni • Dimostrazione di proprietà di insiemi definiti induttivamente • Gli insiemi definiti per induzione ricevono una struttura utile per la definizione di funzioni e per la dimostrazione di proprietà di questi insiemi • Le tecniche induttive sono alla base dei procedimenti di definizione e dimostrazione che vedremo durante il corso. 8 Principio di induzione sui numeri naturali Formulazione I Per dimostrare che una proprietà P vale per tutti i numeri n ∈ Nat è sufficiente mostrare che a. CASO BASE: P vale per 0 b. PASSO INDUTTIVO: Se P vale per un numero n ∈ Nat allora P vale anche per n + 1 Questa formulazione è maggiormente connessa al fatto che i numeri naturali possono essere costruiti iniziando con il numero 0 e aggiungendo ripetutamente un’unità 9 Principio di induzione sui numeri naturali (ctnd.) Formulazione II (induzione forte) Per dimostrare che una proprietà P vale per tutti i numeri n ∈ Nat è sufficiente mostrare che a. CASO BASE: P vale per 0 b. PASSO INDUTTIVO: Se n ∈ Nat e P vale per tutti gli m ∈ Nat tali che m < n, allora P vale anche per n Questa formulazione ha più a che fare con l’ordinamento dei numeri naturali. Può essere più conveniente della prima formulazione nel caso di dimostrazioni in cui ci viene più comodo dimostrare il passo induttivo (b) con numeri più piccoli del predecessore del numero in questione 10 Definizione induttiva di insiemi Sia U un insieme detto universo, B ⊆ U un insieme detto insieme base Sia K un insieme di relazioni r ⊆ U n × U (dove n ≥ 1 dipende da r) detto insieme dei costruttori Un insieme A ⊆ U viene detto definito induttivamente (o ricorsivamente) da B e K, quando A è il più piccolo (rispetto all’inclusione insiemistica) di tutti i sottoinsiemi S di U per cui valgono le seguenti due condizioni: a. B ⊆ S b. r(S n) ⊆ S per tutti gli r ∈ K cioé se a1, . . . , an ∈ S e ((a1, . . . , an), a) ∈ r allora a ∈ S 11 Definizione costruttiva di un insieme definito per induzione Sia U un insieme detto universo, B ⊆ U un insieme detto insieme base Sia K un insieme di relazioni r ⊆ U n × U (dove n ≥ 1 dipende da r) detto insieme dei costruttori Una sequenza u1, . . . , um (m ≥ 1) di elementi di U con um = u viene detta una sequenza di costruzione per u (da B e K) quando per ogni i = 1, . . . , m, accade che o a. ui ∈ B, oppure b. esiste un costruttore r ⊆ U n × U , r ∈ K e i1, . . . , in < i tali che ((ui1 , . . . , uin ), ui) ∈ r 12 Definizione costruttiva di un insieme definito per induzione (ctnd.) Ā viene detto definito induttivamente da B e da K quando Ā è costituito da tutti quegli elementi u ∈ U , per cui esiste una sequenza di costruzione da B e da K Di particolare interesse è il caso in cui questo processo di costruzione descrive in modo non ambiguo come ottenere un elemento dell’insieme 13 Definizione induttiva libera La definizione induttiva di un insieme mediante un insieme base B ed un insieme di costruttori K viene detta libera se per ogni elemento a ∈ A, accade che o • a ∈ B, oppure • c’è soltanto un costruttore r ∈ K, e solo una n-tupla di elementi a1, . . . , an ∈ A tali che ((a1, . . . , an), a) ∈ r 14 Principio di induzione strutturale Sia A ⊆ U definito induttivamente mediante l’insieme base B e l’insieme dei costruttori K. Per dimostrare che una proprietà P vale per tutti gli a ∈ A è sufficiente notare che a) CASO BASE: P vale per tutti gli a ∈ B b) PASSO INDUTTIVO: Se P vale per a1, . . . , an ∈ A (ipotesi induttiva) e ((a1, . . . , an), a) ∈ r per qualche r ∈ K, allora P vale anche per a 15 Principio di induzione strutturale (ctnd 2.) Una dimostrazione per induzione strutturale può essere sempre sostituita con una dimostrazione per induzione sui naturali Il “trucco” è cambiare la dimostrazione in modo che essa diventi per induzione sulla profondità degli elementi Quando l’insieme A viene definito induttivamente dall’insieme base B e dall’insieme dei costruttori K, esiste almeno una sequenza di costruzione per ogni a ∈ A d (a) = min{m ∈ Nat|u1, . . . , um è una sequenza di costruzione di a} − 1 16 Principio di induzione strutturale (ctnd 3.) Sia P una proprietà e definiamo Q come “P vale per tutti gli a ∈ A di profondità d (a) = n” Le due asserzioni “P vale per tutti gli a ∈ A ” e “Q vale per tutti gli n ∈ Nat sono equivalenti 17 Principio di induzione strutturale (ctnd 4.) Una dimostrazione per induzione strutturale di P può essere tradotta in una dimostrazione di Q fatta per induzione sui naturali • d (a) = 0 se e solo se a ∈ B • d (a) > d (ai), i = 1, . . . , n quando ((a1, . . . , an), a) ∈ r per qualche r ∈ K NOTA: l’induzione strutturale non è più potente dell’induzione su Nat. 18 Definizione di funzioni per induzione Sia A ⊆ U definito induttivamente dalla base B e dall’insieme di costruttori K. Sia V un insieme arbitrario. Associamo • ad ogni elemento a ∈ B un elemento h(a) ∈ V • ad ogni costruttore r ⊆ U n × U ∈ K, (n ≥ 1), una funzione h(r) : V n → V 19 Definizione di funzioni per induzione (ctnd.) Una definizione induttiva di una funzione g : A → V viene data da a) g(a) = h(a) per ogni elemento a ∈ B b) g(a) = h(r)(g(a1), . . . , g(an)) cioé (a, h(r)(b1, . . . , bn)) ∈ g se (a1, b1), . . . , (an, bn) ∈ g per tutti gli r ⊆ U n × U , e a1, . . . , an ∈ A con ((a1, . . . , an), a) ∈ r Questa definizione è consistente solo se ad ogni a ∈ A viene assegnato esattamente un valore mediante a) oppure b) (cioé se g è una funzione) Se questa condizione viene soddisfatta diciamo che g è ben definita 20 Definizione di funzioni per induzione (ctnd 1.) Teorema di ricorsione Se la definizione induttiva di un insieme A mediante l’insieme base B e l’insieme dei costruttori K è libera, allora la funzione g : A → V definita induttivamente come nella definizione precedente è ben definita 21 Una semplificazione della teoria delle liste Costruzione induttiva dei termini che rappresentano le liste: • B = {singoli elementi di lista senza struttura interna} • K = {cons} Per ragionare sulle liste dobbiamo introdurre dei predicati: • atom, predicato unario • = (uguaglianza), predicato binario 22 Una semplificazione della teoria delle liste Assiomi: 1. assiomi di riflessività, simmetria e transitività della teoria dell’uguaglianza 2. istanziazione dello schema d’assioma di congruenza (di funzione) per cons: (∀x1, x2, y1, y2)((x1 = x2 ∧ y1 = y2) ⊃ (cons(x1, y1) = cons(x2, y2))) 3. istanziazione dello schema d’assioma di congruenza (di predicato) per atom: (∀x, y)((x = y) ⊃ (atom(x) ≡ atom(y))) 4. (∀x, y)(¬atom(cons(x, y))) 23 Dimostrazione per induzione Il principio di induzione per la teoria considerata è definito secondo lo schema ((∀u)(atom(u) ⊃ F [u])∧(∀u, v)(F [v] ⊃ F [cons(u, v)])) ⊃ (∀x)F [x] Quindi, per dimostrare che F [x] è valida (nella teoria considerata) per tutte le liste x, basta quanto segue: • Per il caso base, provare che F [u] è valida per un atomo arbitrario u • Per il passo induttivo, assumendo come ipotesi induttiva che per qualche lista arbitraria v, F [v] è valida, provare che anche F [cons(u, v)] è valida, per qualche lista arbitraria u 24 Esempio di dimostrazione Si aumenti la teoria con i seguenti nuovi assiomi: 1. (∀atom u)(∀v)(concat(u, v) = cons(u, v)) (concat. atomo) 2. (∀u, v, x)(concat(cons(u, v), x) = cons(u, concat(v, x))) (concat. lista) 3. (∀atom u)(rvs(u) = u) (inversione atomo) 4. (∀x, y)(rvs(concat(x, y)) = concat(rvs(y), rvs(x))) (inversione lista) 5. (∀atom u)(flat(u) = u) (atomo flat) 6. (∀u, v)(flat (cons(u, v)) ≡ (atom(u) ∧ flat(v))) 25 (lista flat) Esempio di dimostrazione Gli assiomi 1 e 2 definiscono la funzione concat, che concatena due liste. Es: concat(cons(a, b), cons(b, cons(c, d))) = cons(a, cons(b, cons(b, cons(c, d)))) Gli assiomi 3 e 4 definiscono la funzione rvs, che costruisce la lista inversa. Es: rvs(cons(a, cons(b, c))) = cons(c, cons(b, a)) Gli assiomi 5 e 6 definiscono il predicato flat che è vero su una lista se e solo se ogni elemento della lista è un atomo. 26 Esempio di dimostrazione Dimostriamo la validità (nella teoria) della formula: (∀x)(flat(x) ⊃ rvs(rvs(x)) = x) Dimostriamo per induzione strutturale su x che F [x] : flat(x) ⊃ rvs(rvs(x)) = x 27 Esempio di dimostrazione Caso base: Consideriamo un atomo arbitrario u e dimostriamo F [u] : flat(u) ⊃ rvs(rvs(u)) = u rvs(rvs(u)) = u segue da due applicazioni dell’assioma (inversione atomo) 28 Esempio di dimostrazione Passo induttivo: Supponiamo come ipotesi induttiva che per una lista arbitraria v: F [v] : flat(v) ⊃ rvs(rvs(v)) = v vogliamo provare che, per una lista arbitraria u, F [cons(u, v)] : flat(cons(u, v)) ⊃ rvs(rvs(cons(u, v))) = cons(u, v) Consideriamo due casi: atom(u) oppure ¬atom(u) Se ¬atom(u) allora flat(cons(u, v)) ⇔ (atom(u) ∧ flat(v)) ⇔⊥. Quindi in questo caso la tesi vale 29 Esempio di dimostrazione Se atom(u) allora flat(cons(u, v)) ⇔ (atom(u) ∧ flat(v)) ⇔ flat(v). Inoltre rvs(rvs(cons(u, v))) = (concat. atomo) rvs(rvs(concat(u, v))) = (inversione lista) rvs(concat(rvs(v), rvs(u))) = (inversione lista) concat(rvs(rvs(u)), rvs(rvs(v))) = (inversione atomo) concat(u, rvs(rvs(v))) = (ipotesi induttiva, N.B. flat(v) vale) concat(u, v) = (concat. atomo) cons(u, v) 30 Logica proposizionale classica • Studia il comportamento dei connettivi proposizionali quali ∧ (“And”) e ∨ (“Or”) • Parte da una famiglia di enunciati atomici di cui non analizziamo la struttura interna, che rappresentiamo con delle lettere, di cui ci interessa conoscere solo il valore di verità • Da queste “lettere proposizionali” vengono costruiti enunciati più elaborati usando i connettivi proposizionali • Determina gli enunciati composti veri a causa della loro struttura, le tautologie, e gli enunciati che sono conseguenza logica di altri 31 Linguaggio della logica proposizionale classica • insieme P = {p1, p2, p3, . . .} di lettere proposizionali • simboli di costante: ⊤ (vero) e ⊥ (falso) • connettivi proposizionali: – unari: ¬ (negazione) – binari: ∧, ∨, ⊃, ≡,... • parentesi: (,) 32 Definizione delle formule proposizionali Una formula atomica è una lettera proposizionale, ⊤ o ⊥. Indichiamo con ATProp l’insieme di tutte le formule atomiche L’insieme delle formule proposizionali Prop viene definito come il più piccolo insieme S ⊆ Σ+ che gode delle seguenti proprietà: 1. ATProp ⊆ S 2. X ∈ S ⇒ ¬X ∈ S 3. X, Y ∈ S ⇒ (X ◦ Y ) ∈ S, per ogni connettivo binario ◦ 33 Principio di induzione strutturale Metodo di dimostrazione che sfrutta la struttura induttiva delle formule Sia Q ⊆ Prop, se • CASO BASE: 1. ATProp ⊆ Q • PASSO INDUTTIVO: 2. X ∈ Q ⇒ ¬X ∈ Q 3. X, Y ∈ Q ⇒ (X ◦ Y ) ∈ Q, per ogni connettivo binario ◦ Allora Q = Prop 34