Informatica

Documenti analoghi
Informatica

Informatica

Informatica

Logica per la Programmazione

Logica per la Programmazione

Logica per la Programmazione

Logica per la Programmazione

Logica per la Programmazione

Logica per la Programmazione

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

Logica per la Programmazione

Verifica di programmi

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

Logica per la Programmazione

Logica per la Programmazione

Tecniche di prova per induzione

Esercizi per il Corso di Informatica (LT Matematica)

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

DAI NUMERI NATURALI AI NUMERI RAZIONALI

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

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

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

INTRODUZIONE ALLA LOGICA DI HOARE. 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

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

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

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

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

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

Silvia Crafa Primo Semestre AA

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

Logica per la Programmazione

Semantica di Kripke per LJ

Istituzioni di Logica Matematica

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

Logica per la Programmazione

ELEMENTI DI LOGICA MATEMATICA LEZIONE VII

INDUZIONE E NUMERI NATURALI

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

Lo sviluppo di un semplice programma e la dimostrazione della sua correttezza

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

ALGEBRA I: ASSIOMI DI PEANO E PROPRIETÀ DEI NUMERI NATURALI

Esercizi per il corso Matematica clea

Esercizi sul Calcolo Proposizionale

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

02 - Logica delle dimostrazioni

PRINCIPIO DI INDUZIONE E APPLICAZIONI

METODI MATEMATICI PER L INFORMATICA

METODI MATEMATICI PER L INFORMATICA

Verifica dei programmi

Elezione di un leader in una rete ad anello

CALCOLO PROPOSIZIONALE: CENNI

NON SFOGLIARE IL TESTO PRIMA CHE VENGA DATO UFFICIAMENTE INIZIO ALLA PROVA DAL DOCENTE

Un problema di programmazione dei lavori

04 - Logica delle dimostrazioni

LA FORMULA DI TAYLOR

Esercizi di Logica Matematica (parte 2)

METODI MATEMATICI PER L INFORMATICA

Nozioni di base (II Parte)

Logica per la Programmazione

LOGICA PER LA PROGRAMMAZIONE a.a. 2016/17 Seconda esercitazione - 11/10/16 - Soluzioni Proposte

Nome: Corso di laurea: Matricola:

ESERCIZI DI LOGICA MATEMATICA A.A Alessandro Combi

LOGICA PER LA PROGRAMMAZIONE a.a. 2017/18 Terza esercitazione 24/ Soluzioni Proposte

Esercitazioni per il corso di Logica Matematica

Specifica, progetto e verifica della correttezza di algoritmi iterativi

Introduzione alla logica proposizionale

4. Algoritmi Numerici Fondamentali

Errata corrige del libro Introduzione alla logica e al linguaggio matematico

LOGICA MATEMATICA PER INFORMATICA (A.A. 12/13)

1 (a) [3 punti] Si consideri la successione (a n ) n N definita per ricorrenza nel modo seguente: a 0 = 1 2 a n = a n

CORSO DI GEOMETRIA DETERMINANTE A.A. 2018/2019 PROF. VALENTINA BEORCHIA

Misure e loro proprietà (appunti per il corso di Complementi di Analisi Matematica per Fisici, a.a )

RISOLUZIONE IN LOGICA PROPOSIZIONALE. Giovanna D Agostino Dipartimento di Matemaica e Informatica, Università di Udine

Logica per la Programmazione

Insiemi Numerici: I Numeri Naturali

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

LOGICA MATEMATICA PER INFORMATICA

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

interpretazione astratta

Gli insiemi N, Z e Q. I numeri naturali

Deduzione naturale. Claudio Sacerdoti Coen 20,22,... /11/2017. Universitá di Bologna. Correttezza e mancanza di completezza

Logica proposizionale classica. Studia il comportamento dei connettivi proposizionali quali ( And ) e ( Or )

Si imposti la relazione di ricorrenza che ne descrive la complessità e la si risolva utilizzando il metodo della sostituzione.

Teorema 1.1. (Teorema di Compattezza) Sia Γ un insieme di formule di un linguaggio proposizionale.

Linguaggi. Claudio Sacerdoti Coen 28/03/ : Deduzione naturale. Universitá di Bologna. Deduzione naturale

Principio di induzione: esempi ed esercizi

Sviluppi e derivate delle funzioni elementari

Complemento 1 Gli insiemi N, Z e Q

