Fondamenti teorici e programmazione FTP(A) - modb Lezione 8 F.Bonchi Dip.to Informatica Fondamenti teorici e programmazione (A) - modb a.a. 2018/19 pag. 1
Ragionamento formale Comprendere le basi del ragionamento formale, utilizzato in matematica per dimostrare teoremi all interno di teorie, è fondamentale tra gli informatici. Come si può sapere quando un programma è fa esattamente cosa ci aspettiamo? Una pratica abbastanza comune è il testing, cioè l esecuzione del programma su alcuni input. Questo però non garantisce la certezza del programma, perchè tutti i possibili input sono infiniti. E quando il programma non calcola correttamente? Esercitarsi a ragionare in modo formale aiuta a definire i programmi che sono, appunto, delle specifiche formali. F.Bonchi Dip.to Informatica Fondamenti teorici e programmazione (A) - modb a.a. 2018/19 pag. 2
Ragionamento formale - continua I concetti che vengono introdotti in modo informale sono trattati formalemente in: logica proposizionale logica del primo ordine. In questo corso non c è spazio per studiare tali formalismi, ma tratteremo solo alcuni aspetti. F.Bonchi Dip.to Informatica Fondamenti teorici e programmazione (A) - modb a.a. 2018/19 pag. 3
Ragionamento formale - continua II teoremi in generale vengono espressi attraverso formule che sono espressioni che possono risultare vere (true) o false (false). Tali espressioni contengono connettivi logici tra cui (l and e l or e il not ma anche altri) e fatti semplici (detti anche proposizioni) Ad esempio il Teorema di Pitagora per i triangoli rettangoli, ha il seguente enunciato: Se (a, b) sono i cateti di un triangolo rettangolo e c è l ipotenusa allora a 2 + b 2 = c 2. Tutto ciò che si trova tra Se e allora è detta ipotesi, costituita da uno o più fatti che vengono assunti essere veri. Ciò che appare dopo allora è la tesi: ciò che bisogna dimostrare. Questa forma di enunciato è una implicazione. Se p allora q. Si può anche scrivere p q. Una volta dimostrato un teorema con un tipo di enunciato di questo genere, se ci troviamo in una situazione in cui l ipotesi è vera possiamo dedurre che anche la tesi è vera, applicando il teorema. F.Bonchi Dip.to Informatica Fondamenti teorici e programmazione (A) - modb a.a. 2018/19 pag. 4
Sostituzione Le formule possono essere istanziate, sostituendo una o più variabili che vi compaiono, con un valore dell insieme. L operazione di sostituzione in un asserzione E del simbolo di variabile con un valore, viene indicata con E[v/x] Ad esempio se E = x 4 2 x x 2 E [4/x]=4 4 2 4 4 2 E [5/x] = 5 4 2 5 5 2... Ad esempio se E = (R = R; Id A ) E [ /R]=( = ; Id A ) E [(R; S)/R]=( (R; S) = (R; S); IdA )... In generale se ho un espressione E, indichiamo con E[q/p] l espressione risultante dalla sostituzione di tutte le occorrenze di p in E con q. p e q possono essere anche due espressioni equivalenti oppure il nome di una variabile e un suo possibile valore, come sopra. F.Bonchi Dip.to Informatica Fondamenti teorici e programmazione (A) - modb a.a. 2018/19 pag. 5
Implicazione L implicazione si può esprimere in vari modi, nel linguaggio comune: Se A allora B A implica B A solo se B B se A Quando A, segue B B è condizione necessaria per A È però importante comprendere il significato dell implicazione: se A è vero allora deve essere vero anche B. se viceversa A è falso non sappiamo nulla su B se invece B è falso allora deve essere falso anche A F.Bonchi Dip.to Informatica Fondamenti teorici e programmazione (A) - modb a.a. 2018/19 pag. 6
Significato dell Implicazione L implicazione è un operatore (connettivo) logico simile all and e all or il cui valore true o false dipende dal valore dei suoi argomenti. Analogamente all and e or il significato di è riassunto nella seguente tabellina. A B A B true true true true false false false true true false false true Esempio: Se piove la starda è bagnata, è un implicazione. F.Bonchi Dip.to Informatica Fondamenti teorici e programmazione (A) - modb a.a. 2018/19 pag. 7
Quantificatori: Quando non è ovvio quale siano i valori che una variabile può assumere è possibile esprimere esplicitamente tale insieme, utilizzando un quantificatore universale il, che si legge per ogni Dopo un quantificatore compare la variabile e il simbolo seguito dall insieme. Il significato è quello già discusso che la formula deve essere vera per tutti gli elementi dell insieme. Ad esempio, se A = {0, 2, 6, 10} la formula x A, x%2 = 0, asserisce che tutti gli elementi di A sono pari. Un quantificatore universale può anche non specificare l insieme in questo caso si riferisce all universo U. F.Bonchi Dip.to Informatica Fondamenti teorici e programmazione (A) - modb a.a. 2018/19 pag. 8
Quantificatori, In altri casi vogliamo invece esprimere fatti che riguardano solo alcuni elementi di un insieme. In questo caso si usa il quantificatore, che si legge esiste Il significato è che la formula di cui si sta trattando deve essere vera per almeno un elemento dell insieme. Ad esempio, se A = {0, 3, 6, 1} la formula x A, x modulo 2 = 0, asserisce che almeno un elemento di A è pari. Ovviamente se A = {9, 3, 7, 1} la formula x A, x modulo 2 = 0, che asserisce che almeno un elemento di A è pari, risulta falsa. Anche in questo caso, se l insieme non è specificato, ci si sta riferendo all universo U. F.Bonchi Dip.to Informatica Fondamenti teorici e programmazione (A) - modb a.a. 2018/19 pag. 9
Enunciati Se e solo se È un enunciato di equivalenza di due proposizioni H e C. Si può esprimere in vari modi: H C H C H se e solo se C H iff (sse) C H equivalente C Un simile teorema è costituito da due implicazioni: H C e C H La dimostrazioni consta conseguentemente di due parti: la dimostrazione che H C e quella che C H. Tutte le proprietà enunciate sugli insiemi come ad esempio la proprietà distributiva A (B C) = (A B) (A C), sono teoremi se e solo se. (Potete provare a dimostrarle per esercizio). F.Bonchi Dip.to Informatica Fondamenti teorici e programmazione (A) - modb a.a. 2018/19 pag. 10
Dimostrazioni per assurdo Per dimostrare H C alle volte è conveniente dimostrare che: H!C false in altre parole si dimostra che assumere che quando H è vero, C è falso fa seguire logicamente qualcosa di notoriamente falso. Ricordiamo la tabella di, H C H C true true true true false false false true true false false true Dimostrando che H e!c portano ad un assurdo, dimostriamo che il secondo caso non può verificarsi e quindi l implicazione è vera. F.Bonchi Dip.to Informatica Fondamenti teorici e programmazione (A) - modb a.a. 2018/19 pag. 11
Contronominale Per dimostrare H C alle volte è conveniente dimostrare che!c!h che è logicamente equivalente. Vediamo un esempio per convincerci di questa equivalenza, sia: H =piove C =la strada è bagnata H C può essere tradotto in: Se piove allora la strada è bagnata!c!h può essere tradotto in la strada non è bagnata allora non piove Esercizio Provate a dimostrare la seguente proprietà sugli insiemi: A B = B B A F.Bonchi Dip.to Informatica Fondamenti teorici e programmazione (A) - modb a.a. 2018/19 pag. 12
Controesempi Spesso i teoremi sono proprietà di cui dovrebbero godere tutti gli elementi di un dato insieme (infinito). Ovvero enunciati del tipo Tutti i numeri primi sono dispari. Se cercando di dimostrare il teorema ci viene il sospetto che sia falso, è sufficiente trovare un controesempio. Nel caso precedente 2 è il controesempio che dimostra che il teorema è falso. Questo modo di operare ci tornerà utile in diversi casi. Ad esempio per dimostrare che un programma non è corretto è sufficiente trovare un caso in cui il risultato calcolato non è il risultato atteso. F.Bonchi Dip.to Informatica Fondamenti teorici e programmazione (A) - modb a.a. 2018/19 pag. 13