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

Dimensione: px
Iniziare la visualizzazioe della pagina:

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

Transcript

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

2 INTRODUZIONE Dall inizio del corso ad ora abbiamo introdotto, un po alla volta, un linguaggio logico sempre più ricco: connettivi logici (Calcolo Proposizionale) termini e quantificatori (Logica del Primo Ordine) uguaglianza e disuguaglianze insiemi e intervalli quantificatori funzionali Per ognuna di queste estensioni abbiamo presentato: la sintassi con grammatiche in BNF la semantica (tabelle di verità, interpretazioni e modelli) esempi di formalizzazione di enunciati alcune leggi, e esempi di dimostrazioni

3 SUI LINGUAGGI DI PROGRAMMAZIONE In questa parte finale del corso sfruttiamo la logica introdotta per fornire una semantica formale di un semplice linguaggio di programmazione imperativo Perché? La presentazione di un linguaggio di programmazione di solito consiste nel dare la sintassi e una semantica Sintassi spesso fornita con strumenti formali es. grammatica in BNF Semantica spesso data in modo informale tipicamente di stile operazionale comprensibile per non esperti ma lascia spazio a ambiguità non sufficiente per applicazioni critiche

4 NECESSITA DI UNA SEMANTICA FORMALE A volte è necessario dimostrare proprietà relative a programmi Software per controllo di centrali nucleari, di armamenti, di apparecchiature mediche, software/protocolli per e-banking, per gestione carte di credito,... Sono state proposte varie semantiche formali tra cui: operazionale, definendo struttura degli stati e transizioni di stato denotazionale, con domini semantici e funzioni di interpretazione per i costrutti del linguaggio (come quella del C a LPR) assiomatica, annotando un programma con asserzioni (formule) e poi dimostrandone la correttezza con proof rules. Noi vedremo la semantica assiomatica di Hoare [1969] - Dijkstra [1976]

5 COSA VEDREMO... Presentiamo dapprima le espressioni (a valori interi e booleani) sintassi con grammatica BNF semplice semantica in stile denotazionale Quindi presentiamo i comandi (skip, assegnamento, condizionale, iterazione) sintassi con grammatica BNF semantica operazionale informale Poi introduciamo le Triple di Hoare che permettono di annotare un programma con asserzioni definiremo quando una tripla è soddisfatta vedremo regole di inferenza per dimostrare che una tripla è soddisfatta (usando induzione strutturale sul programma)

6 LINGUAGGIO IMPERATIVO MINIMO Espressioni: Exp ::= Const Ide (Exp) Exp Op Exp not Exp Op ::= + - * div mod = < > or and Const ::= Num Bool Bool ::= true false Num ::= Comandi: Com ::= skip Ide_List := Exp_List Com ; Com if Exp then Com else Com fi while Exp do Com endw Ide_List ::= Ide Ide, Ide_List Exp_List ::= Exp Exp, Exp_List

7 LO STATO DI UN PROGRAMMA Modelliamo uno stato di un programma come una funzione da identificatori di variabile a valori (booleani e interi) σ : Ide Β Ζ Poiché in uno stato l insieme delle variabili è finito, una tipica rappresentazione è σ = {<x,18>, <y,true>, <z,-8>} con E(e,σ) indichiamo il valore dell espressione e nello stato σ E(_,_) : funzione di interpretazione semantica Esempi nello stato precedente E(x+z, σ) = 10 E(y, σ) = true

8 SEMANTICA DELLE ESPRESSIONI La funzione di interpretazione semantica è definita in modo induttivo come segue: Si noti che E(_,_) è una funzione parziale (es: E(x div 0,s))

9 SIGNIFICATO INFORMALE DEI COMANDI L'esecuzione di skip a partire dallo stato σ porta nello stato σ L'esecuzione dell'assegnamento x1,..., xn := E1,..., En a partire dallo stato σ porta nello stato σ[e(e1,σ)/x1,..., E(En,σ)/xn] L'esecuzione di C;C' a partire dallo stato σ porta nello stato σ' ottenuto eseguendo C' a partire dallo stato σ'' ottenuto dall'esecuzione di C nello stato σ. L'esecuzione di if E then C else C' fi a partire da σ porta nello stato σ' che si ottiene dall'esecuzione di C in σ, se E(E,σ)= tt, e dall'esecuzione di C' in σ, se E(E,σ)= ff L'esecuzione del comando while E do C endw a partire da σ porta in σ se E(E,σ)= ff, altrimenti porta nello stato σ' ottenuto dall'esecuzione di while E do C endw a partire dallo stato σ'' ottenuto con l'esecuzione di C nello stato σ.

10 TRIPLE DI HOARE Una Tripla di Hoare ha la forma {Q} C {R} dove C è un comando, mentre Q e R sono asserzioni, ovvero formule ben formate (della logica del primo ordine estesa come visto) in cui possono comparire le variabili dello stato Il dominio di interpretazione delle asserzioni è l insieme di tutti gli stati Significato intuitivo: la tripla {Q} C {R} è soddisfatta se a partire da uno stato che soddisfi Q, l esecuzione del comando C termina in uno stato che soddisfa R Es: {x>1} x := x + 1 {x>2}

