Logica per la Programmazione

Documenti analoghi
Logica per la Programmazione

QUANTIFICATORI FUNZIONALI: MINIMO, MASSIMO, SOMMATORIA, CARDINALITA. Corso di Logica per la Programmazione A.A. 2013/14

Logica per la Programmazione

LOGICA DEL PRIMO ORDINE CON INSIEMI E INTERVALLI. Corso di Logica per la Programmazione

Logica per la Programmazione

LOGICA DEL PRIMO ORDINE CON INSIEMI E INTERVALLI. Corso di Logica per la Programmazione A.A. 2010/11 Andrea Corradini, Paolo Mancarella

UNA PRIMA APPLICAZIONE: Teoria degli insiemi

LOGICA DEL PRIMO ORDINE: MOTIVAZIONI, SINTASSI E INTERPRETAZIONI. Corso di Logica per la Programmazione A.A Andrea Corradini

Logica per la Programmazione

Logica per la Programmazione

Logica per la Programmazione

Logica per la Programmazione

LOGICA DEL PRIMO ORDINE: PROOF SYSTEM. Corso di Logica per la Programmazione A.A. 2013/14 Andrea Corradini

INTRODUZIONE ALLA LOGICA DI HOARE. Corso di Logica per la Programmazione A.A. 2013/14

Logica per la Programmazione

Logica per la Programmazione

Logica per la Programmazione

Logica per la Programmazione

INTRODUZIONE ALLA LOGICA DI HOARE. Corso di Logica per la Programmazione

Logica per la Programmazione

LA LOGICA DI HOARE. Corso di Logica per la Programmazione A.A. 2010/11 Andrea Corradini, Paolo Mancarella

IL CALCOLO DEL PRIMO ORDINE. Corso di Logica per la Programmazione A.A. 2010/11 Andrea Corradini, Paolo Mancarella

LOGICA DEL PRIMO ORDINE: MOTIVAZIONI, SINTASSI E INTERPRETAZIONI

UNA PRIMA APPLICAZIONE: Teoria degli insiemi

Prerequisiti Matematici

RELAZIONI TRA SINTASSI E SEMANTICA

Logica per la Programmazione

Ragionamento Automatico Richiami di calcolo dei predicati

RELAZIONI TRA SINTASSI E SEMANTICA

ESERCIZI DI ANALISI MATEMATICA 1 FOGLIO 1

Alcuni prerequisiti per il corso di Analisi 1 (breve vademecum, da perfezionare)

Elementi di Algebra e Logica Determinare la tavola della verità di ciascuna delle seguenti forme proposizionali:

Logica per la Programmazione

Precorsi di matematica

Linguaggi di programmazione: sintassi e semantica Sintassi fornita con strumenti formali: Semantica spesso data in modo informale

LOGICA PER LA PROGRAMMAZIONE - a.a Primo Appello - 20/01/2017 Soluzioni Proposte

ESEMPI DI TRIPLE DI HOARE. Corso di Logica per la Programmazione A.A. 2010/11 Andrea Corradini, Paolo Mancarella

COMPITO di LOGICA PER INFORMATICA (fila 1) 21 settembre 2005

Logica per la Programmazione Corso di Laurea in INFORMATICA a.a. 2016/17

Logica per la programmazione: applicazioni

Logica per la Programmazione

Logica per la Programmazione Corso di Laurea in INFORMATICA a.a. 2015/16

Logica per la Programmazione Corso di Laurea in INFORMATICA a.a. 2017/2018

Linguaggi. Claudio Sacerdoti Coen 03/12/ : Logica del prim ordine. Universitá di Bologna. Logica del prim ordine

ESEMPI DI TRIPLE DI HOARE. Corso di Logica per la Programmazione A.A. 2010/11 Andrea Corradini, Paolo Mancarella

Logica per la Programmazione Corso di Laurea in INFORMATICA a.a. 2016/2017

