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

Documenti analoghi
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

Logica per la Programmazione

Logica per la Programmazione

Logica per la Programmazione

CALCOLO DEL PRIMO ORDINE

Logica per la Programmazione

Verifica di programmi

CALCOLO PROPOSIZIONALE

Logica per la Programmazione

INSIEMI. DEF. Un INSIEME è una qualsiasi collezione di oggetti.

CALCOLO PROPOSIZIONALE. Corso di Logica per la Programmazione Andrea Corradini

DIMOSTRAZIONE DI IMPLICAZIONI TAUTOLOGICHE. Corso di Logica per la Programmazione A.A. 2010/11 Andrea Corradini

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

DIMOSTRAZIONI DI TAUTOLOGIE. Corso di Logica per la Programmazione A.A. 2010/11 Andrea Corradini, Paolo Mancarella

DIMOSTRAZIONI E TAUTOLOGIE, IPOTESI NON TAUTOLOGICHE. Corso di Logica per la Programmazione A.A. 2013/14 Andrea Corradini

Maiuscole e minuscole

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

Logica proposizionale

Logica per la Programmazione

LOGICA PER LA PROGRAMMAZIONE

04 - Logica delle dimostrazioni

Logica proposizionale

Logica per la Programmazione

Logica per la Programmazione

Logica per la Programmazione

Un introduzione al corso di LOGICA PER LA PROGRAMMAZIONE

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

02 - Logica delle dimostrazioni

Logica degli enunciati; Operazioni con le proposizioni; Proprietà delle operazioni logiche; Tautologie; Regole di deduzione; Logica dei predicati;

Esercitazioni per il corso di Logica Matematica

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

DIMOSTRAZIONI DI EQUIVALENZE, SUI CONNETTIVI E SULL'AMBIGUITA' DELLA SINTASSI. Corso di Logica per la Programmazione

Cicli ed asserzioni. Ordinamento. Dato un intero positivo n ed una sequenza di n elementi a 1,...,a n

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

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

Verifica dei programmi

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

Esercizi di logica. Ivan Valbusa 5 dicembre 2012

Introduzione alla logica

Semantica proposizionale. Unit 2, Lez 3 e 4 Corso di Logica

Logica proposizionale

Cenni di logica e calcolo proposizionale

Logica per la Programmazione

SeparationLogic. Tecniche Automatiche per la Correttezza del Software

Luca Costabile Esercizi di Logica Matematica Dispensa Calcolo Proposizionale 1

Proposizioni. 1) Tra le seguenti frasi riconoscere le proposizioni, e stabilirne poi il valore di verità:

Soluzioni degli Esercizi da Svolgere Capitolo 8

NOZIONI DI LOGICA. Premessa

Insiemi, Numeri, Terminologia. Prof. Simone Sbaraglia

NOZIONI DI LOGICA PROPOSIZIONI.

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

Valutazione Lazy. Prefazione alla lezione

Un po di logica. Christian Ferrari. Laboratorio di matematica

1. equivalenze e implicazioni logiche. Esercizio 1.2. Trovare le implicazioni che legano i seguenti enunciati (x, y R):

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

Le basi del linguaggio Java

Rappresentazione degli algoritmi

Esercitazione 4. Comandi iterativi for, while, do-while

Prerequisiti Matematici

ISTITUTO TECNICO STATALE COMMERCIALE E PER GEOMETRI A. MARTINI Castelfranco Veneto (TV) Elementi di Logica

Linguaggio C. Condizioni composte (operatori logici)

Calcoli dei sequenti classici e lineare

Pr1: determinare il maggiore di n numeri interi n. Fondamenti di Informatica Prof. Vittoria de Nitto Personè

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

Le equazioni. 2x 3 = x + 1. Definizione e caratteristiche

Prova scritta di Matematica Discreta e Logica del giorno 3 luglio 2017 Soluzione degli esercizi FILA D

LOGICA MATEMATICA PER INFORMATICA

Semantica Assiomatica

UNIVERSITÀ DEGLI STUDI LA SAPIENZA CORSO DI STUDI IN INFORMATICA ESERCITAZIONI AL CORSO DI LOGICA MATEMATICA LOGICA PROPOSIZIONALE