a cura di Luca Cabibbo e Walter Didimo

Insiemi Numerici: I Numeri Naturali. 1 I Numeri Naturali: definizione assiomatica

Ragionamento formalei. Ragionamento formale

Dispensa di Informatica Teorica (Elementi) - Teorema di Cook

Notazione: nel seguito, dato un insieme A, P(A) indicherà l insieme delle parti di A.

Transcript:

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 semantica. Esercizio 2. Le seguenti regole definiscono induttivamente l insieme T degli alberi binari di numeri naturali (regole [T 0], [T 1]), una relazione R P(T N) (regole [R0], [R1]) e una relazione Q P(T T ) (regole [Q0], [Q1]). Sotto, n, m indicano naturali mentre l, r, t e analoghi indicano alberi in T. n (n N)[T 0] l r (l, r) [T 1] R(n, 1) [R0] R(l, n) R(r, m) [R1] R((l, r), n + m) Q(n, n + 1) [Q0] Q(t 1, t 1) Q(t 2, t 2) Q(t 3, t 3) [Q1] Q((t 1, (t 2, t 3 )), ((t 1, t 2), t 3)) 1. [20%] Si fornisca un albero t T per cui valga Q((1, ((2, (3, 4)), 5)), t) e si giustifichi la risposta esibendo una derivazione. 2. [20%] Si enunci il principio di induzione associato alla relazione Q. 3. [10%] Si consideri l enunciato seguente: t, t T, k N. R(t, k) Q(t, t ) = R(t, k) Si riscriva l enunciato in modo logicamente equivalente nella forma per un qualche predicato p. t, t T. Q(t, t ) = p(t, t ) 4. [50%] Si concluda la dimostrazione dell enunciato visto sopra usando il principio di induzione associato a Q. Parte 1. Q(2, 3) Q(3, 4) Q(4, 5) Q(1, 2) Q((2, (3, 4)), ((3, 4), 5)) Q(5, 6) Q( (1, ((2, (3, 4)), 5)), ((2, ((3, 4), 5)), 6) ) Parte 2. Sia p(, ) una proprietà su due alberi. Per dimostrare che, per ogni t, t alberi che soddisfano Q(t, t ) vale che p(t, t ) è sufficiente verificare che: Q0) n N. p(n, n + 1) Q1) t 1, t 2, t 3, t 1, t 2, t 3. p(t 1, t 1) p(t 2, t 2) p(t 3, t 3) = p((t 1, (t 2, t 3 )), ((t 1, t 2), t 3))) Parte 3. L enunciato si riscrive equivalentemente come che si riscrive equivalentemente come t, t S, k N. R(t, k) Q(t, t ) = R(t, k) t, t S, k N. Q(t, t ) R(t, k) = R(t, k) t, t S. Q(t, t ) = ( k N. R(t, k) = R(t, k))

Quindi basta definire p(t, t ) come k N. R(t, k) = R(t, k) Parte 4. Procediamo quindi per induzione. Caso Q0. Non ci sono ipotesi induttive. Dobbiamo dimostrare p(n, n+1) ovvero k. R(n, k) = R(n + 1, k). Assumiamo IP 1 : R(n, k) e dimostriamo la nuova tesi R(n + 1, k). Invertendo IP 1, siccome può essere derivata solo da R0, abbiamo k = 1. La tesi diventa quindi R(n + 1, 1) che deriva da R0. Caso Q1. Per ipotesi induttive assumiamo p(t 1, t 1), p(t 2, t 2) e p(t 3, t 3), ovvero: IP 1 : k 1.R(t 1, k 1 ) = R(t 1, k 1 ) IP 2 : k 2.R(t 2, k 2 ) = R(t 2, k 2 ) IP 3 : k 3.R(t 3, k 3 ) = R(t 3, k 3 ) Dobbiamo dimostrare p((t 1, (t 2, t 3 )), ((t 1, t 2), t 3))), cioè: Assumiamo quindi k.r((t 1, (t 2, t 3 )), k) = R(((t 1, t 2), t 3)), k) IP 4 : R((t 1, (t 2, t 3 )), k) e dimostriamo la tesi R(((t 1, t 2), t 3)), k). Invertendo IP 4, siccome può essere ricavata solo da R1, otteniamo che, per qualche k 1, k si ha: IP 5 : R(t 1, k 1 ) IP 6 : R((t 2, t 3 ), k) dove k 1 + k = k. Analogamente, invertendo IP 6, siccome può essere ricavata solo da R1, otteniamo che, per qualche k 2, k 3 si ha: IP 7 : R(t 2, k 2 ) IP 8 : R(t 3, k 3 ) dove k 2 + k 3 = k. Di conseguenza, k = k 1 + k 2 + k 3. Usiamo ora le ipotesi induttive: Da IP 1 (con k 1 = k 1 ) e IP 5 si ha IP 9 : R(t 1, k 1 ). Da IP 2 (con k 2 = k 2 ) e IP 7 si ha IP 10 : R(t 2, k 2 ). Da IP 3 (con k 3 = k 3 ) e IP 8 si ha IP 11 : R(t 3, k 3 ). Sfruttando IP 9, IP 10, IP 11, ricaviamo la tesi come segue: R(t 1, k 1 ) R(t 2, k 2 ) R((t 1, t 2), k 1 + k 2 ) R(t 3, k 3 ) R(((t 1, t 2), t 3), k 1 + k 2 + k 3 = k) Esercizio 3. 1. [10%] Si consideri la proprietà P (x, y, c) descritta informalmente da: Supponiamo che, partendo da un certo stato, il comando c termini, e che alla fine la variabile y abbia un certo valore. Allora, anche partendo da un altro stato che differisce solo per il valore della variabile x, si otterrebbe comunque la terminazione e il valore di y alla 2