Logica Proposizionale

Linguaggi. Claudio Sacerdoti Coen 13/12/ : Semantica della logica del prim ordine. Universitá di Bologna

Logica per la Programmazione

Logica. Claudio Sacerdoti Coen 07/10/ : Connotazione, denotazione, invarianza per sostituzione. Universitá di Bologna

Logica per la Programmazione

Riassunto delle puntate precedenti:

Un introduzione al corso di LOGICA PER LA PROGRAMMAZIONE

LOGICA PER LA PROGRAMMAZIONE (A,B) - a.a SOLUZIONI PROPOSTE SECONDO APPELLO - 7/02/2012

Logica per la Programmazione

Logica per la Programmazione

Logica per la Programmazione Corso di Laurea in INFORMATICA a.a. 2015/2016

Principali insiemi di numeri

COMPITO di LOGICA PER INFORMATICA (fila 1) 24 giugno 2005

Logica per la Programmazione

Logica per la Programmazione

Cenni di logica matematica e di teoria degli insiemi. CORSI INTRODUTTIVI Dipartimento di Ingegneria di Perugia a.a. 2016/2017 Paola Rubbioni

Sintassi. Linguaggi. 4: Sintassi. Claudio Sacerdoti Coen. Universitá di Bologna 24/02/2011. Claudio Sacerdoti Coen

Specifica parte IIIA. Leggere Sez. 5.6 Ghezzi et al.

Logica per la Programmazione

interpretazione astratta

Logica per la Programmazione

Cenni di logica matematica e di teoria degli insiemi Paola Rubbioni

Gli insiemi. Definizioni: Sia X un insieme e siano A, B sottoinsiemi di X. Si definisce:

Paolo Bison. Fondamenti di Informatica Ingegneria Meccanica Università di Padova A.A. 2008/09

CALCOLO DEL PRIMO ORDINE

Array di array. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1. Dispensa 03. A. Miola Febbraio 2008

Cenni di logica matematica e di teoria degli insiemi Paola Rubbioni

1 Richiami di logica matematica

Esercitazione 2 - Soluzioni

Il calcolo di deduzione naturale NK per la logica dei predicati. xa A[t/x] (E )

Basi matematiche per il Machine Learning

Fondamenti dell informatica

Linguaggi. Claudio Sacerdoti Coen 11/12/ : Logica del prim ordine. Universitá di Bologna. Logica del prim ordine

Linguaggi. Claudio Sacerdoti Coen 08/04/ : Logica del prim ordine. Universitá di Bologna. Logica del prim ordine

Logica. Claudio Sacerdoti Coen 13-15/11/ : Semantica classica della logica proposizionale. Universitá di Bologna

Laboratorio di Programmazione Laurea in Ingegneria Civile e Ambientale

LOGICA DEL PRIMO ORDINE: SEMANTICA. Corso di Logica per la Programmazione A.A. 2010/11 Andrea Corradini, Paolo Mancarella

Tipi di dato. Il concetto di tipo di dato viene introdotto per raggiungere due obiettivi:

1 IL LINGUAGGIO MATEMATICO

04 - Logica delle dimostrazioni

Definizione di anello

Logica per la Programmazione

Logica: materiale didattico

Transcript:

Logica per la Programmazione Lezione 10 Logica del Primo Ordine con Quantificatori Funzionali Leggi per i Quantificatori Funzionali pag. 1

Estensione del Primo Ordine con Quantificatori Funzionali Abbiamo esteso il linguaggio del primo ordine con notazione intensionale per insiemi simboli di disuguaglianza notazione per intervalli abbiamo introdotto le relative leggi e alcune leggi per le formule con dominio Ora aggiungiamo alcuni quantificatori funzionali che sommatoria di un insieme di valori cardinalità di un insieme minimo/massimo di un insieme di valori sono quantificatori funzionali perché restituiscono un valore, non un booleano anche questi concetti saranno utili per la verifica di programmi con Triple di Hoare pag. 2