Cenni di logica matematica e di teoria degli insiemi Paola Rubbioni

Programmazione a blocchi. Algobuild Prof. Sergio Roselli

m = a k n k + + a 1 n + a 0 Tale scrittura si chiama rappresentazione del numero m in base n e si indica

Aritmetica in Floating Point

Diagramma a blocchi per la selezione, in un mazzo di chiavi, di quella che apre un lucchetto

Equazioni di primo grado

Le strutture di controllo

LOGICA DEL PRIMO ORDINE: MOTIVAZIONI, SINTASSI E INTERPRETAZIONI

Logica booleana, Costrutto IF

Materiale didattico aggiuntivo - Analisi Matematica I CENNI DI LOGICA MATEMATICA. 1. Proposizioni. Valori logici. Connettivi logici. Tavole di verita.

Informatica/ Ing. Meccanica/ Edile/ Prof. Verdicchio/ 17/01/2014/ Foglio delle domande / VERSIONE 1

5 - Istruzioni condizionali

ESERCIZI SULLE DISEQUAZIONI I

401 PREDICATI RICORSIVI PRIMITIVI

Strutture di controllo iterative

Principio di induzione: esempi ed esercizi

Elementi di logica. SCOPO: introdurre nozioni di logica & vocabolario per una corretta interpretazione delle dimostrazioni.

Alcune Tracce dei Precedenti Esami del Dottorato di Siena in Logica Matematica ed Informatica Teorica

Introduzione ad alcuni sistemi di logica modale

Riassumiamo le proprietà dei numeri reali da noi utilizzate nel corso di Geometria.

Riconoscere e formalizzare le dipendenze funzionali

Calcolare lo Span di un array di numeri

17/10/16. Espressioni Booleane

Problema: dati i voti di tutti gli studenti di una classe determinare il voto medio della classe.

1 Richiami di logica matematica

Operatori in Java. Il Costrutto Condizionale if

Tipi di dato primitivi

I predicati cut e not

Transcript:

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 altre soluzioni corrette, anche molto diverse da quelle proposte. ESERCIZIO 1 Si dica se le seguenti proposizioni sono tautologie oppure no. Se una proposizione è una tautologia, lo si deve dimostrare senza usare le tabelle di verità; altrimenti va prodotto un controesempio mostrando esplicitamente che rende la formula falsa. 1. P R S Q P R Q S 2. P R S Q P S R R Q SOLUZIONE ESERCIZIO 1 1. La formula è una tautologia come mostrato di seguito. Consideriamo la premessa e modifichiamola usando Contropositiva: P R S Q P {Contropositiva, Doppia Negazione, due volte} R P P S Q {De Morgan} R P P S Q Ora dimostramo la conseguenza R Q S usando i due congiunti della premessa come ipotesi non tautologiche. Cominciamo dalla premessa R Q: R Q {Ip: R P, occorrenza positiva} P Q {Ip: P S Q, occorrenza positiva} S Q Q {Sempl-, occorrenza positiva} S 2. La formula non è una tautologia, in quanto l interpretazione: {P, R, S F, Q } la rende falsa. La seguente valutazione riga della tabella di verità corrispondente all interpretazione giustifica la risposta i numeri indicano l ordine in cui sono state valutate le sottoformule.: P R S Q P R S Q P S R R Q F F F F F F F F F F F F 1 3 2 1 5 1 3 2 1 4 2 1 6 1 3 2 1 4 1 3 2 1 1