fine sarebbe lo stesso.. Per esempio P (x, y, y := 7) è vera, mentre P (x, y, y := 7+x) è falsa. Si forniscano tre insiemi A, B, C in modo che P, vista come relazione, soddisfi P P(A B C). 2. [20%] Si definisca P (x, y, c) rigorosamente tramite un opportuna formula logica. 3. [70%] Si considerino gli asserti sottostanti. Per gli asserti veri, si fornisca una giustificazione informale per la loro validità. Per quelli falsi, si fornisca un controesempio. A) x, y. x y = P (x, y, skip) B) x, y, c 1, c 2. x y = P (x, y, if x 0 then c 1 else c2) C) x, y, e. x y = P (x, y, while e 0 do y := x x 16) Parte 1. P P(V ar V ar Com) Parte 2. P (x, y, c) può essere definita come σ, σ. c, σ b σ = v. σ. c, σ[x v] b σ σ (y) = σ (y) Parte 3. A) è vera, in quanto skip termina sempre e lascia il valore di y inalterato, qualunque sia il valore di x all inizio. B) è falsa, in quanto se eseguiamo if x 0 then y := 1 else y := 2 il comando termina sempre, ma il valore finale di y è 2 se x all inizio vale 0, altrimenti è 1. Anche C) è falsa, in quanto se prendiamo e = 0, il comando while 0 0 do y := x x 16 diventa equivalente a skip e quindi soddisfa P. (Alternativamente, prendere e = 1 non fa terminare mai il ciclo, e quindi P diventa vacuamente vera.) 3

Nome Matricola Esercizio 4. Si dimostri formalmente la validità della tripla di Hoare seguente riempiendo le linee sottostanti con opportune asserzioni. Sotto, N è un naturale. {n = 2 N } x := 1; while n > 1 do n := n/2 ; x := x 2 {x = 2 N } Giustificare qui sotto eventuali usi della regola P rep ost.

{n = 2 N } (1) {n 1 = 2 N n 1} x := 1; {INV : n x = 2 N n 1} while n > 1 do {INV n > 1} (2) { n/2 (2x) = 2 N n 1} n := n/2 ; {n (2x) = 2 N n 1} x := 2 x {INV (n > 1)} (3) {x = 2 N } Per le PrePost: 1) n 1 = 2 N segue banalmente dall ipotesi. Inoltre, siccome N è un naturale, si ha n = 2 N 1. 2) Dalle ipotesi si ha nx = 2 N e n > 1. Di qui, siccome x è un intero, segue che n deve essere potenza di 2. Inoltre non può essere 1 perché n > 1, quindi n è pari e n/2 = n/2. Possiamo quindi ottenere n/2 (2x) = n/2 (2x) = nx = 2 N. La tesi n 1 segue banalmente da n > 1. 3) Per ipotesi n 1 ma (n > 1), quindi n = 1. Da INV si ha quindi x = nx = 2 N che è la tesi.