11 NOTAZIONE free(p) è l insieme delle variabili libere nell asserzione P p.e. free( x > y z 1) = {x, y, z} Sia P un asserzione e σ uno stato. P σ indica l asserzione P istanziata sullo stato σ, ovvero in cui a tutte le variabili sono sostituiti i loro valori nello stato Poiché l interpretazione del linguaggio delle asserzioni è fissata, dato uno stato si può valutare l asserzione p.e. σ = {<x, 18>, <y, true>, <z, -8>} P = (x > 0 z < 0) P σ = (18 > 0-8 < 0) T

12 PROPRIETÀ σ P (lo stato σ soddisfa l asserzione P) sse P σ T Con indichiamo la non soddisfazione Con {P} indichiamo l insieme degli stati che soddisfano P Sia E una espressione, P un asserzione. Valgono le seguenti proprietà: Se per ogni x free(e), σ(x) = σ (x) allora E(E, σ) = E(E, σ ) Se per ogni x free(p), σ(x) = σ (x) allora σ P se e solo se σ P Per ogni variabile x σ[e(e, σ) /x] P se e solo se σ P[E/x]

13 GENERALITÀ SULLE TRIPLE DI HOARE Data la tripla di Hoare {Q} C {R} Q è detta precondizione R è detta postcondizione La tripla è soddisfatta se dato uno stato σ che soddisfa Q: 1. L esecuzione del comando C a partire dallo stato σ termina producendo uno stato σ 2. Lo stato σ soddisfa R

14 INTERPRETAZIONE DELLE TRIPLE DI HOARE (1) Semantica: dati Q e C, determinare R in modo che sia soddisfatta {Q} C {R} è un modo per descrivere il comportamento di C. Per esempio sia Q {x>10} e C if (x < 10) then x := 1 else x :=2 fi allora R {x = 2} descrive il comportamento del comando Correttezza: dati Q, C ed R, dimostrare che la tripla {Q} C {R} è soddisfatta corrisponde ad una dimostrazione di correttezza del comando C rispetto alla pre e alla postcondizione

15 INTERPRETAZIONE DELLE TRIPLE DI HOARE (2) Specifica. Data una precondizione Q e una postcondizione R determinare un comando C che soddisfa la tripla {Q} C {R} equivale a scrivere il programma che realizza le specifiche Q ed R. Per esempio le specifiche Q {x > 0} e R {y = 2 x } possono essere soddisfatte dal comando y := x * 2 oppure dal comando y := x + x oppure dal comando y := x; y := y * 2 ecc..