ESERCIZIO 2 Si formalizzi il seguente enunciato usando l alfabeto con simboli di costante C = {L, P} e simboli di predicato P = {citta, volo, partenza,, arrivo, } rispetto all interpretazione fissata D, α, dove D è l insieme di tutte le città e di tutti i voli, e αl è la città Londra, αp è la città Parigi, αcittap è vera se e solo se p è una città, αvolop è vera se e solo se p è un volo aereo, αpartenzap, q è vera se e solo se il volo p parte dalla città q, αarrivop, q è vera se e solo se il volo p arriva nella città q. Ogni città ha almeno un volo aereo per Parigi o per Londra. SOLUZIONE ESERCIZIO 2 x. cittax y. voloy partenzay, x arrivoy, L arrivoy, P ESERCIZIO 3 Si provi che la seguente formula è valida P, Q, R e S contengono la variabile libera x: x. P R x. Q S x. Q R x. P S R SOLUZIONE ESERCIZIO 3 Applichiamo De Morgan nella formula per portare le negazioni all interno: x. P R x. Q S x. Q R x. P S R {De Morgan, Doppia Negazione, più volte} x. P R x. Q S x. Q R x. P S R Per il Principio di Skolemizzazione, è sufficiente dimostrare la seguente implicazione, dove d è una nuova costante: x. P R x. Q S x. Q R Q[ d / x ] R[ d / x ] x. P S R Partiamo dalla premessa: x. P R x. Q S x. Q R Q[ d / x ] R[ d / x ] {semp-, occorrenza positiva} x. P R x. Q S Q[ d / x ] R[ d / x ] { :, occorrenza positiva} x. P R Q S Q[ d / x ] R[ d / x ] {elim-, occorrenza positiva} P [ d / x ] R[ d / x ] Q[ d / x ] S[ d / x ] Q[ d / x ] R[ d / x ] {Risoluzione} P [ d / x ] R[ d / x ] S[ d / x ] R[ d / x ] {sempl-, occorrenza positiva} P [ d / x ] S[ d / x ] R[ d / x ] {intro- } x. P S R ESERCIZIO 4 Si formalizzi il seguente enunciato assumendo a, b: array [0, n of int: Il numero degli elementi pari dell array b è maggiore del numero degli elementi dispari dell array a solo se il minimo dell array a è pari. 2

SOLUZIONE ESERCIZIO 4 #{i : i [0, y + 1 parib[i]} > #{i : i [0, n disparia[i]} parimin i : i [0, n. a[i] ESERCIZIO 5 Si verifichi la seguente tripla di Hoare assumendo a,b: array [0, n of int: {h 0, n i. i [0, h a[i] = Σy : y [0, i]. b[y] } a[h] := b[h] + a[h-1]; h := h + 1 { i. i [0, h a[i] = Σy : y [0, i]. b[y] } SOLUZIONE ESERCIZIO 5 Chiamiamo Q la postcondizione: i. i [0, h a[i] = Σy : y [0, i]. b[y] Per dimostrare la tripla data applichiamo la regola di inferenza della Sequenza riducendoci a dimostrare che 5.1 {h 0, n Q} a[h] := b[h] + a[h-1] {R} 5.2 {R } h:=h+1 {Q} Partiamo quindi dalla 5.2 per determinare R. Applicando l assioma dell assegamento ASS otteniamo: defh + 1 i. i [0, h a[i] = Σy : y [0, i]. b[y] [ h+1 / h ] {definizione di def e sostituzione} i. i [0, h + 1 a[i] = Σy : y [0, i]. b[y] Quindi R è la seguente asserzione: i. i [0, h + 1 a[i] = Σy : y [0, i]. b[y] Per dimostrare la 5.1 applichiamo l Assioma dell Aggiornamento Selettivo, e la regola PRE. Di conseguenza ci riduciamo a verificare che: [ ] h 0, n Q defh h doma defb[h] + a[h 1] R[ a / a ] dove a = a b[h]+a[h 1] / h defh h doma defb[h] + a[h 1] R[ a / a ] {definizione di def } h doma h domb h 1 doma R[ a / a ] {Ip: h 0, n domb = doma = [0, n, sostituzione} i. i [0, h + 1 a [i] = Σy : y [0, i]. b[y] {Intervallo-, 0, h] non vuoto infatti per ipotesi h 0, n, quindi h > 0 } i. i [0, h a [i] = Σy : y [0, i]. b[y] a [h] = Σy : y [0, h]. b[y] {per def di a : a [i] = a[i] per ogni i [0, h e a [h] = b[h] + a[h 1]} i. i [0, h a[i] = Σy : y [0, i]. b[y] b[h] + a[h 1] = Σy : y [0, h]. b[y] { } Ip: i. i [0, h a[i] = Σy : y [0, i]. b[y] b[h] + a[h 1] = Σy : y [0, h]. b[y] {Intervallo-Σ} b[h] + a[h 1] = Σy : y [0, h 1]. b[y] + b[h] { } Ip: i. i [0, h a[i] = Σy : y [0, i]. b[y], h 1 [0, h, calcolo 3

ESERCIZIO 6 Si consideri il seguente programma annotato assumendo a, c: array [0, m of int: { m > 0 } y:= 0; h := 0; {Inv : y [0, m] h = #{i : i [0, y a[i] = c[i]}}{t: m y} while y < m do if a[y] = c[y] then h := h + 1 else skip fi; y := y + 1 endw {h = #{i : i [0, m a[i] = c[i]}} Scrivere e dimostrare l ipotesi di invarianza. SOLUZIONE ESERCIZIO 6 Invariante Inv : y [0, m] h = #{i : i [0, y a[i] = c[i]} Funzione di terminazione t : m y Condizione E : y < m Comando C : if a[y] = c[y] then h := h + 1 else skip fi; y := y + 1 L Ipotesi di Invarianza {Inv E} C {Inv defe} in questo caso è {y [0, m] h = #{i : i [0, y a[i] = c[i]} y < m} if a[y] = c[y] then h := h + 1 else skip fi; y := y + 1 {y [0, m] h = #{i : i [0, y a[i] = c[i]} defy < m} Applicando la Regola della Sequenza, dobbiamo trovare una asserzione R tale che le seguenti triple siano verificate: 6.1 {y [0, m] h = #{i : i [0, y a[i] = c[i]} y < m} if a[y] = c[y] then h := h + 1 else skip fi {R} 6.2 {R} y := y + 1 {y [0, m] h = #{i : i [0, y a[i] = c[i]} defy < m} Per determinare R, usiamo l Assioma dell Assegnamento in 6.2 e troviamo defy + 1 Inv defy < m [ y+1 / y ] {sostituzione, definizione di def, calcolo} y + 1 [0, m] h = #{i : i [0, y + 1 a[i] = c[i]} defy + 1 < m Quindi resta da verificare la tripla 6.1 per il valore di R appena calcolato. Applicando la regola del Condizionale, dobbiamo verificare che 6.2.1 y [0, m] h = #{i : i [0, y a[i] = c[i]} y < m defa[y] = c[y] 6.2.2 {y [0, m] h = #{i : i [0, y a[i] = c[i]} y < m a[y] = c[y] } h:=h+1 {R} 6.2.3 {y [0, m] h = #{i : i [0, y a[i] = c[i]} y < m a[y] = c[y] } skip {R} Per dimostrare 6.2.1 partiamo dalla conseguenza defa[y] = c[y] {definizione di def} y doma y domb {Ip: y [0, m] y < m doma = domb = [0, m} 4

Per dimostrare la 6.2.2 applichiamo la regola dell Assegnamento e ci riduciamo a verificare che y [0, m] h = #{i : i [0, y a[i] = c[i]} y < m a[y] = c[y] defh + 1 y + 1 [0, m] h = #{i : i [0, y + 1 a[i] = c[i]} defy + 1 < m [ h+1 / h ] defh + 1 y + 1 [0, m] h = #{i : i [0, y + 1 a[i] = c[i]} defy + 1 < m [ h+1 / h ] {definizione di def, sostituzione} y + 1 [0, m] h + 1 = #{i : i [0, y + 1 a[i] = c[i]} {Ip: y [0, m] y < m} h + 1 = #{i : i [0, y + 1 a[i] = c[i]} {Intervallo-#, Ip: a[y] = c[y] } h + 1 = #{i : i [0, y a[i] = c[i]} + 1 {Ip: h = #{i : i [0, y a[i] = c[i]}, calcolo} Per dimostrare la 6.2.3, per la regola SKIP è sufficiente dimostrare: y [0, m] h = #{i : i [0, y a[i] = c[i]} y < m a[y] = c[y] R y + 1 [0, m] h = #{i : i [0, y + 1 a[i] = c[i]} defy + 1 < m {definizione di def } y + 1 [0, m] h = #{i : i [0, y + 1 a[i] = c[i]} {Ip: y [0, m] y < m} h = #{i : i [0, y + 1 a[i] = c[i]} {Intervallo-#, Ip: a[y] = c[y] } h = #{i : i [0, y a[i] = c[i]} {Ip: h = #{i : i [0, y a[i] = c[i]}} 5