Quantificatore Sommatoria (Σ x : P(x).E(x)) P(x) è una formula (dominio della sommatoria), E(x) è un termine (un espressione) denota la somma di tutti gli E(v) per tutti i valori v per cui vale P(v) Esempi: (Σ x : x > 0 x 3.x 2 ) = 1 + 4 + 9 = 14 (Σ x : x [3, 5).2x + 1) =?? = 7 + 9 = 16 (Σ x : x [0, 10) pari(x).x) =?? = 0 + 2 + 4 + 6 + 8 = 20 (Σ x : x > 7 x [0, 10).5) =?? = 5 + 5 = 10 (Σ x : F.2x + 5) =?? = 0 pag. 3

Quantificatore Cardinalità #{x : P(x) Q(x)} in questo caso sia P(x) e Q(x) sono formule, in particolare P(x) è il dominio denota il numero dei valori v per cui valgono sia P(v) che Q(v) (quindi ha il significato di ) Esempi: #{x : x [0, 10) pari(x)} = 5 #{x : x [0, 10) (.y N y 2 = x)} =?? = 4 #{x : T x 2 x} =?? = 2 #{x : F x [3, 5) pari(x)} =?? = 0 Nota: # può essere definita mediante Σ: #{x : P Q} = (Σx : P Q.1) (Elim-#) pag. 4

Quantificatori per Minimo e Massimo a max b = a se a b, b altrimenti (a min b analogamente) (max x : P(x).E(x)) denota il massimo dei valori E(v) per tutti i v per cui vale P(v) (min x : P(x).E(x)) denota denota il minimo dei valori E(v) per tutti i v per cui vale P(v) P(x) è una formula (dominio) e E(x) è un espressione pag. 5

Minimo e Massimo: Esempi (max x : x [3, 10) primo(x).x 2 ) = 7 2 = 49 Array a 45 23 10 16 13 (min i : i [0, 5).a[i]) =?? = 10 (max i : i [0, 5) primo(a[i]).a[i]) =?? = 23 (max i : i [0, 5) primo(a[i]).i) =?? = 4 pag. 6

Sintassi del Primo Ordine con Quantificatori Funzionali Estendiamo le categorie sintattiche di termini, costanti ed espressioni con la sintassi vista: Term ::= (Σ Var : Fbf.Term) #{Var : Fbf Fbf } (max Var : Fbf.Term) (min Var : Fbf.Term) Exp Const ::= 0 1 2... + Exp ::= ordinarie espressioni aritmetiche x occorre legata in (Σ x : P.E), #{x : P Q}, (max x : P.E), (min x : P.E) pag. 7

Leggi per i Quantificatori Funzionali I quantificatori funzionali, introdotti come estensione della Logica dei Predicati, possono essere definiti nella logica estesa con i naturali. Nella dispensa [LP2] Logica per la Programmazione: Applicazioni sono riportate numerose leggi che descrivono loro proprietà. Molte di queste descrivono proprietà abbastanza ovvie: ne vediamo velocemente alcune. Altre sono molto importanti per la parte del corso su Triple di Hoare, e le vediamo in dettaglio. Come al solito, le leggi sono dimostrabili usando le definizioni e/o altre leggi. pag. 8

