LA LOGICA DI HOARE. Corso di Logica per la Programmazione A.A. 2010/11 Andrea Corradini, Paolo Mancarella
|
|
- Chiara Boscolo
- 7 anni fa
- Visualizzazioni
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 Dall inizio del corso ad ora abbiamo introdotto, un po alla volta, un linguaggio logico sempre più ricco: connettivi
DettagliLinguaggi 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
DettagliINTRODUZIONE 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:
DettagliLogica 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,
DettagliLogica 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,
DettagliLogica 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.
DettagliREGOLE 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
DettagliREGOLE 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
DettagliLogica 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
DettagliLogica 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
DettagliLogica 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
DettagliREGOLE 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
DettagliLogica 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
DettagliESEMPI 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
DettagliESEMPI 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
DettagliLogica 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
DettagliTRIPLE 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
DettagliLogica 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
DettagliLOGICA 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)
DettagliVerifica 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
DettagliLogica 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
DettagliSemantiche 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...
DettagliLOGICA 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
DettagliLOGICA 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
DettagliInterpreti, 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
DettagliQUANTIFICATORI 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
DettagliLogica 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
DettagliNote 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
DettagliLinguaggi 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
DettagliCosa 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
Dettaglicontiene 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
DettagliLogica 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
DettagliTecniche 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
DettagliInformatica
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
DettagliLOGICA 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
DettagliVerifica 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
DettagliSpecifica, 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
DettagliSpecifica 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
DettagliLogica 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
DettagliProgrammazione 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
Dettagli2. 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
DettagliIstruzioni 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
DettagliSemantica 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
DettagliLinguaggi. 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
DettagliIL 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
DettagliLinguaggi. 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
DettagliInformatica
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
DettagliLogica 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
Dettagli1 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
DettagliLogica 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
DettagliCALCOLO 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
DettagliPaolo 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
DettagliContenuti. 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
DettagliLOGICA 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,
DettagliSemantica 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
DettagliCALCOLO 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
DettagliLOGICA 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
DettagliLogica 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
DettagliLogica 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.
DettagliLogica 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
Dettaglisi 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
DettagliPaolo 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
DettagliLogica 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
DettagliUnità 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
DettagliPseudo 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
DettagliSemantica 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
DettagliIntroduzione 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
DettagliPseudo 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
DettagliLogica: 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
DettagliLogica 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
DettagliUn 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
DettagliSintassi. 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
DettagliInformatica
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
DettagliGrammatiche 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,
DettagliLogica 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,
DettagliSTRUTTURE 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
DettagliFondamenti 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
DettagliSemantica 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
DettagliLogica 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.
DettagliSemantica 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..........................
DettagliInduzione. 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
DettagliTesting, 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
DettagliLogica 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
DettagliLogica 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
DettagliRisoluzione 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
DettagliIntroduzione 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
DettagliLogica 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