16 SISTEMA DI PROVA: ALCUNE REGOLE DI INFERENZA (pre-post o conseguenza) P P' {P'} C {R'} R' R {P} C {R} (pre) P P' {P'} C {R} {P} C {R} (post) {P} C {R'} R' R {P} C {R} La correttezza di queste regole segue dalle definizioni

17 ASSIOMI PER SKIP E ASSEGNAMENTO Assioma per il comando vuoto (skip) {P} skip {P} Assioma per l assegnamento (semplice) {def(e) P[E/x]} x := E {P} dove def(e) è vera se il calcolo dell espressione E è ben definito, ovvero termina senza errori (p.e. divisioni per zero, out of bound per gli array ecc.). L idea è che affinché l asserzione P sia soddisfatta dopo l assegnamento, la stessa asserzione deve essere soddisfatta dallo stato precedente l assegnamento quando all identificatore di variabile è sostituita l espressione.

18 DEFINIZIONE DI ESPRESSIONI Introduciamo, per induzione strutturale, la funzione def(e) che, applicata a un'espressione E, restituisce una asserzione tale che σ def(e) se esiste v tale che E(E, σ) = v.

19 ASSIOMA PER ASSEGNAMENTO MULTIPLO L assioma per l assegnamento multiplo generalizza quello per l'assegnamento singolo Tutte le espressioni vengono valutate PRIMA di tutti gli assegnamenti Come vedremo, gli assiomi per l assegnamento semplice e multiplo sono molto utili per propagare all indietro le asserzioni in una sequenza di comandi.

20 UNA UTILE REGOLA PER L ASSEGNAMENTO Combinando la regola (pre) con l assioma per l assegnamento semplice, si ottiene la seguente utile regola: R def(e) P[E/x] {R} x := E {P} ESEMPI: Verificare le seguenti triple: {x = 5} x := x + 1 {x > 2} {s = (Σ i [0, x). i} x,s := x+1, s+x {s = (Σ i [0, x). i}

21 REGOLA PER LA SEQUENZA DI COMANDI Sequenza {P} C {R} {R} C' {Q} {P} C ;C' {Q} ESEMPI: Si verifichi la seguente tripla {x >= y - 1} x := x+1; y := y - 1 {x > y} Determinare E affinché la seguente tripla sia corretta {x = n y = m} t := E; x := y; y:= t {x = m y = n}

22 REGOLA PER IL COMANDO CONDIZIONALE Condizionale P def(e) {P E} C {Q} {P E} C' {Q} {P} if E then C else C' fi {Q} Esempio: si verifichi la seguente tripla: {x >= 0 y > 0} if x div y > 0 then z := x else z := y fi {z = max(x, y)}

23 REGOLA PER IL COMANDO ITERATIVO While P Inv def(e) Inv E Q Inv t 0 {Inv E} C {Inv def(e)} {Inv E t =V} C {t <V} {P} while E do C endw {Q} Dove t Inv è una funzione di terminazione è un asserzione invariante

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

INTRODUZIONE ALLA LOGICA DI HOARE. Corso di Logica per la Programmazione INTRODUZIONE ALLA LOGICA DI HOARE Corso di Logica per la Programmazione INTRODUZIONE Dall inizio del corso ad ora abbiamo introdotto, un po alla volta, un linguaggio logico sempre più ricco: connettivi

Dettagli

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

Linguaggi di programmazione: sintassi e semantica Sintassi fornita con strumenti formali: Semantica spesso data in modo informale LOGICA DI HOARE INTRODUZIONE Linguaggi di programmazione: sintassi e semantica Sintassi fornita con strumenti formali: es. grammatica in BNF Semantica spesso data in modo informale di stile operazionale

Dettagli

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

INTRODUZIONE ALLA LOGICA DI HOARE. Corso di Logica per la Programmazione A.A. 2013/14 INTRODUZIONE ALLA LOGICA DI HOARE Corso di Logica per la Programmazione A.A. 2013/14 INTRODUZIONE Dall inizio del corso ad ora abbiamo introdotto, un po alla volta, un linguaggio logico sempre più ricco:

Dettagli

Logica per la Programmazione

Logica per la Programmazione Logica per la Programmazione Lezione 12 Linguaggio di Programmazione Imperativo: Sintassi e Semantica Concetto di Tripla di Hoare Soddisfatta pag. 1 Introduzione Dall inizio del corso ad ora abbiamo introdotto,

Dettagli

Logica per la Programmazione

Logica per la Programmazione Logica per la Programmazione Lezione 11 Linguaggio di Programmazione Imperativo: Sintassi e Semantica Concetto di Tripla di Hoare Soddisfatta pag. 1 Introduzione Dall inizio del corso ad ora abbiamo introdotto,

Dettagli

Logica per la Programmazione

Logica per la Programmazione Logica per la Programmazione Lezione 12 Linguaggio di Programmazione Imperativo: Sintassi e Semantica Tripla di Hoare soddisfatta A. Corradini e F.Levi Dip.to Informatica Logica per la Programmazione a.a.

Dettagli

REGOLE DI INFERENZA PER TRIPLE DI HOARE: ASSEGNAMENTO, SEQUENZA E CONDIZIONALE. Corso di Logica per la Programmazione

REGOLE DI INFERENZA PER TRIPLE DI HOARE: ASSEGNAMENTO, SEQUENZA E CONDIZIONALE. Corso di Logica per la Programmazione REGOLE DI INFERENZA PER TRIPLE DI HOARE: ASSEGNAMENTO, SEQUENZA E CONDIZIONALE Corso di Logica per la Programmazione RIASSUNTO Una tripla {P} C {R} è costituita da precondizionecomando-postcondizione La

Dettagli

REGOLE DI INFERENZA PER TRIPLE DI HOARE. Corso di Logica per la Programmazione A.A. 2012/13

REGOLE DI INFERENZA PER TRIPLE DI HOARE. Corso di Logica per la Programmazione A.A. 2012/13 REGOLE DI INFERENZA PER TRIPLE DI HOARE Corso di Logica per la Programmazione A.A. 2012/13 RIASSUNTO Una tripla {P} C {R} è costituita da precondizionecomando-postcondizione La tripla {P} C {R} è soddisfatta

Dettagli

Logica per la Programmazione

Logica per la Programmazione Logica per la Programmazione Lezione 15 Sistema di Dimostrazioni per le Triple di Hoare Comando Vuoto, Assegnamento, Sequenza, Condizionale A. Corradini e F. Bonchi Dip.to Informatica Logica per la Programmazione

Dettagli

Logica per la Programmazione

Logica per la Programmazione Logica per la Programmazione Lezione 12 Sistema di Dimostrazioni per le Triple di Hoare Comando Vuoto, Assegnamento, Sequenza, Condizionale A. Corradini e F.Levi Dip.to Informatica Logica per la Programmazione

Dettagli

Logica per la Programmazione

Logica per la Programmazione Logica per la Programmazione Lezione 12 Sistema di Dimostrazioni per le Triple di Hoare Comando Vuoto, Assegnamento, Sequenza, Condizionale pag. 1 Tripla di Hoare Soddisfatta: richiamo Data la tripla di

Dettagli

REGOLE DI INFERENZA PER TRIPLE DI HOARE: ASSEGNAMENTO, SEQUENZA E CONDIZIONALE. Corso di Logica per la Programmazione A.A. 2013/14

REGOLE DI INFERENZA PER TRIPLE DI HOARE: ASSEGNAMENTO, SEQUENZA E CONDIZIONALE. Corso di Logica per la Programmazione A.A. 2013/14 REGOLE DI INFERENZA PER TRIPLE DI HOARE: ASSEGNAMENTO, SEQUENZA E CONDIZIONALE Corso di Logica per la Programmazione A.A. 2013/14 RIASSUNTO Una tripla {P} C {R} è costituita da precondizionecomando-postcondizione

Dettagli

Logica per la Programmazione

Logica per la Programmazione Logica per la Programmazione Lezione 13 Sistema di Dimostrazioni per le Triple di Hoare Comando Vuoto, Assegnamento, Sequenza, Condizionale pag. 1 Tripla di Hoare Soddisfatta: richiamo Data una Tripla

Dettagli

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

ESEMPI DI TRIPLE DI HOARE. Corso di Logica per la Programmazione A.A. 2010/11 Andrea Corradini, Paolo Mancarella ESEMPI DI TRIPLE DI HOARE Corso di Logica per la Programmazione A.A. 2010/11 Andrea Corradini, Paolo Mancarella ESEMPIO DI SEQUENZA DI COMANDI Verificare la tripla: Per la Regola per la Sequenza, dobbiamo

Dettagli

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

ESEMPI DI TRIPLE DI HOARE. Corso di Logica per la Programmazione A.A. 2010/11 Andrea Corradini, Paolo Mancarella ESEMPI DI TRIPLE DI HOARE Corso di Logica per la Programmazione A.A. 2010/11 Andrea Corradini, Paolo Mancarella ESEMPIO DI SEQUENZA DI COMANDI Verificare la tripla: Per la Regola per la Sequenza, dobbiamo

Dettagli

Logica per la Programmazione

Logica per la Programmazione Logica per la Programmazione Lezione 13 Comando Iterativo Sequenze (array) ed Aggiornamento Selettivo pag. 1 Regole di Inferenza per Triple di Hoare: Comando Iterativo Semantica informale del Comando Iterativo

Dettagli

TRIPLE DI HOARE: ESEMPI ED ESERCIZI. Corso di Logica per la Programmazione A.A. 2012/13

TRIPLE DI HOARE: ESEMPI ED ESERCIZI. Corso di Logica per la Programmazione A.A. 2012/13 TRIPLE DI HOARE: ESEMPI ED ESERCIZI Corso di Logica per la Programmazione A.A. 2012/13 RICORDIAMO LA REGOLA PER IL COMANDO ITERATIVO P Inv def(e) Inv E Q Inv t 0 {Inv E} C {Inv def(e)} {P} while E do C

Dettagli

Logica per la Programmazione

Logica per la Programmazione Logica per la Programmazione Lezione 14 Sistema di Dimostrazioni per le Triple di Hoare Comando Iterativo A. Corradini e F.Levi Dip.to Informatica Logica per la Programmazione a.a. 2017/18 pag. 260 Semantica

Dettagli

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

LOGICA PER LA PROGRAMMAZIONE (A,B) - a.a SOLUZIONI PROPOSTE SECONDO APPELLO - 7/02/2012 LOGICA PER LA PROGRAMMAZIONE (A,B) - a.a. 2011-2012 SOLUZIONI PROPOSE SECONDO APPELLO - 7/02/2012 ESERCIZIO 1 Si provi che la seguente proposizione è una tautologia: (P S Q R) (S R) (Q P ) 1 (P S Q R)

Dettagli

Verifica di programmi

Verifica di programmi Verifica di programmi Informalmente, un programma è corretto se l output prodotto è quello atteso rispetto all input. La correttezza dei programmi può essere espressa mediante formule per la correttezza

Dettagli

Logica per la Programmazione

Logica per la Programmazione Logica per la Programmazione Lezione 15 Sistema di Dimostrazioni per le Triple di Hoare Sequenze (Array) e Aggiornamento Selettivo A. Corradini e F.Levi Dip.to Informatica Logica per la Programmazione

Dettagli

Semantiche dei linguaggi di programmazione

Semantiche dei linguaggi di programmazione Semantiche dei linguaggi di programmazione By Giulia Costantini (819048) e Giuseppe Maggiore (819050) Contents La semantica del linguaggio... 1 Tipi di semantica... 1 Esempio di semantica operazionale...

Dettagli

LOGICA PER LA PROGRAMMAZIONE - a.a Secondo Appello - 11/02/2016 Soluzioni Proposte

LOGICA PER LA PROGRAMMAZIONE - a.a Secondo Appello - 11/02/2016 Soluzioni Proposte LOGICA PER LA PROGRAMMAZIONE - a.a. 2015-2016 Secondo Appello - 11/02/2016 Soluzioni Proposte Attenzione: Le soluzioni che seguono sono considerate corrette dai docenti. Per ogni esercizio possono esistere

Dettagli

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

LOGICA PER LA PROGRAMMAZIONE - a.a Primo Appello - 20/01/2017 Soluzioni Proposte LOGICA PER LA PROGRAMMAZIONE - a.a. 2016-2017 Primo Appello - 20/01/2017 Soluzioni Proposte Attenzione: Le soluzioni che seguono sono considerate corrette dai docenti. Per ogni esercizio possono esistere

Dettagli

Interpreti, compilatori e semantica operazionale

Interpreti, compilatori e semantica operazionale Interpreti, compilatori e semantica operazionale 1 Linguaggi di programmazione Come si comprendono le caratteristiche di un linguaggio di programmazione? Molte risposte diverse manuali, documentazione

Dettagli

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

QUANTIFICATORI FUNZIONALI: MINIMO, MASSIMO, SOMMATORIA, CARDINALITA. Corso di Logica per la Programmazione A.A. 2013/14 QUANTIFICATORI FUNZIONALI: MINIMO, MASSIMO, SOMMATORIA, CARDINALITA Corso di Logica per la Programmazione A.A. 2013/14 ESTENSIONE DEL PRIMO ORDINE CON QUANTIFICATORI FUNZIONALI Abbiamo esteso il linguaggio

Dettagli

Logica per la Programmazione

Logica per la Programmazione Logica per la Programmazione Lezione 11 Logica del Primo Ordine con Quantificatori Funzionali A. Corradini e F.Levi Dip.to Informatica Logica per la Programmazione a.a. 2017/18 pag. 192 Estensione del

Dettagli

Note di semantica assiomatica

Note di semantica assiomatica Note di semantica assiomatica Appunti ad uso degli studenti di Logica per la Programmazione Corso di Laurea in Informatica Università degli Studi di Pisa Anno accademico 2008/2009 Paolo Mancarella Indice

Dettagli

Linguaggi di programmazione - Principi e paradigmi 2/ed Maurizio Gabbrielli, Simone Martini Copyright The McGraw-Hill Companies srl

Linguaggi di programmazione - Principi e paradigmi 2/ed Maurizio Gabbrielli, Simone Martini Copyright The McGraw-Hill Companies srl Approfondimento 2.1 Non è questo il testo dove trattare esaurientemente queste tecniche semantiche. Ci accontenteremo di dare un semplice esempio delle tecniche basate sui sistemi di transizione per dare

Dettagli

Cosa si intende con stato

Cosa si intende con stato Il concetto di stato Cosa si intende con stato I una particolare configurazione delle informazioni di una macchina, che in qualche modo memorizza le condizioni in cui si trova, e che cambia nel tempo passando

Dettagli

contiene il valore e nel range [l, u]. Funziona correttamente solo se 0 l e u a.

contiene il valore e nel range [l, u]. Funziona correttamente solo se 0 l e u a. Linear search @pre @post bool LinearSearch(int [] a, int l, int u, int e) { for @ (int i := l;i u;i := i+1){ if (a[i] = e) return true; return false; LinearSearch ricerca il valore e all interno del range

Dettagli

Logica per la Programmazione

Logica per la Programmazione Logica del Primo Ordine: Motivazioni, Sintassi e Interpretazioni Logica per la Programmazione Lezione 8 Modelli, Formule Valide, Conseguenza Logica Proof Systems Regole di inferenza per Calcolo Proposizionale

Dettagli

Tecniche di prova per induzione

Tecniche di prova per induzione Aniello Murano Tecniche di prova per induzione 3 Lezione n. Parole chiave: Induzione Corso di Laurea: Informatica Codice: Email Docente: murano@ na.infn.it A.A. 2008-2009 Riassunto delle lezioni precedenti

Dettagli

Informatica

Informatica Informatica 2016-06-20 Nota: Scrivete su tutti i fogli nome e matricola. Esercizio 1. Si dimostri il teorema del punto fisso di Kleene. Esercizio 2. Sia g : N 2 N una funzione fissata, e si considerino

Dettagli

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

LOGICA DEL PRIMO ORDINE: PROOF SYSTEM. Corso di Logica per la Programmazione A.A. 2013/14 Andrea Corradini LOGICA DEL PRIMO ORDINE: PROOF SYSTEM Corso di Logica per la Programmazione A.A. 2013/14 Andrea Corradini LOGICA DEL PRIMO ORDINE: RIASSUNTO Sintassi: grammatica libera da contesto (BNF), parametrica rispetto

Dettagli

Verifica dei programmi

Verifica dei programmi Verifica dei programmi Consiste nella specifica e nella dimostrazione delle proprietà dei programmi. Per specificare le proprietà utilizzeremo la logica del I ordine. Per dimostrare che le proprietà specificate

Dettagli

Specifica, progetto e verifica della correttezza di algoritmi iterativi

Specifica, progetto e verifica della correttezza di algoritmi iterativi Specifica, progetto e verifica della correttezza di algoritmi iterativi Il metodo delle asserzioni Ragionamenti su di un algoritmo Ragionare sulla specifica di un algoritmo data con pre e post-condizioni

Dettagli

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

Specifica parte IIIA. Leggere Sez. 5.6 Ghezzi et al. Specifica parte IIIA Leggere Sez. 5.6 Ghezzi et al. Specifiche descrittive l Specificano i sistemi (o parti di essi) attraverso le loro proprietà anziché il loro comportamento. l Diagrammi entità/relazione

Dettagli

Logica per la Programmazione

Logica per la Programmazione 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

Dettagli

Programmazione II. Lezione 3. Daniele Sgandurra 26/10/2010.

Programmazione II. Lezione 3. Daniele Sgandurra 26/10/2010. Programmazione II Lezione 3 Daniele Sgandurra daniele.sgandurra@iit.cnr.it 26/10/2010 1/35 Programmazione II Lezione 3 26/10/2010 Sommario 1 2 Semantica 2/35 Programmazione II Lezione 3 26/10/2010 Parte

Dettagli

2. Sintassi e Semantica

2. Sintassi e Semantica 2. Sintassi e Semantica Un linguaggio di programmazione è un linguaggio formale dotato di una sintassi e una semantica ben definita. Per linguaggio formale si intende un insieme di stringhe di lunghezza

Dettagli

Istruzioni di controllo: SEQUENZA

Istruzioni di controllo: SEQUENZA Istruzioni di controllo: SEQUENZA Negli esempi visti in precedenza gli algoritmi sono stati descritti come sequenze di passi elementari del tipo Passo 1. azione 1 Passo 2. azione 2... Abbiamo utilizzato

Dettagli

Semantica Operazionale del linguaggio imperativo IMP

Semantica Operazionale del linguaggio imperativo IMP Aniello Murano Semantica Operazionale del linguaggio imperativo IMP 2 Lezione n. Parole chiave: Sem. Operazionale Corso di Laurea: Informatica Codice: Email Docente: murano@ na.infn.it A.A. 2008-2009 Introduzione

Dettagli

Linguaggi. Claudio Sacerdoti Coen 29,?/10/ : La struttura dei numeri naturali. Universitá di Bologna

Linguaggi. Claudio Sacerdoti Coen 29,?/10/ : La struttura dei numeri naturali. Universitá di Bologna Linguaggi 5: La struttura dei numeri naturali Universitá di Bologna 29,?/10/2014 Outline La struttura dei numeri naturali 1 La struttura dei numeri naturali I numeri naturali La

Dettagli

IL CALCOLO DEL PRIMO ORDINE. 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 IL CALCOLO DEL PRIMO ORDINE Corso di Logica per la Programmazione A.A. 2010/11 Andrea Corradini, Paolo Mancarella ANCORA SU SISTEMI DI DIMOSTRAZIONE (PROOF SYSTEMS) Dato un insieme di formule, un sistema

Dettagli

Linguaggi. Claudio Sacerdoti Coen 04/03/ : La struttura dei numeri naturali. Universitá di Bologna

Linguaggi. Claudio Sacerdoti Coen 04/03/ : La struttura dei numeri naturali. Universitá di Bologna Linguaggi 8: Universitá di Bologna 04/03/2011 Outline 1 I numeri naturali Wikipedia: L espressione numeri naturali spesso viene usata sia per la sequenza di numeri interi positivi

Dettagli

Informatica

Informatica Informatica 2019-06-24 Nota: Scrivete su tutti i fogli nome e matricola. Esercizio 1. Si forniscano le regole della semantica delle espressioni di IMP, e si enunci il risultato di determinismo per tale

Dettagli

Logica per la Programmazione

Logica per la Programmazione Logica del Primo Ordine: Motivazioni, Sintassi e Interpretazioni Logica per la Programmazione Lezione 7 Formule Valide, Conseguenza Logica Proof System per la Logica del Primo Ordine Leggi per i Quantificatori

Dettagli

1 Il Paradigma Imperativo

1 Il Paradigma Imperativo 1 Il Paradigma Imperativo 1.1 Imp : un semplice linguaggio imperativo Abbiamo visto in Fun un meccanismo eager per la valutazione dei parametri di una funzione ed un meccanismo lazy. Una situazione analoga

Dettagli

Logica per la Programmazione

Logica per la Programmazione Logica per la Programmazione Lezione 10 Logica del Primo Ordine con Insiemi ed Intervalli Formalizzazione di Enunciati: Array e Sequenze A. Corradini e F.Levi Dip.to Informatica Logica per la Programmazione

Dettagli

CALCOLO PROPOSIZIONALE. Corso di Logica per la Programmazione Andrea Corradini

CALCOLO PROPOSIZIONALE. Corso di Logica per la Programmazione Andrea Corradini CALCOLO PROPOSIZIONALE Corso di Logica per la Programmazione Andrea Corradini andrea@di.unipi.it UN PROBLEMA DI DEDUZIONE LOGICA (da un test d ingresso) Tre amici, Antonio, Bruno e Corrado, sono incerti

Dettagli

Paolo Bison. Fondamenti di Informatica A.A. 2006/07 Università di Padova

Paolo Bison. Fondamenti di Informatica A.A. 2006/07 Università di Padova Pseudo codice Paolo Bison Fondamenti di Informatica A.A. 2006/07 Università di Padova Pseudo codice, Paolo Bison, FI06, 2007-01-10 p.1 Pseudo codice linguaggio testuale mix di linguaggio naturale ed elementi

Dettagli

Contenuti. Elementi di semantica denotazionale ed operazionale. Sintassi astratta. Sintassi e semantica. ! sintassi astratta e domini sintattici

Contenuti. Elementi di semantica denotazionale ed operazionale. Sintassi astratta. Sintassi e semantica. ! sintassi astratta e domini sintattici Elementi di semantica denotazionale ed operazionale Contenuti! sintassi astratta e domini sintattici " un frammento di linguaggio imperativo! semantica denotazionale " domini semantici: valori e stato

Dettagli

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

LOGICA DEL PRIMO ORDINE: MOTIVAZIONI, SINTASSI E INTERPRETAZIONI. Corso di Logica per la Programmazione A.A Andrea Corradini LOGICA DEL PRIMO ORDINE: MOTIVAZIONI, SINTASSI E INTERPRETAZIONI Corso di Logica per la Programmazione A.A. 2013 Andrea Corradini LIMITI DEL CALCOLO PROPOSIZIONALE Nella formalizzazione di enunciati dichiarativi,

Dettagli

Semantica operazionale dei linguaggi di Programmazione1

Semantica operazionale dei linguaggi di Programmazione1 Semantica operazionale dei linguaggi di Programmazione1 Semantica operazionale del nucleo di Java Rosario Culmone, Luca Tesei 21/1/2007 UNICAM - p. 1/82 Costrutti che alterano lo stato La valutazione di

Dettagli

CALCOLO PROPOSIZIONALE

CALCOLO PROPOSIZIONALE CALCOLO PROPOSIZIONALE UN PROBLEMA DI DEDUZIONE LOGICA (da un test d ingresso) Tre amici, Antonio, Bruno e Corrado, sono incerti se andare al cinema. Si sa che: Se Corrado va al cinema, allora ci va anche

Dettagli

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

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

Dettagli

Logica per la Programmazione

Logica per la Programmazione Logica per la Programmazione Lezione 9 Logica del Primo Ordine con Insiemi ed Intervalli Formalizzazione di Enunciati: Array e Sequenze pag. 1 Rappresentazioni Intensionali ed Estensionali di Insiemi Assumiamo

Dettagli

Logica per la Programmazione

Logica per la Programmazione Logica per la Programmazione Lezione 6 Logica del Primo Ordine Motivazioni Sintassi Interpretazioni Formalizzazione A. Corradini e F.Levi Dip.to Informatica Logica per la Programmazione a.a. 2015/16 pag.

Dettagli

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

Logica per la Programmazione Corso di Laurea in INFORMATICA a.a. 2016/17 Logica per la Programmazione Corso di Laurea in INFORMATICA a.a. 2016/17 Andrea Corradini e Francesca Levi Dipartimento di Informatica E-mail: andrea@di.unipi.it, francesca.levi@unipi.it A. Corradini e

Dettagli

si vuole verificare: P5: pioverà

si vuole verificare: P5: pioverà Logica matematica ntroduzione alla logica matematica ilvana adaloni Paolo ison Fondamenti di nformatica AA 20004 niversità di Padova formalizzazione dei meccanismi di ragionamento la logica studia proposizioni

Dettagli

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

Paolo Bison. Fondamenti di Informatica Ingegneria Meccanica Università di Padova A.A. 2008/09 Linguaggi procedurali Paolo Bison Fondamenti di Informatica Ingegneria Meccanica Università di Padova A.A. 2008/09 Linguaggi procedurali, Paolo Bison, FI08, 2008-09-29 p.1 Linguaggi procedurali classe

Dettagli

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

Logica per la Programmazione Corso di Laurea in INFORMATICA a.a. 2015/16 Logica per la Programmazione Corso di Laurea in INFORMATICA a.a. 2015/16 Andrea Corradini e Francesca Levi Dipartimento di Informatica E-mail: andrea@di.unipi.it, francesca.levi@unipi.it A. Corradini e

Dettagli

Unità Didattica 2 Linguaggio C. Espressioni, Operatori e Strutture linguistiche per il controllo del flusso

Unità Didattica 2 Linguaggio C. Espressioni, Operatori e Strutture linguistiche per il controllo del flusso Unità Didattica 2 Linguaggio C Espressioni, Operatori e Strutture linguistiche per il controllo del flusso 1 Espressioni e assegnazioni Le espressioni sono definite dalla grammatica: espressione = variabile

Dettagli

Pseudo codice. Paolo Bison. Fondamenti di Informatica 1 A.A. 2003/04 Università di Padova. Pseudo codice, Paolo Bison, A.A , p.

Pseudo codice. Paolo Bison. Fondamenti di Informatica 1 A.A. 2003/04 Università di Padova. Pseudo codice, Paolo Bison, A.A , p. Pseudo codice Paolo Bison Fondamenti di Informatica 1 A.A. 2003/04 Università di Padova Pseudo codice, Paolo Bison, A.A. 2003-04, 2003-09-30 p.1/38 Pseudo codice linguaggio testuale mix di linguaggio naturale

Dettagli

Semantica operazionale dei Linguaggi di Programmazione Imperativi. Espressioni. Sistema di transizioni per la semantica

Semantica operazionale dei Linguaggi di Programmazione Imperativi. Espressioni. Sistema di transizioni per la semantica Sistema di transizioni per la semantica Il nostro sistema non prevede la gestione degli errori di tipo o la gestione degli errori di scope delle veriabili Esso si bloccherà solo in caso di espressioni

Dettagli

Introduzione alla logica matematica

Introduzione alla logica matematica Introduzione alla logica matematica, Paolo Bison, A.A. 2004-05, 2004-10-26 p.1/29 Introduzione alla logica matematica Silvana Badaloni Paolo Bison Fondamenti di Informatica 1 A.A. 2004/05 Università di

Dettagli

Pseudo codice. Pseudo codice, Paolo Bison, FI07, p.1 / Pseudo codice, Paolo Bison, FI07, p.3

Pseudo codice. Pseudo codice, Paolo Bison, FI07, p.1 / Pseudo codice, Paolo Bison, FI07, p.3 Pseudo codice Pseudo codice Paolo Bison Fondamenti di Informatica A.A. 2007/08 Università di Padova linguaggio testuale mix di linguaggio naturale ed elementi linguistici con sintassi ben definita e semantica

Dettagli

Logica: materiale didattico

Logica: materiale didattico Logica: materiale didattico M. Cialdea Mayer. Logica (dispense): http://cialdea.dia.uniroma3.it/teaching/logica/materiale/dispense-logica.pdf Logica dei Predicati (Logica per l Informatica) 01: Logica

Dettagli

Logica per la Programmazione

Logica per la Programmazione Logica del Primo Ordine: Motivazioni, Sintassi e Interpretazioni Logica per la Programmazione Lezione 9 Proof System per la Logica del Primo Ordine Leggi per i Quantificatori Regole di inferenza: Generalizzazione

Dettagli

Un algoritmo realizza una relazione funzionale tra i valori di input e quelli di output

Un algoritmo realizza una relazione funzionale tra i valori di input e quelli di output Un algoritmo realizza una relazione funzionale tra i valori di input e quelli di output F = { (s, s ) } per ogni s esiste una e una sola coppia (s, s ). Esempio: un algoritmo che calcola il quadrato di

Dettagli

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

Sintassi. Linguaggi. 4: Sintassi. Claudio Sacerdoti Coen. Universitá di Bologna 24/02/2011. Claudio Sacerdoti Coen Linguaggi 4: Universitá di Bologna 24/02/2011 Outline 1 Wikipedia: La sintassi è la branca della linguistica che studia i diversi modi in cui le parole si uniscono tra loro per formare

Dettagli

Informatica

Informatica Informatica 2014-09-10 Nota: Scrivete su tutti i fogli nome e matricola. Esercizio 1. Si illustrino le differenze tra gli algoritmi di ricerca lineare e ricerca binaria su un vettore. Anche senza presentarli

Dettagli

Grammatiche Parse trees Lezione del 17/10/2012

Grammatiche Parse trees Lezione del 17/10/2012 Fondamenti di Programmazione A.A. 2012-2013 Grammatiche Parse trees Lezione del 17/10/2012 AUTILI MARCO http://www.di.univaq.it/marco.autili/ Riassunto lezione precedente Sintassi vs Semantica Stringhe,

Dettagli

Logica per la Programmazione

Logica per la Programmazione Logica per la Programmazione Lezione 6 Logica del Primo Ordine Motivazioni Sintassi Interpretazioni Formalizzazione pag. 1 Limiti del Calcolo Proposizionale Nella formalizzazione di enunciati dichiarativi,

Dettagli

STRUTTURE DI CONTROLLO DEL C++

STRUTTURE DI CONTROLLO DEL C++ STRUTTURE DI CONTROLLO DEL C++ Le istruzioni if e else Le istruzioni condizionali ci consentono di far eseguire in modo selettivo una singola riga di codice o una serie di righe di codice (che viene detto

Dettagli

Fondamenti teorici e programmazione

Fondamenti teorici e programmazione Fondamenti teorici e programmazione FTP(A) - modb Lezione 17 Soluzione dell esercizio 16.1 Grammatiche ambigue La grammatica di un semplice linguaggio imperativo F.Bonchi Dip.to Informatica Fondamenti

Dettagli

Semantica operazionale e denotazionale

Semantica operazionale e denotazionale Semantica operazionale e denotazionale Abbiamo definito la semantica di tre linguaggi di programmazione in termini operazionali, cioé in termini di sequenze di computazione Abbiamo assegnato un algoritmo

Dettagli

Logica per la Programmazione

Logica per la Programmazione Logica per la Programmazione Lezione 6 Logica del Primo Ordine Motivazioni Sintassi di Termini e Formule Formule aperte e chiuse A. Corradini e F.Levi Dip.to Informatica Logica per la Programmazione a.a.

Dettagli

Semantica dei linguaggi di programmazione

Semantica dei linguaggi di programmazione Corso di Informatica Generale II u.d. Semantica dei linguaggi di programmazione Mauro Brunato 17 maggio 2006 Indice 1 Definizioni 2 1.1 Proposizioni............................... 2 1.2 Regole di deduzione..........................

Dettagli

Induzione. Definizione induttiva di insiemi e funzioni Principio di induzione strutturale

Induzione. Definizione induttiva di insiemi e funzioni Principio di induzione strutturale Induzione Definizione induttiva di insiemi e funzioni Principio di induzione strutturale Gli insiemi definiti per induzione ricevono una struttura che può servire come base per la definizione induttiva

Dettagli

Testing, correttezza e invarianti

Testing, correttezza e invarianti Testing, correttezza e invarianti Capitolo 3.2 dispensa Moreno Marzolla Dipartimento di Informatica Scienza e Ingegneria (DISI) Università di Bologna http://www.moreno.marzolla.name/ 2 Harvard Mark II

Dettagli

Logica per la Programmazione

Logica per la Programmazione Logica del Primo Ordine: Motivazioni, Sintassi e Interpretazioni Logica per la Programmazione Lezione 9 Leggi per i Quantificatori pag. 1 Riassunto Abbiamo rivisitato le Regole di Inferenza del Calcolo

Dettagli

Logica Proposizionale

Logica Proposizionale Intelligenza rtificiale I Logica Proposizionale Introduzione Marco Piastra Intelligenza rtificiale I -.. 28-29 29 Introduzione al corso ] lgebre di Boole Definizione Una collezione di oggetti X su cui

Dettagli

Risoluzione di un problema

Risoluzione di un problema Algoritmi Risoluzione di un problema Descrizione di un problema! Individuazione di un ALGORITMO! Metodo risolutivo (progetto) Introduzione 2 Algoritmo Sequenza finita di mosse che risolve in un tempo finito

Dettagli

Introduzione alla logica matematica. Logica matematica. Paolo Bison

Introduzione alla logica matematica. Logica matematica. Paolo Bison Introduzione alla logica matematica Paolo Bison Fondamenti di Informatica Ingegneria Meccanica Università di Padova A.A. 2008/09 Logica matematica formalizzazione dei meccanismi di ragionamento la logica

Dettagli

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

Logica per la Programmazione Corso di Laurea in INFORMATICA a.a. 2018/19 Logica per la Programmazione Corso di Laurea in INFORMATICA a.a. 2018/19 Andrea Corradini e Filippo Bonchi Dipartimento di Informatica E-mail: andrea@di.unipi.it, filippo.bonchi@unipi.it A. Corradini e

Dettagli