Leggi Generali (come per le normali Quantificazioni) Ad esempio: Legge di ridenominazione (Σ x : P.E) (Σ y : P[y/x].E[y/x) se y non occorre né in P né in E Legge di annidamento (Σ y : R.(Σ x : S.P)) = (Σ x : S.(Σ y : R.P)) se y non è libero in S e x non è libero in R pag. 9

Leggi Specifiche (min:max) (min x : P. E) = (max x : P.E) Dominio equivalente (analogamente per gli altri quantificatori): ( x.p Q) #{x : P R} = #{x : Q R} (# : ) Inclusione di Dominio: ( x.p Q) (min x : P.E) (min x : QE) (min : ) ( x.p Q) (max x : P.E) (max x : Q.E) (max : ) ( x.p Q) #{x : P R} #{x : Q R} (# : ) ( x.e 0 P Q) (Σ x : P.E) (Σ x : Q.E) (Σ : ) ( x.e 0 P Q) (Σ x : P.E) (Σ x : Q.E) (Σ : ) pag. 10

Leggi di Distributività (Σ x : P.E + F ) = (Σ x : P.E) + (Σ x : P.F ) (Σ : +) (max x : P.E max F ) = (max x : P.E) max (max x : P.F ) (min x : P.E min F ) = (min x : P.E) min (min x : P.F ) pag. 11

Costante se x non è libera in c (Σ x : P.c) = c (Σ x : P.1) se x non è libera in c e P non è vuoto (m x : P.c) = c se x non è libera in c (Σ x : P.c E) = c (Σ x : P.E) se x non è libera in c e P non è vuoto (m x : P.c + E) = c + (m x : P.E) pag. 12

Leggi di Dominio (Σ x : P Q.E) = (Σ x : P.E) + (Σ x : Q.E) (Σ x : P Q.E) #{x : P Q R} = #{x : P R} + #{x : Q R} #{x : P Q R} (max x : P Q.E) = (max x : P.E) max (max x : Q.E) (min x : P Q.E) = (min x : P.E) min (min x : Q.E) pag. 13

Singoletto e Dominio Vuoto se P è vuoto se P è vuoto se P è vuoto se P è vuoto (Σ x : x = y.e) = E[y/x] #{x : x = y R} = { 1 se R[y/x] 0 se R[y/x] (Σ x : P.E) = 0 #{x : P Q} = 0 (min x : P.E) = + (max x : P.E) = pag. 14

Leggi dell Intervallo Sia [a, b] un intervallo non vuoto di naturali e P una formula { (Σ x : x [a, b) P.E) + E[b/x] se P[b/x] (Σ x : x [a, b] P.E) = (Σ x : x [a, b) P.E) se P[b/x] { #{x : x [a, b) P} + 1 se P[b/x] #{x : x [a, b] P} = #{x : x [a, b) P} se P[b/x] { (m x : x [a, b) P.E) m E[b/x] se P[b/x] (m x : x [a, b] P.E) = (m x : x [a, b) P.E) se P[b/x] Attenzione: queste leggi potrebbero essere errate nella dispensa pag. 15

Uso di Leggi dell Intervallo: Esempio s = (Σ x : x [1, 3] pari(x).x 2 ) (s = 4) s = (Σ x : x [1, 3] pari(x).x 2 ) {(Intervallo-Σ), pari(3)} s = (Σ x : x [1, 2] pari(x).x 2 ) {(Intervallo-Σ), pari(2)} s = (Σ x : x [1, 1] pari(x).x 2 ) + 2 2 {(Intervallo-Σ), pari(1)} s = (Σ x : x pari(x).x 2 ) + 2 2 {(Σ-vuoto)} s = 0 + 2 2 {calcolo} s = 4 pag. 16

Formalizzazione di Enunciati Si assuma che la sequenza a sia un array con dominio [0, n) la sequenza a contiene più numeri pari che numeri dispari x è il numero di elementi della sequenza a che sono maggiori della somma degli elementi che lo precedono x è uguale alla somma dei quadrati degli elementi di a con indice pari la sequenza a contiene un solo elemento uguale alla sua posizione gli elementi di indice pari della sequenza a sono dispari la sequenza a è palindroma, ovvero simmetrica rispetto al suo punto centrale pag. 17

Formalizzazione di Enunciati con Quantificatori Funzionali x è il Massimo Comun Divisore di y e z (usando il predicato Divide(x, y) ( z.y = x z)) x è un numero perfetto (cioè è la somma dei suoi divisori eccetto se stesso) pag. 18